SAP abap使用程序批量创建数据元素

接着前一篇的SAP abap使用程序批量创建域,接下来就是用我们批量创建好的域来创建数据元素了。

原理和创建域的玩法类似

附上封装好的函数代码。


FUNCTION ZZF_CREATE_ELEMENT.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(ROLLNAME) TYPE  ROLLNAME
*"     REFERENCE(DESCRIPTION) TYPE  AS4TEXT
*"     REFERENCE(DDLANGUAGE) TYPE  DDLANGUAGE OPTIONAL
*"     REFERENCE(DOMNAME) TYPE  DOMNAME OPTIONAL
*"     REFERENCE(ROUTPUTLEN) TYPE  DDLENG OPTIONAL
*"     REFERENCE(MEMORYID) TYPE  MEMORYID OPTIONAL
*"     REFERENCE(REPTEXT) TYPE  REPTEXT OPTIONAL
*"     REFERENCE(SCRTEXT_S) TYPE  SCRTEXT_S OPTIONAL
*"     REFERENCE(SCRTEXT_M) TYPE  SCRTEXT_M OPTIONAL
*"     REFERENCE(SCRTEXT_L) TYPE  SCRTEXT_L OPTIONAL
*"     REFERENCE(DEVCLASS) TYPE  DEVCLASS DEFAULT '$TMP'
*"     REFERENCE(REQUEST_WB) TYPE  TRKORR OPTIONAL
*"  TABLES
*"      RETURN TYPE  BAPIRETTAB
*"----------------------------------------------------------------------

DATA: LT_NEW_OBJECT         TYPE COMT_GOX_DEF_HEADER,
      LT_OLD_OBJECT         LIKE LT_NEW_OBJECT,
      LV_ELEMENT_NAME       TYPE CHAR32,
      LV_DEVCLASS           TYPE DEVCLASS,
      LV_REQUEST_WB         TYPE TRKORR,
      LS_NEW_OBJECT         LIKE LINE OF LT_NEW_OBJECT,
      LS_NEW_OBJECT_DETAILS TYPE LINE OF COMT_GOX_TABLE_ENTRY_FIELDS,
      ET_BAPIRETURN         TYPE BAPIRETTAB,
      ET_TRANSPORT          TYPE COMT_GOX_TRANS_OBJECT.



LV_ELEMENT_NAME  = ROLLNAME.
LV_REQUEST_WB    = REQUEST_WB.
MOVE DEVCLASS                    TO LV_DEVCLASS.

MOVE 'ELEMENT'                   TO LS_NEW_OBJECT-OBJECT_TYPE.
MOVE ROLLNAME                    TO LS_NEW_OBJECT-OBJECT_NAME.

TRY.
    DATA(LV_GUID) = CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32( ).
  CATCH CX_UUID_ERROR .
ENDTRY.

MOVE     LV_GUID                 TO LS_NEW_OBJECT-KEY_GUID          .
DATA(LV_PARENT_GUID)              =  LS_NEW_OBJECT-KEY_GUID.
MOVE    'DESCRIPTION'            TO LS_NEW_OBJECT_DETAILS-FIELDNAME."描述
MOVE     DDLANGUAGE              TO LS_NEW_OBJECT_DETAILS-FIELDVALUE.
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'DOMNAME'                TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     DOMNAME                 TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'DDLANGUAGE'             TO LS_NEW_OBJECT_DETAILS-FIELDNAME  .
IF DDLANGUAGE IS INITIAL .
  MOVE     DDLANGUAGE            TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
ELSE.
  MOVE     SY-LANGU              TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
ENDIF.
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'ROUTPUTLEN'             TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     ROUTPUTLEN              TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

*CLEAR    LS_NEW_OBJECT_DETAILS.
*MOVE    'MEMORYID'             TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
*MOVE     MEMORYID              TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
*APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'REPTEXT'                TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     REPTEXT                 TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'HEADLEN'                TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     STRLEN( REPTEXT )       TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'SCRTEXT_S'              TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     SCRTEXT_S               TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'SCRLEN1'                TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     STRLEN( SCRTEXT_S )       TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'SCRTEXT_M'              TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     SCRTEXT_M               TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'SCRLEN2'                TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     STRLEN( SCRTEXT_M )       TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'SCRTEXT_L'              TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     SCRTEXT_L               TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR    LS_NEW_OBJECT_DETAILS.
MOVE    'SCRLEN3'                TO LS_NEW_OBJECT_DETAILS-FIELDNAME  ."
MOVE     STRLEN( SCRTEXT_L )       TO LS_NEW_OBJECT_DETAILS-FIELDVALUE .
APPEND   LS_NEW_OBJECT_DETAILS   TO LS_NEW_OBJECT-DETAILS.

CLEAR LS_NEW_OBJECT_DETAILS.
APPEND LS_NEW_OBJECT TO LT_NEW_OBJECT.
CLEAR LS_NEW_OBJECT.


MOVE     DEVCLASS                TO LV_DEVCLASS .
MOVE     REQUEST_WB              TO LV_REQUEST_WB .






  CALL FUNCTION 'GOX_GEN_DTEL_STD'
    EXPORTING
      IV_OBJECT_NAME       = LV_ELEMENT_NAME
      IT_OBJECT_NEW        = LT_NEW_OBJECT
      IT_OBJECT_OLD        = LT_OLD_OBJECT
      IV_DEVCLASS          = LV_DEVCLASS
      IV_REQUEST_WB        = LV_REQUEST_WB
    IMPORTING
      ET_BAPIRETURN        = ET_BAPIRETURN
      ET_TRANSPORT         = ET_TRANSPORT
            .

    APPEND LINES OF ET_BAPIRETURN TO RETURN.
DATA: LV_DDOBJNAME TYPE DDOBJNAME,
      LS_DD02V     TYPE DD02V.

LV_DDOBJNAME = LV_ELEMENT_NAME.

DATA GOTSTATE  TYPE DDGOTSTATE.
DATA DD04V_WA  TYPE DD04V.
DATA TPARA_WA  TYPE TPARA.



CALL FUNCTION 'DDIF_DTEL_GET'
  EXPORTING
    NAME                = LV_DDOBJNAME
    STATE               = 'A'
    LANGU               = SY-LANGU
  IMPORTING
    GOTSTATE            = GOTSTATE
    DD04V_WA            = DD04V_WA
    TPARA_WA            = TPARA_WA
  EXCEPTIONS
    ILLEGAL_INPUT       = 1
          .


CALL FUNCTION 'DDIF_DTEL_PUT'
  EXPORTING
    NAME                    = LV_DDOBJNAME
    DD04V_WA                = DD04V_WA
 EXCEPTIONS
   DTEL_NOT_FOUND          = 1
   NAME_INCONSISTENT       = 2
   DTEL_INCONSISTENT       = 3
   PUT_FAILURE             = 4
   PUT_REFUSED             = 5
          .

  IF SY-SUBRC NE 0.
    RETURN.
  ENDIF.

* ACTIVE TABLE
CALL FUNCTION 'DDIF_DTEL_ACTIVATE'
  EXPORTING
    NAME     = LV_DDOBJNAME
    AUTH_CHK = ' '
    .

CHECK SY-SUBRC = 0.




ENDFUNCTION.

结果展示:


猜你喜欢

转载自blog.csdn.net/huanglin6/article/details/80499610