SAP PO IDOC开发上(SAP PO 开发十一)
开发环境: S4 HANA 1809,Process Orchestration 750, SoapUI Pro 5.1.2.
SAP IDOC协议,很老的东西了,记得2001年项目上就听说过,在比较老的系统上,使用很广泛,一直没机会接触,这次终于开始深入的了解。
IDOC在协议中所处的位置:IDOC底层是基于RFC(SOCKET长连接),可以说,IDOC其实就是一种RFC的高级应用,SAP在RFC的基础上提供了一整套封装的功能,来实现用IDOC传输和处理数据。
计划实现下面的例子,IDOC入站,IDOC出站:
我们先开始第一个接口JKT001(入站,外围程序传数据给SAP)。
一、IDOC在SAP端的配置如下:
1、WE31 定义段
2、WE30 定义段的基本类型 BASIC TYPE
3、WE81 定义message类型
4、WE82 绑定上面的基本类型与消息类型
5、建一个自己的处理函数
6、BD51 设置一下这个函数
7、WE57 绑定基本类型、消息类型、函数名称
8、WE42 定义入站的处理逻辑(由自己的函数模块处理)
9、WE20 设置错误消息
二、IDOC在SAP端的调试:
1、WE02中可以看到全部IDOC的消息记录
2、WE19中可以发起IDOC的数据包测试,输入这个ID,执行,改里面的报文数据,点“标准入站”测试。
三、IDOC入站方式中自己的函数:
在IDOC的配置中,在ABAP层,需要有一个自己的函数,处理接到的报文消息,我们看看这个自己函数的处理逻辑:
1、函数输入1:IDOC_CONTRL内表,该表存放IDOC相关的控制信息(DOCNUM)
2、函数输入2: IDOC_DATA内表,存放IDOC的数据(DOCNUM)
3、自己程序用上面的数据,保存到自己的表中
4、函数输出: IDOC_STATUS内表,存放这个函数调用完成后的状态和消息
这个函数入口参数的格式是SAP规定好了的,我们只要遵从这些数据格式就可以直接使用,我们仔细看看这个函数的入口和出口参数:
*"*"本地接口:
*" 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
为了便于理解,我把何喜同学的标准函数改了一个最简化版的IDOC入站函数,把传入系统的数据(物料和物料描述2个字段,放到自己的表里):
TABLES ZJKT001T.
DATA GS_ZJKT001T LIKE ZJKT001T.LOOP AT IDOC_DATA.GS_ZJKT001T = IDOC_DATA-SDATA.
INSERT ZJKT001T FROM GS_ZJKT001T.IF SY-SUBRC EQ 0.COMMIT WORK AND WAIT .IDOC_STATUS-DOCNUM = IDOC_DATA-DOCNUM.IDOC_STATUS-STATUS = '53'.IDOC_STATUS-MSGTY = 'S'.IDOC_STATUS-MSGV1 = '保存数据成功'.ELSE.ROLLBACK WORK .IDOC_STATUS-DOCNUM = IDOC_DATA-DOCNUM.IDOC_STATUS-STATUS = '51'.IDOC_STATUS-MSGTY = 'E'.IDOC_STATUS-MSGV1 = '保存数据错误'.ENDIF.APPEND IDOC_STATUS TO IDOC_STATUS.ENDLOOP.
OK,用WE19发一条测试数据,哦,保存到了自己的透明表里。
以上 S4端的IDOC配置完毕。
下面我们开始PO上的配置,这是我们的概念图,IDOC是单向的,异步模式,所以我们在常规的同步双向配置中,可以省略好多配置。
有了基本概念,实际配置其实比较简单,我是参考的网上文章:PI-AAE-IDOC(SOAP2IDOC)EC.pdf :
第一步,把S4里的IDOC函数导入进来(这是S4方的数据)
第二步,建DT、MT、SI(这是外围系统方的数据定义):
注意这个outbound概念,我理解了一年时间,终于画出了上面的概念图,至此PO无惑。
第三步,建一个MM、一个OM:
MM这里就是IDOC最麻烦的地方了,参考的网上文章:PI-AAE-IDOC(SOAP2IDOC)EC.pdf,十几个IDOC的控制字段全部要赋值。
OM单向的,这里也要注意,何喜同学配了一天没通也是在这里,注意右边的Target, 需要把从S4引用的IDOC对象,拖过来:
最后在IB里的配置:
S4方的CC接收通道参数:
外围系统方的CC发送通道参数,最节约人天的WebSercice SOAP协议:
最后的IC配置:
全部完成,我们测试一下数据,S4收到了数据,并存到了我们的自定义表中:
SAP PO IDOC开发上(SAP PO 开发十一)相关推荐
- 我的第一个SAP PROXY ABAP Program(SAP PO 开发五)
登陆PO服务器,启动JAVA客户端三步(SAP PO 开发一) 搭建一个WebService接口环境(SAP PO 开发 二) 用SAP PO连通一个WebService接口(SAP PO 开发 三) ...
- 如何把本地开发的 SAP UI5 应用部署到 ABAP 服务器上
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- SAP UI5 应用开发教程之三十五 - 如何把本地开发的 SAP UI5 应用部署到 ABAP 服务器上试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- 资深SAP专家谈如何深入SAP开发
资深SAP专家谈如何深入SAP开发 详细信息:http://www.china-pub.com/209178 本书特色 本书内容丰富,涵盖了SAP 系统实施.集成过程中的众多技术专题,包括RFC 通信 ...
- 也谈SAP业务顾问如何避免被ABAP开发顾问怒打
也谈SAP业务顾问如何避免被ABAP开发顾问怒打 近期一个视频火了,说是中国平安一个产品经理和APP开发人员在办公室直接扭打起来.据说是因为该产品经理向程序员提出了一个需求,要求用户APP的主题颜色能 ...
- SAP UI5 应用开发教程之五十六 - SAP UI5 树控件(tree)的开发试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- 本地开发的 SAP UI5 应用,部署到 ABAP 服务器执行出错的问题分析
我使用 SAP UI5 Tools 的 CLI 工具,运行命令 npm run deploy 将 Visual Studio Code 里开发的 SAP UI5 应用,部署到 ABAP 服务器后,成功 ...
- SAP 2019 TechEd Key Note解读:云时代下SAP从业人员如何做二次开发?
刚刚过去的在巴塞罗那举行的2019 SAP TechEd,SAP照例向全球广大的SAP生态圈从业者们传达了一些重要的信息,其中一条为:Building Extensions for the Intel ...
- 岗位po是什么意思_敏捷开发团队中PO和SM角色介绍
通过前面几篇关于敏捷开发总体的相关介绍,相信大家对敏捷开发模式已经有了一个比较清晰的了解,后续会介绍一些比较细分的方面,结合我在敏捷开发实施过程当中的一些体会,来阐述自身对敏捷开发的认识. 敏捷开发中 ...
- SAP UI5 应用开发教程之八十三 - SAP UI5 的自动化测试套件页面的开发步骤介绍试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...
最新文章
- 罗斯蒙特电磁流量计8723说明书_罗斯蒙特8732EM电磁流量计变送器如何接线!
- 小甲鱼Python课程18课课后题
- leetcode--872. 叶子相似的树
- WinhexV13.2汉化版
- thinkphp5 判断数据是否存在_ThinkPHP 5.1 中间件中判断要访问的操作是否存在
- nuxt asyncData extendRoutes nuxtServerInit
- zabbix mysql pgsql_Zabbix 5.0 监控 PostgreSQL 数据库
- [语言]Webassembly
- iOS常用的第三方类库
- ARCGIS 二次开发可以参考的资源(长期更新)
- Linux下的目录简介
- SeaweedFS上手使用指南
- Android 实现基于RTMP视频播放
- nonebot2.0.0a16-qq机器人框架安装及搭建教程
- 破解版全能地图下载瓦片数据以及操作使用方法
- mysql sql语法解析器_Druid SQL 解析器概览
- 学习手机软件开发学什么,怎样学?
- win7开启uasp协议_Windows To Go安装使用手记
- 关于智能运维(AIOps)的学与思
- 音乐剧推荐-<<爱在思念的两端>>
热门文章
- 麦德龙中国正式引进高品质法国牛肉
- 计算机相关装备有哪些,DNF装备搭配计算器_官方网站_17173DNF专区_17173.com中国游戏门户站...
- qq三国单刀赴会服务器找不到,单刀赴会,收武器装备“图纸”,70-120等级,130级按套收,......
- KDD2020|PinnerSage:Pinterest推荐中的多模式用户嵌入框架
- 15首中秋诗词,有2首你肯定熟悉
- 使用Win 2003轻松建立森林间信任
- (dfs/dp)P2327 [SCOI2005]扫雷
- 微信实名认证是成年的,但游戏是未成年的,怎么改
- FPGA校招笔试题分析
- Sentinel vs Hystrix 对比,你怎么选?