IDOCs接口应用

更新时间:2023-05-07 13:38:42 阅读: 评论:0

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类型与信息类型对应.
  第五步:WE57 Assign Message & Idoc Type to a Function Module for Data Process
  第六步:SM59 Define a RFC connection for Idoc transfer
  第七步:WE21 Define a Port ( Assign a RFC destination which created in SM59 )
  第八步:WE41/42 Creat Process Code
  第九步:WE20 Define a Partner Profiles( Also creat a Outbound parameters with Port, or        Inbound parameters with Process code )
管理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)
我们利用FUNCTION MUDULE来处理数据。需要定义入站处理代码,再分配给进站参数
首先创建FM,我们从标准的IDOC FM “BAPI_IDOC_INPUT1”复制一个我们自己的,逻辑我们自己写,只取其参数,代码如下。(具体创建FM的方式略)
function zflowtest.
*"----------------------------------------------------------------------
*"*"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
*"----------------------------------------------------------------------

data: gt_zflowdb type zflowdb occurs 0 with header line,
      gt_zflow type zflow occurs 0 with header line.
* SET RETURN_VARIABLES VALUE
  read table idoc_contrl index 1.
  return_variables-doc_number = idoc_contrl-docnum.
  return_variables-wf_param = 'Procesd_IDOCs'.
  append return_variables.
* SET IDOC_STATUS VALUE.
  clear idoc_status.
  idoc_status-status = '53'.
  idoc_status-docnum = idoc_contrl-docnum.
  idoc_status-repid  = sy-repid.
  append idoc_status.
* READ EDIDD
  loop at idoc_data.
    ca idoc_data-gnam.
      when 'ZFLOW'.
        move idoc_data-sdata to gt_zflow.
    endca.
    append gt_zflow.
  endloop.
* PROCESSING DATA
  loop at gt_zflow.
    gt_zflowdb-bukrs = gt_zflow-bukrs.
    gt_zflowdb-gjahr = gt_zflow-gjahr.
    gt_zflowdb-wrbtr = gt_zflow-wrbtr.
    append gt_zflowdb.
  endloop.
  inrt zflowdb from table gt_zflowdb.
endfunction.

创建接受数据的数据表ZFLOWDB:
 
将刚创建的FM添加到进站函数模块列表中(BD51)
 
下面我们开始创建进站处理代码:(WE42)
 
定义逻辑信息:
 
10. 分配FM到消息和IDOC类型(WE57)
 
11. 维护伙伴参数文件(WE20)
 
 
12. 在发送端服务器新建一下程序,执行:
report ztestidoc .
data: g_idoc_ctl like edidc,
      g_zflow like zflow.
data: gi_ret_ctl like edidc occurs 0,
      gi_idoc_data like edidd occurs 0 with header line.
* BUILD IDOC_CTL RECORD
  perform build_idoc_ctl.
* BUILD ICOC_SEGMENT DATA
  perform build_idoc_g.
* CALL FUNCTION AND CREATE IDOC
  perform create_idoc.
*&---------------------------------------------------*
*&      Form  CREATE_IDOC
*&---------------------------------------------------*
*      text
*----------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------*
form create_idoc.
  call function '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
            .
  if sy-subrc <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  el.
    commit work.
  endif.
endform.                    " CREATE_IDOC
*&---------------------------------------------------*
*&      Form  BUILD_IDOC_CTL
*&--------------------------------------------------*
*      text
*----------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------*
form build_idoc_ctl.

本文发布于:2023-05-07 13:38:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/865740.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类型   处理   消息   定义   创建   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图