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.
结果展示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架