REPORT ZTREE.
** Ejemplo
SELECTION-SCREEN:
SKIP 1,
BEGIN OF LINE,
COMMENT 1(2) TEXT-801,
PUSHBUTTON 4(2) TEXT-802 USER-COMMAND B01,
END OF LINE,
BEGIN OF LINE,
COMMENT 5(1) TEXT-803,
COMMENT 6(3) TEXT-801,
COMMENT 10(28) TEXT-001.
PARAMETERS: P_SEPARA(2) TYPE N DEFAULT '03'.
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 5(1) TEXT-803,
COMMENT 6(3) TEXT-801,
PUSHBUTTON 10(2) TEXT-802 USER-COMMAND B02,
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN001(30).
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN002(30).
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN003(30).
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN004(30).
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN005(30).
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN006(30).
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN007(30).
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN008(30).
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN009(30).
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 11(1) TEXT-803,
COMMENT 12(3) TEXT-801,
COMMENT 16(22) TEXT-003.
PARAMETERS LIN010(30).
SELECTION-SCREEN:
END OF LINE.
* Ini ---------------------------------------------- Rutina Standard
DATA: BEGIN OF STAB OCCURS 0.
INCLUDE STRUCTURE SCREEN.
DATA: ON(1),
END OF STAB.
DATA: CX(2) TYPE N.
INITIALIZATION.
* Ini ---------------------------------------------- Only for example
LIN001 = '+,TEXT-001,1'.
LIN002 = '++,TEXT-002,1'.
LIN003 = '++,TEXT-002,1'.
LIN004 = '++,TEXT-002,1'.
LIN005 = '++,TEXT-002,1'.
LIN006 = '++,TEXT-002,1'.
LIN007 = '++,TEXT-002,1'.
LIN008 = '++,TEXT-002,1'.
LIN009 = '++,TEXT-002,1'.
LIN010 = '++,TEXT-002,1'.
* Fin ---------------------------------------------- Only for example
LOOP AT SCREEN.
MOVE-CORRESPONDING SCREEN TO STAB.
STAB-ON = 'X'.
APPEND STAB.
ENDLOOP.
CX = 1.
AT SELECTION-SCREEN.
CLEAR CX.
IF SY-UCOMM+0(1) = 'B' AND
SY-UCOMM+1(1) CO '1234567890' AND
SY-UCOMM+2(1) CO '1234567890'.
CX = SY-UCOMM+1(2).
ENDIF.
AT SELECTION-SCREEN OUTPUT.
DATA: DI TYPE I,
SI(1).
CHECK CX > 0.
CLEAR DI.
LOOP AT SCREEN.
IF SCREEN-NAME+0(2) = '%P'.
IF CX > 0. CX = CX - 1. ENDIF.
ENDIF.
CHECK CX = 0.
IF DI = 0.
CHECK SCREEN-NAME+0(2) NE '%P'.
ENDIF.
ADD 1 TO DI.
READ TABLE STAB WITH KEY NAME = SCREEN-NAME.
IF DI > 1.
STAB-ON = SI.
ENDIF.
IF DI = 1. SI = STAB-ON. ENDIF.
IF STAB-ON = 'X'.
SCREEN-INVISIBLE = 1.
SCREEN-INPUT = SCREEN-REQUIRED = 0.
STAB-ON = ' '. MODIFY STAB INDEX SY-TABIX.
ELSE.
MOVE-CORRESPONDING STAB TO SCREEN.
STAB-ON = 'X'. MODIFY STAB INDEX SY-TABIX.
ENDIF.
MODIFY SCREEN.
IF STAB-ON = 'X' AND SCREEN-NAME+0(2) = '%P'. SI = 'X'. ENDIF.
ENDLOOP.
* End ---------------------------------------------- Rutina Standard
* Ini ---------------------------------------------- Rutinas Propias
END-OF-SELECTION.
PERFORM WRITE_NEW_MENU.
FORM WRITE_NEW_MENU.
DATA: CAD(65533),
BEGIN OF ITAB OCCURS 0,
TXT(72),
END OF ITAB.
CLEAR ITAB. REFRESH ITAB.
CONCATENATE LIN001 LIN002 LIN003 LIN004 LIN005 LIN006 LIN007
LIN008 LIN009 LIN010 INTO CAD SEPARATED BY ','.
SPLIT CAD AT ',' INTO TABLE ITAB.
SKIP 1.
DATA: AX TYPE I,
COL001(2) TYPE N,
COL002(2) TYPE N,
COL003(2) TYPE N,
BOTON(2) TYPE N,
DX LIKE ITAB-TXT.
CLEAR AX.
COL001 = 4.
BOTON = 1.
LOOP AT ITAB.
IF ITAB-TXT+0(1) = '+'.
IF DX NE ITAB-TXT.
DX = ITAB-TXT.
AX = 1.
ELSE.
AX = 2.
CONTINUE.
ENDIF.
ENDIF.
CASE AX.
WHEN 1. IF SY-TABIX = 1.
WRITE: / 'selection-screen:'.
WRITE: / ' skip 1,',
/ ' begin of line,',
/ ' comment 1(2) text-801, "--'.
ELSE.
COL002 = COL001 + 1.
WRITE: / ' begin of line,'.
CONCATENATE '######comment#' COL002
'(1) text-803, "`' INTO CAD.
TRANSLATE CAD USING '# '. WRITE / CAD.
ADD 1 TO COL002.
CONCATENATE '######comment#' COL002
'(3) text-801, "--' INTO CAD.
TRANSLATE CAD USING '# '. WRITE / CAD.
ADD 1 TO BOTON.
ADD 6 TO COL001.
ENDIF.
CONCATENATE '######pushbutton#' COL001
'(2)#text-802#user-command#b' BOTON
',#"+' INTO CAD.
TRANSLATE CAD USING '# '. WRITE / CAD.
WRITE / ' end of line,'.
WHEN 2. COL002 = COL001 + 1.
WRITE: / ' begin of line,'.
CONCATENATE '######comment#' COL002
'(1) text-803, "`' INTO CAD.
TRANSLATE CAD USING '# '. WRITE / CAD.
ADD 1 TO COL002.
CONCATENATE '######comment#' COL002
'(3) text-801, "--' INTO CAD.
TRANSLATE CAD USING '# '. WRITE / CAD.
ADD 4 TO COL002.
CONCATENATE '######comment#' COL002
'(3) text-001. ' INTO CAD.
TRANSLATE CAD USING '# '. WRITE / CAD.
WHEN 3. IF ITAB-TXT = '1'.
WRITE: / '* parameters: xx(2) type n.'.
WRITE: / ' selection-screen:',
/ ' end of line,'.
ENDIF.
ENDCASE.
ADD 1 TO AX.
IF AX > 3. AX = 1. ENDIF.
AT LAST.
WRITE: / ' selection-screen:',
/ ' end of line.'.
ENDAT.
ENDLOOP.
ENDFORM.
* End ---------------------------------------------- Rutinas Propias