Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

stoplight control example

Former Member
0 Kudos

Hi all,

Can someone provide me with a link to an example for implementing a stoplight control in a table control?

regards,

Mat

3 REPLIES 3

Former Member
0 Kudos

hi

chk this link

<b>

<b>

former_member927251
Active Contributor
0 Kudos

Hi Mathew,

Have a look at the following code sample where we display traffic light signals.


TYPES: BEGIN OF st_sflight. 
        INCLUDE STRUCTURE zsflight. 
TYPES:  traffic_light TYPE c. 
´TYPES: END OF st_sflight. 
TYPES: tt_sflight TYPE STANDARD TABLE OF st_sflight. 
DATA: gi_sflight TYPE tt_sflight. 


*   Set the exception field of the table 
    LOOP AT gi_sflight INTO g_wa_sflight. 
      IF g_wa_sflight-paymentsum < 100000. 
        g_wa_sflight-traffic_light = '1'. 
      ELSEIF g_wa_sflight-paymentsum => 100000 AND 
             g_wa_sflight-paymentsum < 1000000. 
        g_wa_sflight-traffic_light = '2'. 
      ELSE. 
        g_wa_sflight-traffic_light = '3'. 
      ENDIF. 
      MODIFY gi_sflight FROM g_wa_sflight. 
    ENDLOOP. 
*   Name of the exception field (Traffic light field) 
    gs_layout-excp_fname = 'TRAFFIC_LIGHT'. 
*   Grid setup for first display 
    CALL METHOD go_grid->set_table_for_first_display 
      EXPORTING i_structure_name = 'SFLIGHT' 
                              is_layout               = gs_layout 
      CHANGING  it_outtab                 = gi_sflight. 


Reward points if it helps.

Regards,

Amit Mishra

Message was edited by: Amit Mishra

rahulkavuri
Active Contributor
0 Kudos

hi this is the code for traffic lights example... Just copy and run the code...please award points if found helpful


*&---------------------------------------------------------------------*
*& Report  Z_50657_ALV_EX2                                             *
*&                                                                     *
*&---------------------------------------------------------------------*
*& Program Name: Test Program for ALV                                  *
*  Developer Name: ADCDEV (Rahul Kavuri )                              *
*  Description: ALV Report to Display Vendor Details                   *
*& Date:7th April 2006                                                 *
*&---------------------------------------------------------------------*

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