Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

select only1 checkbox

Former Member
0 Likes
1,733

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

14 REPLIES 14
Read only

Former Member
0 Likes
1,694

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.

Read only

Former Member
0 Likes
1,694

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

Read only

Former Member
0 Likes
1,694

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

Read only

Former Member
0 Likes
1,694

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.

Read only

0 Likes
1,694

Who is Anusha and Who's Santosh?

[Duplicate Post|;

Same Questions, Same Code,Different Users

Moderators whats Going on?

Edited by: Mishra.Manas on Apr 19, 2010 11:07 AM

Read only

0 Likes
1,694

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

Read only

SuhaSaha
Product and Topic Expert
Product and Topic Expert
0 Likes
1,694

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

Read only

Former Member
0 Likes
1,694

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'

Read only

0 Likes
1,694

What about this Post?

Read only

Former Member
0 Likes
1,694

sorry guys,..

i dnt have account in sdn so used my friends..thats it...

Read only

0 Likes
1,694

You and Your Friend have the same code , same doubt.....Strange!!!!

Read only

Former Member
0 Likes
1,694

Anusha Or Santhosh.. forget check boxes. Use radio button.

Read only

ThomasZloch
Active Contributor
0 Likes
1,694

Edit, locking the other duplicate, please continue here, sorry for confusion.

Thomas

Edited by: Thomas Zloch on Apr 19, 2010 1:52 PM

Read only

Former Member
0 Likes
1,694

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