01-09-2006 6:42 PM
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
01-10-2006 3:07 AM
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
.
01-09-2006 6:43 PM
01-09-2006 6:56 PM
Alternatively, have checkboxes for all rows, but conditionally, input enable some and input disable others.
01-10-2006 3:07 AM
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
.
01-10-2006 3:08 PM
01-10-2006 5:46 PM
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.