IDOC接口SAP间数据传递.docx

上传人:b****5 文档编号:27921199 上传时间:2023-07-06 格式:DOCX 页数:17 大小:453.03KB
下载 相关 举报
IDOC接口SAP间数据传递.docx_第1页
第1页 / 共17页
IDOC接口SAP间数据传递.docx_第2页
第2页 / 共17页
IDOC接口SAP间数据传递.docx_第3页
第3页 / 共17页
IDOC接口SAP间数据传递.docx_第4页
第4页 / 共17页
IDOC接口SAP间数据传递.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

IDOC接口SAP间数据传递.docx

《IDOC接口SAP间数据传递.docx》由会员分享,可在线阅读,更多相关《IDOC接口SAP间数据传递.docx(17页珍藏版)》请在冰豆网上搜索。

IDOC接口SAP间数据传递.docx

IDOC接口SAP间数据传递

下面,咱们以SAP与SAP自概念数据传输的方式为例,向大伙儿说明如何利用IDOC。

本例中,咱们从一个系统(BI5CLNT202)将SFLIGHT的数据传输到另一个系统(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类型的字段,是组成MESSAGE的大体单位,咱们那个地址按关键值和非关键值分为2部份:

ZSEG_FLY01

ZSEG_FLY02:

创建完成后,能够通过菜单:

EDIT->SetRelease来发布SEGMENT。

2.创建IDOC类型,并把段分派给IDOC类型(WE30)

新建IDOC类型,点击

,将适才创建的段ZSEG_FLY01分派给根节点,将ZSEG_FLY02作为子节点分派给ZSEG_FLY01。

并将ZSEG_FLY01设置为强制,数量从1-9999999;将ZSEG_FLY02,设置为非强制,数量从1-1

最后的成效如下:

3.创建消息类型(WE81)

消息类型是传递消息的大体单元,所有的消息传递都是通过消息类型来操作的。

那个地址咱们只概念消息类型的名称。

4.将IDOC类型分派给消息类型(WE82)

5.概念RFC连接(SM59)

概念目标系统的链接:

6.概念端口(WE21)

那个地址概念目标系统的端口,概念事物性RFC,将RFCDestination概念为方才创建的系统链接

创建逻辑系统:

(SALE)

SALE->BasicSetting->LogicalSystem->DefineLogicalSystem

若是本系统的RFC链接也是第一次创建,还需要将逻辑系统分派到CLINET。

7.保护伙伴参数(WE20)

咱们为源系统保护出站参数。

将前面创建的逻辑系统作为合作伙伴编号,点击OutputParameters中的

按钮,添加出站处置参数:

以下内容为接收方系统完成:

8.依照前面的步骤,在接收方,创建相同的SEGMENT/IDOCTYPE/MESSAGETYPE等,和SM59概念RFC链接

9.设置入站处置代码(WE42)

第一,创建同意数据的表,从SFLIGHT复制:

 

咱们利用FUNCTIONMUDULE来处置数据。

需要概念入站处置代码,再分派给进站参数

第一创建FM,咱们从标准的IDOCFM“BAPI_IDOC_INPUT1”复制一个咱们自己的,逻辑咱们自己写,只取其参数,代码如下。

(具体创建FM的方式略)

FUNCTIONZADDFLYS.

*"----------------------------------------------------------------------

*"*"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_zzsflighttypeZZSFLIGHToccurs0withheaderline,

wa_fly01likeZSEG_FLY01,

wa_fly02likeZSEG_FLY02.

*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'ZSEG_FLY01'.

clear:

wa_fly01,wa_fly02.

moveidoc_data-sdatatowa_fly01.

when'ZSEG_FLY02'.

moveidoc_data-sdatatowa_fly02.

move-correspondingwa_fly01togt_zzsflight.

move-correspondingwa_fly02togt_zzsflight.

appendgt_zzsflight.

endcase.

endloop.

*PROCESSINGDATA

insertzzsflightfromtablegt_zzsflight.

ENDFUNCTION.

将刚创建的FM添加到进站函数模块列表中(BD51)

下面咱们开始创建进站处置代码:

(WE42)

依照下面屏幕概念Processcode:

保留后,选择咱们适才创建的FM:

保留后,创建Processcode的消息类型:

10.分派FM到消息和IDOC类型(WE57)

11.保护伙伴参数文件(WE20)

12.在发送端效劳器新建一下程序,执行:

*&---------------------------------------------------------------------**& Report  ZTESTIDOC*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT  ZTESTIDOC.data:

 wa_idoc_ctl   like edidc,      wa_fly01      like zseg_fly01,      wa_fly02      like zseg_fly02.data:

 gt_ret_ctl    like edidc   occurs 0,      gt_idoc_data  like edidd   occurs 0 with header line,      gt_sflight    like sflight occurs 0 WITH HEADER LINE.* BUILD IDOC_CTL RECORDperform build_idoc_ctl.* BUILD ICOC_SEGMENT DATAperform build_idoc_seg.* CALL FUNCTION AND CREATE IDOCperform create_idoc.*&---------------------------------------------------**&      Form  CREATE_IDOC*&---------------------------------------------------**       text*----------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------*form create_idoc.  call function 'MASTER_IDOC_DISTRIBUTE'    exporting      master_idoc_control                  = wa_idoc_ctl*     OBJ_TYPE                             = ''*     CHNUM                                = ''    tables      communication_idoc_control           = gt_ret_ctl      master_idoc_data                     = gt_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 ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  else.    commit work.  endif.endform.                    " CREATE_IDOC*&---------------------------------------------------**&      Form  BUILD_IDOC_CTL*&--------------------------------------------------**       text*----------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------*form build_idoc_ctl.* TYPE  wa_idoc_ctl-idoctp = 'ZDOCTY_FLY'.     "IDOC TYPE (WE30)  wa_idoc_ctl-mestyp = 'ZMSG_FLY'.      "MESSAGE TYPE (WE81)* RECEIVER  wa_idoc_ctl-rcvprt = 'LS'.          "PARTNER TYPE  wa_idoc_ctl-rcvprn = 'B3TCLNT800'.   "PARTNER NO* SENDER  wa_idoc_ctl-sndprt = 'LS'.          "PARTNER TYPE  wa_idoc_ctl-sndprn = 'BI5CLNT202'.  "PARTNER NOendform.                    " BUILD_IDOC_CTL*&---------------------------------------------------**&      Form  BUILD_IDOC_SEG*&---------------------------------------------------**       text*----------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------*form build_idoc_seg.  select * from sflight into table gt_sflight.*  loop at gt_sflight.    gt_idoc_data-segnum = gt_idoc_data-segnum + 1.         "SEGMENT NO    gt_idoc_data-segnam = 'ZSEG_FLY01'.                    "SEGMENT NAME    MOVE-CORRESPONDING gt_sflight to wa_fly01.    move wa_fly01 to gt_idoc_data-sdata.    append gt_idoc_data.    gt_idoc_data-PSGNUM = gt_idoc_data-segnum.    gt_idoc_data-segnum = gt_idoc_data-segnum + 1.    gt_idoc_data-segnam = 'ZSEG_FLY02'. "SEGMENT NAME    MOVE-CORRESPONDING gt_sflight to wa_fly02.    move wa_fly02 to gt_idoc_data-sdata.    append gt_idoc_data.  endloop.endform.                    " BUILD_IDOC_SEG

通过WE02检查执行结果:

发送方:

双击各个项目能够看到明细

双击查看明细:

同意方:

Notes:

那个地址,接收方显示状态64,表示数据已成功同意,但还需要将数据传送到应用程序

因为接口此刻状态为64,咱们还要执行一个程序,来触发数据的传输:

TCODE:

BD20(或程序:

RBDAPP01;)

查看表ZZSFLIGHT的数据,与源系统数据一致

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1