ABAP ADBC_QUERY 测试代码

项目中使用的接口取数采用的是DBLink的方式,对方提供的表名太长,超过标准程序ADBC_QUERY的参数长度,于是写了一份简单的测试代码用来测试连接和取数。

DBCO配置:

测试程序:

 

程序源码:

*&---------------------------------------------------------------------*
*& Report  ZTEST_ADBC_QUERY
*&
*&---------------------------------------------------------------------*
*&
*& 测试DBLink数据读取
*&---------------------------------------------------------------------*REPORT ztest_adbc_query.DATA:lo_adbc_connect TYPE REF TO cl_sql_connection,lo_adbc_query   TYPE REF TO cl_sql_statement,lo_adbc_result  TYPE REF TO cl_sql_result_set,lo_metadata     TYPE REF TO data,lt_metadata     TYPE adbc_rs_metadata_descr_tab.DATA:lo_sql_exception           TYPE REF TO cx_sql_exception,lo_parameter_invalid       TYPE REF TO cx_parameter_invalid,lo_parameter_invalid_range TYPE REF TO cx_parameter_invalid_range,lo_parameter_invalid_type  TYPE REF TO cx_parameter_invalid_type,lo_struct_creation         TYPE REF TO cx_sy_struct_creation,lo_table_creation          TYPE REF TO cx_sy_table_creation,lo_exception               TYPE REF TO data,lv_err_text                TYPE string.DATA:lo_structdescr TYPE REF TO cl_abap_structdescr,lo_tabletype   TYPE REF TO cl_abap_tabledescr,lo_result_ref  TYPE REF TO data.FIELD-SYMBOLS:<lt_itab> TYPE STANDARD TABLE.PARAMETERS:p_conn TYPE dbcon-con_name,p_sql  TYPE string,p_upto TYPE i DEFAULT 10.START-OF-SELECTION.
* 获取连接TRY .lo_adbc_connect = cl_sql_connection=>get_connection( con_name = p_conn ).CATCH cx_sql_exception INTO lo_sql_exception.lv_err_text = lo_sql_exception->get_text( ).WRITE lv_err_text.RETURN.ENDTRY.* 创建连接对象lo_adbc_query = lo_adbc_connect->create_statement( ).* 执行SqlTRY .lo_adbc_result = lo_adbc_query->execute_query( p_sql ).CATCH cx_sql_exception INTO lo_sql_exception.lv_err_text = lo_sql_exception->get_text( ).WRITE lv_err_text.RETURN.CATCH cx_parameter_invalid INTO lo_parameter_invalid.lv_err_text = lo_parameter_invalid->get_text( ).WRITE lv_err_text.RETURN.ENDTRY.* 获取元数据TRY .lt_metadata = lo_adbc_result->get_metadata( ).CATCH cx_sql_exception.lv_err_text = lo_sql_exception->get_text( ).WRITE lv_err_text.RETURN.ENDTRY.* 获取元数据字段信息TRY .lo_metadata = lo_adbc_result->get_struct_ref( md_tab = lt_metadatap_strict = abap_false ).CATCH cx_sy_struct_creation INTO lo_struct_creation.lv_err_text = lo_struct_creation->get_text( ).WRITE lv_err_text.RETURN.CATCH cx_parameter_invalid_range INTO lo_parameter_invalid_range.lv_err_text = lo_parameter_invalid_range->get_text( ).WRITE lv_err_text.RETURN.ENDTRY.* 创建结构类型对象lo_structdescr ?= cl_abap_typedescr=>describe_by_data_ref( lo_metadata ).* 创建表类型对象TRY .lo_tabletype = cl_abap_tabledescr=>create( p_line_type  = lo_structdescrp_table_kind = cl_abap_tabledescr=>tablekind_std ).CATCH cx_sy_table_creation INTO lo_table_creation.lv_err_text = lo_table_creation->get_text( ).WRITE lv_err_text.RETURN.ENDTRY.* 创建表对象引用CREATE DATA lo_result_ref TYPE HANDLE lo_tabletype.* 传递sql结果至表对象引用TRY .lo_adbc_result->set_param_table( itab_ref = lo_result_ref ).CATCH cx_parameter_invalid INTO lo_parameter_invalid.lv_err_text = lo_parameter_invalid->get_text( ).WRITE lv_err_text.RETURN.ENDTRY.* 获取所有数据TRY .lo_adbc_result->next_package( EXPORTING upto = p_upto ).CATCH cx_sql_exception INTO lo_sql_exception.lv_err_text = lo_sql_exception->get_text( ).WRITE lv_err_text.RETURN.CATCH cx_parameter_invalid_type INTO lo_parameter_invalid_type.lv_err_text = lo_parameter_invalid_type->get_text( ).WRITE lv_err_text.RETURN.ENDTRY.* 关闭连接lo_adbc_result->close( ).* 赋值到动态内表ASSIGN lo_result_ref->* TO <lt_itab>.cl_demo_output=>display( <lt_itab> ).

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

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

相关文章

实验五 智能手机互联网程序设计(微信程序方向)实验报告

请完成数值比较任务&#xff1b; 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; index.js Page({ /** * 页面的初始数据 */ data: { num1:0, num2:0, num3:"" }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { },…

14款DevOps/SRE工具,助力提升运维效率

简介 随着平台工程的兴起&#xff0c;DevOps 和 SRE 不断发展&#xff0c;带来了新一代工具&#xff0c;旨在提高软件开发和运维的效率、可扩展性和可靠性。 在本篇文章中&#xff0c;我们将深入探讨一些最具发展前景的工具&#xff0c;它们正在塑造持续集成与部署、监控与可观…

【c语言】自定义类型:结构体详解

目录 自定义类型&#xff1a;结构体 结构体类型的声明 结构体变量的创建和初始化 结构的特殊声明 结构的自引用 结构体内存对齐 对其规则 为什么存在内存对齐&#xff1f; 修改默认对⻬数 结构体传参 结构体实现位段 位段的内存分配 位段的跨平台问题 位段的应用…

SpringBoot实现RabbitMQ的通配符交换机(SpringAMQP 实现Topic交换机)

文章目录 pomyml生产者消费者 Topic类型的Exchange与Direct相比&#xff0c;都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符&#xff01; Routingkey 一般都是有一个或多个单词组成&#xff0c;多个单词…

2024年思维100春季线上比赛倒计时9天,来看看官方样题

今天是2024年4月11日&#xff0c;距离2024年春季思维100活动第一阶段的线上比赛4月20日还有9天。今年思维100活动的考试重点是什么呢&#xff1f;虽然主办方未公布&#xff0c;我们可以从主办方发布的参考题目中来推测今年的考试重点&#xff0c;并且按照这个来举一反三&#x…

基于GAN的多变量时间序列污染训练集异常检测

论文地址&#xff1a;https://ieeexplore.ieee.org/document/9618824 论文源码&#xff1a;https://github.com/sxxmason/FGANomaly 期刊&#xff1a;IEEE Transactions on Knowledge and Data Engineering 多元时间序列异常检测在结构健康监测、智能运维、量化交易等诸多实际…

谷粒商城实战(012 业务-商城业务)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第203p-第p210的内容 介绍 这段除了210集都是商城业务&#xff0c;无太多可学习的&#xff0c;可跳过这7集&#xff0c;直接看第2100集 一个页…

CentOS 7.9安装过程的一些小插曲

首先请允许我推荐一下这款制作U盘启动盘的软件 Rufus - 轻松创建 USB 启动盘Rufus: Create bootable USB drives the easy wayhttps://rufus.ie/zh/ Rufus 是一款格式化和创建 USB 启动盘的辅助工具。 本软件适用于以下场景&#xff1a; 需要将可引导 ISO (Windows、Linux、UE…

Django之rest_framework(二)

格式后缀 为了使我们的响应不再硬连接到单个内容类型这一事实,我们可以将API格式后缀添加到API之后。使用格式后缀为我们提供了明确引用给定格式的URL,譬如:http://example.com/api/items/4.json 官网:2 - Requests and responses - Django REST framework views:在函数…

大厂Java笔试题之求一个整数转换为二进制后所有位上1的个数

题目&#xff1a;给定一个整数&#xff0c;求这个整数转换成二进制以后&#xff0c;所有位上1的个数&#xff08;数字大小不超过32位数字的范围&#xff09;。比如8这个整数&#xff0c;转换成二进制是00001000&#xff0c;那么就是输出1。public class Demo5 {public static v…

css实现扫码循环扫描特效

摘要&#xff1a; 需求中需要模拟扫描的效果来实现户型的生成&#xff01;由于接口ai生成的图片户型时间比较长&#xff0c;所以需要模拟特效&#xff01; <!DOCTYPE html> <html><head><mate charset"UTF-8" /><title>扫描</title…

FME学习之旅---day22

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 教程&#xff1a;栅格入门 FME 支持读取和写入 70 多种栅格格式。本教程将介绍几个基本示例&#xff0c;展示如何使用 FME 读取、转换和写入栅格数据。 FME 数据检查器不应用任何对比度增强。因…

删除链表的倒数第 N 个结点 - LeetCode 热题 29

大家好&#xff01;我是曾续缘&#x1f916; 今天是《LeetCode 热题 100》系列 发车第 29 天 链表第 8 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 删除链表的倒数第 N 个结点 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头…

SpringBoot菜品分页查询模块开发(多表连接查询)

需要注意的地方 为什么创建VO类怎么进行多表连接查询分页查询的统一返回结果类PageResult分页查询Mapper的返回结果是Page<目标实体类> 需求分析与设计 一&#xff1a;产品原型 系统中的菜品数据很多的时候&#xff0c;如果在一个页面中全部展示出来会显得比较乱&…

【无人机/平衡车/机器人】详解STM32+MPU6050姿态解算—卡尔曼滤波+四元数法+互补滤波——附3个算法源码

效果&#xff1a; MPU6050姿态解算-卡尔曼滤波四元数互补滤波 目录 基础知识详解 欧拉角 加速度计(Accelerometer)与姿态测量 陀螺仪(Gyroscope)与姿态测量 姿态解算算法1-互补滤波 姿态解算算法2-四元数法 姿态解算算法3-卡尔曼滤波 组成 1.预测状态方程 2. 预测协方…

Java | Leetcode Java题解之第20题有效的括号

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isValid(String s) {int n s.length();if (n % 2 1) {return false;}Map<Character, Character> pairs new HashMap<Character, Character>() {{put(), ();put(], [);put(}, {);}};Deque<…

蓝桥 python笔记15——矩阵运算、基础数论、GCD和LCM、质数、唯一分解定理、快速幂

目录 矩阵运算 基础数论 GCD和LCM 质数 唯一分解定理 快速幂 矩阵运算 矩阵加减法&#xff1a; 矩阵和数相乘&#xff1a; 矩阵转置&#xff1a; 矩阵乘法&#xff1a; # 矩阵乘法 def mul(A,B):N,Mlen(A),len(A[0])#行数&#xff0c;列数_M,Klen(B),len(B[0])if M!_M:re…

rsync 远程同步----------安全高效的异地备份方案

目录 一、rsync介绍 rsync和cp的区别 rsync和scp的区别 二、rsync同步方式 rsync备份的方式 三、配置rsync源服务器 ①本地复制 ②下行同步 ③上行同步 四、常用Rsync命令 五、配置源的两种表达方法 六、部署rsync下行同步 ①环境准备 ②配置rsync源服务器------…

Linux 函数学习 poll

1、Linux poll 函数 int poll(struct pollfd *fds, nfds_t nfds, int timeout); fds&#xff1a; 需要轮询的fd集合 nfds&#xff1a;需要轮询的fds数量 timeout&#xff1a;超时时间 返回值&#xff1a;0 超时&#xff0c;<0 发生异常&#xff0c;> 0 存在数据变化 …

基于SSM+Jsp+Mysql的网络视频播放器

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…