2007 Jul 23 7:05 AM
i want to display specific line to be color in alvlist
i write the code as follows here document type is initial. then that line is to be
appeared as color line but problem is initially it is appeared correct later i moved to next previous screens error lines are to be colored where i have to clear
loop at it_doclist where blart eq space.
gt_layout-info_fieldname = 'COLOR_LINE'.
it_doclist-color_line = 'C600'.
modify it_doclist .
clear:it_doclist.
endloop.
please help me exactly
Thanks
Ramana reddy
2007 Jul 23 7:16 AM
Hi
Refer to the standard program <b>BCALV_TEST_FULLSCREEN</b>, where <b>tabcolor_lvc </b> (type lvc_t_scol), is used to set the color.
it is used as follows:
<ls_outtab>-tabcolor_lvc = lt_color.
cs_layo-ctab_fname = 'TABCOLOR_LVC'.
append lines of lt_color to <ls_outtab>-tabcolor_lvc.
Regards
Raj
2007 Jul 23 7:23 AM
2007 Jul 23 7:26 AM
Hi Ramana,
http://www.sap-img.com/abap/line-color-in-alv-example.htm
Reward Points for helpful answers.
Regards,
Hk.
2007 Jul 23 7:35 AM
Hi
Check this sample one it will definelty solve your problem
*&---------------------------------------------------------------------*
*& Report ZALVCOLOR *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZALVCOLOR .
DATA : mara TYPE mara. " General Material Data
TYPE-POOLS: slis. " ALV Global types
FIELD-SYMBOLS :
<data> TYPE table. " Data to display
SELECT-OPTIONS :
s_matnr FOR mara-matnr. " Material number
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED
PARAMETERS p_max(2) TYPE n DEFAULT '50' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
*---------------------------------------------------------------------*
INITIALIZATION.
v_1 = 'Maximum of lines to display'.
*---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM f_read_data.
PERFORM f_display_data.
*---------------------------------------------------------------------*
* Form f_read_data
*---------------------------------------------------------------------*
FORM f_read_data.
FIELD-SYMBOLS :
<field> TYPE ANY,
<field2> TYPE ANY,
<header> TYPE ANY,
<header2> TYPE ANY,
<lt_data> TYPE table. " Data read from DB
DATA:
lp_struct TYPE REF TO data,
lp_struct2 TYPE REF TO data,
lp_table TYPE REF TO data, " Pointer to dynamic table
lp_table2 TYPE REF TO data, " Pointer to dynamic table
ls_lvc_cat TYPE lvc_s_fcat,
lt_lvc_cat TYPE lvc_t_fcat. " Field catalog
* First column
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'MATNR'.
ls_lvc_cat-ref_table = 'MARA'.
APPEND ls_lvc_cat TO lt_lvc_cat.
* 2nd column
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'MAKTX'.
ls_lvc_cat-ref_table = 'MAKT'.
APPEND ls_lvc_cat TO lt_lvc_cat.
* 3rd column
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'MATKL'.
ls_lvc_cat-ref_table = 'MARA'.
APPEND ls_lvc_cat TO lt_lvc_cat.
* Create 1st internal table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = lt_lvc_cat
IMPORTING ep_table = lp_table.
ASSIGN lp_table->* TO <lt_data>.
* Read data into 1st internal table
SELECT matnr maktx matkl
INTO TABLE <lt_data>
FROM v_matnr
UP TO p_max ROWS
WHERE matnr IN s_matnr.
* Create 2nd internal table
* Checkbox
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'CHECKBOX'.
APPEND ls_lvc_cat TO lt_lvc_cat.
* Table color
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'TABCOLOR'.
ls_lvc_cat-ref_table = 'CALENDAR_TYPE'.
ls_lvc_cat-ref_field = 'COLTAB'.
APPEND ls_lvc_cat TO lt_lvc_cat.
* Create 2nd internal table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = lt_lvc_cat
IMPORTING ep_table = lp_table2.
ASSIGN lp_table2->* TO <data>.
* Create structure = structure of the 1st internal table
CREATE DATA lp_struct LIKE LINE OF <lt_data>.
ASSIGN lp_struct->* TO <header>.
* Create structure = structure of the 2nd internal table
CREATE DATA lp_struct2 LIKE LINE OF <data>.
ASSIGN lp_struct2->* TO <header2>.
* Move data from 1st internal table --> 2nd internal table
LOOP AT <lt_data> ASSIGNING <header>.
DESCRIBE TABLE lt_lvc_cat.
CLEAR <header2>.
* Fill the internal to display <data>
DO sy-tfill TIMES.
READ TABLE lt_lvc_cat INTO ls_lvc_cat INDEX sy-index.
* For each field of lt_lvc_cat.
ASSIGN COMPONENT ls_lvc_cat-fieldname OF STRUCTURE <header>
TO <field>.
IF sy-subrc NE 0. EXIT .ENDIF.
ASSIGN COMPONENT ls_lvc_cat-fieldname OF STRUCTURE <header2>
TO <field2>.
IF sy-subrc NE 0. EXIT .ENDIF.
<field2> = <field>.
ENDDO.
* Modify color
ASSIGN COMPONENT 'TABCOLOR' OF STRUCTURE <header2>
TO <field2>.
IF sy-subrc EQ 0.
PERFORM f_modify_color USING 'MAKTX' <field2>.
PERFORM f_modify_color USING 'MATKL' <field2>.
ENDIF.
APPEND <header2> TO <data> .
ENDLOOP.
ENDFORM. " f_read_data
*---------------------------------------------------------------------*
* Form F_DISPLAY_DATA
*---------------------------------------------------------------------*
FORM f_display_data.
* Macro definition
DEFINE m_sort.
add 1 to ls_sort-spos.
ls_sort-fieldname = &1.
ls_sort-down = 'X'.
append ls_sort to lt_sort.
END-OF-DEFINITION.
DATA:
ls_layout TYPE slis_layout_alv,
lt_sort TYPE slis_t_sortinfo_alv,
ls_sort TYPE slis_sortinfo_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv. " Field catalog
* Build Fieldcatalog - First column
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-ref_tabname = 'MARA'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO lt_fieldcat.
* Build Fieldcatalog - 2nd column
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MAKTX'.
ls_fieldcat-ref_tabname = 'MAKT'.
APPEND ls_fieldcat TO lt_fieldcat.
* Build Fieldcatalog - 3rd column
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATKL'.
ls_fieldcat-ref_tabname = 'MARA'.
APPEND ls_fieldcat TO lt_fieldcat.
* Layout
ls_layout-zebra = 'X'.
ls_layout-colwidth_optimize = 'X'.
ls_layout-box_fieldname = 'CHECKBOX'.
ls_layout-coltab_fieldname = 'TABCOLOR'.
m_sort 'MATNR'. " Sort by creation date
* Display data
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = ls_layout
it_fieldcat = lt_fieldcat
it_sort = lt_sort
TABLES
t_outtab = <data>.
ENDFORM. " F_DISPLAY_DATA
*---------------------------------------------------------------------*
* Form F_modify_color
*---------------------------------------------------------------------*
FORM f_modify_color USING u_fieldname TYPE lvc_fname
ut_tabcolor TYPE table.
DATA:
l_rnd_value TYPE datatype-integer2,
ls_tabcolor TYPE lvc_s_scol.
* Random value
CALL FUNCTION 'RANDOM_I2'
EXPORTING
rnd_min = 0
rnd_max = 3
IMPORTING
rnd_value = l_rnd_value.
CLEAR ls_tabcolor.
ls_tabcolor-fname = u_fieldname.
CASE l_rnd_value.
WHEN 0.
ls_tabcolor-color-col = 1. " Blue.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
WHEN 1.
ls_tabcolor-color-col = 3. " Yellow.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
WHEN 2.
ls_tabcolor-color-col = 5. " Green.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
WHEN 3.
ls_tabcolor-color-col = 6. " Red.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
ENDCASE.
INSERT ls_tabcolor INTO TABLE ut_tabcolor.
ENDFORM. " F_MODIFY_COLOR
Reward all helpfull answers
Regards
Pavan
2007 Jul 23 9:01 AM
u r requiremnt is not clear...but any how check this code....
it has a form for assigning colors....
rewardif useful
REPORT zppb001_prd_posting_upload
NO STANDARD PAGE HEADING LINE-SIZE 255
MESSAGE-ID zpp.
******************
INCLUDE bdcrecx1.
******************
TYPE-POOLS :slis.
DATA: wk_success(5) TYPE c, "To store the successfull Hits
wk_failure(5) TYPE c, "To store the failed Hits
l_mstring(600), "To store Message texts
t_date TYPE zservice_date,"To store Uploaded Date
wk_lines(5) TYPE c, "To store No of Records
lines(5) TYPE c, "To store No of Records
wk_len(150) TYPE c, "To store File path
wk_alp TYPE i, "To store path length
lent TYPE i, "To store path length
b(4). "To store File extension
DATA: alvfld TYPE slis_t_fieldcat_alv WITH HEADER LINE,
v_events TYPE slis_t_event WITH HEADER LINE,
wk_events LIKE LINE OF v_events,
it_list_comments TYPE slis_t_listheader,
wk_list_comments LIKE LINE OF it_list_comments,
wk_layout TYPE slis_layout_alv.
CONSTANTS: c_formname_top_of_page TYPE slis_formname
VALUE 'F_TOP_OF_PAGE'.
--
Generated data section with specific formatting - DO NOT CHANGE ***
DATA: BEGIN OF record OCCURS 0,
budat_002(010),
bktxt_004(025),
matnr_005(018),
werks_006(004),
alort_007(004),
erfmg_008(017),
END OF record.
End generated data section ***
----
DATA: BEGIN OF messages OCCURS 0, "TO STORE FINAL STATUS DISPLAY
budat_002(010),
bktxt_004(025),
matnr_005(018),
maktx TYPE makt-maktx,
werks_006(004),
alort_007(004),
erfmg_008(017),
msg_e(400),
msg_s(600),
msgtyp TYPE c,
line_color(4),
END OF messages.
DATA: BEGIN OF st_record1 ,
matnr_005(018),
werks_006(004),
budat_002(010),
bktxt_004(025),
erfmg_007(017),
erfmg_008(017),
alort_007(004),
END OF st_record1.
DEFINE alv_macro.
move : &1 to alvfld-col_pos,
&2 to alvfld-fieldname,
&3 to alvfld-seltext_m.
if &2 = 'MATNR_005' or &2 = 'MAKTX'.
alvfld-fix_column = 'X'.
endif.
append alvfld.clear alvfld.
END-OF-DEFINITION.
DATA : record1 LIKE TABLE OF st_record1 WITH HEADER LINE,
it_excel LIKE TABLE OF alsmex_tabline WITH HEADER LINE,
messtab1 LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
it_acc LIKE TABLE OF record WITH HEADER LINE,
it_rej LIKE TABLE OF record WITH HEADER LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
PARAMETERS: p_file TYPE localfile OBLIGATORY .
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
CHANGING
file_name = p_file.
AT SELECTION-SCREEN ON p_file.
wk_len = p_file.
CONDENSE wk_len NO-GAPS.
lent = STRLEN( wk_len ).
wk_alp = lent - 4.
b = wk_len+wk_alp(lent).
IF ( b NE '.txt' ) AND ( b NE '.xls' ).
MESSAGE e939.
CLEAR p_file.
STOP.
ENDIF.
START-OF-SELECTION.
PERFORM upload_fun.
PERFORM open_group.
PERFORM fill_bdc_table.
PERFORM close_group.
PERFORM assign_colors.
PERFORM f_event_build.
SORT messages BY matnr_005 ASCENDING.
PERFORM assign_columns.
PERFORM count.
IF ctu = 'X'.
PERFORM alv.
ENDIF.
FREE:messages,messtab1,record1.
END-OF-SELECTION.
--
FORM upload_fun.
REFRESH: record1, it_acc, it_rej, record, messages, messtab1, it_excel.
PERFORM fetch_from_flat_file.
CLEAR it_excel.
DESCRIBE TABLE it_excel.
IF sy-tfill = 0.
MESSAGE i937. STOP.
ENDIF.
LOOP AT it_excel.
CASE it_excel-col.
WHEN '0001'. MOVE: it_excel-value TO record1-matnr_005.
WHEN '0002'. MOVE: it_excel-value TO record1-werks_006.
WHEN '0003'. MOVE: it_excel-value TO record1-budat_002.
WHEN '0004'. MOVE: it_excel-value TO record1-bktxt_004.
WHEN '0005'. MOVE: it_excel-value TO record1-erfmg_007.
WHEN '0006'. MOVE: it_excel-value TO record1-erfmg_008.
WHEN '0007'. MOVE: it_excel-value TO record1-alort_007.
ENDCASE.
AT END OF row.
APPEND record1. CLEAR record1.
ENDAT.
ENDLOOP.
DELETE record1 WHERE matnr_005 EQ ' '.
--
DELETE record1 WHERE ( erfmg_007 = 0 OR erfmg_007 = ' ' )
AND ( erfmg_008 = 0 OR erfmg_008 = ' ' ).
DESCRIBE TABLE record1[].
IF sy-tfill > 0.
--
LOOP AT record1 WHERE erfmg_007 NE 0 AND erfmg_007 NE ' '.
MOVE: record1-budat_002 TO it_acc-budat_002,
record1-bktxt_004 TO it_acc-bktxt_004,
record1-matnr_005 TO it_acc-matnr_005,
record1-werks_006 TO it_acc-werks_006,
record1-erfmg_007 TO it_acc-erfmg_008.
APPEND it_acc. CLEAR: it_acc,record1.
ENDLOOP.
--
LOOP AT it_acc.
SELECT SINGLE elpro INTO it_acc-alort_007
FROM mkal CLIENT SPECIFIED
WHERE mandt = sy-mandt
AND matnr = it_acc-matnr_005
AND werks = it_acc-werks_006.
MODIFY it_acc TRANSPORTING alort_007. CLEAR: it_acc.
ENDLOOP.
--
LOOP AT record1 WHERE erfmg_008 NE 0 AND erfmg_008 NE ' '.
MOVE: record1-budat_002 TO it_rej-budat_002,
record1-bktxt_004 TO it_rej-bktxt_004,
record1-matnr_005 TO it_rej-matnr_005,
record1-werks_006 TO it_rej-werks_006,
record1-erfmg_008 TO it_rej-erfmg_008,
record1-alort_007 TO it_rej-alort_007.
APPEND it_rej. CLEAR: it_rej, record1.
ENDLOOP.
--
APPEND LINES OF it_acc TO record. APPEND LINES OF it_rej TO record.
FREE : it_rej, it_acc, record1.
ELSE.
MESSAGE i937.
STOP.
ENDIF.
ENDFORM. " UPLOAD_FUN
--
FORM fill_bdc_table.
IF NOT record[] IS INITIAL.
LOOP AT record.
PERFORM bdc_dynpro USING 'SAPLBARM' '0800'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM61B-BKTXT'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ISTDA'.
PERFORM bdc_field USING 'RM61B-BUDAT' record-budat_002.
PERFORM bdc_field USING 'RM61B-BKTXT' record-bktxt_004.
PERFORM bdc_field USING 'RM61B-MATNR' record-matnr_005.
PERFORM bdc_field USING 'RM61B-WERKS' record-werks_006.
PERFORM bdc_field USING 'RM61B-ALORT' record-alort_007.
PERFORM bdc_field USING 'RM61B-ERFMG' record-erfmg_008.
PERFORM bdc_dynpro USING 'SAPLCOWB' '0130'.
PERFORM bdc_field USING 'BDC_OKCODE' '=WEIT'.
PERFORM bdc_field USING 'BDC_CURSOR' 'G_COWB_HEADER-MNGTXT'.
PERFORM bdc_transaction USING 'MFBF'.
CLEAR messtab.
messtab1[] = messtab[].
LOOP AT messtab1 WHERE msgtyp = 'S' OR msgtyp = 'E'.
SELECT SINGLE * FROM t100 WHERE sprsl = messtab1-msgspra
AND arbgb = messtab1-msgid
AND msgnr = messtab1-msgnr.
IF sy-subrc = 0.
l_mstring = t100-text.
PERFORM store_messages.
CLEAR l_mstring.
ENDIF.
ENDLOOP.
MOVE-CORRESPONDING record TO messages.
SELECT SINGLE maktx INTO messages-maktx FROM makt CLIENT SPECIFIED
WHERE mandt = sy-mandt
AND matnr = messages-matnr_005
AND spras = 'EN'.
APPEND messages.
CLEAR: messages, messtab1. REFRESH messtab1.
ENDLOOP.
ENDIF.
ENDFORM. "fill_bdc_table
--
FORM assign_columns .
REFRESH alvfld.
alv_macro '1' 'MATNR_005' 'PART NO'.
alv_macro '2' 'MAKTX' 'DESCRIPTION'.
alv_macro '3' 'WERKS_006' 'PLANT'.
alv_macro '4' 'BUDAT_002' 'POSTING DATE'.
alv_macro '5' 'BKTXT_004' 'SHIFT'.
alv_macro '6' 'ERFMG_008' 'QUANTITY'.
alv_macro '7' 'ALORT_007' 'STGLOC'.
alv_macro '8' 'MSG_E' 'ERRORS DUE TO'.
alv_macro '9' 'MSG_S' 'STATUS'.
ENDFORM. " assign_columns
--
FORM f_event_build .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = v_events[].
READ TABLE v_events WITH KEY name = slis_ev_top_of_page
INTO wk_events.
wk_layout-info_fieldname = 'LINE_COLOR'.
wk_layout-colwidth_optimize = 'X'.
IF sy-subrc = 0.
MOVE c_formname_top_of_page TO wk_events-form.
MODIFY v_events FROM wk_events INDEX sy-tabix.
ENDIF.
ENDFORM. " f_event_build
--
FORM f_top_of_page.
WRITE sy-datum TO t_date.
CLEAR: it_list_comments[].
wk_list_comments-typ = 'H'. "H=Header, S=Selection, A=Action
wk_list_comments-key = ''.
CONCATENATE 'UPLOADED STATUS FOR PRODUCTION POSTING ON - ' t_date INTO
wk_list_comments-info SEPARATED BY space.
APPEND wk_list_comments TO it_list_comments.
CLEAR wk_list_comments.
DESCRIBE TABLE messages LINES wk_lines.
lines = wk_lines.
wk_list_comments-typ = 'S'. "H=Header, S=Selection, A=Action
wk_list_comments-key = ''.
CONCATENATE 'Total No of Hits:' lines INTO wk_list_comments-info
SEPARATED BY space.
APPEND wk_list_comments TO it_list_comments.
CLEAR wk_list_comments.
wk_list_comments-typ = 'S'. "H=Header, S=Selection, A=Action
wk_list_comments-key = ''.
CONCATENATE 'Successfull Hits:' wk_success INTO
wk_list_comments-info SEPARATED BY space.
APPEND wk_list_comments TO it_list_comments.
CLEAR wk_list_comments.
wk_list_comments-typ = 'S'. "H=Header, S=Selection, A=Action
wk_list_comments-key = ''.
CONCATENATE ' Failed Hits:' ' ' wk_failure INTO
wk_list_comments-info
SEPARATED BY space.
APPEND wk_list_comments TO it_list_comments.
CLEAR wk_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = it_list_comments.
ENDFORM. "F_TOP_OF_PAGE
--
FORM assign_colors .
LOOP AT messages.
CASE messages-msgtyp.
WHEN 'E'.
messages-line_color = 'C601'.
WHEN 'S'.
messages-line_color = 'C501'.
ENDCASE.
MODIFY messages TRANSPORTING line_color.
ENDLOOP.
ENDFORM. " assign_colors
--
FORM count .
CLEAR: wk_failure, wk_success.
LOOP AT messages.
CASE messages-msgtyp.
WHEN 'E'.
ADD 1 TO wk_failure.
WHEN 'S'.
ADD 1 TO wk_success.
ENDCASE.
ENDLOOP.
ENDFORM. " COUNT
--
FORM alv .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = wk_layout
it_fieldcat = alvfld[]
it_events = v_events[]
TABLES
t_outtab = messages
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " ALV
--
FORM fetch_from_flat_file .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1 "From 1st Column
i_begin_row = 2 "From 2nd row
i_end_col = 7 "Till 7th Column
i_end_row = 65000 "Till Row
TABLES
intern = it_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
ENDFORM. " FETCH_FROM_FLAT_FILE
--
FORM store_messages.
IF l_mstring CS '&1'.
REPLACE '&1' WITH messtab1-msgv1 INTO l_mstring.
REPLACE '&2' WITH messtab1-msgv2 INTO l_mstring.
REPLACE '&3' WITH messtab1-msgv3 INTO l_mstring.
REPLACE '&4' WITH messtab1-msgv4 INTO l_mstring.
ELSE.
REPLACE '&' WITH messtab1-msgv1 INTO l_mstring.
REPLACE '&' WITH messtab1-msgv2 INTO l_mstring.
REPLACE '&' WITH messtab1-msgv3 INTO l_mstring.
REPLACE '&' WITH messtab1-msgv4 INTO l_mstring.
ENDIF.
CONDENSE l_mstring.
IF messtab1-msgtyp = 'E'.
CONCATENATE messages-msg_s l_mstring INTO l_mstring SEPARATED BY space.
MOVE l_mstring TO messages-msg_e.
MOVE 'E' TO messages-msgtyp.
MOVE 'Document Not Posted' TO messages-msg_s.
ELSEIF messtab1-msgtyp = 'S'.
CONCATENATE messages-msg_s l_mstring INTO l_mstring SEPARATED BY space.
MOVE l_mstring TO messages-msg_s.
MOVE 'S' TO messages-msgtyp.
ENDIF.
ENDFORM. " store_messages