乐趣区

关于sap:关于-SAP-AMDP-调用错误消息-restricts-access-to-a-client

近日一个敌人做 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_METHOD
AMDP OPTIONS READ-ONLY
CDS SESSION CLIENT current
importing
 value(iv_where) type string
exporting
 value(et_invoicelist_xl) type ZSOM_INF_INV_VBRK_TT
raising cx_amdp_error .

办法的实现体无需进行任何批改。

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

此属性也能够在应用 METHOD meth BY DATABASE PROCEDURE|FUNCTION 的 AMDP 办法的实现中应用附加选项来指定。它实用于在申明或办法的实现中指定时,或两者兼而有之。

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

退出移动版