现在的位置: 首页 > 综合 > 正文

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

2013年03月10日 ⁄ 综合 ⁄ 共 6280字 ⁄ 字号 评论关闭

  


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

第四个屏幕:

输入值后回车

 

  

 

抱歉!评论已关闭.