IDOC 基本步骤(转)
原文链接:https://mp.weixin.qq.com/s/ANGqD3nIKVgQ5SxBbXKbjg
IDOC,配置需要分两部分:
配置发送方
第一步WE31创建段(SEGMENT):ZLM_SMT01

第二步WE30创建IDOC基本类型 :ZLM_IDOC_TYPE1



第三步WE81创建IDOC消息类型 :ZLM_IDOC_MSG1

第四步WE82关联基本类型和消息类型

第五步SM59创建远程连接 :19TO21

第六步WE21创建端口 :ZLM_PORT01(own port name) A000000059(generate port name)


两种都可以,第一种自动生成端口号,第二种自己命名。这里采用第二种,填写端口号和远程连接地址

第七步BD54创建逻辑系统 :ZLM_DEV19

第八步WE20配置接收方信息:


添加outbound partners后,回车会进入如下:

到此发送端配置完成,进行接收系统去配置接收端
发送端程序:
REPORT ZLM_IDOC_01. *&---------------------------------------------------------------------* *&IDOC控制变量和数据变量定义 *&---------------------------------------------------------------------* DATA: g_idoc_ctl LIKE edidc, gi_ret_ctl LIKE edidc OCCURS 0 WITH HEADER LINE, gi_idoc_data LIKE edidd OCCURS 0 WITH HEADER LINE, control_record_in TYPE edidc. DATA: idoc_status TYPE string. DATA: l_data TYPE ZLM_SMT01. *&---------------------------------------------------------------------* *&控制数据 *&---------------------------------------------------------------------* g_idoc_ctl-idoctp = 'ZLM_IDOC_TYPE1'. "IDOC TYPE g_idoc_ctl-mestyp = 'ZLM_IDOC_MSG1'. "MESSAGE TYPE g_idoc_ctl-outmod = '2'. "传输模式 "接收端配置 g_idoc_ctl-rcvprn = 'ZLM_DEV19'. "接收方的合作伙伴编号 g_idoc_ctl-rcvprt = 'LS'. "接收方伙伴类型 g_idoc_ctl-rcvpor = 'ZLM_PORT01'. "接收者端口(SAP 系统,EDI 子系统) "发送端配置 g_idoc_ctl-sndprt = 'LS'. "发送方伙伴类型 g_idoc_ctl-sndprn = 'ZLM_DEV21'. "发送方合作伙伴 *维护数据 gi_idoc_data-segnam = 'ZLM_SMT01'. gi_idoc_data-dtint2 = 0. l_data-CARRID = '11'. l_data-CONNID = '12'. l_data-COUNTRYFR = '13'. MOVE l_data TO gi_idoc_data-sdata. APPEND gi_idoc_data. *&---------------------------------------------------------------------* *&分发程序 *&---------------------------------------------------------------------* CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE' EXPORTING master_idoc_control = g_idoc_ctl TABLES communication_idoc_control = gi_ret_ctl master_idoc_data = gi_idoc_data EXCEPTIONS error_in_idoc_control = 1 error_writing_idoc_status = 2 error_in_idoc_data = 3 sending_logical_system_unknown = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE 'IDOC distribute error' TYPE 'I'. ELSE. READ TABLE gi_ret_ctl INDEX 1. IF sy-subrc = 0. CONCATENATE 'STATUS' gi_ret_ctl-status INTO idoc_status. "发送成功状态是30 MESSAGE idoc_status TYPE 'I'. COMMIT WORK. CALL FUNCTION 'DEQUEUE_ALL'. ENDIF. ENDIF.
配置接收方
第一步WE31创建段(SEGMENT):ZLM_SMT01(field字段跟发送端一致)

第二步WE30创建IDOC基本类型 :ZLM_IDOC_TYPE1



第三步WE81创建IDOC消息类型 :ZLM_IDOC_MSG1

第四步WE82关联基本类型和消息类型

第五步WE37创建接受函数 :ZLM_IDOC_RECIVER01(输入输出参数是固定的,从任意一个接收函数copy下就行)



第六步BD51注册函数

第七步WE57关联函数和基本类型消息类型

第八步WE42创建inbound press code:ZLM_IDOC_PROCESS1


第九步BD54创建逻辑系统 :ZLM_DEV21

第十步WE20配置发送方信息:


到此,接收端配置完成
接收端Function
FUNCTION ZLM_IDOC_RECIVER01. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD OPTIONAL *" VALUE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC OPTIONAL *" EXPORTING *" VALUE(WORKFLOW_RESULT) LIKE BDWF_PARAM-RESULT *" VALUE(APPLICATION_VARIABLE) LIKE BDWF_PARAM-APPL_VAR *" VALUE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK *" VALUE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS *" TABLES *" IDOC_CONTRL STRUCTURE EDIDC OPTIONAL *" IDOC_DATA STRUCTURE EDIDD OPTIONAL *" IDOC_STATUS STRUCTURE BDIDOCSTAT OPTIONAL *" RETURN_VARIABLES STRUCTURE BDWFRETVAR OPTIONAL *" SERIALIZATION_INFO STRUCTURE BDI_SER OPTIONAL *"---------------------------------------------------------------------- DATA: l_wa_idoc_data like edidd. DATA: l_data LIKE ZLM_SMT01. "WE31配置的那个机构 LOOP AT IDOC_CONTRL. LOOP AT IDOC_DATA into l_wa_idoc_data WHERE docnum = IDOC_CONTRL-docnum. "虽然l_wa_idoc_data-SDATA是没结构的,这样赋值后就成有结构的数据了 l_data = l_wa_idoc_data-SDATA. ENDLOOP. ENDLOOP. COMMIT WORK. CLEAR IDOC_STATUS. IDOC_STATUS-docnum = IDOC_CONTRL-docnum. IDOC_STATUS-status = '53'. IDOC_STATUS-msgty = 'S'. IDOC_STATUS-msgid = '00'. IDOC_STATUS-msgno = '398'. IDOC_STATUS-msgv1 = 'idoc'. IDOC_STATUS-msgv2 = 'successfully processed'. APPEND IDOC_STATUS. ENDFUNCTION.
可以在这里打外部断点,然后在执行发送程序
查看发送状态:
WE05
接收方:

发送方:

原文链接:https://mp.weixin.qq.com/s/ANGqD3nIKVgQ5SxBbXKbjg