打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于 SAP AMDP 调用错误消息 client-specific and restricts access to a client
userphoto

2022.11.04 四川

关注

近日一个朋友做 SAP AMDP 开发时,遇到如下错误消息:XXX is client-specific and restricts access to a client. The calling AMDP method XX must also allow this restriction.

本文将这个错误消息相关的背景知识记录如下。

发生问题的场景是在基于 S4/HANA 系统的 ABAP Test Cockpit ATC 和 CVA 检查的代码增强过程中,决定将 OpenSQL Select 语句移动到通过 HANA 数据库上的 AMDP 存储过程访问的 CDS 视图中。

创建 CDS 视图,在其中使用 WHERE 子句中的会话参数 $session.client 根据 MANDT 列上的会话客户端值过滤数据,如下面的 SELECT 代码所示:

select * from vbrk where vbrk.mandt = $session.client;

当我尝试在我的 AMDP 类方法(HANA 数据库上的存储过程)中使用此 CDS 视图时,我遇到了以下错误,导致 AMDP 无法成功编译和激活。

xxx is client-specific and restricts access to a client. The calling AMDP method "AMDP_METHOD" must also allow this restriction.

在以下代码行中,ABAP 开发人员可以看到我如何在 AMDP 中调用 CDS 视图并使用 APPLY_FILTER 命令应用 WHERE 子句。

lt_vbrk = apply_filter ("Z_CDS_VIEW", :iv_where);

经过官网的搜索,我发现存储过程需要在 AMDP 类方法声明中定义其他 AMDP 选项。

需要修改 AMDP 方法定义如下:

class-methods AMDP_METHODAMDP OPTIONS READ-ONLYCDS SESSION CLIENT currentimporting
 value(iv_where) type stringexporting
 value(et_invoicelist_xl) type ZSOM_INF_INV_VBRK_TTraising cx_amdp_error .

方法的实现体无需进行任何修改。

如果指定了选项 READ-ONLY,则在数据库过程或数据库函数的实现中只允许读取数据库表。 只能调用也标记为只读的其他 AMDP 方法的数据库过程或数据库函数。 这通过语法检查或在运行时进行检查。

此属性也可以在使用 METHOD meth BY DATABASE PROCEDURE|FUNCTION 的 AMDP 方法的实现中使用附加选项来指定。 它适用于在声明或方法的实现中指定时,或两者兼而有之。

在 AMDP 函数或 L 过程的实现中,选项 READ-ONLY 必须至少指定一次。 如果在带有 RETURNING 参数的方法声明中使用了附加的 AMDP OPTIONS,则必须已在声明中指定选项 READ-ONLY。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
ABAP 7.53 中的ABAP SQL(原Open SQL)新特性
SAP RETAIL商品主数据Basic Data视图里几个让人莫名惊诧的字段
SAP 维护视图创建与修改
作为ABAP程序员怎么在HANA时代生存?
VOFM(例程)
SAP HANA数据建模秘籍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服