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: 

adding a checkbox for a group of rows

Former Member
0 Kudos

Is it possible to add a checkbox for a group of rows in a ALV report.

Can someboby tell me How can I do that?

thks

1 ACCEPTED SOLUTION

former_member186741
Active Contributor
0 Kudos

Following up on Rich's suggestion re the hierarchy ALV, here's something which may do what you're asking for:

REPORT z_GROUP_CBOX.

PARAMETERS: p_limit(3) TYPE n DEFAULT 20.

TYPE-POOLS: slis.

DATA:

gt_fieldcat TYPE slis_t_fieldcat_alv,

gs_keyinfo TYPE slis_keyinfo_alv,

g_layout TYPE slis_layout_alv,

g_repid TYPE syrepid,

BEGIN OF w_pgm_head,

cbox,

ebeln LIKE ekpo-ebeln,

ebelp LIKE ekpo-ebelp,

matnr LIKE ekpo-matnr,

END OF w_pgm_head,

BEGIN OF w_detail_line,

ebeln LIKE ekpo-ebeln,

ebelp LIKE ekpo-ebelp,

matnr LIKE ekpo-matnr,

END OF w_detail_line.

DATA gt_ekko LIKE TABLE OF ekko WITH HEADER LINE.

DATA gt_head LIKE TABLE OF w_pgm_head WITH HEADER LINE.

DATA gt_detail LIKE TABLE OF w_detail_line WITH HEADER LINE.

FIELD-SYMBOLS <detail>.

g_repid = sy-repid.

SELECT * FROM ekko UP TO p_limit ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_ekko.

SELECT * FROM ekpo UP TO p_limit ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_detail

FOR ALL ENTRIES IN gt_ekko

WHERE ekpo~ebeln = gt_ekko-ebeln.

LOOP AT gt_detail ASSIGNING <detail>.

MOVE-CORRESPONDING <detail> TO gt_head.

APPEND gt_head.

ENDLOOP.

DELETE ADJACENT DUPLICATES FROM gt_head COMPARING ebeln.

LOOP AT gt_detail.

READ TABLE gt_head

WITH KEY ebeln = gt_detail-ebeln

ebelp = gt_detail-ebelp

TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

DELETE gt_detail.

ENDIF.

ENDLOOP.

  • include the HDR fields in the field catalog

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = g_repid

i_internal_tabname = 'W_PGM_HEAD'

i_inclname = g_repid

i_bypassing_buffer = 'X'

CHANGING

ct_fieldcat = gt_fieldcat[].

  • include the DETAIL fields in the field catalog

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = g_repid

i_internal_tabname = 'W_DETAIL_LINE'

i_inclname = g_repid

i_bypassing_buffer = 'X'

CHANGING

ct_fieldcat = gt_fieldcat[].

gs_keyinfo-header01 = 'EBELN'.

gs_keyinfo-item01 = 'EBELN'.

g_layout-box_fieldname = 'CBOX'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_callback_program = g_repid

i_callback_pf_status_set = 'SET_PF_STATUS'

is_layout = g_layout

it_fieldcat = gt_fieldcat[]

i_tabname_header = 'W_PGM_HEAD'

i_tabname_item = 'W_DETAIL_LINE'

is_keyinfo = gs_keyinfo

i_bypassing_buffer = 'X'

TABLES

t_outtab_header = gt_head

t_outtab_item = gt_detail

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

5 REPLIES 5

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

No, one checkbox per line in ALV grid. You may be able to do something like this using the ALV heirarchy display.

Regards,

Rich

0 Kudos

Alternatively, have checkboxes for all rows, but conditionally, input enable some and input disable others.

former_member186741
Active Contributor
0 Kudos

Following up on Rich's suggestion re the hierarchy ALV, here's something which may do what you're asking for:

REPORT z_GROUP_CBOX.

PARAMETERS: p_limit(3) TYPE n DEFAULT 20.

TYPE-POOLS: slis.

DATA:

gt_fieldcat TYPE slis_t_fieldcat_alv,

gs_keyinfo TYPE slis_keyinfo_alv,

g_layout TYPE slis_layout_alv,

g_repid TYPE syrepid,

BEGIN OF w_pgm_head,

cbox,

ebeln LIKE ekpo-ebeln,

ebelp LIKE ekpo-ebelp,

matnr LIKE ekpo-matnr,

END OF w_pgm_head,

BEGIN OF w_detail_line,

ebeln LIKE ekpo-ebeln,

ebelp LIKE ekpo-ebelp,

matnr LIKE ekpo-matnr,

END OF w_detail_line.

DATA gt_ekko LIKE TABLE OF ekko WITH HEADER LINE.

DATA gt_head LIKE TABLE OF w_pgm_head WITH HEADER LINE.

DATA gt_detail LIKE TABLE OF w_detail_line WITH HEADER LINE.

FIELD-SYMBOLS <detail>.

g_repid = sy-repid.

SELECT * FROM ekko UP TO p_limit ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_ekko.

SELECT * FROM ekpo UP TO p_limit ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_detail

FOR ALL ENTRIES IN gt_ekko

WHERE ekpo~ebeln = gt_ekko-ebeln.

LOOP AT gt_detail ASSIGNING <detail>.

MOVE-CORRESPONDING <detail> TO gt_head.

APPEND gt_head.

ENDLOOP.

DELETE ADJACENT DUPLICATES FROM gt_head COMPARING ebeln.

LOOP AT gt_detail.

READ TABLE gt_head

WITH KEY ebeln = gt_detail-ebeln

ebelp = gt_detail-ebelp

TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

DELETE gt_detail.

ENDIF.

ENDLOOP.

  • include the HDR fields in the field catalog

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = g_repid

i_internal_tabname = 'W_PGM_HEAD'

i_inclname = g_repid

i_bypassing_buffer = 'X'

CHANGING

ct_fieldcat = gt_fieldcat[].

  • include the DETAIL fields in the field catalog

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = g_repid

i_internal_tabname = 'W_DETAIL_LINE'

i_inclname = g_repid

i_bypassing_buffer = 'X'

CHANGING

ct_fieldcat = gt_fieldcat[].

gs_keyinfo-header01 = 'EBELN'.

gs_keyinfo-item01 = 'EBELN'.

g_layout-box_fieldname = 'CBOX'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_callback_program = g_repid

i_callback_pf_status_set = 'SET_PF_STATUS'

is_layout = g_layout

it_fieldcat = gt_fieldcat[]

i_tabname_header = 'W_PGM_HEAD'

i_tabname_item = 'W_DETAIL_LINE'

is_keyinfo = gs_keyinfo

i_bypassing_buffer = 'X'

TABLES

t_outtab_header = gt_head

t_outtab_item = gt_detail

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

0 Kudos

Thank you very much. You were a great help.

agaraban.

0 Kudos

If it helped, you can reward the post by selecting the appropriate button and if it solved your problem, please select that button and by doing that you can close the post.