当前位置: 首页 > article >正文

SAP PI/PO Proxy2JDBC SQL_QUERY动态接口示例

目录

背景:

完整demo步骤:

IR:

ID:

SPROXY:

测试代码:

注意点:


背景:

中途临时帮客户项目做其他功能,项目上有部分开发项需要通过PO去第三方数据库取数,项目上的开发对PO不太熟,就帮忙抽空看了下,客户前期配的PO都是用的SELECT的方式,每个接口都配了一个PO,这种其实不太方便,因为每次调整字段都需要更新PI相关的配置,去激活调整SPROXY,挺麻烦的,也没办法实现一些需求,查了下官网,发现其实有一种更方便的方式,SQL_QUERY,于是做了个Demo供其参考。

感谢评论区朋友提醒,MM和OM的步骤在此示例中并不需要,结构都是一致的,配的话多此一举了。


以下为官方说明文档地址:

Configuring the Receiver JDBC Adapter | SAP Help Portal

项目中常见的用法是使用SELECT Statement,但是该方法目前我觉得有一些弊端:

  • 查询字段需要指定,返回字段也需要指定,一旦发生字段需求变更时,需要更改PI配置,不够灵活; 
  • 由于key中只能使用如下比较远算符,所以当我们需要对某个字段按照区间查询时,尽管可以使用多个key,但多个key之间是使用or进行关联,故无法实现区间查询;

 推荐的做法,使用SQL_QUERY Statement进行查询,使用该方法的一些优点:

  • PI结构简单,无需指定具体查询字段,将查询信息作为sql传入即可;
  • 可以使用复杂的原生sql进行各种复杂操作进行查询,可以配合$PARAMETERS$变量实现动态查询,也可以直接将动态查询条件在SAP端处理好拼接在sql中;
  • 后续字段变更不受任何影响,只需改变sql即可;

完整demo步骤:

IR:

注意点:返回的结构名需要在请求结构名原封不动的基础上,追加_response,注意下图黄色部分

以下Message Mapping和Operation Mapping的步骤不需要,除非SAP端的请求结构和JDBC Receiver要求的结构不一致,但在此例中是多余的步骤。


ID:


SPROXY:


测试代码:


注意点:

因为返回的字段取决于查询的字段,所以按照正常方式需要将返回的字段定义在返回结构中,那动态sql的返回结构就没法定义,所以采用拼接的方式进行实现(不同数据库sql的拼接方式可能有所不同),考虑到实际字段内容中可能会包含分割符,所以采用RPAD补充长度的方式进行实现,将所有字段拼接后统一命名为RESULT,即可实现接口复用的效果,甚至可以一次性查询多张数据库表,拼接后的字符串在SAP端按照规则拆分即可,拆分的方式可以使用现成的标准函数进行解析,此处不在赘述。

以上。


http://www.kler.cn/a/404878.html

相关文章:

  • Elasticsearch-Elasticsearch-Rest-Client(三)
  • Ubuntu20.04从零安装IsaacSim/IsaacLab
  • batchnorm与layernorn的区别
  • NIO 与传统 IO:深入理解与应用场景
  • 【Linux】【Shell】Shell 基础与变量
  • C/C++中有符号的类型、无符号类型之间的转换
  • H.264/H.265播放器EasyPlayer.js视频流媒体播放器关于websocket1006的异常断连
  • 视频流媒体播放器EasyPlayer.js无插件直播流媒体音视频播放器Android端webview全屏调用无效问题
  • Hello-Go
  • 腾讯云单元化架构体系介绍
  • 深入探索Solana链上的Meme生态:创新、潜力与挑战#区块链开发#dapp开发
  • xml和xpath
  • C# BitmapSource小节
  • TensorFlow如何调用GPU?
  • 【Linux学习】【Ubuntu入门】1-7 ubuntu下磁盘管理
  • 学习路之phpstudy--安装mysql5.7后在my.ini文件中无法修改sql_mode
  • 嵌入式实验报告:家用计时器
  • MFC工控项目实例三十一模拟量转化为工程量
  • Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系
  • 从 IDC 到云原生:稳定性提升 100%,成本下降 50%,热联集团的数字化转型与未来展望
  • 【MQTT.fx 客户端接入 阿里云平台信息配置】
  • 湘潭大学软件工程算法设计与分析考试复习笔记(二)
  • 【FFmpeg】FFmpeg 内存结构 ③ ( AVPacket 函数简介 | av_packet_ref 函数 | av_packet_clone 函数 )
  • 【Unity】网格系统:物体使用网格坐标定位
  • ceph 18.2.4二次开发,docker镜像制作
  • 【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境