‎2008 Dec 02 12:18 PM
Hi Experts,
Kindly gothrough the below codes and when i click on rb2 radiobutton only that selection option must appear but it is coming when i execute the program,, can any one help to resolve this issue...,
&----
*& Report ZPROGRAM_KPI
*&
&----
*&
*&
&----
REPORT ZPROGRAM_KPI.
TYPE-POOLS SLIS.
tables : pb4000.
DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF IT_FCAT.
DATA : IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT1 LIKE LINE OF IT_FCAT1.
data : lv_end TYPE dats,
lv_beg TYPE dats,
v type i.
data : begin of wa_pb40001,
pernr type pb4000-pernr,
SUBTY TYPE PB4000-SUBTY,
begda type pb4000-begda,
end of wa_pb40001,
it_pb40001 like table of wa_pb40001.
data : begin of wa_pb40002,
pernr type pb4000-pernr,
SUBTY TYPE PB4000-SUBTY,
begda type pb4000-begda,
end of wa_pb40002,
it_pb40002 like table of wa_pb40002.
selection-screen begin of block k with frame title text-001.
parameter : rb1 radiobutton group t, rb2 radiobutton group t.
selection-screen end of block k.
if rb1 = 'X'.
CALL FUNCTION 'OIL_LAST_DAY_OF_PREVIOUS_MONTH'
EXPORTING
i_date_old = sy-datum
IMPORTING
e_date_new = lv_end.
lv_beg = lv_end.
lv_beg+6(2) = '01'.
SELECT pernr SUBTY FROM pb4000 INTO TABLE it_pb40001 where begda BETWEEN lv_beg AND lv_end.
perform fcat using '1' 'PERNR' 'Personnel number' '20' 'C610'.
perform fcat using '1' 'SUBTY' 'Sub type' '20' 'C310'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_GRID_TITLE = 'Report for displaying personnel number in previous month'
IT_FIELDCAT = IT_FCAT
TABLES
t_outtab = IT_PB40001.
.
elseif rb2 = 'X'.
select-options s_date for wa_pb40001-begda obligatory.
SELECT pernr SUBTY FROM pb4000 INTO TABLE it_pb40002 where begda in s_date.
perform fcat1 using '1' 'PERNR' 'Personnel number' '20' 'C610'.
perform fcat1 using '1' 'SUBTY' 'Sub type' '20' 'C310'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_GRID_TITLE = 'Report for displaying personnel number using selection screen'
IT_FIELDCAT = IT_FCAT1
TABLES
t_outtab = IT_PB40002.
endif.
&----
*& Form FCAT
&----
text
----
-->P_0068 text
-->P_0069 text
-->P_0070 text
----
form FCAT using FP_COL_POS
FP_FIELDNAME
FP_SELTEXT_M
FP_OUTPUTLEN
FP_EMPHASIZE.
WA_FCAT-COL_POS = FP_COL_POS.
WA_FCAT-FIELDNAME = FP_FIELDNAME.
WA_FCAT-SELTEXT_M = FP_SELTEXT_M.
WA_FCAT-OUTPUTLEN = FP_OUTPUTLEN.
WA_FCAT-EMPHASIZE = FP_EMPHASIZE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_fCAT.
endform. " FCAT
&----
*& Form FCAT
&----
text
----
-->P_0068 text
-->P_0069 text
-->P_0070 text
----
form FCAT1 using FP_COL_POS
FP_FIELDNAME
FP_SELTEXT_M
FP_OUTPUTLEN
FP_EMPHASIZE.
WA_FCAT1-COL_POS = FP_COL_POS.
WA_FCAT1-FIELDNAME = FP_FIELDNAME.
WA_FCAT1-SELTEXT_M = FP_SELTEXT_M.
WA_FCAT1-OUTPUTLEN = FP_OUTPUTLEN.
WA_FCAT1-EMPHASIZE = FP_EMPHASIZE.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_fCAT1.
endform. " FCAT
Regards,
Thiru. R
‎2008 Dec 02 12:52 PM
Copy paste this code for your new requirement:
REPORT ZTEST15.
TYPE-POOLS SLIS.
TABLES : PB4000.
DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF IT_FCAT.
DATA : IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT1 LIKE LINE OF IT_FCAT1.
DATA : LV_END TYPE DATS,
LV_BEG TYPE DATS,
V TYPE I.
DATA : BEGIN OF WA_PB40001,
PERNR TYPE PB4000-PERNR,
SUBTY TYPE PB4000-SUBTY,
BEGDA TYPE PB4000-BEGDA,
END OF WA_PB40001,
IT_PB40001 LIKE TABLE OF WA_PB40001.
DATA : BEGIN OF WA_PB40002,
PERNR TYPE PB4000-PERNR,
SUBTY TYPE PB4000-SUBTY,
BEGDA TYPE PB4000-BEGDA,
END OF WA_PB40002,
IT_PB40002 LIKE TABLE OF WA_PB40002.
SELECTION-SCREEN BEGIN OF BLOCK K WITH FRAME TITLE TEXT-001.
PARAMETER : RB1 RADIOBUTTON GROUP T DEFAULT 'X' USER-COMMAND RB,
RB2 RADIOBUTTON GROUP T.
SELECT-OPTIONS S_DATE FOR WA_PB40001-BEGDA MODIF ID DAT.
SELECTION-SCREEN END OF BLOCK K.
AT SELECTION-SCREEN OUTPUT.
IF RB1 = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'DAT'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
AT SELECTION-SCREEN.
IF RB1 = 'X'.
CLEAR: S_DATE[], S_DATE.
ENDIF.
IF SY-UCOMM = 'ONLI'.
IF RB1 = 'X'.
CALL FUNCTION 'OIL_LAST_DAY_OF_PREVIOUS_MONTH'
EXPORTING
I_DATE_OLD = SY-DATUM
IMPORTING
E_DATE_NEW = LV_END.
LV_BEG = LV_END.
LV_BEG+6(2) = '01'.
SELECT PERNR SUBTY FROM PB4000 INTO TABLE IT_PB40001 WHERE BEGDA BETWEEN LV_BEG AND LV_END.
PERFORM FCAT USING '1' 'PERNR' 'Personnel number' '20' 'C610'.
PERFORM FCAT USING '1' 'SUBTY' 'Sub type' '20' 'C310'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_GRID_TITLE = 'Report for displaying personnel number in previous month'
IT_FIELDCAT = IT_FCAT
TABLES
T_OUTTAB = IT_PB40001.
ELSEIF RB2 = 'X'.
IF S_DATE-LOW IS INITIAL.
MESSAGE 'Enter date' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
SELECT PERNR SUBTY FROM PB4000 INTO TABLE IT_PB40002 WHERE BEGDA IN S_DATE.
PERFORM FCAT1 USING '1' 'PERNR' 'Personnel number' '20' 'C610'.
PERFORM FCAT1 USING '1' 'SUBTY' 'Sub type' '20' 'C310'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_GRID_TITLE = 'Report for displaying personnel number using selection screen'
IT_FIELDCAT = IT_FCAT1
TABLES
T_OUTTAB = IT_PB40002.
ENDIF.
ENDIF.
&----
*& Form FCAT
&----
text
----
-->FP_COL_POS text
-->FP_FIELDNAME text
-->FP_SELTEXT_M text
-->FP_OUTPUTLEN text
-->FP_EMPHASIZE text
----
FORM FCAT USING FP_COL_POS
FP_FIELDNAME
FP_SELTEXT_M
FP_OUTPUTLEN
FP_EMPHASIZE.
WA_FCAT-COL_POS = FP_COL_POS.
WA_FCAT-FIELDNAME = FP_FIELDNAME.
WA_FCAT-SELTEXT_M = FP_SELTEXT_M.
WA_FCAT-OUTPUTLEN = FP_OUTPUTLEN.
WA_FCAT-EMPHASIZE = FP_EMPHASIZE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
ENDFORM. " FCAT
&----
*& Form FCAT1
&----
text
----
-->FP_COL_POS text
-->FP_FIELDNAME text
-->FP_SELTEXT_M text
-->FP_OUTPUTLEN text
-->FP_EMPHASIZE text
----
FORM FCAT1 USING FP_COL_POS
FP_FIELDNAME
FP_SELTEXT_M
FP_OUTPUTLEN
FP_EMPHASIZE.
WA_FCAT1-COL_POS = FP_COL_POS.
WA_FCAT1-FIELDNAME = FP_FIELDNAME.
WA_FCAT1-SELTEXT_M = FP_SELTEXT_M.
WA_FCAT1-OUTPUTLEN = FP_OUTPUTLEN.
WA_FCAT1-EMPHASIZE = FP_EMPHASIZE.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_FCAT1.
ENDFORM. " FCAT
‎2008 Dec 02 12:24 PM
Hi,
Can you bit more clear about selection option ?
Do you want that ALV output appear when you click radio button 2 and not rb1 ?
I cannot understand your requirement.
Regards,
Mohaiyuddin
‎2008 Dec 02 12:30 PM
Hi,
for your requirement you should do like this:
selection-screen begin of block k with frame title text-001.
parameter : rb1 radiobutton group t, rb2 radiobutton group t.
select-options s_date for wa_pb40001-begda obligatory. " You should declare it here itself
selection-screen end of block k.
INITIALIZATION.
loop at screen.
if screen-name = 'S_DATE'.
screen-invisible = '1'.
modify screen.
endif.
endloop.
.........................
.........................
.........................
AT SELECTION-SCREEN OUTPUT.
if rb2 = 'X'.
loop at screen.
if screen-name = 'S_DATE'.
screen-invisible = '0'.
modify screen.
endif.
endloop.
endif.
‎2008 Dec 02 12:34 PM
Copy paste this code:
REPORT ZTEST15.
TYPE-POOLS SLIS.
TABLES : PB4000.
DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF IT_FCAT.
DATA : IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT1 LIKE LINE OF IT_FCAT1.
DATA : LV_END TYPE DATS,
LV_BEG TYPE DATS,
V TYPE I.
DATA : BEGIN OF WA_PB40001,
PERNR TYPE PB4000-PERNR,
SUBTY TYPE PB4000-SUBTY,
BEGDA TYPE PB4000-BEGDA,
END OF WA_PB40001,
IT_PB40001 LIKE TABLE OF WA_PB40001.
DATA : BEGIN OF WA_PB40002,
PERNR TYPE PB4000-PERNR,
SUBTY TYPE PB4000-SUBTY,
BEGDA TYPE PB4000-BEGDA,
END OF WA_PB40002,
IT_PB40002 LIKE TABLE OF WA_PB40002.
SELECTION-SCREEN BEGIN OF BLOCK K WITH FRAME TITLE TEXT-001.
PARAMETER : RB1 RADIOBUTTON GROUP T DEFAULT 'X' USER-COMMAND RB,
RB2 RADIOBUTTON GROUP T.
SELECT-OPTIONS S_DATE FOR WA_PB40001-BEGDA.
SELECTION-SCREEN END OF BLOCK K.
AT SELECTION-SCREEN OUTPUT.
IF RB1 = 'X'.
LOOP AT SCREEN.
IF SCREEN-NAME = 'S_DATE-LOW' OR SCREEN-NAME = 'S_DATE-HIGH'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
AT SELECTION-SCREEN.
IF RB1 = 'X'.
CLEAR: S_DATE[], S_DATE.
ENDIF.
IF SY-UCOMM = 'ONLI'.
IF RB1 = 'X'.
CALL FUNCTION 'OIL_LAST_DAY_OF_PREVIOUS_MONTH'
EXPORTING
I_DATE_OLD = SY-DATUM
IMPORTING
E_DATE_NEW = LV_END.
LV_BEG = LV_END.
LV_BEG+6(2) = '01'.
SELECT PERNR SUBTY FROM PB4000 INTO TABLE IT_PB40001 WHERE BEGDA BETWEEN LV_BEG AND LV_END.
PERFORM FCAT USING '1' 'PERNR' 'Personnel number' '20' 'C610'.
PERFORM FCAT USING '1' 'SUBTY' 'Sub type' '20' 'C310'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_GRID_TITLE = 'Report for displaying personnel number in previous month'
IT_FIELDCAT = IT_FCAT
TABLES
T_OUTTAB = IT_PB40001.
ELSEIF RB2 = 'X'.
IF S_DATE-LOW IS INITIAL.
MESSAGE 'Enter date' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
SELECT PERNR SUBTY FROM PB4000 INTO TABLE IT_PB40002 WHERE BEGDA IN S_DATE.
PERFORM FCAT1 USING '1' 'PERNR' 'Personnel number' '20' 'C610'.
PERFORM FCAT1 USING '1' 'SUBTY' 'Sub type' '20' 'C310'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_GRID_TITLE = 'Report for displaying personnel number using selection screen'
IT_FIELDCAT = IT_FCAT1
TABLES
T_OUTTAB = IT_PB40002.
ENDIF.
ENDIF.
&----
*& Form FCAT
&----
text
----
-->FP_COL_POS text
-->FP_FIELDNAME text
-->FP_SELTEXT_M text
-->FP_OUTPUTLEN text
-->FP_EMPHASIZE text
----
FORM FCAT USING FP_COL_POS
FP_FIELDNAME
FP_SELTEXT_M
FP_OUTPUTLEN
FP_EMPHASIZE.
WA_FCAT-COL_POS = FP_COL_POS.
WA_FCAT-FIELDNAME = FP_FIELDNAME.
WA_FCAT-SELTEXT_M = FP_SELTEXT_M.
WA_FCAT-OUTPUTLEN = FP_OUTPUTLEN.
WA_FCAT-EMPHASIZE = FP_EMPHASIZE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
ENDFORM. " FCAT
&----
*& Form FCAT1
&----
text
----
-->FP_COL_POS text
-->FP_FIELDNAME text
-->FP_SELTEXT_M text
-->FP_OUTPUTLEN text
-->FP_EMPHASIZE text
----
FORM FCAT1 USING FP_COL_POS
FP_FIELDNAME
FP_SELTEXT_M
FP_OUTPUTLEN
FP_EMPHASIZE.
WA_FCAT1-COL_POS = FP_COL_POS.
WA_FCAT1-FIELDNAME = FP_FIELDNAME.
WA_FCAT1-SELTEXT_M = FP_SELTEXT_M.
WA_FCAT1-OUTPUTLEN = FP_OUTPUTLEN.
WA_FCAT1-EMPHASIZE = FP_EMPHASIZE.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_FCAT1.
ENDFORM. " FCAT
‎2008 Dec 02 12:42 PM
hI,
It's almost ok but that disabled selection screen should not come at first , it must display only when i select second radiobutton.
Regards,
Thiru. R
‎2008 Dec 02 12:46 PM
hi
SELECTION-SCREEN BEGIN OF BLOCK k WITH FRAME TITLE text-001.
PARAMETER : rb1 RADIOBUTTON GROUP t USER-COMMAND rb, "---> remove default 'X' from here
rb2 RADIOBUTTON GROUP t DEFAULT 'X'. "------------> do little modification here
SELECT-OPTIONS s_date FOR sy-datum.
SELECTION-SCREEN END OF BLOCK k.Thanks & Regards
‎2008 Dec 02 12:52 PM
Copy paste this code for your new requirement:
REPORT ZTEST15.
TYPE-POOLS SLIS.
TABLES : PB4000.
DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF IT_FCAT.
DATA : IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT1 LIKE LINE OF IT_FCAT1.
DATA : LV_END TYPE DATS,
LV_BEG TYPE DATS,
V TYPE I.
DATA : BEGIN OF WA_PB40001,
PERNR TYPE PB4000-PERNR,
SUBTY TYPE PB4000-SUBTY,
BEGDA TYPE PB4000-BEGDA,
END OF WA_PB40001,
IT_PB40001 LIKE TABLE OF WA_PB40001.
DATA : BEGIN OF WA_PB40002,
PERNR TYPE PB4000-PERNR,
SUBTY TYPE PB4000-SUBTY,
BEGDA TYPE PB4000-BEGDA,
END OF WA_PB40002,
IT_PB40002 LIKE TABLE OF WA_PB40002.
SELECTION-SCREEN BEGIN OF BLOCK K WITH FRAME TITLE TEXT-001.
PARAMETER : RB1 RADIOBUTTON GROUP T DEFAULT 'X' USER-COMMAND RB,
RB2 RADIOBUTTON GROUP T.
SELECT-OPTIONS S_DATE FOR WA_PB40001-BEGDA MODIF ID DAT.
SELECTION-SCREEN END OF BLOCK K.
AT SELECTION-SCREEN OUTPUT.
IF RB1 = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'DAT'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
AT SELECTION-SCREEN.
IF RB1 = 'X'.
CLEAR: S_DATE[], S_DATE.
ENDIF.
IF SY-UCOMM = 'ONLI'.
IF RB1 = 'X'.
CALL FUNCTION 'OIL_LAST_DAY_OF_PREVIOUS_MONTH'
EXPORTING
I_DATE_OLD = SY-DATUM
IMPORTING
E_DATE_NEW = LV_END.
LV_BEG = LV_END.
LV_BEG+6(2) = '01'.
SELECT PERNR SUBTY FROM PB4000 INTO TABLE IT_PB40001 WHERE BEGDA BETWEEN LV_BEG AND LV_END.
PERFORM FCAT USING '1' 'PERNR' 'Personnel number' '20' 'C610'.
PERFORM FCAT USING '1' 'SUBTY' 'Sub type' '20' 'C310'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_GRID_TITLE = 'Report for displaying personnel number in previous month'
IT_FIELDCAT = IT_FCAT
TABLES
T_OUTTAB = IT_PB40001.
ELSEIF RB2 = 'X'.
IF S_DATE-LOW IS INITIAL.
MESSAGE 'Enter date' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
SELECT PERNR SUBTY FROM PB4000 INTO TABLE IT_PB40002 WHERE BEGDA IN S_DATE.
PERFORM FCAT1 USING '1' 'PERNR' 'Personnel number' '20' 'C610'.
PERFORM FCAT1 USING '1' 'SUBTY' 'Sub type' '20' 'C310'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_GRID_TITLE = 'Report for displaying personnel number using selection screen'
IT_FIELDCAT = IT_FCAT1
TABLES
T_OUTTAB = IT_PB40002.
ENDIF.
ENDIF.
&----
*& Form FCAT
&----
text
----
-->FP_COL_POS text
-->FP_FIELDNAME text
-->FP_SELTEXT_M text
-->FP_OUTPUTLEN text
-->FP_EMPHASIZE text
----
FORM FCAT USING FP_COL_POS
FP_FIELDNAME
FP_SELTEXT_M
FP_OUTPUTLEN
FP_EMPHASIZE.
WA_FCAT-COL_POS = FP_COL_POS.
WA_FCAT-FIELDNAME = FP_FIELDNAME.
WA_FCAT-SELTEXT_M = FP_SELTEXT_M.
WA_FCAT-OUTPUTLEN = FP_OUTPUTLEN.
WA_FCAT-EMPHASIZE = FP_EMPHASIZE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
ENDFORM. " FCAT
&----
*& Form FCAT1
&----
text
----
-->FP_COL_POS text
-->FP_FIELDNAME text
-->FP_SELTEXT_M text
-->FP_OUTPUTLEN text
-->FP_EMPHASIZE text
----
FORM FCAT1 USING FP_COL_POS
FP_FIELDNAME
FP_SELTEXT_M
FP_OUTPUTLEN
FP_EMPHASIZE.
WA_FCAT1-COL_POS = FP_COL_POS.
WA_FCAT1-FIELDNAME = FP_FIELDNAME.
WA_FCAT1-SELTEXT_M = FP_SELTEXT_M.
WA_FCAT1-OUTPUTLEN = FP_OUTPUTLEN.
WA_FCAT1-EMPHASIZE = FP_EMPHASIZE.
APPEND WA_FCAT1 TO IT_FCAT1.
CLEAR WA_FCAT1.
ENDFORM. " FCAT