Anfang des InhaltsbereichsFunktionsdokumentation Makrobefehle zum Bearbeiten eines Containers Dokument im Navigationsbaum lokalisieren

Verwendung

Sie können diese Makrobefehle bei folgenden Programmen einsetzen:

Die Bearbeitung einer Containerinstanz umfasst:

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.

Voraussetzungen

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 Springen ® Klassenlokale Typen ® Makros ein. Binden Sie die Include-Datei <CNTN03> über Springen ® Klassenlokale Typen ® Lokale Klassendefinitionen/Typen ein.

Der Container muss mit folgenden Makrobefehlen deklariert und initialisiert werden:

SWC_CONTAINER <Container>.         "Deklaration
SWC_CREATE_CONTAINER <Container>.  "Initialisierung

Weitere Informationen finden Sie unter Deklaration und Initialisierung der Datenstruktur eines Containers.

Funktionsumfang

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.

Aktivitäten

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.

Containerelement löschen

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.

Containerelement kopieren

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.

Elementartyp oder Struktur

Verwenden Sie die nachfolgenden Makrobefehle, um Strukturen oder einfache Variable aus einem Container zu lesen oder in einen Container zu schreiben.

Feldwert schreiben

SWC_SET_ELEMENT <Container> <Containerelement> <Wert>.

Weitere Informationen finden Sie unter Feldwert in Container schreiben.

Feldwert lesen

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.

Mehrzeiliger Elementartyp oder mehrzeilige Struktur

Verwenden Sie die nachfolgenden Makrobefehle, um mehrzeilige Strukturen oder mehrzeilige Variable aus einem Container zu lesen oder in einen Container zu schreiben.

Mehrzeiligen Feldwert schreiben

SWC_SET_TABLE <Container> <Containerelement> <Wert>.

Weitere Informationen finden Sie unter Tabelle in Container schreiben.

Mehrzeiligen Feldwert lesen

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.

Objektreferenz als Containerelement

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:

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.

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.

Mehrzeilige Objektreferenz als Containerelement

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:

Mehrzeilige Objektreferenz schreiben

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.

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.

Mehrzeilige Objektreferenz lesen

Sie deklarieren eine mehrzeilige Objektreferenz und füllen Sie aus dem Container.

DATA <Objektliste> TYPE SWC_OBJECT OCCURS 0.
SWC_GET_TABLE <Container> <Containerelement> <Objektliste>.

Weitere Informationen finden Sie unter Mehrzeilige Objektreferenz aus Container lesen.

Ende des Inhaltsbereichs