• [原]选择屏幕的一个例子


      
    REPORT  Z_ABAP05413_LOCALSCREEN.

    *&---------------------------------------------------------------------*
    *&  型定義
    *&---------------------------------------------------------------------*
    TABLES:SSCRFIELDS.                      "BLOCK TABLE
    TYPE-POOLS ICON.                        "ICON TYPE POOL

    *&---------------------------------------------------------------------*
    *&  変数定義
    *&---------------------------------------------------------------------*
    DATA:
      STRICON       TYPE STRING VALUE 'ICON_ENTER_MORE'.

    *&---------------------------------------------------------------------*
    *&  選択画面定義
    *&---------------------------------------------------------------------*

    "SUBSCREEN 100
    SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.

    "RADIOBUTTON BLOCK1
      SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.

    "RADIOBUTTON 定義
        PARAMETERS:
          P_RAD1 RADIOBUTTON GROUP GRP1 USER-COMMAND RADGROUP1,    "P_RAD1
          P_RAD2 RADIOBUTTON GROUP GRP1,    "P_RAD2
          P_RAD3 RADIOBUTTON GROUP GRP1.    "P_RAD3

      SELECTION-SCREEN END OF BLOCK BLK1.

    "RADIOBUTTON BLOCK2
      SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.

    "RADIOBUTTON 定義
        PARAMETERS:
          P_RAD4 RADIOBUTTON GROUP GRP2 USER-COMMAND RADGROUP2,    "P_RAD4
          P_RAD5 RADIOBUTTON GROUP GRP2,    "P_RAD5
          P_RAD6 RADIOBUTTON GROUP GRP2.    "P_RAD6

      SELECTION-SCREEN END OF BLOCK BLK2.

    SELECTION-SCREEN END OF SCREEN 100.

    "SUBSCREEN 200
    SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.

    "CHECKBOX 定義
        PARAMETERS:
          P_CHK1 AS CHECKBOX,               "P_CHK1
          P_CHK2 AS CHECKBOX,               "P_CHK2
          P_CHK3 AS CHECKBOX.               "P_CHK3

    SELECTION-SCREEN END OF SCREEN 200.

    "SUBSCREEN 300
    SELECTION-SCREEN:
      BEGIN OF SCREEN 300 AS SUBSCREEN,

    "PUSHBUTTON定義
        PUSHBUTTON 2(25)  BUT1 USER-COMMAND CLIT,

    "ULINE定義
        ULINE,
      END OF SCREEN 300.

    "SUBSCREEN 400
    SELECTION-SCREEN BEGIN OF SCREEN 400 AS SUBSCREEN.

    "LINE 定義
      SELECTION-SCREEN BEGIN OF LINE .

    "COMMENT定義
        SELECTION-SCREEN COMMENT 1(8) COMM1 FOR FIELD P_FROM.

    "PARAMETERS 定義
        PARAMETERS P_FROM(5)  TYPE C.

    "COMMENT定義
        SELECTION-SCREEN COMMENT 20(5) COMM2 FOR FIELD P_TO.

    "PARAMETERS 定義
        PARAMETERS P_TO(5)    TYPE C.

      SELECTION-SCREEN END OF LINE.

    "LINE 定義
      SELECTION-SCREEN BEGIN OF LINE.

    "COMMENT定義
        SELECTION-SCREEN COMMENT 1(35) COMM3 FOR FIELD P_INPUT.

    "PARAMETERS 定義
        PARAMETERS P_INPUT(10)       TYPE C.

    "COMMENT定義
        SELECTION-SCREEN COMMENT 50(10) COMM4.

      SELECTION-SCREEN END OF LINE.

    SELECTION-SCREEN END OF SCREEN 400.

    "4つSUBSCREEN一つBLCOK TABLE
    SELECTION-SCREEN:
      BEGIN OF TABBED BLOCK TAB1 FOR 10 LINES,

    "BLOCK TABLE定義
        TAB (20) BTN1 USER-COMMAND COM1 DEFAULT SCREEN 100"BTN1
        TAB (20) BTN2 USER-COMMAND COM2 DEFAULT SCREEN 200"BTN2
        TAB (20) BTN3 USER-COMMAND COM3 DEFAULT SCREEN 300"BTN3
        TAB (20) BTN4 USER-COMMAND COM4 DEFAULT SCREEN 400"BTN4

      END OF BLOCK TAB1.

    "WINDOWSCREEN定義
    SELECTION-SCREEN BEGIN OF SCREEN 500 AS WINDOW  TITLE TEXT-003.

    "PARAMETERS 定義
      PARAMETERS P_IN  TYPE C LENGTH 10.    "P_IN

    SELECTION-SCREEN END OF SCREEN 500.

    *&---------------------------------------------------------------------*
    *& INITIALIZATION.
    *&---------------------------------------------------------------------*
    INITIALIZATION.
      BTN1    = 'ラジオボタン'.
      BTN2    = 'チェックボックス'.
      BTN3    = 'プッシュボタン'.
      BTN4    = 'PARAMETERS'.
      BUT1    = '画面を開く'.
      COMM1   = 'FROM'.
      COMM2   = 'TO'.
      COMM3   ='入力'.

    "タイル定義
    CONCATENATE '日付:' SY-DATUM+0(4'/' SY-DATUM+4(2'/' SY-DATUM+6(2INTO SY-TITLE.

    "ICON 更新
    PERFORM ICONCREATE USING STRICON.

    *&---------------------------------------------------------------------*
    *&  前処理
    *&---------------------------------------------------------------------*
    AT SELECTION-SCREEN.

    "COMMENT 値をあげる
      COMM4 = P_INPUT.

    "SSCRFIELDS
    CASE SSCRFIELDS.

    "RADIOBUTTON事件
      WHEN 'RADGROUP1' OR 'RADGROUP2'.

    "RADIOBUTTONチェック

        PERFORM RADBUTTONCHECK USING SY-UCOMM.

    "PUSHBUTTON事件
      WHEN 'CLIT'.
        CLEAR SSCRFIELDS.
        CALL SELECTION-SCREEN 500 STARTING AT 10 30.

    "ENTER事件
      WHEN 'CRET'.
        IF P_IN IS NOT INITIAL.

          IF STRICON = 'ICON_DISPLAY_MORE'.
            STRICON = 'ICON_ENTER_MORE'.
          ELSE.
            STRICON = 'ICON_DISPLAY_MORE'.
          ENDIF.

    ""ICON 更新 調用
          PERFORM ICONCREATE USING STRICON.
        ENDIF.

    ENDCASE.

    *&---------------------------------------------------------------------*
    *&  終了処理
    *&---------------------------------------------------------------------*

    *&---------------------------------------------------------------------*
    *&      Form  RADBUTTONCHECK
    *&---------------------------------------------------------------------*
    *       RADIOBUTTON選択して処理
    *----------------------------------------------------------------------*

    FORM RADBUTTONCHECK USING LI_UCOMM TYPE SY-UCOMM.

    "RADIOBUTTON1選択事件
      IF LI_UCOMM = 'RADGROUP1'.
        IF P_RAD1 = 'X'.
          CLEAR: P_RAD2,P_RAD3,P_RAD5,P_RAD6.
          P_RAD4 = P_RAD1.
        ENDIF.

        IF P_RAD2 = 'X'.
          CLEAR: P_RAD1,P_RAD3,P_RAD4,P_RAD6.
          P_RAD5 = P_RAD2.
        ENDIF.

        IF P_RAD3 = 'X'.
          CLEAR: P_RAD1,P_RAD2,P_RAD4,P_RAD5.
          P_RAD6 = P_RAD3.
        ENDIF.
      ELSE.
         IF P_RAD4 = 'X'.
          CLEAR: P_RAD2,P_RAD3,P_RAD5,P_RAD6.
          P_RAD1 = P_RAD4.
        ENDIF.

        IF P_RAD5 = 'X'.
          CLEAR: P_RAD1,P_RAD3,P_RAD4,P_RAD6.
          P_RAD2 = P_RAD5.
        ENDIF.

        IF P_RAD6 = 'X'.
          CLEAR: P_RAD1,P_RAD2,P_RAD4,P_RAD5.
          P_RAD3 = P_RAD6.
        ENDIF.
      ENDIF.

    ENDFORM.                    " RADBUTTONCHECK

    *&---------------------------------------------------------------------*
    *&      Form  ICONCREATE
    *&---------------------------------------------------------------------*
    *       ICON変更
    *----------------------------------------------------------------------*
    *  -->  LI_ICON        ICON名前
    *----------------------------------------------------------------------*
    FORM ICONCREATE
      USING LI_ICON TYPE STRING.                  "ICON名前

      CALL FUNCTION 'ICON_CREATE'
        EXPORTING
          NAME                      = LI_ICON     "ICON名前
          TEXT                      = '画面を開く'  "タイル
        IMPORTING
          RESULT = BUT1                           "対象ボタン
        EXCEPTIONS
          ICON_NOT_FOUND            = 1
          OUTPUTFIELD_TOO_SHORT     = 2
        OTHERS                      = 3.

      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.

    ENDFORM.                    " ICONCREATE
    运行后实现的效果

    开始界面

      

    如果选择了第二个按钮。操作如下:

    第二个子屏幕:

    第三个子屏幕:

    点击pushbutton之后:

    输入值后按f8

    第四个屏幕:

    输入值后回车

     

      

     

  • 相关阅读:
    华为 简单OSPF实验
    华为 基于MAC地址的VLAN划分
    完全背包
    01背包问题
    90. 子集 II
    Java去除字符串中的特殊符号或者指定的字符
    Java查找指定文件夹下的所有文件
    Java面试基础
    Spring获取ApplicationContext
    JSP & EL & JSTL
  • 原文地址:https://www.cnblogs.com/wequst/p/1513988.html
Copyright © 2020-2023  润新知