Ansicht
Dokumentation
- Include für Container-Makros
TXBHW - Original Tax Base Amount in Local Currency
General Material Data
Diese Dokumentation steht unter dem Copyright der SAP AG.
Beschreibung
Makros zum Zugriff auf Objekte
Der Zugriff auf Objekte des Business Object Repository wird momentan durch einen Satz von Makros unterstützt. Diese Makros sollen im folgenden näher beschrieben werden.
Alle Makros sind im Include
Sollen die Makros in ABAP Objects Klassen verwendet werden, so sind die Includes
Container
Container dienen zur dynamischen Übergabe von Parametern und Ergebniswerten. Zu ihrer Bearbeitung gibt es folgende Makros:
Makro | Beschreibung |
---|---|
swc_container | Deklaration eines Containers |
swc_create_container | Erzeugen eines neuen Containers |
swc_release_container | Freigeben eines Containers |
swc_clear_container | Leeren eines Containers |
swc_create_element | Element im Container anlegen |
swc_set_element | Element in Container einfügen |
swc_set_table | mehrzeiliges Element in Container einfügen |
swc_get_element | Element aus Container lesen |
swc_get_table | mehrzeiliges Element aus Container lesen |
swc_delete_element | Element aus Container löschen |
Eine ausführliche Dokumentation der Containermakros finden Sie in der SAP-Bibliothek (Basis -> Business Management -> SAP Business Workflow -> Referenzdokumentation -> BC-SAP Business Workflow Navigation -> Business Object Builder -> Programmierung im Implementierungsprogramm).
Objektreferenzen
Deklaration
,,DATA:
Variablen, die Objektreferenzen enthalten, werden vom Typ SWC_OBJECT definiert. Als wichtiger Sonderfall existiert innerhalb der Objekttypimplementierung die Systemvariable SELF, die die selbstbezügliche Referenz enthält.
Erzeugen
,,SWC_CREATE_OBJECT
Objektreferenzen werden mit Hilfe des Makros SWC_CREATE_OBJECT erzeugt. Als ersten Parameter erhält das Makro die Variable, in der die Referenz zurückgeliefert werden soll, als zweiten Parameter den Typ des Objekts, das angelegt werden soll, und als dritten Parameter den Schlüssel des Objekts.
Löschen
,,SWC_FREE_OBJECT
Mit dem Makro SWC_FREE_OBJECT können vorhandene Objektreferenzen wieder freigegeben werden. Das Makro erhält als Eingabe die freizugebende Referenz.
Typ und Schlüssel lesen
,,SWC_GET_OBJECT_TYPE
Mit dem Makro SWC_GET_OBJECT_TYPE kann der zu einer Objektreferenz gehörige Objekttyp gelesen werden. Als ersten Parameter bekommt das Makro die Objektreferenz, der zweite Parameter ist der Rückgabeparameter und enthält nach dem Aufruf den zugehörigen Objekttyp. Als Datentypreferenz für den Objekttyp kann das Feld SWOTOBJID-OBJTYPE verwendet werden.
,,SWC_GET_OBJECT_KEY
Mit dem Makro SWC_GET_OBJECT_KEY kann der Schlüssel eines Objekts gelesen werden. Das Makro erhält als ersten Parameter die Referenz des Objekts, dessen Schlüssel gelesen werden soll, und liefert als Ergebnis im zweiten Parameter den Schlüssel zurück. Als Datentypreferenz für den Objekttyp kann das Feld SWOTOBJID-OBJKEY verwendet werden.
Methodenzugriff
,,SWC_CALL_METHOD
Mit Hilfe des Makros SWC_CALL_METHOD können Methoden von Objekten aufgerufen werden. Der erste Parameter enthält dabei die Objektreferenz, der zweite den Namen der Methode, und im dritten Parameter wird der Container übergeben, der alle Eingabewerte enthält. Nach erfolgreichem Aufruf sind im Container das Ergebnis (Containerelement _RESULT) und die Export-Parameter des Methodenaufrufes abgelegt. Falls die aufgerufene Methode eine Ausnahme auslöst, wird die Nummer der Ausnahme in der Systemvariable SY-SUBRC und eventuelle Werte in den Variablen SY-MSGV1, ..., SY-MSGV4 abgelegt.
Attributzugriff
Lesen
,,SWC_GET_[TABLE_]PROPERTY
Auf Attribute eines Objektes kann mit der Makros SWC_GET_PROPERTY bzw. SWC_GET_TABLE_PROPERTY zugegriffen werden. Beide Makros erhalten als Eingabe im ersten Parameter die Objektreferenz und im zweiten Parameter den Namen des Attributes, auf das zugegriffen werden soll. Als Ergebnis liefern die beiden Makros im dritten Parameter den Wert des Attributes zurück. SWC_GET_PROPERTY liefert dabei einfache Attributwerte zurück, SWC_GET_TABLE_PROPERTY liefert mehrzeilige Attributwerte als interne Tabellen zurück.
Auffrischen
,,SWC_REFRESH_OBJECT
Attribute, die Referenzen auf Datenbankfelder sind, werden nur beim ersten Zugriff neu von der Datenbank gelesen. Um die Attributwerte aufzufrischen, kann das Makro SWC_REFRESH_OBJECT aufgerufen werden, das ein erneutes Lesen in der Datenbank beim nächsten Attributzugriff erzwingt. Das Makro erhält die Objektreferenz als Eingabeparameter.
Ereignisse auslösen
,,SWC_RAISE_EVENT
Mit Hilfe des Makros SWC_RAISE_EVENT können Ereignisse von Objekttypen ausgelöst werden. Als Eingabe wird dem Makro dabei die Referenz auf das Objekt im ersten Parameter, der Name des Events im zweiten und der Container mit den Parametern für den Event im dritten Parameter übergeben.
Besonderheiten innerhalb von Objekttyp-Implementierungen
Zusätzlich zu oben aufgeführten Makros gibt es in
Selbstbezügliche Objektreferenz
Innerhalb der Objekttypimplementierung kann die eigene Instanz mit der Variable SELF angesprochen werden. Diese Referenz kann u.a. dazu verwendet werden, Attributwerte der aktuellen Instanz mit SWC_GET_[TABLE_]PROPERTY abzufragen.
Objektschlüssel setzen
,,SWC_SET_OBJECTKEY
Innerhalb von Methodenimplementierungen kann mit dem Makro SWC_SET_OBJECTKEY der Schlüssel des Objektes neu gesetzt werden. Dies ist bei Methoden wie CREATE oder FIND sinnvoll, die eine Objektreferenz an ein eventuell neu erzeugtes persistentes Objekt binden.
Ausnahmen auslösen
,,EXIT_RETURN
Innerhalb von Objekttypimplementierungen können Methoden Ausnahmen auslösen, die an der Methodenschnittstelle definiert sind. Hierzu wird das Makro EXIT_RETURN aufgerufen, das als Eingabe die Nummer der Ausnahme und vier Ergebniswerte übergeben bekommt. Die Ergebniswerte können auch SPACE sein, falls diese leer sind.
Beispiel
Das folgende Beispiel ist ein Auszug aus dem Beispielprogramm RSWOCLNT. Es verwendet die Objekttypen SCHEDULE, DOMINANT und APPOINTMENT des SAP Terminkalenders (Transaktion SSC1).
Das Programm listet zunächst die Dominante (Attribut DominantOfToday) und die Termine des aktuellen Tages (Attribut AppointmentsOfToday), und dann die Termine der letzten und der nächsten 5 Tage (Methode AppointmentsGet). Bevor das Programm ausgeführt wird, sollten entsprechende Termine im Kalender (SSC1) angelegt werden.
REPORT RSWOCLNT.
***** use of container macros
INCLUDE
***** object reference declaration
DATA: SCHEDULE TYPE SWC_OBJECT.
***** object reference creation
SWC_CREATE_OBJECT SCHEDULE 'SCHEDULE' SY-UNAME.
IF SY-SUBRC NE 0.
.....
ENDIF.
***** access to attribute
DATA: DOMINANT TYPE SWC_OBJECT.
SWC_GET_PROPERTY SCHEDULE 'DominantOfToday' DOMINANT.
IF SY-SUBRC NE 0.
.....
ENDIF.
***** access to mulitline attribute
DATA: APPOINTMENTS TYPE SWC_OBJECT OCCURS 0.
DATA: APP TYPE SWC_OBJECT.
SWC_GET_TABLE_PROPERTY SCHEDULE 'AppointmentsOfToday' APPOINTMENTS.
IF SY-SUBRC = 0.
LOOP AT APPOINTMENTS INTO APP.
.....
ENDLOOP.
ENDIF.
***** method invocation
DATEFROM = SY-DATUM - 5.
DATETO = SY-DATUM + 5.
* create container
SWC_CONTAINER CONTAINER.
* fill container
SWC_SET_ELEMENT CONTAINER 'DateFrom' DATEFROM.
SWC_SET_ELEMENT CONTAINER 'DateTo' DATETO.
* call method
SWC_CALL_METHOD SCHEDULE 'AppointmentsGet' CONTAINER.
IF SY-SUBRC = 0.
REFRESH APPOINTMENTS.
* read method result
SWC_GET_TABLE CONTAINER '_RESULT' APPOINTMENTS.
LOOP AT APPOINTMENTS INTO APP.
.....
ENDLOOP.
ENDIF.
General Material Data Fill RESBD Structure from EBP Component Structure
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 10805 Date: 20240424 Time: 105649 sap01-206 ( 158 ms )