Application Development 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: 

selecting multiple lines from ALV output for further validation

Former Member
0 Kudos

Hi guru's,

i have created a ALV report with a check box in the output,i need to select multiple lines by checking 'X' in the check box

after that i need to do further validation..like updating etc..how to read the selected lines( check box = 'X' )from the output of the ALV report.Is there any function for that.plz help me with this regard.

Thanks & Regards,

Balaji.S

5 REPLIES 5

awin_prabhu
Active Contributor
0 Kudos

Hi Balaji,

Use additional parameter 'USER_COMMAND' like below.

For reading use, LOOP AT g_t_vekp INTO g_wa_vekp WHERE flag = 'X'. " 'Flag' is ur checkbox fieldname.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_user_command = 'USER_COMMAND'.

FORM user_command USING l_r_ucomm LIKE sy-ucomm l_r_selfield TYPE slis_selfield.

CASE l_r_ucomm.

*Updating database when 'Save' is pressed

WHEN 'SAVE'.

LOOP AT g_t_vekp INTO g_wa_vekp WHERE flag = 'X'. " Only selected lines are looped through

SELECT SINGLE FOR UPDATE * FROM vekp " Exclusive lock on that particular record

WHERE venum = g_wa_vekp-venum.

IF sy-subrc = 0.

vekp-vpobjkey = g_wa_vekp-vpobjkey.

UPDATE vekp. " Updating VEKP table

ENDIF.

ENDLOOP.

ENDCASE.

l_r_selfield-refresh = 'X'.

ENDFORM. "user_command

Thanks

Former Member
0 Kudos

Hi,

thanks for the reply,but my issue is...the report has been displayed,iam checking 'X' from the output..but how this will be updated in the internal table(header)...is there any fuction to read the status of the ALV output?

0 Kudos

Hi Balaji,

1. Declare 'Flag' as first field of internal table like below.

DATA: BEGIN OF g_t_vekp OCCURS 0,

flag(1) TYPE c, " Check box field name.

venum TYPE vekp-venum,

exidv TYPE vekp-exidv,

vbeln_gen TYPE vekp-vbeln_gen,

posnr_gen TYPE vekp-posnr_gen,

vpobj TYPE vekp-vpobj,

vpobjkey TYPE vekp-vpobjkey,

status TYPE vekp-status,

END OF g_t_vekp.

2. In layout do like below,

Data: g_wa_layout TYPE slis_layout_alv.

g_wa_layout-box_fieldname = 'FLAG'. " Check box field name.

3. In fieldcatalog make 'Flag' as first field like below,

g_wa_fieldcat-fieldname = 'FLAG'.

APPEND g_wa_fieldcat TO g_t_fieldcat.

CLEAR g_wa_fieldcat.

If u do all these field 'Flag' will be automatically updated for those records in internal table which are selected.

Then u can loop like below,

WHEN 'SAVE'.

LOOP AT g_t_vekp INTO g_wa_vekp WHERE flag = 'X'.

Thanks.

venkat_o
Active Contributor
0 Kudos

Hi Balaji,

Try this way.

<font color=blue><pre>

REPORT ztest_alv_row_selection.

DATA: BEGIN OF it_output OCCURS 0,

select TYPE c, "This variable stores the value when row selected.

bukrs TYPE t001-bukrs,

butxt TYPE t001-butxt,

END OF it_output.

TYPE-POOLS:slis.

DATA:it_events TYPE STANDARD TABLE OF slis_alv_event,

it_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv,

wa_fieldcat TYPE slis_fieldcat_alv,

wa_events TYPE slis_alv_event,

wa_layout TYPE slis_layout_alv.

DATA:g_program TYPE sy-repid VALUE sy-repid.

START-OF-SELECTION.

SELECT * FROM t001 INTO CORRESPONDING FIELDS OF TABLE it_output UP TO 100 ROWS.

DEFINE fieldcatalog.

wa_fieldcat-fieldname = &1.

wa_fieldcat-tabname = &2.

wa_fieldcat-seltext_l = &3.

append wa_fieldcat to it_fieldcat.

clear wa_fieldcat.

END-OF-DEFINITION.

fieldcatalog: "Column table col text

'BUKRS' 'IT_OUTPUT' 'BUKRS',

'BUTXT' 'IT_OUTPUT' 'BUTXT'.

wa_layout-box_fieldname = 'SELECT'. "This has to be set to get selection

wa_layout-colwidth_optimize = 'X'.

wa_events-name = 'PF_STATUS_SET'.

wa_events-form = 'PF_STATUS_SET'.

APPEND wa_events TO it_events.

CLEAR wa_events.

wa_events-name = 'USER_COMMAND'.

wa_events-form = 'USER_COMMAND'.

APPEND wa_events TO it_events.

CLEAR wa_events.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = g_program

is_layout = wa_layout

it_fieldcat = it_fieldcat

it_events = it_events

TABLES

t_outtab = it_output.

&----


*& Form PF_STATUS_SET

&----


FORM pf_status_set USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'ZTEST'.

  • 1. When you set Pf status ZTEST, standard application tools will be removed.

  • 2. Goto SE41 give program 'SAPLKKBL' and status 'STANDARD_FULLSCREEN'.

  • 3. Copy the status from those to ZTEST of our program. Now you will see all standard functions.

ENDFORM. "PF_STATUS_SET

----


  • FORM USER_COMMAND *

----


FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.

  • Check function code

CASE r_ucomm.

WHEN 'DISPLAY'. "user presses SAVE

LOOP AT it_output.

IF it_output-select EQ 'X'.

  • Process records that have been selected

WRITE:/ it_output.

ENDIF.

ENDLOOP.

ENDCASE.

ENDFORM. "user_command</pre></font>

Thanks

Venkat.O

Former Member
0 Kudos

Dear all,

Thanks for your contribution,now my issue is solved.

Thanks a lot

Regards,

Balaji.S