어디서 인지 찾아서 원노트에 저장되어 있는 소스 출처는 알 수 없어요…
*&---------------------------------------------------------------------*
*& Report YBKTEMP
*&
*&---------------------------------------------------------------------*
*--------------------------------------------------------------------*
* 스크린에서 버튼을 tree 처럼 만들기.
*--------------------------------------------------------------------*
REPORT YBKTEMP.
TABLES : SSCRFIELDS.
DATA : G_CODE TYPE SSCRFIELDS-UCOMM. "FUNCTION CODE
INCLUDE <ICON>.
PARAMETERS : P_CB0(1) TYPE C NO-DISPLAY, "Close Block 0
P_CB1(1) TYPE C NO-DISPLAY. "Close Block 1
SELECTION-SCREEN FUNCTION KEY 1."expand all blocks
SELECTION-SCREEN FUNCTION KEY 2. "collapse all blocks
***************** Block 00 *** Description data file
SELECTION-SCREEN : PUSHBUTTON /1(72) PUSHB_O0 "Open Block 00
USER-COMMAND UCOMM_O0 MODIF ID MO0,
PUSHBUTTON /1(72) PUSHB_C0 "Close Block 00
USER-COMMAND UCOMM_C0 MODIF ID MC0.
SELECTION-SCREEN BEGIN OF BLOCK B0 WITH FRAME TITLE TEXT-000.
PARAMETERS: P_DOWN00 TYPE DOWNLOADX AS CHECKBOX MODIF ID MC0.
SELECTION-SCREEN END OF BLOCK B0.
***************** Block 01 *** Report 01
SELECTION-SCREEN:
PUSHBUTTON /1(72) PUSHB_O1 "Open Block 01
USER-COMMAND UCOMM_O1 MODIF ID MO1,
PUSHBUTTON /1(72) PUSHB_C1 "Close Block 01
USER-COMMAND UCOMM_C1 MODIF ID MC1.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_REP01 AS CHECKBOX MODIF ID MC1."DEFAULT 'X'.
PARAMETERS: P_VAR01 LIKE VARID-VARIANT MODIF ID MC1.
SELECTION-SCREEN END OF BLOCK B1.
INITIALIZATION.
* Close Selection-Screen
P_CB0 = 'X'. P_CB1 = 'X'.
* Set Text & Icon for application bar
CONCATENATE ICON_EXPAND: 'Expand all blocks'
INTO SSCRFIELDS-FUNCTXT_01.
CONCATENATE ICON_COLLAPSE: 'Collapse all blocks'
INTO SSCRFIELDS-FUNCTXT_02.
* Set Text & Icon for Pushbutton
CONCATENATE ICON_COLLAPSE: 'Block 00' INTO PUSHB_C0,
'Block 01' INTO PUSHB_C1 .
CONCATENATE ICON_EXPAND: 'Block 00' INTO PUSHB_O0,
'Block 01' INTO PUSHB_O1.
AT SELECTION-SCREEN.
G_CODE = SSCRFIELDS-UCOMM.
CASE G_CODE.
*Expand all blocks
WHEN 'FC01'.
PERFORM EXPAND_ALL_BLOCKS.
*Collapse all blocks
WHEN 'FC02'. "Collapse all blocks
PERFORM COLLAPSE_ALL_BLOCKS.
*Open/close individual block functions
WHEN 'UCOMM_O0'. "Open Block 0
CLEAR P_CB0.
WHEN 'UCOMM_C0'. "Close Block 0
P_CB0 = 'X'.
WHEN 'UCOMM_O1'. "Open Block 1
CLEAR P_CB1.
WHEN 'UCOMM_C1'. "Close Block 1
P_CB1 = 'X'.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
*modify screen according predefined screen group
LOOP AT SCREEN.
CASE SCREEN-GROUP1.
WHEN 'MC0'.
PERFORM CLOSE_BLOCK USING: P_CB0 'MC0' SPACE.
WHEN 'MO0'.
PERFORM CLOSE_BLOCK USING: P_CB0 'MO0' 'X' .
WHEN 'MC1'.
PERFORM CLOSE_BLOCK USING: P_CB1 'MC1' SPACE.
WHEN 'MO1'.
PERFORM CLOSE_BLOCK USING: P_CB1 'MO1' 'X' .
WHEN OTHERS.
CONTINUE.
ENDCASE.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form close_block
*&---------------------------------------------------------------------*
FORM CLOSE_BLOCK USING VALUE(I_CLOSE_BLOCK) LIKE P_CB1
VALUE(I_MODIFY_ID) LIKE SCREEN-GROUP1
VALUE(I_CONVERT) TYPE CHAR1.
IF NOT I_CONVERT IS INITIAL.
IF I_CLOSE_BLOCK IS INITIAL.
I_CLOSE_BLOCK = 'X'.
ELSE.
CLEAR I_CLOSE_BLOCK.
ENDIF.
ENDIF.
IF ( SCREEN-GROUP1 = I_MODIFY_ID )
AND ( NOT I_CLOSE_BLOCK IS INITIAL ).
SCREEN-ACTIVE = '0'.
MODIFY SCREEN.
ENDIF.
ENDFORM. "close_block
*&---------------------------------------------------------------------*
*& Form collapse_all_blocks
*&---------------------------------------------------------------------*
FORM COLLAPSE_ALL_BLOCKS.
P_CB0 = 'X'.P_CB1 = 'X'.
ENDFORM. "collapse_all_blocks
*&---------------------------------------------------------------------*
*& Form expand_all_blocks
*&---------------------------------------------------------------------*
FORM EXPAND_ALL_BLOCKS.
CLEAR: P_CB0,P_CB1 .
ENDFORM. "expand_all_blocks
'SAP > ABAP' 카테고리의 다른 글
Global MACRO (0) | 2015.11.26 |
---|---|
Useful ABAP Package (0) | 2015.11.18 |
ALV DISPLAY화면에 SCREEN 1000 넣기 (0) | 2014.08.25 |
SMW0 (0) | 2014.08.25 |
= '' 와 = ' '가 같다? (0) | 2010.07.19 |