Ansicht
Dokumentation

ABAPDERIVED_TYPES_DECLARATION - DERIVED TYPES DECLARATION

ABAPDERIVED_TYPES_DECLARATION - DERIVED TYPES DECLARATION

CPI1466 during Backup   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

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 )