Abap 使用ACTVT=01或02进行权限检查

Abap 使用ACTVT=01或02进行权限检查,abap,sap-basis,Abap,Sap Basis,我需要检查ACTVT是01还是02,选择屏幕中的WERKS,范围A、B、C、K、R、O中的DIRECT–Y和VD。下面的代码没有检查这些字母,在测试中我可以选择任何字母,而不仅仅是按预期选择lv_值。有什么建议可以参考,或者有其他解决方案吗 CALL FUNCTION 'Z_GET_PARAMS' EXPORTING iv_repid = 'ZMM_LIM' iv_param = 'VD' IMPORTING

我需要检查ACTVT是01还是02,选择屏幕中的WERKS,范围A、B、C、K、R、O中的DIRECT–Y和VD。下面的代码没有检查这些字母,在测试中我可以选择任何字母,而不仅仅是按预期选择lv_值。有什么建议可以参考,或者有其他解决方案吗

CALL FUNCTION 'Z_GET_PARAMS'
      EXPORTING
        iv_repid        = 'ZMM_LIM'
        iv_param        = 'VD'
     IMPORTING
       et_values       = lt_values.

    LOOP AT lt_values ASSIGNING FIELD-SYMBOL(<lf_values>).

* Проверка прав
      AUTHORITY-CHECK OBJECT 'ZMM_LIMIT'
             ID 'ACTVT' FIELD '01'
             ID 'ACTVT' FIELD '02'
             ID 'WERKS' FIELD s_werks
             ID 'DIRCT' FIELD 'Y'
             ID 'VD' FIELD <lf_values>-low
调用函数“Z_GET_PARAMS”
出口
iv_repid='ZMM_LIM'
iv_参数='VD'
进口
et_值=lt_值。
在指定字段-SYMBOL()的lt_值处循环。
* Проверка прав
权限检查对象“ZMM\U限制”
ID“ACTVT”字段“01”
ID“ACTVT”字段“02”
ID“WERKS”字段s_WERKS
ID“DIRCT”字段“Y”
ID“VD”字段-低

据我所知,您不能在一个
权限检查
语句中多次使用同一字段-您必须自己执行
。如果您得到
sy subrc=24
,表示编程错误而不是缺少权限,我不会感到惊讶。

需要更多信息。你能在你的帖子里写上你所有的代码吗?如果可能的话,包括一个带有授权对象“ZMM_LIMIT”的事务“SU21”的屏幕截图。它甚至不是以当前形式开始的。请更正,但看起来权限检查不允许使用“或”语句?我应该做两次不同的检查,用一些IF语句隔开吗?@AlexanderK。