IDOC配置手册.docx
《IDOC配置手册.docx》由会员分享,可在线阅读,更多相关《IDOC配置手册.docx(27页珍藏版)》请在冰豆网上搜索。
IDOC配置手册
IDOC配置手册
1.自建IDOC类型
1.1首先创建用来记录增量发送时间戮的自建表ZIDOC_LOG,结构如下图:
通过自建表来记录IDOC发送的时间戳,有一定的漏单危险,推荐每次取值设置的时间为当前时间往前一段时间来避免因为多次IDOC发送过程中遗漏的记录。
假如想统计或查询已发记录,可以通过自建表来保存已发送信息。
1.2WE31定义自定义段ZMKAL(用于自定义IDOC类型发布生产版本),开发完成后可设置批准,表示开发完成,如需修改则需要取消批准。
1.3WE30定义基本类型ZMKAL_IDOC,将刚才定义的段ZMKAL挂在此类型下,开发完成后可设置版本,表示开发完成,如需修改则需要取消发布。
1.4WE81定义消息类型MKAL_IDOC。
1.5WE82把基本类型MKAL_IDOC分配给消息类型MKAL_IDOC。
1.6定义自定义IDOC类型所需的结构ZMKAL_LINE。
表结构,ZMKAL_TYP,对应行类型结构为ZMKAL_LINE
1.7创建发送生产版本IDOC用的函数:
ZMKAL_IDOC_SEND,
源代码如下,参数、异常定义见函数开头说明
FUNCTION zmkal_idoc_send .
*"----------------------------------------------------------------------
*"*"Local interface:
*" TABLES
*" ZMKAL TYPE ZMKAL_TYP
*" EXCEPTIONS
*" NO_IDOC
*" NO_MODEL
*"----------------------------------------------------------------------
*variables of general interest
DATA:
*control record for the IDoc
idoc_control LIKE edidc,
*data records for the IDoc
t_idoc_data LIKE edidd OCCURS 0 WITH HEADER LINE,
*table for the IDocs created by MASTER_IDOC_CONTROL
t_comm_control LIKE edidc OCCURS 0 WITH HEADER LINE,
*partner type for logical system
c_partner_type_logical_system LIKE edidc-rcvprt,
*help variable for the check if an IDoc has to be created
h_create_idoc.
* variables specific for this example
DATA:
* field strings with IDoc segment structure
e1xmkal TYPE zmkal_line,
* data to be put to the control record
c_message_type LIKE edidc-mestyp VALUE 'ZMKAL_IDOC',
c_base_idoc_type LIKE edidc-idoctp VALUE 'ZMKAL_IDOC',
* segment types to be put to the data record table
c_header_segtyp LIKE edidd-segnam VALUE 'ZMKAL'.
* check if an IDoc has to be created, read the distribution model
CALL FUNCTION 'ALE_MODEL_DETERMINE_IF_TO_SEND'
EXPORTING
message_type = c_message_type
* SENDING_SYSTEM = ' '
* RECEIVING_SYSTEM = ' '
* VALIDDATE = SY-DATUM
IMPORTING
idoc_must_be_sent = h_create_idoc.
* exceptions
* own_system_not_defined = 1
* others = 2.
IF h_create_idoc IS INITIAL.
raise no_model.
* no message flow maintained in the model, nothing to do
EXIT.
ENDIF.
* put the application header record to the IDoc
LOOP AT zmkal.
MOVE-CORRESPONDING zmkal TO e1xmkal.
* append record to IDoc data table
t_idoc_data-segnam = c_header_segtyp.
t_idoc_data-sdata = e1xmkal.
APPEND t_idoc_data.
ENDLOOP.
idoc_control-mestyp = c_message_type.
idoc_control-idoctp = c_base_idoc_type.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
* in update task "if application document is posted in update task
EXPORTING
master_idoc_control = idoc_control
TABLES
communication_idoc_control = t_comm_control
master_idoc_data = t_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.
* A commit work has to be done. It could also be done in the calling
* application.
COMMIT WORK.
READ TABLE t_comm_control INDEX 1.
IF sy-subrc <> 0.
raise no_idoc.
* no IDoc was created, you can react here, if neccessary
ENDIF.
ENDFUNCTION.
1.8程序中通过自建时间戳表来抓取增量数据,并调用函数zmkal_idoc_send。
传递数据表,生成IDOC。
2.扩展标准IDOC
2.1新建ZE1PLPOL_TEXT(用于扩展工艺路线IDOC基本类型,增加描述文本)
2.2创建扩展类型ZLOIROU02
衔接扩展到基本类型LOIROU02
选中段E1PLPOL,点击新建,将之前创建的段类型扩展至该段下。
2.3WE82将基本类型、扩展关联起来,通过定位查找基本类型LOIROU。
选中我们要扩展的行点复制
输入扩展类型ZLOIROU02
填充数据则需要通过前台发送TCODE,找到其相应的出口,进行填充扩展的数据。
3.创建接口端口和逻辑系统
3.1WE21,选择端口类型后点新建按钮
这里创建文件类型,idoc将保存到服务器上指定目录
3.2配置接收/发送IDOC系统
事物代码:
SALE
定义逻辑系统:
输入一个逻辑系统名及其描述:
定义rfc目标系统
以目标系统为sap系统为例:
选择创建新RFC链接
名称、描述和逻辑系统名一样,并输入地址/系统编号等
在登录标签页输入集团号、用户名、密码
保存退出
4.配置分布模型和伙伴参数
4.1维护分布模型和分布视图
创建一个模型试图,输入一个描述及其名称
选中新创建的视图,点击添加消息类型
输入发送方为当前SAP系统,接收方为目标系统(逻辑系统名),并填写消息类型LOIROU(工艺路线)
添加如下消息类型:
BOMMATBOM:
物料BOM
CREMAS供应商主数据分配
DEBMAS客户主数据分配
LOIBOM物料清单
LOIPLO计划订单
LOIROU路由
MATMAS物料主数据
ZMKAL_IDOCProductVersionIDOC
点击菜单中的生成伙伴参数文件
点击执行
退回之前屏幕可以点击更改伙伴参数文件来查看刚才生成的结果并适当修改,将目标端口改为ZFILE(XML格式则为ZXML),以将IDOC存为文件或XML
WE20,双击对应的消息类型
修改接收方端口
如果有扩展,则在扩展一项里输入扩展消息类型
5.激活指针
5.1完成了ALE模型配置,我们需要增量发送主数据(物料、供应商、客户、BOM)所以需要激活修改指针
BD50
选中需要通过增量发送的消息类型
BOMMATBOM:
物料BOM
CREMAS供应商主数据分配
DEBMAS客户主数据分配
MATMAS物料主数据
SALE配置筛选(限制工厂等条件)
6.设置筛选器
选择维护模型
双击筛选器
双击工厂填入值来限制工厂
确定即可
如果需要可以点击创建筛选组,来实现对不同情况下应用不同筛选条件
完成配置。
可以通过程序发送IDOC了
参见IDOC发送方法
7.异常处理
产生的IDOC可能会失败
状态02:
处理T-CODE:
BD83
状态30:
处理T-CODE:
WE14