Problem bei for all entries

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Problem bei for all entries

Beitrag von Thomas R. (Expert / 754 / 74 / 34 ) »
Hallo,
bei mir (4.7/6.20) bekomme ich unterschiedliche Ergebnismengen bei FOR ALL ENTRIES, wenn ich die Daten mit * bzw. durch Feldaufzählung in die Zieltabelle übernehme :shock: .

Konkret:
Bei * werden doppelte Datensätze NICHT aus der Ergebnismenge entfernt (im Gegensatz zur Dokumentation für FOR ALL ENTRIES), bei der Feldaufzählung werden sie entfernt.

Beispielcode:

Code: Alles auswählen.

REPORT ZOSSTEST.

types:
  BEGIN OF gt_object,
    objnr TYPE prps-objnr,
  END OF gt_object,
  gt_object_tab TYPE SORTED TABLE OF gt_object
    WITH UNIQUE KEY objnr INITIAL SIZE 0,
  BEGIN OF gt_cosx,
    wrttp TYPE co_wrttp,
  END OF gt_cosx,
  gt_cosx_tab TYPE STANDARD TABLE OF gt_cosx
    WITH DEFAULT KEY INITIAL SIZE 0.

parameters:
  P_star radiobutton group 01 default 'X',
  P_wrttp radiobutton group 01.

data:
  gtab_object type gt_object_tab,
  lv_object like line of gtab_object.

start-of-selection.
  lv_object-objnr = 'PR00101517'.
  insert lv_object into table gtab_object.
  perform select_cosx using gtab_object[].

FORM select_cosx USING value(lp_object_tab) TYPE gt_object_tab.
  DATA:
    ltab_cosx TYPE gt_cosx_tab,
    lv_feld type char10.
  if p_star = 'X'.
    lv_feld = '*'.
  else.
    lv_feld = 'WRTTP'.
  endif.
  SELECT (lv_feld)
    INTO CORRESPONDING FIELDS OF TABLE ltab_cosx[]
    FROM coss
    FOR ALL ENTRIES IN lp_object_tab[]
      WHERE lednr = '00'
        AND objnr = lp_object_tab-objnr
        AND wrttp = '04'
        AND versn = '000'
        AND vrgng = 'KAMV'
        AND beknz = 'H'.
  write:
    / 'Anzahl DS:',sy-dbcnt.
endform. " select_cosx
Kann mir jemand diesen Bug als Feature erklären?

MfG
Thomas R.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von just (ForumUser / 35 / 0 / 0 ) »
also ich kann deinen Fehler nicht nachvollziehen.
im CRM4.0 / Basis 620 läuft folgendes Programm richtig:

Code: Alles auswählen.

data: ta type SORTED TABLE OF but000
         WITH UNIQUE KEY partner INITIAL SIZE 0,
      ls like line of ta,
      tb TYPE STANDARD TABLE OF BUT021
          WITH DEFAULT KEY INITIAL SIZE 0.

ls-partner = '<<NR>>'.
insert ls into table ta.

DATA:
  lv_feld type char10.

lv_feld = '*'.
*    lv_feld = 'ADDRNUMBER'.

SELECT (lv_feld)
  INTO CORRESPONDING FIELDS OF TABLE tb[]
  FROM but021
  FOR ALL ENTRIES IN ta[]
    WHERE XDFADU = 'X'
      and partner = ta-partner.

write:
  / 'Anzahl DS:',sy-dbcnt.

  break-point.
ich habe jeweils die Zeile mit dem Stern/ dem Feldnamen kommentiert.

In beiden Fällen liefert mir das Statement alle Datensätze der BUT021 zum GP zurück und der sy-dbcnt ist auch ok.

Im Notall musst du dich eben an SAP direkt wenden...

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Meines Wissens nacht liegt das an dem was im Select steht unabhängig davon was wirklich in die Itab kommt.

Sprich er schmeisst die Doppelten des Selects raus und erstdann schreibt es es in die Itab.
Er macht das schon auf der DB befor die Ergebnismenge an den APPL zurückkommt.

Beitrag von Thomas R. (Expert / 754 / 74 / 34 ) »
Hallo,
dies wäre eine Erklärungsmöglichkeit. Daraus folgt:
Willst Du alle, nimm immer den Primärschlüssel in die Feldaufzählung auf, auch wenn Du nicht alle Felder davon brauchst bzw. nicht in die Zieltabelle übernimmst.

Danke!

MfG
Thomas R.


Update:
Statt dem Primärschlüssel kann natürlich jeder eindeutige Schlüssel verwendet werden.

Seite 1 von 1

Vergleichbare Themen

6
Antw.
3742
Views
Select for all entries Problem
von debianfan » 06.03.2018 18:39 • Verfasst in ABAP® für Anfänger
6
Antw.
3795
Views
FOR ALL ENTRIES IN
von Bajdu » 21.08.2006 14:25 • Verfasst in ABAP® für Anfänger
1
Antw.
1338
Views
FOR ALL ENTRIES IN
von melisy » 02.04.2009 12:11 • Verfasst in ABAP® für Anfänger
1
Antw.
1505
Views
'Range und FOR ALL ENTRIES
von eschi78 » 08.11.2007 09:51 • Verfasst in ABAP® Core
1
Antw.
1822
Views
SELECT mit FOR ALL ENTRIES
von Marduk » 30.09.2005 12:55 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.