Ansicht
Dokumentation

ABENCL_ABAP_CORRESPONDING_1 - CL ABAP CORRESPONDING 1

ABENCL_ABAP_CORRESPONDING_1 - CL ABAP CORRESPONDING 1

Fill RESBD Structure from EBP Component Structure   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CL_ABAP_CORRESPONDING, einfache Zuweisung

Mit den Methoden CREATE und EXECUTE der Systemklasse CL_ABAP_CORRESPONDING können Komponenten zwischen Strukturen oder zwischen internen Tabellen mit dynamischer Angabe einer Mapping-Vorschrift zugewiesen werden.

Mit der Factory-Methode CREATE wird ein Mapping-Objekt erzeugt:

DATA(mapper) = cl_abap_corresponding=>create( source  = struct$|itab
                                              destination           = struct$|itab
                                              mapping               = mapping_tab
                                              discarding_duplicates = flag ).

An die Parameter source und destination müssen Strukturen struct oder interne Tabellen itab der Datentypen übergeben werden, für welche die Zuweisung ausgeführt werden soll. An den Parameter mapping muss eine interne Tabelle vom Typ CL_ABAP_CORRESPONDING=>MAPPING_TABLE übergeben werden, welche die Mapping-Vorschrift enthält. Wenn eine initiale Mapping-Tabelle übergeben wird, werden nur die namensgleichen Komponenten zugewiesen. Die Mapping-Tabelle hat folgende Komponenten:

  • LEVEL
Ebene der Komponenten in der Struktur bzw. Zeilenstruktur, wobei der Wert 0 für die oberste Ebene steht.
  • KIND
Mappingtyp Mögliche Werte sind:
  • CL_ABAP_CORRESPONDING=>MAPPING_COMPONENT (1), die in dieser Zeile angegebenen Komponenten werden aufeinander gemappt.

  • CL_ABAP_CORRESPONDING=>MAPPING_EXCEPT_COMPONENT (2), die in dieser Zeile angegebene Komponente der Quellstruktur wird vom Mapping namensgleicher Komponenten ausgeschlossen.

  • CL_ABAP_CORRESPONDING=>MAPPING_EXCEPT_ALL (3), alle Komponenten der aktuellen Quellstruktur werden vom Mapping namensgleicher Komponenten ausgeschlossen.

  • CL_ABAP_CORRESPONDING=>MAPPING_DISCARDING_DUPLICATES (9), in einer Quelltabelle werden duplikative Zeilen wie bei der Verwendung von DISCARDING DUPLICATES in einer Mapping-Vorschrift des Komponentenoperators ignoriert. Die Zieltabelle muss einen eindeutigen Tabellenschlüssel haben.

  • SRCNAME
Komponente der Quellstruktur.
  • DSTNAME
Komponente der Zielstruktur

Die Zeilen der internen Tabelle müssen so aufgebaut sein, dass sie eine Mapping-Vorschrift in der richtigen Reihenfolge ergeben. Komponenten der Quellstruktur für die kein Mapping definiert ist und die nicht ausgeschlossen wurden, werden namensgleichen Komponenten der Zielstruktur zugewiesen.

Mit der Methode EXECUTE eines Mapping-Objekts können beliebig viele Zuweisungen zwischen Strukturen bzw. internen Tabellen src und dst durchgeführt werden, deren Datentyp dem bei der Erzeugung des Objekts angegebenen Quell- bzw. Zieltyp entspricht:

mapper->execute( EXPORTING source      = src
                 CHANGING  destination = dst ).

Die Zuweisung erfolgt komponentenweise

  • zwischen den in der Mapping-Vorschrift angegebenen Komponenten
  • zwischen den restlichen namensgleichen Komponenten der gleichen Ebene, wenn sie nicht in der Mapping-Vorschrift ausgeschlossen wurden.

Bei der Zuweisung zwischen Strukturen behalten Komponenten der Zielstruktur, denen keine Komponente der Quellstruktur zugewiesen wird wie bei der Anweisung MOVE-CORRESPONDING und wie beim Operator CORRESPONDING mit dem Zusatz BASE ihren vorhergehenden Wert. Geschachtelte interne Tabellen werden immer aufgelöst, wie wenn bei MOVE-CORRESPONDING der Zusatz EXPANDING NESTED TABLES bzw. beim Operator CORRESPONDING der Zusatz DEEP angegeben ist. Bei der Zuweisung zwischen internen Tabelle wird die Zieltabelle vorher immer initialisiert. Für den Zusatz KEEPING TARGET LINES von MOVE-CORRESPONDING bzw. BASE von CORRESPONDING gibt es keine Entsprechung.

Wenn dem Parameter DISCARDING_DUPLICATES der Methode CREATE der Wert "X" übergeben wurde, werden duplikative Zeilen bei der Zuweisung tabellarischer Komponenten wie bei Verwendung des Zusatzes DISCARDING DUPLICATES in der Grundform des Komponentenoperators behandelt. Die Zieltabelle muss dann einen eindeutigen Tabellenschlüssel haben.

Quelle und Ziel dürfen gleich sein. Dabei ist zu beachten, dass anders als beim Operator CORRESPONDING für reflexive Zuweisungen kein temporäres Zwischenergebnis gebildet, sondern wie bei der Anweisung MOVE-CORRESPONDING direkt mit dem Zielobjekt gearbeitet wird.

Die Übergabe falscher Parameter an die Methoden der Klasse CL_ABAP_CORRESPONDING führen zu Ausnahmen der Klasse CX_CORR_DYN_ERROR.

Hinweise

  • Die Methoden CREATE und EXECUTE der Systemklasse CL_ABAP_CORRESPONDING verwirklichen eine der Anweisung
dst = CORRESPONDING  #( BASE ( dst ) struct$|itab MAPPING ... EXCEPT ... ).
ähnliche Zuweisung, wobei die Mapping-Vorschrift hier aber dynamisch als Inhalt einer speziellen internen Tabelle angegeben wird.
  • Es gelten die gleichen Einschränkungen wie beim Operator CORRESPONDING. Es können nur Komponenten der jeweils gleichen Ebene aufeinander gemappt werden. Komponenten einer Unterstruktur können nicht den Komponenten einer höheren Ebene zugewiesen werden und umgekehrt.
  • Dass die Klasse CL_ABAP_CORRESPONDING tabellarische Komponenten immer auflöst, entspricht dem Verhalten des Operators CORRESPONDING wenn eine Mapping-Vorschrift angegeben ist. In diesem Fall ist auch der ZusatzDEEP implizit gesetzt.
  • Um bei der Zuweisung zwischen Strukturen das gleiche Ergebnis wie beim Operator CORRESPONDING ohne den Zusatz BASE für nicht beteiligte Komponenten zu erzielen, kann dem Parameter destination eine initiale Struktur zugewiesen werden.
  • Bei reflexiven Zuweisungen zwischen Komponenten ein und desselben Objekts ist wie bei MOVE-CORRESPONDING zu beachten, dass die Reihenfolge der Bearbeitung nicht definiert ist und dass ein Austausch des Inhalts zweier Komponenten nicht durch einen Aufruf der Methode EXECUTE erzielt werden kann. Siehe das ausführbare Beispiel Reflexive Komponentenzuweisungen.
  • Die Pseudokomponente table_line darf in der Mapping-Tabelle nicht angesprochen werden.

Beispiel

Verwendung der Klasse CL_ABAP_CORRESPONDING für die Zuweisung von Komponenten einer einfachen Struktur. Die Mapping-Vorschrift besagt, dass die Komponenten a3 an b1 und a1 an b3 zugewiesen werden. Die Komponente a2 wird nicht berücksichtigt, da es in der Zielstruktur keine namensgleiche Komponente gibt und b2 behält ihren Wert. Aber auch a4 und a5 der Zielstruktur behalten ihren Wert, obwohl die Quellstruktur namensgleiche Komponenten enthält, da für alle nicht angegebenen Komponenten für den Mapping-Typ der Wert von CL_ABAP_CORRESPONDING=>MAPPING_EXCEPT_ALL angegeben ist. Das ausführbare Beispiel für einfache Strukturen ermöglicht die interaktive Eingabe der Komponentennamen, die aufeinander abgebildet werden sollen.






CL_GUI_FRONTEND_SERVICES - Frontend Services   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 11518 Date: 20240523 Time: 175051     sap01-206 ( 158 ms )