Ansicht
Dokumentation

ABENCORRESPONDING_CONSTR_USING - CORRESPONDING CONSTR USING

ABENCORRESPONDING_CONSTR_USING - CORRESPONDING CONSTR USING

TXBHW - Original Tax Base Amount in Local Currency   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CORRESPONDING, Lookup-Tabelle

... CORRESPONDING dtype$|#( itab FROM lookup_tab
                                USING $[KEY key_name$] s1 = t1 s2 = t2 ...
                                $[mapping$]  ) ...


Wirkung

Diese Variante des Komponentenoperators CORRESPONDING ist nur für interne Tabellen möglich. Der Ausdruck konstruiert aus den Komponenten der internen Tabelle itab und einer Lookup-Tabelle lookup_tab eine interne Tabelle, deren Zeilen sich aus einem Abgleich zwischen itab und lookup_tab ergeben. Der über dtype oder # angegebene Zieltyp muss ein Tabellentyp sein. Für die Parameter itab und lookup_tab müssen interne Tabellen angegeben werden, deren Zeilentyp strukturiert sein muss. Weiterhin muss itab in den Zieltyp konvertierbar sein. Bei itab und lookup_tab handelt es sich um allgemeine Ausdruckspositionen.

Das Ergebnis des Ausdrucks wird in folgenden Schritten erstellt:

  • Zuerst wird wie folgt ein Zwischenergebnis vom Typ der internen Tabelle itab konstruiert: Für jede Zeile in itab wird in der Lookup-Tabelle lookup_tab eine Zeile gesucht, die in den Spalten s1, s2, ... den gleichen Inhalt hat wie die Spalten t1, t2, ... der Zeile von itab. Die Suche muss über einen sortierten Tabellenschlüssel oder einen Hash-Schlüssel erfolgen (siehe unten). Bei nicht eindeutigem Schlüssel wird die erste gefundene Zeile verwendet.
  • Wenn keine solche Zeile gefunden wird, wird eine Zeile mit dem unveränderten Inhalt der Zeile von itab in das Zwischenergebnis eingefügt.

  • Wenn eine solche Zeile gefunden wird, wird eine Zeile in das Zwischenergebnis eingefügt, die das Ergebnis einer Zuweisung der gefundenen Zeile aus lookup_tab an die aktuelle Zeile von itab ist. Die Zuweisung erfolgt standardmäßig nach den Regeln von MOVE-CORRESPONDING für Strukturen mit dem Zusatz EXPANDING NESTED TABLES mit der Ausnahme, dass die zur Suche verwendeten Komponenten standardmäßig nicht zugewiesen werden: Die für die Suche verwendeten Komponenten s1, s2, ... aus lookup_tab werden standardmäßig nicht den namensgleichen Komponenten von itab zugewiesen und den für die Suche verwendeten Komponenten t1, t2, ... aus itab werden nicht die namensgleichen Komponenten von lookup_tab zugewiesen.

  • Das Zwischenergebnis vom Typ der Tabelle itab wird nach den normalen Zuweisungsregeln für interne Tabellen dem Ergebnis des Ausdrucks zugewiesen und gegebenenfalls in den Zieltyp konvertiert.

Die komponentenweise Zuweisung findet somit zwischen der Lookup-Tabelle lookup_tab als Quelltabelle und einem Zwischenergebnis vom Typ von itab als Zieltabelle statt. Mit einer Mapping-Vorschrift mapping kann die standardmäßige Zuweisung namensgleicher Komponenten und der standardmäßige Ausschluss der Komponenten s1, s2, ... und t1, t2, ... übersteuert werden. Die gleiche Tabelle darf nur dann für itab und lookup_tab angegeben werden, wenn diese statisch erkennbar ist. Falls dies nur zur Laufzeit erkennbar ist, kann der Ausdruck nicht ausgewertet und es kommt zum Laufzeitfehler CORRESPONDING_SELF.

Die Suche der Zeile in lookup_tab muss über einen sortierten Tabellenschlüssel oder einen Hash-Schlüssel erfolgen:

  • Wenn der Zusatz KEY nicht angegeben ist, muss für lookup_tab eine sortierte Tabelle oder eine Hash-Tabelle angegeben werden.
  • Wenn der Zusatz KEY angegeben ist wird der dahinter angegebene Schlüssel key_name verwendet. Für key_name kann angegeben werden:

  • Der Primärschlüssel über seinen vordefinierten Namen primary_key oder über einen Aliasnamen. Bei Angabe des Primärschlüssels muss lookup_tab eine sortierte Tabelle oder eine Hash-Tabelle sein.

Die Vergleichsfelder s1, s2, ... müssen den verwendeten Tabellenschlüssel vollständig abdecken.

Hinweise

  • In dieser Variante gibt es keinen Zusatz DEEP wie in der Grundform. Sie verhält sich immer so, wie wenn der Zusatz DEEP angegeben ist. Auch der Zusatz BASE kann nicht angegeben werden.
  • In der Regel sollten der Typ von itab und der Zieltyp identisch sein.
  • Als häufiger Anwendungsfall wird eine vorhandene interne Tabelle itab mit Informationen aus der Lookup-Tabelle lookup_tab angereichert. Dafür wird der Konstruktorausdruck der selben internen Tabelle zugewiesen, die für itab angegeben ist. In diesem Fall wird der Ausdruck intern so optimiert, dass kein Zwischenergebnis erzeugt, sondern direkt mit itab gearbeitet wird.
  • Wenn der Konstruktorausdruck nicht der internen Tabelle zugewiesen wird, die für itab angegeben ist, oder wenn dies statisch nicht erkennbar ist, muss das temporäre Zwischenergebnis vom Typ itab vollständig erzeugt werden. Dies führt zu einer Warnung von der Syntaxprüfung, die durch ein Pragma ausgeblendet werden kann.
  • Bei Angabe der gleichen Tabelle für itab und lookup_tab muss eine temporäre Kopie als Zieltabelle der Zuordnung angelegt werden. Falls dies von der Syntaxprüfung festgestellt ist, kommt es zu einer Warnung, die durch ein Pragma ausgeblendet werden kann. Wenn dies erst zur Laufzeit festgestellt wird, fehlt die nötige Information, um die notwendige temporäre Kopie der Zieltabelle zu erstellen, und es kommt zu dem Laufzeitfehler CORRESPONDING_SELF.

Beispiel

Zeilen der internen Tabelle itab1, die in der internen Tabelle itab2 vorhanden sind, werden nach itab1 übernommen.






Vendor Master (General Section)   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8348 Date: 20240523 Time: 162402     sap01-206 ( 151 ms )