05-15-2009 8:51 AM
I tried to use icons on my ALV grid but with the following codes, I do not see the icon, the column appears empty. What's wrong with my code?
TYPE-POOLS: slis, icon.
TYPES: BEGIN OF st_final,
light LIKE ICON-ID,
ebeln TYPE ekbe-ebeln,
ebelp TYPE ekbe-ebelp,
matnr TYPE ekbe-matnr,
END OF st_final.
DATA: it_final TYPE STANDARD TABLE OF st_final,
wa_final LIKE LINE OF it_final,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gwa_fieldcat LIKE LINE OF gt_fieldcat.
......
......
LOOP AT it_final INTO wa_final.
IF wa_final-wepos = 'X'.
IF wa_final-rbstat <> 5 AND wa_final-eindt > chk_dt.
wa_final-light = '@0A@'.
ELSEIF wa_final-rbstat <> 5 AND wa_final-eindt < chk_dt.
wa_final-light = '@09@'.
ELSEIF wa_final-rbstat = 5.
wa_final-light = '@08@'.
ENDIF.
ENDIF.
ENDLOOP.
form alv_display .
PERFORM build_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = gt_fieldcat
i_save = ''
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
endform
form build_fieldcat .
IF gt_fieldcat[] IS INITIAL.
gwa_fieldcat-col_pos = '1'.
gwa_fieldcat-fieldname = 'LIGHT'.
gwa_fieldcat-outputlen = '4'.
gwa_fieldcat-icon = 'X'. "this is an icon
gwa_fieldcat-seltext_l = 'Status'.
APPEND gwa_fieldcat TO gt_fieldcat.
CLEAR gwa_fieldcat.
......
......
ENDIF.
endform. " buildfieldcat
05-15-2009 9:15 AM
Hi,
LOOP AT it_final INTO wa_final.
IF wa_final-wepos = 'X'.
IF wa_final-rbstat 5 AND wa_final-eindt > chk_dt.
wa_final-light = '@0A@'.
ELSEIF wa_final-rbstat 5 AND wa_final-eindt < chk_dt.
wa_final-light = '@09@'.
ELSEIF wa_final-rbstat = 5.
wa_final-light = '@08@'.
ENDIF.
ENDIF.
ENDLOOP.
You are just populating the workarea wa_final-light but where are you modifying the table it_final.
Just check in debug
Modified code
TYPE-POOLS: slis, icon.
TYPES: BEGIN OF st_final,
light LIKE ICON-ID,
ebeln TYPE ekbe-ebeln,
ebelp TYPE ekbe-ebelp,
matnr TYPE ekbe-matnr,
END OF st_final.
DATA: it_final TYPE STANDARD TABLE OF st_final,
wa_final LIKE LINE OF it_final,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gwa_fieldcat LIKE LINE OF gt_fieldcat.
FIELD-SYMBOLS <WA_FINAL> LIKE LINE OF it_final.
select * from ekbe
into corresponding fields of table it_final.
LOOP AT it_final assigning <WA_FINAL>.
<WA_FINAL>-light = '@08@'.
ENDLOOP.
PERFORM build_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = gt_fieldcat
i_save = ''
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
form build_fieldcat .
IF gt_fieldcat[] IS INITIAL.
gwa_fieldcat-col_pos = '1'.
gwa_fieldcat-fieldname = 'LIGHT'.
gwa_fieldcat-outputlen = '4'.
gwa_fieldcat-icon = 'X'. "this is an icon
gwa_fieldcat-seltext_l = 'Status'.
APPEND gwa_fieldcat TO gt_fieldcat.
CLEAR gwa_fieldcat.
ENDIF.
endform. " buildfieldcat
Regards
Edited by: Rajvansh Ravi on May 15, 2009 10:18 AM
05-15-2009 9:00 AM
try
write ICON_RED_LIGHT to WA_FINAL-LIGHT.
instead of
wa_final-light = '@0A@'.
05-15-2009 9:02 AM
Hi,
Did you specified the fieldname in layout?
w_layout-excp_fname = 'LIGHT'.
05-15-2009 9:45 AM
Yeah, I found the mistakes. I've forgotten to put MODIFY it_final FROM gwa_final and left out the part of assigning IS_LAYOUT with LIGHT. Thank you for the answers.
05-15-2009 9:03 AM
05-15-2009 9:09 AM
Hello,
Declare in the table
box TYPE char1,
lights TYPE char1,
y_wa_lignam TYPE slis_fieldname VALUE 'LIGHTS'.
pass
y_k_x TO y_wa_error-box,
y_p_ew TO y_wa_error-lights.
Pass this values to ALV layout
p_y_wa_layout-lights_condense = y_k_x. " Lights Condense
p_y_wa_layout-lights_tabname = y_k_x. " Lights table name
p_y_wa_layout-lights_fieldname = y_wa_lignam.
05-15-2009 9:15 AM
Hi,
LOOP AT it_final INTO wa_final.
IF wa_final-wepos = 'X'.
IF wa_final-rbstat 5 AND wa_final-eindt > chk_dt.
wa_final-light = '@0A@'.
ELSEIF wa_final-rbstat 5 AND wa_final-eindt < chk_dt.
wa_final-light = '@09@'.
ELSEIF wa_final-rbstat = 5.
wa_final-light = '@08@'.
ENDIF.
ENDIF.
ENDLOOP.
You are just populating the workarea wa_final-light but where are you modifying the table it_final.
Just check in debug
Modified code
TYPE-POOLS: slis, icon.
TYPES: BEGIN OF st_final,
light LIKE ICON-ID,
ebeln TYPE ekbe-ebeln,
ebelp TYPE ekbe-ebelp,
matnr TYPE ekbe-matnr,
END OF st_final.
DATA: it_final TYPE STANDARD TABLE OF st_final,
wa_final LIKE LINE OF it_final,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gwa_fieldcat LIKE LINE OF gt_fieldcat.
FIELD-SYMBOLS <WA_FINAL> LIKE LINE OF it_final.
select * from ekbe
into corresponding fields of table it_final.
LOOP AT it_final assigning <WA_FINAL>.
<WA_FINAL>-light = '@08@'.
ENDLOOP.
PERFORM build_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = gt_fieldcat
i_save = ''
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
form build_fieldcat .
IF gt_fieldcat[] IS INITIAL.
gwa_fieldcat-col_pos = '1'.
gwa_fieldcat-fieldname = 'LIGHT'.
gwa_fieldcat-outputlen = '4'.
gwa_fieldcat-icon = 'X'. "this is an icon
gwa_fieldcat-seltext_l = 'Status'.
APPEND gwa_fieldcat TO gt_fieldcat.
CLEAR gwa_fieldcat.
ENDIF.
endform. " buildfieldcat
Regards
Edited by: Rajvansh Ravi on May 15, 2009 10:18 AM
05-15-2009 9:24 AM
Hi,
Here is a program to display exceptions as traffic lights in alv..
https://www.sdn.sap.com/irj/scn/wiki?path=/display/snippets/aSimpleProgramforhighlightingtheexceptionsinALVgridcontrol%2528oops%2529
Regards.