Ansicht
Dokumentation

ABENCORRESPONDING_CONSTR_MAPPING - CORRESPONDING CONSTR MAPPING

ABENCORRESPONDING_CONSTR_MAPPING - CORRESPONDING CONSTR MAPPING

ROGBILLS - Synchronize billing plans   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CORRESPONDING, mapping

... $[ MAPPING ${t1 = s1 $[duplicates$]$}$|( t1 = s1 $[ duplicates$] $[MAPPING ...$] $[EXCEPT ...$] )
              ${t2 = s2 $[ duplicates$]$}$|( t2 = s2 $[ duplicates$] $[MAPPING ...$] $[EXCEPT ...$] )
              ...  $]
    $[ EXCEPT ${ti tj ...$}$|* $] ...


Zusätze:

1. ... MAPPING  t1 = s1 $[duplicates$] t2 = s2 $[duplicates$] ...

2. ... EXCEPT  ${t1 t2 ...$}$|*

Wirkung

Mapping-Vorschrift für den Komponentenoperator CORRESPONDING. Die optionale Mapping-Vorschrift übersteuert die standardmäßige Zuweisung von nur namensgleichen Komponenten. Die Zusätze MAPPING und EXCEPT können einzeln oder gemeinsam verwendet werden, wobei EXCEPT immer hinter MAPPING aufgeführt sein muss.

Hinweise

  • Zur Zeit kann bei der Verwendung der Grundform mit Mapping-Vorschrift nur dann an die gleiche Struktur bzw. interne Tabelle zugewiesen werden, die als Argument angegeben ist, wenn dies statisch erkennbar ist. Zur Laufzeit fehlt die nötige Information um die notwendige temporäre Kopie des Zielobjekts zu erstellen und es kommt zu einem Laufzeitfehler.
  • Für Zuweisungen zwischen Strukturen oder internen Tabellen mit dynamischer Mapping-Vorschrift gibt es die Systemklasse CL_ABAP_CORRESPONDING.

Zusatz 1

... MAPPING  t1 = s1 $[duplicates$] t2 = s2 $[duplicates$] ...

Wirkung

Hinter MAPPING werden mit t1, t2, ... den Komponenten einer Zielstruktur bzw. einer Zieltabelle die Komponenten s1, s2, ... einer Quellstruktur bzw. Quelltabelle in Mapping-Beziehungen zugeordnet.

Wenn die links und rechts eines Gleichheitszeichens einer Mapping-Beziehung angegebenen Komponenten selbst strukturiert oder tabellarisch mit strukturiertem Zeilentyp sind, kann für diese eine eigene Mapping-Vorschrift geschachtelt werden. Hierfür wird die Mapping-Beziehung in runde Klammern ( ... ) gesetzt und hinter der Mapping-Beziehung eine weitere Mapping-Vorschrift MAPPING ... und/oder EXCEPT ... nach den gleichen Regeln wie auf der obersten Ebene aufgeführt. Ohne geschachtelte Mapping-Vorschrift sind die runden Klammern nicht erlaubt.

Wenn die links und rechts eines Gleichheitszeichens einer Mapping-Beziehung angegebenen Komponenten tabellarisch sind, kann mit dem Zusatz duplicates das Verhalten bezüglich doppelt vorkommender Zeilen in Zieltabellen mit eindeutigen Tabellenschlüsseln gesteuert werden.

Eine Komponente eines Zielobjekts darf in einer Liste hinter MAPPING nicht mehrmals vorkommen und es darf nicht über den Strukturkomponenten-Selektor auf Unterkomponenten zugegriffen werden. Dies ist für Komponenten des Quellobjektes erlaubt. Wenn MAPPING verwendet wird, müssen beteiligte Tabellentypen auch in der Grundform strukturierte Zeilentypen haben und der Zusatz DEEP ist implizit gesetzt.

  • In der Grundform sind t1, t2, ... Komponenten des Zieltyps und s1, s2, ... sind Komponenten des Parameters struct bzw. itab.
  • Bei der Variante mit Lookup-Tabelle sind t1, t2, ... Spalten des Parameters itab und s1, s2, ... sind Spalten des Parameters lookup_tab.

Jeder auf der linken Seite eines Gleichheitszeichens einer Mapping-Beziehung angegebenen Komponente wird der Inhalt der auf der rechten Seite angegebenen Komponente zugewiesen. Wenn es für eine auf einer rechten Seite angegebene Komponente eine namensgleiche Komponente in der Zielstruktur gibt, wird diese ebenfalls versorgt, es sei denn sie ist selbst auf der linken Seite einer Mapping-Beziehung aufgeführt. Bei elementaren Komponenten erfolgt die Zuweisung nach den zugehörigen Zuweisungsregeln. Bei strukturierten und tabellarischen Komponenten erfolgt die Zuweisung nach den Regeln von MOVE-CORRESPONDING mit dem Zusatz EXPANDING NESTED TABLES.

Auf der rechten und linken Seite des Gleichheitszeichen einer Mapping-Beziehung können auch namensgleiche Komponenten aufgeführt werden. Dies ist in folgenden Fällen sinnvoll:

  • Bei der Verwendung der Variante mit Lookup-Tabelle übersteuern namensgleiche Komponenten in einer Mapping-Beziehung die Regel, dass die für die Suche verwendeten Komponenten s1, s2, ... und t1, t2, ... standardmäßig nicht zugewiesen werden.
  • Namensgleiche Komponenten müssen in einer Mapping-Beziehung aufgeführt werden, wenn für diese eine geschachtelte Mapping-Vorschrift angegeben werden soll.
  • Namensgleiche tabellarische Komponenten können in einer Mapping-Beziehung aufgeführt werden, um das Verhalten bezüglich doppelt vorkommender Zeilen mit duplicates zu steuern.

Wenn der Zeilentyp einer Quelltabelle elementar ist, kann rechts eines Gleichheitszeichens einer Mapping-Beziehung die Pseudokomponente table_line als Komponente angegeben werden und es wird die gesamte Tabellenzeile an die Zielkomponente zugewiesen. In allen anderen Fällen ist das Verhalten bei Angabe der Pseudokomponente table_line undefiniert.

Zuweisung der Komponenten der Struktur struct1 an die der Struktur struct2 mit Mapping-Vorschriften für die Komponenten auf der obersten Ebene und die der Unterstruktur.

Beispiel

Angabe der Pseudokomponente table_line als rechte Seite einer Mapping-Vorschrift. Der Inhalt der Tabellenzeilen einer internen Tabelle vom Typ itab1 wird in die Spalte col1 einer internen Tabelle vom Typ itab2 kopiert.

Zusatz 2

... EXCEPT  ${t1 t2 ...$}$|*

Wirkung

Hinter EXCEPT können Komponenten t1, t2, ... der Zielstruktur bzw. Zieltabelle, die nicht in einer vorhergehenden Mapping-Beziehung aufgeführt sind, oder ein Stern * angegeben werden:

  • Wenn explizite Komponenten t1, t2, ... aufgeführt sind, werden diese Komponenten des Ergebnisses nicht versorgt sondern bleiben initial.
  • Wenn ein Stern * aufgeführt wird, bleiben alle Komponenten des Ergebnisses initial, die nicht explizit in einer vorhergehenden Mapping-Beziehung aufgeführt sind.

Ein Zugriff auf Unterkomponenten von Komponenten des Zielobjekts über den Strukturkomponenten-Selektor ist auch in der Liste hinter EXCEPT nicht erlaubt.

Wenn Komponenten der Zielstruktur mit INCLUDE TYPE$|STRUCTURE eingebunden und diesen mit AS ein Name zugeordnet ist, kann dieser Name hinter EXCEPT angegeben werden. In diesem Fall werden alle Komponenten der übernommenen Struktur so behandelt, als wären sie explizit in der EXCEPT-Liste angegeben worden und ihnen werden kein Inhalt zugewiesen.

Hinweise

  • Wenn es in Quell- und Zielobjekt namensgleiche Komponenten gibt, die weder kompatibel noch konvertibel sind, können diese mit EXCEPT von der Zuweisung ausgenommen werden. Es kommt dann zu keinem Syntax- oder Laufzeitfehler.
  • Bei einer Angabe EXCEPT * ohne vorhergehende Mapping-Beziehungen bleiben alle Komponenten des Ergebnisses initial.

Beispiel

Wirkung des Zusatzes EXCEPT. In struct3 bleiben die Komponenten col2 und col3 initial.






SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 11396 Date: 20240523 Time: 171619     sap01-206 ( 176 ms )