Die Erweiterungen im Implementierungsprogramm für ein
virtuelles Attribut finden Sie zwischen den Makrobefehlen GET_TABLE_PROPERTY und END_PROPERTYSie müssen programmieren, wie der Wert des virtuellen Attributes zur Laufzeit entsteht. Der ermittelte oder errechnete Wert wird unter seiner Attributkennung im Container
CONTAINER gespeichert. Verwenden sie dazu bei einzeiligen Attributen den Makrobefehl SWC_SET_ELEMENT bzw. bei mehrzeiligen Attributen den Makrobefehl SWC_SET_TABLE .* Zugriff auf virtuelles Attribut
************************************************************
GET_PROPERTY Attribut CHANGING CONTAINER.
...
SWC_SET_ELEMENT CONTAINER <Attribut> <Wert>.
END_PROPERTY.
Der Quelltext wird als Vorschlag aus den Angaben, die Sie bei der Objekttypdefinition gemacht haben, automatisch erzeugt. Sie müssen bei der Implementierung von virtuellen Attributen den Quelltext bearbeiten.
Virtuelles Attribut als Objektreferenz und mehrzeiliges virtuelles Attribut
Virtuelle Attribute sind insbesondere in folgenden Fällen von Bedeutung:
Bauen Sie im Implementierungsprogramm den Schlüssel des referenzierten Objektes auf, erzeugen Sie eine Objektreferenz und geben Sie diese an den Aufrufer zurück.
Beispiel
Implementierung des virtuellen, mehrzeiligen Attributes
Items ( Verkaufsbelegpositionen) beim Objekttyp VBAK ( Verkaufsbeleg).Das Schlüsselfeld des Objekttyps
VBAK ist SalesDocument ( Verkaufsbeleg). Dieses Schlüsselfeld referenziert das Feld VBAK-VBELN .Das Attribut
Items liefert eine mehrzeilige Referenz auf ein Objekt vom Typ VBAP ( Verkaufsbelegposition) zurück. Die Schlüsselfelder des Objekttyps VBAP sind SalesDocumentNo ( Verkaufsbeleg) und ItemNo ( Verkaufsbelegposition). Diese Schlüsselfelder referenzieren die Felder VBAP-VBELN (bzw. VBAK-VBELN ) und VBAP-POSNR .Das System hat die Tabelle
Object-Items im Datendeklarationsteil automatisch hinzugefügt.Definieren Sie im Implementierungsprogramm, aus welchen Informationen sich diese mehrzeilige Objektreferenz zur Laufzeit aufbaut und wie sie in den Container eingetragen wird.
Mit dem Makrobefehl
SWC_CREATE_OBJECT wird aus Objekttyp und zusammengesetztem Objektschlüssel eine Objektreferenz aufgebaut und diese Objektreferenz der mit SWC_OBJECT deklarierten Variable zugewiesen:* virtuelles, mehrzeiliges Attribut Items
GET_PROPERTY ITEMS CHANGING CONTAINER.
* Datendeklarationen
***********************************************************
DATA ITEM TYPE SWC_OBJECT.
DATA:
BEGIN OF VBAP_KEY,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
END OF VBAP_KEY.
DATA BEGIN OF VBAP_TAB OCCURS 0.
INCLUDE STRUCTURE VBAP.
DATA END OF VBAP_TAB.
* Datenselektion
***********************************************************
IF OBJECT-ITEMS IS INITIAL.
SELECT * FROM VBAP INTO TABLE VBAP_TAB
WHERE VBELN = OBJECT-KEY-SALESDOCUMENT.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
VBAP_KEY-VBELN = OBJECT-KEY-SALESDOCUMENT.
LOOP AT VBAP_TAB.
VBAP_KEY-POSNR = VBAP_TAB-POSNR.
* Erzeugen einer Objektreferenz aus Objekttyp und Objektschlüssel
************************************************************
SWC_CREATE_OBJECT ITEM 'VBAP' VBAP_KEY.
APPEND ITEM TO OBJECT-ITEMS.
ENDLOOP.
ENDIF.
* Zuweisung der Objektreferenz an Containerelement
************************************************************
SWC_SET_TABLE CONTAINER 'Items' OBJECT-ITEMS.
END_PROPERTY.