我需要检查ACTVT是01还是02,WERKS来自选择屏幕,DIRCT-Y和VD来自A,B,C,K,R,O范围。下面的代码没有检查这些字母,测试我可以选择任何,不仅按照预期选择lv_values。任何建议在哪里查看,或者可能有另一种解决方案?
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
答案 0 :(得分:3)
据我所知,您在一个AUTHORITY-CHECK
语句中不能多次使用相同的字段 - 您必须自己为OR
执行此操作。如果你得到sy-subrc = 24
,我不会感到惊讶,这表示编程错误而不是缺少权限。