2017-06-09
第一步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.