Hi Experts,
I need a dynamic list box. There are two values on list box. Upon selection of one list box item fields in a selection block(say B1) have to be shown. When selecting the other list box item fields in another selection block (B2) have to be shown and fields in B1 has to be hid and vice versa. This is the code I am writing.
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-T01.
SELECT-OPTIONS SO_FKDAT FOR W_AUX_FKDAT MODIF ID RA.
SELECTION-SCREEN SKIP.
PARAMETERS: PS_PARM AS LISTBOX VISIBLE LENGTH 12 USER-COMMAND ABC.
*SELECTION-SCREEN: END OF BLOCK B1.
SELECTION-SCREEN SKIP.
PARAMETERS : R1 RADIOBUTTON GROUP G1 USER-COMMAND UC1 MODIF ID RA, "DEFAULT 'x',
R2 RADIOBUTTON GROUP G1 MODIF ID RA.
SELECTION-SCREEN: END OF BLOCK B1.
SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-T02.
SELECT-OPTIONS: SO_KUNNR FOR W_KUNNR MODIF ID SEL ,
SO_BUKRS FOR W_BUKRS MODIF ID SEL,
SO_VKBUR FOR W_VKBUR MODIF ID SEL,
SO_MONAT FOR W_RE_PERIOD MODIF ID SEL OBLIGATORY.
PARAMETER: P_GJAHR TYPE KNC1-GJAHR MODIF ID SEL DEFAULT '2013' OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK B2.
*--------------------------------------------------------------*
*At Selection Screen Ouput
*--------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'SEL'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
*--------------------------------------------------------------*
*At Selection Screen Ouput ON List Box PS_PARM
*--------------------------------------------------------------*
AT SELECTION-SCREEN ON PS_PARM.
CLEAR: GWA_VALUES, GT_VALUES.
REFRESH GT_VALUES.
GWA_VALUES-FIELDNAME = 'PS_PARM'.
APPEND GWA_VALUES TO GT_VALUES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TRANSLATE_TO_UPPER = 'X'
TABLES
DYNPFIELDS = GT_VALUES.
READ TABLE GT_VALUES INDEX 1 INTO GWA_VALUES.
IF SY-SUBRC = 0 AND GWA_VALUES-FIELDVALUE IS NOT INITIAL.
READ TABLE GT_LIST INTO GWA_LIST
WITH KEY KEY = GWA_VALUES-FIELDVALUE.
IF SY-SUBRC = 0.
GV_SELECTED_VALUE = GWA_LIST-TEXT.
ENDIF.
ENDIF.
* IF GV_SELECTED_VALUE = 'ACCOUNTBALANCES'.
LOOP AT SCREEN.
IF GWA_VALUES-FIELDVALUE = 1.
IF SCREEN-GROUP1 = 'SEL'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ELSEIF GWA_VALUES-FIELDVALUE = 2.
IF SCREEN-GROUP1 = 'SEL'.
SCREEN-INPUT = '1'.
MODIFY SCREEN.
endif.
ENDIF.
ENDLOOP.
*--------------------------------------------------------------*
*Initialization
*--------------------------------------------------------------*
INITIALIZATION.
*
GWA_LIST-KEY = '1'.
GWA_LIST-TEXT = 'INVOICE'.
APPEND GWA_LIST TO GT_LIST.
CLEAR: GWA_LIST.
GWA_LIST-KEY = '2'.
GWA_LIST-TEXT = 'ACCOUNTBALANCES'.
APPEND GWA_LIST TO GT_LIST.
CLEAR: GWA_LIST.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'PS_PARM'
VALUES = GT_LIST
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.