‎2010 Apr 19 9:50 AM
Hi experts,
i have to develop a alv grid report where i will be having 2 check-boxes. my issue is i have to select only 1 at-a-time.
if i select the other,i just get the pop-up message 'Please select only one check box'.
please help me
thanku,
anusha
‎2010 Apr 19 9:53 AM
I hope you are talking about selection screen before displaying the ALV grid. In this case, you should use Radio button and put them into a group.
‎2010 Apr 19 9:57 AM
Hello Anusha,
Welcome to SCN. As per the rules of the forum, you have to search in SCN before posting. You can write the logic in the AT SELECTION-SCREEN OUTPUT event. Please search for further details
Vikranth
‎2010 Apr 19 9:59 AM
Welcome to SCN.
Sample Code:
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETER: R1 RADIOBUTTON GROUP g1,
R2 RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF BLOCK blk1.
These are basic questions. So search before posting.
Edited by: Mishra.Manas on Apr 19, 2010 11:00 AM
‎2010 Apr 19 9:59 AM
i have done with my code.but couldnt select 1, am able to select both.my code is..
IF L_AVAILQTY GT WA_EBAN-MENGE.
WA_FINAL-CHECKBOX = 'X'.
ELSE.
WA_FINAL-CHECKBOX1 = 'X'.
ENDIF.
COLLECT WA_FINAL INTO LT_FINAL.
ENDLOOP.
LOOP AT LT_FINAL ASSIGNING <WA_FINAL>.
IF <WA_FINAL>-CHECKBOX IS INITIAL AND <WA_FINAL>-CHECKBOX1 IS INITIAL.
MESSAGE S000(ZPR) WITH 'Please select atleast one check box'.
ELSEIF <WA_FINAL>-CHECKBOX IS NOT INITIAL AND <WA_FINAL>-CHECKBOX1 IS NOT INITIAL.
MESSAGE S000(ZPR) WITH 'Please select only one check box'.
ENDIF.
COLLECT WA_FINAL INTO LT_FINAL.
CLEAR : WA_FINAL, WA_EBAN.
ENDLOOP.
REFRESH : LT_FIELDCAT.
*Preparing Fieldcat
PERFORM BUILD_FIELDCAT.
IF LT_EBAN IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
IT_FIELDCAT = LT_FIELDCAT
I_SAVE = 'A'
TABLES
T_OUTTAB = LT_FINAL.
ENDIF.
am not able to know wheres the problem.
please help me with any sample code.
‎2010 Apr 19 10:04 AM
‎2010 Apr 19 11:07 AM
i think u should not use elseif statement in loop then this popup will not display and u can select two checkboxes at a time
‎2010 Apr 19 10:03 AM
Crap ...
In the ALV displayed you have checkboxes & you want to use only one checkbox at a time ...
May i know what exactly you are using this checkbox for ? Is there any subsequent processing involved after the checkbox is checked ?
BR,
Suhas
Edited by: Suhas Saha on Apr 19, 2010 2:35 PM
‎2010 Apr 19 10:10 AM
my present output display in alv grid format
using reuse_alv_grid_display
when ever user trigger grid
that is user check the check box
like
if two are checked
pop-up message should be displayed 'only one must be selected'
‎2010 Apr 19 10:14 AM
‎2010 Apr 19 10:20 AM
sorry guys,..
i dnt have account in sdn so used my friends..thats it...
‎2010 Apr 19 10:23 AM
You and Your Friend have the same code , same doubt.....Strange!!!!
‎2010 Apr 19 10:28 AM
‎2010 Apr 19 12:51 PM
Edit, locking the other duplicate, please continue here, sorry for confusion.
Thomas
Edited by: Thomas Zloch on Apr 19, 2010 1:52 PM
‎2010 Apr 20 6:29 AM
i have done with my code, but am not able to check single checkbox at a time..
please help me....
BEGIN OF TY_FINAL,
BANFN TYPE BANFN, "
BNFPO TYPE BNFPO,
MATNR TYPE MATNR,
MENGE TYPE BAMNG,
MVGR4 TYPE MVGR4, "
LABST TYPE LABST,
QTYDEL TYPE OMENG,
QTYORD TYPE OMENG,
AVAILQTY TYPE BAPRE,
CHECKBOX TYPE CHAR01,
CHECKBOX1 TYPE CHAR01,
END OF TY_FINAL,
*Internal Table CreationS
DATA : LT_EBAN TYPE TABLE OF TY_EBAN,
LT_EBAN_TEMP TYPE TABLE OF TY_EBAN,
LT_MVKE TYPE TABLE OF TY_MVKE,
LT_MARD TYPE TABLE OF TY_MARD,
LT_VBBE TYPE TABLE OF TY_VBBE,
LT_VBBE_TEMP TYPE TABLE OF TY_VBBE,
LT_FINAL TYPE TABLE OF TY_FINAL,
LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. "Fieldcat for GRID display
*Work Area Declaration
DATA : WA_EBAN TYPE TY_EBAN,
WA_MVKE TYPE TY_MVKE,
WA_MARD TYPE TY_MARD,
WA_VBBE TYPE TY_VBBE,
WA_VBBE_TEMP TYPE TY_VBBE,
WA_FINAL TYPE TY_FINAL,
WA_FIELDCAT LIKE LINE OF LT_FIELDCAT.
DATA : L_LABST TYPE BAPRE,
L_MENGE TYPE BAPRE,
L_QTYORD TYPE BAPRE,
L_AVAILQTY TYPE BAPRE.
*Constants Declaration
CONSTANTS : C_STATUS TYPE C VALUE 'N',
C_WERKS TYPE WERKS VALUE 'TBMS',
C_VKORG TYPE VKORG VALUE 'BMS',
C_VTWEG TYPE VTWEG VALUE '50',
C_WERKS1 TYPE WERKS VALUE 'TENN',
C_LGORT TYPE LGORT_D VALUE 'TJUS'.
**************************************************************
**START-OF-SELECTION
**************************************************************
START-OF-SELECTION.
REFRESH : LT_EBAN,LT_MVKE,LT_MARD,LT_VBBE,LT_FINAL.
*Fetching Data From EBAN Table Into Internal Table EBAN
SELECT BANFN
BNFPO
STATU
MATNR
MENGE
INTO TABLE LT_EBAN
FROM EBAN
WHERE STATU = C_STATUS
AND WERKS = C_WERKS.
IF LT_EBAN IS NOT INITIAL.
LT_EBAN_TEMP[] = LT_EBAN[].
SORT LT_EBAN_TEMP BY MATNR.
DELETE ADJACENT DUPLICATES FROM LT_EBAN_TEMP COMPARING MATNR.
*Fetching Data From MVKE Table Into Internal Table MVKE
SELECT MATNR
MVGR4
INTO TABLE LT_MVKE
FROM MVKE
FOR ALL ENTRIES IN LT_EBAN_TEMP
WHERE MATNR = LT_EBAN_TEMP-MATNR
AND VKORG = C_VKORG
AND VTWEG = C_VTWEG .
*Fetching Data From MARD Table Into Internal Table MARD
SELECT MATNR
LABST
INTO TABLE LT_MARD
FROM MARD
FOR ALL ENTRIES IN LT_EBAN_TEMP
WHERE MATNR = LT_EBAN_TEMP-MATNR
AND WERKS = C_WERKS1
AND LGORT = C_LGORT.
*Fetching Data From VBBE Table Into Internal Table VBBE
SELECT MATNR
VBELN
VBTYP
OMENG
FROM VBBE
INTO TABLE LT_VBBE
FOR ALL ENTRIES IN LT_EBAN_TEMP
WHERE MATNR = LT_EBAN_TEMP-MATNR
AND WERKS = C_WERKS1
AND LGORT = C_LGORT.
ENDIF.
LT_VBBE_TEMP[] = LT_VBBE[].
SORT LT_VBBE_TEMP BY MATNR.
LOOP AT LT_EBAN INTO WA_EBAN.
WA_FINAL-BANFN = WA_EBAN-BANFN.
WA_FINAL-BNFPO = WA_EBAN-BNFPO.
WA_FINAL-MATNR = WA_EBAN-MATNR.
WA_FINAL-MENGE = WA_EBAN-MENGE.
READ TABLE LT_MVKE INTO WA_MVKE WITH KEY MATNR = WA_EBAN-MATNR.
IF SY-SUBRC = 0.
WA_FINAL-MVGR4 = WA_MVKE-MVGR4.
ENDIF.
READ TABLE LT_MARD INTO WA_MARD WITH KEY MATNR = WA_EBAN-MATNR.
IF SY-SUBRC = 0.
WA_FINAL-LABST = WA_MARD-LABST.
L_LABST = WA_MARD-LABST.
ENDIF.
LOOP AT LT_VBBE_TEMP INTO WA_VBBE_TEMP WHERE MATNR = WA_EBAN-MATNR AND VBTYP = 'J'.
AT END OF MATNR.
SUM.
WA_FINAL-QTYDEL = WA_VBBE_TEMP-OMENG.
L_MENGE = WA_VBBE_TEMP-OMENG.
ENDAT.
ENDLOOP.
LOOP AT LT_VBBE_TEMP INTO WA_VBBE_TEMP WHERE MATNR = WA_EBAN-MATNR AND VBTYP = 'C'.
AT END OF MATNR.
SUM.
WA_FINAL-QTYORD = WA_VBBE_TEMP-OMENG.
L_MENGE = WA_VBBE_TEMP-OMENG.
ENDAT.
ENDLOOP.
L_AVAILQTY = L_LABST - L_MENGE - L_QTYORD.
WA_FINAL-AVAILQTY = L_AVAILQTY.
IF L_AVAILQTY GT WA_EBAN-MENGE.
WA_FINAL-CHECKBOX = 'X'.
ELSE.
WA_FINAL-CHECKBOX1 = 'X'.
ENDIF.
COLLECT WA_FINAL INTO LT_FINAL.
ENDLOOP.
REFRESH : LT_FIELDCAT.
*Preparing Fieldcat
PERFORM BUILD_FIELDCAT.
IF LT_EBAN IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'HANDLE_USER_COMMAND'
IT_FIELDCAT = LT_FIELDCAT
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = LT_FINAL.
IF SY-UCOMM = 'BACK' OR SY-UCOMM = 'EXIT' OR SY-UCOMM = 'CANCEL'.
LEAVE TO SCREEN 0.
ENDIF.
ENDIF.
FREE : LT_EBAN.
********************************************************************
*FORM BUILD_FIELDCAT
********************************************************************
FORM BUILD_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'BANFN'.
WA_FIELDCAT-SELTEXT_M = TEXT-001.
WA_FIELDCAT-OUTPUTLEN = 15.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'BNFPO'.
WA_FIELDCAT-SELTEXT_M = TEXT-002.
WA_FIELDCAT-OUTPUTLEN = 12.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_M = TEXT-003.
WA_FIELDCAT-OUTPUTLEN = 10.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_M = TEXT-004.
WA_FIELDCAT-OUTPUTLEN = 10.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MVGR4'.
WA_FIELDCAT-SELTEXT_M = TEXT-005.
WA_FIELDCAT-OUTPUTLEN = 10.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'LABST'.
WA_FIELDCAT-SELTEXT_M = TEXT-006.
WA_FIELDCAT-OUTPUTLEN = 15.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'QTYDEL'.
WA_FIELDCAT-SELTEXT_M = TEXT-007.
WA_FIELDCAT-OUTPUTLEN = 10.
WA_FIELDCAT-EDIT = ' '.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'QTYORD'.
WA_FIELDCAT-SELTEXT_M = TEXT-008.
WA_FIELDCAT-OUTPUTLEN = 14.
WA_FIELDCAT-EDIT = ' '.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'AVAILQTY'.
WA_FIELDCAT-SELTEXT_M = TEXT-009.
WA_FIELDCAT-OUTPUTLEN = 12.
WA_FIELDCAT-EDIT = ' '.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'CHECKBOX'.
WA_FIELDCAT-SELTEXT_M = TEXT-010.
WA_FIELDCAT-OUTPUTLEN = 10.
WA_FIELDCAT-CHECKBOX = 'X'.
WA_FIELDCAT-EDIT = 'X'.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'CHECKBOX1'.
WA_FIELDCAT-SELTEXT_M = TEXT-011.
WA_FIELDCAT-OUTPUTLEN = 10.
WA_FIELDCAT-CHECKBOX = 'X'.
WA_FIELDCAT-EDIT = 'X'.
*Filling The Fieldcatalog
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR : WA_FIELDCAT.
ENDFORM. " BUILD_FIELdcat
&----
*& Form SET_PF_STATUS
&----
text
----
FORM SET_PF_STATUS USING EXCLUDETAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'ZSTA' EXCLUDING EXCLUDETAB.
ENDFORM. "SET_PF_STATUS
&----
*& Form HANDLE_USER_COMMAND
*&----
text
----
FORM HANDLE_USER_COMMAND USING FU_UCOMM LIKE SY-UCOMM
FU_SELFIELD TYPE SLIS_SELFIELD.
DATA : REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
CASE FU_UCOMM.
WHEN '&RELEASE'.
CLEAR GT_SELECTED.
REFRESH GT_SELECTED.
to reflect the data changed into internal table
IF REF_GRID IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF_GRID.
ENDIF.
*
IF NOT REF_GRID IS INITIAL.
CALL METHOD REF_GRID->CHECK_CHANGED_DATA.
ENDIF.
WHEN '&IC1'.
IF REF_GRID IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF_GRID.
ENDIF.
IF NOT REF_GRID IS INITIAL.
CALL METHOD REF_GRID->CHECK_CHANGED_DATA.
ENDIF.
READ TABLE LT_FINAL INTO WA_FINAL INDEX FU_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
CASE FU_SELFIELD-FIELDNAME.
WHEN 'CHECKBOX'.
IF WA_FINAL-CHECKBOX = ' ' AND WA_FINAL-CHECKBOX1 = 'X'.
WA_FINAL-CHECKBOX = 'X'.
WA_FINAL-CHECKBOX1 = ' '.
MODIFY LT_FINAL FROM WA_FINAL INDEX FU_SELFIELD-TABINDEX TRANSPORTING CHECKBOX CHECKBOX1.
ELSEIF WA_FINAL-CHECKBOX = 'X' AND WA_FINAL-CHECKBOX = ' '.
WA_FINAL-CHECKBOX = ''.
WA_FINAL-CHECKBOX1 = 'X '.
MODIFY LT_FINAL FROM WA_FINAL INDEX FU_SELFIELD-TABINDEX TRANSPORTING CHECKBOX CHECKBOX1.
ENDIF.
WHEN 'CHECKBOX1'.
IF WA_FINAL-CHECKBOX1 = ' ' AND WA_FINAL-CHECKBOX = 'X'.
WA_FINAL-CHECKBOX = ' '.
WA_FINAL-CHECKBOX1 = 'X'.
MODIFY LT_FINAL FROM WA_FINAL INDEX FU_SELFIELD-TABINDEX TRANSPORTING CHECKBOX CHECKBOX1.
ELSEIF WA_FINAL-CHECKBOX = 'X' AND WA_FINAL-CHECKBOX1 = ' '.
WA_FINAL-CHECKBOX = 'X'.
WA_FINAL-CHECKBOX1 = ''.
MODIFY LT_FINAL FROM WA_FINAL INDEX FU_SELFIELD-TABINDEX TRANSPORTING CHECKBOX CHECKBOX1.
ENDIF.
FU_SELFIELD-REFRESH = 'X'.
ENDCASE.
ENDIF.
ENDCASE.
ENDFORM. "HANDLE_USER_COMMAND