ABAP 选择屏幕填入值回车带出文本,内容或者权限报错

1.选择屏幕回车带出文本
ABAP 选择屏幕填入值回车带出文本,内容或者权限报错_第1张图片
2.对内容或者权限在选择屏幕上校验和报错
debug图
ABAP 选择屏幕填入值回车带出文本,内容或者权限报错_第2张图片
结果图
ABAP 选择屏幕填入值回车带出文本,内容或者权限报错_第3张图片
3.测试用例的代码

TABLES: likp,lips,vbak.

SELECTION-SCREEN BEGIN OF BLOCK bl01 WITH FRAME TITLE TEXT-001.

  PARAMETERS:P_vkorg  TYPE     likp-vkorg .
  SELECTION-SCREEN COMMENT 45(20)  Lv_text. "销售组织

  SELECTION-SCREEN SKIP 1."空一行

  SELECT-OPTIONS: s_auart  FOR    vbak-auart NO-EXTENSION NO INTERVALS . " 订单类型
  SELECTION-SCREEN COMMENT 45(20) Lv_text2."订单类型文本

SELECTION-SCREEN END OF BLOCK bl01.

INITIALIZATION .

AT SELECTION-SCREEN OUTPUT ."填写之后回车触发

  SELECT SINGLE vtext
   FROM tvkot
  WHERE vkorg = @P_vkorg
    AND spras = '1'
   INTO @Lv_text. "销售组描述 .

  SELECT SINGLE bezei
    FROM tvakt
   WHERE auart = @s_auart-low
     AND spras = '1'
    INTO @Lv_text2. "订单类型
  MODIFY SCREEN.


START-OF-SELECTION.
  "权限控制,填写内容控制
  AUTHORITY-CHECK OBJECT 'V_VBAK_VKO' "权限对象,问业务顾问来
   ID 'ACTVT' FIELD '03'   "显示
   ID 'VKORG' FIELD p_vkorg.
  IF sy-subrc <> 0.
    "消息属性是S成功类型的,但是表现形式是E错误的
    "这样会使错误信息保持着在选择屏幕上的。
    MESSAGE '您分配的权限不允许使用' && p_vkorg  TYPE 'S'  DISPLAY LIKE 'E'.
    STOP.
  ENDIF.

  "如果填写下的内容是多个销售组织SELECT-OPTIONS,他的权限控制是这样写
*  SELECT *
*   INTO TABLE @DATA(lt_vkorg)
*   FROM tvkot
*   WHERE vkorg IN @s_vkorg
*     AND spras = '1'.
*  LOOP AT lt_vkorg INTO DATA(ls_vkorg).
*    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
*     ID 'ACTVT' FIELD '03'
*     ID 'VKORG' FIELD ls_vkorg-vkorg.
*    IF sy-subrc <> 0.
*      MESSAGE '您分配的权限不允许使用' && ls_vkorg-vkorg  TYPE 'S'  DISPLAY LIKE 'E'.
*      STOP.
*    ENDIF.
*  ENDLOOP.

  "取数,报表显示
  WRITE:'成功进入报表'.

END-OF-SELECTION.

4.注意点
1.选择屏幕上,消息要 TYPE ‘S’ DISPLAY LIKE ‘E’ . STOP.才能在选择屏幕上报错。
2.在选择屏幕上,我暂时还没有发现除了回车之外的触发方式,如果你知道,你可以在下面留言提醒我。
3.权限校验,要根据业务的要求来设置拦截信息。

好了今天的分享到这
分享使我快乐,我是寒武青锋。
ABAP 选择屏幕填入值回车带出文本,内容或者权限报错_第4张图片

你可能感兴趣的:(ABAP,abap)