LED in field of ALV(OOPs oriented)- Traffic lights in ALV filter popup

Hi experts,
Am showing LED in field of ALV(OOPs oriented)and when i click on  ALV filter for led field..it shows me Traffic lights in poup for filter.Please help me to get LED in filter popup also.
Thanks,
Sajay.

Hi,
Use the fuction module 'ICON_CREATE' as follows.
CALL FUNCTION 'ICON_CREATE'
    "To create Red/Yellow/Green traffic icons
      EXPORTING
        name   = wrk_light
      IMPORTING
        RESULT = ip_status.
wrk_light can be;
'ICON_RED_LIGHT'
'ICON_YELLOW_LIGHT'
or 'ICON_GREEN_LIGHT' according to your scenario, that you can use the logic for your scondition.
Use it in PBO.
Regards,
Renjith Michael.

Similar Messages

  • LED in field and traffic lights in ALV filter

    Hi experts,
    Am showing LED in field of ALV(OOPs oriented)and when i click on  ALV filter for led field..it shows me Traffic lights in poup for filter.Please help me to get LED in filter popup also.
    Thanks,
    Sajay.

    Solved

  • ALV editable with traffic lights

    Hello all,
    I need some help about ALV editable; my reports display an ALV grid editable, and update all the new values on the DB table, but I have traffic lights as values on the DB table.
    More information’s:
    So this is my internal table…
    <i>DATA: BEGIN OF it_table OCCURS 0,
          document    TYPE admi-document,
          status           TYPE admi-status,          “(traffic</i> lights from the table able to modify) 
          archiv_key  TYPE admi_files-archiv_key,
          status_opt  TYPE admi_files-status_opt,     “(traffic lights from the table able to modify )
          status_fil    TYPE admi_files-status_fil,     “(traffic lights from the table able to modify )
          END OF it_report.
    …</i>
    I got all the match code form the table (DB) , so on my report I could modify all the traffic lights but when I save the modifications, I got a message error.
    And the second problem was, I couldn’t come back to the value initial and I getting the same message. 
    Can anybody help me please?
    Thanks you.

    see the program and i am using traffic lights in my program --
    REPORT ZWM_BIN_STOCK_REQ no standard page heading
                        message-id zwave.
    D A T A   D E C L A R A T I O N ****************************
    Tables
    tables : zpwvbap,
             mara,
             marc,
             makt,
             vbap,
             zshift,
             marm,
             lqua.
    TYPE-POOLS: SLIS.
    Internal Table for Sales order
    data : begin of i_vbap occurs 0,
           matnr like zpwvbap-matnr," Material #
           ZZCUTOFF like zpwvbak-ZZCUTOFF," Cutoff Time
           vlpla like zpwvbap-vlpla,
           kwmeng like zpwvbap-kwmeng," Quantity
           vrkme  like zpwvbap-vrkme, " Sales Unit
           meins like zpwvbap-meins, " Unit of measure
           end of i_vbap.
    Internal Table for final Processing
    data : begin of i_final occurs 0,
           date(8) type c,
           matnr like zpwvbap-matnr," Material #
           zzshift like zshift-zzshift, " Wave Drop
           maktx like makt-maktx," Desc
           lgpla like lagp-lgpla, " Pick Bin
           pverme like lqua-verme," Stock at Pick Bin
           prverme like lqua-verme," Stock at Prod Bin
           kwmeng like zpwvbap-kwmeng," Requiremnet from Wave Drop
           vrkme  like zpwvbap-vrkme, " Sales Unit
          meins like zpwvbap-meins," Unit of measure
           end of i_final.
    Internal Table for Output
    data : begin of i_output occurs 0,
           field type c, " Traffic Lights
           zzshift like zshift-zzshift, " Wave Drop
           matnr like zpwvbap-matnr," Material #
           maktx like makt-maktx," Desc
           lgpla like lagp-lgpla, " Pick Bin
           pverme like lqua-verme," Stock at Pick Bin
           prverme like lqua-verme," Stock at Prod Bin
           kwmeng like zpwvbap-kwmeng," Requiremnet from Wave Drop
           vrkme like zpwvbap-vrkme," Sales Unit
          meins like zpwvbap-meins," Unit of measure
           diff like zpwvbap-kwmeng, " Diffrence
           end of i_output.
    Work Area for Final Internal Table
    data wa_final like i_final.
    data :  w_zzcutoff(12) TYPE c,
            v_date type sy-datum,
            v_time(4) type c,
            v_fldate(12) type c,
            v_fhdate(12) type c,
            v_pverme like lqua-verme,
            v_prverme like lqua-verme,
            v_diff like zpwvbap-kwmeng.
    Variables for new check box
    data : v_nverme like lqua-verme.
    Internal Table for Pick Bin
    data : begin of i_verme occurs 0,
           verme like lqua-verme,
           end of i_verme.
    Internal table for Prod Bin
    data : begin of i_pverme occurs 0,
           verme like lqua-verme,
           end of i_pverme.
    Variables for ALV
    DATA: FIELDCAT           TYPE SLIS_T_FIELDCAT_ALV,
          FIELDCAT_LN        LIKE LINE OF FIELDCAT,
          SORTCAT            TYPE SLIS_T_SORTINFO_ALV,
          SORTCAT_LN         LIKE LINE OF SORTCAT,
          EVENTCAT           TYPE SLIS_T_EVENT,
          EVENTCAT_LN        LIKE LINE OF EVENTCAT,
          LAYOUT             TYPE SLIS_LAYOUT_ALV,
          C_TOP_OF_PAGE      TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
          g_user_command TYPE slis_formname VALUE 'USER_COMMAND',
          GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
    DATA: COL_POS TYPE I,
          P_LIGNAM TYPE SLIS_FIELDNAME VALUE  'FIELD'.
    DATA : V_REPID LIKE SY-REPID,
           flag type c.
    S E L E C T I O N - S C R E E N *************************
    selection-screen : begin of block blk with frame title text-001.
    parameter : p_plant like marc-werks obligatory default '1000'.
    select-options : s_date for sy-datum obligatory ,
                     s_shift for zshift-zzshift,
                     s_matnr for mara-matnr,
                     s_dept for zpwvbap-zzdept,
                     s_pdept for marc-ZZPRODDEPT.
    selection-screen: end of block blk.
    parameters : p_check as checkbox ."default 'X'.
    ranges r_cutoff for  w_zzcutoff.
    I N I T I A L I Z A T I O N ****************************
    initialization.
      V_REPID = SY-REPID.
      s_date-low = sy-datum + 1.
      append s_date.
    S T A R T - O F - S E L E C T I O N  ***********************
    start-of-selection.
    Get the Shift Data.
      PERFORM GET_SHIFT_DETAILS.
    Get the data from ZPWVBAP Table
      PERFORM GET_DATA_VBAP.
    E N D - O F - S E L E C T I O N **********************
    end-of-selection.
      if not i_output[] is initial.
        sort i_output by field zzshift matnr.
    Reset the all Fiedcatlog.
        PERFORM RESETVALUES.
    Traffic Lights
        PERFORM BUILD_LAYOUT.
    Fill the fieldcatlog values
        PERFORM FILL_FIELDCATLOG.
    Call the List Function module
        PERFORM CALL_lIST.
      endif.
    *&      Form  GET_SHIFT_DETAILS
          Get the Cutoff Time.
    FORM GET_SHIFT_DETAILS.
      clear : v_fldate,
              v_fhdate.
      if not s_shift-low is initial.
        clear: v_time,
               v_date.
        if s_shift-low = '1'.
          v_time = '2000'.
        elseif s_shift-low = '2'.
          v_time = '2300'.
        endif.
        v_date = s_date-low - 1.
        concatenate v_date v_time into v_fldate.
      endif.
      if not s_shift-high is initial.
        clear : v_date,
                v_time.
        if s_shift-high = '1'.
          v_time = '2000'.
        elseif s_shift-high = '2'.
          v_time = '2300'.
        endif.
        if not s_date-high is initial.
          v_date = s_date-high - 1.
        else.
          v_date = s_date-low - 1.
        endif.
        concatenate v_date v_time into v_fhdate.
      endif.
      if not v_fhdate is initial.
        r_cutoff-low = v_fldate.
        r_cutoff-high = v_fhdate.
        r_cutoff-sign = 'I'.
        r_cutoff-option = 'BT'.
        append r_cutoff.
      endif.
    ENDFORM.                    " GET_SHIFT_DETAILS
    *&      Form  GET_DATA_VBAP
          Get the data from ZPWVBAP Table
    FORM GET_DATA_VBAP.
    Get the data from ZPWVBAP and ZPWVBAK Table
      if not v_fhdate is initial.
        select matnr ZZCUTOFF  vlpla sum( kwmeng ) vrkme meins
                     into table i_vbap
                     from zpwvbap as a inner join zpwvbak as b on
                                   a~vbeln = b~vbeln
                                   where a~werks = p_plant
                                   and   a~matnr in s_matnr
                                   and b~vdatu in s_date
                                   and a~zzdept in s_dept
                                   and b~zzcutoff in r_cutoff
                                  group by matnr zzcutoff vlpla vrkme meins.
      elseif not v_fldate is initial.
        select matnr ZZCUTOFF vlpla sum( kwmeng ) vrkme meins
                           into table i_vbap
                           from zpwvbap as a inner join zpwvbak as b on
                                   a~vbeln = b~vbeln
                                   where a~werks = p_plant
                                   and   a~matnr in s_matnr
                                   and b~vdatu in s_date
                                   and a~zzdept in s_dept
                                   and b~zzcutoff = v_fldate
                               group by matnr zzcutoff vlpla vrkme meins.
      else.
        select matnr ZZCUTOFF vlpla sum( kwmeng ) vrkme meins
                              into table i_vbap
           from zpwvbap as a inner join zpwvbak as b on
                                   a~vbeln = b~vbeln
                                   where a~werks = p_plant
                                   and   a~matnr in s_matnr
                                   and b~vdatu in s_date
                                   and a~zzdept in s_dept
                                   and b~zzcutoff in r_cutoff
                                group by matnr zzcutoff vlpla vrkme meins .
      endif.
      if sy-subrc ne 0.
        message i000(zwave) with 'No data found for given selection'.
        stop.
      endif.
      sort i_vbap by zzcutoff matnr.
      loop at i_vbap.
        clear : v_pverme,
                v_prverme.
    Compare the data with pick method
        select single zzpick from marc into marc-zzpick
                             where matnr = i_vbap-matnr
                             and   werks = p_plant
                             and   zzpick = '01'.
        if sy-subrc ne 0.
          continue.
        endif.
    Compare the data from MARC Table with Production Department
        select single zzPRODdept from marc into marc-zzPRODdept
                             where matnr = i_vbap-matnr
                             and werks = p_plant
                             and  zzPRODdept in s_pdept.
        if sy-subrc ne 0.
          continue.
        endif.
    Get the Material Description from MAKT Table
        Select single maktx from makt into makt-maktx
                            where matnr = i_vbap-matnr
                            and   spras = 'E'.
        if sy-subrc eq 0.
          i_final-maktx = makt-maktx.
        endif.
    Get the Pick Bin
        i_final-lgpla = i_vbap-vlpla.
        refresh i_verme.
        clear i_verme.
    Get the stock at Pick bin
        select verme  from lqua into table i_verme
                            where lgpla = i_vbap-vlpla
                            and   matnr = i_vbap-matnr
                            and   LGNUM = '100'.
        if sy-subrc eq 0.
          loop at i_verme.
            v_pverme = v_pverme + i_verme-verme.
          endloop.
          if sy-subrc eq 0.
            i_final-pverme = v_pverme.
          endif.
        endif.
        refresh i_pverme.
        clear i_pverme.
    Get the stock at Production bin
        select  verme from lqua into table i_pverme
                           where matnr = i_vbap-matnr
                           and   LGNUM = '100'
                       and ( lgpla = '9595959595' or
                             lgpla = '2222222222' or
                             lgpla = '5555555555' or
                             lgpla = '3232323232' or
                             lgpla = '8080808080' or
                             lgpla = '4040404040' or
                             lgpla = '9090909090' ).
        if sy-subrc eq 0.
          loop at i_pverme.
            v_prverme = v_prverme + i_pverme-verme.
          endloop.
          if sy-subrc eq 0.
            i_final-prverme = v_prverme.
          endif.
        endif.
    Compare the unit of measure and sales unit
        if i_vbap-vrkme ne i_vbap-meins.
    Get the data from MARM Table ( Unit of measure )
          select single * from marm into marm
                               where matnr = i_vbap-matnr
                               and   meinh = i_vbap-vrkme.
          if sy-subrc eq 0.
            i_final-pverme = ( i_final-pverme * marm-umren ) / marm-umrez.
          endif.
        endif.
    Material #
        i_final-matnr = i_vbap-matnr.
    Quantity from ZPWVBAP
        i_final-kwmeng = i_vbap-kwmeng.
    Unit of Measure
       i_final-meins = i_vbap-meins.
    Sales Unit
        i_final-vrkme = i_vbap-vrkme.
    Wave Drop
        if i_vbap-ZZCUTOFF+8(4) = '2000' .
          i_final-zzshift = '1'.
        endif.
        if i_vbap-zzcutoff+8(4) = '2300'.
          i_final-zzshift = '2'.
        endif.
        i_final-date = i_vbap-zzcutoff+0(8).
        append i_final.
        clear : i_final,
                i_vbap.
    **Difference
       i_output-diff = i_output-pverme - i_vbap-kwmeng.
    Traffic Lights Depends on value
       if i_output-pverme > i_output-kwmeng.
         i_output-field = '3'.
       elseif i_output-pverme < i_output-kwmeng.
         i_output-field = '1'.
       elseif i_output-pverme = i_output-kwmeng.
         i_output-field = '2'.
       endif.
       append i_output.
       clear : i_output,
               i_vbap.
      endloop.
      refresh i_vbap.
      sort i_final by date matnr zzshift.
    Processing the internal table to get same material with pick quantity
    deduction even it for 2nd shift
      loop at i_final.
    Move the data into work area in order remove #
        move i_final to wa_final.
        clear : flag.
        at new matnr.
          move : wa_final-matnr to i_output-matnr," Material #
                 wa_final-maktx to i_output-maktx," Desc
                 wa_final-lgpla to i_output-lgpla," Pick Bin
                 wa_final-kwmeng to i_output-kwmeng," Order qty
                 wa_final-zzshift to i_output-zzshift," Shift
                 wa_final-pverme to i_output-pverme, " Pick bin qty
                 wa_final-vrkme  to i_output-vrkme," Sales Unit
                 wa_final-prverme to i_output-prverme. " Prod Bin Qty
          break sreddy.
    Difference
          i_output-diff = i_output-pverme - i_output-kwmeng.
    New logic for Only HMR Department
          if p_check = 'X'.
            if i_output-pverme < i_output-kwmeng.
              v_nverme = i_output-pverme + i_output-prverme.
              if v_nverme > i_output-kwmeng.
               if i_output-pverme < i_output-kwmeng.
               i_output-field = '2'.
                else.
    Traffic Lights Depends on value
                i_output-field = '3'.
                endif.
              elseif v_nverme < i_output-kwmeng.
                i_output-field = '1'.
              elseif v_nverme = i_output-kwmeng.
                i_output-field = '2'.
              endif.
            elseif i_output-pverme > i_output-kwmeng.
              i_output-field = '3'.
            elseif i_output-pverme = i_output-kwmeng.
              i_output-field = '3'.
            endif.
          else.
    Traffic Lights Depends on value
            if i_output-pverme > i_output-kwmeng.
              i_output-field = '3'.
            elseif i_output-pverme < i_output-kwmeng.
              i_output-field = '1'.
            elseif i_output-pverme = i_output-kwmeng.
              i_output-field = '2'.
            endif.
          endif.
          move i_output-diff to v_diff.
          flag = 'X'.
        endat.
        if flag ne 'X'.
          move : wa_final-matnr to i_output-matnr," Material #
                 wa_final-maktx to i_output-maktx," Desc
                 wa_final-lgpla to i_output-lgpla," Pick Bin
                 wa_final-kwmeng to i_output-kwmeng," Order qty
                 wa_final-zzshift to i_output-zzshift," Shift
                 wa_final-vrkme  to i_output-vrkme," Sales Unit
                 wa_final-prverme to i_output-prverme. " Prod Bin Qty
      Move Diffrence value
          move v_diff to i_output-pverme.
          clear: v_diff.
    New logic for Only HMR Department
    New logic for Only HMR Department
          if p_check = 'X'.
            if i_output-pverme < i_output-kwmeng.
              v_nverme = i_output-pverme + i_output-prverme.
              if v_nverme > i_output-kwmeng.
              if i_output-pverme < i_output-kwmeng.
               i_output-field = '2'.
                else.
    Traffic Lights Depends on value
                i_output-field = '3'.
                endif.
    Traffic Lights Depends on value
               i_output-field = '3'.
              elseif v_nverme < i_output-kwmeng.
                i_output-field = '1'.
              elseif v_nverme = i_output-kwmeng.
                i_output-field = '2'.
              endif.
            elseif i_output-pverme > i_output-kwmeng.
              i_output-field = '3'.
            elseif i_output-pverme = i_output-kwmeng.
              i_output-field = '3'.
            endif.
    i_output-diff = i_output-pverme - i_output-kwmeng.
          else.
    Difference
            i_output-diff = i_output-pverme - i_output-kwmeng.
    Traffic Lights Depends on value
            if i_output-pverme > i_output-kwmeng.
              i_output-field = '3'.
            elseif i_output-pverme < i_output-kwmeng.
              i_output-field = '1'.
            elseif i_output-pverme = i_output-kwmeng.
              i_output-field = '2'.
            endif.
          endif.
        endif.
        append i_output.
        clear : i_output,
                wa_final,
                i_final,
                 v_nverme.
      endloop.
      sort i_output by field zzshift matnr.
    ENDFORM.                    " GET_DATA_VBAP
    *&      Form  RESETVALUES
          Reset the all fieldcatlogs
    FORM RESETVALUES.
      FIELDCAT_LN-KEY = SPACE.
      FIELDCAT_LN-DO_SUM = SPACE.
      FIELDCAT_LN-NO_OUT = SPACE.
      FIELDCAT_LN-QFIELDNAME = SPACE.
      FIELDCAT_LN-HOTSPOT = SPACE.
      FIELDCAT_LN-OUTPUTLEN = '0'.
      CLEAR: fieldcat_ln-seltext_l, fieldcat_ln-seltext_m,
             fieldcat_ln-seltext_s, fieldcat_ln-reptext_ddic.
    ENDFORM.                    " RESETVALUES
    *&      Form  FILL_FIELDCATLOG
          Fill the Fieldcatlog values
    FORM FILL_FIELDCATLOG.
      DATA: ls_fieldcat TYPE slis_fieldcat_alv.
    Trafiic Light
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'FIELD'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 7.
      LS_FIELDCAT-col_pos    = '1'.
      ls_fieldcat-seltext_L = 'Lights'.
      ls_fieldcat-seltext_s = 'Lights'.
      ls_fieldcat-seltext_m = 'Lights'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Wave Drop
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ZZSHIFT'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 9.
      LS_FIELDCAT-col_pos    = '2'.
      ls_fieldcat-seltext_L = 'Wave Drop'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Material
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'MATNR'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 18.
      LS_FIELDCAT-col_pos    = '3'.
      ls_fieldcat-seltext_L = 'Material'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Description
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'MAKTX'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 40.
      LS_FIELDCAT-col_pos    = '4'.
      ls_fieldcat-seltext_L = 'Description'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Pick Bin
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'LGPLA'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-col_pos    = '5'.
      ls_fieldcat-seltext_L = 'Pick Bin'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Trafiic Light
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'PVERME'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 16.
      LS_FIELDCAT-col_pos    = '6'.
      ls_fieldcat-seltext_L = 'Stock at Pick Bin'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Stock at Prod Bin
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'PRVERME'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 16.
      LS_FIELDCAT-col_pos    = '7'.
      ls_fieldcat-seltext_L = 'Stock at Prod Bin'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Req from wave drop
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'KWMENG'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 23.
      LS_FIELDCAT-col_pos    = '8'.
      ls_fieldcat-seltext_L = 'Requirement from Wave Drop'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Sales Unit
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'VRKME'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 12.
      LS_FIELDCAT-col_pos    = '9'.
      ls_fieldcat-seltext_L = 'Sales Unit'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Unit of Measure
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'MEINS'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 9.
      LS_FIELDCAT-col_pos    = '10'.
      ls_fieldcat-seltext_L = 'UNIT'.
      ls_fieldcat-no_out = 'X'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Diffference
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'DIFF'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 12.
      LS_FIELDCAT-col_pos    = '11'.
      ls_fieldcat-seltext_L = 'Difference'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    ENDFORM.                    " FILL_FIELDCATLOG
    *&      Form  CALL_lIST
          Use ALV Function module to display output
    FORM CALL_lIST.
    Top - of - Page
      PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                =
      I_BUFFER_ACTIVE                   = ' '
          I_CALLBACK_PROGRAM                = V_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
        I_CALLBACK_USER_COMMAND           = g_user_command
          I_CALLBACK_TOP_OF_PAGE            = C_TOP_OF_PAGE
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
          IS_LAYOUT                         = LAYOUT
          IT_FIELDCAT                       = FIELDCAT
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_EVENTS                         =
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      IT_ALV_GRAPHICS                   =
      IT_ADD_FIELDCAT                   =
      IT_HYPERLINK                      =
      I_HTML_HEIGHT_TOP                 =
      I_HTML_HEIGHT_END                 =
      IT_EXCEPT_QINFO                   =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          T_OUTTAB                          = I_OUTPUT
       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.                    " CALL_lIST
    *&      Form  BUILD_LAYOUT
          text
    FORM BUILD_LAYOUT.
      LAYOUT-GET_SELINFOS = 'X'.
    Now we want a traffic light to say if the Truck is deleted
    the variable p_lignam contains the name in IREPO which stores the
    value for the traffic light
      LAYOUT-LIGHTS_FIELDNAME = P_LIGNAM.
      layout-HEADER_TEXT = 'Lights'.
      LAYOUT-LIGHTS_CONDENSE =  'X'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  COMMENT_BUILD
          text
         -->P_GT_LIST_TOP_OF_PAGE[]  text
    FORM COMMENT_BUILD USING    LT_TOP_OF_PAGE TYPE
                                            SLIS_T_LISTHEADER.
      data : v_day(2) type c,
             v_mon(2) type c,
             v_year(4) type c,
             v_ldate(10) type c,
             v_hdate(10) type c.
      DATA: LS_LINE TYPE SLIS_LISTHEADER.
      data: d_date like sy-datum.
      clear : v_ldate,
              v_hdate.
    Header Information.
    LIST HEADING LINE: TYPE H
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'H'.
    LS_LINE-KEY:  NOT USED FOR THIS TYPE
      LS_LINE-INFO = 'Bin Replenishment report for HMR'.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = TEXT-003.
    LS_LINE-INFO = TEXT-003.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
    LS_LINE-KEY  = TEXT-003.
    LS_LINE-INFO = TEXT-003.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    Get the data ( s_date_low) into proper format.
      v_year = s_date-low+0(4).
      v_mon = s_date-low+4(2).
      v_day = s_date-low+6(2).
      concatenate v_mon '/' v_day '/' v_year into v_ldate.
      clear : v_mon,
              v_year,
              v_day.
    Get the data ( s_date_high) into proper format.
      v_year = s_date-high+0(4).
      v_mon  = s_date-high+4(2).
      v_day  = s_date-high+6(2).
      concatenate v_mon '/' v_day '/' v_year into v_hdate.
      clear : v_mon,
              v_year,
              v_day.
    Delivery date
      if not s_date-low is initial .
        if not s_date-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Delivery date From:'.
          LS_LINE-INFO = v_ldate.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Delivery date To :'.
          LS_LINE-INFO =  v_hdate.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
      if not s_date-low is initial.
        if  s_date-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Delivery date :'.
          LS_LINE-INFO = v_ldate.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
    Wave Drop
      if not S_SHIFT-LOW is initial.
        if not S_SHIFT-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Wave Drop From :'.
          LS_LINE-INFO = s_shift-low.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Wave Drop to :'.
          LS_LINE-INFO = s_shift-high.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
      if not S_SHIFT-LOW is initial.
        if S_SHIFT-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Wave Drop :'.
          LS_LINE-INFO = s_shift-low.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
         CLEAR LS_LINE.
         LS_LINE-TYP  = 'S'.
         LS_LINE-KEY  = 'Wave Drop to :'.
         LS_LINE-INFO = s_shift-high.
         APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
    Department
      if not s_dept-low is initial .
        if not s_dept-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Department From :'.
          LS_LINE-INFO = s_dept-low.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Department to :'.
          LS_LINE-INFO = s_dept-high.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
      if not s_dept-low is initial .
        if  s_dept-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Department :'.
          LS_LINE-INFO = s_dept-low.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
    Production Department
      if not S_PDEPT-LOW is initial.
        if not S_PDEPT-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Production Department From :'.
          LS_LINE-INFO = S_PDEPT-LOW.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Production Department to :'.
          LS_LINE-INFO = S_PDEPT-high.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
      if not S_PDEPT-LOW is initial.
        if  S_PDEPT-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Production Department :'.
          LS_LINE-INFO = S_PDEPT-LOW.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
    ENDFORM.                    " COMMENT_BUILD
          FORM TOP_OF_PAGE                                              *
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = GT_LIST_TOP_OF_PAGE
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
    ENDFORM.
          FORM USER_COMMAND                                             *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                rs_selfield TYPE slis_selfield.                 "#EC CALLED
      CASE R_UCOMM.
        WHEN '&IC1'.
          read table i_output index rs_selfield-tabindex.
          SET PARAMETER ID 'MAT' FIELD i_output-matnr.
          SET PARAMETER ID 'WRK' FIELD p_plant.
          if not i_output-matnr is initial.
            call transaction 'MD04' and skip first screen.
          endif.
      ENDCASE.
    ENDFORM.

  • Traffic light in RF monitor screen (LRF1) - how it is derive from?

    Hi,
    This is a question about WM-RF. My question is how does the system determine the traffic light color in the RF monitor screen (LRF1). I read the SAP help portal and compare it to the screen and it still doesn't make any sense out of it..
    On the SPRO, there is DEFINE QUEUE table, with thefollowing setup:
    WS--QUEUEQName-CapacUsed-CapacUsed----AccessLim
    110--B01_GEN-GenName610--
    2StrictLimitation
    Thus the relation is: 6/10 = 0.6
    Next, I went to LRF1 and saw this record with warehouse 110, and Queue B01GEN, and having the following value_:
    QUEUE -
    TOs--LOADProc.By--
    Propotion
    B01_GEN----150.0002--
    Green
    Thus the relation is: 15/2 = 7.5
    Why is it green? SAP help portal give the following explaination, and I don't know to derive it?
    A- The queue tranffic light is green if the relation is less than the value given in the left relation field.
    B - The queue traffic light is yellow if the relation is greater than or the same as the value specified in the right field.
    C - The queue traffic light is red if the relation is greater than or the same as the value specified in the left relation field.
    Please share if you know.
    Thanks..Tuff

    Hello,
    Does anyone know my question?
    Appreciate some help here.
    Thanks,
    tuff

  • Disable editable field in ALV grid using OOPS

    I have following requirements,
    Displaying ALV grid output with most of the fields editable.
    Validations on data entered for each fields,for error messages
    Query :
    I want to make all the fields except the field in ERROR in display only mode
    similar to case when we do validation of fields in table controls.

    HI
    check the below links lot of info and examples r there for OOPS
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    Check this cool weblog:
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    these links
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    For funtion module to class
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm
    for classes
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm
    for methods
    http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm
    for inheritance
    http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm
    for interfaces
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm
    For Materials:
    1) http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf -- Page no: 1291
    2) http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    3) http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    4) http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    5) http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    6) http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    7) http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    8) http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    1) http://www.erpgenie.com/sap/abap/OO/index.htm
    2) http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    Check these sample code
    data : begin of it_mara occurs 0,
    mark type flag,
    matnr type matnr,
    mtart type mtart,
    meins type meins,
    end of it_mara.
    data : begin of it_mara1 occurs 0,
    mark type flag,
    matnr type matnr,
    mtart type mtart,
    meins type meins,
    end of it_mara1.
    data : begin of it_mara2 occurs 0,
    mark type flag,
    matnr type matnr,
    mtart type mtart,
    meins type meins,
    end of it_mara2.
    data : t_fieldcat type lvc_t_fcat,
    t_fieldcat1 type lvc_t_fcat,
    s_fieldcat like line of t_fieldcat.
    data : s_layout type lvc_s_layo.
    data : control type ref to cl_gui_custom_container,
    grid type ref to cl_gui_alv_grid.
    data: begin of wa ,
    mark type flag,
    matnr type matnr,
    mtart type mtart,
    meins type meins,
    end of wa.
    class lcl_events_box definition.
    public section.
    methods :
    *Handler_Data_Changed for event Data_Changed of cl_gui_alv_grid
    *imporTing er_data_changed,
    Handler_User_Command for event User_Command of cl_gui_alv_grid
    imporTing e_ucomm,
    Handler_ToolBar for event ToolBar of cl_gui_alv_grid
    importing E_object E_interactive.
    endclass.
    class lcl_events_box implementation.
    method Handler_user_command.
    PERFORM FORM_USERCOMMAND CHANGING E_UCOMM.
    endmethod.
    method Handler_ToolBar.
    PERFORM FORM_TOOLBAR CHANGING E_OBJECT E_INTERACTIVE
    E_OBJECT->MT_TOOLBAR.
    endmethod.
    ENDCLASS.
    start-of-selection.
    data : w_events type ref to lcl_events_box.
    select matnr mtart meins from mara into corresponding fields of table
    it_mara.
    call screen 100.
    *& Module pbo_module OUTPUT
    text
    MODULE pbo_module OUTPUT.
    if GRID is initial.
    CREATE OBJECT CONTROL
    EXPORTING
    CONTAINER_NAME = 'CUST_CTRL'.
    CREATE OBJECT GRID
    EXPORTING
    I_PARENT = CONTROL.
    PERFORM BUILD_CATALOG.
    PERFORM BUILD_CATALOG1.
    PERFORM BUILD_LAYOUT.
    CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
    IS_LAYOUT = s_layout
    CHANGING
    IT_OUTTAB = it_mara[]
    IT_FIELDCATALOG = t_fieldcat.
    CREATE OBJECT W_EVENTS.
    SET HANDLER : W_EVENTS->HANDLER_TOOLBAR FOR GRID,
    W_EVENTS->HANDLER_USER_COMMAND FOR GRID.
    CALL METHOD GRID->SET_TOOLBAR_INTERACTIVE.
    ELSE.
    call method grid->refresh_table_display.
    ENDIF.
    ENDMODULE. " pbo_module OUTPUT
    *& Form BUILD_CATALOG
    FORM BUILD_CATALOG .
    S_FIELDCAT-COL_POS = '1'.
    S_FIELDCAT-FIELDNAME = 'MARK'.
    S_FIELDCAT-CHECKBOX = 'X'.
    S_FIELDCAT-eDIT = 'X'.
    APPEND S_FIELDCAT TO T_FIELDCAT.
    CLEAR S_FIELDCAT.
    S_FIELDCAT-COL_POS = '2'.
    S_FIELDCAT-FIELDNAME = 'MATNR'.
    S_FIELDCAT-SCRTEXT_M = 'MATERIAL'.
    APPEND S_FIELDCAT TO T_FIELDCAT.
    S_FIELDCAT-COL_POS = '3'.
    S_FIELDCAT-FIELDNAME = 'MTART'.
    S_FIELDCAT-SCRTEXT_M = 'MATERL TYPE'.
    APPEND S_FIELDCAT TO T_FIELDCAT.
    S_FIELDCAT-COL_POS = '4'.
    S_FIELDCAT-FIELDNAME = 'MEINS'.
    S_FIELDCAT-SCRTEXT_M = 'UOM'.
    APPEND S_FIELDCAT TO T_FIELDCAT.
    ENDFORM. " BUILD_CATALOG
    *& Form BUILD_LAYOUT
    text
    --> p1 text
    <-- p2 text
    FORM BUILD_LAYOUT .
    S_LAYOUT-ZEBRA = 'X'.
    S_LAYOUT-CWIDTH_OPT = 'X'.
    S_LAYOUT-GRID_TITLE = 'Material Details'.
    ENDFORM.
    " BUILD_LAYOUT////////////////////////////////////
    " USER_COMMAND_0100 INPUT
    *& Form FORM_USERCOMMAND
    text
    <--P_E_UCOMM text
    form FORM_USERCOMMAND changing p_e_ucomm.
    CASE P_E_UCOMM.
    WHEN 'INT1'.
    DO.
    READ TABLE IT_MARA INDEX SY-INDEX TRANSPORTING MARK MATNR.
    IF SY-SUBRC <> 0.
    EXIT.
    ENDIF.
    IF IT_MARA-MARK = 'X'.
    read table it_mara into wa TRANSPORTING MATNR MTART MEINS .
    MOVE-CORRESPONDING WA TO IT_MARA1.
    READ TABLE IT_MARA1 TRANSPORTING MATNR MTART MEINS .
    MOVE-CORRESPONDING IT_MARA1 TO IT_MARA2.
    APPEND IT_MARA2.
    CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
    IS_LAYOUT = s_layout
    CHANGING
    IT_OUTTAB = it_mara2[]
    IT_FIELDCATALOG = t_fieldcat1.
    SET PARAMETER ID 'MAT' FIELD IT_MARA-MATNR.
    CALL TRANSACTION 'MM02'.
    . ENDIF.
    ENDIF.
    ENDDO.
    ENDCASE.
    endform. " FORM_USERCOMMAND
    *& Form FORM_TOOLBAR
    text
    <--P_E_OBJECT text
    <--P_E_INTERACTIVE text
    <--P_E_OBJECT_>MT_TOOLBAR text
    FORM FORM_TOOLBAR CHANGING P_E_OBJECT TYPE REF TO
    CL_ALV_EVENT_TOOLBAR_SET
    P_E_INTERACTIVE
    MT_TOOLBAR TYPE TTB_BUTTON.
    DATA WAL_BUTTON TYPE STB_BUTTON.
    *WAL_BUTTON-ICON = ICON_status_reverse.
    WAL_BUTTON-TEXT = 'GO'.
    WAL_BUTTON-QUICKINFO = 'PROCEED'.
    waL_button-FUNCTION = 'INT1'.
    WAL_BUTTON-BUTN_TYPE = 0.
    WAL_BUTTON-DISABLED = SPACE.
    insert WAL_BUTTON INTO P_E_OBJECT->MT_TOOLBAR index 1.
    endform. " FORM_TOOLBAR
    *& Module PF-STATUS OUTPUT
    text
    module PF-STATUS output.
    set pf-status 'Z7PSTAT'.
    endmodule. " PF-STATUS OUTPUT
    *& Module USER_COMMAND_0100 INPUT
    text
    module USER_COMMAND_0100 input.
    CASE SY-UCOMM.
    WHEN 'BACK'.
    LEAVE PROGRAM.
    WHEN 'CANCEL'.
    LEAVE PROGRAM.
    ENDCASE.
    endmodule. " USER_COMMAND_0100 INPUT
    *& Form BUILD_CATALOG1
    text
    --> p1 text
    <-- p2 text
    form BUILD_CATALOG1 .
    S_FIELDCAT-COL_POS = '1'.
    S_FIELDCAT-FIELDNAME = 'MATNR'.
    S_FIELDCAT-SCRTEXT_M = 'MATERIAL'.
    APPEND S_FIELDCAT TO T_FIELDCAT1.
    S_FIELDCAT-COL_POS = '2'.
    S_FIELDCAT-FIELDNAME = 'MTART'.
    S_FIELDCAT-SCRTEXT_M = 'MATERL TYPE'.
    APPEND S_FIELDCAT TO T_FIELDCAT1.
    S_FIELDCAT-COL_POS = '3'.
    S_FIELDCAT-FIELDNAME = 'MEINS'.
    S_FIELDCAT-SCRTEXT_M = 'UOM'.
    APPEND S_FIELDCAT TO T_FIELDCAT1.
    endform. " BUILD_CATALOG1
    check the below link may be useful for you
    http://www.sapdevelopment.co.uk/reporting/alvhome.htm
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf
    Simple ALV report
    http://www.sapgenie.com/abap/controls/alvgrid.htm
    http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
    ALV
    1. Please give me general info on ALV.
    http://www.sapfans.com/forums/viewtopic.php?t=58286
    http://www.sapfans.com/forums/viewtopic.php?t=76490
    http://www.sapfans.com/forums/viewtopic.php?t=20591
    http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.
    2. How do I program double click in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=11601
    http://www.sapfans.com/forums/viewtopic.php?t=23010
    3. How do I add subtotals (I have problem to add them)...
    http://www.sapfans.com/forums/viewtopic.php?t=20386
    http://www.sapfans.com/forums/viewtopic.php?t=85191
    http://www.sapfans.com/forums/viewtopic.php?t=88401
    http://www.sapfans.com/forums/viewtopic.php?t=17335
    4. How to add list heading like top-of-page in ABAP lists?
    http://www.sapfans.com/forums/viewtopic.php?t=58775
    http://www.sapfans.com/forums/viewtopic.php?t=60550
    http://www.sapfans.com/forums/viewtopic.php?t=16629
    5. How to print page number / total number of pages X/XX in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)
    6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.
    http://www.sapfans.com/forums/viewtopic.php?t=64320
    http://www.sapfans.com/forums/viewtopic.php?t=44477
    7. How can I set the cell color in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=52107
    8. How do I print a logo/graphics in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=81149
    http://www.sapfans.com/forums/viewtopic.php?t=35498
    http://www.sapfans.com/forums/viewtopic.php?t=5013
    9. How do I create and use input-enabled fields in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=84933
    http://www.sapfans.com/forums/viewtopic.php?t=69878
    10. How can I use ALV for reports that are going to be run in background?
    http://www.sapfans.com/forums/viewtopic.php?t=83243
    http://www.sapfans.com/forums/viewtopic.php?t=19224
    11. How can I display an icon in ALV? (Common requirement is traffic light icon).
    http://www.sapfans.com/forums/viewtopic.php?t=79424
    http://www.sapfans.com/forums/viewtopic.php?t=24512
    12. How can I display a checkbox in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=88376
    http://www.sapfans.com/forums/viewtopic.php?t=40968
    http://www.sapfans.com/forums/viewtopic.php?t=6919
    Go thru these programs they may help u to try on some hands on
    ALV Demo program
    BCALV_DEMO_HTML
    BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode
    BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode
    BCALV_GRID_DEMO Simple ALV Control Call Demo Program
    BCALV_TREE_DEMO Demo for ALV tree control
    BCALV_TREE_SIMPLE_DEMO
    BC_ALV_DEMO_HTML_D0100
    <b>Reward all helpfull answers</b>
    Regards

  • Can I make text orientation of a field in ALV 90 degree to horizontal

    Hi
    I have to make text orientation of a field in ALV 90 degree to horizontal, just like we can do in excel sheet. Is it possible to do so. If yes, then how can we do it? I can not attach the illustration but you can type in some text in excel field and then right click--> format--> on popup window make the orientation 90 degrees.

    No dude,
    I dont think it is really possible.
    Regards,
    Ravi

  • Reg: Multiple Traffic lights(2 fields) in ALV

    Hi Gurus,
    I have created one field with traffic light in ALV display. But i need one more traffic light field in the same ALV.  Can any one please give me small example with multiple traffic licght fields in one ALV.
    Thanks
    Mahaboob

    Hi ,
        Declare one more field for Traffic light ...
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      lights(15) TYPE c,            " Traffic light
      lights1(15) TYPE c,           " Traffic light
    END OF t_ekko.
    If you are building the fieldcatalog manualy ..
      fieldcatalog-fieldname   = 'LIGHTS'.
      fieldcatalog-seltext_m   = 'Lights'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'LIGHTS1'.
      fieldcatalog-seltext_m   = 'Lights'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    Populate these with the values while filling the final internal table ....
        WRITE icon_green_light AS ICON TO wa_ekko-lights.
        WRITE icon_red_light AS ICON TO wa_ekko-lights1.
      append  wa_ekko into it_ekko.
      Call the FM to display ALV.
    Regards,
    Srini.

  • Obtaining subtotals based on 2 fields.(ALV using oops concept)

    Need help on how to apply sort on 2 fields and obtain subtotals.For example if I have some records for similar tax code and some more records  for a similar tax jurisdiction (under which all tax codes come).I need to calculate subtotals for same tax code as well as same tax jurisdiction code.Currently I am able to generate subtotals by sorting on 1 field only ,using OOPs concept.How do I apply for both the fields? This is what is being done currently with regard to sorting and subtotaling : 
    METHOD set_sorts.
    lr_sorts = gr_alv_data->get_sorts( ).
    TRY.
            lr_sorts->add_sort( 'TXJCD' ). ---sorting based on tax jurisdiction
          CATCH: cx_salv_not_found,
                cx_salv_existing,
                cx_salv_data_error.
        ENDTRY.
        TRY.
            lr_sorts->add_sort( columnname = 'MSKWZ'
                                        subtotal = if_salv_c_bool_sap=>true ).
          CATCH cx_salv_data_error cx_salv_not_found
                cx_salv_existing.                          
        ENDTRY.
      ENDMETHOD.                    "set_sorts
    Thanks & Regards,
    Savitha

    Hi Savitha,
    Use the other paramenters like POSITION, SEQUENCE, SUBTOTAL for both fields like as follows. Then it will work fine.
    TRY.
    lr_sorts->add_sort( columnname = 'TXJCD'
    sequence = 1
    Position = 1
    subtotal = if_salv_c_bool_sap=>true ).
    CATCH cx_salv_data_error cx_salv_not_found
    cx_salv_existing.
    ENDTRY.
    TRY.
    lr_sorts->add_sort( columnname = 'MSKWZ'
    sequence = 2
    Position = 1
    subtotal = if_salv_c_bool_sap=>true ).
    CATCH cx_salv_data_error cx_salv_not_found
    cx_salv_existing.
    ENDTRY.

  • Regd: Calculation of TOTAL field in ALV report

    Hi All,
    We have a scenario that we are not getting the total value for numeric fields in ALV report.
    Below i have given the code used for it.
    G_KEY = 'X'.
      G_NOKEY = SPACE.
      G_SUM = 'X'.
      G_NOSUM = SPACE.
      PERFORM BUILD_FIELDCAT USING 'VBELN'  G_KEY G_NOSUM.
      PERFORM BUILD_FIELDCAT USING 'BLDAT'  G_NOKEY G_NOSUM.
      PERFORM BUILD_FIELDCAT USING 'VGBEL'  G_KEY G_NOSUM.
      PERFORM BUILD_FIELDCAT USING 'POSNR'  G_KEY G_NOSUM.
      PERFORM BUILD_FIELDCAT USING 'MATNR'  G_KEY G_NOSUM..
      PERFORM BUILD_FIELDCAT USING 'LFIMG'  G_NOKEY G_NOSUM.
      PERFORM BUILD_FIELDCAT USING 'VRKME'  G_NOKEY G_NOSUM.
      PERFORM BUILD_FIELDCAT USING 'NETPR'  G_NOKEY G_NOSUM.
      PERFORM BUILD_FIELDCAT USING 'BRTWR'  G_NOKEY G_NOSUM.
      PERFORM BUILD_FIELDCAT USING 'VALUE_INR'  G_NOKEY G_SUM.
      PERFORM BUILD_FIELDCAT USING 'B_DUTY'     G_NOKEY G_SUM.
      PERFORM BUILD_FIELDCAT USING 'S_TOTAL1'   G_NOKEY G_SUM.
      PERFORM BUILD_FIELDCAT USING 'CV_DUTY'    G_NOKEY G_SUM.
      PERFORM BUILD_FIELDCAT USING 'C_CVD'      G_NOKEY G_SUM.
      PERFORM BUILD_FIELDCAT USING 'S_TOTAL2'   G_NOKEY G_SUM.
      PERFORM BUILD_FIELDCAT USING 'C_DUTY'     G_NOKEY G_SUM.
      PERFORM BUILD_FIELDCAT USING 'S_TOTAL3'   G_NOKEY G_SUM.
      PERFORM BUILD_FIELDCAT USING 'A_DUTY'     G_NOKEY G_SUM.
      PERFORM BUILD_FIELDCAT USING 'T_DUTY'     G_NOKEY G_SUM.
    PERFORM BUILD_LAYOUT.
      PERFORM BUILD_DISPLAY.
    *&      Form  DISPLAY
          text
    FORM BUILD_DISPLAY.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
      I_CALLBACK_PROGRAM                = ' '
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
         I_GRID_TITLE                      = TEXT-000
      I_GRID_SETTINGS                   =
       IS_LAYOUT                         = IG_LAYOUT
         IT_FIELDCAT                       = IG_FIELDCAT
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
         I_SAVE                            = 'A'
      IS_VARIANT                        =
      IT_EVENTS                         =
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          T_OUTTAB                          = IG_INBOUND
       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.                    "DISPLAY
    *&      Form  BUILD_FIELDCAT
          text
         -->G_FIELDNAME  text
         -->L_KEY        text
         -->L_SUM        text
    FORM BUILD_FIELDCAT USING L_FIELDNAME LIKE DD03L-FIELDNAME L_KEY TYPE C L_SUM TYPE C.
      CLEAR WG_FIELDCAT_LN.
      ADD 1 TO G_COL_POS.
      WG_FIELDCAT_LN-REF_TABNAME = 'IG_INBOUND'.
      WG_FIELDCAT_LN-FIELDNAME = L_FIELDNAME.
      WG_FIELDCAT_LN-KEY = L_KEY.
      WG_FIELDCAT_LN-DO_SUM = L_SUM.
      WG_FIELDCAT_LN-COL_POS = G_COL_POS.
      WG_FIELDCAT_LN-NO_OUT = SPACE.
      WG_FIELDCAT_LN-QFIELDNAME = SPACE.
      WG_FIELDCAT_LN-HOTSPOT = SPACE.
      APPEND WG_FIELDCAT_LN TO IG_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCAT
    *&      Form  BUILD_LAYOUT
          text
    FORM BUILD_LAYOUT.
    IG_LAYOUT-TOTALS_TEXT = 'Total Amount'.
    *IG_LAYOUT-SUBTOTALS_TEXT = 'A'.
    IG_LAYOUT-ZEBRA = 'X'.
    ENDFORM.
    Help and Sugesstions will be much appreciated.
    Thanks & Regds.
    Ramesh.

    This is sample program for the same
    REPORT  Z_50657_ALV_EX2
            NO STANDARD PAGE HEADING
            LINE-COUNT 65(3)
            LINE-SIZE 220
            MESSAGE-ID ZZ.
    *                             Type Pools                               *
    TYPE-POOLS: SLIS, ICON.
    *                              Tables                                  *
    TABLES: VBAK. "Sales Document Data
    *                         Internal Tables                              *
    * TABLE TO HOLD DATA OF SALES DOCUMENT
    DATA: BEGIN OF IT_VBAK OCCURS 0,
          VBELN LIKE VBAK-VBELN, "Sales Document
          VBTYP LIKE VBAK-VBTYP, "SD document category
          AUDAT LIKE VBAK-AUDAT, "Document date (date received/sent)
          AUGRU LIKE VBAK-AUGRU, "Order reason (reason for the business)
          AUART LIKE VBAK-AUART, "Sales Document Type
          NETWR LIKE VBAK-NETWR, "Net Sales Order in Doc. Currency
          WAERK LIKE VBAK-WAERK, "SD document currency
          ICON TYPE ICON-ID,     "traffic lights
          END OF IT_VBAK.
    *                             Work Areas                               *
    *WORK AREAS DEFINED FOR ALV'S
    DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,      "field catalog
          IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,     "field catalog ITAB
          WA_SORT TYPE SLIS_SORTINFO_ALV,           "SORT work area
          IT_SORT TYPE SLIS_T_SORTINFO_ALV,         "SORT ITAB
          LAYOUT TYPE SLIS_LAYOUT_ALV,              "LAYOUT
          WA_FCODE TYPE SLIS_EXTAB,                 "FUN CODE
          I_FCODE_EXTAB TYPE SLIS_T_EXTAB,
          WA_EVENTS TYPE SLIS_ALV_EVENT,
          IT_EVENTS TYPE SLIS_T_EVENT.
    *                       Selection-Screen                               *
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
    SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.
    PARAMETERS: P_VBTYP LIKE VBAK-VBTYP DEFAULT 'C'.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
    PARAMETERS: LIST RADIOBUTTON GROUP G1,
                GRID RADIOBUTTON GROUP G1.
    SELECTION-SCREEN END OF BLOCK B2.
    *                     At  Selection-Screen                             *
    *VALIDATION
    *                       Start of Selection                             *
    START-OF-SELECTION.
    *POPULATION OF DATA INTO INTERNAL TABLE ITAB
      PERFORM GET_DATA.
    *DEFINE USER DEFINED FIELDCATALOG
      PERFORM DEFINE_FIELDCATALOG.
    *SUBTOTALS AND TOTALS DISPLAY USING SORT
      PERFORM SORT_LIST.
    *CHANGE FCODE OF STATUS
      PERFORM CHANGE_FCODE.
    *CHECK RADIOBUTTON OPTION AND ACCORDINGLY FINAL DISPLAY
      PERFORM CHECK_OPTION.
    *&      Form  GET_DATA
    *       text
    FORM GET_DATA.
      SELECT VBELN
             VBTYP
             AUDAT
             AUGRU
             AUART
             NETWR
             WAERK FROM VBAK INTO TABLE IT_VBAK
             WHERE VBELN IN S_VBELN AND VBTYP = P_VBTYP
             AND ERDAT > '01.01.2004' AND NETWR > 0.
      LOOP AT IT_VBAK.
        IF IT_VBAK-NETWR < 10000.
          IT_VBAK-ICON = '@08@'.
        ELSEIF IT_VBAK-NETWR > 100000.
          IT_VBAK-ICON = '@0A@'.
        ELSE.
          IT_VBAK-ICON = '@09@'.
        ENDIF.
        MODIFY IT_VBAK INDEX SY-TABIX.
      ENDLOOP.
    ENDFORM.                    "GET_DATA
    *&      Form  CHECK_OPTION
    *       text
    FORM CHECK_OPTION.
      WA_EVENTS-NAME = 'TOP_OF_PAGE'.
      WA_EVENTS-FORM = 'TOP'.
      APPEND WA_EVENTS TO IT_EVENTS.
      CLEAR WA_EVENTS.
      WA_EVENTS-NAME = 'END_OF_LIST'.
      WA_EVENTS-FORM = 'END_LIST'.
      APPEND WA_EVENTS TO IT_EVENTS.
      CLEAR WA_EVENTS.
      IF LIST = 'X'.
        PERFORM LIST_DISP.
      ENDIF.
      IF GRID = 'X'.
        PERFORM GRID_DISP.
      ENDIF.
    ENDFORM.                    "CHECK_OPTION
    *&      Form  DEFINE_FIELDCATALOG
    *       text
    FORM DEFINE_FIELDCATALOG.
      WA_FIELDCAT-COL_POS = 1.
      WA_FIELDCAT-FIELDNAME = 'ICON'.
      WA_FIELDCAT-SELTEXT_L = 'ICON'.
      WA_FIELDCAT-ICON = 'X'.
      WA_FIELDCAT-OUTPUTLEN = 8.
      WA_FIELDCAT-TABNAME = 'IT_VBAK'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-COL_POS = 2.
      WA_FIELDCAT-FIELDNAME = 'VBELN'.
      WA_FIELDCAT-SELTEXT_L = 'SALES DOC NO.'.
      WA_FIELDCAT-OUTPUTLEN = 10.
      WA_FIELDCAT-TABNAME = 'IT_VBAK'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-COL_POS = 3.
      WA_FIELDCAT-FIELDNAME = 'AUDAT'.
      WA_FIELDCAT-SELTEXT_L = 'CREATED ON'.
      WA_FIELDCAT-OUTPUTLEN = 10.
      WA_FIELDCAT-TABNAME = 'IT_VBAK'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-COL_POS = 4.
      WA_FIELDCAT-FIELDNAME = 'VBTYP'.
      WA_FIELDCAT-SELTEXT_L = 'CATEGORY'.
      WA_FIELDCAT-OUTPUTLEN = 1.
      WA_FIELDCAT-TABNAME = 'IT_VBAK'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-COL_POS = 6.
      WA_FIELDCAT-FIELDNAME = 'AUGRU'.
      WA_FIELDCAT-SELTEXT_L = 'REASON'.
      WA_FIELDCAT-OUTPUTLEN = 3.
      WA_FIELDCAT-TABNAME = 'IT_VBAK'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-COL_POS = 5.
      WA_FIELDCAT-FIELDNAME = 'AUART'.
      WA_FIELDCAT-SELTEXT_L = 'DOC TYPE'.
      WA_FIELDCAT-OUTPUTLEN = 4.
      WA_FIELDCAT-TABNAME = 'IT_VBAK'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-COL_POS = 7.
      WA_FIELDCAT-FIELDNAME = 'NETWR'.
      WA_FIELDCAT-SELTEXT_L = 'NET VALUE'.
      WA_FIELDCAT-OUTPUTLEN = 17.
      WA_FIELDCAT-DECIMALS_OUT = 2.
    *  WA_FIELDCAT-DO_SUM = 'X'.
      WA_FIELDCAT-TABNAME = 'IT_VBAK'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-COL_POS = 8.
      WA_FIELDCAT-FIELDNAME = 'WAERK'.
      WA_FIELDCAT-SELTEXT_L = 'UNIT'.
      WA_FIELDCAT-OUTPUTLEN = 50.
      WA_FIELDCAT-TABNAME = 'IT_VBAK'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "DEFINE_FIELDCATALOG
    *&      Form  DEFINE_LAYOUT
    *       text
    FORM DEFINE_LAYOUT.
      LAYOUT-ZEBRA = 'X'.
      LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL SUM'.
      LAYOUT-WINDOW_TITLEBAR = 'EXERCISE 2'.
      LAYOUT-TOTALS_TEXT  = 'TOTAL'.
    ENDFORM.                    "DEFINE_LAYOUT
    *&      Form  SORT_LIST
    *       text
    FORM SORT_LIST.
      WA_SORT-FIELDNAME = 'VBELN'.
      WA_SORT-TABNAME = 'IT_VBAK'.
      WA_SORT-SPOS = 1.
      WA_SORT-UP = 'X'.
      WA_SORT-SUBTOT = 'X'.
      APPEND WA_SORT TO IT_SORT.
      CLEAR WA_SORT.
      WA_SORT-FIELDNAME = 'NETWR'.
      WA_SORT-TABNAME = 'IT_VBAK'.
      WA_SORT-UP = 'X'.
      WA_SORT-SPOS = 2.
      WA_SORT-SUBTOT = 'X'.
      APPEND WA_SORT TO IT_SORT.
      CLEAR WA_SORT.
    ENDFORM.                    "SORT_LIST
    *&      Form  LIST_DISP
    *       text
    FORM LIST_DISP.
      PERFORM DEFINE_LAYOUT.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM             = SY-REPID
         IT_FIELDCAT                    = IT_FIELDCAT
         IS_LAYOUT                      = LAYOUT
         IT_SORT                        = IT_SORT
         I_CALLBACK_PF_STATUS_SET       = 'STATUS'
         IT_EXCLUDING                   = I_FCODE_EXTAB
         I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
         IT_EVENTS                      = IT_EVENTS[]
    *   IMPORTING
    *     E_EXIT_CAUSED_BY_CALLER        =
    *     ES_EXIT_CAUSED_BY_USER         =
        TABLES
         T_OUTTAB                       = IT_VBAK
    *   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.                    "LIST_DISP
    *&      Form  GRID_DISP
    *       text
    FORM GRID_DISP.
      PERFORM DEFINE_LAYOUT.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM       = SY-REPID
          IS_LAYOUT                = LAYOUT
          IT_FIELDCAT              = IT_FIELDCAT
          IT_SORT                  = IT_SORT
          I_CALLBACK_PF_STATUS_SET = 'STATUS'
          IT_EXCLUDING             = I_FCODE_EXTAB
          I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
          IT_EVENTS                = IT_EVENTS[]
        TABLES
          T_OUTTAB                 = IT_VBAK.
    * 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.                    "GRID_DISP
    *&      Form  STATUS
    *       text
    *      -->P_EXTAB    text
    FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.
    ENDFORM.                    "STATUS
    *&      Form  USER_COMMAND
    *       text
    *      -->R_UCOMM      text
    *      -->RS_SELFIELD  text
    FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                                   RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN 'BACK' OR 'CANC' OR 'EXIT'.
          LEAVE TO SCREEN 0.
        WHEN '&IC1'.
          SET PARAMETER ID 'AUN' FIELD RS_SELFIELD-VALUE.
          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
      ENDCASE.
    ENDFORM.                    "USER_COMMAND
    *&      Form  CHANGE_FCODE
    *       text
    FORM CHANGE_FCODE.
      WA_FCODE = 'PRNT'.
      APPEND WA_FCODE TO I_FCODE_EXTAB.
      WA_FCODE = '&OAD'.
      APPEND WA_FCODE TO I_FCODE_EXTAB.
      WA_FCODE = '&AVE'.
      APPEND WA_FCODE TO I_FCODE_EXTAB.
      WA_FCODE = '&EB9'.
      APPEND WA_FCODE TO I_FCODE_EXTAB.
      WA_FCODE = '&SUM'.
      APPEND WA_FCODE TO I_FCODE_EXTAB.
      WA_FCODE = '&UMC'.
      APPEND WA_FCODE TO I_FCODE_EXTAB.
      WA_FCODE = '&XPA'.
      APPEND WA_FCODE TO I_FCODE_EXTAB.
      WA_FCODE = '&OMP'.
      APPEND WA_FCODE TO I_FCODE_EXTAB.
    ENDFORM.                    "CHANGE_FCODE
    *&      Form  TOP
    *       text
    FORM TOP.
      IF LIST = 'X'.
        WRITE:/ SY-ULINE.
        WRITE:/ 'DATE:', SY-DATUM,55 'INTELLIGROUP ASIA PVT LTD'.
        WRITE:/ 'TIME:', SY-UZEIT.
        WRITE:/ 'USER NAME:', SY-UNAME,60 SY-TITLE.
        WRITE:/ 'PAGE', SY-PAGNO.
        WRITE:/ SY-ULINE.
      ENDIF.
      IF GRID = 'X'.
        DATA: LS_LINE TYPE SLIS_LISTHEADER,
              E04_LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
    *   Listenüberschrift: Typ H
        CLEAR LS_LINE.
        LS_LINE-TYP  = 'H'.
    *   LS_LINE-KEY:  not used for this type
        LS_LINE-INFO = 'Summary'.
        APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
    *   Kopfinfo: Typ S
        CLEAR LS_LINE.
        LS_LINE-TYP  = 'S'.
        LS_LINE-KEY  = 'Intelligroup'.
        LS_LINE-INFO = ''.
        APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
        LS_LINE-KEY  = 'ASIA'.
        LS_LINE-INFO = 'PVT LTD'.
        APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
    *   Aktionsinfo: Typ A
        CLEAR LS_LINE.
        LS_LINE-TYP  = 'A'.
    *   LS_LINE-KEY:  not used for this type
        LS_LINE-INFO = 'truman'.
        APPEND LS_LINE TO  E04_LT_TOP_OF_PAGE.
        CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
          EXPORTING
            IT_LIST_COMMENTARY = E04_LT_TOP_OF_PAGE
            I_LOGO             = 'ENJOY_SAP_LOGO'.
      ENDIF.
    ENDFORM.                    "TOP
    *&      Form  END_LIST
    *       text
    FORM END_LIST.
      IF LIST = 'X'.
        SKIP 2.
        WRITE:/60 'END OF PAGE'.
      ENDIF.
      IF GRID = 'X'.
          DATA: LS_LINE TYPE SLIS_LISTHEADER,
              E04_LT_END_OF_LIST TYPE SLIS_T_LISTHEADER.
    *   Listenüberschrift: Typ H
        CLEAR LS_LINE.
        LS_LINE-TYP  = 'H'.
    *   LS_LINE-KEY:  not used for this type
        LS_LINE-INFO = 'Summary'.
        APPEND LS_LINE TO E04_LT_END_OF_LIST.
    *   Kopfinfo: Typ S
        CLEAR LS_LINE.
        LS_LINE-TYP  = 'S'.
        LS_LINE-KEY  = 'Intelligroup'.
        LS_LINE-INFO = ''.
        APPEND LS_LINE TO E04_LT_END_OF_LIST.
        LS_LINE-KEY  = 'ASIA'.
        LS_LINE-INFO = 'PVT LTD'.
        APPEND LS_LINE TO E04_LT_END_OF_LIST.
    *   Aktionsinfo: Typ A
        CLEAR LS_LINE.
        LS_LINE-TYP  = 'A'.
    *   LS_LINE-KEY:  not used for this type
        LS_LINE-INFO = TEXT-105.
        APPEND LS_LINE TO  E04_LT_END_OF_LIST.
        CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
          EXPORTING
            IT_LIST_COMMENTARY = E04_LT_END_OF_LIST.
      ENDIF.
    ENDFORM.                    "END_LIST

  • How to pass custom search help(F4 help) for a field in ALV output?

    Hi,
    I want to activate the F4 help in ALV output for a field for which we do not have search help assigned at table ,data element and domain level.
    In field catalog i have enabled it by below line.
    ls_fcat-F4AVAILABL = 'X'.
    but because there are no standard input help available it is giving message as "No input help is available".
    so how to pass our custom search help (g_search) for any field in ALV output.
    I am using object oriented ALV grid display.
    Thanks!!!
    Rajesh Gupta.

    hi,
    check this out:
    http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/b3d5e890-0201-0010-c0ac-bba85ec2ae8d
    http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/acdefb13-0701-0010-f1a2-8eeefa7d3780
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b3d5e890-0201-0010-c0ac-bba85ec2ae8d?quicklink=index&overridelayout=true

  • Displaying traffic lights in alv grid report?

    Hi everyone,
    I have an alv grid report.I m using the FM reuse_alv_grod_display to display my alv report.I am passing the fieldcatalogue automatically.I m getting the output perfectly.Now i have to add traffic lights to that alv report.
    Since i m passing the fieldcatalogue automatically i m confused to display the traffic lights?
    any suggestions please?
    Thank you.

    hi dp,
    look at the program i made... se the bold part you will be able to impelment lights easily,
    DECLARING TYPES POOL *
    All the definitions of internal tables, structures and constants
    are declared in a type-pool called SLIS.
    type-pools: slis.
    TABLES *
    tables: vbak,vbap,kna1.
    TYPES *
    *&--defining types for TABLE VBAK
    types: begin of t_vbak,
    vbeln type vbeln_va, "sales document
    kunnr type kunag,
    erdat type erdat,
    auart type auart,
    netwr type netwr_ak,
    waerk type waerk,
    vkorg type vkorg,
    vtweg type vtweg,
    spart type spart,
    name1 type name1_gp,
    stras type stras_gp,
    ort01 type ort01_gp,
    pstlz type pstlz,
    regio type regio,
    land1 type land1_gp,
    telf1 type telf1,
    end of t_vbak.
    *&--Defining types for TABLE VBAP
    types: begin of t_vbap,
    vbeln type vbeln_va,
    posnr type posnr_va,
    matnr type matnr,
    maktx type maktx,
    end of t_vbap.
    *&--MERGED FINAL SALES TABLE
    types: begin of t_sales_final,
    vbeln type vbeln_va,
    kunnr type kunag,
    posnr type posnr_va,
    erdat type erdat, "date of creation
    auart type auart,
    netwr type netwr_ak,
    waerk type waerk,
    vkorg type vkorg,
    vtweg type vtweg,
    spart type spart,
    name1 type name1_gp,
    v_lights type c,
    stras type stras_gp,
    ort01 type ort01_gp,
    pstlz type pstlz,
    regio type regio,
    land1 type land1_gp,
    telf1 type telf1,
    matnr type matnr,
    maktx type maktx,
    end of t_sales_final.
    defining wrokarea and IT.
    WORK AREA DECLARATION *
    *&---work area for Internal Tables
    data: wa_vbak type t_vbak.
    data: wa_vbap type t_vbap.
    data: wa_sales_final type t_sales_final.
    *&--work area for layout
    data: wa_layout type slis_layout_alv.
    INTERNAL TABLES DECLARATION *
    *&---Internal tables without Header Line.
    data : i_vbak type standard table of t_vbak,
    i_vbap type standard table of t_vbap,
    i_sales_final type standard table of t_sales_final.
    *&---Internal table for field catalog
    data : i_fieldcat type slis_t_fieldcat_alv,
    *&---Internal table for the sorting sequence.
    i_sortinfo type slis_t_sortinfo_alv,
    *&---Internal table for the event catalog.
    i_eventcat type slis_t_event,
    *&---Internal table for the top of page event
    i_listheader type slis_t_listheader.
    VARIABLE DECLARATION *
    data : v_progname like sy-repid, "Program name(system defined)
    v_gridtitle type lvc_title. "Grid Title
    INITIALIZATION EVENT *
    initialization.
    v_progname = sy-repid.
    refresh:i_vbak,
    i_vbap,
    i_sales_final,
    i_fieldcat,
    i_sortinfo,
    i_eventcat,
    i_listheader.
    clear: wa_vbak,
    wa_vbap,
    wa_sales_final,
    wa_layout.
    SELECTION SCREEN *
    SCREEN FOR ENTERING INFORMATION
    selection-screen begin of block b1 with frame title text-001.
    select-options: r_vbeln for wa_vbak-vbeln obligatory.
    select-options: r_erdat for wa_vbak-erdat obligatory.
    selection-screen end of block b1 .
    AT SELECTION SCREEN *
    at selection-screen.
    perform zf_validate_sales_doc_no.
    perform zf_validate_date.
    START OF SELECTION EVENT
    start-of-selection.
    perform zf_populate_header.
    perform zf_populate_detail.
    perform zf_append_sales_final.
    END OF SELECTION EVENT
    end-of-selection.
    *If Internal Table Is Populated Then Only Display Alv Report.
    if i_sales_final is not initial.
    Prepare fieldcatalog .
    perform zf_build_fieldcat using i_fieldcat.
    MODIFY the records IN the internal TABLE for the traffic lights.
    perform zf_modify_final.
    build event catalogue
    perform zf_eventcat using i_eventcat.
    build sorting
    perform zf_sorting using i_sortinfo.
    &---Build Listheader for TOP OF PAGE EVENT.
    perform zf_build_listheader using i_listheader.
    &---Build layout.
    perform zf_layout.
    &---Initializating Grid Title
    perform zf_build_grid_title.
    &---Display alv grid.
    perform zf_display_alv_grid.
    else.
    *If Table is not Populated ie Records Does not exist
    message 'Record Does Not Exist' type 'S'.
    endif.
    *& Form zf_validate_sales_doc_no
    text
    --> p1 text
    <-- p2 text
    form zf_validate_sales_doc_no .
    select single vbeln into wa_vbak-vbeln from vbak where vbeln in r_vbeln .
    if sy-subrc <> 0.
    message i101.
    endif.
    endform. " zf_validate_sales_doc_no
    *& Form zf_validate_date
    text
    --> p1 text
    <-- p2 text
    form zf_validate_date .
    if date is future
    if r_erdat-low >= sy-datum.
    message e102.
    elseif r_erdat-high >= sy-datum.
    message e103.
    endif.
    endform. " zf_validate_date
    *& Form zf_populate_header
    text
    --> p1 text
    <-- p2 text
    form zf_populate_header .
    select vbeln
    kunnr
    erdat
    auart
    netwr
    waerk
    vkorg
    vtweg
    spart
    into table i_vbak from vbak where vbeln in r_vbeln.
    if sy-subrc <> 0.
    message 'RECORD DOES NOT EXIST' type 'E'.
    endif.
    sort i_vbak by vbeln.
    *&--LOGIC TO GET FIELDS FROM TABLE KNA1 INTO INTERNAL TABLE I_VBAK
    loop at i_vbak into wa_vbak.
    select single name1 stras ort01 pstlz regio land1 telf1 into (wa_vbak-name1,
    wa_vbak-stras,
    wa_vbak-ort01,
    wa_vbak-pstlz,
    wa_vbak-regio,
    wa_vbak-land1,
    wa_vbak-telf1)
    from kna1
    where kunnr = wa_vbak-kunnr.
    modifying it_header.
    modify i_vbak from wa_vbak.
    clear wa_vbak.
    endloop.
    endform. " zf_populate_header
    *& Form zf_populate_detail
    text
    --> p1 text
    <-- p2 text
    form zf_populate_detail .
    if i_vbak[] is not initial.
    select vbeln
    posnr
    matnr
    into table i_vbap from vbap
    for all entries in i_vbak where vbeln = i_vbak-vbeln.
    endif.
    sort i_vbap by vbeln.
    sort i_vbap by posnr.
    *&--LOGIC TO GET FIELDS FROM TABLE MAKT INTO INTERNAL TABLE I_VBAP
    loop at i_vbap into wa_vbap.
    select single maktx into (wa_vbap-maktx)
    from makt where matnr = wa_vbap-matnr and spras = sy-langu.
    modifying it_header.
    modify i_vbap from wa_vbap.
    clear wa_vbap.
    endloop.
    endform. " zf_populate_detail
    *& Form zf_append_sales_final
    text
    --> p1 text
    <-- p2 text
    form zf_append_sales_final .
    sort i_vbak by vbeln.
    sort i_vbap by vbeln posnr.
    loop at i_vbak into wa_vbak.
    move-corresponding wa_vbak to wa_sales_final.
    read table i_vbap with key vbeln = wa_vbak-vbeln
    binary search transporting no fields.
    loop at i_vbap into wa_vbap from sy-tabix.
    if wa_vbap-vbeln <> wa_vbak-vbeln.
    exit.
    endif.
    move-corresponding wa_vbap to wa_sales_final.
    append wa_sales_final to i_sales_final.
    endloop.
    endloop.
    endform. " zf_append_sales_final
    *& Form zf_build_fieldcat
    text
    -->P_I_FIELDCAT text
    form zf_build_fieldcat using p_i_fieldcat type slis_t_fieldcat_alv.
    data: l_fieldcat type slis_fieldcat_alv. "local Workarea used
    clear l_fieldcat.
    FOR LIGHT IN COLUMN
    clear l_fieldcat.
    l_fieldcat-col_pos = '1'. " POSITION OF THE COLUMN.
    l_fieldcat-fieldname = 'V_LIGHTS'.
    " FIELD FOR WHICH CATALOG ID FILLED.
    *We are passing final internal table 'I_FINAL' to l_fieldcat(local
    *variable
    l_fieldcat-tabname = 'I_SALES_FINAL'.
    " INTERNAL TABLE TO WHICH THE FIELD BELONGS TO.
    l_fieldcat-just = 'C'. " FOR JUSTIFICATION.
    l_fieldcat-outputlen = 20.
    " TO DEFINE OUTPUT LENGTH OF THE COLUMN.
    append l_fieldcat to p_i_fieldcat.
    FIRST COLUMN ********************************
    l_fieldcat-col_pos = '2'. " POSITION OF THE COLUMN
    l_fieldcat-fieldname = 'VBELN'. " FIELD FOR WHICH CATALOG ID FILLED
    l_fieldcat-tabname = 'I_SALES_FINAL'. " INTERNAL TABLE BELONGS TO
    l_fieldcat-key = 'X'. " SO THAT this field is not scrollable hiddable.
    l_fieldcat-just = 'L'. " FOR JUSTIFICATION
    *l_fieldcat-hotspot = 'X'. " MARK THIS field as hotsopt
    l_fieldcat-lzero = 'X'. " OUTPUT WITH leading zeros.
    l_fieldcat-seltext_l = 'Sales Document'. " long text for header.
    l_fieldcat-seltext_m = 'Sales Doc'. " medium text for header.
    l_fieldcat-seltext_s = 'Sales Doc'. " sort text for header.
    l_fieldcat-outputlen = 20. " SET THE output length.
    l_fieldcat-ref_tabname = 'VBAK'. " FOR F1 & F4 help as
    append l_fieldcat to p_i_fieldcat.
    clear l_fieldcat.
    **************************SECOND COLUMN ********************************
    *l_fieldcat-col_pos = '3'. " POSITION OF THE COLUMN
    l_fieldcat-row_pos = '2'. " POSITION OF THE COLUMN
    l_fieldcat-fieldname = 'POSNR'. " FIELD FOR WHICH CATALOG ID FILLED
    l_fieldcat-tabname = 'I_SALES_FINAL'. " INTERNAL TABLE BELONGS TO
    l_fieldcat-key = 'X'. " SO THAT this field is not scrollable hiddable.
    l_fieldcat-just = 'L'. " FOR JUSTIFICATION
    l_fieldcat-hotspot = 'X'. " MARK THIS field as hotsopt
    l_fieldcat-lzero = 'x'. " OUTPUT WITH leading zeros.
    l_fieldcat-seltext_l = 'Sales Document Item'. " long text for header.
    l_fieldcat-seltext_m = 'Sales Document Item'. " medium text for header.
    l_fieldcat-seltext_s = 'Sales Document Item'. " sort text for header.
    l_fieldcat-outputlen = 20. " SET THE output length.
    l_fieldcat-ref_tabname = 'VBAP'. " FOR F1 & F4 help as
    append l_fieldcat to p_i_fieldcat.
    clear l_fieldcat.
    endform. " zf_build_fieldcat
    *& Form zf_eventcat
    text
    -->P_I_EVENTCAT text
    form zf_eventcat using p_i_eventcat type slis_t_event.
    data: l_eventcat type slis_alv_event.
    clear l_eventcat.
    call function 'REUSE_ALV_EVENTS_GET'
    exporting
    i_list_type = 0
    importing
    et_events = p_i_eventcat
    exceptions
    list_type_wrong = 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.
    TOP OF PAGE FORM
    clear l_eventcat.
    read table p_i_eventcat into l_eventcat with key
    name = slis_ev_top_of_page.
    "(COMPONENT "NAME"of structure)
    if sy-subrc = 0. "if success
    move 'ZF_TOP_OF_PAGE' to l_eventcat-form.
    "matches name and moves form to workarea and modifies table
    modify p_i_eventcat from l_eventcat index sy-tabix
    transporting form.
    endif.
    PF_STATUS_SET FORM
    clear l_eventcat.
    read table p_i_eventcat into l_eventcat with key
    name = slis_ev_pf_status_set.
    if sy-subrc = 0.
    move 'ZF_PF_STATUS_SET' to l_eventcat-form.
    modify p_i_eventcat from l_eventcat index sy-tabix
    transporting form.
    endif.
    USER_COMMAND FORM
    clear l_eventcat.
    read table p_i_eventcat into l_eventcat with key
    name = slis_ev_user_command.
    if sy-subrc = 0.
    move 'ZF_USER_COMMAND' to l_eventcat-form.
    modify p_i_eventcat from l_eventcat index sy-tabix
    transporting form.
    endif.
    endform. " zf_eventcat
    *& Form zf_sorting
    text
    -->P_I_SORTINFO text
    form zf_sorting using p_i_sortinfo.
    endform. " zf_sorting
    *& Form zf_build_listheader
    text
    -->P_I_LISTHEADER text
    form zf_build_listheader using p_i_listheader type slis_t_listheader.
    data: l_listheader type slis_listheader.
    refresh p_i_listheader.
    clear l_listheader.
    HEADER
    l_listheader-typ = 'H'.
    l_listheader-info = 'FUJITSU CONSULTING INDIA LTD.'.
    append l_listheader to p_i_listheader.
    SELECTION
    l_listheader-typ = 'S'.
    l_listheader-key = 'Date:'.
    l_listheader-info = sy-datum.
    append l_listheader to p_i_listheader.
    ACTION
    l_listheader-typ = 'A'.
    *l_listheader-key =
    l_listheader-info = 'SALES ORDER ALV REPORT By Rohan Malik'.
    append l_listheader to p_i_listheader.
    endform. " zf_build_listheader
    *& Form zf_build_grid_title
    text
    --> p1 text
    <-- p2 text
    form zf_build_grid_title .
    v_gridtitle = 'List of Purchase Order'.
    endform. " zf_build_grid_title
    *& Form zf_display_alv_grid
    text
    --> p1 text
    <-- p2 text
    form zf_display_alv_grid .
    call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
    i_callback_program = v_progname
    i_grid_title = v_gridtitle
    is_layout = wa_layout
    it_fieldcat = i_fieldcat
    it_sort = i_sortinfo
    it_events = i_eventcat
    IMPORTING
    E_EXIT_CAUSED_BY_CALLER =
    ES_EXIT_CAUSED_BY_USER =
    tables
    t_outtab = i_sales_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. " zf_display_alv_grid
    *& Form zf_top_of_page
    text
    --> p1 text
    <-- p2 text
    form zf_top_of_page .
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = i_listheader
    i_logo = 'ENJOYSAP_LOGO'
    I_END_OF_LIST_GRID =
    endform. " zf_top_of_page
    *& Form zf_user_command
    text
    --> p1 text
    <-- p2 text
    form zf_user_command using r_ucomm like sy-ucomm
    rs_selfield type slis_selfield .
    case r_ucomm. "FCODE
    when 'VA03'.
    read table i_sales_final into wa_sales_final index rs_selfield-tabindex.
    set parameter id 'AUN' field rs_selfield-value.
    call transaction 'VA03' and skip first screen .
    message i102 with rs_selfield-value .
    when '&IC1'. "for hotspot with VBELN, POSNR, MATNR, KUNNR.
    if rs_selfield-fieldname = 'MATNR'.
    set parameter id 'MAT' field rs_selfield-value.
    call transaction 'MM03' and skip first screen.
    return.
    message i103 with rs_selfield-value .
    endif.
    if rs_selfield-fieldname = 'VBELN'.
    set parameter id 'AUN' field rs_selfield-value.
    call transaction 'VA03' and skip first screen.
    return.
    message i104 with rs_selfield-value .
    endif.
    endcase.
    endform. " zf_user_command
    *& Form ZF_PF_STATUS_SET
    text
    --> p1 text
    <-- p2 text
    form zf_pf_status_set using rt_extab type slis_t_extab.
    set pf-status 'Z11_RM_ALV_SO'.
    endform. " ZF_PF_STATUS_SET
    *& Form zf_layout
    text
    --> p1 text
    <-- p2 text
    form zf_layout .
    wa_layout-zebra = 'X'.
    wa_layout-lights_fieldname = 'V_LIGHTS'.
    wa_layout-lights_tabname = 'I_SALES_FINAL'.
    " 1, 2 or 3 for red, yellow and green respectively.
    endform. " zf_layout
    *& Form zf_modify_final
    text
    --> p1 text
    <-- p2 text
    form zf_modify_final .
    CODE TO EXECUTE LIGHTS
    *start of loop
    loop at i_sales_final into wa_sales_final.
    *giving conditions and modifying as we want to change many rows
    if wa_sales_final-netwr <= 10000.
    wa_sales_final-v_lights = '1'.
    modify i_sales_final from wa_sales_final transporting v_lights.
    elseif wa_sales_final-netwr > 10000 and wa_sales_final-netwr <= 100000.
    wa_sales_final-v_lights = '2'. " Exception.
    modify i_sales_final from wa_sales_final transporting v_lights.
    else.
    wa_sales_final-v_lights = '3'. " Exception.
    modify i_sales_final from wa_sales_final transporting v_lights.
    endif.
    endloop.
    reward point s if helpful
    rohan malik

  • Display Traffic Lights in ALV TREE

    Hi,
    I have to display traffic light in ALV tree but i am not able to find out what parameter i should pass like in ALV grid where we can set is_layout (BCALV_GRID_04).
    Thanks in advance.
    Regards,
    Harsh

    Hi,
    Please take a look at my code below. Hope it suits your requirement.
    P.S. Please award points if it helps...
    *& Report ZMM_R_PO_TO_IPURCH_XI
    *& PROGRAM TYPE  : Report
    *& RICEF ID      :
    *& TITLE         : ZMM_R_PO_TO_IPURCH_XI
    *& SAP Module    : MM
    *& CREATION DATE : 02/06/2008
    *& AUTHOR        : Aris Hidalgo
    *& DESIGNER      : Aris Hidalgo
    *& DESCRIPTION   :
    *$**********************************************************************
    *$     CHANGE HISTORY
    *$----------------------------------------------------------------------
    *$   DATE        | T-Num      | Description                  | Reference
    **               |            |                              |
    *$**********************************************************************
    REPORT  zmm_r_po_to_ipurch_xi
            NO STANDARD PAGE HEADING
            MESSAGE-ID zmm.
    * Data Dictionary Table/s                      *
    TABLES: edidc.
    * SELECTION-SCREEN                             *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_credat FOR edidc-credat OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    PARAMETERS: rb_sum RADIOBUTTON GROUP grp1,
                rb_det RADIOBUTTON GROUP grp1.
    SELECTION-SCREEN END OF BLOCK b2.
    */ CLASS DEFINITION/S /*
    *       CLASS lcl_data_def DEFINITION
    CLASS lcl_data_def DEFINITION ABSTRACT.
      PUBLIC SECTION.
        TYPES: BEGIN OF t_edidc,
                docnum TYPE edidc-docnum,
                docrel TYPE edidc-docrel,
                status TYPE edidc-status,
                doctyp TYPE edidc-doctyp,
                direct TYPE edidc-direct,
                rcvpor TYPE edidc-rcvpor,
                rcvprt TYPE edidc-rcvprt,
                rcvprn TYPE edidc-rcvprn,
                rcvsad TYPE edidc-rcvsad,
                sndpor TYPE edidc-sndpor,
                sndprt TYPE edidc-sndprt,
                sndprn TYPE edidc-sndprn,
                sndsad TYPE edidc-sndsad,
                credat TYPE edidc-credat,
                cretim TYPE edidc-cretim,
                mestyp TYPE edidc-mestyp,
                idoctp TYPE edidc-idoctp,
               END OF t_edidc.
        TYPES: BEGIN OF t_output,
                exception TYPE char1,
                ebeln     TYPE ekko-ebeln,
                lifnr     TYPE lfa1-lifnr,
                name1     TYPE lfa1-name1,
                credat    TYPE edidc-credat,
                cretim    TYPE edidc-cretim,
               END OF t_output.
        TYPES: BEGIN OF t_ekko,
                ebeln TYPE ekko-ebeln,
                lifnr TYPE ekko-lifnr,
               END OF t_ekko.
        TYPES: BEGIN OF t_lfa1,
                lifnr TYPE lfa1-lifnr,
                name1 TYPE lfa1-name1,
               END OF t_lfa1.
        DATA: gt_edidc  TYPE STANDARD TABLE OF t_edidc,
              gt_output TYPE STANDARD TABLE OF t_output,
              wa_output LIKE LINE OF gt_output,
              gt_ekko   TYPE HASHED TABLE OF t_ekko
                        WITH UNIQUE KEY ebeln,
              gt_lfa1   TYPE HASHED TABLE OF t_lfa1
                        WITH UNIQUE KEY lifnr.
    ENDCLASS.                    "lcl_data_def DEFINITION
    CLASS lcl_alv_routines  DEFINITION DEFERRED.
    CLASS lcl_handle_events DEFINITION DEFERRED.
    *       CLASS lcl_get_data DEFINITION
    CLASS lcl_get_data DEFINITION INHERITING FROM lcl_data_def.
      PUBLIC SECTION.
        METHODS: get_idocs,
                 read_idocs,
                 process_data
                   IMPORTING
                     im_docnum TYPE edidc-docnum.
      PRIVATE SECTION.
        CONSTANTS: lc_mestyp     TYPE edidc-mestyp VALUE 'ZMARKETSITE_PURCHASE_ORDER',
                   lc_idoctp     TYPE edidc-idoctp VALUE 'ZMARKETSITE_PURCHASE_ORDER01',
                   lc_segnam     TYPE edid4-segnam VALUE 'ZMARKETSITE_ORDER_HEADER1'.
        CONSTANTS: lc_red        TYPE i VALUE 1,
                   lc_yellow     TYPE i VALUE 2,
                   lc_green      TYPE i VALUE 3.
        DATA: lv_stat_message    TYPE bdidocattr-message,
              o_lcl_alv_routines TYPE REF TO lcl_alv_routines.
        DATA: ls_idoc_control    TYPE edidc,
              lv_tot_data_recs   TYPE sy-dbcnt,                 "#EC NEEDED
              lv_tot_status_recs TYPE sy-dbcnt.                 "#EC NEEDED
        DATA: lt_edids TYPE STANDARD TABLE OF edids,
              lt_edidd TYPE STANDARD TABLE OF edidd.
    ENDCLASS.                    "lcl_get_data DEFINITION
    *       CLASS lcl_alv_routines DEFINITION
    CLASS lcl_alv_routines DEFINITION INHERITING FROM lcl_get_data.
      PUBLIC SECTION.
        DATA: lcl_table            TYPE REF TO cl_salv_table,
              lcl_container        TYPE REF TO cl_gui_custom_container,
              lcl_handle_events    TYPE REF TO lcl_handle_events,
              lcl_columns          TYPE REF TO cl_salv_columns_table,
              lcl_column           TYPE REF TO cl_salv_column_table,
              lcl_events2          TYPE REF TO cl_salv_events_table,
              lcl_display_settings TYPE REF TO cl_salv_display_settings,
              lcl_functions        TYPE REF TO cl_salv_functions_list,
              lcl_display          TYPE REF TO cl_salv_display_settings,
              lcl_aggregations     TYPE REF TO cl_salv_aggregations,
              lcl_sorts            TYPE REF TO cl_salv_sorts,
              lcl_content          TYPE REF TO cl_salv_form_element,
              lcl_header           TYPE REF TO cl_salv_form_header_info,
              ls_color             TYPE lvc_s_colo.
        DATA: lcl_grid            TYPE REF TO cl_salv_form_layout_grid,
              lcl_grid_1          TYPE REF TO cl_salv_form_layout_grid,
              lcl_grid_2          TYPE REF TO cl_salv_form_layout_grid,
              lcl_label           TYPE REF TO cl_salv_form_label,"#EC NEEDED
              lcl_text            TYPE REF TO cl_salv_form_text,
              gt_t247             TYPE STANDARD TABLE OF t247,
              wa_t247             LIKE LINE OF gt_t247,
              lv_text             TYPE string.
        METHODS: display_data
                   IMPORTING
                     im_output LIKE gt_output,
                 display_top_of_page.
      PRIVATE SECTION.
        DATA: lv_string TYPE string,
              lv_date1  TYPE c LENGTH 10,
              lv_time   TYPE c LENGTH 10,
              lv_title  TYPE string.
    ENDCLASS.                    "lcl_alv_routines DEFINITION
    *       CLASS lcl_handle_events DEFINITION
    CLASS lcl_handle_events DEFINITION.
      PUBLIC SECTION.
        METHODS:
          on_link_click FOR EVENT link_click OF cl_salv_events_table
            IMPORTING row column.
    ENDCLASS.                    "lcl_handle_events DEFINITION
    */ IMPLEMENTATION/S /*
    *       CLASS lcl_get_data IMPLEMENTATION
    CLASS lcl_get_data IMPLEMENTATION.
    * METHOD get_idocs
      METHOD get_idocs.
        CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
          EXPORTING
    *       PERCENTAGE       = 0
            text             = text-p01.
        SELECT docnum docrel status doctyp
               direct rcvpor rcvprt rcvprn
               rcvsad sndpor sndprt sndprn
               sndsad credat cretim mestyp
               idoctp
          FROM edidc
          INTO TABLE gt_edidc
         WHERE mestyp = lc_mestyp
           AND idoctp = lc_idoctp
           AND credat IN s_credat.
        IF gt_edidc[] IS NOT INITIAL.
    *     Get IDOC details
          CALL METHOD me->read_idocs.
        ENDIF.
      ENDMETHOD.                    "get_idocs
    * METHOD read_idocs
      METHOD read_idocs.
        CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
          EXPORTING
    *       PERCENTAGE       = 0
            text             = text-p02.
        FIELD-SYMBOLS: <fs_edidc>  LIKE LINE OF gt_edidc,
                       <fs_output> LIKE LINE OF gt_output,
                       <fs_ekko>   LIKE LINE OF gt_ekko,
                       <fs_lfa1>   LIKE LINE OF gt_lfa1.
        LOOP AT gt_edidc ASSIGNING <fs_edidc>.
          CLEAR ls_idoc_control.
          REFRESH: lt_edids, lt_edidd.
    *     Get status text of IDOC
          CALL FUNCTION 'IDOC_GET_MESSAGE_ATTRIBUTE'
            EXPORTING
              idoc_number  = <fs_edidc>-docnum
            IMPORTING
              idoc_message = lv_stat_message.
    *     Get IDOC details
          CALL FUNCTION 'IDOC_READ_COMPLETELY'
            EXPORTING
              document_number          = <fs_edidc>-docnum
            IMPORTING
              idoc_control             = ls_idoc_control
              number_of_data_records   = lv_tot_data_recs
              number_of_status_records = lv_tot_status_recs
            TABLES
              int_edids                = lt_edids
              int_edidd                = lt_edidd
            EXCEPTIONS
              document_not_exist       = 1
              document_number_invalid  = 2
              OTHERS                   = 3.
          IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          ENDIF.
    *     Pass data to output table
          CALL METHOD me->process_data
            EXPORTING
              im_docnum = <fs_edidc>-docnum.
        ENDLOOP.
        DELETE gt_output WHERE ebeln IS INITIAL.
        IF gt_output[] IS NOT INITIAL.
    *     Get vendor for fetched POs
          SELECT ebeln lifnr
            FROM ekko
            INTO TABLE gt_ekko
             FOR ALL ENTRIES IN gt_output
           WHERE ebeln = gt_output-ebeln.
          IF gt_ekko[] IS NOT INITIAL.
    *       Get name of vendors
            SELECT lifnr name1
              FROM lfa1
              INTO TABLE gt_lfa1
               FOR ALL ENTRIES IN gt_ekko
             WHERE lifnr = gt_ekko-lifnr.
          ENDIF.
    *     Pass vendor details to output table
          LOOP AT gt_output ASSIGNING <fs_output>.
            READ TABLE gt_ekko ASSIGNING <fs_ekko>
                               WITH TABLE KEY ebeln = <fs_output>-ebeln.
            IF sy-subrc = 0.
              READ TABLE gt_lfa1 ASSIGNING <fs_lfa1>
                                 WITH TABLE KEY lifnr = <fs_ekko>-lifnr.
              IF sy-subrc = 0.
                <fs_output>-lifnr = <fs_lfa1>-lifnr.
                <fs_output>-name1 = <fs_lfa1>-name1.
              ENDIF.
            ENDIF.
          ENDLOOP.
          CREATE OBJECT o_lcl_alv_routines.
          CALL METHOD o_lcl_alv_routines->display_data
            EXPORTING
              im_output = gt_output[].
        ENDIF.
      ENDMETHOD.                    "read_idocs
    * METHOD process_data
      METHOD process_data.
        FIELD-SYMBOLS: <fs_edidd> LIKE LINE OF lt_edidd.
        IF lv_stat_message CP 'ok' OR
           lv_stat_message CP 'positive'.
          wa_output-exception = lc_green.
        ELSEIF lv_stat_message CP 'error' OR
               lv_stat_message CP 'negative'.
          wa_output-exception = lc_red.
        ELSE.
          wa_output-exception = lc_yellow.
        ENDIF.
        READ TABLE lt_edidd ASSIGNING <fs_edidd>
                            WITH KEY docnum = im_docnum
                                     segnam = lc_segnam.
        IF sy-subrc = 0.
          wa_output-ebeln = <fs_edidd>-sdata+0(10).
        ENDIF.
        wa_output-credat = ls_idoc_control-credat.
        wa_output-cretim = ls_idoc_control-cretim.
        APPEND wa_output TO gt_output.
        CLEAR wa_output.
      ENDMETHOD.                    "process_data
    ENDCLASS.                    "lcl_get_data IMPLEMENTATION
    *       CLASS lcl_alv_routines IMPLEMENTATION
    CLASS lcl_alv_routines IMPLEMENTATION.
    * METHOD display_data
      METHOD display_data.
        CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
          EXPORTING
            percentage = 0
            text       = text-p03.
        gt_output[] = im_output[].
        TRY.
            cl_salv_table=>factory(
              EXPORTING
                list_display = ''
              IMPORTING
                r_salv_table = lcl_table
              CHANGING
                t_table      = gt_output ).
          CATCH cx_salv_msg.                                "#EC NO_HANDLER
        ENDTRY.
        lcl_functions = lcl_table->get_functions( ).
    *   Set all standard ALV functions
        lcl_functions->set_all( abap_true ).
        lcl_columns = lcl_table->get_columns( ).
        lcl_columns->set_optimize( '' ).
    *   Set display to striped pattern
        lcl_display = lcl_table->get_display_settings( ).
        lcl_display->set_striped_pattern( cl_salv_display_settings=>true ).
    */Sort columns
        TRY.
            lcl_sorts = lcl_table->get_sorts( ).
          CATCH cx_salv_not_found.                          "#EC NO_HANDLER
        ENDTRY.
        lcl_sorts->set_group_active( ).
        TRY.
            lcl_sorts->add_sort(
              columnname = 'EBELN'
              subtotal   = '' ).
          CATCH cx_salv_not_found cx_salv_existing cx_salv_data_error."#EC NO_HANDLER
        ENDTRY.
    */Set column names
        TRY.
            lcl_columns->set_exception_column( 'EXCEPTION' ).
          CATCH cx_salv_data_error.                         "#EC NO_HANDLER
        ENDTRY.
        TRY.
            lcl_column ?= lcl_columns->get_column( 'EXCEPTION' ).
            lcl_column->set_short_text( text-h01 ).
            lcl_column->set_medium_text( text-h01 ).
            lcl_column->set_long_text( text-h01 ).
            lcl_column->set_output_length( '6' ).
          CATCH cx_salv_not_found.                          "#EC NO_HANDLER
        ENDTRY.
        TRY.
            lcl_column ?= lcl_columns->get_column( 'EBELN' ).
            lcl_column->set_short_text( text-h02 ).
            lcl_column->set_medium_text( text-h02 ).
            lcl_column->set_long_text( text-h02 ).
            lcl_column->set_output_length( '9' ).
          CATCH cx_salv_not_found.                          "#EC NO_HANDLER
        ENDTRY.
        TRY.
            lcl_column ?= lcl_columns->get_column( 'LIFNR' ).
    *        lcl_column->set_short_text( text-h03 ).
            lcl_column->set_medium_text( text-h03 ).
            lcl_column->set_long_text( text-h03 ).
            lcl_column->set_output_length( '11' ).
          CATCH cx_salv_not_found.                          "#EC NO_HANDLER
        ENDTRY.
        TRY.
            lcl_column ?= lcl_columns->get_column( 'NAME1' ).
    *        lcl_column->set_short_text( text-h04 ).
    *        lcl_column->set_medium_text( text-h04 ).
            lcl_column->set_long_text( text-h04 ).
            lcl_column->set_output_length( '30' ).
          CATCH cx_salv_not_found.                          "#EC NO_HANDLER
        ENDTRY.
        TRY.
            lcl_column ?= lcl_columns->get_column( 'CREDAT' ).
    *        lcl_column->set_short_text( text-h05 ).
    *        lcl_column->set_medium_text( text-h05 ).
            lcl_column->set_long_text( text-h05 ).
            lcl_column->set_output_length( '13' ).
          CATCH cx_salv_not_found.                          "#EC NO_HANDLER
        ENDTRY.
        TRY.
            lcl_column ?= lcl_columns->get_column( 'CRETIM' ).
    *        lcl_column->set_short_text( text-h06 ).
    *        lcl_column->set_medium_text( text-h06 ).
            lcl_column->set_long_text( text-h06 ).
            lcl_column->set_output_length( '13' ).
          CATCH cx_salv_not_found.                          "#EC NO_HANDLER
        ENDTRY.
    */Set aggregations
    *    TRY.
    *        lcl_aggregations = lcl_table->get_aggregations( ).
    *      CATCH cx_salv_not_found.                          "#EC NO_HANDLER
    *    ENDTRY.
    *    TRY.
    *        lcl_aggregations->add_aggregation( '' ).
    *      CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
    *    ENDTRY.
    */Hide columns
    *    TRY.
    *        lcl_column ?= lcl_columns->get_column( 'DESCRIPT' ).
    *        lcl_column->set_visible( if_salv_c_bool_sap=>false ).
    *      CATCH cx_salv_not_found.                          "#EC NO_HANDLER
    *    ENDTRY.
    */Display top of page
        CALL METHOD me->display_top_of_page.
        lcl_table->set_top_of_list( lcl_content ).
    */Handle ALV events
        lcl_events2 = lcl_table->get_event( ).
        CREATE OBJECT lcl_handle_events.
        SET HANDLER lcl_handle_events->on_link_click FOR lcl_events2.
        lcl_display_settings = lcl_table->get_display_settings( ).
        lcl_table->display( ).
      ENDMETHOD.                    "display_data
    * METHOD display_top_of_page
      METHOD display_top_of_page.
        CREATE OBJECT lcl_grid.
        lv_title = text-t01.
        lcl_grid->create_header_information(
                    row     = 1
                    column  = 1
                    text    = lv_title
                    tooltip = lv_title ).
        lcl_grid->add_row( ).
        lcl_grid_1 = lcl_grid->create_grid(
                       row    = 3
                       column = 1 ).
        CLEAR lv_string.
        CONCATENATE: sy-datum+4(2) '/' sy-datum+6(2) '/' sy-datum+0(4)
               INTO lv_date1.
        CONCATENATE: text-t02 lv_date1
               INTO lv_string
          SEPARATED BY space.
        lcl_label = lcl_grid_1->create_label(
                      row     = 1
                      column  = 1
                      text    = lv_string
                      tooltip = lv_string ).
        CLEAR lv_string.
        CONCATENATE: sy-uzeit+0(2) ':' sy-uzeit+2(2) ':' sy-uzeit+4(2)
               INTO lv_time.
        CONCATENATE: text-t03 lv_time
               INTO lv_string
          SEPARATED BY space.
        lcl_label = lcl_grid_1->create_label(
                      row     = 2
                      column  = 1
                      text    = lv_string
                      tooltip = lv_string ).
        lcl_content = lcl_grid.
      ENDMETHOD.                    "display_top_of_page
    ENDCLASS.                    "lcl_alv_routines IMPLEMENTATION
    *       CLASS lcl_handle_events IMPLEMENTATION
    CLASS lcl_handle_events IMPLEMENTATION.
    * METHOD on_link_click
      METHOD on_link_click.
      ENDMETHOD.                    "on_link_click
    ENDCLASS.                    "lcl_handle_events IMPLEMENTATION
    * START-OF-SELECTION                           *
    START-OF-SELECTION.
      DATA: o_lcl_get_data TYPE REF TO lcl_get_data.
      CREATE OBJECT o_lcl_get_data.
      CALL METHOD o_lcl_get_data->get_idocs.

  • Multiple traffic lights in ALV

    Hi friends,
    is it possible to have more than one traffic lights colomn in ALV OO ?
    i displayed the first one, but i need to display 3 traffic lights in 3 different colomns in my ALV (wich has 10 columns)
    Thanks in advance,
    Soufiane

    Copy this and paste in your test program. execute it and see
    REPORT  ysam_test5 MESSAGE-ID zsummit.
    TYPE-POOLS: icon.
    DATA: marc TYPE marc.
    TYPES: BEGIN OF t_marc,
           matnr TYPE matnr,
           werks TYPE werks_d,
           mmsta TYPE mmsta,
           maabc TYPE maabc,
           action(4) TYPE c,
           action1(4) type c,
           action2(4) type c,
           END OF t_marc.
    DATA: it_marc TYPE TABLE OF t_marc,
          wa_marc TYPE t_marc.
    FIELD-SYMBOLS: .
    DATA: w_recipient     TYPE swc_object,
          w_recipient_obj TYPE swotobjid.
    *container macro
    swc_container      w_swc_container.
    *batch job information
    INCLUDE lbtchdef.
    DATA: w_job       TYPE tbtcjob.
    *constants
    CONSTANTS: c_on VALUE 'X',
               c_off VALUE space,
               c_int(11) VALUE ' 0123456789'.
    Objects for handling the events
    CLASS lcl_handle_events DEFINITION DEFERRED.
    DATA: w_events_grid TYPE REF TO lcl_handle_events.
          CLASS lcl_handle_events DEFINITION
    CLASS lcl_handle_events DEFINITION.
      PUBLIC SECTION.
        METHODS:
          on_link_click FOR EVENT link_click OF cl_salv_events_table
            IMPORTING row column.
    ENDCLASS.                    "lcl_handle_events DEFINITION
          CLASS lcl_handle_events IMPLEMENTATION
    CLASS lcl_handle_events IMPLEMENTATION.
      METHOD on_link_click.
        IF column = 'ACTION'.
          READ TABLE it_marc ASSIGNING refresh.
        ENDIF.
      ENDMETHOD.                    "on_single_click
    ENDCLASS.                    "lcl_handle_events IMPLEMENTATION
    SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME.
    SELECT-OPTIONS: s_matnr FOR marc-matnr,
                    s_werks FOR marc-werks.
    SELECTION-SCREEN BEGIN OF BLOCK back WITH FRAME TITLE text-ss2.
    PARAMETERS: p_fore RADIOBUTTON GROUP proc DEFAULT 'X', "foreground
                p_ball RADIOBUTTON GROUP proc,
                p_berr RADIOBUTTON GROUP proc.
    SELECTION-SCREEN END OF BLOCK back.
    SELECTION-SCREEN BEGIN OF BLOCK mail WITH FRAME TITLE text-ss3.
    PARAMETERS: p_print RADIOBUTTON GROUP mail DEFAULT 'X',
                p_email RADIOBUTTON GROUP mail.
    SELECTION-SCREEN END OF BLOCK mail.
    SELECTION-SCREEN END OF BLOCK main.
    START-OF-SELECTION.
      PERFORM select_data.
    END-OF-SELECTION.
      PERFORM salv_grid.
    *&      Form  salv_grid
          text
    FORM salv_grid .
      DATA:      lref TYPE REF TO cx_root .
      DATA:      lr_layout TYPE REF TO cl_salv_layout,
                 ls_key    TYPE salv_s_layout_key.
    Icon
      DATA: l_columns TYPE REF TO cl_salv_columns,
          l_column  TYPE REF TO cl_salv_column_table.
      DATA: l_icon TYPE REF TO cl_salv_column_list.
      TRY.
          cl_salv_table=>factory(
            IMPORTING
              r_salv_table   = gr_table
            CHANGING
              t_table        = it_marc ).
        CATCH cx_salv_msg INTO lref.
      ENDTRY.
    ***Sub Total
    PERFORM sub_total.
    ***Layout
      lr_layout = gr_table->get_layout( ).
      ls_key-report = sy-cprog.
      lr_layout->set_key( ls_key ).
      lr_layout->set_default( 'X' ).
      lr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
    ***toolbar
      gr_functions = gr_table->get_functions( ).
      gr_functions->set_all( 'X' ).
    icon
      l_columns = gr_table->get_columns( ).
      TRY.
          l_column ?= l_columns->get_column( 'ACTION' ).
          l_column->set_short_text( 'Execute' ).
        l_column->set_icon( IF_SALV_C_BOOL_SAP=>FALSE ).
        CATCH cx_salv_not_found.
      ENDTRY.
      TRY.
          l_column ?= l_columns->get_column( 'ACTION' ).
          l_column->set_icon( if_salv_c_bool_sap=>true ).
        CATCH cx_salv_not_found.
      ENDTRY.
      TRY.
          l_column ?= l_columns->get_column( 'ACTION' ).
          l_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
        CATCH cx_salv_not_found.                            "#EC NO_HANDLER
      ENDTRY.
    *... §6.5 register to the event LINK_CLICK
      DATA: lr_events TYPE REF TO cl_salv_events_table.
      lr_events = gr_table->get_event( ).
      CREATE OBJECT w_events_grid.
      SET HANDLER w_events_grid->on_link_click FOR lr_events.
    *final display
      gr_table->display( ).
    ENDFORM.                    " salv
    *&      Form  sub_total
    FORM sub_total .
      DATA: lr_aggregations TYPE REF TO cl_salv_aggregations.
      lr_aggregations = gr_table->get_aggregations( ).
      lr_aggregations->clear( ).
      TRY.
          lr_aggregations->add_aggregation( columnname = 'Z_BALANCE_REM' ).
        CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing.
      ENDTRY.
      TRY.
          lr_aggregations->add_aggregation( columnname = 'Z_PAY_AMT' ).
        CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing.
      ENDTRY.
    ENDFORM.                    " sub_total
    *&      Form  select_data
    FORM select_data .
      SELECT matnr werks mmsta maabc
             INTO CORRESPONDING FIELDS OF TABLE it_marc
             FROM marc
             WHERE matnr IN s_matnr
               AND werks IN s_werks.
      IF sy-subrc = 0.
        LOOP AT it_marc ASSIGNING -action = icon_execute_object.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " select_data
    enter material number and  press execute icon - just come back from mm02 and it will display three lights.

  • Traffic Lights in ALV

    Hi experts,
    I am using below code to generate the traffic lights but in column header i am getting one button i want to replace that as Traffic lights. how to do this can any body tell me
    "Includes
    INCLUDE <icon>.
    INCLUDE <symbol>.
    *& Declaration part
    "Types
    TYPES:
         BEGIN OF t_lights,
           matnr  TYPE mard-matnr,
           werks  TYPE mard-werks,
           lgort  TYPE mard-lgort,
           lights TYPE char4,       "Variable is needs to be declared with length 4 char
          END OF t_lights.
    "Work Areas
    DATA:
        w_lights TYPE t_lights.
    "Internal tables
    DATA:
        i_lights TYPE STANDARD TABLE OF t_lights.
    ALV Declarations
    Types Pools
    TYPE-POOLS:
       slis.
    Types
    TYPES:
       t_fieldcat         TYPE slis_fieldcat_alv,
       t_events           TYPE slis_alv_event,
       t_layout           TYPE slis_layout_alv.
    Workareas
    DATA:
       w_fieldcat         TYPE t_fieldcat,
       w_events           TYPE t_events,
       w_layout           TYPE t_layout.
    Internal Tables
    DATA:
       i_fieldcat         TYPE STANDARD TABLE OF t_fieldcat,
       i_events           TYPE STANDARD TABLE OF t_events.
    *&    start of selection
    START-OF-SELECTION.
      PERFORM get_data.
    *&    end-of-selection.
    END-OF-SELECTION.
      PERFORM build_fieldcatlog.
      PERFORM build_layout.
      PERFORM list_display.
    *&      Form  get_data
    FORM get_data .
      SELECT matnr
             werks
             lgort
        FROM mard
        INTO CORRESPONDING FIELDS OF TABLE i_lights
        UP TO 10 ROWS.
      IF i_lights[] IS INITIAL.
        "Dummy data
        DO 10 TIMES.
          w_lights-matnr = sy-index.
          w_lights-werks = sy-index + 1.
          w_lights-lgort = sy-index + 2.
          APPEND w_lights TO i_lights.
          CLEAR  w_lights.
        ENDDO.
      ENDIF.
      "Just pass 1=red or 2=yellow or 3=green to lights fields
      LOOP AT i_lights INTO w_lights .
        IF sy-tabix BETWEEN 1 AND 3.
          w_lights-lights = '1'.
        ELSEIF sy-tabix BETWEEN 4 AND 7.
          w_lights-lights = '2'.
        ELSEIF sy-tabix BETWEEN 8 AND 10.
          w_lights-lights = '3'.
        ENDIF.
        MODIFY i_lights FROM w_lights INDEX sy-tabix TRANSPORTING lights.
      ENDLOOP.
    ENDFORM.                    " get_data
    *&      Form  build_fieldcatlog
    FORM build_fieldcatlog .
      CLEAR:w_fieldcat,i_fieldcat[].
      w_fieldcat-fieldname     = 'MATNR'.
      w_fieldcat-seltext_m     = 'MATNR'.
      APPEND w_fieldcat TO i_fieldcat.
      CLEAR w_fieldcat.
      w_fieldcat-fieldname     = 'WERKS'.
      w_fieldcat-seltext_m     = 'WERKS'.
      APPEND w_fieldcat TO i_fieldcat.
      CLEAR w_fieldcat.
      w_fieldcat-fieldname     = 'LGORT'.
      w_fieldcat-seltext_m     = 'LGORT'.
      APPEND w_fieldcat TO i_fieldcat.
      CLEAR w_fieldcat.
    ENDFORM.                    " build_fieldcatlog
    *&      Form  build_layout
    FORM build_layout .
      w_layout-colwidth_optimize = 'X'.
      w_layout-zebra             = 'X'.
      w_layout-lights_fieldname  = 'LIGHTS'.
      w_layout-lights_tabname    = 'I_LIGHTS'.
    ENDFORM.                    " build_layout
    *&      Form  list_display
    FORM list_display .
      DATA:
            l_program TYPE sy-repid.
      l_program = sy-repid.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program = l_program
          is_layout          = w_layout
          it_fieldcat        = i_fieldcat
        TABLES
          t_outtab           = i_lights
        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.                    " list_display
    Thanks,
    Tharangini

    Hi!
    Try this code.I have removed the previous code where you specify Lights in layout.I specified the lights column in fieldcatalog as Icon and passed the icon value instead of the no.s which you specified earlier.
    "Includes
    INCLUDE <icon>.
    INCLUDE <symbol>.
    *& Declaration part
    "Types
    TYPES:
    BEGIN OF t_lights,
    matnr TYPE mard-matnr,
    werks TYPE mard-werks,
    lgort TYPE mard-lgort,
    lights(4),
    END OF t_lights.
    "Work Areas
    DATA:
    w_lights TYPE t_lights.
    "Internal tables
    DATA:
    i_lights TYPE STANDARD TABLE OF t_lights.
    TYPE-POOLS:
    slis.
    TYPES:
    t_fieldcat TYPE slis_fieldcat_alv,
    t_events TYPE slis_alv_event,
    t_layout TYPE slis_layout_alv.
    DATA:
    w_fieldcat TYPE t_fieldcat,
    w_events TYPE t_events,
    w_layout TYPE t_layout.
    DATA:
    i_fieldcat TYPE STANDARD TABLE OF t_fieldcat,
    i_events TYPE STANDARD TABLE OF t_events.
    *& start of selection
    START-OF-SELECTION.
      PERFORM get_data.
    *& end-of-selection.
    END-OF-SELECTION.
      PERFORM build_fieldcatlog.
      PERFORM build_layout.
      PERFORM list_display.
    *& Form get_data
    FORM get_data .
      SELECT matnr
      werks
      lgort
      FROM mard
      INTO CORRESPONDING FIELDS OF TABLE i_lights
      UP TO 10 ROWS.
      IF i_lights[] IS INITIAL.
        "Dummy data
        DO 10 TIMES.
          w_lights-matnr = sy-index.
          w_lights-werks = sy-index + 1.
          w_lights-lgort = sy-index + 2.
          APPEND w_lights TO i_lights.
          CLEAR w_lights.
        ENDDO.
      ENDIF.
      "Just pass @0A@=red or @09@=yellow or @08@=green to lights fields
      LOOP AT i_lights INTO w_lights .
        IF sy-tabix BETWEEN 1 AND 3.
          w_lights-lights = '@0A@'.
        ELSEIF sy-tabix BETWEEN 4 AND 7.
          w_lights-lights = '@09@'.
        ELSEIF sy-tabix BETWEEN 8 AND 10.
          w_lights-lights = '@08@'.
        ENDIF.
        MODIFY i_lights FROM w_lights INDEX sy-tabix TRANSPORTING lights.
      ENDLOOP.
    ENDFORM. " get_data
    *& Form build_fieldcatlog
    FORM build_fieldcatlog .
      CLEAR:w_fieldcat,i_fieldcat[].
      w_fieldcat-fieldname = 'MATNR'.
      w_fieldcat-seltext_m = 'MATNR'.
      APPEND w_fieldcat TO i_fieldcat.
      CLEAR w_fieldcat.
      w_fieldcat-fieldname = 'WERKS'.
      w_fieldcat-seltext_m = 'WERKS'.
      APPEND w_fieldcat TO i_fieldcat.
      CLEAR w_fieldcat.
      w_fieldcat-fieldname = 'LGORT'.
      w_fieldcat-seltext_m = 'LGORT'.
      APPEND w_fieldcat TO i_fieldcat.
      CLEAR w_fieldcat.
      w_fieldcat-fieldname = 'LIGHTS'.
      w_fieldcat-icon = 'X'.
      w_fieldcat-outputlen = 14.
      w_fieldcat-seltext_l = 'Traffic Lights'.
      w_fieldcat-seltext_s = 'Traffic Lights'.
      w_fieldcat-seltext_m = 'Traffic Lights'.
      APPEND w_fieldcat TO i_fieldcat.
      CLEAR w_fieldcat.
    ENDFORM. " build_fieldcatlog
    *& Form build_layout
    FORM build_layout .
      w_layout-colwidth_optimize = 'X'.
      w_layout-zebra = 'X'.
    ENDFORM. " build_layout
    *& Form list_display
    FORM list_display .
      DATA:
      l_program TYPE sy-repid.
      l_program = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = l_program
          is_layout          = w_layout
          it_fieldcat        = i_fieldcat
        TABLES
          t_outtab           = i_lights
        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. " list_display

  • How to change the Traffic light positioning in ALV?

    Hai All,
    I am displaying a traffic light field in my ALV Grid. Now i want to display another field in the first position and move the traffic light to second or any other position. COL_POS seems to be not working, is there any chance of doing this?
    Best regards,
    rama

    >
    newtoAbap wrote:
    > Hai All,
    >
    > I am displaying a traffic light field in my ALV Grid. Now i want to display another field in the first position and move the traffic light to second or any other position. COL_POS seems to be not working, is there any chance of doing this?
    >
    > Best regards,
    > rama
    If you are using EXCP_FNAME in the ALV layout to display your traffic lights, it may not be possible to move your light field to any other position..
    One possiblity is to define your own field (as icon) in the internal table and assign the Traffic light icon to that field... By this approach, you can position that field in any place in your input structure while generating field catalog or defining your structure
    Here is an example with SALV,
    http://wiki.sdn.sap.com/wiki/display/Snippets/displayingiconsinalvusingclasscl_salv_table
    Example with icons in REUSE FM (can be used in ALV OO) and there should be umpteen examples in SDN also
    http://wiki.sdn.sap.com/wiki/display/Snippets/TrafficlightsinALVdisplay

Maybe you are looking for