Ansicht
Dokumentation
ABAPDERIVED_TYPES_DECLARATION - DERIVED TYPES DECLARATION
CPI1466 during Backup General Material DataDiese Dokumentation steht unter dem Copyright der SAP AG.
Deklaration von Variablen mit abgeleiteten BDEF-Typen
Für Modularisierungszwecke können abgeleitete BDEF-Typen außerhalb der reservierten Behandlermethoden indem Variablen deklariert werden, beispielsweise in ABAP-Programmen. Die Anweisungen TYPES, DATA und CREATE DATA werden unterstützt. Eine interne Tabelle kann zum Beispiel mit dem Typ TYPE TABLE FOR deklariert werden.
DATA itab TYPE TABLE FOR CREATE entity_name.
entity_name darf nicht das in der BDEF definierte Alias sein, sondern der vollständige Name der Entität, da es keine eindeutige Referenz auf eine spezifische BDEF außerhalb der Behandlermethoden in Verhaltens-Pools gibt. Die folgenden Typdeklarationen werden im Kontext von abgeleiteten BDEF-Typen unterstützt:
Anlegen von Datenobjekten
Datenobjekte mit abgeleiteten BDEF-Typen können dynamisch angelegt werden. Am einfachsten gelingt dies mit der Methode create_data der Klasse CL_ABAP_BEHVDESCR:
cl_abap_behvdescr=>create_data( ).
Die folgenden Parameter können bei der Methode verwendet werden:
Parameter | Details |
p_name | Name der Entität |
p_root | Name der Wurzel |
p_op | Operation, \lbr Zum Beispielif_abap_behv=>op-m-create oder die vordefinierte Konstante (z.B. einfach 'C' für create). |
p_sub_name | Name der Assoziation oder Aktion |
p_kind | Art des Typs |
p_structure | 'X' \lbr Für das Anlegen eines Zeilentyps (kein Tabellentyp) |
Das Anlegen des Datenobjekts basiert auf absoluten Typen. Diese Typen können manuell aufgebaut werden und mit folgender Syntax instanziiert werden:
CREATE DATA dref TYPE (der_type).
Die Variable der_type stellt eine Zeichenkette dar, die einem spezifischen Muster entspricht, beispielsweise wie folgt. Die Einträge für die Platzhalter müssen in Großbuchstaben stehen und die Zeichenkette benötigt je nach Kontext weitere Teils, zum Beispiel bei Referenzen auf Assoziationen oder bei Aktionen.
\BDEF=bdef_name\ENTITY=entity_name\TYPE=operation
Der Name der Verhaltensdefinition (bdef_name) steht vor dem Entitätsnamen (entity_name; darf nicht das Alias sein) und der Typangabe (operation) an erster Stelle. In folgender Tabelle steht eine Übersicht der Zeichenketten, die für der_type in den jeweiligen Kontexten verwendet werden können:
Kontext | Zeichenfolge für der_type |
Standardoperationen | \BDEF=bdef_name\ENTITY=entity_name\TYPE=CREATE \lbr\BDEF=bdef_name\ENTITY=entity_name\TYPE=UPDATE \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=DELETE \lbr \lbr Für create-by-association-Operationen: \BDEF=bdef_name\ENTITY=entity_name\ASSOC=assoc_name\TYPE=CREATE |
Leseoperationen: | Für READ IMPORT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=READ_I \lbr Für READ RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=READ_R \lbr \lbr Für read-by-association-Operationen: \lbr IMPORT: \lbr \BDEF=bdef_name\ENTITY=entity_name\ASSOC=assoc_name\TYPE=READ_I \lbr RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\ASSOC=assoc_name\TYPE=READ_R \lbr LINK: \lbr \BDEF=bdef_name\ENTITY=entity_name\ASSOC=assoc_name\TYPE=LINK |
Antworten | TYPE TABLE FOR .../TYPE STRUCTURE FOR ... (Die Varianten ohne _LATE beziehen sich auf Typen mit dem Zusatz EARLY): \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=FAILED \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=FAILED_LATE \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=MAPPED \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=MAPPED_LATE \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=REPORTED \BDEF=bdef_name\ENTITY=entity_name\TYPE=REPORTED_LATE \lbr \lbr TYPE RESPONSE FOR ... \lbr \BDEF=bdef_name\TYPE=FAILED \lbr \BDEF=bdef_name\TYPE=FAILED_LATE \lbr \BDEF=bdef_name\TYPE=MAPPED \lbr \BDEF=bdef_name\TYPE=MAPPED_LATE \lbr \BDEF=bdef_name\TYPE=REPORTED \lbr \BDEF=bdef_name\TYPE=REPORTED_LATE |
Aktionen und Funktionen | Für ACTION IMPORT/FUNCTION IMPORT: \lbr \BDEF=bdef_name\ENTITY=entity_name\ACTION=action_or_function_name\TYPE=IMPORTING \lbr Für ACTION RESULT/FUNCTION RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\ACTION=action_or_function_name\TYPE=RETURNING \lbr Für ACTION REQUEST/FUNCTION REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\ACTION=action_or_function_name\TYPE=REQUEST |
Sperren | \BDEF=bdef_name\ENTITY=entity_name\TYPE=KEY \lbr \lbr ...\TYPE=LOCK ist obsolet. |
Berechtigungen | Für INSTANCE FEATURES KEY: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_CONTROL_K \lbr \lbrFür INSTANCE FEATURES REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_CONTROL_F (optional mit \GROUP) \lbr \lbrFür INSTANCE FEATURES RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_CONTROL_R (optional mit \GROUP) \lbr \lbrFür FEATURES REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=G_CONTROL_F (optional mit \GROUP) \lbr \lbrFür FEATURES RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=G_CONTROL_R (optional mit \GROUP) \lbr \lbrFür INSTANCE AUTHORIZATION KEY: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_AUTH_K \lbr \lbrFür INSTANCE AUTHORIZATION REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_AUTH_Q (optional mit \GROUP) \lbr \lbrFür INSTANCE AUTHORIZATION RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_AUTH_R (optional mit \GROUP) \lbr \lbrFür GLOBAL AUTHORIZATION REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=G_AUTH_Q (optional mit \GROUP) \lbr \lbrFür GLOBAL AUTHORIZATION RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=G_AUTH_R (optional mit \GROUP) \lbr \lbrFür PERMISSIONS REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=PERM_Q \lbr \lbrFür PERMISSIONS KEY: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=PERM_K \lbr \lbrFür PERMISSIONS RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=PERM_R |
... FOR CHANGE.../ \lbr ... FOR DELETE... | Für TYPE TABLE FOR CHANGE/TYPE STRUCTURE FOR CHANGE: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=CHANGE \lbr \lbrFür TYPE RESPONSE FOR CHANGE: \lbr \BDEF=bdef_name\TYPE=CHANGE \lbr \lbrFür TYPE TABLE FOR DELETE/TYPE STRUCTURE FOR DELETE: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=DELETE \lbr \lbrFür TYPE RESPONSE FOR DELETE: \lbr \BDEF=bdef_name\TYPE=DELETE |
TYPE TABLE FOR HIERARCHY/ \lbr TYPE STRUCTURE FOR HIERARCHY | \BDEF=bdef_name\ENTITY=entity_name\TYPE=HIERARCHY |
Beispiel
Deklaration von Variablen:
TYPES: create_type TYPE TABLE FOR CREATE demo_managed_root,
cba_type TYPE TABLE FOR CREATE demo_managed_root\_child,
update_type TYPE TABLE FOR UPDATE demo_managed_root,
delete_type TYPE TABLE FOR DELETE demo_managed_root.
DATA: create_data TYPE TABLE FOR CREATE demo_managed_root,
cba_data TYPE TABLE FOR CREATE demo_managed_root\_child,
update_data TYPE TABLE FOR UPDATE demo_managed_root,
delete_data TYPE TABLE FOR DELETE demo_managed_root.
Anlegen von Datenobjekten:
CONSTANTS entity_name TYPE abp_entity_name VALUE 'DEMO_MANAGED_ROOT'.
DATA(ref) = cl_abap_behvdescr=>create_data(
p_name = entity_name
p_op = if_abap_behv=>op-m-create "or: p_op = 'C'
).
...
DATA ref2 TYPE REF TO data.
CREATE DATA ref2 TYPE
('\BDEF=demo_MANAGED_ROOT\ENTITY=DEMO_MANAGED_CHILD\TYPE=FAILED').
Mit dem Programm DEMO_RAP_EML_EXPLICIT_DECL wird die explizite Deklaration von Variablen mit abgeleiteten BDEF-Typen, die mit einer einfachen EML-READ-Anweisung abgeleitet werden, demonstriert.
Vendor Master (General Section) Fill RESBD Structure from EBP Component Structure
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 15011 Date: 20240420 Time: 111108 sap01-206 ( 168 ms )