当前位置: 首页 > 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. 系统目标 - 提供多种主题和风格的背景墙显示效果&…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

Java后端检查空条件查询

通过抛出运行异常&#xff1a;throw new RuntimeException("请输入查询条件&#xff01;");BranchWarehouseServiceImpl.java // 查询试剂交易&#xff08;入库/出库&#xff09;记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...