adesso orange🍊Stellenangebote:
Software Engineer Trainee · Senior
| (Senior) Cloud Software Engineer BTP
(Senior) Consultant Technologie · Consultant ABAP
Werkstudent Softwareentwicklung · Fiori / UI5 · Consulting · Application Management
Ich habe manuell über mehrere Versionen das Wiki geupdated. Evtl. läuft es noch nicht ganz rund ツ
COLLECT: Unterschied zwischen den Versionen
Aus SAP Wiki ツ
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Schlüsselbegriffe]] | [[Kategorie:Schlüsselbegriffe]] | ||
Test | |||
Die Werte einer internen Tabelle können addiert werden. Hierfür müssen alle nicht Primärschlüsselfelder nummerisch sein. Alle restlichen zeichenorientierten Felder müssen als eindeutige Primärschlüssel angegeben werden. | Die Werte einer internen Tabelle können addiert werden. Hierfür müssen alle nicht Primärschlüsselfelder nummerisch sein. Alle restlichen zeichenorientierten Felder müssen als eindeutige Primärschlüssel angegeben werden. | ||
Version vom 23. November 2024, 15:52 Uhr
Test Die Werte einer internen Tabelle können addiert werden. Hierfür müssen alle nicht Primärschlüsselfelder nummerisch sein. Alle restlichen zeichenorientierten Felder müssen als eindeutige Primärschlüssel angegeben werden.
In der SAP Dokumentation ist zu lesen, dass es nicht auf Standardtabellen angewendet werden sollte. Die Gründe können hier nachgelesen werden. Stattdessen sollen sortierte und besonders Hash-Tabellen mit eindeutigen Primärschlüssel für COLLECT verwendet werden.
Beispiel
TYPES: BEGIN OF zstock,
matnr TYPE matnr, "char40
werks TYPE werks_d, "char04
lgort TYPE lgort_d, "char04
labst TYPE labst, "quan13
END OF zstock.
DATA lt_mard TYPE TABLE OF mard,
ls_stock TYPE zstock,
lt_stock TYPE HASHED TABLE OF zstock WITH UNIQUE KEY matnr werks lgort.
lt_mard = VALUE #( ( matnr = '100' werks = '1710' lgort = '1720' labst = '125' )
( matnr = '110' werks = '1710' lgort = '1730' labst = '250' )
( matnr = '110' werks = '1710' lgort = '1730' labst = '500' )
( matnr = '120' werks = '1710' lgort = '1740' labst = '750' ) ).
LOOP AT lt_mard ASSIGNING FIELD-SYMBOL(<ls_mard>).
MOVE-CORRESPONDING <ls_mard> TO ls_stock.
COLLECT ls_stock INTO lt_stock.
ENDLOOP.
Einträge in lt_stock
Zeile | MATNR | WERKS | LGORT | LABST |
1 | 100 | 1710 | 1720 | 125.000 |
2 | 110 | 1710 | 1730 | 750.000 |
3 | 120 | 1710 | 1740 | 750.000 |