Ansicht
Dokumentation

<CNTN01> - Include für Container-Makros

- 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.
SAP E-Book

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 zusammengefaßt. Dieses Include ist im Include enthalten, und somit sind diese Makros automatisch in allen Implementierungsprogrammen verfügbar. Client-Programme, die mit Objekten arbeiten, sollten verwenden.

Sollen die Makros in ABAP Objects Klassen verwendet werden, so sind die Includes und zu verwenden. enthält die eigentlichen Makrodefinitionen und sollte in der Makro-Sektion der Klasse inkludiert werden. In werden einige Attribute definiert, die aus angesprochen werden. muß in der Typ-Sektion der Klasse inkludiert werden.

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: TYPE SWC_OBJECT

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 &lt;Schlüssel>

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 &lt;Container>

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 &lt;Container>

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 Makros zur Verwendung innerhalb von Objekttypimplementierungen.

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 )