我想它跳过必填字段,当我点击'İptal‘按钮。
但我不想在没有“必填”的情况下控制必填字段。我想看到像截图这样的文本框中的复选标记。
通常,当没有必填字段时,'İptal‘按钮调用不同的屏幕。

注意:屏幕是标准的选择屏幕。
发布于 2017-08-04 21:37:23
我解决这个问题的方法不是让字段在布局中成为必填项,而是在你的代码中创建一些条件,例如我的输入输出字段名为ekpo-ebeln:
IF ekpo-ebeln IS INITIAL.
CASE ok_code.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
CALL SCREEN 100.
ENDCASE.
MESSAGE 'Fill both of the fields' TYPE 'I'.这解决了我的问题,而且它起作用了!
发布于 2013-02-26 19:32:21
您需要做的是为屏幕上的按钮分配一个功能代码,该代码的功能类型为"Exit“。
在验证屏幕上的字段之前,系统会调用此事件。在这里,您可以实现所有必要的逻辑。
然而,我能想到的唯一方法就是将标准的图形用户界面状态退出从程序RSSYSTDB复制到你的程序中,然后添加你的函数代码并将其设置为“%_00”类型。然后,在AT SELECTION-SCREEN OUTPUT中,您可以使用SET PF-STATUS命令覆盖标准的图形用户界面状态。
编辑:我刚刚试过了,它起作用了,但是当把功能代码分配给按钮(使用SELECTION-SCREEN PUSHBUTTON)时就不行了。相反,我必须将函数代码作为按钮添加到工具栏上。然后它触发AT SELECTION-SCREEN OUTPUT事件)。
GUI 2: (刚刚将我的评论从下面复制到这里,因为这很重要),顺便说一句,当我复制它时,我不得不将%_00状态重命名为其他名称。
发布于 2017-03-26 00:16:32
您可以使用以下技巧来实现您的需求。
前提条件:
OBLIGATORY子句声明你的参数。此约束将覆盖选择屏幕处理过程中的所有内部检查和验证。ONLI fcode,而İptal有fcode参数: p_matnr类型mara-matnr ID OBL,p_mtart类型mara-mtart MODIF ID OBL。
解决方案详细信息:
在选择-屏幕输出。设置PF-STATUS 'SSCR‘。"<<-我们的GUI-status循环AT SCREEN。如果screen-group1 = 'OBL'. screen-required = '2‘。"<<-默认必填类字段外观修改SCREEN。ENDIF。ENDLOOP。如果sy-ucomm = 'ONLI‘。"<<-使字段在屏幕上真正强制循环。IF screen-group1 = 'OBL‘。screen-required = '1’。修改Screen.ENDIF.ENDLOOP.ENDIF.
在选择屏幕上。如果sy-ucomm = 'ONLI‘。左转到1000号屏幕。ENDIF。如果sy-ucomm = 'IPT‘。“ENDIF.
解释:在程序启动时,你的字段的required属性设置为2,这意味着它们有必选标记,但并不是真正的必选,也就是说,这正是你需要的。您可以完美地按下您的İptal按钮并运行任何其他程序。
但是,如果您想启用强制约束,只需按下标准执行,它将再次调用我们的选择屏幕(LEAVE TO SCREEN 1000),但使用另一个required属性被覆盖的ONLI fcode,瞧!在您填写这些字段之前,不可能进行进一步的工作。
https://stackoverflow.com/questions/15084916
复制相似问题