Makrobefehle zum Bearbeiten eines Containers 
Sie können diese Makrobefehle bei folgenden Programmen einsetzen:
Implementierungsprogrammen von klassischen Objekttypen (BOR-Objekte)
Funktionsbausteine zur Ereigniserzeugung
Funktionsbausteine zur Regelauflösung
ABAP-Klassen (z. B. zur Verwendung in Programmier-Exits)
Die Bearbeitung einer Containerinstanz umfasst:
den Zugriff auf den Wert eines Containerelements
das Eintragen eines Wertes für ein Containerelement
Dafür sind nur die Spalten Elementname und Wert relevant.
Hinweis
Beim Füllen des Containers erfolgt keine Überprüfung, ob die eingetragenen Elemente und der Datentyp der Werte mit der Containerdefinition in Einklang stehen. Sie müssen selbst darauf achten, dass die Elementnamen und die Datentypen, die Sie verwenden, der Definition entsprechen.
Der Elementname eines Containers wird intern immer in Großschreibung verwaltet. Es ist egal, wie Sie die Groß- und Kleinschreibung beim Aufruf der Makrobefehle verwenden, da der Elementname vor dem Zugriff immer in Großschreibung konvertiert wird.
Um die Makros in Funktionsbausteinen und im Implementierungsprogramm nutzen zu können, muss die Include-Datei <CNTN01> in das Programm eingebunden sein. Verwenden Sie dazu folgenden Befehl:
INCLUDE <CNTN01>.
Hinweis
Da die Include-Datei <OBJECT> die Include-Datei <CNTN01> bereits enthält, darf in einem Implementierungsprogramm die Include-Datei <CNTN01> nicht erneut eingebunden werden.
Um die Makros in ABAP-Klassen nutzen zu können, müssen die Include-Dateien <CNTN02> und <CNTN03> eingebunden werden. Binden Sie im Class Builder die Include-Datei <CNTN02> über ein. Binden Sie die Include-Datei <CNTN03> über ein.
Der Container muss mit folgenden Makrobefehlen deklariert und initialisiert werden:
Syntax
SWC_CONTAINER <Container>. "Deklaration SWC_CREATE_CONTAINER <Container>. "Initialisierung
Weitere Informationen finden Sie unter Deklaration und Initialisierung der Datenstruktur eines Containers.
Sie können einem Containerelement den Inhalt eines Feldes zuweisen bzw. den Inhalt eines Containers in ein Feld schreiben. Dieser Inhalt kann auch mehrzeilig sein, also in Form einer internen Tabelle vorliegen. Der Inhalt eines Feldes kann ein elementarer Datentyp, eine Struktur oder eine Objektreferenz sein.
Eine Objektreferenz verweist auf ein Objekt eines Objekttyps, der im Business Object Repository definiert ist. Dort ist der Schlüssel beschrieben, der zur eindeutigen Identifizierung des Objektes erforderlich ist. Der Schlüssel setzt sich aus einem oder mehreren Schlüsselfeldern zusammen. Schlüsselfelder sind z. B. eine Auftragsnummer oder Buchungskreis, Belegnummer und Buchungsjahr die einen zusammengesetzten Schlüssel bilden.
Beispiel
Innerhalb der Transaktion zum Anlegen eines Auftrags wird ein Ereignis dann ausgelöst, wenn dieser Auftrag erfolgreich angelegt wurde.
Einem potentiellen Verbraucher dieses Ereignisses soll das angelegte Objekt bekannt gegeben werden. Sie schreiben also eine Referenz auf dieses Objekt, das durch die Schlüsselfelder des Objekttyps Auftrag beschrieben wird, in den Ereigniscontainer.
Beispiel
Einträge zu einem bestimmten Material in den Materialstammdaten sollen in einem Schritt eines Workflow gepflegt werden. Bei der Zuständigkeit für diese Aktivität ist die Regel Materialverantwortlicher vorgesehen.
Die Regelauflösung wird aufgrund der Angaben zum Material von einem Funktionsbaustein durchgeführt, den die Anwendung bereitstellt. Vom Workflow-System wird an diesen Funktionsbaustein ein Container übergeben, der die Objektreferenz auf das Objekt des Typs Material enthält. Innerhalb des Funktionsbausteines wird die Objektreferenz aus dem Container gelesen und die Auswertung zur Bestimmung des oder der zuständigen Bearbeiter durchgeführt.
Die benötigten Makros zum Lesen und Schreiben und deren Aufruf unterscheiden sich in Abhängigkeit vom Inhalt des Containerelementes. Unabhängig davon ist das Löschen und das Kopieren von Containerelementen.
Syntax
SWC_DELETE_ELEMENT <Container> <Containerelement>.
Hinweis
Falls das Containerelement im Container nicht existiert, wird über SY-SUBRC der Fehlercode 1 zurückgegeben, ansonsten hat SY-SUBRC den Wert 0.
Syntax
SWC_COPY_ELEMENT <Quellcontainer> <Quellelement> <Zielcontainer> <Zielelement>.
Das Containerelement wird in den Zielcontainer kopiert. Existiert dort ein gleichnamiges Containerelement, so wird dieses überschrieben, andernfalls wird ein neues Containerelement angelegt.
Verwenden Sie die nachfolgenden Makrobefehle, um Strukturen oder einfache Variable aus einem Container zu lesen oder in einen Container zu schreiben.
SWC_SET_ELEMENT <Container> <Containerelement> <Wert>.
Weitere Informationen finden Sie unter Feldwert in Container schreiben.
SWC_GET_ELEMENT <Container> <Containerelement> <FeldVariable>.
Hinweis
Falls das Containerelement im Container nicht existiert, wird über SY-SUBRC der Fehlercode 1 zurückgegeben, ansonsten hat SY-SUBRC den Wert 0.
Verwenden Sie die nachfolgenden Makrobefehle, um mehrzeilige Strukturen oder mehrzeilige Variable aus einem Container zu lesen oder in einen Container zu schreiben.
Syntax
SWC_SET_TABLE <Container> <Containerelement> <Wert>.
Weitere Informationen finden Sie unter Tabelle in Container schreiben.
Syntax
SWC_GET_TABLE <Container> <Containerelement> <TabellenVariable>.
Hinweis
Falls das Containerelement im Container nicht existiert, wird über SY-SUBRC der Fehlercode 1 zurückgegeben, ansonsten hat SY-SUBRC den Wert 0.
Verwenden Sie die nachfolgenden Makrobefehle, um Objektreferenzen aus einem Container zu lesen oder in einen Container zu schreiben. Wenn eine Objektreferenz in den Container geschrieben wird, führt das System folgendes durch:
Das System prüft, ob der zugehörige Objekttyp im Business Object Repositorydefiniert und aktiviert ist.
Das System setzt im Container ein Kennzeichen, dass es sich bei dem Eintrag um eine Objektreferenz handelt.
Objektreferenz schreiben
Sie deklarieren und erstellen eine Objektreferenz und schreiben diese anschließend in den Container.
DATA <Objekt> TYPE SWC_OBJECT. SWC_CREATE_OBJECT <Objekt> <Objekttyp> <Objektschlüssel>. SWC_SET_ELEMENT <Container> <Containerelement> <Objekt>.
Weitere Informationen finden Sie unter Objektreferenz in Container schreiben.
Objektreferenz lesen
Sie deklarieren eine Objektreferenz, füllen Sie aus dem Container und können anschließend aus der Objektreferenz den zugehörigen Objekttyp und Schlüssel ermitteln.
Syntax
DATA <Objekt> TYPE SWC_OBJECT. SWC_GET_ELEMENT <Container> <Containerelement> <Objekt>. SWC_GET_OBJECT_KEY <Objekt> <Objektschlüssel>. SWC_GET_OBJECT_TYPE <Objekt> <Objekttyp>.
Weitere Informationen finden Sie unter Objektreferenz aus Container lesen.
Verwenden Sie die nachfolgenden Makrobefehle, um mehrzeilige Objektreferenzen aus einem Container zu lesen oder in einen Container zu schreiben. Wenn eine Objektreferenz in den Container geschrieben wird, führt das System folgendes durch:
Das System prüft, ob der zugehörige Objekttyp im Business Object Repositorydefiniert und aktiviert ist.
Das System setzt im Container ein Kennzeichen, dass es sich bei dem Eintrag um eine Objektreferenz handelt.
Sie deklarieren eine mehrzeilige und eine einfache Objektreferenz. Anschließend erstellen Sie jede in die Tabelle einzufügende Objektreferenz einzeln, hängen Sie an die Tabelle an und schreiben schließlich die Tabelle in den Container.
Syntax
DATA <Objektliste> TYPE SWC_OBJECT OCCURS 0. DATA <Objekt> TYPE SWC_OBJECT. SWC_CREATE_OBJECT <Objekt> <Objekttyp> <Objektschlüssel>. APPEND <Objekt> TO <Objektliste>. ... SWC_SET_TABLE <Container> <Containerelement> <Objektliste>.
Weitere Informationen finden Sie unter Mehrzeilige Objektreferenz in Container schreiben.
Sie deklarieren eine mehrzeilige Objektreferenz und füllen Sie aus dem Container.
Syntax
DATA <Objektliste> TYPE SWC_OBJECT OCCURS 0. SWC_GET_TABLE <Container> <Containerelement> <Objektliste>.
Weitere Informationen finden Sie unter Mehrzeilige Objektreferenz aus Container lesen.