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

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.

相关文章:

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

1. 什么是AMDP(ABAP-Managed Database Procedure) 1.&#xff09;AMDP - ABAP管理数据库程序&#xff0c;是一种程序&#xff0c;我们可以使用SQLSCRIPT在AMDP内部编写代码&#xff0c;SQLSCRIPT是一种与SQL脚本相同的数据库语言&#xff0c;这种语言易于理解和编码。 将AM…...

关于视频审核,内容风控在“控”什么?

随着互联网用户每周上网时长的增加&#xff0c;内容偏好逐渐向视频形式转移&#xff0c;视频内容成为了企业竞争的新战场。然而&#xff0c;视频内容审核和风险控制成为了企业面临的重大挑战。那么在视频审核中&#xff0c;内容风控到底在“控”什么呢&#xff1f; 视频内容风…...

5G NTN(七) 高层(1)

说明&#xff1a;本专题主要基于3GPP协议38.821 目录 1. Idle态移动性增强 1.1 TA问题 1.1.1 TA的大小 1.1.2 针对NTN LEO的移动TA&#xff0c;场景C2和D2 1.1.3 针对NTN LEO的固定TA&#xff0c;场景C2和D2 1.1.3.1 方法1&#xff1a;当UE位置信息无法获取的时候 1.1.…...

专家混合(MoE)大语言模型:免费的嵌入模型新宠

专家混合&#xff08;MoE&#xff09;大语言模型&#xff1a;免费的嵌入模型新宠 今天&#xff0c;我们深入探讨一种备受瞩目的架构——专家混合&#xff08;Mixture-of-Experts&#xff0c;MoE&#xff09;大语言模型&#xff0c;它在嵌入模型领域展现出了独特的魅力。 一、M…...

《柴油遗产-无耻时代》V98375官方版

靠近你所在赛道上的另一名玩家进行攻击或防守&#xff0c;跳到另一条赛道上进行恢复&#xff0c;或闪到对手背后打他个措手不及。与队友合作&#xff0c;充分利用每个角色的独特玩法来控制战斗走向&#xff01; 《柴油遗产-无耻时代》官方版 https://pan.xunlei.com/s/VODW7xDX…...

科技云报到:洞见2025年科技潮流,技术大融合开启“智算时代”

科技云报到原创。 随着2024年逐渐接近尾声&#xff0c;人们不禁开始展望即将到来的2025年。这一年&#xff0c;被众多科技界人士视为开启新纪元的关键节点。站在新的起点上&#xff0c;我们将亲眼目睹未来科技如何改变我们的世界。从人工智能到量子计算&#xff0c;从基因编辑…...

【openwrt】OpenWrt 路由器的 802.1X 动态 VLAN

参考链接 [OpenWrt Wiki] Wi-Fi /etc/config/wirelesshttps://openwrt.org/docs/guide-user/network/wifi/basic#wpa_enterprise_access_point 介绍 基于802.1X 无线网络身份验证࿰...

[coredump] 生成管理

在 Linux 系统中&#xff0c;core dump 文件的生成路径和文件名可以通过几个方面来控制&#xff1a; 系统默认路径&#xff1a; 默认情况下&#xff0c;core dump 文件通常生成在程序的工作目录&#xff0c;即程序运行时的当前目录。文件名通常为 core&#xff0c;或者在某些系…...

CSS——5. 外部样式

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>方法3&#xff1a;外部样式</title><link rel"stylesheet" href"a.css" /><link rel"stylesheet" href"b.css"/&g…...

检查字符是否相同

给你一个字符串 s &#xff0c;如果 s 是一个 好 字符串&#xff0c;请你返回 true &#xff0c;否则请返回 false 。 如果 s 中出现过的 所有 字符的出现次数 相同 &#xff0c;那么我们称字符串 s 是 好 字符串。 输入&#xff1a;s "abacbc" 输出&#xff1a;t…...

casaos安装最新版homeassistant-arm

进入cosOS界面点自定义安装 Docker镜像:homeassistant/armv7-homeassistant Tag:2024.12.2 标题&#xff1a;Home Assistant 图片路径&#xff1a;https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStoremain/Apps/HomeAssistant/icon.png Web UI&#xff1a;http&…...

openwrt host方式编译ffmpeg尝试及问题分析

openwrt host方式编译ffmpeg尝试及问题分析 configure错误分析编译错误一: ERROR: gnutls not found using pkg-config编译错误2: ERROR: libdrm not found using pkg-config编译错误3: ERROR: libmp3lame >= 3.98.3 not found编译错误4: ERROR: x264 not found using pkg…...

【three.js】搭建环境

一、安装Node.js和npm 下载与安装&#xff1a; 访问Node.js官方网站&#xff08;nodejs.org&#xff09;&#xff0c;根据你的操作系统下载并安装最新稳定版&#xff08;LTS版本&#xff09;的Node.js。安装过程中&#xff0c;npm&#xff08;Node包管理器&#xff09;会随No…...

SQLite AND/OR 运算符

SQLite AND/OR 运算符 SQLite 的 AND 和 OR 运算符用于基于一个以上的条件来过滤记录。这些运算符在 WHERE 子句中与 SELECT、UPDATE 和 DELETE 语句一起使用。理解这些运算符的工作方式对于有效地查询数据库至关重要。 AND 运算符 AND 运算符允许我们在 WHERE 子句中指定多…...

《普通逻辑》学习记录——命题的判定与自然推理

目录 一、真值 1.1、真值联结词 1.2、真值联结词与逻辑联结词的区别 1.3、真值形式 1.3.1、真值符号的优先级和结合性规则 1.4、真值规则 1.4.1、条件式&#xff08;蕴含式&#xff09; P → Q 的真值规则 1.4.2、双条件式&#xff08;等值式&#xff09; P ↔ Q 的真值规则 1.…...

道可云人工智能元宇宙每日资讯|崂山区政务服务虚拟大厅启用

道可云元宇宙每日简报&#xff08;2024年12月31日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 崂山区政务服务虚拟大厅启用 近日&#xff0c;崂山区政务服务“虚拟大厅”在青岛正式上线&#xff0c;成为该市首个采用虚拟现实、人工智能、大数据及3D虚拟数字人…...

高并发写利器-组提交,我的Spring组件实战

高并发写优化理论 对于高并发的读QPS优化手段较多&#xff0c;最经济简单的方式是上缓存。但是对于高并发写TPS该如何提升&#xff1f;业界常用的有分库分表、异步写入等技术手段。但是分库分表对于业务的改造十分巨大&#xff0c;涉及迁移数据的麻烦工作&#xff0c;不会作为…...

音视频入门基础:MPEG2-PS专题(4)——FFmpeg源码中,判断某文件是否为PS文件的实现

一、引言 通过FFmpeg命令&#xff1a; ./ffmpeg -i XXX.ps 可以判断出某个文件是否为PS文件&#xff1a; 所以FFmpeg是怎样判断出某个文件是否为PS文件呢&#xff1f;它内部其实是通过mpegps_probe函数来判断的。从《FFmpeg源码&#xff1a;av_probe_input_format3函数和AVI…...

如何使用OpenCV进行抓图-多线程

前言 需求&#xff1a; 1、如何使用OpenCV捕抓Windows电脑上USB摄像头的流、 2、采用多线程 3、获知当前摄像头的帧率。 这个需求&#xff0c;之前就有做了&#xff0c;但是由于出现了一个问题&#xff0c;人家摄像头的帧率目前都可以达到60帧/s 了&#xff0c;而我的程序…...

电子应用设计方案86:智能 AI背景墙系统设计

智能 AI 背景墙系统设计 一、引言 智能 AI 背景墙系统旨在为用户创造一个动态、个性化且具有交互性的空间装饰体验&#xff0c;通过融合先进的技术和创意设计&#xff0c;提升室内环境的美观度和功能性。 二、系统概述 1. 系统目标 - 提供多种主题和风格的背景墙显示效果&…...

【《python爬虫入门教程11--重剑无峰168》】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 【《python爬虫入门教程11--selenium的安装与使用》】 前言selenium就是一个可以实现python自动化的模块 一、Chrome的版本查找&#xff1f;-- 如果用edge也是类似的1.chrome…...

.net core 线程锁,互斥锁,自旋锁,混合锁

线程锁、互斥锁、自旋锁和混合锁是多线程编程中的重要概念&#xff0c;它们用于控制对共享资源的访问&#xff0c;避免数据竞争和不一致性。每种锁有其特定的适用场景和特点。我们来逐一解释它们&#xff0c;并进行比较。 1. 线程锁&#xff08;Thread Lock&#xff09; 线程…...

【DevOps】Jenkins项目发布

Jenkins项目发布 文章目录 Jenkins项目发布前言资源列表基础环境一、Jenkins发布静态网站1.1、项目介绍1.2、部署Web1.3、准备gitlab1.4、配置gitlab1.5、创建项目1.6、推送代码 二、Jenkins中创建gitlab凭据2.1、创建凭据2.2、在Jenkins中添加远程主机2.3、获取gitlab项目的UR…...

C# OpenCV机器视觉:霍夫变换

在一个阳光灿烂得近乎放肆的午后&#xff0c;阿强的实验室就像被施了魔法的科学城堡&#xff0c;到处闪耀着神秘的科技光芒。阿强呢&#xff0c;像个即将踏上惊险征程的探险家&#xff0c;一屁股坐在那堆满奇奇怪怪设备的桌前&#xff0c;眼神中透露出按捺不住的兴奋劲儿&#…...

Kraft模式安装Kafka(含常规、容器两种安装方式)

一、#创作灵感# 公司使用Kafka的软件项目较多&#xff0c;故写技术笔记巩固知识要点 二、软件环境 - Kafka 3.9.0 官方下载地址&#xff1a;Kafka 3.9.0 - Docker Desktop 4.37 容器图形化工具 官方下载地址&#xff1a;Docker Desktop 4.37 特别说明 - Docker Desktop…...

Linux驱动开发(16):输入子系统–电容触摸驱动实验

有关电容触摸的基础知识内容可以参考野火STM32相关教程&#xff0c;这里只介绍电容触摸驱动的相关内容。 本章配套源码、设备树以及更新固件位于“~/embed_linux_driver_tutorial_imx6_code/linux_driver/touch_scream_GTxxx”目录下。 触摸面板通过双面胶粘在显示屏上&#…...

《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(24):椭圆曲线密码学

《深入浅出HTTPS​​​​​​​​​​》读书笔记&#xff08;24&#xff09;&#xff1a;椭圆曲线密码学 为了保证DH的密钥对不被破解&#xff0c;提升安全性的主要手段就是增加密钥对的长度&#xff0c;但是长度越长&#xff0c;性能越低。 为了解决性能问题&#xff0c;需要…...

现代光学基础5

总结自老师的讲义 yt5 开卷考试复习资料&#xff1a;光探测器与光伏技术 目录 光探测器&#xff08;Photodetector&#xff09; 工作原理二极管电路连接方式响应度&#xff08;Responsivity&#xff09;微弱光检测超导纳米线单光子探测光电二极管噪声 太阳能电池&#xff0…...

力扣hot100——贪心

121. 买卖股票的最佳时机 class Solution { public:int maxProfit(vector<int>& a) {if (a.size() 1) return 0;int ans 0;int mi a[0];for (int i 1; i < a.size(); i) {ans max(ans, a[i] - mi);mi min(mi, a[i]);}return ans;} };55. 跳跃游戏 class S…...

vue3如何实现防抖?

第一 防抖就是我们设置一个调用时间&#xff0c;点击后设置时间开始倒计时&#xff0c;如果再次点击会重新倒计时 npm或yarn安装&#xff1a; npm install lodash <template><div click"debouncedInputHandler"><button>打印</button>…...