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: 

ALV Icon - traffic lights

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

7 REPLIES 7

former_member226519
Active Contributor
0 Kudos

try

write ICON_RED_LIGHT to WA_FINAL-LIGHT.

instead of

wa_final-light = '@0A@'.

jayanthi_jayaraman
Active Contributor

Hi,

Did you specified the fieldname in layout?

w_layout-excp_fname = 'LIGHT'.

0 Kudos

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.

Former Member
0 Kudos

Hi

Refere pgm-BCALV_GRID_04

use LIGHT field in the field catalogue

Former Member
0 Kudos

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.

Former Member
0 Kudos

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

Former Member
0 Kudos

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.