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/deselect

kiran_k8
Active Contributor
0 Likes
1,824

Hi Folks,

I am displaying some data in ALV Grid along wiht a check box and also having a z pf-status with select and deselect all buttons.

When the user selects the select all button then the check box in the alv grid should be marked X and viceversa for deselect.



CASE r_ucomm.

    WHEN '&ALL'.
     loop at it_final.
     it_final-chk = 'X'.
     modify it_final index sy-tabix transporting chk.
     endloop.

    WHEN '&SAL'.
     loop at it_final where chk = 'X'.
     it_final-chk = ' '.
     modify it_final index sy-tabix transporting chk.
     endloop.

     WHEN '&PROC'.
     loop at it_final where chk = 'X'.
    peform payments.  
   endloop.

  ENDCASE.

I had checked the select/deselect functionality available for standard table in SE11.Do we have any other way to achieve this.

Thanks,

K.Kiran.

1 ACCEPTED SOLUTION
Read only

venkat_o
Active Contributor
0 Likes
1,559

Hi Kiran, Try this program. It works


 REPORT ztest_notepad.
DATA: BEGIN OF it_t100 OCCURS 0,
       checkbox LIKE abgr-kzart,
       arbgb    LIKE t100-arbgb,
       msgnr    LIKE t100-msgnr,
       text     LIKE t100-text,
     END OF it_t100.
DATA:program TYPE sy-repid VALUE sy-repid.
TYPE-POOLS slis.
DATA:it_fieldcat TYPE slis_t_fieldcat_alv,
    wa_fieldcat LIKE LINE OF it_fieldcat.
DEFINE fieldcatalog.
 wa_fieldcat-fieldname = &1.
 wa_fieldcat-tabname   = 'IT_T100'.
 wa_fieldcat-checkbox  = &2.
 wa_fieldcat-edit      = &3.
 wa_fieldcat-seltext_m = &4.
 append wa_fieldcat to it_fieldcat.
 clear  wa_fieldcat.
END-OF-DEFINITION.

START-OF-SELECTION.
 SELECT * FROM t100 INTO TABLE it_t100 UP TO 100 ROWS.
 fieldcatalog: 'CHECKBOX' 'X' 'X' 'CHECKBOX',
               'ARBGB'    ''  ''  'ARBGB'   ,
               'MSGNR'    ''  ''  'MSGNR'   ,
               'TEXT'     ''  ''  'TEXT'    .
 CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
   EXPORTING
     i_callback_program       = program
     i_callback_pf_status_set = 'PF_STATUS_SET'
     i_callback_user_command  = 'USER_COMMAND'
     it_fieldcat              = it_fieldcat
   TABLES
     t_outtab                 = it_t100.
*&---------------------------------------------------------------------*
*&      Form  PF_STATUS_SET
*&---------------------------------------------------------------------*
FORM pf_status_set USING rt_extab TYPE slis_t_extab.
 SET PF-STATUS 'STATUS' EXCLUDING rt_extab.
ENDFORM.                    "PF_STATUS_SET
*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
 IF ucomm = 'SEL_ALL'.
   LOOP AT it_t100.
     it_t100-checkbox = 'X'.
     MODIFY it_t100 INDEX sy-tabix.
   ENDLOOP.
   selfield-refresh = 'X'.
 ELSEIF ucomm = 'DESEL_ALL'.
   LOOP AT it_t100.
     it_t100-checkbox = space.
     MODIFY it_t100 INDEX sy-tabix.
   ENDLOOP.
   selfield-refresh = 'X'.
 ENDIF.
ENDFORM.                    "user_command
Thanks Venkat.O

8 REPLIES 8
Read only

venkat_o
Active Contributor
0 Likes
1,560

Hi Kiran, Try this program. It works


 REPORT ztest_notepad.
DATA: BEGIN OF it_t100 OCCURS 0,
       checkbox LIKE abgr-kzart,
       arbgb    LIKE t100-arbgb,
       msgnr    LIKE t100-msgnr,
       text     LIKE t100-text,
     END OF it_t100.
DATA:program TYPE sy-repid VALUE sy-repid.
TYPE-POOLS slis.
DATA:it_fieldcat TYPE slis_t_fieldcat_alv,
    wa_fieldcat LIKE LINE OF it_fieldcat.
DEFINE fieldcatalog.
 wa_fieldcat-fieldname = &1.
 wa_fieldcat-tabname   = 'IT_T100'.
 wa_fieldcat-checkbox  = &2.
 wa_fieldcat-edit      = &3.
 wa_fieldcat-seltext_m = &4.
 append wa_fieldcat to it_fieldcat.
 clear  wa_fieldcat.
END-OF-DEFINITION.

START-OF-SELECTION.
 SELECT * FROM t100 INTO TABLE it_t100 UP TO 100 ROWS.
 fieldcatalog: 'CHECKBOX' 'X' 'X' 'CHECKBOX',
               'ARBGB'    ''  ''  'ARBGB'   ,
               'MSGNR'    ''  ''  'MSGNR'   ,
               'TEXT'     ''  ''  'TEXT'    .
 CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
   EXPORTING
     i_callback_program       = program
     i_callback_pf_status_set = 'PF_STATUS_SET'
     i_callback_user_command  = 'USER_COMMAND'
     it_fieldcat              = it_fieldcat
   TABLES
     t_outtab                 = it_t100.
*&---------------------------------------------------------------------*
*&      Form  PF_STATUS_SET
*&---------------------------------------------------------------------*
FORM pf_status_set USING rt_extab TYPE slis_t_extab.
 SET PF-STATUS 'STATUS' EXCLUDING rt_extab.
ENDFORM.                    "PF_STATUS_SET
*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
 IF ucomm = 'SEL_ALL'.
   LOOP AT it_t100.
     it_t100-checkbox = 'X'.
     MODIFY it_t100 INDEX sy-tabix.
   ENDLOOP.
   selfield-refresh = 'X'.
 ELSEIF ucomm = 'DESEL_ALL'.
   LOOP AT it_t100.
     it_t100-checkbox = space.
     MODIFY it_t100 INDEX sy-tabix.
   ENDLOOP.
   selfield-refresh = 'X'.
 ENDIF.
ENDFORM.                    "user_command
Thanks Venkat.O

Read only

kiran_k8
Active Contributor
0 Likes
1,559

Venkat,

This is what even I followed but in vain.How does that works ?

sy-ucomm of select and deselect is &ALL and &SAL.Can you please let how does this code works in your case.

K.Kiran.

Read only

0 Likes
1,559

hi kiran you are creating a custom gui status right ?

Read only

kiran_k8
Active Contributor
0 Likes
1,559

Keshu,

Yeah.When I click on select/deselect buttons it is going to standard code and not to the processing logic which I had written.

K.Kiran.

Read only

0 Likes
1,559

getting into std code !!!

Just try changing the function codes to ALL,SAL,PROC.

is it a module pool?

Read only

kesavadas_thekkillath
Active Contributor
0 Likes
1,559

check this link

link:[http://wiki.sdn.sap.com/wiki/display/Snippets/ALV%2bGrid%2bDisplay%2bwith%2bcheckbox%2bto%2bprocess%2bselected%2brecords%2bat%2bruntime]

check this sample program.

You can also use the check option provided in fieldcatalouge or this way


TYPE-POOLS:slis.
TYPE-POOLS:icon.
DATA:BEGIN OF it_mara OCCURS 0,
      icon TYPE char4,
      matnr TYPE mara-matnr,
     END OF it_mara.
DATA:wa_fieldcat TYPE slis_fieldcat_alv.
DATA:it_fieldcat TYPE TABLE OF slis_fieldcat_alv.

SELECT matnr FROM mara
      INTO CORRESPONDING FIELDS OF TABLE
      it_mara UP TO 10 ROWS.

LOOP AT it_mara.
  it_mara-icon = '@T9@'.
  MODIFY it_mara INDEX sy-tabix TRANSPORTING icon.
ENDLOOP.

PERFORM display_grid.

FORM user_command USING r_ucomm LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  CASE r_ucomm.
    WHEN 'SALL'.
      LOOP AT it_mara.
        it_mara-icon = '@SP@'.
        MODIFY it_mara INDEX sy-tabix TRANSPORTING icon.
      ENDLOOP.
      CLEAR wa_fieldcat.
      REFRESH it_fieldcat.
      PERFORM display_grid.
    WHEN 'DALL'.
      LOOP AT it_mara.
        it_mara-icon = '@T9@'.
        MODIFY it_mara INDEX sy-tabix TRANSPORTING icon.
      ENDLOOP.
      CLEAR wa_fieldcat.
      REFRESH it_fieldcat.
      PERFORM display_grid.
    WHEN OTHERS. "clicked in particular line
      READ TABLE it_mara INDEX rs_selfield-tabindex.
      IF it_mara-icon = '@T9@'.
        it_mara-icon = '@SP@'.
      ELSE.
        it_mara-icon = '@T9@'.
      ENDIF.
      MODIFY it_mara INDEX rs_selfield-tabindex TRANSPORTING icon.
      CLEAR wa_fieldcat.
      REFRESH it_fieldcat.
      PERFORM display_grid.
  ENDCASE.
ENDFORM.                   

FORM set_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'SET_STATUS'.
ENDFORM.                    

FORM display_grid .
  wa_fieldcat-fieldname = 'ICON'.
  wa_fieldcat-hotspot = 'X'.
  APPEND wa_fieldcat TO it_fieldcat.
  clear wa_fieldcat.
  wa_fieldcat-fieldname = 'MATNR'.
  wa_fieldcat-seltext_m = 'Material'.
  APPEND wa_fieldcat TO it_fieldcat.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'SET_STATUS'
      i_callback_user_command  = 'USER_COMMAND'
      it_fieldcat              = it_fieldcat[]
    TABLES
      t_outtab                 = it_mara[].
ENDFORM.    

Read only

Former Member
0 Likes
1,559

Hi Kiran,

Ru just looking for an alternate solution or is your solution not working cause the code seems fine for the solution

Regards

Sajimon Chandran`

Read only

former_member404244
Active Contributor
0 Likes
1,559

Hi,

Check the below piece of code



* When all entries are selected
    WHEN '&SALL'.

      READ TABLE git_final INTO gwa_final INDEX sy-index.

      IF gwa_final-check = ' '.

            gwa_final-check =  gc_x.

          MODIFY git_final FROM gwa_final TRANSPORTING check WHERE check = ' '.

        CLEAR gwa_final -check.
        rs_selfield-refresh = gc_x.

      ENDIF.

* When all entries are deselected
    WHEN '&DALL'.

     gwa_final -check =   ' '.

      MODIFY git_final FROM gwa_final TRANSPORTING check WHERE check = gc_x.

      CLEAR gwa_final -check.
      rs_selfield-refresh = gc_x.

Regards,

Nagaraj