SAP 01-初识AMDP(ABAP-Managed Database Procedure)

1. 什么是AMDP(ABAP-Managed Database Procedure)
    1.)AMDP - ABAP管理数据库程序,是一种程序,我们可以使用SQLSCRIPT在AMDP内部编写代码,SQLSCRIPT是一种与SQL脚本相同的数据库语言,这种语言易于理解和编码。 将AMDP方法内的逻辑编码后,可以在ABAP报表中使用,也可以在CDS Table Function中使用AMDP方法。
    2.)使用AMDP,可以将ABAP Application编写的代码通过HANA的新特性(代码下推技术),将逻辑在数据库层执行。

2. AMDP的弊端
    1.)AMDP还不能在Eclipse、HANA Studio上进行Debug操作
    2.)不能使用mseg表,但可以使用 MATDOC的代理对象 NSDM_V_MSEG 代替
    3.)数据类型必须是表或者标准类型(INT CHAR …)
    4.)对于传入的Select-option,必须先在ABAP中用方法 cl_shdb_seltab=>combine_seltabs处理后在传入AMDP;然后在AMDP中用 APPLY_FILTER
    5.)AMDP不能自动处理Client信息,使用时必须传入Client信息,并在ABDP中使用Where条件 SESSION_CONTEXT(‘CLIENT’) 引入

3. 实现简单的AMDP Functions for AMDP Methods
    1.)在Eclipse或者HANA Studio新建一个ABAP Class

2.)实现Class,必须注明实施的Interface:IF_AMDP_MARKER_HDB(目前只支持HDB,若未来支持其他DB;接口名称则为:IF_AMDP_MARKER_<DB_NAME>)
      By database Procedure: 实现一个数据库过程。使用此方法,AMDP方法将自动在HANA系统中创建一个过程
      FOR HDB: 指定数据库类型为 HANA database
      LANGUAGE SQLSCRIPT: 指定用于实现AMDP的数据库特定语言为 SQLSCRIPT
      OPTION READ-ONLY: 设置只能在数据库过程中读取
      USING <table_name/view_name>: 设置使用的数据库表或视图

CLASS zamdp_demo001 DEFINITIONPUBLICFINALCREATE PUBLIC .PUBLIC SECTION.types:ty_mara type table of mara.         "这边先声明一下结构/表类型  不然下面方法exporting的type ***的时候会报一些有的没有的错误interfaces:IF_AMDP_MARKER_HDB.class-methods:get_data_back importing value(i_mandt) type mara-mandtexporting value(et_mara) type ty_mara.    "如果上面没有声明,这边type会报错:The method "GET_DATA_BACK" contains a database procedure, which means that "ET_MARA" cannot have a structured type.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.CLASS zamdp_demo001 IMPLEMENTATION.method get_data_back by database procedurefor hdb language sqlscriptoptions read-onlyusing mara makt.   "用到什么表都要写在这
*get_data   "这边左连接&右链接要加上outer,不然不能达到左连和右连的效果et_mara =with makt_tmp as ( select * from makt where maktx like '%12')select a.*from mara as aright outer join makt_tmp as b on a.matnr = b.matnrwhere a.mandt = :i_mandt;endmethod.
ENDCLASS.

 4. 在ABAP中调用AMDP

*&---------------------------------------------------------------------*
*& Report ZTMP_TEST_IT029
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTMP_TEST_IT029.DATA: lt_mara TYPE TABLE OF mara.START-OF-SELECTION.IF cl_abap_dbfeatures=>use_features(EXPORTINGrequested_features = VALUE #( ( cl_abap_dbfeatures=>call_amdp_method )( cl_abap_dbfeatures=>amdp_table_function ) ) ).zamdp_demo001=>get_data_back(EXPORTINGi_mandt = sy-mandtIMPORTINGet_mara = lt_mara ).cl_demo_output=>display( lt_mara ).ELSE.cl_demo_output=>display( '警告!当前系统不支持AMDP.' ).ENDIF.

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

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

相关文章

力扣--35.搜索插入位置

题目 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 …

JavaScript 日期格式

在 JavaScript 中,日期格式可以通过 Date 对象进行操作和格式化。下面是一些常见的 JavaScript 日期格式及其示例: 1. ISO 8601 格式 ISO 8601 是一种标准的日期和时间表示方法,格式为 YYYY-MM-DDTHH:mm:ss.sssZ,例如: let date = new Date(); console.log(date.toISOS…

Anaconda环境配置(Windows11+python3.9)

文章目录 一、 下载ANACONDA&#xff08;1&#xff09;点击**Free Download**。&#xff08;2&#xff09;点击“skip registration”&#xff0c;跳过登录。&#xff08;3&#xff09;下载对应操作系统的ANACONDA版本。 二、 安装ANACONDA&#xff08;1&#xff09;双击运行安…

Git命令行的使用

目录 一、什么是Git 1、本地仓库 vs 远端仓库 本地仓库 远端仓库 2、.git vs .gitignore .git .gitignore 二、使用Git命令 1、安装git 2、git首次使用需要配置用户邮箱和用户名 3、上传目录/文件到远端仓库步骤 1&#xff09;创建放置文件的目录 2&#xff09;cd…

Qt C++ 软件调试内存分析工具Heob(推荐三颗星)

点击上方"蓝字"关注我们 01、Heob 是 what? >>> 绝大部分的文章都说Heob是一个内存泄漏分析工具,其实Heob只是内存泄漏分析功能比较突出,实际上Heob可以分析很多内存问题。 Heob是一个Windows下检测缓冲区溢出(野指针、空指针、内存越界、重复释放、异…

后台管理系统动态面包屑Breadcrumb组件的实现

在后管理系统开发中&#xff0c;面包屑导航是一个非常常见的功能&#xff0c;通常是根据当前的 url 自动生成面包屑导航菜单&#xff0c;当跳转路由发生变化时&#xff0c;面包屑导航都会随之发生变化&#xff0c;即动态面包屑。 要完成动态面包屑我们需要制作一个动态数组&am…

将 Docker 数据迁移到新磁盘:详细操作指南

将 Docker 数据迁移到新磁盘&#xff1a;详细操作指南 背景 在容器化应用的部署中&#xff0c;Docker 通常将数据存储在默认的 /var/lib/docker 目录。然而&#xff0c;随着容器数量的增加和镜像的累积&#xff0c;该目录可能会迅速占满系统磁盘空间&#xff0c;从而影响系统…

小程序租赁系统开发的优势与应用前景分析

内容概要 小程序租赁系统是一种新兴的数字化解决方案&#xff0c;旨在为用户提供更加便捷与高效的租赁服务。它通常包括一系列功能&#xff0c;如在线浏览、即时预定、支付功能以及用户反馈机制。这些系统在使用上极为友好&#xff0c;让用户能够轻松选择所需的商品或服务&…

Python PrettyTable:让表格变得漂亮又简单

Python PrettyTable&#xff1a;让表格变得漂亮又简单 什么是PrettyTable&#xff1f;安装PrettyTable创建一个简单的表格自定义表格样式对齐方式边框样式 使用场景总结 大家好&#xff01;今天我们要来学习一个非常有趣的Python库——PrettyTable。这个库可以帮助我们轻松地创…

Pytorch 三小时极限入门教程

一、引言 在当今的人工智能领域&#xff0c;深度学习占据了举足轻重的地位。而 Pytorch 作为一款广受欢迎的深度学习框架&#xff0c;以其简洁、灵活的特性&#xff0c;吸引了大量开发者投身其中。无论是科研人员探索前沿的神经网络架构&#xff0c;还是工程师将深度学习技术落…

凸包(convex hull)简述

凸包&#xff08;convex hull&#xff09;简述 这里主要介绍二维凸包&#xff0c;二维凸多边形是指所有内角都在 [ 0 , Π ] [0,\Pi ] [0,Π]范围内的简单多边形。 凸包是指在平面上包含所有给定点的最小凸多边形。 数学定义&#xff1a;对于给定集合 X X X&#xff0c;所有…

小波与傅里叶变换在去噪效果上的对比分析-附Matlab源程序

&#x1f468;‍&#x1f393; 博主简介&#xff1a;博士研究生 &#x1f52c; 超级学长&#xff1a;超级学长实验室&#xff08;提供各种程序开发、实验复现与论文指导&#xff09; &#x1f4e7; 个人邮箱&#xff1a;easy_optics126.com &#x1f56e; 目 录 摘要一、…

CVPR2019 | AA | 特征空间扰动产生更具迁移性的对抗样本

Feature Space Perturbations Yield More Transferable Adversarial Examples 摘要-Abstract引言-Introduction相关工作-Related WorkTransferability Metrics-迁移性指标激活攻击方法-Activation Attack Methodology损失函数-Loss Function攻击算法-Attack Algorithm 实验设置…

游戏如何检测Root权限

Root权限&#xff0c;即超级用户权限&#xff0c;在Android系统中&#xff0c;获取Root权限意味着用户可以修改系统文件、移除预装应用、安装特殊应用等。 在Root环境下&#xff0c;游戏面临着相当大的安全隐患&#xff0c;用户获取了最高权限&#xff0c;意味着可以通过各类工…

MySQL性能优化explain关键字详解

系列文章目录 一、MySQL数据结构选择 二、MySQL性能优化explain关键字详解 三、MySQL索引优化 文章目录 系列文章目录一、explain是什么&#xff1f;二、explain字段详解2.1、ID2.2、select_type2.3、table2.4、partitions2.5、type&#xff08;重点&#xff09;2.6、key2.7、…

【Go学习】-01-5-网络编程

【Go学习】-01-5-网络编程 1 互联网协议介绍1.1 互联网分层模型 2 Go网络编程2.1 socket编程2.1.1 socket图解2.2.2 TCP编程2.2.3 UDP编程 2.3 http编程2.3.1 web工作流程2.3.2 HTTP协议 2.4 WebSocket编程2.5 聊天室的小例子2.5.1 server.go文件代码2.5.2 hub.go文件代码2.5.3…

深入MySQL复杂查询优化技巧

在上一篇文章中&#xff0c;我们介绍了 MySQL 的关联关系理论与基础实践。本篇文章将进一步探讨 MySQL 复杂查询的优化技巧&#xff0c;帮助开发者应对大型数据集和高并发场景中的性能挑战。我们将涵盖索引设计、查询计划分析、分区技术以及事务管理的优化。 一、索引优化 索引…

基于YOLO5的机械臂视觉抓取实现

前言&#xff1a; 机器人视觉系统标定是保证机器人精确运动和控制的关键环节之一。通过对机器人的运动学进行分析&#xff0c;可以精确计算出机器人末端执行器的位姿信息&#xff0c;从而实现对目标的精准定位和控制。相机标定是计算机视觉和图像处理中的重要步骤&#xff0c;标…

推荐系统重排:MMR 多样性算法

和谐共存&#xff1a;相关性与多样性在MMR中共舞 推荐系统【多样性算法】系列文章&#xff08;置顶&#xff09; 1.推荐系统重排&#xff1a;MMR 多样性算法 2.推荐系统重排&#xff1a;DPP 多样性算法 引言 在信息检索和推荐系统中&#xff0c;提供既与用户查询高度相关的文…

# LeetCode Problem 2038: 如果相邻两个颜色均相同则删除当前颜色 (Winner of the Game)

LeetCode Problem 2038: 如果相邻两个颜色均相同则删除当前颜色 (Winner of the Game) 在本篇博客中&#xff0c;我们将深入探讨 LeetCode 第2038题——如果相邻两个颜色均相同则删除当前颜色。该问题涉及字符串处理与游戏策略&#xff0c;旨在考察如何在给定规则下判断游戏的…