Abap 如何在写入后将程序与f12分开

Abap 如何在写入后将程序与f12分开,abap,Abap,一旦我在ABAP中离开选择屏幕,例如通过写入:如何重写取消按钮行为?在我下面的简短代码中,每次单击“执行”然后单击“取消”,我都会回到选择屏幕:(与此行为不同,我希望在单击“写入输出”红色按钮时完全退出程序 PARAMETERS p_output AS CHECKBOX DEFAULT ' '. SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN. SELECTION-SCREEN BEGIN OF BLOCK such

一旦我在ABAP中离开选择屏幕,例如通过写入:如何重写取消按钮行为?在我下面的简短代码中,每次单击“执行”然后单击“取消”,我都会回到选择屏幕:(与此行为不同,我希望在单击“写入输出”红色按钮时完全退出程序

    PARAMETERS p_output AS CHECKBOX DEFAULT ' '.

    SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
    SELECTION-SCREEN BEGIN OF BLOCK such WITH FRAME TITLE text-001.
    "...
    SELECTION-SCREEN END OF BLOCK such.
    SELECTION-SCREEN END OF SCREEN 101.

    SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.
    SELECTION-SCREEN BEGIN OF BLOCK such2 WITH FRAME TITLE text-002.
    "...
    SELECTION-SCREEN END OF BLOCK such2.
    SELECTION-SCREEN END OF SCREEN 102.


    SELECTION-SCREEN BEGIN OF TABBED BLOCK searchtab FOR 20 LINES.
    SELECTION-SCREEN TAB (15) expert USER-COMMAND ucomm1
    DEFAULT SCREEN 101.
    SELECTION-SCREEN TAB (17) common USER-COMMAND ucomm2
    DEFAULT SCREEN 102.
    SELECTION-SCREEN END OF BLOCK searchtab.

    INITIALIZATION.
      expert = text-001.
      common = text-002.
      searchtab-prog = sy-repid.
      searchtab-dynnr = 101.
      searchtab-activetab = 'EXPERT_SEARCH'.

      "...
       AT SELECTION-SCREEN ON EXIT-COMMAND.

      CASE sy-dynnr.
        WHEN 1000."main screen number
          CASE sy-ucomm.
            WHEN 'ECAN'.
               LEAVE PROGRAM.
            WHEN 'DBAC' OR 'ENDE'. "execute go back
               LEAVE TO SCREEN 1000." SELECTION-SCREEN 1000.
            WHEN 'UCOMM1'.
               searchtab-dynnr = 101."subscreen number 1
               searchtab-activetab = 'EXPERT'.
            WHEN 'UCOMM2'.
              searchtab-dynnr = 102."subscreen number 2
              searchtab-activetab = 'COMMON'.
            ENDCASE.
        WHEN Others.
            CASE sy-ucomm.
               WHEN 'ECAN'.
              LEAVE PROGRAM.
             WHEN 'DBAC' OR 'ENDE'. "execute go back
                LEAVE TO SCREEN 1000." SELECTION-SCREEN 1000.
              ENDCASE.
        ENDCASE.

        START-OF-SELECTION.
        PERFORM say_hello.

     FORM say_hello .
        WRITE: 'from the write output screen I want to navigate by Cancel button or key f12', 
       'not back to selection screen but leave the program entirely.'.
      ENDFORM.                    " SAY_HELLO

这就是有效的方法,它并不漂亮

  • 将GUI状态INLI从程序SAPMSY0复制到您自己的程序中
  • 更改“取消”按钮的“确定”代码。若要使用示例代码,请将其更改为ECAN。同时将“编辑”菜单中的代码更改为“完整”
  • 作为
    开始选择的第一个命令
    使用
    设置PF-STATUS“INLI”。
    这是假设您将其命名为相同的名称
  • 将选择屏幕上的
    更改为用户命令下的
  • 激活、测试和惊奇

  • 这是因为它删除了列表的标准行为,并将其替换为您自己的行为,仅用于“取消”按钮。如果不更改“取消”的“确定”代码,则标准SAP代码将接管,您将无法控制该行为。

    您能解释一下在何处更改按钮的“确定”代码吗?是否在菜单中在什么地方?对不起,我刚刚知道怎么做。酷。只需要在SE41的状态字段中键入INLI。