Show TOC

Mehrzeilige Objektreferenz in Container schreiben (BOR)Locate this document in the navigation structure

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

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

  • 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

    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.

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

    SWC_CONTAINER_TO_PERSISTENT <Container>.

    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

    • als Ereigniscontainer in einem Check-Funktionsbaustein oder Verbrauchertyp-Funktionsbaustein auswerten oder verändern wollen

    • als Ereigniscontainer vorbereiten und ihn als Parameter der Funktionsbausteine SWE_EVENT_CREATE oder SAP_WAPI_CREATE_EVENT verwenden

Ergebnisse

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:

* 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.
         

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.