COLLECT: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
(Die Seite wurde neu angelegt: „Kategorie:Schlüsselbegriffe Die Werte einer internen Tabelle können addiert werden. Hierfür müssen alle nicht Primärschlüsselfelder nummerisch sein.…“)
 
Zeile 6: Zeile 6:


=== Beispiel ===
=== Beispiel ===
 
<syntaxhighlight lang="abap" line start="1">
  TYPES: BEGIN OF zstock,
  TYPES: BEGIN OF zstock,
         matnr TYPE matnr, "char40
         matnr TYPE matnr, "char40
Zeile 27: Zeile 27:
   COLLECT ls_stock INTO lt_stock.
   COLLECT ls_stock INTO lt_stock.
  ENDLOOP.
  ENDLOOP.
</syntaxhighlight>


==== Einträge in lt_stock ====
==== Einträge in lt_stock ====

Version vom 12. August 2021, 11:54 Uhr


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

Nützliche Seiten