ALEIDoc EDI(5)--Inbound Function
生活随笔
收集整理的這篇文章主要介紹了
ALEIDoc EDI(5)--Inbound Function
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ALE/IDoc?在Outbound的時候,需要有程序來生成IDoc,在Inbound的時候需要有程序來解析IDoc,從而在R/3中生成主數據。
由于Outbound有:Message Control, Change Point, Stand-Alone三種方式,所以就衍生出三種不同Outbound程序。但是概念上,總體是一致的,只是實現是一些參數和功能不一樣。相比而言,Inbound就比較單一,就只有一種方式,而且格式固定。
下面就放一個Inbound Function的例子,參數的話和標準的都一樣的。
FUNCTION?Z_KEVIN_INBOUND?.
*"----------------------------------------------------------------------
*"*"Local?Interface:
*"??IMPORTING
*"?????VALUE(INPUT_METHOD)?LIKE??BDWFAP_PAR-INPUTMETHD
*"?????VALUE(MASS_PROCESSING)?LIKE??BDWFAP_PAR-MASS_PROC
*"??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
*"??????IDOC_DATA?STRUCTURE??EDIDD
*"??????IDOC_STATUS?STRUCTURE??BDIDOCSTAT
*"??????RETURN_VARIABLES?STRUCTURE??BDWFRETVAR
*"??????SERIALIZATION_INFO?STRUCTURE??BDI_SER
*"??EXCEPTIONS
*"??????WRONG_FUNCTION_CALLED
*"----------------------------------------------------------------------
??INCLUDE?MBDCONWF.
??DATA:?BEGIN?OF?LS_TEST,
??????????ID(4)?TYPE?C,
??????????TEXT(32)?TYPE?C,
????????END?OF?LS_TEST.
??DATA?LT_TEST?LIKE?STANDARD?TABLE?OF?LS_TEST.
*initialize?workflow?result
??WORKFLOW_RESULT?=?C_WF_RESULT_OK.
??LOOP?AT?IDOC_CONTRL.
*make?sure?we?have?the?correct?message?passed?to?us
????IF?IDOC_CONTRL-MESTYP?NE?'ZKEVIN_INBOUND_M'.
??????RAISE?WRONG_FUNCTION_CALLED.
????ENDIF.
*clear?application?buffers
????CLEAR?LS_TEST.
????REFRESH?LT_TEST.
*?process?all?data?records?in?an?IDoc?and?transfer?them?to
*?application?buffers
????LOOP?AT?IDOC_DATA?WHERE?DOCNUM?EQ?IDOC_CONTRL-DOCNUM.
??????CASE?IDOC_DATA-SEGNAM.
????????WHEN?'ZKEVIN_TEST'.
??????????LS_TEST-ID?=?IDOC_DATA-SDATA+0(4).
??????????LS_TEST-TEXT?=?IDOC_DATA-SDATA+4(32).
??????????APPEND?LS_TEST?TO?LT_TEST.
??????ENDCASE.
????ENDLOOP.
????INSERT?ZKEVIN_T?FROM?TABLE?LT_TEST.
????IF?SY-SUBRC?EQ?0.
*?populate?return?variables?for?success
??????RETURN_VARIABLES-WF_PARAM?=?'Processed_IDOCs'.
??????RETURN_VARIABLES-DOC_NUMBER?=?IDOC_CONTRL-DOCNUM.
??????APPEND?RETURN_VARIABLES.
*?add?status?record?indicating?success
??????IDOC_STATUS-DOCNUM?=?IDOC_CONTRL-DOCNUM.
??????IDOC_STATUS-STATUS?=?'53'.
??????IDOC_STATUS-MSGTY?=?'I'.
??????IDOC_STATUS-MSGID?=?'ZE'.
??????IDOC_STATUS-MSGNO?=?'006'.
??????IDOC_STATUS-MSGV1?=?'TEST?ONE'.
??????APPEND?IDOC_STATUS.
????ENDIF.
??ENDLOOP.
ENDFUNCTION.
*"----------------------------------------------------------------------
*"*"Local?Interface:
*"??IMPORTING
*"?????VALUE(INPUT_METHOD)?LIKE??BDWFAP_PAR-INPUTMETHD
*"?????VALUE(MASS_PROCESSING)?LIKE??BDWFAP_PAR-MASS_PROC
*"??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
*"??????IDOC_DATA?STRUCTURE??EDIDD
*"??????IDOC_STATUS?STRUCTURE??BDIDOCSTAT
*"??????RETURN_VARIABLES?STRUCTURE??BDWFRETVAR
*"??????SERIALIZATION_INFO?STRUCTURE??BDI_SER
*"??EXCEPTIONS
*"??????WRONG_FUNCTION_CALLED
*"----------------------------------------------------------------------
??INCLUDE?MBDCONWF.
??DATA:?BEGIN?OF?LS_TEST,
??????????ID(4)?TYPE?C,
??????????TEXT(32)?TYPE?C,
????????END?OF?LS_TEST.
??DATA?LT_TEST?LIKE?STANDARD?TABLE?OF?LS_TEST.
*initialize?workflow?result
??WORKFLOW_RESULT?=?C_WF_RESULT_OK.
??LOOP?AT?IDOC_CONTRL.
*make?sure?we?have?the?correct?message?passed?to?us
????IF?IDOC_CONTRL-MESTYP?NE?'ZKEVIN_INBOUND_M'.
??????RAISE?WRONG_FUNCTION_CALLED.
????ENDIF.
*clear?application?buffers
????CLEAR?LS_TEST.
????REFRESH?LT_TEST.
*?process?all?data?records?in?an?IDoc?and?transfer?them?to
*?application?buffers
????LOOP?AT?IDOC_DATA?WHERE?DOCNUM?EQ?IDOC_CONTRL-DOCNUM.
??????CASE?IDOC_DATA-SEGNAM.
????????WHEN?'ZKEVIN_TEST'.
??????????LS_TEST-ID?=?IDOC_DATA-SDATA+0(4).
??????????LS_TEST-TEXT?=?IDOC_DATA-SDATA+4(32).
??????????APPEND?LS_TEST?TO?LT_TEST.
??????ENDCASE.
????ENDLOOP.
????INSERT?ZKEVIN_T?FROM?TABLE?LT_TEST.
????IF?SY-SUBRC?EQ?0.
*?populate?return?variables?for?success
??????RETURN_VARIABLES-WF_PARAM?=?'Processed_IDOCs'.
??????RETURN_VARIABLES-DOC_NUMBER?=?IDOC_CONTRL-DOCNUM.
??????APPEND?RETURN_VARIABLES.
*?add?status?record?indicating?success
??????IDOC_STATUS-DOCNUM?=?IDOC_CONTRL-DOCNUM.
??????IDOC_STATUS-STATUS?=?'53'.
??????IDOC_STATUS-MSGTY?=?'I'.
??????IDOC_STATUS-MSGID?=?'ZE'.
??????IDOC_STATUS-MSGNO?=?'006'.
??????IDOC_STATUS-MSGV1?=?'TEST?ONE'.
??????APPEND?IDOC_STATUS.
????ENDIF.
??ENDLOOP.
ENDFUNCTION.
總結
以上是生活随笔為你收集整理的ALEIDoc EDI(5)--Inbound Function的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ALEIDoc EDI(4)--chan
- 下一篇: ALEIDoc EDI(6)--Filt