Message 报错

 屏幕上的报错

多个屏幕时的报错,无非是消息提示,程序中止.

而在程序中能合适消息提示的pbo和pai事件是非常常用

它们的区别造成了下面的三种情况

其中中断中止程序用stop和check都是常用手段

而LEAVE LIST-PROCESSING.

此语句立即退出列表处理程序。执行期函式库继续处理 dynpro 的 PBO 事件,从这个事件中使用 LEAVE TO lIST-ProcessING 调用列表处理器,或者使用添加 AND RETURN TO SCREEN 语句设置 dynpro。

这样子的话 报错会返回包选择屏幕,如果 LEAVE LIST-PROCESSING.下面还有代码也不会继续往下执行。
实际效果如下SAP LEAVE LIST-PROCESSING报错后返回到选择界面-CSDN博客

 LEAVE LIST-PROCESSING AND RETURN TO SCREEN 1000 .

常用的屏幕退出操作:
LEAVE TO SCREEN 0.
LEAVE LIST-PROCESSING.
如果是两级以上的多层屏幕,直接使用
LEAVE TO CURRENT TRANSACTION.
返回 到选择屏幕。

当进入选择屏幕前报错

即输入tcode时报错,你没有权限之类的.

结论:在AT SELECTION-SCREEN OUTPUT.或者INITIALIZATION.事件报错

代码点:

MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE PROGRAM.

符合情况

PARAMETERS P_I TYPE C AS CHECKBOX ."USER-COMMAND ZER."DEFAULT
AT SELECTION-SCREEN OUTPUT.
  MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
  LEAVE PROGRAM.

START-OF-SELECTION.
WRITE '中文'.

不符合情况

PARAMETERS P_I TYPE C AS CHECKBOX ."USER-COMMAND ZER."DEFAULT
AT SELECTION-SCREEN OUTPUT.
  MESSAGE 'You have no authority' TYPE 'E'.


START-OF-SELECTION.
WRITE '中文'.

情况分析 

*位置零
MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
PARAMETERS P_I TYPE C AS CHECKBOX ."USER-COMMAND ZER."DEFAULT
*位置一
MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错
*位置二
"MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
INITIALIZATION.
*位置三
"MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
AT SELECTION-SCREEN.
*位置四
"MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
START-OF-SELECTION.
*位置五
"MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
WRITE '中文'.

位置二,三:在进入选择界面前就可以进行报错

位置零,一,四,五 都是进入选择界面后执行后才会报错

MESSAGE '错误' TYPE 'W' DISPLAY LIKE 'E'.

这条报错可以用于位置零,一,四,五 其中位置零,一,五效果相同执行选择屏幕后报错终止只能退出

位置四可以实现按钮效果报错与MESSAGE '错误' TYPE  'E'.语句在位置四效果一致

IF sy-uname = '用户名'.
*位置零
MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
CHECK sy-uname = '用户名'.
PARAMETERS P_I TYPE C AS CHECKBOX .
START-OF-SELECTION.
*位置五
"MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
WRITE '中文'.

上述效果与位置零的效果一样

MESSAGE 'You have no authority' TYPE 'S' DISPLAY LIKE 'E'.
PARAMETERS P_I TYPE C AS CHECKBOX .
START-OF-SELECTION.
WRITE '中文'.

在选择界面操作时,根据输入或点击报错.

这里需要细分

输入后直接报错.

PARAMETERS P_I TYPE C AS CHECKBOX USER-COMMAND ZER."DEFAULT 'X'

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错
IF P_I = 'X'.
  MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'."type  'E'."TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.
IF P_I = 'X'.
  MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'.
  "stop.或者
  LEAVE LIST-PROCESSING.
ENDIF.
WRITE '中文'.

方式二

PARAMETERS P_I TYPE C AS CHECKBOX USER-COMMAND ZER."DEFAULT 'X'

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错
IF P_I = 'X'.
  MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'."type  'E'."TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.
CHECK P_I <> 'X'.
WRITE '中文'.

方式三

PARAMETERS P_I TYPE C AS CHECKBOX USER-COMMAND ZER."DEFAULT 'X'

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错

INITIALIZATION.

AT SELECTION-SCREEN.
IF P_I = 'X'.
  MESSAGE '错误' TYPE  'E'.
ENDIF.

START-OF-SELECTION.

WRITE '中文'.

方式四

PARAMETERS P_I TYPE C AS CHECKBOX USER-COMMAND ZER."DEFAULT 'X'
AT SELECTION-SCREEN OUTPUT.
AT SELECTION-SCREEN.
IF P_I = 'X'.
  MESSAGE '错误' TYPE  'S' DISPLAY LIKE 'E'.
  STOP.
ENDIF.
START-OF-SELECTION.
WRITE '中文'.

输入后点击按钮或执行才报错.

方式一

PARAMETERS P_I TYPE C AS CHECKBOX ."USER-COMMAND ZER."DEFAULT 'X'

AT SELECTION-SCREEN OUTPUT.

INITIALIZATION.

AT SELECTION-SCREEN.
IF P_I = 'X'.
  MESSAGE '错误' TYPE  'S' DISPLAY LIKE 'E'.
  STOP.
ENDIF.
START-OF-SELECTION.
WRITE '中文'.

方式二

PARAMETERS P_I TYPE C AS CHECKBOX .

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错
IF P_I = 'X'.
  MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'."type  'E'."TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.
CHECK P_I <> 'X'.
WRITE '中文'.

方式三

PARAMETERS P_I TYPE C AS CHECKBOX .

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错
IF P_I = 'X'.
  MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'."type  'E'."TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.
IF P_I = 'X'.
  STOP.
ENDIF.
WRITE '中文'.

方式四(和五)

PARAMETERS P_I TYPE C AS CHECKBOX .

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.
IF P_I = 'X'.
  MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'.
  stop."或者
  "LEAVE LIST-PROCESSING.
ENDIF.
WRITE '中文'.

方式六

PARAMETERS P_I TYPE C AS CHECKBOX .

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错
IF P_I = 'X'.
  MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'."type  'E'."TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.
IF P_I = 'X'.
  MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
CHECK P_I <> 'X'.
WRITE '中文'.

方式七

TABLES:sscrfields.
PARAMETERS P_I TYPE C AS CHECKBOX .

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错

INITIALIZATION.

AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
    WHEN 'ONLI'.
      IF p_i = 'X'.
        MESSAGE '错误' TYPE 'E'.
      ENDIF.
  WHEN OTHERS.
ENDCASE.
START-OF-SELECTION.

WRITE '中文'.

方式八

TABLES:sscrfields.
PARAMETERS P_I TYPE C AS CHECKBOX .

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错

INITIALIZATION.

AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
    WHEN 'ONLI'.
      IF p_i = 'X'.
        MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'.
      ENDIF.
  WHEN OTHERS.
ENDCASE.
START-OF-SELECTION.
IF P_I = 'X'.
  stop."或者
  "LEAVE LIST-PROCESSING.
"或者
"CHECK p_i <> 'X'.
ENDIF.
WRITE '中文'.

勾选后直接报错,有问题当勾选后报错取消勾选,需要执行两次才能执行.

PARAMETERS P_I TYPE C AS CHECKBOX USER-COMMAND ZER."DEFAULT

AT SELECTION-SCREEN OUTPUT."进入选择界面之前就开始判断是否报错
IF P_I = 'X'.
  MESSAGE '错误' TYPE 'S' DISPLAY LIKE 'E'.
  stop.
ENDIF.
INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.

WRITE '中文'.

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值