Skip to Content
author's profile photo Former Member
Former Member

problem with ALV reports

Hi SDN exports,

1) how to display color for perticular cell in ALV reports?

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

8 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Feb 27, 2007 at 05:53 AM

    hi,

    check the below links n info

    http://www.sapfans.com/forums/viewtopic.php?t=52107

    http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_color.htm

    Coming to Colors in ALV's. Following links would help you.

    color-cell

    cell-colors-in-alv-report

    Cell Colors in ALV report

    Colors in ALV

    Colors in ALV

    color of a value in a cell

    Color Font in ALV

    1. Not only the full row color,

    we can also manipulate the color in each cell.

    2.

    IMPORTANT THINGS

    a. Extra field in internal table

    clr TYPE slis_t_specialcol_alv,

    (this field will contain the colour codes)

    b. assign fieldname to alv layout

    alvly-coltab_fieldname = 'CLR'

    c. work area for colour

    DATA : clrwa TYPE slis_specialcol_alv.

    d. Populating the color

    Once again

    Loop at ITAB.

    *********logic

    if itab-field < 0 "---negative

    clrwa-fieldname = 'FIELDNAME'. "<--- FIELDNAME FOR COLOR

    clrwa-color-col = 6. <------- COLOUR 0-9

    APPEND clrwa TO itab-clr.

    MODIFY ITAB.

    endif.

    ENDLOOP.

    *----


    5. just copy paste in new program

    6.

    REPORT abc .

    *----


    NECESSARY / MUST

    TYPE-POOLS : slis.

    DATA : alvfc TYPE slis_t_fieldcat_alv.

    DATA : alvly TYPE slis_layout_alv.

    *----


    ITAB DECLARATION

    DATA : prg TYPE sy-repid.

    DATA : BEGIN OF itab OCCURS 0.

    INCLUDE STRUCTURE t001.

    DATA : clname(3) TYPE c,

    clr TYPE slis_t_specialcol_alv,

    END OF itab.

    DATA : clrwa TYPE slis_specialcol_alv.

    PARAMETERS : a TYPE c.

    DATA : flname TYPE slis_fieldname.

    *----


    SELECT

    START-OF-SELECTION.

    SELECT * FROM t001

    INTO CORRESPONDING FIELDS OF TABLE itab..

    LOOP AT itab..

    IF SY-TABIX <= 5.

    itab-clname = 'C50'.

    ELSE.

    itab-clname = 'C30'.

    ENDIF.

    MODIFY itab.

    ENDLOOP.

    LOOP AT ITAB.

    check itab-bukrs = '1000'

    .

    clrwa-fieldname = 'BUTXT'.

    clrwa-color-col = 6.

    APPEND clrwa TO itab-clr.

    MODIFY ITAB.

    clrwa-fieldname = 'LAND1'.

    clrwa-color-col = 4.

    APPEND clrwa TO itab-clr.

    MODIFY ITAB.

    ENDLOOP.

    prg = sy-repid.

    flname = 'CLNAME'.

    • alvly-info_fieldname = 'CLNAME'.

    alvly-coltab_fieldname = 'CLR'.

    LOOP AT ITAB.

    if sy-tabix = 3.

    clrwa-fieldname = 'BUTXT'.

    clrwa-color-col = 6.

    APPEND clrwa TO itab-clr.

    MODIFY ITAB.

    clrwa-fieldname = 'LAND1'.

    clrwa-color-col = 1.

    APPEND clrwa TO itab-clr.

    MODIFY ITAB.

    endif.

    ENDLOOP

    .

    *

    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

    EXPORTING

    i_program_name = prg

    i_internal_tabname = 'ITAB'

    i_inclname = prg

    CHANGING

    ct_fieldcat = alvfc

    EXCEPTIONS

    inconsistent_interface = 1

    program_error = 2

    OTHERS = 3.

    *----


    minimum

    *CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

    • EXPORTING

    • it_fieldcat = alvfc

    • TABLES

    • t_outtab = itab

    • EXCEPTIONS

    • program_error = 1

    • OTHERS = 2

    *.

    *----


    extra

    sy-uname = 'XYZAB'.

    prg = sy-repid.

    *----


    Excluding

    DATA : excl TYPE slis_t_extab.

    DATA : exclwa TYPE slis_extab.

    exclwa = '&OUP'.

    APPEND exclwa TO excl.

    exclwa = '&ODN'.

    APPEND exclwa TO excl.

    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

    EXPORTING

    it_fieldcat = alvfc

    i_callback_program = sy-repid

    is_layout = alvly

    i_callback_user_command = 'ITAB_USER_COMMAND'

    it_excluding =

    excl

    i_save = 'A'

    TABLES

    t_outtab = itab

    EXCEPTIONS

    program_error = 1

    OTHERS = 2.

    &----


    *& Form itab_user_command

    &----


    • text

    ----


    • -->WHATCOMM text

    • -->WHATROW text

    ----


    FORM itab_user_command USING whatcomm TYPE sy-ucomm whatrow TYPE

    slis_selfield.

    BREAK-POINT.

    ENDFORM. "itab_user_command

    If you find it useful mark the points

    ~~Guduri

    Add a comment
    10|10000 characters needed characters exceeded

    • Former Member

      hi patient,

      try, to do as follows...

      • emphasize (highlight column in color)

      Value range: SPACE, 'X' or 'Cxyz' (x:'1'-'9'; y,z: '0'=off '1'=on)

      'X' = The column is highlighted in the default color for color highlighting.

      'Cxyz' = The column is highlighted in the coded color:

      - C: Color (coding must start with C)

      - x: Color number

      - y: Intensified

      - z: Inverse

      just define as follows for ur field in fieldcatlog

      X_FIELDCAT-COL_POS = 5.

      X_FIELDCAT-FIELDNAME = 'EBELN'.

      X_FIELDCAT-TABNAME = 'I_TAB'.

      X_FIELDCAT-SELTEXT_M = 'Purchase Order'.

      • X_FIELDCAT-OUTPUTLEN = 14.

      X_FIELDCAT-EMPHASIZE = 'C511'. * The field will be colored differently (Cxyz)

      X_FIELDCAT-NO_OUT = 'X'. * Initially the field will be hidden

      APPEND X_FIELDCAT TO I_FIELDCAT.

      CLEAR X_FIELDCAT.

      in this code fieldcatlog field is 'X_FIELDCAT-EMPHASIZE = 'C511'.'

      where u have to fill ur fieldcatlog with ur field ..

      then u can get the color to ur specified field in the ouptut..

      regards

      seshu.m.

  • author's profile photo Former Member
    Former Member
    Posted on Feb 27, 2007 at 05:53 AM

    Hi,

    see below code

    REPORT  z_alv_so  MESSAGE-ID znew .
    
    ************************************************************************
    *TABLE DECLARATION*
    ************************************************************************
    TABLES: vbak ,             "Sales Document: Header Data
            vbap ,             "Sales Document: Item Data
            makt ,             "Material Descriptions
            lips .             "SD document: Delivery: Item data
    ************************************************************************
    *DECLARATION OF TYPE-POOL*
    *THIS TYPE-POOL CONTAINS THE EVENTS,
    ************************************************************************
    TYPE-POOLS : slis.
    ************************************************************************
    *DECLARATION OF EVENTS*
    ************************************************************************
    DATA: i_event TYPE slis_t_event.
    DATA: t_event TYPE slis_alv_event.
    ************************************************************************
    *DECLARATION OF LIST HEADER*
    ************************************************************************
    DATA: i_listheader TYPE slis_t_listheader.
    ************************************************************************
    *DECLARATION OF FIELD CATALOG FOR SCREEN 1*
    ************************************************************************
    DATA: i_fldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
    ************************************************************************
    *DECLARATION OF FIELD CATALOG FOR SCREEN 2*
    ************************************************************************
    DATA: i_fldcat2 TYPE slis_t_fieldcat_alv WITH HEADER LINE.
    ************************************************************************
    *DECLARATION OF FIELD LAYOUT*
    ************************************************************************
    DATA: i_layout TYPE slis_layout_alv.
    ************************************************************************
    *SORTING OF OUTPUT*
    ************************************************************************
    DATA: i_sort TYPE slis_t_sortinfo_alv.
    ************************************************************************
    *DATA DECLARATION
    ************************************************************************
    DATA: v_auart TYPE tvak-auart,
          v_vkorg TYPE tvko-vkorg,
          v_kunnr TYPE kna1-kunnr,
          v_matnr TYPE mara-matnr ,
          v_spart TYPE tvta-spart .
    
    TYPES: BEGIN OF it_so ,
    
           vbeln TYPE vbeln_va ,          "SALES ORDER NO.
           auart TYPE auart ,             "SALES DOC. TYPE
           vkorg TYPE vkorg ,             "SALES ORG.
           spart TYPE spart ,             "DIVISION
           kunnr TYPE kunag ,             "SOLD TO PARTY
           posnr TYPE posnr_va ,          "SALES DOC. ITEM
           matnr TYPE matnr ,             "MATERIAL NO
           maktx TYPE maktx ,             "DESCRIPTION
           kwmeng TYPE kwmeng ,           "QUANTITY
           vrkme TYPE vrkme ,             "SALES UNIT
           line_color(4) TYPE c ,
    
           END OF it_so .
    
    TYPES: BEGIN OF it_del ,
    
           vbeln TYPE vbeln_vl ,         "SALES ORDER NO.
           posnr TYPE posnr_vl ,         "SALES DOC. ITEM
           matnr TYPE matnr ,            "MATERIAL NO
           werks TYPE werks_d ,          "PLANT
           lgort TYPE lgort_d ,          "STORAGE LOCATION
           charg TYPE charg_d ,          "BATCH NO.
           lfimg TYPE lfimg ,            "ACTUAL DELIVERY QTY.
           vrkme TYPE vrkme ,            "SALES UNIT
    
           END OF it_del .
    
    TYPES: BEGIN OF type_vbfa ,
    
          vbelv TYPE vbeln_von , "Preceding sales and distribution document
          posnv TYPE posnr_von , "Preceding item of an SD document
          vbeln TYPE vbeln_nach, "Subsequent sales and distribution document
          posnn TYPE posnr_nach, "Document category of subsequent document
          vbtyp_n TYPE vbtyp_n ,
    
          END OF type_vbfa .
    
    DATA: it_so1 TYPE STANDARD TABLE OF it_so ,
          it_del1 TYPE STANDARD TABLE OF it_del ,
          it_vbfa TYPE STANDARD TABLE OF type_vbfa,
          it_del_ful TYPE STANDARD TABLE OF it_del.
    
    DATA: wa_so TYPE it_so ,
          wa_del TYPE it_del ,
          wa_vbfa TYPE type_vbfa,
          wa_it_del_ful TYPE it_del.
    
    DATA:  i_title_vbfa TYPE lvc_title VALUE 'SALES ORDER LIST DISPLAYED'.
    DATA:  i_title_vbpa TYPE lvc_title VALUE
    'DELIVERY DETAILS DISPLAYED AGAINST GIVEN SALES ORDER'.
    
    
    ************************************************************************
    *SELECTION SCREEN                                                      *
    ************************************************************************
    
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-004 .
    SELECT-OPTIONS: s_vbeln FOR vbak-vbeln ,
                    s_auart FOR v_auart ,
                    s_vkorg FOR v_vkorg ,
                    s_spart FOR v_spart ,
                    s_kunnr FOR v_kunnr ,
                    s_matnr FOR v_matnr .
    SELECTION-SCREEN END OF BLOCK blk1 .
    
    ************************************************************************
    *AT SELECTION SCREEN                                                   *
    ************************************************************************
    AT SELECTION-SCREEN.
    
      SELECT SINGLE vbeln
                     FROM vbak INTO vbak-vbeln
                     WHERE vbeln IN s_vbeln.
    
      IF sy-subrc <> 0.
        MESSAGE e202.
      ENDIF.
    ************************************************************************
    *START OF SELECTION                                                    *
    ************************************************************************
    START-OF-SELECTION .
    
      PERFORM data_select.
      PERFORM t_sort USING i_sort .
      PERFORM event_cat USING i_event .
      PERFORM fld_cat USING i_fldcat[] .
      PERFORM t_layout USING i_layout .
      PERFORM fld_cat2 USING i_fldcat2[] .
      PERFORM call_alv.
    ************************************************************************
    * DATA SELECT                                                          *
    ************************************************************************
    
    *&---------------------------------------------------------------------*
    *&      Form  DATA_SELECT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM data_select .
    
      REFRESH: it_vbfa, it_so1, it_del_ful ,it_del1 .
      BREAK-POINT.
      SELECT
            a~vbeln
            a~auart
            a~vkorg
            a~spart
            a~kunnr
            b~posnr
            b~matnr
            c~maktx
            b~kwmeng
            b~vrkme
            INTO TABLE it_so1 FROM vbak AS a
                  JOIN vbap AS b ON b~vbeln = a~vbeln
                  JOIN makt AS c ON c~matnr = b~matnr
                  AND c~spras = sy-langu
                  WHERE a~vbeln IN s_vbeln .
    
    <b>************************************************************************
    * COLURING DISPLAY                                                     *
    ************************************************************************
    
      DATA: ld_color(1) TYPE  c .
      LOOP AT it_so1 INTO wa_so.
    * Populate color variable with colour properties
    * Char 1 = C (This is a color property)
    * Char 2 = 3 (Color codes: 1 - 7)
    * Char 3 = Intensified on/off ( 1 or 0 )
    * Char 4 = Inverse display on/off ( 1 or 0 )
    *           i.e. wa_ekko-line_color = 'C410'
        ld_color = ld_color + 1.
    
    * Only 7 colours so need to reset color value
        IF ld_color = 8.
          ld_color = 1.
        ENDIF.
        CONCATENATE 'C' ld_color '10' INTO wa_so-line_color.
    *  wa_ekko-line_color = 'C410'.
        MODIFY it_so1 FROM wa_so.
      ENDLOOP .</b>
      IF sy-subrc = 0.
    
        SELECT vbelv
               posnv
               vbeln
               posnn
               vbtyp_n
               INTO TABLE it_vbfa
               FROM vbfa
               FOR ALL ENTRIES IN it_so1
               WHERE vbelv = it_so1-vbeln
               AND   posnn = it_so1-posnr
               AND vbtyp_n ='J' .
    
        IF sy-subrc = 0.
    
          SELECT vbeln
                 posnr
                 matnr
                 werks
                 lgort
                 charg
                 lfimg
                 vrkme
                 FROM lips INTO TABLE it_del_ful
                 FOR ALL ENTRIES IN it_vbfa
                 WHERE vbeln = it_vbfa-vbeln
                 AND   posnr = it_vbfa-posnn.
    
        ENDIF.
    
      ENDIF.
    
    ENDFORM.                    " DATA_SELECT
    
    ***********************************************************************
    **************** EVENT CATALOG ****************************************
    ***********************************************************************
    
    *&---------------------------------------------------------------------*
    *&      Form  EVENT_CAT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_I_EVENT  text
    *----------------------------------------------------------------------*
    
    FORM event_cat  USING    p_i_event TYPE slis_t_event .
    
      REFRESH p_i_event .
    
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    * EXPORTING
    *   I_LIST_TYPE           = 0
       IMPORTING
          et_events             = p_i_event
    * 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.
    
      READ TABLE p_i_event WITH KEY name = slis_ev_top_of_page INTO t_event.
    
      IF sy-subrc = 0.
    
        MOVE 'TOP_OF_PAGE' TO t_event-form.
        MODIFY p_i_event FROM t_event INDEX sy-tabix TRANSPORTING form.
    
      ENDIF.
    
      CLEAR t_event .
    
    ENDFORM.                    " EVENT_CAT
    
    
    **********************************************************************
    **********FORM FOR EVENT TOP_OF_PAGE**********************************
    **********************************************************************
    
    FORM top_of_page .
    
      REFRESH i_listheader.
      DATA: t_header TYPE slis_listheader.
      DATA: v_text(50).
    
      WRITE sy-datum TO v_text.
      CLEAR t_header.
      t_header-typ = 'S'.
      t_header-key = 'Date'.
      t_header-info = v_text.
      APPEND t_header TO i_listheader.
    
      CLEAR t_header.
      CLEAR v_text.
    
    *  WRITE:  'SALES ORDER REPORT  ' TO v_text .
    
    *  t_header-typ = 'S'.
    *  t_header-key = 'TITLE'.
    *  t_header-info = v_text.
    *  APPEND t_header TO i_listheader.
    
    
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = i_listheader
          I_LOGO             = 'ENJOYSAP_LOGO' .
    *   I_END_OF_LIST_GRID       =
    
    ENDFORM.                    "TOP_OF_PAGE
    
    ************************************************************************
    ********  FIRST ALV GRID DISPLAY ***************************************
    ************************************************************************
    
    *&---------------------------------------------------------------------*
    *&      Form  CALL_ALV
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    
    FORM call_alv .
    
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    
       EXPORTING
         i_callback_program                = sy-repid
    *    I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
         i_callback_user_command           = 'USER_COMMAND1'
         i_callback_top_of_page            = 'TOP_OF_PAGE'
    *     I_BACKGROUND_ID                   = 'ALV_BACKGROUND'
         i_grid_title                      = i_title_vbfa
         is_layout                         = i_layout
         it_fieldcat                       = i_fldcat[]
         it_sort                           = i_sort
         it_events                         = i_event
        TABLES
         t_outtab                          = it_so1
                .
    *  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_ALV
    ***********************************************************************
    ************** FIRST FIELDCATALOG *************************************
    ***********************************************************************
    *&---------------------------------------------------------------------*
    *&      Form  FLD_CAT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_I_FLDCAT[]  text
    *----------------------------------------------------------------------*
    
    FORM fld_cat  USING    p_i_fldcat TYPE slis_t_fieldcat_alv.
    
      CLEAR i_fldcat.
      i_fldcat-fieldname   = 'VBELN'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'."TABLE NAME
      i_fldcat-seltext_m   = 'SALES ORDER NO.'.
      i_fldcat-col_pos     = 1.        " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-just(1)     = 'C'.
    
      APPEND i_fldcat.
    
      CLEAR i_fldcat.
      i_fldcat-fieldname   = 'AUART'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'."TABLE NAME
      i_fldcat-seltext_m   = 'SALES DOC. TYPE'.
      i_fldcat-col_pos     = 2.        " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 15.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-just(1)     = 'C'.
    
      APPEND i_fldcat.
    
      CLEAR i_fldcat.
      i_fldcat-fieldname   = 'VKORG'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'.
      i_fldcat-seltext_m   = 'SALES ORG.'.
      i_fldcat-col_pos     = 3.        " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 12.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-just(1)     = 'C'.
      APPEND i_fldcat.
    
      CLEAR i_fldcat.
      i_fldcat-fieldname   = 'SPART'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'.
      i_fldcat-seltext_m   = 'DIVISION'.
      i_fldcat-col_pos     = 4.        " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 10.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-just(1)     = 'C'.
      APPEND i_fldcat.
    
      CLEAR i_fldcat.
      i_fldcat-fieldname   = 'KUNNR'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'.
      i_fldcat-seltext_m   = 'SOLD TO PARTY'.
      i_fldcat-col_pos     = 5.        " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 15.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-just(1)     = 'C'.
      APPEND i_fldcat.
    
      CLEAR i_fldcat.
      i_fldcat-fieldname   = 'POSNR'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'.
      i_fldcat-seltext_m   = 'SALES DOC. ITEM'.
      i_fldcat-col_pos     = 6.        " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 17.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-just(1)     = 'C'.
      APPEND i_fldcat.
    
      CLEAR i_fldcat.
    
      i_fldcat-fieldname   = 'MATNR'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'.
      i_fldcat-seltext_m   = 'MATERIAL NO.'.
      i_fldcat-col_pos     = 7.        " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-just(1)     = 'C'.
      APPEND i_fldcat.
    
      CLEAR i_fldcat.
      i_fldcat-fieldname   = 'MAKTX'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'.
      i_fldcat-seltext_m   = 'DESCRIPTION'.
      i_fldcat-col_pos     = 8.        " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-just(1)     = 'C'.
      APPEND i_fldcat.
    
      CLEAR i_fldcat.
      i_fldcat-fieldname   = 'KWMENG'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'.
      i_fldcat-seltext_m   = 'QUANTITY'.
      i_fldcat-col_pos     = 9.        " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 15.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-do_sum    = 'X'.        " For doing "SUM"
      i_fldcat-just(1)     = 'C'.
      APPEND i_fldcat.
    
      CLEAR i_fldcat.
      i_fldcat-fieldname   = 'VRKME'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat-tabname     = 'IT_SO1'.
      i_fldcat-seltext_m   = 'SALES UNIT'.
      i_fldcat-col_pos     = 10.       " POSITION OF THE COLUMN.
      i_fldcat-outputlen   = 10.       " SET THE OUTPUT LENGTH.
      i_fldcat-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat-just(1)     = 'C'.
      APPEND i_fldcat.
    
    ENDFORM.                    " FLD_CAT
    
    ***********************************************************************
    ****************** ALV SORTING  ***************************************
    ***********************************************************************
    *&---------------------------------------------------------------------*
    *&      Form  SORT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_I_SORT  text
    *----------------------------------------------------------------------*
    
    FORM t_sort  USING    p_i_sort TYPE slis_t_sortinfo_alv .
    
      DATA: i_sort TYPE slis_sortinfo_alv .
      REFRESH p_i_sort .
    
      CLEAR i_sort.
      i_sort-spos = 1.
      i_sort-tabname = 'IT_SO1'.
      i_sort-fieldname = 'VBELN'.
      i_sort-up = 'X'.
      i_sort-subtot = 'X'.
      i_sort-group = '*'.
      APPEND i_sort TO p_i_sort.
    
    ENDFORM.                    " SORT
    
    *FORM SET_PF_STATUS USING rt_extab TYPE slis_t_extab.
    *  SET PF-STATUS 'ZSTANDARD'.
    *ENDFORM. "Set_pf_status
    
    ***********************************************************************
    ***********FORM FOR EVENT USER_COMMAND1********************************
    ***********************************************************************
    
    FORM user_command1 USING r_ucomm LIKE sy-ucomm
                             rs_selfield TYPE slis_selfield.
    
    *CASE R_UCOMM .
    *    WHEN '&IC1' .
    *
    *    IF rs_selfield-FIELDNAME = 'VBELN' .
    *
    *    ENDIF .
    *
    * WHEN OTHERS .
    *
    * ENDCASE .
    
      CLEAR wa_so.
    
      REFRESH: it_del1 .
    
      IF r_ucomm = '&IC1' AND rs_selfield-fieldname = 'VBELN' AND
      rs_selfield-value IS NOT INITIAL.
    
        READ TABLE it_so1 INTO wa_so INDEX rs_selfield-tabindex.
    
        IF sy-subrc = 0.
    
          LOOP AT it_vbfa INTO wa_vbfa WHERE vbelv = wa_so-vbeln
                                       AND   posnv = wa_so-posnr.
            READ TABLE it_del_ful INTO wa_it_del_ful
                 WITH KEY vbeln = wa_vbfa-vbelv
                          posnr = wa_vbfa-posnn.
    
            IF sy-subrc = 0.
    
              CLEAR wa_del.
              MOVE wa_it_del_ful TO wa_del.
              APPEND wa_del TO it_del1.
    
            ENDIF.
    
          ENDLOOP.
        ENDIF.
      ENDIF.
    
    *********************************************************************
    ********* SECOND ALV GRID DISPLAY ***********************************
    *********************************************************************
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    
       EXPORTING
        i_callback_program                = sy-repid
    *   I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
        i_callback_user_command           = 'USER_COMMAND2'
        i_callback_top_of_page            = 'TOP_OF_PAGE'
    *    I_BACKGROUND_ID                   = 'ALV_BACKGROUND'
         i_grid_title                      = i_title_vbpa
        it_fieldcat                       = i_fldcat2[]
        it_sort                           = i_sort
        TABLES
        t_outtab                          = it_del_ful
                .
    *  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 .                    "USER_COMMAND1
    ***********************************************************************
    ********** FORM FOR EVENT USER_COMMAND 2 ******************************
    ***********************************************************************
    
    FORM user_command2 USING r_ucomm LIKE sy-ucomm
                             rs_selfield TYPE slis_selfield.
    
      CLEAR wa_so.
    
      REFRESH: it_del1 .
    
      IF r_ucomm = '&IC1' AND rs_selfield-fieldname = 'VBELN' AND
      rs_selfield-value IS NOT INITIAL.
    
        READ TABLE it_so1 INTO wa_so INDEX rs_selfield-tabindex.
    
    *    IF SY-SUBRC = 0.
    *
    *       LOOP AT it_vbfa INTO wa_vbfa WHERE vbelv = WA_SO-vbeln
    *                                    AND   posnv = WA_SO-posnr.
        READ TABLE it_del_ful INTO wa_it_del_ful
             WITH KEY vbeln = rs_selfield-value
                      posnr = wa_vbfa-posnn.
    
        IF rs_selfield-fieldname = 'VBELN'.
    
          SET PARAMETER ID 'VL' FIELD wa_vbfa-vbeln .
          CALL TRANSACTION 'VL03' AND SKIP FIRST SCREEN.
    
        ENDIF .
    
    *       ENDLOOP.
    *    ENDIF.
      ENDIF.
    ENDFORM .                    "USER_COMMAND2
    
    ************************************************************************
    ********* SECOND FIELDCATALOG ******************************************
    ************************************************************************
    
    *&---------------------------------------------------------------------*
    *&      Form  FLD_CAT2
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_I_FLDCAT2[]  text
    *----------------------------------------------------------------------*
    
    FORM fld_cat2  USING    p_i_fldcat2 TYPE slis_t_fieldcat_alv .
    
      CLEAR i_fldcat2.
      i_fldcat2-fieldname   = 'VBELN'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat2-tabname     = 'IT_DEL_FUL'."TABLE NAME
      i_fldcat2-seltext_m   = 'DELIVERY NO.'.
      i_fldcat2-col_pos     = 1.        " POSITION OF THE COLUMN.
      i_fldcat2-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat2-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat2-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat2-hotspot     = 'X'.
      i_fldcat2-just(1)     = 'C'.
      APPEND i_fldcat2.
    
      CLEAR i_fldcat2.
      i_fldcat2-fieldname   = 'POSNR'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat2-seltext_m   = 'DELIVERY ITEM'.
      i_fldcat2-col_pos     = 2.        " POSITION OF THE COLUMN.
      i_fldcat2-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat2-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat2-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat2-just(1)     = 'C'.
      APPEND i_fldcat2.
    
      CLEAR i_fldcat2.
      i_fldcat2-fieldname   = 'MATNR'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat2-seltext_m   = 'MATERIAL NO.'.
      i_fldcat2-col_pos     = 3.        " POSITION OF THE COLUMN.
      i_fldcat2-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat2-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat2-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat2-just(1)     = 'C'.
      APPEND i_fldcat2.
    
      CLEAR i_fldcat2.
      i_fldcat2-fieldname   = 'WERKS'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat2-seltext_m   = 'PLANT.'.
      i_fldcat2-col_pos     = 4.        " POSITION OF THE COLUMN.
      i_fldcat2-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat2-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat2-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat2-just(1)     = 'C'.
      APPEND i_fldcat2.
    
      CLEAR i_fldcat2.
      i_fldcat2-fieldname   = 'LGORT'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat2-seltext_m   = 'ST. LOCATION'.
      i_fldcat2-col_pos     = 5.        " POSITION OF THE COLUMN.
      i_fldcat2-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat2-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat2-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat2-just(1)     = 'C'.
      APPEND i_fldcat2.
    
      CLEAR i_fldcat2.
      i_fldcat2-fieldname   = 'CHARG'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat2-seltext_m   = 'BATCH NO.'.
      i_fldcat2-col_pos     = 6.        " POSITION OF THE COLUMN.
      i_fldcat2-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat2-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat2-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat2-just(1)     = 'C'.
      APPEND i_fldcat2.
    
      CLEAR i_fldcat2.
      i_fldcat2-fieldname   = 'LFIMG'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat2-seltext_m   = 'ACT. DEL. QTY.'.
      i_fldcat2-col_pos     = 7.        " POSITION OF THE COLUMN.
      i_fldcat2-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat2-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat2-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat2-just(1)     = 'C'.
      APPEND i_fldcat2.
    
      CLEAR i_fldcat2.
      i_fldcat2-fieldname   = 'VRKME'. "FIELD FOR WHICH CATALOG ID FILLED
      i_fldcat2-seltext_m   = 'SALES UNIT.'.
      i_fldcat2-col_pos     = 8.        " POSITION OF THE COLUMN.
      i_fldcat2-outputlen   = 20.       " SET THE OUTPUT LENGTH.
      i_fldcat2-emphasize   = 'X'.      " COLOR OF THIS COLUMN.
      i_fldcat2-key         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      i_fldcat2-just(1)     = 'C'.
      APPEND i_fldcat2.
    
    ENDFORM.                                                    " FLD_CAT2
    
    ************************************************************************
    ***************** ALV LAYOUT *******************************************
    ************************************************************************
    *&---------------------------------------------------------------------*
    *&      Form  LAYOUT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_I_LAYOUT  text
    *----------------------------------------------------------------------*
    
    FORM t_layout  USING    p_i_layout TYPE slis_layout_alv .
    
      p_i_layout-zebra  = 'X'.
      p_i_layout-totals_text = 'GRAND TOTAL ='.
    *  p_i_layout-CONFIRMATION_PROMPT = 'X'.
    *  p_i_layout-DEF_STATUS  = ' '.
      p_i_layout-info_fieldname = 'LINE_COLOR'.
    
    ENDFORM.                    " LAYOUT

    reward if useful.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Feb 27, 2007 at 05:54 AM
    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Feb 27, 2007 at 05:55 AM

    Hi Sudharsan,

    Look into thwe below link, hope this will solve your problem.

    http://help.sap.com/saphelp_47x200/helpdata/en/7f/e477e5fba211d2b48f006094192fe3/frameset.htm

    Cheers,

    Satish

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Feb 27, 2007 at 07:00 AM

    Hi Sudarshan,

    To enable row coloring, you should add an additional field to your list data table. It should be of character type and length at least 4. This field will contain the color code for the row.

    <b>* Internal table holding list data

    DATA BEGIN OF gt_list OCCURS 0 .

    INCLUDE STRUCTURE SFLIGHT .

    DATA rowcolor(4) TYPE c .

    DATA END OF gt_list .</b>

    To tell ALV Grid that you have loaded the color data for the row to this field, you make it know this by passing the name of the field containing color codes to the field “INFO_FNAME” of the layout structure.

    <b>e.g.

    ps_layout-info_fname = <field_name_containing_color_codes>. “e.g. ‘ROWCOLOR’</b>

    You can fill that field anytime during execution. But, of course, due to the flow logic of screens, it will be reflected to your list display as soon as an ALV refresh occurs.

    Thanks and regards 😊,

    Ravi:).

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Feb 27, 2007 at 07:04 AM

    Hi Sudarshan

    Please refer to :-

    www.abap4.it/download/ALV.pdf

    Its an EXCELLENT help document about ALV. The above solution i found in this link only.

    Thanks and regards 😊,

    Ravi 😊.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Feb 27, 2007 at 07:20 AM

    REPORT ZTEST1234 MESSAGE-ID ZZ .

    DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.

    DATA: L_VALID TYPE C,

    V_FLAG,

    V_DATA_CHANGE,

    V_ROW TYPE LVC_S_ROW,

    V_COLUMN TYPE LVC_S_COL,

    V_ROW_NUM TYPE LVC_S_ROID.

    *----


    *

    • CLASS lcl_event_handler DEFINITION

    *----


    *

    CLASS LCL_EVENT_HANDLER DEFINITION .

    PUBLIC SECTION .

    METHODS:

    **Hot spot Handler

    HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID

    IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,

    **Double Click Handler

    HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

    IMPORTING E_ROW E_COLUMN ES_ROW_NO.

    ENDCLASS. "lcl_event_handler DEFINITION

    *----


    *

    • CLASS lcl_event_handler IMPLEMENTATION

    *----


    *

    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.

    *Handle Hotspot Click

    METHOD HANDLE_HOTSPOT_CLICK .

    CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.

    V_ROW = E_ROW_ID.

    V_COLUMN = E_COLUMN_ID.

    V_ROW_NUM = ES_ROW_NO.

    MESSAGE I000 WITH V_ROW 'clicked'.

    ENDMETHOD. "lcl_event_handler

    *Handle Double Click

    METHOD HANDLE_DOUBLE_CLICK.

    ENDMETHOD. "handle_double_click

    ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION

    *&----


    *

    *& Global Definitions

    *&----


    *

    DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1

    G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler

    DATA: OK_CODE LIKE SY-UCOMM,

    SAVE_OK LIKE SY-UCOMM,

    G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',

    GS_LAYOUT TYPE LVC_S_LAYO.

    *- Fieldcatalog for First and second Report

    DATA: IT_FIELDCAT TYPE LVC_T_FCAT,

    X_FIELDCAT TYPE LVC_S_FCAT,

    LS_VARI TYPE DISVARIANT.

    *----

    -


    • START-OF_SELECTION

    *----

    -


    START-OF-SELECTION.

    DATA:BEGIN OF ITAB OCCURS 0,

    VBELN LIKE LIKP-VBELN,

    POSNR LIKE LIPS-POSNR,

    CELLCOLOR TYPE LVC_T_SCOL, "required for color

    DROP(10),

    END OF ITAB.

    SELECT VBELN

    POSNR

    FROM LIPS

    UP TO 20 ROWS

    INTO CORRESPONDING FIELDS OF TABLE ITAB.

    END-OF-SELECTION.

    IF NOT ITAB[] IS INITIAL.

    CALL SCREEN 100.

    ELSE.

    MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).

    ENDIF.

    *&----


    *

    *& Form CREATE_AND_INIT_ALV

    *&----


    *

    • text

    *----


    *

    FORM CREATE_AND_INIT_ALV .

    DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.

    CREATE OBJECT G_CUSTOM_CONTAINER

    EXPORTING CONTAINER_NAME = G_CONTAINER1.

    CREATE OBJECT G_GRID

    EXPORTING I_PARENT = G_CUSTOM_CONTAINER.

    • Set a titlebar for the grid control

    CLEAR GS_LAYOUT.

    GS_LAYOUT-GRID_TITLE = TEXT-003.

    GS_LAYOUT-ZEBRA = SPACE.

    GS_LAYOUT-CWIDTH_OPT = 'X'.

    GS_LAYOUT-NO_ROWMARK = 'X'.

    GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.

    CALL METHOD G_GRID->REGISTER_EDIT_EVENT

    EXPORTING

    I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.

    CREATE OBJECT G_HANDLER.

    SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.

    SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.

    DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color

    DATA: L_INDEX TYPE SY-TABIX.

    "Here i am changing the color of line 1,5,10...

    "so you can change the color of font conditionally

    LOOP AT ITAB.

    L_INDEX = SY-TABIX.

    IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.

    LS_CELLCOLOR-FNAME = 'VBELN'.

    LS_CELLCOLOR-COLOR-COL = '6'.

    LS_CELLCOLOR-COLOR-INT = '0'.

    LS_CELLCOLOR-COLOR-INV = '1'.

    APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.

    MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.

    LS_CELLCOLOR-FNAME = 'POSNR'.

    LS_CELLCOLOR-COLOR-COL = '6'.

    LS_CELLCOLOR-COLOR-INT = '0'.

    LS_CELLCOLOR-COLOR-INV = '1'.

    APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.

    MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.

    ENDIF.

    ENDLOOP.

    • setting focus for created grid control

    CALL METHOD CL_GUI_CONTROL=>SET_FOCUS

    EXPORTING

    CONTROL = G_GRID.

    • Build fieldcat and set editable for date and reason code

    • edit enabled. Assign a handle for the dropdown listbox.

    PERFORM BUILD_FIELDCAT.

    PERFORM SET_DRDN_TABLE.

    • Optionally restrict generic functions to 'change only'.

    • (The user shall not be able to add new lines).

    PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.

    **Vaiant to save the layout

    LS_VARI-REPORT = SY-REPID.

    LS_VARI-HANDLE = SPACE.

    LS_VARI-LOG_GROUP = SPACE.

    LS_VARI-USERNAME = SPACE.

    LS_VARI-VARIANT = SPACE.

    LS_VARI-TEXT = SPACE.

    LS_VARI-DEPENDVARS = SPACE.

    **Calling the Method for ALV output

    CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY

    EXPORTING

    IT_TOOLBAR_EXCLUDING = LT_EXCLUDE

    IS_VARIANT = LS_VARI

    IS_LAYOUT = GS_LAYOUT

    I_SAVE = 'A'

    CHANGING

    IT_FIELDCATALOG = IT_FIELDCAT

    IT_OUTTAB = ITAB[].

    • Set editable cells to ready for input initially

    CALL METHOD G_GRID->SET_READY_FOR_INPUT

    EXPORTING

    I_READY_FOR_INPUT = 1.

    ENDFORM. "CREATE_AND_INIT_ALV

    *&----


    *

    *& Form EXCLUDE_TB_FUNCTIONS

    *&----


    *

    • text

    *----


    *

    • -->PT_EXCLUDE text

    *----


    *

    FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.

    • Only allow to change data not to create new entries (exclude

    • generic functions).

    DATA LS_EXCLUDE TYPE UI_FUNC.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    ENDFORM. " EXCLUDE_TB_FUNCTIONS

    *&----


    *

    *& Form build_fieldcat

    *&----


    *

    • Fieldcatalog

    *----


    *

    FORM BUILD_FIELDCAT .

    DATA: L_POS TYPE I.

    L_POS = L_POS + 1.

    X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).

    X_FIELDCAT-FIELDNAME = 'VBELN'.

    X_FIELDCAT-TABNAME = 'IT_FINAL'.

    X_FIELDCAT-COL_POS = L_POS.

    X_FIELDCAT-NO_ZERO = 'X'.

    X_FIELDCAT-OUTPUTLEN = '10'.

    X_FIELDCAT-HOTSPOT = 'X'.

    APPEND X_FIELDCAT TO IT_FIELDCAT.

    CLEAR X_FIELDCAT.

    L_POS = L_POS + 1.

    X_FIELDCAT-SCRTEXT_M = 'Item'(025).

    X_FIELDCAT-FIELDNAME = 'POSNR'.

    X_FIELDCAT-TABNAME = 'IT_FINAL'.

    X_FIELDCAT-COL_POS = L_POS.

    X_FIELDCAT-OUTPUTLEN = '5'.

    APPEND X_FIELDCAT TO IT_FIELDCAT.

    CLEAR X_FIELDCAT.

    L_POS = L_POS + 1.

    X_FIELDCAT-SCRTEXT_M = 'Drop'(025).

    X_FIELDCAT-FIELDNAME = 'DROP'.

    X_FIELDCAT-TABNAME = 'IT_FINAL'.

    X_FIELDCAT-COL_POS = L_POS.

    X_FIELDCAT-OUTPUTLEN = '5'.

    X_FIELDCAT-EDIT = 'X'.

    X_FIELDCAT-DRDN_HNDL = '1'.

    X_FIELDCAT-DRDN_ALIAS = 'X'.

    APPEND X_FIELDCAT TO IT_FIELDCAT.

    CLEAR X_FIELDCAT.

    ENDFORM. " build_fieldcat

    *&----


    *

    *& Module STATUS_0100 OUTPUT

    *&----


    *

    • text

    *----


    *

    MODULE STATUS_0100 OUTPUT.

    SET PF-STATUS 'MAIN100'.

    SET TITLEBAR 'MAIN100'.

    IF G_CUSTOM_CONTAINER IS INITIAL.

    **Initializing the grid and calling the fm to Display the O/P

    PERFORM CREATE_AND_INIT_ALV.

    ENDIF.

    ENDMODULE. " STATUS_0100 OUTPUT

    *&----


    *

    *& Module USER_COMMAND_0100 INPUT

    *&----


    *

    • text

    *----


    *

    MODULE USER_COMMAND_0100 INPUT.

    CASE SY-UCOMM.

    WHEN 'BACK'.

    LEAVE TO SCREEN 0.

    ENDCASE.

    ENDMODULE. " USER_COMMAND_0100 INPUT

    *&----


    *

    *& Form SET_DRDN_TABLE

    *&----


    *

    • text

    *----


    *

    FORM SET_DRDN_TABLE.

    DATA:LT_DRAL TYPE LVC_T_DRAL,

    LS_DRAL TYPE LVC_S_DRAL.

    LOOP AT ITAB .

    • First listbox (handle '1').

    IF SY-INDEX = 1.

    LS_DRAL-HANDLE = '1'.

    LS_DRAL-VALUE = ' '.

    LS_DRAL-INT_VALUE = ' '.

    ELSE.

    LS_DRAL-HANDLE = '1'.

    LS_DRAL-VALUE = ITAB-POSNR.

    LS_DRAL-INT_VALUE = ITAB-POSNR.

    ENDIF.

    APPEND LS_DRAL TO LT_DRAL.

    ENDLOOP.

    **Setting the Drop down table for Reason Code

    CALL METHOD G_GRID->SET_DROP_DOWN_TABLE

    EXPORTING

    IT_DROP_DOWN_ALIAS = LT_DRAL.

    ENDFORM.

    ___________________________________________

    in Normal ALV..

    REPORT ZTESTALV.

    TYPE-POOLS: SLIS.

    INCLUDE 0.

    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    ENDIF.

    *&----


    *

    *& Form LIST_MODIFY_OUPUT

    *&----


    *

    • text

    *----


    *

    FORM LIST_MODIFY_OUPUT.

    DATA: L_VBELN LIKE VBAK-VBELN,

    L_POSNR LIKE VBAP-POSNR,

    l_index type sy-index.

    clear it_vbap.

    DO 20 TIMES.

    CLEAR: L_VBELN, L_POSNR.

    READ LINE SY-INDEX INDEX SY-LSIND

    FIELD VALUE IT_VBAP-VBELN INTO L_VBELN

    IT_VBAP-POSNR INTO L_POSNR .

    "3lines are reserved for alv headings , so i am reading it form 4th line

    "so 4th line is equal to 1st line of itab

    IF SY-SUBRC = 0 AND SY-INDEX GE 4.

    l_index = sy-index - 3.

    READ TABLE IT_VBAP INDEX l_index.

    IF SY-SUBRC = 0 AND IT_VBAP-FLAG = 'X'.

    *-Modifying current list

    MODIFY LINE SY-INDEX INDEX SY-LSIND

    FIELD FORMAT IT_VBAP-POSNR COLOR 6 INVERSE.

    MODIFY LINE SY-INDEX INDEX SY-LSIND

    FIELD FORMAT IT_VBAP-VBELN COLOR 6 INVERSE.

    ENDIF.

    ENDIF.

    ENDDO.

    ENDFORM. "LIST_MODIFY_OUPUT

    __________________________________________________________________

    An example of using linecolor (ALV).

    Here you have a good example of coloring rows, columns and specific cells in alvs. It comes in an example of how to use hashed tables.

    For coloured rows and cols check gp_bymat

    for coloured specific rows uncheck gp_bymat.

    HTH.

    Horacio

    ps: code:

    report zuseofhashedtables.

    ************************************************************************

    • Program: ZUseOfHashedTables **

    ************************************************************************

    • Author: Horacio Zapettini **

    • **

    • Versions: 4.6b - 4.6c **

    ************************************************************************

    • Notes: **

    • this program shows how we can use hashed tables to improve **

    • the responce time. **

    • It shows, **

    • 1. how to declare hashed tables **

    • 2. a cache-like technique to improve access to master data **

    • 3. how to collect data using hashed tables **

    • 4. how to avoid deletions of unwanted data **

    ************************************************************************

    • Results: the test we run read about 31000 rows from mkpf, 150000 **

    • rows from mseg, 500 rows from makt and 400 from lfa1. **

    • it filled ht_lst with 24500 rows and displayed them in **

    • alv grid format. **

    • **

    • It took about 65 secodns to perform this task (first time **

    • we run it when all the db buffers are empty. **

    • **

    • The same program with standard tables needed 140 seconds **

    • to run with the same recordset and with buffers filled in **

    • **

    • A simmilar test over more than a million rows

    ************************************************************************

    • Objetive: show a list that consists of all the material movements **

    • '101' - '901' for a certain range of dates in mkpf-budat. **

    • the columns to be displayed are: **

    • mkpf-budat, **

    • mkpf-mblnr, **

    • mseg-lifnr, **

    • lfa1-name1, **

    • mkpf-xblnr, **

    • mseg-zeile **

    • mseg-charg, **

    • mseg-matnr, **

    • makt-maktx, **

    • mseg-erfmg, **

    • mseg-erfme. **

    • or show a sumary list by matnr - menge **

    • **

    • You'll have to create a pf-status called vista - **

    • See form set_pf_status for details **

    ************************************************************************

    • tables used -

    tables: mkpf,

    mseg,

    lfa1,

    makt.

    • global hashed tables used

    *

    data: begin of wa_mkpf, "header

    mblnr like mkpf-mblnr,

    mjahr like mkpf-mjahr,

    budat like mkpf-budat,

    xblnr like mkpf-xblnr,

    end of wa_mkpf.

    data: ht_mkpf like hashed table of wa_mkpf

    with unique key mblnr mjahr

    with header line.

    data: st_mkpf like standard table of wa_mkpf

    with header line.

    *

    data: begin of wa_mseg, " line items

    mblnr like mseg-mblnr,

    mjahr like mseg-mjahr,

    zeile like mseg-zeile,

    bwart like mseg-bwart,

    charg like mseg-charg,

    matnr like mseg-matnr,

    lifnr like mseg-lifnr,

    erfmg like mseg-erfmg,

    erfme like mseg-erfme,

    end of wa_mseg.

    data ht_mseg like hashed table of wa_mseg

    with unique key mblnr mjahr zeile

    with header line.

    data st_mseg like standard table of wa_mseg

    with header line.

    • cache structure for lfa1 records

    data: begin of wa_lfa1,

    lifnr like lfa1-lifnr,

    name1 like lfa1-name1,

    end of wa_lfa1.

    data ht_lfa1 like hashed table of wa_lfa1

    with unique key lifnr

    with header line.

    • cache structure for material related data

    data: begin of wa_material,

    matnr like makt-matnr,

    maktx like makt-maktx,

    end of wa_material.

    data: ht_material like hashed table of wa_material

    with unique key matnr

    with header line.

    • result table

    data: begin of wa_lst, "

    budat like mkpf-budat,

    mblnr like mseg-mblnr,

    lifnr like mseg-lifnr,

    name1 like lfa1-name1,

    xblnr like mkpf-xblnr,

    zeile like mseg-zeile,

    charg like mseg-charg,

    matnr like mseg-matnr,

    maktx like makt-maktx,

    erfmg like mseg-erfmg,

    erfme like mseg-erfme,

    mjahr like mseg-mjahr,

    end of wa_lst.

    data: ht_lst like hashed table of wa_lst

    with unique key mblnr mjahr zeile

    with header line.

    data: begin of wa_lst1, " sumary by material

    matnr like mseg-matnr,

    maktx like makt-maktx,

    erfmg like mseg-erfmg,

    erfme like mseg-erfme,

    color_line(4) TYPE c, " Line color

    color_cell TYPE lvc_t_scol, " Cell color

    celltab type LVC_T_STYL,

    end of wa_lst1.

    data: ht_lst1 like hashed table of wa_lst1

    with unique key matnr

    with header line.

    • structures for alv grid display.

    • itabs

    type-pools: slis.

    data: it_lst like standard table of wa_lst with header line,

    it_fieldcat_lst type slis_t_fieldcat_alv with header line,

    it_sort_lst type slis_t_sortinfo_alv,

    it_lst1 like standard table of wa_lst1 with header line,

    it_fieldcat_lst1 type slis_t_fieldcat_alv with header line,

    it_sort_lst1 type slis_t_sortinfo_alv.

    • structures

    data: wa_sort type slis_sortinfo_alv,

    ls_layout type slis_layout_alv.

    • color management.

    DATA : wa_color TYPE lvc_s_scol.

    • Internal table for color management.

    DATA : it_color TYPE TABLE OF lvc_s_scol.

    • itab for input enabling.

    DATA: lt_celltab TYPE lvc_t_styl. "

    • global varialbes

    data: g_lines type i.

    data: g_repid like sy-repid,

    ok_code like sy-ucomm.

    • selection-screen

    "text: Dates:

    select-options: so_budat for mkpf-budat default sy-datum.

    "text: Material numbers.

    select-options: so_matnr for mseg-matnr.

    selection-screen uline.

    selection-screen skip 1.

    "Text: show summary by material.

    parameters: gp_bymat as checkbox default ''.

    parameters: gp_hier as checkbox default 'X'.

    start-of-selection.

    perform get_data.

    perform show_data.

    end-of-selection.

    *----


    *

    • FORM get_data *

    *----


    *

    • ........ *

    *----


    *

    form get_data.

    select mblnr mjahr budat xblnr

    into table ht_mkpf

    from mkpf

    where budat in so_budat. " make use of std index.

    • have we retrieved data from mkpf?

    describe table ht_mkpf lines g_lines.

    if g_lines > 0.

    • if true then retrieve all related records from mseg.

    • Doing this way we make sure that the access is by primary key

    • of mseg.

    • The reason is that is faster to filter them in memory

    • than to allow the db server to do it.

    select mblnr mjahr zeile bwart charg

    matnr lifnr erfmg erfme

    into table ht_mseg

    from mseg

    for all entries in ht_mkpf

    where mblnr = ht_mkpf-mblnr

    and mjahr = ht_mkpf-mjahr.

    endif.

    • fill t_lst or t_lst1 according to user's choice.

    if gp_bymat = ' '.

    perform fill_ht_lst.

    else.

    perform fill_ht_lst1.

    endif.

    endform.

    form fill_ht_lst.

    refresh ht_lst.

    • Example: how to discard unwanted data in an efficient way.

    loop at ht_mseg.

    • filter unwanted data

    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.

    check ht_mseg-matnr in so_matnr.

    • read header line.

    read table ht_mkpf with table key mblnr = ht_mseg-mblnr

    mjahr = ht_mseg-mjahr.

    clear ht_lst.

    • * note : this may be faster if you specify field by field.

    move-corresponding ht_mkpf to ht_lst.

    move-corresponding ht_mseg to ht_lst.

    perform read_lfa1 using ht_mseg-lifnr changing ht_lst-name1.

    perform read_material using ht_mseg-matnr changing ht_lst-maktx.

    insert table ht_lst.

    endloop.

    endform.

    form fill_ht_lst1.

    data: colorear.

    refresh ht_lst1.

    • Example: how to discard unwanted data in an efficient way.

    • hot to simulate a collect in a faster way

    loop at ht_mseg.

    • filter unwanted data

    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.

    check ht_mseg-matnr in so_matnr.

    • * note : this may be faster if you specify field by field.

    read table ht_lst1 with table key matnr = ht_mseg-matnr

    transporting erfmg.

    if sy-subrc <> 0. " if matnr doesn't exist in sumary table

    " insert a new record

    clear ht_lst1.

    ht_lst1-matnr = ht_mseg-matnr.

    perform read_material using ht_mseg-matnr changing ht_lst1-maktx.

    ht_lst1-erfmg = ht_mseg-erfmg.

    ht_lst1-erfme = ht_mseg-erfme.

    if colorear = ''.

    colorear = 'X'.

    refresh it_color.

    ht_lst1-color_cell[] = it_color[].

    MOVE 'C410' TO ht_lst1-color_line.

    else.

    colorear = ' '.

    refresh it_color. clear it_color.

    MOVE 'MATNR' TO wa_color-fname.

    MOVE '6' TO wa_color-color-col.

    MOVE '1' TO wa_color-color-int.

    MOVE '1' TO wa_color-color-inv.

    APPEND wa_color TO it_color.

    MOVE 'MAKTX' TO wa_color-fname.

    MOVE '3' TO wa_color-color-col.

    MOVE '1' TO wa_color-color-int.

    MOVE '1' TO wa_color-color-inv.

    APPEND wa_color TO it_color.

    MOVE 'ERFMG' TO wa_color-fname.

    MOVE '5' TO wa_color-color-col.

    MOVE '1' TO wa_color-color-int.

    MOVE '1' TO wa_color-color-inv.

    APPEND wa_color TO it_color.

    ht_lst1-color_cell[] = it_color[].

    clear ht_lst1-color_line.

    endif.

    insert table ht_lst1.

    else." a record was found.

    " collect erfmg. To do so, fill in the unique key and add

    " the numeric fields.

    ht_lst1-matnr = ht_mseg-matnr.

    add ht_mseg-erfmg to ht_lst1-erfmg.

    modify table ht_lst1 transporting erfmg.

    endif.

    endloop.

    endform.

    • implementation of cache for lfa1.

    form read_lfa1 using p_lifnr changing p_name1.

    read table ht_lfa1 with table key lifnr = p_lifnr

    transporting name1.

    if sy-subrc <> 0.

    clear ht_lfa1.

    ht_lfa1-lifnr = p_lifnr.

    select single name1

    into ht_lfa1-name1

    from lfa1

    where lifnr = p_lifnr.

    if sy-subrc <> 0. ht_lfa1-name1 = 'n/a in lfa1'. endif.

    insert table ht_lfa1.

    endif.

    p_name1 = ht_lfa1-name1.

    endform.

    • implementation of cache for material data

    form read_material using p_matnr changing p_maktx.

    read table ht_material with table key matnr = p_matnr

    transporting maktx.

    if sy-subrc <> 0.

    ht_material-matnr = p_matnr.

    select single maktx into ht_material-maktx

    from makt

    where spras = sy-langu

    and matnr = p_matnr.

    if sy-subrc <> 0. ht_material-maktx = 'n/a in makt'. endif.

    insert table ht_material.

    endif.

    p_maktx = ht_material-maktx.

    endform.

    form show_data.

    if gp_hier = 'X'. "no anda.

    • perform show_hierarchicalALV.

    else.

    if gp_bymat = ' '.

    perform show_ht_lst.

    else.

    perform show_ht_lst1.

    endif.

    endif.

    endform.

    form show_hierarchicalALV.

    st_mkpf[] = ht_mkpf[].

    st_mseg[] = ht_mseg[].

    call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

    • exporting

    • I_INTERFACE_CHECK = ' '

    • I_CALLBACK_PROGRAM =

    • I_CALLBACK_PF_STATUS_SET = ' '

    • I_CALLBACK_USER_COMMAND = ' '

    • IS_LAYOUT =

    • IT_FIELDCAT =

    • IT_EXCLUDING =

    • IT_SPECIAL_GROUPS =

    • IT_SORT =

    • IT_FILTER =

    • IS_SEL_HIDE =

    • I_SCREEN_START_COLUMN = 0

    • I_SCREEN_START_LINE = 0

    • I_SCREEN_END_COLUMN = 0

    • I_SCREEN_END_LINE = 0

    • I_DEFAULT = 'X'

    • I_SAVE = ' '

    • IS_VARIANT =

    • IT_EVENTS =

    • IT_EVENT_EXIT =

    • i_tabname_header =

    • i_tabname_item =

    • I_STRUCTURE_NAME_HEADER =

    • I_STRUCTURE_NAME_ITEM =

    • is_keyinfo =

    • IS_PRINT =

    • IS_REPREP_ID =

    • I_BUFFER_ACTIVE =

    • I_BYPASSING_BUFFER =

    • IMPORTING

    • E_EXIT_CAUSED_BY_CALLER =

    • ES_EXIT_CAUSED_BY_USER =

    tables

    t_outtab_header = st_mkpf

    t_outtab_item = st_mseg

    • EXCEPTIONS

    • PROGRAM_ERROR = 1

    • OTHERS = 2

    .

    if sy-subrc <> 0.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    endif.

    endform.

    form show_ht_lst.

    "needed because the FM can't use a hashed table.

    it_lst[] = ht_lst[].

    perform fill_layout using 'full display'

    changing ls_layout.

    perform fill_columns_lst.

    • perform sort_lst.

    g_repid = sy-repid.

    call function 'REUSE_ALV_GRID_DISPLAY'

    exporting

    i_callback_program = g_repid

    i_callback_pf_status_set = 'SET_PF_STATUS'

    is_layout = ls_layout

    it_fieldcat = it_fieldcat_lst[]

    • it_sort = it_sort_lst

    tables

    t_outtab = it_lst

    exceptions

    program_error = 1

    others = 2.

    endform.

    form show_ht_lst1.

    "needed because the FM can't use a hashed table.

    it_lst1[] = ht_lst1[].

    perform fill_layout using 'Sumary by matnr'

    changing ls_layout.

    perform fill_columns_lst1.

    • perform sort_lst.

    g_repid = sy-repid.

    call function 'REUSE_ALV_GRID_DISPLAY'

    exporting

    i_callback_program = g_repid

    i_callback_pf_status_set = 'SET_PF_STATUS'

    is_layout = ls_layout

    it_fieldcat = it_fieldcat_lst1[]

    • it_sort = it_sort_lst

    tables

    t_outtab = it_lst1

    exceptions

    program_error = 1

    others = 2.

    endform.

    form fill_layout using p_window_titlebar

    changing cs_layo type slis_layout_alv.

    clear cs_layo.

    cs_layo-window_titlebar = p_window_titlebar.

    cs_layo-edit = 'X'.

    cs_layo-edit_mode = space.

    MOVE 'COLOR_LINE' TO cs_layo-info_fieldname.

    • Field that identify cell color in inetrnal table

    MOVE 'COLOR_CELL' TO cs_layo-coltab_fieldname.

    • move 'CELLTAB' TO cs_layo-stylefname.

    endform. " armar_layout_stock

    form set_pf_status using rt_extab type slis_t_extab.

    • create a new status

    • and then select extras -> adjust template -> listviewer

    set pf-status 'VISTA'.

    endform. "set_pf_status

    define add_lst.

    clear it_fieldcat_lst.

    it_fieldcat_lst-fieldname = &1.

    it_fieldcat_lst-outputlen = &2.

    it_fieldcat_lst-ddictxt = 'L'.

    it_fieldcat_lst-seltext_l = &1.

    it_fieldcat_lst-seltext_m = &1.

    it_fieldcat_lst-seltext_m = &1.

    if &1 = 'MATNR'.

    it_fieldcat_lst-emphasize = 'C111'.

    endif.

    append it_fieldcat_lst.

    end-of-definition.

    define add_lst1.

    clear it_fieldcat_lst.

    it_fieldcat_lst1-fieldname = &1.

    it_fieldcat_lst1-outputlen = &2.

    it_fieldcat_lst1-ddictxt = 'L'.

    it_fieldcat_lst1-seltext_l = &1.

    it_fieldcat_lst1-seltext_m = &1.

    it_fieldcat_lst1-seltext_m = &1.

    append it_fieldcat_lst1.

    end-of-definition.

    form fill_columns_lst.

    • set columns for output.

    refresh it_fieldcat_lst.

    *

    add_lst 'BUDAT' 10.

    add_lst 'MBLNR' 10.

    add_lst 'LIFNR' 10.

    add_lst 'NAME1' 35.

    add_lst 'XBLNR' 15.

    add_lst 'ZEILE' 5.

    add_lst 'CHARG' 10.

    add_lst 'MATNR' 18.

    add_lst 'MAKTX' 30.

    add_lst 'ERFMG' 17.

    add_lst 'ERFME' 5.

    add_lst 'MJAHR' 4.

    endform.

    form fill_columns_lst1.

    • set columns for output.

    refresh it_fieldcat_lst1.

    add_lst1 'MATNR' 18.

    add_lst1 'MAKTX' 30.

    add_lst1 'ERFMG' 17.

    add_lst1 'ERFME' 5..

    endform.

    Horacio Zapettini

    -

    -


    Program to Calculate FI Opening Balance

    How to find the Opening balance for a given period in FI Module for a Particular GL A/c.

    I was calculated opening balance, code is below maybe it will be helpful.

    *find period.

    CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

    EXPORTING

    i_date = s_budat-low

    i_periv = i_tab-periv "'K4'

    IMPORTING

    e_buper = v_donem

    e_gjahr = v_gjahr

    EXCEPTIONS

    input_false = 1

    t009_notfound = 2

    t009b_notfound = 3

    OTHERS = 4.

    *calc opening balance hesabý

    SELECT * FROM knc1 WHERE kunnr = i_tab-kunnr

    AND bukrs = i_tab-bukrs " s_bukrs

    AND gjahr EQ v_gjahr.

    v_dnm = v_donem.

    • opening balance first calc > old year ,

    WHILE v_dnm > 1.

    v_dnm = v_dnm - 1.

    CONCATENATE 'knc1-um' v_dnm 's' INTO v_field_name_borc.

    CONCATENATE 'knc1-um' v_dnm 'h' INTO v_field_name_alacak.

    ASSIGN (v_field_name_borc) TO old

    • add days which is from selected date-low month

    IF v_donem > 1.

    v_dnm = v_donem - 1.

    ELSE.

    v_dnm = v_donem.

    ENDIF.

    SELECT SINGLE * FROM t009b WHERE periv = i_tab-periv "'K4'

    AND bdatj = s_budat-low+0(4)

    AND poper = v_dnm.

    t009b-butag = t009b-butag + 1.

    IF s_budat-low+6(2) NE t009b-butag.

    v_date_high = s_budat-low - 1.

    IF v_donem = 1.

    v_date_low = s_budat-low.

    v_date_low+4(4) = '0101'.

    ELSE.

    CONCATENATE t009b-bdatj t009b-bumon t009b-butag INTO

    v_date_low.

    ENDIF.

    SELECT * FROM bsad WHERE bukrs EQ i_tab-bukrs "IN s_bukrs

    AND kunnr = i_tab-kunnr

    AND budat BETWEEN v_date_low AND

    v_date_high

    AND umskz = space

    AND blart IN s_blart.

    IF bsad-shkzg = 'S'.

    i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsad-dmbtr ).

    ELSEIF bsad-shkzg = 'H'.

    i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsad-dmbtr ).

    ENDIF.

    ENDSELECT.

    SELECT * FROM bsid WHERE bukrs EQ i_tab-bukrs "IN s_bukrs

    AND kunnr = i_tab-kunnr

    AND budat BETWEEN v_date_low AND

    v_date_high

    AND umskz = space

    AND blart IN s_blart.

    • AND gsber IN gsber.

    IF bsid-shkzg = 'S'.

    i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsid-dmbtr ).

    ELSEIF bsid-shkzg = 'H'.

    i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsid-dmbtr ).

    ENDIF.

    ENDSELECT.

    ENDIF.

    "opening balance ( þirket bazlý )z1 degeri

    i_tab-z1 = i_tab-z1 + ( knc1-umsav + i_tab-dmbtr_s - i_tab-dmbtr_h ).

    • for israel

    i_tab-dmbtril_s = i_tab-dmbtr_s .

    i_tab-dmbtril_h = i_tab-dmbtr_h .

    ENDSELECT.

    ____________________________________________________________________

    check the below link

    Check this out

    http://www.sap-img.com/abap/line-color-in-alv-example.htm

    Check this sample program from

    pls: award points if it is useful

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Feb 27, 2007 at 07:20 AM

    REPORT ZTEST1234 MESSAGE-ID ZZ .

    DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.

    DATA: L_VALID TYPE C,

    V_FLAG,

    V_DATA_CHANGE,

    V_ROW TYPE LVC_S_ROW,

    V_COLUMN TYPE LVC_S_COL,

    V_ROW_NUM TYPE LVC_S_ROID.

    *----


    *

    • CLASS lcl_event_handler DEFINITION

    *----


    *

    CLASS LCL_EVENT_HANDLER DEFINITION .

    PUBLIC SECTION .

    METHODS:

    **Hot spot Handler

    HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID

    IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,

    **Double Click Handler

    HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

    IMPORTING E_ROW E_COLUMN ES_ROW_NO.

    ENDCLASS. "lcl_event_handler DEFINITION

    *----


    *

    • CLASS lcl_event_handler IMPLEMENTATION

    *----


    *

    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.

    *Handle Hotspot Click

    METHOD HANDLE_HOTSPOT_CLICK .

    CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.

    V_ROW = E_ROW_ID.

    V_COLUMN = E_COLUMN_ID.

    V_ROW_NUM = ES_ROW_NO.

    MESSAGE I000 WITH V_ROW 'clicked'.

    ENDMETHOD. "lcl_event_handler

    *Handle Double Click

    METHOD HANDLE_DOUBLE_CLICK.

    ENDMETHOD. "handle_double_click

    ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION

    *&----


    *

    *& Global Definitions

    *&----


    *

    DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1

    G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler

    DATA: OK_CODE LIKE SY-UCOMM,

    SAVE_OK LIKE SY-UCOMM,

    G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',

    GS_LAYOUT TYPE LVC_S_LAYO.

    *- Fieldcatalog for First and second Report

    DATA: IT_FIELDCAT TYPE LVC_T_FCAT,

    X_FIELDCAT TYPE LVC_S_FCAT,

    LS_VARI TYPE DISVARIANT.

    *----

    -


    • START-OF_SELECTION

    *----

    -


    START-OF-SELECTION.

    DATA:BEGIN OF ITAB OCCURS 0,

    VBELN LIKE LIKP-VBELN,

    POSNR LIKE LIPS-POSNR,

    CELLCOLOR TYPE LVC_T_SCOL, "required for color

    DROP(10),

    END OF ITAB.

    SELECT VBELN

    POSNR

    FROM LIPS

    UP TO 20 ROWS

    INTO CORRESPONDING FIELDS OF TABLE ITAB.

    END-OF-SELECTION.

    IF NOT ITAB[] IS INITIAL.

    CALL SCREEN 100.

    ELSE.

    MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).

    ENDIF.

    *&----


    *

    *& Form CREATE_AND_INIT_ALV

    *&----


    *

    • text

    *----


    *

    FORM CREATE_AND_INIT_ALV .

    DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.

    CREATE OBJECT G_CUSTOM_CONTAINER

    EXPORTING CONTAINER_NAME = G_CONTAINER1.

    CREATE OBJECT G_GRID

    EXPORTING I_PARENT = G_CUSTOM_CONTAINER.

    • Set a titlebar for the grid control

    CLEAR GS_LAYOUT.

    GS_LAYOUT-GRID_TITLE = TEXT-003.

    GS_LAYOUT-ZEBRA = SPACE.

    GS_LAYOUT-CWIDTH_OPT = 'X'.

    GS_LAYOUT-NO_ROWMARK = 'X'.

    GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.

    CALL METHOD G_GRID->REGISTER_EDIT_EVENT

    EXPORTING

    I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.

    CREATE OBJECT G_HANDLER.

    SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.

    SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.

    DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color

    DATA: L_INDEX TYPE SY-TABIX.

    "Here i am changing the color of line 1,5,10...

    "so you can change the color of font conditionally

    LOOP AT ITAB.

    L_INDEX = SY-TABIX.

    IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.

    LS_CELLCOLOR-FNAME = 'VBELN'.

    LS_CELLCOLOR-COLOR-COL = '6'.

    LS_CELLCOLOR-COLOR-INT = '0'.

    LS_CELLCOLOR-COLOR-INV = '1'.

    APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.

    MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.

    LS_CELLCOLOR-FNAME = 'POSNR'.

    LS_CELLCOLOR-COLOR-COL = '6'.

    LS_CELLCOLOR-COLOR-INT = '0'.

    LS_CELLCOLOR-COLOR-INV = '1'.

    APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.

    MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.

    ENDIF.

    ENDLOOP.

    • setting focus for created grid control

    CALL METHOD CL_GUI_CONTROL=>SET_FOCUS

    EXPORTING

    CONTROL = G_GRID.

    • Build fieldcat and set editable for date and reason code

    • edit enabled. Assign a handle for the dropdown listbox.

    PERFORM BUILD_FIELDCAT.

    PERFORM SET_DRDN_TABLE.

    • Optionally restrict generic functions to 'change only'.

    • (The user shall not be able to add new lines).

    PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.

    **Vaiant to save the layout

    LS_VARI-REPORT = SY-REPID.

    LS_VARI-HANDLE = SPACE.

    LS_VARI-LOG_GROUP = SPACE.

    LS_VARI-USERNAME = SPACE.

    LS_VARI-VARIANT = SPACE.

    LS_VARI-TEXT = SPACE.

    LS_VARI-DEPENDVARS = SPACE.

    **Calling the Method for ALV output

    CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY

    EXPORTING

    IT_TOOLBAR_EXCLUDING = LT_EXCLUDE

    IS_VARIANT = LS_VARI

    IS_LAYOUT = GS_LAYOUT

    I_SAVE = 'A'

    CHANGING

    IT_FIELDCATALOG = IT_FIELDCAT

    IT_OUTTAB = ITAB[].

    • Set editable cells to ready for input initially

    CALL METHOD G_GRID->SET_READY_FOR_INPUT

    EXPORTING

    I_READY_FOR_INPUT = 1.

    ENDFORM. "CREATE_AND_INIT_ALV

    *&----


    *

    *& Form EXCLUDE_TB_FUNCTIONS

    *&----


    *

    • text

    *----


    *

    • -->PT_EXCLUDE text

    *----


    *

    FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.

    • Only allow to change data not to create new entries (exclude

    • generic functions).

    DATA LS_EXCLUDE TYPE UI_FUNC.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.

    APPEND LS_EXCLUDE TO PT_EXCLUDE.

    ENDFORM. " EXCLUDE_TB_FUNCTIONS

    *&----


    *

    *& Form build_fieldcat

    *&----


    *

    • Fieldcatalog

    *----


    *

    FORM BUILD_FIELDCAT .

    DATA: L_POS TYPE I.

    L_POS = L_POS + 1.

    X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).

    X_FIELDCAT-FIELDNAME = 'VBELN'.

    X_FIELDCAT-TABNAME = 'IT_FINAL'.

    X_FIELDCAT-COL_POS = L_POS.

    X_FIELDCAT-NO_ZERO = 'X'.

    X_FIELDCAT-OUTPUTLEN = '10'.

    X_FIELDCAT-HOTSPOT = 'X'.

    APPEND X_FIELDCAT TO IT_FIELDCAT.

    CLEAR X_FIELDCAT.

    L_POS = L_POS + 1.

    X_FIELDCAT-SCRTEXT_M = 'Item'(025).

    X_FIELDCAT-FIELDNAME = 'POSNR'.

    X_FIELDCAT-TABNAME = 'IT_FINAL'.

    X_FIELDCAT-COL_POS = L_POS.

    X_FIELDCAT-OUTPUTLEN = '5'.

    APPEND X_FIELDCAT TO IT_FIELDCAT.

    CLEAR X_FIELDCAT.

    L_POS = L_POS + 1.

    X_FIELDCAT-SCRTEXT_M = 'Drop'(025).

    X_FIELDCAT-FIELDNAME = 'DROP'.

    X_FIELDCAT-TABNAME = 'IT_FINAL'.

    X_FIELDCAT-COL_POS = L_POS.

    X_FIELDCAT-OUTPUTLEN = '5'.

    X_FIELDCAT-EDIT = 'X'.

    X_FIELDCAT-DRDN_HNDL = '1'.

    X_FIELDCAT-DRDN_ALIAS = 'X'.

    APPEND X_FIELDCAT TO IT_FIELDCAT.

    CLEAR X_FIELDCAT.

    ENDFORM. " build_fieldcat

    *&----


    *

    *& Module STATUS_0100 OUTPUT

    *&----


    *

    • text

    *----


    *

    MODULE STATUS_0100 OUTPUT.

    SET PF-STATUS 'MAIN100'.

    SET TITLEBAR 'MAIN100'.

    IF G_CUSTOM_CONTAINER IS INITIAL.

    **Initializing the grid and calling the fm to Display the O/P

    PERFORM CREATE_AND_INIT_ALV.

    ENDIF.

    ENDMODULE. " STATUS_0100 OUTPUT

    *&----


    *

    *& Module USER_COMMAND_0100 INPUT

    *&----


    *

    • text

    *----


    *

    MODULE USER_COMMAND_0100 INPUT.

    CASE SY-UCOMM.

    WHEN 'BACK'.

    LEAVE TO SCREEN 0.

    ENDCASE.

    ENDMODULE. " USER_COMMAND_0100 INPUT

    *&----


    *

    *& Form SET_DRDN_TABLE

    *&----


    *

    • text

    *----


    *

    FORM SET_DRDN_TABLE.

    DATA:LT_DRAL TYPE LVC_T_DRAL,

    LS_DRAL TYPE LVC_S_DRAL.

    LOOP AT ITAB .

    • First listbox (handle '1').

    IF SY-INDEX = 1.

    LS_DRAL-HANDLE = '1'.

    LS_DRAL-VALUE = ' '.

    LS_DRAL-INT_VALUE = ' '.

    ELSE.

    LS_DRAL-HANDLE = '1'.

    LS_DRAL-VALUE = ITAB-POSNR.

    LS_DRAL-INT_VALUE = ITAB-POSNR.

    ENDIF.

    APPEND LS_DRAL TO LT_DRAL.

    ENDLOOP.

    **Setting the Drop down table for Reason Code

    CALL METHOD G_GRID->SET_DROP_DOWN_TABLE

    EXPORTING

    IT_DROP_DOWN_ALIAS = LT_DRAL.

    ENDFORM.

    ___________________________________________

    in Normal ALV..

    REPORT ZTESTALV.

    TYPE-POOLS: SLIS.

    INCLUDE 0.

    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    ENDIF.

    *&----


    *

    *& Form LIST_MODIFY_OUPUT

    *&----


    *

    • text

    *----


    *

    FORM LIST_MODIFY_OUPUT.

    DATA: L_VBELN LIKE VBAK-VBELN,

    L_POSNR LIKE VBAP-POSNR,

    l_index type sy-index.

    clear it_vbap.

    DO 20 TIMES.

    CLEAR: L_VBELN, L_POSNR.

    READ LINE SY-INDEX INDEX SY-LSIND

    FIELD VALUE IT_VBAP-VBELN INTO L_VBELN

    IT_VBAP-POSNR INTO L_POSNR .

    "3lines are reserved for alv headings , so i am reading it form 4th line

    "so 4th line is equal to 1st line of itab

    IF SY-SUBRC = 0 AND SY-INDEX GE 4.

    l_index = sy-index - 3.

    READ TABLE IT_VBAP INDEX l_index.

    IF SY-SUBRC = 0 AND IT_VBAP-FLAG = 'X'.

    *-Modifying current list

    MODIFY LINE SY-INDEX INDEX SY-LSIND

    FIELD FORMAT IT_VBAP-POSNR COLOR 6 INVERSE.

    MODIFY LINE SY-INDEX INDEX SY-LSIND

    FIELD FORMAT IT_VBAP-VBELN COLOR 6 INVERSE.

    ENDIF.

    ENDIF.

    ENDDO.

    ENDFORM. "LIST_MODIFY_OUPUT

    __________________________________________________________________

    An example of using linecolor (ALV).

    Here you have a good example of coloring rows, columns and specific cells in alvs. It comes in an example of how to use hashed tables.

    For coloured rows and cols check gp_bymat

    for coloured specific rows uncheck gp_bymat.

    HTH.

    Horacio

    ps: code:

    report zuseofhashedtables.

    ************************************************************************

    • Program: ZUseOfHashedTables **

    ************************************************************************

    • Author: Horacio Zapettini **

    • **

    • Versions: 4.6b - 4.6c **

    ************************************************************************

    • Notes: **

    • this program shows how we can use hashed tables to improve **

    • the responce time. **

    • It shows, **

    • 1. how to declare hashed tables **

    • 2. a cache-like technique to improve access to master data **

    • 3. how to collect data using hashed tables **

    • 4. how to avoid deletions of unwanted data **

    ************************************************************************

    • Results: the test we run read about 31000 rows from mkpf, 150000 **

    • rows from mseg, 500 rows from makt and 400 from lfa1. **

    • it filled ht_lst with 24500 rows and displayed them in **

    • alv grid format. **

    • **

    • It took about 65 secodns to perform this task (first time **

    • we run it when all the db buffers are empty. **

    • **

    • The same program with standard tables needed 140 seconds **

    • to run with the same recordset and with buffers filled in **

    • **

    • A simmilar test over more than a million rows

    ************************************************************************

    • Objetive: show a list that consists of all the material movements **

    • '101' - '901' for a certain range of dates in mkpf-budat. **

    • the columns to be displayed are: **

    • mkpf-budat, **

    • mkpf-mblnr, **

    • mseg-lifnr, **

    • lfa1-name1, **

    • mkpf-xblnr, **

    • mseg-zeile **

    • mseg-charg, **

    • mseg-matnr, **

    • makt-maktx, **

    • mseg-erfmg, **

    • mseg-erfme. **

    • or show a sumary list by matnr - menge **

    • **

    • You'll have to create a pf-status called vista - **

    • See form set_pf_status for details **

    ************************************************************************

    • tables used -

    tables: mkpf,

    mseg,

    lfa1,

    makt.

    • global hashed tables used

    *

    data: begin of wa_mkpf, "header

    mblnr like mkpf-mblnr,

    mjahr like mkpf-mjahr,

    budat like mkpf-budat,

    xblnr like mkpf-xblnr,

    end of wa_mkpf.

    data: ht_mkpf like hashed table of wa_mkpf

    with unique key mblnr mjahr

    with header line.

    data: st_mkpf like standard table of wa_mkpf

    with header line.

    *

    data: begin of wa_mseg, " line items

    mblnr like mseg-mblnr,

    mjahr like mseg-mjahr,

    zeile like mseg-zeile,

    bwart like mseg-bwart,

    charg like mseg-charg,

    matnr like mseg-matnr,

    lifnr like mseg-lifnr,

    erfmg like mseg-erfmg,

    erfme like mseg-erfme,

    end of wa_mseg.

    data ht_mseg like hashed table of wa_mseg

    with unique key mblnr mjahr zeile

    with header line.

    data st_mseg like standard table of wa_mseg

    with header line.

    • cache structure for lfa1 records

    data: begin of wa_lfa1,

    lifnr like lfa1-lifnr,

    name1 like lfa1-name1,

    end of wa_lfa1.

    data ht_lfa1 like hashed table of wa_lfa1

    with unique key lifnr

    with header line.

    • cache structure for material related data

    data: begin of wa_material,

    matnr like makt-matnr,

    maktx like makt-maktx,

    end of wa_material.

    data: ht_material like hashed table of wa_material

    with unique key matnr

    with header line.

    • result table

    data: begin of wa_lst, "

    budat like mkpf-budat,

    mblnr like mseg-mblnr,

    lifnr like mseg-lifnr,

    name1 like lfa1-name1,

    xblnr like mkpf-xblnr,

    zeile like mseg-zeile,

    charg like mseg-charg,

    matnr like mseg-matnr,

    maktx like makt-maktx,

    erfmg like mseg-erfmg,

    erfme like mseg-erfme,

    mjahr like mseg-mjahr,

    end of wa_lst.

    data: ht_lst like hashed table of wa_lst

    with unique key mblnr mjahr zeile

    with header line.

    data: begin of wa_lst1, " sumary by material

    matnr like mseg-matnr,

    maktx like makt-maktx,

    erfmg like mseg-erfmg,

    erfme like mseg-erfme,

    color_line(4) TYPE c, " Line color

    color_cell TYPE lvc_t_scol, " Cell color

    celltab type LVC_T_STYL,

    end of wa_lst1.

    data: ht_lst1 like hashed table of wa_lst1

    with unique key matnr

    with header line.

    • structures for alv grid display.

    • itabs

    type-pools: slis.

    data: it_lst like standard table of wa_lst with header line,

    it_fieldcat_lst type slis_t_fieldcat_alv with header line,

    it_sort_lst type slis_t_sortinfo_alv,

    it_lst1 like standard table of wa_lst1 with header line,

    it_fieldcat_lst1 type slis_t_fieldcat_alv with header line,

    it_sort_lst1 type slis_t_sortinfo_alv.

    • structures

    data: wa_sort type slis_sortinfo_alv,

    ls_layout type slis_layout_alv.

    • color management.

    DATA : wa_color TYPE lvc_s_scol.

    • Internal table for color management.

    DATA : it_color TYPE TABLE OF lvc_s_scol.

    • itab for input enabling.

    DATA: lt_celltab TYPE lvc_t_styl. "

    • global varialbes

    data: g_lines type i.

    data: g_repid like sy-repid,

    ok_code like sy-ucomm.

    • selection-screen

    "text: Dates:

    select-options: so_budat for mkpf-budat default sy-datum.

    "text: Material numbers.

    select-options: so_matnr for mseg-matnr.

    selection-screen uline.

    selection-screen skip 1.

    "Text: show summary by material.

    parameters: gp_bymat as checkbox default ''.

    parameters: gp_hier as checkbox default 'X'.

    start-of-selection.

    perform get_data.

    perform show_data.

    end-of-selection.

    *----


    *

    • FORM get_data *

    *----


    *

    • ........ *

    *----


    *

    form get_data.

    select mblnr mjahr budat xblnr

    into table ht_mkpf

    from mkpf

    where budat in so_budat. " make use of std index.

    • have we retrieved data from mkpf?

    describe table ht_mkpf lines g_lines.

    if g_lines > 0.

    • if true then retrieve all related records from mseg.

    • Doing this way we make sure that the access is by primary key

    • of mseg.

    • The reason is that is faster to filter them in memory

    • than to allow the db server to do it.

    select mblnr mjahr zeile bwart charg

    matnr lifnr erfmg erfme

    into table ht_mseg

    from mseg

    for all entries in ht_mkpf

    where mblnr = ht_mkpf-mblnr

    and mjahr = ht_mkpf-mjahr.

    endif.

    • fill t_lst or t_lst1 according to user's choice.

    if gp_bymat = ' '.

    perform fill_ht_lst.

    else.

    perform fill_ht_lst1.

    endif.

    endform.

    form fill_ht_lst.

    refresh ht_lst.

    • Example: how to discard unwanted data in an efficient way.

    loop at ht_mseg.

    • filter unwanted data

    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.

    check ht_mseg-matnr in so_matnr.

    • read header line.

    read table ht_mkpf with table key mblnr = ht_mseg-mblnr

    mjahr = ht_mseg-mjahr.

    clear ht_lst.

    • * note : this may be faster if you specify field by field.

    move-corresponding ht_mkpf to ht_lst.

    move-corresponding ht_mseg to ht_lst.

    perform read_lfa1 using ht_mseg-lifnr changing ht_lst-name1.

    perform read_material using ht_mseg-matnr changing ht_lst-maktx.

    insert table ht_lst.

    endloop.

    endform.

    form fill_ht_lst1.

    data: colorear.

    refresh ht_lst1.

    • Example: how to discard unwanted data in an efficient way.

    • hot to simulate a collect in a faster way

    loop at ht_mseg.

    • filter unwanted data

    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.

    check ht_mseg-matnr in so_matnr.

    • * note : this may be faster if you specify field by field.

    read table ht_lst1 with table key matnr = ht_mseg-matnr

    transporting erfmg.

    if sy-subrc <> 0. " if matnr doesn't exist in sumary table

    " insert a new record

    clear ht_lst1.

    ht_lst1-matnr = ht_mseg-matnr.

    perform read_material using ht_mseg-matnr changing ht_lst1-maktx.

    ht_lst1-erfmg = ht_mseg-erfmg.

    ht_lst1-erfme = ht_mseg-erfme.

    if colorear = ''.

    colorear = 'X'.

    refresh it_color.

    ht_lst1-color_cell[] = it_color[].

    MOVE 'C410' TO ht_lst1-color_line.

    else.

    colorear = ' '.

    refresh it_color. clear it_color.

    MOVE 'MATNR' TO wa_color-fname.

    MOVE '6' TO wa_color-color-col.

    MOVE '1' TO wa_color-color-int.

    MOVE '1' TO wa_color-color-inv.

    APPEND wa_color TO it_color.

    MOVE 'MAKTX' TO wa_color-fname.

    MOVE '3' TO wa_color-color-col.

    MOVE '1' TO wa_color-color-int.

    MOVE '1' TO wa_color-color-inv.

    APPEND wa_color TO it_color.

    MOVE 'ERFMG' TO wa_color-fname.

    MOVE '5' TO wa_color-color-col.

    MOVE '1' TO wa_color-color-int.

    MOVE '1' TO wa_color-color-inv.

    APPEND wa_color TO it_color.

    ht_lst1-color_cell[] = it_color[].

    clear ht_lst1-color_line.

    endif.

    insert table ht_lst1.

    else." a record was found.

    " collect erfmg. To do so, fill in the unique key and add

    " the numeric fields.

    ht_lst1-matnr = ht_mseg-matnr.

    add ht_mseg-erfmg to ht_lst1-erfmg.

    modify table ht_lst1 transporting erfmg.

    endif.

    endloop.

    endform.

    • implementation of cache for lfa1.

    form read_lfa1 using p_lifnr changing p_name1.

    read table ht_lfa1 with table key lifnr = p_lifnr

    transporting name1.

    if sy-subrc <> 0.

    clear ht_lfa1.

    ht_lfa1-lifnr = p_lifnr.

    select single name1

    into ht_lfa1-name1

    from lfa1

    where lifnr = p_lifnr.

    if sy-subrc <> 0. ht_lfa1-name1 = 'n/a in lfa1'. endif.

    insert table ht_lfa1.

    endif.

    p_name1 = ht_lfa1-name1.

    endform.

    • implementation of cache for material data

    form read_material using p_matnr changing p_maktx.

    read table ht_material with table key matnr = p_matnr

    transporting maktx.

    if sy-subrc <> 0.

    ht_material-matnr = p_matnr.

    select single maktx into ht_material-maktx

    from makt

    where spras = sy-langu

    and matnr = p_matnr.

    if sy-subrc <> 0. ht_material-maktx = 'n/a in makt'. endif.

    insert table ht_material.

    endif.

    p_maktx = ht_material-maktx.

    endform.

    form show_data.

    if gp_hier = 'X'. "no anda.

    • perform show_hierarchicalALV.

    else.

    if gp_bymat = ' '.

    perform show_ht_lst.

    else.

    perform show_ht_lst1.

    endif.

    endif.

    endform.

    form show_hierarchicalALV.

    st_mkpf[] = ht_mkpf[].

    st_mseg[] = ht_mseg[].

    call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

    • exporting

    • I_INTERFACE_CHECK = ' '

    • I_CALLBACK_PROGRAM =

    • I_CALLBACK_PF_STATUS_SET = ' '

    • I_CALLBACK_USER_COMMAND = ' '

    • IS_LAYOUT =

    • IT_FIELDCAT =

    • IT_EXCLUDING =

    • IT_SPECIAL_GROUPS =

    • IT_SORT =

    • IT_FILTER =

    • IS_SEL_HIDE =

    • I_SCREEN_START_COLUMN = 0

    • I_SCREEN_START_LINE = 0

    • I_SCREEN_END_COLUMN = 0

    • I_SCREEN_END_LINE = 0

    • I_DEFAULT = 'X'

    • I_SAVE = ' '

    • IS_VARIANT =

    • IT_EVENTS =

    • IT_EVENT_EXIT =

    • i_tabname_header =

    • i_tabname_item =

    • I_STRUCTURE_NAME_HEADER =

    • I_STRUCTURE_NAME_ITEM =

    • is_keyinfo =

    • IS_PRINT =

    • IS_REPREP_ID =

    • I_BUFFER_ACTIVE =

    • I_BYPASSING_BUFFER =

    • IMPORTING

    • E_EXIT_CAUSED_BY_CALLER =

    • ES_EXIT_CAUSED_BY_USER =

    tables

    t_outtab_header = st_mkpf

    t_outtab_item = st_mseg

    • EXCEPTIONS

    • PROGRAM_ERROR = 1

    • OTHERS = 2

    .

    if sy-subrc <> 0.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    endif.

    endform.

    form show_ht_lst.

    "needed because the FM can't use a hashed table.

    it_lst[] = ht_lst[].

    perform fill_layout using 'full display'

    changing ls_layout.

    perform fill_columns_lst.

    • perform sort_lst.

    g_repid = sy-repid.

    call function 'REUSE_ALV_GRID_DISPLAY'

    exporting

    i_callback_program = g_repid

    i_callback_pf_status_set = 'SET_PF_STATUS'

    is_layout = ls_layout

    it_fieldcat = it_fieldcat_lst[]

    • it_sort = it_sort_lst

    tables

    t_outtab = it_lst

    exceptions

    program_error = 1

    others = 2.

    endform.

    form show_ht_lst1.

    "needed because the FM can't use a hashed table.

    it_lst1[] = ht_lst1[].

    perform fill_layout using 'Sumary by matnr'

    changing ls_layout.

    perform fill_columns_lst1.

    • perform sort_lst.

    g_repid = sy-repid.

    call function 'REUSE_ALV_GRID_DISPLAY'

    exporting

    i_callback_program = g_repid

    i_callback_pf_status_set = 'SET_PF_STATUS'

    is_layout = ls_layout

    it_fieldcat = it_fieldcat_lst1[]

    • it_sort = it_sort_lst

    tables

    t_outtab = it_lst1

    exceptions

    program_error = 1

    others = 2.

    endform.

    form fill_layout using p_window_titlebar

    changing cs_layo type slis_layout_alv.

    clear cs_layo.

    cs_layo-window_titlebar = p_window_titlebar.

    cs_layo-edit = 'X'.

    cs_layo-edit_mode = space.

    MOVE 'COLOR_LINE' TO cs_layo-info_fieldname.

    • Field that identify cell color in inetrnal table

    MOVE 'COLOR_CELL' TO cs_layo-coltab_fieldname.

    • move 'CELLTAB' TO cs_layo-stylefname.

    endform. " armar_layout_stock

    form set_pf_status using rt_extab type slis_t_extab.

    • create a new status

    • and then select extras -> adjust template -> listviewer

    set pf-status 'VISTA'.

    endform. "set_pf_status

    define add_lst.

    clear it_fieldcat_lst.

    it_fieldcat_lst-fieldname = &1.

    it_fieldcat_lst-outputlen = &2.

    it_fieldcat_lst-ddictxt = 'L'.

    it_fieldcat_lst-seltext_l = &1.

    it_fieldcat_lst-seltext_m = &1.

    it_fieldcat_lst-seltext_m = &1.

    if &1 = 'MATNR'.

    it_fieldcat_lst-emphasize = 'C111'.

    endif.

    append it_fieldcat_lst.

    end-of-definition.

    define add_lst1.

    clear it_fieldcat_lst.

    it_fieldcat_lst1-fieldname = &1.

    it_fieldcat_lst1-outputlen = &2.

    it_fieldcat_lst1-ddictxt = 'L'.

    it_fieldcat_lst1-seltext_l = &1.

    it_fieldcat_lst1-seltext_m = &1.

    it_fieldcat_lst1-seltext_m = &1.

    append it_fieldcat_lst1.

    end-of-definition.

    form fill_columns_lst.

    • set columns for output.

    refresh it_fieldcat_lst.

    *

    add_lst 'BUDAT' 10.

    add_lst 'MBLNR' 10.

    add_lst 'LIFNR' 10.

    add_lst 'NAME1' 35.

    add_lst 'XBLNR' 15.

    add_lst 'ZEILE' 5.

    add_lst 'CHARG' 10.

    add_lst 'MATNR' 18.

    add_lst 'MAKTX' 30.

    add_lst 'ERFMG' 17.

    add_lst 'ERFME' 5.

    add_lst 'MJAHR' 4.

    endform.

    form fill_columns_lst1.

    • set columns for output.

    refresh it_fieldcat_lst1.

    add_lst1 'MATNR' 18.

    add_lst1 'MAKTX' 30.

    add_lst1 'ERFMG' 17.

    add_lst1 'ERFME' 5..

    endform.

    Horacio Zapettini

    -

    -


    Program to Calculate FI Opening Balance

    How to find the Opening balance for a given period in FI Module for a Particular GL A/c.

    I was calculated opening balance, code is below maybe it will be helpful.

    *find period.

    CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

    EXPORTING

    i_date = s_budat-low

    i_periv = i_tab-periv "'K4'

    IMPORTING

    e_buper = v_donem

    e_gjahr = v_gjahr

    EXCEPTIONS

    input_false = 1

    t009_notfound = 2

    t009b_notfound = 3

    OTHERS = 4.

    *calc opening balance hesabý

    SELECT * FROM knc1 WHERE kunnr = i_tab-kunnr

    AND bukrs = i_tab-bukrs " s_bukrs

    AND gjahr EQ v_gjahr.

    v_dnm = v_donem.

    • opening balance first calc > old year ,

    WHILE v_dnm > 1.

    v_dnm = v_dnm - 1.

    CONCATENATE 'knc1-um' v_dnm 's' INTO v_field_name_borc.

    CONCATENATE 'knc1-um' v_dnm 'h' INTO v_field_name_alacak.

    ASSIGN (v_field_name_borc) TO old

    • add days which is from selected date-low month

    IF v_donem > 1.

    v_dnm = v_donem - 1.

    ELSE.

    v_dnm = v_donem.

    ENDIF.

    SELECT SINGLE * FROM t009b WHERE periv = i_tab-periv "'K4'

    AND bdatj = s_budat-low+0(4)

    AND poper = v_dnm.

    t009b-butag = t009b-butag + 1.

    IF s_budat-low+6(2) NE t009b-butag.

    v_date_high = s_budat-low - 1.

    IF v_donem = 1.

    v_date_low = s_budat-low.

    v_date_low+4(4) = '0101'.

    ELSE.

    CONCATENATE t009b-bdatj t009b-bumon t009b-butag INTO

    v_date_low.

    ENDIF.

    SELECT * FROM bsad WHERE bukrs EQ i_tab-bukrs "IN s_bukrs

    AND kunnr = i_tab-kunnr

    AND budat BETWEEN v_date_low AND

    v_date_high

    AND umskz = space

    AND blart IN s_blart.

    IF bsad-shkzg = 'S'.

    i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsad-dmbtr ).

    ELSEIF bsad-shkzg = 'H'.

    i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsad-dmbtr ).

    ENDIF.

    ENDSELECT.

    SELECT * FROM bsid WHERE bukrs EQ i_tab-bukrs "IN s_bukrs

    AND kunnr = i_tab-kunnr

    AND budat BETWEEN v_date_low AND

    v_date_high

    AND umskz = space

    AND blart IN s_blart.

    • AND gsber IN gsber.

    IF bsid-shkzg = 'S'.

    i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsid-dmbtr ).

    ELSEIF bsid-shkzg = 'H'.

    i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsid-dmbtr ).

    ENDIF.

    ENDSELECT.

    ENDIF.

    "opening balance ( þirket bazlý )z1 degeri

    i_tab-z1 = i_tab-z1 + ( knc1-umsav + i_tab-dmbtr_s - i_tab-dmbtr_h ).

    • for israel

    i_tab-dmbtril_s = i_tab-dmbtr_s .

    i_tab-dmbtril_h = i_tab-dmbtr_h .

    ENDSELECT.

    ____________________________________________________________________

    check the below link

    Check this out

    http://www.sap-img.com/abap/line-color-in-alv-example.htm

    Check this sample program from

    pls: award points if it is useful

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.