02-21-2010 8:27 AM
hi ,
sap community
my problem
I had created a report in which i want to display check box only on different article no. or u can assume same as control break (at new) functionality for checkbox .
i had tried both with simple alv as well as oops alv.
please help me in any of the form of alv.
regards
Gaurav
02-21-2010 1:26 PM
Hi,
Please find the code with respect to oops ALV.
Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code
Edited by: Rob Burbank on Feb 21, 2010 5:25 PM
02-21-2010 1:26 PM
Hi,
Please find the code with respect to oops ALV.
Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code
Edited by: Rob Burbank on Feb 21, 2010 5:25 PM
02-23-2010 12:58 PM
02-23-2010 3:42 PM
&----
*& Report ZERROR_LOG
*&
&----
*&
*&
&----
REPORT zerror_log2 NO STANDARD PAGE HEADING.
TABLES: zcmm_error_log.
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_output,
checkbox TYPE c,
matnr TYPE zcmm_error_log-matnr,
message(100) TYPE c,
ext_id TYPE balhdr-extnumber,
styl TYPE lvc_t_styl,
END OF ty_output,
BEGIN OF ty_text,
text(100) TYPE c,
END OF ty_text,
BEGIN OF ty_matnr,
mstnr TYPE zcmm_error_log-matnr,
END OF ty_matnr.
DATA: it_output TYPE STANDARD TABLE OF ty_output,
wa_output TYPE ty_output.
DATA: wa_output_temp LIKE LINE OF it_output.
DATA: it_output1 TYPE STANDARD TABLE OF ty_output,
wa_output1 TYPE ty_output.
DATA: it_data TYPE STANDARD TABLE OF zcmm_error_log,
wa_data TYPE zcmm_error_log.
DATA: msg TYPE zcmm_error_log-message,
it_matnr TYPE STANDARD TABLE OF ty_matnr.
DATA: it_text TYPE STANDARD TABLE OF ty_text,
wa_text TYPE ty_text.
DATA: it_mat TYPE STANDARD TABLE OF ddshretval,
wa_mat TYPE ddshretval.
DATA: it_msg TYPE STANDARD TABLE OF balm,
wa_msg TYPE balm.
DATA: y_wa_styl TYPE lvc_s_styl.
DATA: v_tabix TYPE sy-tabix.
DATA:
ty_lay1 TYPE lvc_s_layo,
it_fieldcat TYPE lvc_t_fcat ,
wa_fieldcat TYPE lvc_s_fcat ,
c_alv1 TYPE REF TO cl_gui_alv_grid,
c_cont TYPE REF TO cl_gui_custom_container.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_matnr FOR zcmm_error_log-matnr.
SELECTION-SCREEN: END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_matnr-low.
SELECT matnr
FROM zcmm_error_log
INTO TABLE it_matnr
WHERE status = 'E'.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 's_matnr'
dynpprog = sy-repid
dynpnr = sy-dynnr
window_title = 'Article Number'
value_org = 'S'
TABLES
value_tab = it_matnr
return_tab = it_mat.
CLEAR wa_mat.
READ TABLE it_mat INTO wa_mat INDEX 1.
IF sy-subrc EQ 0.
s_matnr-low = wa_mat-fieldval.
ENDIF.
CLEAR: wa_mat,it_mat[].
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_matnr-high.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 's_matnr'
dynpprog = sy-repid
dynpnr = sy-dynnr
window_title = 'Article Number'
value_org = 'S'
TABLES
value_tab = it_matnr
return_tab = it_mat.
READ TABLE it_mat INTO wa_mat INDEX 1.
IF sy-subrc EQ 0.
s_matnr-high = wa_mat-fieldval.
ENDIF.
START-OF-SELECTION.
SELECT *
FROM zcmm_error_log
INTO TABLE it_data
WHERE matnr IN s_matnr
AND status = 'E'.
DATA: w_fm TYPE balhdr-extnumber.
DATA: i_flag TYPE i.
SORT it_data ASCENDING BY matnr.
LOOP AT it_data INTO wa_data.
AT NEW matnr.
CLEAR i_flag.
ENDAT.
CLEAR: w_fm, it_msg[].
w_fm = wa_data-status2.
CALL FUNCTION 'APPL_LOG_READ_DB'
EXPORTING
external_number = w_fm
TABLES
messages = it_msg.
IF it_msg IS INITIAL.
SELECT SINGLE message
FROM zcmm_error_log
INTO msg
WHERE status2 = wa_data-status2.
IF i_flag IS INITIAL.
wa_output-matnr = wa_data-matnr.
wa_output-ext_id = wa_data-status2.
i_flag = 1.
ENDIF.
wa_output-message = msg.
APPEND wa_output TO it_output.
CLEAR wa_output.
ELSEIF it_msg IS NOT INITIAL.
LOOP AT it_msg INTO wa_msg WHERE msgty EQ 'E'.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = wa_msg-msgid
lang = 'E'
no = wa_msg-msgno
v1 = wa_msg-msgv1
v2 = wa_msg-msgv2
v3 = wa_msg-msgv3
v4 = wa_msg-msgv4
IMPORTING
msg = wa_text-text.
IF i_flag IS INITIAL.
wa_output-matnr = wa_data-matnr.
wa_output-ext_id = wa_data-status2.
i_flag = 1 .
ENDIF.
wa_output-message = wa_text-text.
APPEND wa_output TO it_output.
CLEAR wa_output.
ENDLOOP.
ENDIF.
ENDLOOP.
SORT it_output BY matnr ASCENDING.
CALL SCREEN 100.
----
MODULE STATUS_0100 OUTPUT
----
*
----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZERROR'.
IF c_alv1 IS NOT INITIAL.
CALL METHOD c_alv1->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
FREE c_alv1.
ENDIF.
ENDIF.
IF c_cont IS NOT INITIAL.
CALL METHOD c_cont->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
FREE c_cont.
ENDIF.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE user_command_0100 INPUT.
DATA: rspar_tab TYPE TABLE OF rsparams,
rspar_line LIKE LINE OF rspar_tab.
CASE sy-ucomm.
WHEN 'SEL'.
LOOP AT it_output INTO wa_output.
if wa_output-matnr is not initial.
wa_output-checkbox = 'X'.
MODIFY it_output INDEX sy-tabix FROM wa_output TRANSPORTING checkbox.
endif.
ENDLOOP.
CLEAR wa_output.
CALL METHOD c_alv1->refresh_table_display.
WHEN 'DSEL'.
LOOP AT it_output INTO wa_output.
wa_output-checkbox = ' '.
MODIFY it_output INDEX sy-tabix FROM wa_output TRANSPORTING checkbox.
ENDLOOP.
CLEAR wa_output.
CALL METHOD c_alv1->refresh_table_display.
WHEN 'RPROCESS'.
rspar_line-selname = 'R_NEW'.
rspar_line-kind = 'R'.
rspar_line-sign = 'I'.
rspar_line-option = 'EQ'.
rspar_line-low = ''.
APPEND rspar_line TO rspar_tab.
rspar_line-selname = 'R_RET'.
rspar_line-kind = 'R'.
rspar_line-sign = 'I'.
rspar_line-option = 'EQ'.
rspar_line-low = 'X'.
APPEND rspar_line TO rspar_tab.
CALL METHOD c_alv1->check_changed_data.
LOOP AT it_output INTO wa_output WHERE checkbox EQ 'X'.
rspar_line-selname = 'SO_MATNR'.
rspar_line-kind = 'S'.
rspar_line-sign = 'I'.
rspar_line-option = 'EQ'.
rspar_line-low = wa_output-matnr.
APPEND rspar_line TO rspar_tab.
ENDLOOP.
SUBMIT zrmm_art_master_create_copy USING SELECTION-SCREEN '1000'
WITH SELECTION-TABLE rspar_tab AND RETURN.
CALL METHOD c_alv1->refresh_table_display.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module alv_0100 OUTPUT
&----
text
----
MODULE alv_0100 OUTPUT.
CREATE OBJECT c_alv1
EXPORTING
i_parent = c_cont.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ty_lay1-grid_title = 'Error Log'.
ty_lay1-zebra = 'X'.
ty_lay1-no_toolbar = 'X'.
ty_lay1-stylefname = 'STYL'.
PERFORM fieldcat.
LOOP AT it_output INTO wa_output.
MOVE sy-tabix TO v_tabix .
y_wa_styl-style = cl_gui_alv_grid=>mc_style_disabled.
IF wa_output-matnr IS NOT INITIAL.
y_wa_styl-style = cl_gui_alv_grid=>mc_style_enabled.
ENDIF.
y_wa_styl-fieldname = 'CHECKBOX'.
clear: wa_output-styl, wa_output-styl[].
APPEND y_wa_styl TO wa_output-styl.
CLEAR: y_wa_styl.
y_wa_styl-style = cl_gui_alv_grid=>mc_style_disabled.
y_wa_styl-fieldname = 'MATNR'.
APPEND y_wa_styl TO wa_output-styl.
CLEAR: y_wa_styl.
**
y_wa_styl-style = cl_gui_alv_grid=>mc_style_disabled.
y_wa_styl-fieldname = 'MESSAGE'.
APPEND y_wa_styl TO wa_output-styl.
CLEAR: y_wa_styl.
y_wa_styl-style = cl_gui_alv_grid=>mc_style_disabled.
y_wa_styl-fieldname = 'EXT_ID'.
APPEND y_wa_styl TO wa_output-styl.
CLEAR: y_wa_styl.
MODIFY it_output FROM wa_output INDEX v_tabix
TRANSPORTING styl.
ENDLOOP.
CALL METHOD c_alv1->set_table_for_first_display
EXPORTING
is_layout = ty_lay1
CHANGING
it_outtab = it_output[]
it_fieldcatalog = it_fieldcat.
CALL METHOD c_alv1->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
REFRESH: it_fieldcat.
ENDMODULE. " alv_0100 OUTPUT
&----
*& Form fieldcat
&----
text
----
--> p1 text
<-- p2 text
----
FORM fieldcat .
wa_fieldcat-col_pos = '1'.
wa_fieldcat-tabname = 'IT_OUTPUT'.
wa_fieldcat-fieldname = 'CHECKBOX'.
wa_fieldcat-checkbox = 'X'.
wa_fieldcat-input = 'X'.
wa_fieldcat-edit = 'X'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'Chk'.
wa_fieldcat-just = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-tabname = 'IT_OUTPUT'.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-outputlen = 20.
wa_fieldcat-coltext = 'Article Number'.
wa_fieldcat-just = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '3'.
wa_fieldcat-tabname = 'IT_OUTPUT'.
wa_fieldcat-fieldname = 'MESSAGE'.
wa_fieldcat-outputlen = 100.
wa_fieldcat-coltext = 'Message'.
wa_fieldcat-just = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '4'.
wa_fieldcat-tabname = 'IT_OUTPUT'.
wa_fieldcat-fieldname = 'EXT_ID'.
wa_fieldcat-coltext = 'External ID'.
wa_fieldcat-outputlen = 16.
wa_fieldcat-just = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " fieldcat