Ansicht
Dokumentation

ABAPDERIVED_TYPES_DECLARATION - DERIVED TYPES DECLARATION

ABAPDERIVED_TYPES_DECLARATION - DERIVED TYPES DECLARATION

ROGBILLS - Synchronize billing plans   General Material Data  
This documentation is copyright by SAP AG.
SAP E-Book

Declaration of Variables with BDEF Derived Types

For modularization purposes, BDEF derived types can be used outside of the reserved handler methods by declaring variables, for example, in ABAP programs. The statements TYPES, DATA and CREATE DATA are supported. For example, an internal table can be declared with the type TYPE TABLE FOR:

DATA itab TYPE TABLE FOR CREATE entity_name.

entity_name must be the full name of the entity, not the alias defined in the BDEF since there is no clear reference to a specific BDEF outside of handler methods in behavior pools. The following type declarations are supported in the context of BDEF derived types:

Creation of Data Objects

Data objects with BDEF derived types can be created dynamically. It can be done, most conveniently, using the method create_data of class CL_ABAP_BEHVDESCR:

cl_abap_behvdescr=>create_data( ).

The following parameters can be used for the method:

Parameter Details
p_name Name of the entity
p_root Name of the root
p_op Operation, \lbr for example, if_abap_behv=>op-m-create or the predefined constant (e. g. just 'C' for create).
p_sub_name Association or action name
p_kind Type category
p_structure 'X' \lbr For the creation of a row type (and not a table type)

The data object creation is based on absolute types. These types can be constructed manually and instantiated using the following syntax.

CREATE DATA dref TYPE (der_type).

The variable der_type represents a string that follows a certain pattern that looks, for example, as follows. Note that the entries for the placeholders must be capitalized and that the string requires additional parts depending on the context, for example, when referring to associations or in case of actions.

\BDEF=bdef_name\ENTITY=entity_name\TYPE=operation

The name of the behavior definition (bdef_name) comes in first position, followed by the entity name (entity_name; it cannot be the alias) and the specification for the type (operation). The following table provides an overview on strings that can be used for der_type in the respective contexts:

Context String for der_type
Standard operations \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 For create-by-association operations: \BDEF=bdef_name\ENTITY=entity_name\ASSOC=assoc_name\TYPE=CREATE
Read operations For READ IMPORT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=READ_I \lbr For READ RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=READ_R \lbr \lbr For read-by-association operations: \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
Responses TYPE TABLE FOR .../TYPE STRUCTURE FOR ... (the variants without _LATE refer to those types with the addition 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
Actions and functions For ACTION IMPORT/FUNCTION IMPORT: \lbr \BDEF=bdef_name\ENTITY=entity_name\ACTION=action_or_function_name\TYPE=IMPORTING \lbr For ACTION RESULT/FUNCTION RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\ACTION=action_or_function_name\TYPE=RETURNING \lbr For ACTION REQUEST/FUNCTION REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\ACTION=action_or_function_name\TYPE=REQUEST
Locks \BDEF=bdef_name\ENTITY=entity_name\TYPE=KEY \lbr \lbr ...\TYPE=LOCK is obsolete.
Permissions For INSTANCE FEATURES KEY: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_CONTROL_K \lbr \lbrFor INSTANCE FEATURES REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_CONTROL_F (optionally with \GROUP) \lbr \lbrFor INSTANCE FEATURES RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_CONTROL_R (optionally with \GROUP) \lbr \lbrFor FEATURES REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=G_CONTROL_F (optionally with \GROUP) \lbr \lbrFor FEATURES RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=G_CONTROL_R (optionally with \GROUP) \lbr \lbrFor INSTANCE AUTHORIZATION KEY: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_AUTH_K \lbr \lbrFor INSTANCE AUTHORIZATION REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_AUTH_Q (optionally with \GROUP) \lbr \lbrFor INSTANCE AUTHORIZATION RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=I_AUTH_R (optionally with \GROUP) \lbr \lbrFor GLOBAL AUTHORIZATION REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=G_AUTH_Q (optionally with \GROUP) \lbr \lbrFor GLOBAL AUTHORIZATION RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=G_AUTH_R (optionally with \GROUP) \lbr \lbrFor PERMISSIONS REQUEST: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=PERM_Q \lbr \lbrFor PERMISSIONS KEY: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=PERM_K \lbr \lbrFor PERMISSIONS RESULT: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=PERM_R
... FOR CHANGE.../ \lbr ... FOR DELETE... For TYPE TABLE FOR CHANGE/TYPE STRUCTURE FOR CHANGE: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=CHANGE \lbr \lbrFor TYPE RESPONSE FOR CHANGE: \lbr \BDEF=bdef_name\TYPE=CHANGE \lbr \lbrFor TYPE TABLE FOR DELETE/TYPE STRUCTURE FOR DELETE: \lbr \BDEF=bdef_name\ENTITY=entity_name\TYPE=DELETE \lbr \lbrFor 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

Example

Declaration of variables:


    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.

Creation of data objects:


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').

The program DEMO_RAP_EML_EXPLICIT_DECL demonstrates the explicit declaration of variables with BDEF derived types with a simple EML READ statement.






SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   Addresses (Business Address Services)  
This documentation is copyright by SAP AG.

Length: 14518 Date: 20240505 Time: 052357     sap01-206 ( 195 ms )