SAP IDOC开发
第一步:WE31 创建IDOC所包含的字段.
第二步:WE30 创建IDOC 把Segment分配给IDOC
第三步:WE81 创建信息类型
第四步:WE82 把IDOC类型与信息类型对应.
WE02 显示IDOC,可以根据时间,IDOC类型查找IDOC,查看成功,出错信息。
消息配置:
An IDoc is simply a data container that is used to exchange information between any two processes that can understand the syntax and semantics of the data. IDoc is not a process.
IDocs are stored in the database.
IDocs are independent of the sending and receiving systems.
IDocs are independent of the direction of data exchange.
Creating Segment : Tcode - WE31
When the data is sent out from the system, the process is called Outbound Process and the IDoc is known as Outbound IDoc.
When the data is coming in, the process is called Inbound Process and the IDoc is known as Inbound IDoc.
Creating the logical system
Go for New Entries
System Name : LOG2 prescription: Receiving System
Press Enter & Save it will ask for Request if you want new request create new request or press continue for transferring the objects.
Assigning Client to the Logical System:
Logical System : LOG1
and also
System : LOG2
Step 2) For RFC Creation:
Goto Tcode SM59 and Select R/3 Connects
Click on create Button
RFC Destination Name should be same as partner's logical system name and case sensitive to create the ports automatically while generating the partner profiles
Give the information for required fields:
RFC Destination : LOG2
Connection type : 3
Target Host : sappdc.wipro.com
User : Login user name5 s6 q6 o; y- O: [ g+ }- Z
Password :
Save this & Test it and Remote Login
Step 3) Goto Tcode BD64:
Click on the change button>Click on the create model view
Save this & press ok
Select just created model view
Goto add message type
Receiver : LOG2
Message type: ZAZHARMESS
Give Model View : LMOD
Partner system : LOG2
Execute this by pressing F8
It will gives you sending system port No: A00000000089 (Like)
5) Goto Tcode BD64:
Select the model view
Goto >Edit >model view > Distribute
Press ok & Press Enter.
Run your Zprogram
matnr LIKE mara-matnr,
mtart LIKE mara-mtart,
END OF imara.
DATA: wamas_con LIKE edidc,
imas_data LIKE edidd OCCURS 0 WITH HEADER LINE,
icom_con LIKE edidc OCCURS 0 WITH HEADER LINE.
PARAMETERS: e_matnr LIKE mara-matnr,
e_msgtyp LIKE edidc-mestyp,
e_rcvprn LIKE edidc-rcvprn.
* retrive app. data from DB
SELECT matnr mtart FROM mara INTO TABLE imara
WHERE matnr = e_matnr.
*Master idoc control record
wamas_con-rcvprt = 'LS'.
wamas_con-rcvprn = e_rcvprn.
wamas_con-idoctp = 'ZAZHARIDOC'.
wamas_con-mestyp = e_msgtyp.
* master idoc data records
LOOP AT imara.
imas_data-segnam = 'ZAZHARSEG'.
MOVE imara TO imas_data-sdata .
APPEND imas_data.
ENDLOOP.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
master_idoc_control = wamas_con
TABLES
communication_idoc_control = icom_con
master_idoc_data = imas_data.
COMMIT WORK.
ALE/IDOC Status Codes (outbound):
30 > IDoc ready for dispatch
29 >Error in ALE service Layer
12 >Dispatch ok
03 > Data passed to port ok.
Do the same step as you did in sending system
9 |9 S! c+ a {
> Creating IDoc
> Creating Message Type
> Defining the Logical System
1) Goto Tcode - we57
Module: Function module
Basic type:
Message type:
Direction: 2 (inbound)
2) Creating Inbound process code - we42
3) Verifying Idoc List Tcode - we05
62 >IDoc passed to application
53 >Application Document posted
----------------------实例------------------------------------------------
简而言之,IDOC是类似XML的一种SAP系统与其他系统的一种集成工具。
假设I04和I02是同一个集团下两个不同子公司的SAP系统,I04需要将其采购订单信息及时发送给I02。下面简单介绍IDOC的设置步骤,为了避免混淆,我的命名都比较特别。
1,设置IDOC Type.
(1) WE31,创建segment,类似于创建XML的结点及结点属性。
(2) WE30, 创建IDOC Type,定义结点间的相互逻辑关系.
先切换到编辑状态,然后点击New Entries,输入YPO即可。
(2) WE82,,关联Message Type和IDOC Type.
4,SALE,创建Logical System.
5,WE20,定义我们的Partner profile.
6,编程发送IDOC
设置了这么多,真累啊,总算可以写程序了,是不是很开心呢?
程序的思路就是,把每个IDOC结点按字符串形式逐个添加,而字符串的添加次序自然也体现了IDOC结点间的逻辑关系。代码如下,
*系统根据下面4行即可与WE20设置关联起来
ls_edidc-mestyp = 'YPO'. "Message Type
*添加IDOC结点
lt_edidd-segnam = 'YPOHEAD'."结点名称
CLEAR ls_pohead.
ls_pohead-bukrs = '0400'.
lt_edidd-sdata = ls_pohead. "结点内容
APPEND lt_edidd.
lt_edidd-segnam = 'YPOITEM'.
CLEAR ls_poitem.
ls_poitem-ebeln = '4001122334'.
ls_poitem-ebelp = '0001'.
ls_poitem-menge = '3'.
ls_poitem-meins = 'ST'.
lt_edidd-segnam = 'YPOITEM'.
ls_poitem-matnr = '000000000000009289'.
ls_poitem-menge = '5'.8 P( Y; S' _9 |
ls_poitem-meins = 'M'.
lt_edidd-sdata = ls_poitem.
APPEND lt_edidd.
master_idoc_control = ls_edidc "Export
TABLES
communication_idoc_control = lt_edidc "Import
master_idoc_data = lt_edidd "Export
EXCEPTIONS"
IF sy-subrc <> 0.
'; sender partner',ls_edidc-sndprn.
---------------------------------------实例----------------------------------Inbound Idoc
与上篇Outbound Idoc中的前两个步骤完全一样。
2,创建一个function:Y_IDOC_PO_PROCESS.
接下来就可以写入我们的代码,根据IDOC内容,创建相应的销售订单。为了简化,这里我们仅仅将其存到数据库表里面,请先创建两个表Y02_POHEAD和Y02_POITEM,字段参考WE31中的YPOHEAD和YPOITEM。然后写入下面代码:
ls_pohead TYPE y02_pohead,
RAISE wrong_function_called.
ENDIF.
LOOP AT idoc_contrl.
CLEAR: ls_pohead, lt_poitem[].
LOOP AT idoc_data WHERE docnum = idoc_contrl-docnum.
CASE idoc_data-segnam.
CLEAR: ls_chead, ls_pohead.
ls_chead = idoc_data-sdata.
WHEN 'YPOITEM'.
ls_citem = idoc_data-sdata.
lv_subrc = 0.
INSERT y02_pohead FROM ls_pohead.
INSERT y02_poitem FROM TABLE lt_poitem.
lv_subrc = sy-subrc.
ELSE. "订单号已经存在
lv_subrc = sy-subrc.
IF lv_subrc = 0.
CLEAR idoc_status.
idoc_status-docnum = idoc_contrl-docnum.
idoc_status-status = '53'. "IDOC处理成功
ELSE.
idoc_status-docnum = idoc_contrl-docnum.
idoc_status-status = '51'. "IDOC不成功
idoc_status-msgid = 'YMSG'.
ENDLOOP.
在编辑状态下,点击New Entries,填入函数名Y_IDOC_PO_PROCESS,Input Type=1即可。
点击New Entries,Function Module输入Y_IDOC_PO_PROCESS,其下的Type填写F;IDOC Type下的Basic Type填写YPOIDOC;Message Type填写YPO;Direction填写2(Inbound)。
(2)由于上面代码中控制了不能插入同样的采购单号,所以只有一个Inbound IDOC将处理成功(状态码53),其余将失败(状态码51)。只要新发送的IDOC赋于不同的采购单号即可避免。
SAP IDOC开发相关推荐
- SAP PO IDOC开发上(SAP PO 开发十一)
开发环境: S4 HANA 1809,Process Orchestration 750, SoapUI Pro 5.1.2. SAP IDOC协议,很老的东西了,记得2001年项目上就听说过,在比 ...
- SAP操作手册之 IDOC开发篇
点击蓝字 关注我们 一 前言 网上有一个介绍IDOC的文章, 讲的非常详细. 有兴趣的可以看一下. https://www.cnblogs.com/jiangzhengjun/p/4292135.ht ...
- SAP ETL开发规范
1 介绍 SAP Business Objects数据服务是一种提取,转换和加载(ETL)工具,用于在源环境和目标环境之间移动和操作数据. SAP数据服务提供了一个数据管理平台,可支持各种举措,包括 ...
- 我的第一个SAP PROXY ABAP Program(SAP PO 开发五)
登陆PO服务器,启动JAVA客户端三步(SAP PO 开发一) 搭建一个WebService接口环境(SAP PO 开发 二) 用SAP PO连通一个WebService接口(SAP PO 开发 三) ...
- 《SAP FIORI 开发入门》课程答疑 第二期
课程上线已经一个星期,本人也接到了同学们提出的一些问题.在这里把典型的问题的回答重新整理一下,帮助后来的同学. 再次放上课程的连接: SAP FIORI开发入门 希望老师能够再放开一章免费的课程. 已 ...
- SAP IDoc Post不成功,报错 - Conventional invoice verification no longer maintained as of Release 4.6-
SAP IDoc Post不成功,报错 - Conventional invoice verification no longer maintained as of Release 4.6- IDoc ...
- SAP IDoc Post不成功,报错 - A company code cannot be determined for LI 0000100061 –
SAP IDoc Post不成功,报错 - A company code cannot be determined for LI 0000100061 – IDoc#4096出现如下报错:A comp ...
- SAP IDoc 报错- Function module not allowed SPEIDOC_INPUT_DESADV1 –
SAP IDoc 报错- Function module not allowed SPEIDOC_INPUT_DESADV1 – 在公司间STO流程中,很多项目里实现了在外向交货单PGI之后,自动触发 ...
- SAP IDoc E1EDP04 Z8 数据错误之对策
SAP IDoc E1EDP04 Z8 数据错误之对策 对于公司间采购业务,很多项目启用STO,并且在发货方公司Billing过账的时候,SAP系统自动通过IDoc触发采购方的Invocie.这是SA ...
最新文章
- 高手讲解PHP遍历数组的方法
- 安装DNN4.6.2 source code出现的问题
- __invoke,try{}catch(){},microtime(),is_callable()
- 操作痕迹包括那些_高级消防设施操作员专题之:走近气体灭火系统
- Spark 和 MR 的区别: 多进程与多线程模型
- Python案例:飞船向右发射子弹
- iPhone 5今日大限已至!不升级全部变砖
- 80-10-015-原理-Java NIO-ByteBuffer
- linux查看程序中最耗时的代码,【Linux】CPU时间与处理器耗时
- 和媳妇加一起月薪三万五想换车了不知道x5养的起吗?
- LFYZOJ 104 Counting Swaps
- swift中Any,AnyObject,AnyClass的区别
- 华为荣耀手机指令代码大全_2020.10月《各价位华为、荣耀手机推荐》
- 【C语言】猜拳小游戏代码实现
- php做一个每天的考勤表,教你做一个酷毙的考勤表!|
- 内核特征码搜索 获取未导出函数
- 【六种解决思路尝试】VMware Workstation 无法连接到虚拟机。
- Large scale evolutionary optimization using cooperative coevolution
- 罗马数字与阿拉伯数字的相互转换
- div浮动到网页最上层