SAP PO接口,SPROXY生成入站代理类的增强
SAP PO接口日志管理。 可能是保存自荐表,可能是接口平台。
出站很简单, NEW zcl_interface_out( )->init_instance( 'DEMO_001' )->execute( EXPORTING output = ls_req IMPORTING input = ls_resp ).
SPROXY生成入站代理类时,想要自动继承自己的接口平台ZCL_INTERFACE_IN:
CL_PROXY_GEN_EMPTY_PROVIDER->GENERATE_INTERN( ). method GENERATE_INTERN. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Klasse CL_PROXY_GEN_EMPTY_PROVIDER, Methode GENERATE_INTERN, Anfang A *$*$-Start: (1)---------------------------------------------------------------------------------$*$* ENHANCEMENT 1 ZES_SPROXY. "active versionDATA: lr_text TYPE REF TO cl_proxy_gen_class_code. DATA: lr_sproxdat TYPE REF TO sproxdat. READ TABLE sproxdat REFERENCE INTO lr_sproxdat WITH KEY object1 = 'CLAS' object2 = 'CLAS'. DATA(lv_clsname) = lr_sproxdat->obj_name1. "Attribute READ TABLE sproxdat REFERENCE INTO DATA(lr_sproxdat1) WITH KEY object1 = 'METH' object2 = 'PAIM'. IF sy-subrc = 0. APPEND VALUE #( clsname = lv_clsname cmpname = 'GS_REQ' state = 1 attdecltyp = 0 attexpvirt = 0 "private typtype = 1 "type type = lr_sproxdat1->obj_name_r ) TO gen->attribute. ENDIF. READ TABLE sproxdat REFERENCE INTO DATA(lr_sproxdat2) WITH KEY object1 = 'METH' object2 = 'PAEX'. IF sy-subrc = 0. APPEND VALUE #( clsname = lv_clsname cmpname = 'GS_RES' state = 1 attdecltyp = 0 attexpvirt = 0 "private typtype = 3 "type ref to type = lr_sproxdat2->obj_name_r ) TO gen->attribute. ENDIF. "Inheritance gen->inheritance-clsname = lv_clsname. gen->inheritance-refclsname = 'ZCL_INTERFACE_IN'. gen->inheritance-state = seoc_state_implemented. "REDEFINITIONS gen->redefinitions = VALUE #( ( clsname = lv_clsname refclsname = 'ZCL_INTERFACE_IN' mtdname = 'PROCESS_BUSINESS_LOGIC' ) ( clsname = lv_clsname refclsname = 'ZCL_INTERFACE_IN' mtdname = 'SET_PARAMETER' ) ). "Method PROCESS_BUSINESS_LOGIC CREATE OBJECT lr_text. CALL METHOD lr_text->append EXPORTING text = : |*--------------------------------------------------------------------*|, |* \| [--->] gs_req TYPE { lr_sproxdat1->obj_name_r }|, |* \| [--->] gs_res TYPE REF TO { lr_sproxdat2->obj_name_r }|, |* 处理失败需要抛出异常 raise_exception( '失败' ).|, |*--------------------------------------------------------------------*|. APPEND VALUE #( cpdname = 'PROCESS_BUSINESS_LOGIC' redefine = abap_true source = lr_text->source ) TO gen->methods_with_source. "Method SET_PARAMETER CLEAR lr_text->source. CALL METHOD lr_text->append EXPORTING text = : ||, |* ms_simp_dlog-seqid = gs_req-mt_demo001_req-line-matnr.|, ||. APPEND VALUE #( cpdname = 'SET_PARAMETER' redefine = abap_true source = lr_text->source ) TO gen->methods_with_source. "Method SI_*_IS CLEAR lr_text->source. LOOP AT sproxdat REFERENCE "#EC CI_STDSEQ INTO lr_sproxdat WHERE object = 'INTF' AND obj_name = intf_name AND object1 = 'METH' AND object2 = 'METH'. CALL METHOD lr_text->append EXPORTING text = : `*** **** INSERT IMPLEMENTATION HERE **** ***`, "#EC NOTEXT ``, ` gs_req = input.`, ` gs_res = REF #( output ).`, ` init_instance('DEMO_001')->execute( EXPORTING output = gs_req IMPORTING input = gs_res ).`. gen->add_method( refclsname = intf_name method = lr_sproxdat->obj_name1 source = lr_text->source ). ENDLOOP. gen->save( overwrite = overwrite activate = activate devclass = devclass genflag = genflag suppress_dialogs = suppress_dialogs ). RETURN. ENDENHANCEMENT. *$*$-End: (1)---------------------------------------------------------------------------------$*$* generate_methods( sproxdat = sproxdat ). gen->save( overwrite = overwrite activate = activate devclass = devclass genflag = genflag suppress_dialogs = suppress_dialogs ). endmethod.
本文来自博客园,作者:yangliu11223,转载请注明原文链接:https://www.cnblogs.com/yangliu11223/p/18310967
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)