点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
在这篇文章中,您将了解
什么是AMDP?
如何创建AMDP?
AMDP – ABAP 托管数据库程序
ABAP Managed Database Procedures
听起来像是某种行话,是吗?事实上,这就是它所说的。它是一个由 ABAP 管理的数据库过程,即您可以在 Eclipse 中使用 ABAP 开发工具创建、更改或删除 AMDP。这也意味着可以使用 ABAP 传输来传输 AMDP。
AMDP 基本上是一个全局类的方法,它由 SQLSCRIPT 语言中的数据库过程实现。
如何创建AMDP?
创建一个全局类
添加AMDP标记接口IF_AMDP_MARKER_HDB
创建方法定义
使用 DATABASE PROCEDURE 实现该方法
1.创建一个全局类
只能在全局类中创建 AMDP 方法。如果您尝试在本地类中创建它,则会出现以下错误。
所以在Eclipse中创建一个全局类。
2.添加AMDP标记接口IF_AMDP_MARKER_HDB
添加接口。请记住,只能在 PUBLIC SECTION 中添加接口。 IF_AMDP_MARKER_HDB
3. 创建方法定义
可以像在任何可见性部分(即公共、私有或受保护)中的常规静态/实例方法一样定义 AMDP 方法。但是,它确实对参数有以下限制——
只允许变量和表作为参数。我们不能使用结构或嵌套表。
泛型类型不能用于参数。例如,不能使用任何类型。
只能使用具有结构化行类型的基本数据类型和表类型。
表类型组件必须是基本数据类型,并且不能包含表类型的元素。
对方法参数的额外限制
只能使用按值传递。不允许通过引用传递。需要对所有参数使用 VALUE 关键字。
不允许返回参数。我们可以使用 EXPORTING 或 CHANGING 来接收值。
只有输入参数可以用 DEFAULT 值(文字/常量)标记为可选
在 RAISING 子句中,仅允许来自特定异常列表的基于类的异常。
参数名称不能以 %_ 开头。我喜欢这条规则,因为它不会影响我。
保留了一些关键字,如连接、客户端、端方法。不要将此类名称用于参数。
允许的例外列表
CX_ROOT
|
|–CX_DYNAMIC_CHECK
|
|–CX_AMDP_ERROR
|
|–CX_AMDP_VERSION_ERROR
| |
| |–CX_AMDP_VERSION_MISMATCH
|
|–CX_AMDP_CREATION_ERROR
| |
| |–CX_AMDP_DBPROC_CREATE_FAILED
| |
| |–CX_AMDP_NATIVE_DBCALL_FAILED
| |
| |–CX_AMDP_WRONG_DBSYS
|
|–CX_AMDP_EXECUTION_ERROR
| |
| |–CX_AMDP_EXECUTION_FAILED
| |
| |–CX_AMDP_IMPORT_TABLE_ERROR
| |
| |–CX_AMDP_RESULT_TABLE_ERROR
|
|–CX_AMDP_CONNECTION_ERROR
|
|–CX_AMDP_NO_CONNECTION
|
|–CX_AMDP_NO_CONNECTION_FOR_CALL
|
|–CX_AMDP_WRONG_CONNECTION
(来源:https : //help.sap.com/doc/abapdocu_740_index_htm/7.40/en-US/index.htm?file=abenamdp.htm)
考虑到所有限制,AMDP 方法可以定义如下。
4.使用DATABASE PROCEDURE实现方法
实现 ADMP 方法的语法如下:
重要的
每个AMDP方法都会有以下加法。READ-ONLY 只是可选的加法,用于只读取数据的方法。
BY DATABASE PROCEDURE
FOR HDB
LANGUAGE SQLSCRIPT
READ-ONLY
还必须指定 SQLSCRIPT 代码中使用的所有数据库对象和其他 AMDP 方法。
方法代码中不能写入 ABAP 语句。
AMDP 方法没有任何隐式增强选项。
限制
不能使用创建/更改/删除数据库对象的 DDL 语句。
不允许使用 COMMIT 和 ROLLBACK 语句
不允许对已激活 SAP 缓冲的数据库表进行写访问。
同样,类定义和实现将如下所示。
请参阅文章Working With Eclipse [2]:Useful Eclipse Preferences to set different background color for SQLSCRIPT code
结论
创建AMDP真的很简单。下一篇文章将介绍调用 AMDP 方法。