IDOC接口.docx
《IDOC接口.docx》由会员分享,可在线阅读,更多相关《IDOC接口.docx(15页珍藏版)》请在冰豆网上搜索。
IDOC接口
IDOC是SAP提供的接口工具,最开始的用途是在电子商务EDI领域,EDI可是老早以前的概念了,意思是通过将数据通过两边概念好的文件(数据)格式来传输,到系统中处置,进展到了今天,显然能够用“接口”来归纳了。
若是说的接口的话,到此刻为止,SAP提供的接口技术确实很多,如:
BDC\IDOC\BAPI\XI(PI)\WEBSERVICE等等。
值得专门说一句,BW的数据抽取机制,确实是通过IDOC来实现的。
下面,咱们以SAP与SAP自概念数据传输的方式为例,向大伙儿说明如何利用IDOC。
本例中,咱们从一个系统(PIITST100)传输到另一个系统(BT3CLNT800)。
第一,从网上贴了下大体步骤,下面咱们依照那个步骤来操作:
创建IDOC:
第一步:
WE31创建IDOC所包含的字段. 第二步:
WE30创建IDOC把Segment分配给IDOC 第三步:
WE81 创建信息类型 第四步:
WE82 把IDOC类型与信息类型对应. 第五步:
WE57AssignMessage&IdocTypetoaFunctionModuleforProcess 第六步:
SM59DefineaRFCconnectionforIdoctransfer 第七步:
WE21DefineaPort(AssignaRFCdestinationwhichcreatedinSM59) 第八步:
WE41/42CreatProcessCode 第九步:
WE20DefineaPartnerProfiles(AlsocreataOutboundparameterswithPort,orInboundparameterswithProcesscode)管理IDOC:
WE02 显示IDOC,可以根据时间,IDOC类型查找IDOC,查看成功,出错信息。
WE46 IDOC管理(出\入) WE60 IDOC类型文档(可以查看IDOC结构,和每个字段的描述. WE19 根据IDOC号进行IDOC处理,可以修改IDOC值进行补发动作,处理分为内向和外向。
消息配置:
WE20配置伙伴消息进和出IDOC类型 WE21配置伙伴。
以下操作在发送方:
1.创建IDOC类型的段(WE31)
IDOC类型的字段,意思说咱们都要传递那些数据。
咱们那个地址只传递3个字段的数据。
2.创建IDOC类型,并把段分派给IDOC类型(WE30)
新建IDOC类型,点击
,将适才创建的段分派给IDOC类型,
3.创建消息类型(WE81)
消息类型是传递消息的大体单元,所有的消息传递都是通过消息类型来操作的。
那个地址咱们只概念消息类型的名称。
4.将IDOC类型分派给消息类型(WE82)
5.概念RFC连接(SM59)
源系统:
目标系统:
6.概念端口(WE21)
那个地址概念目标系统的端口,概念事物性RFC
7.保护伙伴参数(WE20)
咱们为源系统保护出站参数。
第一创建逻辑系统,在SALE中,作为合作伙伴编号
以下内容为接收方系统完成:
8.依照前面的步骤,在接收方,创建相同的消息类型
9.设置入站处置代码(WE42)
咱们利用FUNCTIONMUDULE来处置数据。
需要概念入站处置代码,再分派给进站参数
第一创建FM,咱们从标准的IDOCFM“BAPI_IDOC_INPUT1”复制一个咱们自己的,逻辑咱们自己写,只取其参数,代码如下。
(具体创建FM的方式略)
functionzflowtest.
*"----------------------------------------------------------------------
*"*"Localinterface:
*"IMPORTING
*"VALUE(INPUT_METHOD)LIKEBDWFAP_PAR-INPUTMETHD
*"VALUE(MASS_PROCESSING)LIKEBDWFAP_PAR-MASS_PROC
*"EXPORTING
*"VALUE(WORKFLOW_RESULT)LIKEBDWF_PARAM-RESULT
*"VALUE(APPLICATION_VARIABLE)LIKEBDWF_PARAM-APPL_VAR
*"VALUE(IN_UPDATE_TASK)LIKEBDWFAP_PAR-UPDATETASK
*"VALUE(CALL_TRANSACTION_DONE)LIKEBDWFAP_PAR-CALLTRANS
*"TABLES
*"IDOC_CONTRLSTRUCTUREEDIDC
*"IDOC_DATASTRUCTUREEDIDD
*"IDOC_STATUSSTRUCTUREBDIDOCSTAT
*"RETURN_VARIABLESSTRUCTUREBDWFRETVAR
*"SERIALIZATION_INFOSTRUCTUREBDI_SER
*"EXCEPTIONS
*"WRONG_FUNCTION_CALLED
*"----------------------------------------------------------------------
data:
gt_zflowdbtypezflowdboccurs0withheaderline,
gt_zflowtypezflowoccurs0withheaderline.
*SETRETURN_VARIABLESVALUE
readtableidoc_contrlindex1.
return_variables-doc_number=idoc_contrl-docnum.
return_variables-wf_param='Processed_IDOCs'.
appendreturn_variables.
*SETIDOC_STATUSVALUE.
clearidoc_status.
idoc_status-status='53'.
idoc_status-docnum=idoc_contrl-docnum.
idoc_status-repid=sy-repid.
appendidoc_status.
*READEDIDD
loopatidoc_data.
caseidoc_data-segnam.
when'ZFLOW'.
moveidoc_data-sdatatogt_zflow.
endcase.
appendgt_zflow.
endloop.
*PROCESSINGDATA
loopatgt_zflow.
gt_zflowdb-bukrs=gt_zflow-bukrs.
gt_zflowdb-gjahr=gt_zflow-gjahr.
gt_zflowdb-wrbtr=gt_zflow-wrbtr.
appendgt_zflowdb.
endloop.
insertzflowdbfromtablegt_zflowdb.
endfunction.
创建同意数据的数据表ZFLOWDB:
将刚创建的FM添加到进站函数模块列表中(BD51)
下面咱们开始创建进站处置代码:
(WE42)
概念逻辑信息:
10.分派FM到消息和IDOC类型(WE57)
11.保护伙伴参数文件(WE20)
12.在发送端效劳器新建一下程序,执行:
reportztestidoc.
data:
g_idoc_ctllikeedidc,
g_zflowlikezflow.
data:
gi_ret_ctllikeedidcoccurs0,
gi_idoc_datalikeediddoccurs0withheaderline.
*BUILDIDOC_CTLRECORD
performbuild_idoc_ctl.
*BUILDICOC_SEGMENTDATA
performbuild_idoc_seg.
*CALLFUNCTIONANDCREATEIDOC
performcreate_idoc.
*&---------------------------------------------------*
*&FormCREATE_IDOC
*&---------------------------------------------------*
*text
*----------------------------------------------------*
*-->p1text
*<--p2text
*----------------------------------------------------*
formcreate_idoc.
callfunction'MASTER_IDOC_DISTRIBUTE'
exporting
master_idoc_control=g_idoc_ctl
*OBJ_TYPE=''
*CHNUM=''
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
.
ifsy-subrc<>0.
MESSAGEIDSY-MSGIDTYPESY-MSGTYNUMBERSY-MSGNO
WITHSY-MSGV1SY-MSGV2SY-MSGV3SY-MSGV4.
else.
commitwork.
endif.
endform."CREATE_IDOC
*&---------------------------------------------------*
*&FormBUILD_IDOC_CTL
*&--------------------------------------------------*
*text
*----------------------------------------------------*
*-->p1text
*<--p2text
*----------------------------------------------------*
formbuild_idoc_ctl.
*TYPE
g_idoc_ctl-idoctp='ZFLOWMON'."IDOCTYPE
g_idoc_ctl-mestyp='ZFLOWMSG'."MESSAGETYPE
*RECEIVER
g_idoc_ctl-rcvprt='LS'."PARTNERTYPE
g_idoc_ctl-rcvprn='B3TCLNT800'."PARTNERNO
*SENDER
g_idoc_ctl-sndprt='LS'."PARTNERTYPE
g_idoc_ctl-sndprn='PIITST100'."PARTNERNO
endform."BUILD_IDOC_CTL
*&---------------------------------------------------*
*&FormBUILD_IDOC_SEG
*&---------------------------------------------------*
*text
*----------------------------------------------------*
*-->p1text
*<--p2text
*----------------------------------------------------*
formbuild_idoc_seg.
*HEADDATA
gi_idoc_data-segnam='ZFLOW'."SEGMENTNAME
gi_idoc_data-segnum=1."SEGMENTNO
g_zflow-bukrs='1003'.
g_zflow-gjahr='2010'.
g_zflow-wrbtr='1000'.
moveg_zflowtogi_idoc_data-sdata.
appendgi_idoc_data.
gi_idoc_data-segnam='ZFLOW'."SEGMENTNAME
gi_idoc_data-segnum=2."SEGMENTNO
g_zflow-bukrs='1004'.
g_zflow-gjahr='2010'.
g_zflow-wrbtr='1001'.
moveg_zflowtogi_idoc_data-sdata.
appendgi_idoc_data.
endform."BUILD_IDOC_SEG
通过WE02检查执行结果:
发送方:
双击各个项目能够看到明细
同意方:
查询表结果:
此刻咱们看到,咱们将数据从一个系统传输到了另一个系统,继而,咱们基于这些数据成立应用。