点击蓝字 关注我们

前言

PO(/PI)是SAP公司的一个中间件产品,用来辅助连接SAP系统与外围系统. (当然外围系统之间也可以使用PO).

一般情况下,异步接口推荐使用PO来确保数据正确抵达目标系统.

PO可以完成一些数据内容转换,群发(一份数据发给多个异构系统),分发(数据区分特征发送给特定的系统)等功能.

本文主要介绍ABAP程序怎么调用PO接口发送数据,怎么处理PO传输过来的数据.

备注:本文只涉及PO与ECC 通过XI方式连接(通道配置如下图).

建立连接

建立ECC和PO的连接

详见连接

无峰,公众号:ABAP 技巧与实战PO系列之 配置ECC和PO的连接

注册接口对象

执行TCODE: SPROXY 找到PO和ECC的接口对象.如果找不到,有可能是系统连接问题(SM59中的G类型连接SAP_PROXY_ESR起关键作用).

展开树状结构,根据PO配置采用的命名规则, ECC的组件可能会存在与 PN_ERP 或PN_ECC节点下. (注: PN_<系统>可能只是部分项目的命名规范,具体情况需咨询PO顾问)

01

出站对象

出站指数据从ECC发出.

进一步展开查找与ECC相关的出站接口对象,如图. 其中的namespaces命名规范及service_consumers命名规范咨询PO顾问. SERVICE_CONSUMERS就是需要引入的PO接口对象.

如果对象未引入. 显示图标

对象已引入,显示图标

双击未引入的对象,进入向导功能,输入开发类,请求号及前缀(根据命名规范设置前缀,一般用Z<外部系统号>_ )

继续

点击完成后, 系统创建 service consumer 对象. 需要激活一下.确保激活正确,并看到响应的成功日志.

激活后,系统创建了一个类

ZTST_CO_SIO_ECC_TST_DEM002 ,类中包含方法SIO_ECC_TST_DEM002 . 调用该方法即可传输数据.

02

入站对象

入站指数据进入ECC系统

入站对象需要找service providers对象.激活步骤和出站对象一样.

03

对象修改后重新激活

一般情况下,激活service consumer 对象后,系统会自动激活该对象关联的data types 及message types对象(这两个对象涉及到数据字典定义),如果data types 发生过增删字段的调整, 调整过的对象前会显示图标

此时需要对该对象单独重新激活一下.

出站程序开发

出站指数据从ECC系统发出.出站程序主要就是调用出站对象的方法实现数据的发出.

01

数据定义部分

参考对象方法中的参数定义所需的变量及节点变量

02

数据赋值部分

按照嵌套结构 ls_output 给其中的节点赋值(赋值内容参考接口文档).

03

调用前准备部分

04

消息反馈

设置异步接口的PO反馈

详见链接

无峰,公众号:ABAP 技巧与实战PO系列之 消息的确认反馈

05

接口方法调用部分

图中通过变量拼凑的方法名,动态调用. 实际开发中,直接静态写入调用的方法即可. 调用后,可以读取并记录一下发送数据和GUID的关系.

入站程序开发

入站指数据从其它系统传入ECC系统.ECC作为数据的接收方. 入站代码主要写在入站代理对象的执行类中.

01

执行类

入站和出站有点不太一样. 需要找到入站对象的执行类

02

类方法

双击执行类,进入类方法, 在执行类的方法中写代码. (变量定义部分参考出站程序)

03

获取消息ID部分

获取PO的消息ID

04

数据处理部分

根据接口文档把接口传递得数据整理成调用BAPI或写入自定义表或产生IDOC所需得内容.

05

业务处理部分

需要注意的是,一般消息的定义方式都允许携带多个单据的信息,这里不建议直接调用BAPI产生后续单据(因为很难确保多单的一致性提交,消息重处理机制是按整个消息处理的).一般写入自定义表或IDOC, 后续程序处理自定义表中内容或IDOC产生业务单据.

06

提交或错误处理

如果调用BAPI发生了错误, 需要把错误传递给给消息监控器

(错误处理的类名,图中的变量CNS_CLASS_NAME,值来自于PO段定义的一个异常消息FALTAL MESSAGE 生成的对象)

备注: 如果写入自定义表后还需要处理, 则该处理程序需要监控并重处理报错的内容

消息监控

通过TCODE: SXI_MONITOR可以监控出站或入站消息的处理情况.

黑白旗(整体消息图标)表示已经成功发送给PO. 确认状态取决于是否请求PO反馈目标系统的实际发送情况.

详见链接

无峰,公众号:ABAP 技巧与实战PO系列之 消息的确认反馈

如果调用类时,不设置消息反馈. 则该状态无图标.入站消息.

如果在调用BAPI时,抛出了错误. 消息监控中会显示入站报错图标

整体消息图标

入站报错图标

01

查看报错信息

点击入站报错图标,可以看到BAPI报错的具体信息. 下图是所有状态的图标示例.

02

消息内容

双击监控器中的条目, 可以看到消息的具体内容,报错信息在这里也能通过点击其它相关节点看到.

03

消息重处理

对于错误的消息,可以在监控器中启动重新处理(选中错误消息行,重新启动).入站部分的BAPI报错原因解决后, 可以发起重处理,直到消息成功.

04

队列监控

ECC中的消息处理是通过qrfc实现的. SMQ1,SMQ2 在消息监控中也能起到一定的作用(主要用于重启报错的队列).

详见链接

无峰,公众号:ABAP 技巧与实战SAP小技巧 关于qRFC调用

总结

PO与ECC之间通讯是通过SPROXY产生的接口对象的代理类.

  • 出站程序处理调用代理类的方法.

  • 入站程序处理在代理类方法中写入代码.

即可完成ECC与PO数据得交互.

SXI_MONITOR作为消息监控器, 可以在ECC段确保数据与PO正确的交互.

异步接口的两个重要部分: 日志与报错重处理就是在消息监控器中实现的.

PO与ECC还可以通过RFC或IDOC方式交互数据. 但是一般项目中采用XI方式就足够了.该方式更灵活,可以通过代码实现一些更复杂的逻辑. 推荐使用.

通过XI中的代码产生IDOC也是一个推荐的方式,这样就可以启用IDOC的监控与重处理机制了.

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

(如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

请扫码加入公众号群,提问或参与话题讨论

PO系列之 PO接口在ECC中的开发相关推荐

  1. PO系列之 PO中使用webService

    一 前言 PO(/PI)是SAP公司的一个中间件产品,用来辅助连接SAP系统与外围系统. (当然外围系统之间也可以使用PO). 作为中间件,PO支持很多与系统交互的方式(RESTful, SOAP , ...

  2. PO系列之 Integration Builder集成生成器中的Party伙伴功能

    一 前言 PO(/PI)是SAP公司的一个中间件产品,用来辅助连接SAP系统与外围系统. (当然外围系统之间也可以使用PO). 一般情况下,异步接口推荐使用PO来确保数据正确抵达目标系统. PO通过企 ...

  3. 搞死SAP系统系列 让PO系统宕机

    点击蓝字 关注我们 一 前言 首先郑重申明:本文并不是想教唆你怎么把SAP服务器搞死. 虽然你确实可以从本文中学到搞死SAP服务器的技巧,但是如果因为你对公司的抱怨而导致你无意中使用了本文中的方式无意 ...

  4. 【SAP PO】SAP PO 接口配置完整教程之二REST服务对接

    SAP PO 接口配置完整教程之二REST服务对接 1.了解服务协议 1.1.服务通讯协议 1.2.具体接口协议 1.3.接口服务测试 2.PO端接口配置 2.1.PO端ESR配置 2.2.PO端IB ...

  5. java po vo bo是什么以及_JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么

    (一)O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据. 在O/R Mapping的世界 ...

  6. SAP PO上传异步接口(PO从对方中间表读取数据)

    导语:最近的项目上出现了一个奇奇怪怪的需求,上传接口居然不是外围系统给我传输,而是他数据丢到他的中间表,然后PO去取过来,真就他不动,我自己动. 下面说一下需要怎么来实现吧,其实跟PO下传接口写入中间 ...

  7. ddr4单颗粒最大_Zynq UltraScale +系列之“DDR4接口设计”

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 本篇主要针对Zynq UltraScale + MPSoC的DDR接口,从硬件设计的角度进行详细 ...

  8. 解读ASP.NET 5 MVC6系列(17):MVC中的其他新特性

    原文:解读ASP.NET 5 & MVC6系列(17):MVC中的其他新特性 (GlobalImport全局导入功能) 默认新建立的MVC程序中,在Views目录下,新增加了一个_Global ...

  9. rto初始化和计算_TCP系列13—重传—3、协议中RTO计算和RTO定时器维护

    从上一篇示例中我们可以看到在TCP中有一个重要的过程就是决定何时进行超时重传,也就是RTO的计算更新.由于网络状况可能会受到路由变化.网络负载等因素的影响,因此RTO也必须跟随网络状况动态更新.如果T ...

最新文章

  1. GoldenGate的Logdump工具使用简介
  2. Shell编程中Shift的用法
  3. html2canvas如何在元素隐藏的情况下生成截图
  4. oracle group by用法
  5. 【01】网页中清除历史浏览记录能不能彻底删除浏览记录?
  6. redis client 2.0.0 pipeline 的list的rpop bug
  7. 正则表达式的贪婪模式、非贪婪模式、占有模式
  8. STM32 —— LIN
  9. 【计算机网络】FDM和TDM的传输总时间计算
  10. python机器学习案例系列教程——逻辑分类/逻辑回归LR/一般线性回归(softmax回归)
  11. 订单编号的数据类型是什么_电商仓储是如何进行发货的?拣货的原则是什么?...
  12. 力扣 面试题 08.04. 幂集
  13. 基于Python语言豆瓣电影数据挖掘与分析
  14. Win7系统安装详细教程步骤
  15. 加密的pdf文件如何解密?
  16. ABP文档 - Mvc 控制器
  17. 微软七月十四日发行四个安全补丁
  18. Matlab求解李雅普诺夫(Lyapunov)方程
  19. 最高效寻找重复数据,如何高效率的查找到数组中的重复值
  20. 建行找不到服务器或DNS错误,企业网上银行常见问题解答

热门文章

  1. 华为手机拍照那么厉害,为什么你却总拍不好?肯定是没调整这些设置
  2. 如何看待阿里云成立新零售事业部?
  3. NYOJ 71 独木舟上的旅行
  4. 3dmax文件格式转换——.max 转换为 .flt(解决转换后.flt没有纹理贴图的问题)
  5. 实验11-1-7 藏头诗 (15分)
  6. 网站建设服务器拼租服务器好还是独立服务器好
  7. 关于ADC芯片的选型
  8. 计算机在职双证博士的学校,双证在职博士招生院校有哪些?
  9. 3个字节转换为另外3个字节的简单加密算法
  10. dnf命令 (常用总结)