FunktionsdokumentationMakrobefehle zum Bearbeiten eines Containers Dieses Dokument in der Navigationsstruktur finden

 

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

Ende des Hinweises

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

Ende des Hinweises

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:

Syntax Syntax

  1. SWC_CONTAINER <Container>.         "Deklaration
    SWC_CREATE_CONTAINER <Container>.  "Initialisierung
Ende des Codes

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

Ende des Beispiels.

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

Ende des Beispiels.

Aktivitäten

Containerelement

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

Syntax Syntax

  1. SWC_DELETE_ELEMENT <Container> <Containerelement>.
Ende des Codes

Hinweis Hinweis

Falls das Containerelement im Container nicht existiert, wird über SY-SUBRC der Fehlercode 1 zurückgegeben, ansonsten hat SY-SUBRC den Wert 0.

Ende des Hinweises
Containerelement kopieren

Syntax Syntax

  1. SWC_COPY_ELEMENT <Quellcontainer> <Quellelement> <Zielcontainer> <Zielelement>.
Ende des Codes

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 Hinweis

Falls das Containerelement im Container nicht existiert, wird über SY-SUBRC der Fehlercode 1 zurückgegeben, ansonsten hat SY-SUBRC den Wert 0.

Ende des Hinweises
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

Syntax Syntax

  1. SWC_SET_TABLE <Container> <Containerelement> <Wert>.
Ende des Codes

Weitere Informationen finden Sie unter Tabelle in Container schreiben.

Mehrzeiligen Feldwert lesen

Syntax Syntax

  1. SWC_GET_TABLE <Container> <Containerelement> <TabellenVariable>.
Ende des Codes

Hinweis Hinweis

Falls das Containerelement im Container nicht existiert, wird über SY-SUBRC der Fehlercode 1 zurückgegeben, ansonsten hat SY-SUBRC den Wert 0.

Ende des Hinweises
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:

  • 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 Syntax

  1. DATA <Objekt> TYPE SWC_OBJECT.
    SWC_GET_ELEMENT <Container> <Containerelement> <Objekt>.
    SWC_GET_OBJECT_KEY <Objekt> <Objektschlüssel>.
    SWC_GET_OBJECT_TYPE <Objekt> <Objekttyp>.
Ende des Codes

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:

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

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.

Syntax Syntax

  1. 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>.
Ende des Codes

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.

Syntax Syntax

  1. DATA <Objektliste> TYPE SWC_OBJECT OCCURS 0.
    SWC_GET_TABLE <Container> <Containerelement> <Objektliste>.
Ende des Codes

Weitere Informationen finden Sie unter Mehrzeilige Objektreferenz aus Container lesen.