-->

如何跳过ABAP必填字段(How to skip mandatory fields on ABAP)

2019-10-17 18:18发布

我想,当我在“İptal”按钮,点击它跳过必填项目。

但我不想控制没有“强制性”必填字段。 我想看看查马克像截图文本框。

通常,“İptal”按钮调用时,有没有强制性的领域不同的屏幕。

注:屏幕是标准选择屏幕。

Answer 1:

什么,你需要做的是分配到按钮具有功能型“退出”屏幕上的功能代码。

然后你可以使用事件AT SELECTION-SCREEN ON EXIT-COMMAND在报告中(我假设你是在谈论一个报告,因为你谈论选择屏幕)。 此事件是由系统验证屏幕上的字段之前调用。 在这里,你可以实现你的一切必要的逻辑。

不过,我能想到的是如何做到这一点的唯一方法是标准的GUI状态复制%_00从程序RSSYSTDB到您的程序,并添加你的功能代码,并使其成为键入“exit”。 然后,在AT SELECTION-SCREEN OUTPUT ,你可以使用SET PF-STATUS命令覆盖标准GUI状态。 (否则,如果您分配的功能码到您的按钮,但它不会得到特殊的待遇触发ON EXIT-COMMAND事件)。

编辑:我只是想这和它的作品,但分配的功能代码到一个按钮而不是当(使用SELECTION-SCREEN PUSHBUTTON )。 相反,我不得不添加该功能码为工具栏上的按钮。 然后,它会触发AT SELECTION-SCREEN OUTPUT事件)。

编辑2:( 只是复制从下面我的评论到这里,因为它要注意的是)顺便说一下,我有我的时候抄它的%_00 GUI状态重命名为别的东西。 否则,指定除了从程序中SET PF-STATUS情况下,也仍然会使用来自RSSYSTDB老GUI状态。



Answer 2:

我已经解决了这个不使场中的布局,但在你的代码来创建一些条件,例如,我有我的输入输出领域称为埃克波 - 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'.

这解决了我的问题,和它的作品!



Answer 3:

你可以做下面的技巧来实现您的要求。

先决条件:

  1. 首先和最重要的! 使用申报您的参数OBLIGATORY条款。 这种约束将覆盖选择屏幕处理过程中所有的内部检查和验证。

  2. 在这里,我假设你使用标准的GUI状态与应用工具栏激活按钮。 标准执行按钮有标准ONLI FCODE,而İptal具有IPT

  3. 为了操纵我们需要分配给他们的ID目标字段:

     PARAMETERS: p_matnr TYPE mara-matnr MODIF ID OBL, p_mtart TYPE mara-mtart MODIF ID OBL. 

解决方案的详细信息:

  1. 声明AT SELECTION-SCREEN OUTPUT事件,其中字段的属性会被编辑。

     AT SELECTION-SCREEN OUTPUT. SET PF-STATUS 'SSCR'. "<<- our GUI-status LOOP AT SCREEN. IF screen-group1 = 'OBL'. screen-required = '2'. "<<- default obligatory-like field appearance MODIFY SCREEN. ENDIF. ENDLOOP. IF sy-ucomm = 'ONLI'. "<<- making fields really obligatory LOOP AT SCREEN. IF screen-group1 = 'OBL'. screen-required = '1'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. 
  2. 在处理AT SELECTION-SCREEN事件的功能代码。

     AT SELECTION-SCREEN. IF sy-ucomm = 'ONLI'. LEAVE TO SCREEN 1000. ENDIF. IF sy-ucomm = 'IPT'. "<do whatever you want> ENDIF. 

说明:在程序启动领域都required的属性设置为2,这意味着它们具有强制性蜱,但没有真正的作用就像强制性的 ,即是你所需要的东西。 您可以完全按你的İptal按钮,运行任何其他程序。
但是,如果要启用强制性的约束,你只需按标准执行,并再次调用我们的选择屏幕( LEAVE TO SCREEN 1000 ),但与其他FCODE( ONLI赖以) required属性被重写,瞧! 去进一步直到您填写这些字段是不可能的。



文章来源: How to skip mandatory fields on ABAP