屏幕上的报错
多个屏幕时的报错,无非是消息提示,程序中止.
而在程序中能合适消息提示的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 '中文'.