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(2) INTO 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
第四个屏幕:
输入值后回车