代码之家  ›  专栏  ›  技术社区  ›  7gegenTheben

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

  •  1
  • 7gegenTheben  · 技术社区  · 6 年前

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

        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
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Gert Beukema    6 年前

    这是有效的,它不漂亮。

    1. 将GUI状态INLI从程序SAPMSSY0复制到您自己的程序
    2. 更改“取消”按钮的“确定”代码。要使用示例代码,请将其更改为ECAN。同时将“编辑”菜单中的一个更改为“完成”
    3. 作为你生命中的第一个命令 START-OF-SELECTION 使用 SET PF-STATUS 'INLI'.
    4. 更改 AT SELECTION-SCREEN AT USER-COMMAND
    5. 激活、测试和惊奇