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

目录

背景:

完整demo步骤:

IR:

ID:

SPROXY:

测试代码:

注意点:


背景:

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


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

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,注意下图黄色部分


ID:


SPROXY:


测试代码:


注意点:

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

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/61067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【汇编语言】数据处理的两个基本问题(三) —— 汇编语言的艺术:从div,dd,dup到结构化数据的访问

文章目录 前言1. div指令1.1 使用div时的注意事项1.2 使用格式1.3 多种内存单元表示方法进行举例1.4 问题一1.5 问题一的分析与求解1.5.1 分析1.5.2 程序实现 1.6 问题二1.7 问题二的分析与求解1.7.1 分析1.7.2 程序实现 2. 伪指令 dd2.1 什么是dd?2.2 问题三2.3 问…

模型的评估指标——IoU、混淆矩阵、Precision、Recall、P-R曲线、F1-score、mAP、AP、AUC-ROC

文章目录 预测框的预测指标——IoU(交并比)分类预测指标混淆矩阵(Confusion Matrix,TP、FP、FN、TN)Precision(精度)Recall(召回率)P-R曲线F1-scoreTPR、TNR、FPR、FNRROC曲线下面积…

轻量云服务器:入门级云计算的最佳选择

在云计算领域,轻量云服务器逐渐成为小型企业、个人开发者和初创公司关注的热点。它凭借高性价比、简单易用和稳定性能,正在改变传统的服务器部署方式。本文将详细解析轻量云服务器的定义、优势、适用场景及如何选择最佳方案,帮助您全面了解这…

【初阶数据结构篇】归并排序、计数排序

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…

移远通信5G RedCap模组RG255C-CN通过中国电信5G Inside终端生态认证

近日,移远通信5G RedCap模组RG255C-CN荣获中国电信颁发的5G Inside终端生态认证证书。这表明,该产品在5G基本性能、网络兼容性、安全特性等方面已经过严格评测且表现优异,将进一步加速推动5G行业终端规模化应用。 中国电信5G Inside终端生态认…

Towards Reasoning in Large Language Models: A Survey

文章目录 题目摘要引言什么是推理?走向大型语言模型中的推理测量大型语言模型中的推理发现与启示反思、讨论和未来方向 为什么要推理?结论题目 大型语言模型中的推理:一项调查 论文地址:https://arxiv.org/abs/2212.10403 项目地址: https://github.com/jeffhj/LM-reason…

Android Studio | 修改镜像地址为阿里云镜像地址,启动App

在项目文件的目录下的 settings.gradle.kts 中修改配置,配置中包含插件和依赖项 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https://maven.aliyun.com/repository/releases")}maven { urlu…

php 字符串与变量

在双引号字符串中解析变量的速度通常是最快的,因为它不需要额外的操作或函数调用。‌ 在PHP中,双引号字符串("")可以直接解析变量,而不需要进行额外的操作或调用函数,因此速度最快。例如&#x…

蓝队基础之网络七层杀伤链:从识别到防御的全方位策略

内容预览 ≧∀≦ゞ 蓝队基础之网络七层杀伤链:从识别到防御的全方位策略声明概述1. 企业网络架构:分区与策略管理2. 外部攻击面识别与收敛3. 身份管理:构建身份验证与访问控制4. 网络杀伤链模型:攻击者的七大步骤5. 安全监控与管理…

[AI] 从“进取号”到现代 NLP:机器语言理解的挑战与未来

在《星际迷航》系列中,“进取号”上的计算机以其即时、准确的回应成为人机交互的“北极星”,被视为完美智能助手的理想形象。这种理想不仅吸引了科幻迷,也激励了人工智能研究者。机器能否像“进取号”的计算机一样理解并回应复杂问题,仍是人工智能(AI)和自然语言处理(NL…

Python | Leetcode Python题解之第564题数组嵌套

题目&#xff1a; 题解&#xff1a; class Solution:def arrayNesting(self, nums: List[int]) -> int:ans, n 0, len(nums)for i in range(n):cnt 0while nums[i] < n:num nums[i]nums[i] ni numcnt 1ans max(ans, cnt)return ans

2024-11-17 -MATLAB三维绘图简单实例

1. x -1:0.05:1; y x; [X, Y] meshgrid(x, y); f (X, Y) (sin(pi * X) .* sin(pi * Y)) .^ 2.*sin(2.*X2.*Y); mesh(X, Y, f(X, Y)); % 调用函数f并传递X和Y xlabel(X-axis); ylabel(Y-axis); zlabel(Z-axis); title(Surface Plot of (sin(pi * X) .* sin(pi * Y)) .^ 2.*…

网络层9——虚拟专用网VPN和网络地址转换NAT

目录 一、为什么有虚拟专用网&#xff1f; 二、如何理解“虚拟专用网”&#xff1f; 三、IP隧道技术实现虚拟专用网 四、网络地址变换 一、为什么有虚拟专用网&#xff1f; 第一&#xff0c;IPv4只有32位&#xff0c;最多有40亿个全球唯一的IP地址数量不够&#xff0c;无法…

小程序如何完成订阅

小程序如何完成订阅 参考相关文档实践问题处理授权弹窗不再触发引导用户重新授权 参考相关文档 微信小程序实现订阅消息推送的实现步骤 发送订阅消息 小程序订阅消息&#xff08;用户通过弹窗订阅&#xff09;开发指南 实践 我们需要先选这一个模板&#xff0c;具体流程参考…

Oracle OCP认证考试考点详解082系列19

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 91. 第91题&#xff1a; 题目 解析及答案&#xff1a; 关于 Oracle 数据库中的索引及其管理&#xff0c;以下哪三个陈述是正确的&#x…

HuggingFace:基于YOLOv8的人脸检测模型

个人操作经验总结 1、YOLO的环境配置 github 不论base环境版本如何&#xff0c;建议在conda的虚拟环境中安装 1.1、创建虚拟环境 conda create -n yolov8-face python3.9conda create &#xff1a;创建conda虚拟环境&#xff0c; -n &#xff1a;给虚拟环境命名的…

Linux core转储文件排查及命令整理

在Linux系统中&#xff0c;当进程因各种原因异常终止时&#xff0c;操作系统会将进程当时的内存映像保存到磁盘上&#xff0c;生成一个名为core的文件&#xff0c;这个过程称为核心转储&#xff08;core dump&#xff09;。core文件是调试程序错误的重要工具&#xff0c;它记录…

2024-11-15 Element-ui的tab切换中table自适应宽度无法立即100%的问题

前言 今天在写一个统计图表的时候&#xff0c;将所有的table表格和echarts图表放到一个页面中&#xff0c;这样会在纵向上出现滚动条&#xff0c;上下滑动对用户体验不好&#xff0c;于是改成tab切换的形式 遇到的问题 正如标题所述&#xff0c;elementui在tab中使用table时&…

Android Studio更新成2024.1.2版本后旧项目Gradle配置问题

Android Studio更新成2024.1.2版本后旧项目需要配置Gradle才能继续在Android studio正常编译、运行。这个版本的studio和之前版本的studio在gradle配置上差别很大&#xff0c;导致我搞了好久&#xff0c;说久是因为我看见就不想弄&#xff0c;今天抽时间弄了一下&#xff0c;在…

智能化运维与AI/ML辅助决策:实现自动化与预测优化

智能化运维与AI/ML辅助决策&#xff1a;实现自动化与预测优化 目录 &#x1f916; 人工智能在运维中的应用场景与价值&#x1f4ca; 基于机器学习的异常检测与预测性维护&#x1f4a1; 运维自动化中的决策支持系统&#x1f9e0; 使用Python进行机器学习模型的运维应用&#x…