配置接收方
第一步WE31创建段(SEGMENT):ZLM_SMT01(field字段跟发送端一致)
第二步WE30创建IDOC基本类型 :ZLM_IDOC_TYPE1
第三步WE81创建IDOC消息类型 :ZLM_IDOC_MSG1
第五步WE37创建接受函数 :ZLM_IDOC_RECIVER01 输入输出参数是固定的,从任意一个接收函数copy下就行
第八步WE42创建inbound press code:ZLM_IDOC_PROCESS1
到此,接收端配置完成
接收端FM:
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
.
可以在这里打外部断点,然后在执行发送程序