Dokumentation zur VorgehensweiseMehrzeilige Objektreferenz in Container schreiben (BOR) Dieses Dokument in der Navigationsstruktur finden

Voraussetzungen

Folgende Voraussetzungen müssen erfüllt sein, um eine mehrzeilige Objektreferenz eines klassischen Objekts (BOR) in einen Container zu schreiben:

  • Der Container muss angelegt und initialisiert sein.

  • Bei Funktionsbausteinen muss die Include-Datei <CNTN01> in das Programm eingebunden sein. Bei ABAP-Klassen müssen die Include-Dateien <CNTN02> und <CNTN03> eingebunden sein. Weitere Informationen finden Sie unter Makrobefehle zum Bearbeiten eines Containers.

    Hinweis Hinweis

    Diese Voraussetzungen sind immer erfüllt, wenn Sie sich im Implementierungsprogramm befinden. Der Container wird dann unter dem Namen CONTAINER angesprochen.

    Ende des Hinweises
  • Der zusammengesetzte Schlüssel der Objekte muss in einer Variable zur Verfügung stehen (hier als Objektschlüssel bezeichnet).

Vorgehensweise

  1. Legen Sie eine Variable zur Aufnahme der mehrzeiligen Objektreferenz an. Verwenden Sie dazu folgenden Befehl:

    DATA <Objektliste> TYPE SWC_OBJECT OCCURS 0.

    Die so erzeugte interne Tabelle besitzt keinen Tabellenkopf. Sie füllen sie, indem Sie jede Objektreferenz einzeln erzeugen und an die Tabelle anhängen.

  2. Legen Sie eine Variable zur Aufnahme einer Objektreferenz an. Verwenden Sie dazu folgenden Befehl:

    DATA <Objekt> TYPE SWC_OBJECT.

  3. Erzeugen Sie die erste Objektreferenz. Verwenden Sie dazu folgenden Befehl:

    SWC_CREATE_OBJECT <Objekt> <Objekttyp> <Objektschlüssel>.

  4. Hängen Sie die Objektreferenz an die Tabelle an. Verwenden Sie dazu folgenden Befehl:

    APPEND <Objekt> TO <Objektliste>.

  5. Wiederholen Sie die vorhergehenden zwei Schritte, bis die Tabelle vollständig gefüllt ist.

  6. Schreiben Sie die mehrzeilige Objektreferenz in den Container. Verwenden Sie dazu folgenden Befehl:

    SWC_SET_TABLE <Container> <Containerelement> <Objektliste>.

    Achtung Achtung

    Bei der Kennung des Containerelements wird nicht zwischen Groß- und Kleinbuchstaben unterschieden. Wenn der Container im Datenfluss eines Workflow benutzt wird, müssen Sie darauf achten, dass in der Containerdefinition ein gleichnamiges Containerelement definiert ist.

    Ende der Warnung.
  7. Machen Sie die Objektreferenz persistent. Verwenden Sie dazu folgenden Befehl:

    SWC_CONTAINER_TO_PERSISTENT <Container>.

    Hinweis Hinweis

    Sie benötigen persistente Objektreferenzen, wenn der Container in einem anderen Umfeld weiterverwendet wird. Dies ist der Fall, wenn Sie den Container bei einem Funktionsaufruf als Parameter übergeben, z.B. wenn Sie den Container

    Ende des Hinweises

Ergebnis

Die erzeugten Objektreferenzen sind Laufzeitreferenzen, die nur im Umfeld des erzeugenden Programms existieren. Diese Objektreferenzen werden in einem Containerelement in den Container geschrieben. Wenn das Containerelement unter dieser Kennung noch nicht im Container vorhanden ist, wird es mit seinem Wert in den Container eingefügt. Wenn schon ein Containerelement unter dieser Kennung im Container vorhanden ist, wird der alte Wert mit dem neuen Wert überschrieben. Wenn der Container in einem anderen Programmkontext benötigt wird, müssen Sie die enthaltenen Objektreferenzen persistent machen.

Beispiel

Die Variable POSITIONLIST wird als mehrzeilige Objektreferenz deklariert:

* Typdeklarationen für mehrzeilige Objektreferenz DATA POSITITONLIST TYPE SWC_OBJECT OCCURS 0.

Die Variable POSITION wird als Objektreferenz deklariert. Diese Variable dient als Hilfsvariable bei der Bearbeitung der mehrzeiligen Objektliste:

* Typdeklarationen für Objektreferenz DATA POSITION TYPE SWC_OBJECT.

Die interne Tabelle POSITIONKEY wird mit Werten gefüllt. Für jeden Eintrag wird eine Objektreferenz Position erzeugt und in die mehrzeilige Objektreferenz POSITIONLIST geschrieben:

Syntax Syntax

  1. * Typdeklarationen für die Schlüsselfelder des
    * Objektes "Position eines Auftrags"
    DATA: BEGIN OF POSITIONKEY,
             DOCUMENT LIKE VBAP-VBELN,   "Verkaufsbeleg
             ITEM     LIKE VBAP-POSNR,   "Verkaufsbelegposition
           END OF POSITIONKEY.
    * mehrzeilige Objektreferenz bearbeiten
    SELECT * FROM VBAP
       WHERE VBELN BETWEEN '0000002500' AND '0000002600'.
    * Schlüsselfelder füllen
       POSITIONKEY-DOCUMENT = VBAP-VBELN.
       POSITIONKEY-ITEM     = VBAP-POSNR.
    
      * Objektreferenz erzeugen
       SWC_CREATE_OBJECT POSITION 'VBAP' POSITIONKEY.
    
      * Objektreferenz in mehrzeilige Objektreferenz einfügen
       APPEND POSITION TO POSITIONS.
     ENDSELECT.
Ende des Codes

Die mehrzeilige Objektreferenz POSITIONLIST wird im Containerelement Positionen in den Container MY_CONTAINER geschrieben:

* mehrzeilige Objektreferenz in Container schreiben SWC_SET_TABLE MY_CONTAINER 'Positionen' POSITIONLIST.

Ein weiteres Beispiel finden Sie unter Implementierungsprogramm für ein virtuelles Attribut.