在 HANA 上探索 ABAP [8]:AMDP 简介

2021-11-08 00:04发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

在这篇文章中,您将了解

  • 什么是AMDP?

  • 如何创建AMDP?

AMDP – ABAP 托管数据库程序

ABAP Managed Database Procedures


听起来像是某种行话,是吗?事实上,这就是它所说的。它是一个由 ABAP 管理的数据库过程,即您可以在 Eclipse 中使用 ABAP 开发工具创建、更改或删除 AMDP。这也意味着可以使用 ABAP 传输来传输 AMDP。

AMDP 基本上是一个全局类的方法,它由 SQLSCRIPT 语言中的数据库过程实现。

如何创建AMDP?

  1. 创建一个全局类

  2. 添加AMDP标记接口IF_AMDP_MARKER_HDB

  3. 创建方法定义

  4. 使用 DATABASE PROCEDURE 实现该方法

1.创建一个全局类

只能在全局类中创建 AMDP 方法。如果您尝试在本地类中创建它,则会出现以下错误。

image.png


所以在Eclipse中创建一个全局类。

image.png


image.png

2.添加AMDP标记接口IF_AMDP_MARKER_HDB

添加接口请记住,只能在 PUBLIC SECTION 中添加接口。 IF_AMDP_MARKER_HDB

image.png


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 方法可以定义如下。

image.png


4.使用DATABASE PROCEDURE实现方法

实现 ADMP 方法的语法如下:


image.png

重要的
  • 每个AMDP方法都会有以下加法。READ-ONLY 只是可选的加法,用于只读取数据的方法。

    • BY DATABASE PROCEDURE

    • FOR HDB

    • LANGUAGE SQLSCRIPT

    • READ-ONLY

  • 还必须指定 SQLSCRIPT 代码中使用的所有数据库对象和其他 AMDP 方法。

  • 方法代码中不能写入 ABAP 语句。

  • AMDP 方法没有任何隐式增强选项。

限制
  • 不能使用创建/更改/删除数据库对象的 DDL 语句。

  • 不允许使用 COMMIT 和 ROLLBACK 语句

  • 不允许对已激活 SAP 缓冲的数据库表进行写访问。


同样,类定义和实现将如下所示。

image.png

请参阅文章Working With Eclipse [2]:Useful Eclipse Preferences to set different background color for SQLSCRIPT code

结论

创建AMDP真的很简单。下一篇文章将介绍调用 AMDP 方法。


赞赏支持