Sap programlama dili abap ile alv yazmak? Sap ALV nasıl yazılır ? Abap ile alv ? howto write prgraming alv abap language for sap system.

Paylaş.

Merhabalar,

Sap sistemine özel programlama dili olan ABAP ile alv (ABAP LIST VIEWER) nasıl yazılıra bakacağız .

öncelikle abap nedir bakalım Dünya liderleri arsında yer alan sap sistemine üzerinde geliştirme yapmaya olanak sağlayan ABAP WROKBENCH programı üzerinde abap dili ile sap sisteminde sizi tatmin etmeyen geliştirmeleri (rapor, program, var olan bir programda değişiklik, sistem funsiyonuna eklenti yapmak, user exit, vs)  yapabilmenize olanak sağlayan bu dili kullanacağız.

seviye oalrak c diline syntax olarak biraz benzemektedir, mantik biraz farklıdır, native sql kullanılabilir. en çok sevdiğim özelliği ise Db ve table ayrıca connection string yazmamamızdır.

open source kaynaklı sap sistemi gnu gibi olmasada, sonuçta ticari bir yazılımdır ticari sahiibine yani lisans ücretini ödeyene open source dur diyebiliriz. Sistemdeki tüm standart uygulamaların kodları görünmetdir  bu kodlarda herhangi bi değişiklik yapılmamaktadır aslında yapılabilmektedir şöyleki,

sap sistemi geliştiricileri bazı yerleri açık bırakmıştır yani bazı functionlara ek geliştirmeler ülke değişiklikleri, şirket kültürüne uymayan standart modül geliştimelerini user exit denen erişim sağlanan kod function class larında yapabilirsiniz.

Şimdi ALV nedir? alv visual programlama icadı ile gelen Grid database deki bazı bilgileri izgara grid aslında burdna gelir bir düzen içinde excel deki gibi hücreler ile gösterimesini ve bazı yerlere tıklanarak action ile başka bir event tetikleme gibi işlemleri bize kolayca sağlayan güçlü bir bileşendir (componenttir) grid böyle iken aslında tablodan bazı filedlari veririz sql sorgusu ile o bize dinamik bir yapıda akıllıca oluşması gerkeen tüsün ve kayıt sayısı kadar satır oluşturur. işte grid budur ya alv.

Alv tam anlamıyla gridi sap programlama abap tarafında tamamlayan componet dir diye bilirz aslında

Bu almanlar çok milliyetçi olduklarında  kendileri kendi literatorlerini içat ederler kafa karıştırırlar  grid desen ne olurdu hans efendi diyorum ve almanları kendilerine havale ediyorum  🙂 yeri gelmiş ken söyliyeyim adamlar ters adam 🙂

ortada bir visual programlama olmadığından componet yoktur bu componentin class ve functionları vardır bu function ve classlar bize dinamik alv yi (yani giridi) oluşturmamıza yardımcı olacak edit,delete, actin hyper to link gibi event metodlarını yapmızda kolaylaştıracakdır.

işte size bir örnek  alv kodu :

                                  DESCRIPTION: ALV grid example - Using SAP
                                    Control Technology

                                    YOURCODE:
                                    *&---------------------------------------------------------------------*
                                    *& Report  ZTRPSD110                                                   *
                                    *&                                                                     *
                                    *&---------------------------------------------------------------------*
                                    * TITLE: Statement of Export Report for Tata Tetley                    *
                                    *                                                                      *
                                    * PURPOSE:Statement of Export Report for Tata Tetley                   *
                                    *                                                                      *
                                    *----------------------------------------------------------------------*
                                    * A. Start-of-selection:                                               *
                                    * 1. In get_billing_data using the selection screen parameters get the *
                                    *     billing data from billing header(VBAK) and Item (VBAP)           *
                                    * 2.  Get the SHIP-TO partner data from VBPA using Customer number as  *
                                    *     one condition and store in it_vbpa_sh
                                    * 9.  Popultae the ALV display table
                                    *
                                    * B. End-of-selection:
                                    *    Call screen 9000 and display data in ALV
                                    *----------------------------------------------------------------------*

                                    REPORT  ztrps110  MESSAGE-ID zttl  LINE-SIZE 130.

                                    TABLES: vbrk.

                                    * CONSTANTS
                                    CONSTANTS :
                                    c_x(1)        TYPE c VALUE 'X',
                                    c_zxto        TYPE vbak-auart VALUE 'ZXTO',
                                    c_e           TYPE spras VALUE 'E',
                                    c_000000      TYPE posnr VALUE '000000',
                                    c_ship_to     TYPE parvw VALUE 'WE'.      "Ship To Party

                                    * Table Types
                                    TYPES: BEGIN OF ty_vbrk_vbrp,
                                    vbeln TYPE vbrk-vbeln,    "Billing doc
                                    posnr TYPE vbrp-posnr,    "Billing item
                                    aubel TYPE vbrp-aubel,    "Sales order
                                    waerk TYPE vbrk-waerk,    "Doc currency
                                    mvgr1 TYPE vbrp-mvgr1,    "Material group 1
                                    mvgr3 TYPE vbrp-mvgr3,    "Material group 3
                                    mvgr4 TYPE vbrp-mvgr4,    "Material group 4
                                    matnr TYPE vbrp-matnr,    "Material no
                                    ntgew TYPE vbrp-ntgew,    "Net wt
                                    gewei TYPE vbrp-gewei,    "Wt unit
                                    kzwi1 TYPE vbrp-kzwi1,                             "Subtotal 1
                                    kursk TYPE vbrp-kursk,    "Exchange rate
                                    END   OF ty_vbrk_vbrp.

                                    TYPES: BEGIN OF ty_data,
                                    land1 TYPE vbpa-land1,
                                    landx TYPE t005t-landx,
                                    mvgr3 TYPE vbrp-mvgr3,
                                    mvgr4 TYPE vbrp-mvgr4,
                                    bezei3 TYPE tvm3t-bezei,
                                    bezei4 TYPE tvm4t-bezei,
                                    ntgew_tea_bag TYPE vbrp-ntgew,
                                    ntgew_pkt_tea TYPE vbrp-ntgew,
                                    ntgew_bulk_tea TYPE vbrp-ntgew,
                                    kzwi1_tea_bag TYPE vbrp-kzwi1,    "Subtotal 1 Tea Bag
                                    kzwi1_pkt_tea TYPE vbrp-kzwi1,    "Subtotal 1 Pkt Tea
                                    kzwi1_bulk_tea TYPE vbrp-kzwi1,   "Subtotal 1 Bulk Tea
                                    ntgew_tot TYPE vbrp-ntgew,
                                    kzwi1_tot TYPE vbrp-kzwi1,
                                    line_color(4) TYPE c,  "For line color

                                    END OF ty_data.

                                    TYPES: BEGIN OF ty_vbpa,
                                    vbeln TYPE vbpa-vbeln,
                                    land1 TYPE vbpa-land1,
                                    END OF ty_vbpa.
                                    TYPES: BEGIN OF ty_t005t,
                                    land1 TYPE t005t-land1,
                                    landx TYPE t005t-landx,
                                    END OF ty_t005t.

                                    TYPES: BEGIN OF ty_tvm3t,
                                    mvgr3 TYPE tvm3-mvgr3,
                                    bezei TYPE tvm3t-bezei,
                                    END OF ty_tvm3t.

                                    TYPES: BEGIN OF ty_tvm4t,
                                    mvgr4 TYPE tvm4-mvgr4,
                                    bezei TYPE tvm4t-bezei,
                                    END OF ty_tvm4t.

                                    DATA: it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp,
                                    wa_vbrk_vbrp TYPE ty_vbrk_vbrp,

                                    it_vbpa TYPE STANDARD TABLE OF ty_vbpa,
                                    wa_vbpa TYPE ty_vbpa,

                                    it_data TYPE STANDARD TABLE OF ty_data,
                                    wa_data TYPE ty_data,

                                    it_t005t TYPE STANDARD TABLE OF ty_t005t,
                                    wa_t005t TYPE ty_t005t,

                                    it_tvm3t TYPE STANDARD TABLE OF ty_tvm3t,
                                    wa_tvm3t TYPE ty_tvm3t,

                                    it_tvm4t TYPE STANDARD TABLE OF ty_tvm4t,
                                    wa_tvm4t TYPE ty_tvm4t.

                                    * Global data for grand total

                                    DATA:
                                    w_tot_ntgew_tea_bag TYPE vbrp-ntgew,
                                    w_tot_ntgew_pkt_tea TYPE vbrp-ntgew,
                                    w_tot_ntgew_bulk_tea TYPE vbrp-ntgew,
                                    w_tot_ntgew_tot TYPE vbrp-ntgew,
                                    w_tot_kzwi1_tea_bag TYPE vbrp-kzwi1,
                                    w_tot_kzwi1_pkt_tea TYPE vbrp-kzwi1,
                                    w_tot_kzwi1_bulk_tea TYPE vbrp-kzwi1,
                                    w_tot_kzwi1_tot TYPE vbrp-kzwi1.

                                    * Global data definitions for ALV
                                    DATA :
                                    * ALV Grid container
                                    w_alv_container TYPE REF TO cl_gui_custom_container,

                                    * ALV Grid
                                    w_alv_grid      TYPE REF TO cl_gui_alv_grid,
                                    w_layo          TYPE        lvc_s_layo,     "For layout
                                    wt_fieldcat     TYPE        lvc_t_fcat,     "For field catalog
                                    okcode          TYPE         okcode,        "OK Code
                                    w_to(2)         TYPE         c,
                                    w_title         TYPE        string.

                                    *-------------- START OF SELECTION SCREEN ----------------------------*
                                    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
                                    * Billing Date
                                    SELECT-OPTIONS: s_fkdat FOR vbrk-fkdat MEMORY ID vf OBLIGATORY NO-EXTENSION.
                                    SELECTION-SCREEN:SKIP 1.
                                    SELECTION-SCREEN: END OF BLOCK b1.

                                    *-------------- END OF SELECTION SCREEN ------------------------------*

                                    *-------------   EVENT START-OF-SELECTION  -------------------------------*
                                    START-OF-SELECTION.

                                    * Get billing data from Delivery header(VBRK) and item (VBRP)
                                    PERFORM get_billing_data.

                                    * Get ship-to country
                                    PERFORM get_ship_to_data.

                                    * Get material group description 3
                                    PERFORM get_material_group_3.

                                    * Get material group description 4
                                    PERFORM get_material_group_4.

                                    * Form the ALV Grid title
                                    PERFORM form_title.

                                    * Process data
                                    PERFORM process_data.

                                    * Populate text descriptions
                                    PERFORM populate_description.

                                    *-------------   EVENT END-OF-SELECTION  -------------------------------*
                                    END-OF-SELECTION.
                                    * Set the text to when date high is there
                                    IF NOT s_fkdat-high IS INITIAL.
                                    w_to = 'to'(c16).
                                    ENDIF.

                                    * Call the scren 9000 for ALV Display
                                    CALL SCREEN 9000.

                                    *&---------------------------------------------------------------------*
                                    *&      Form  get_billing_data
                                    *&---------------------------------------------------------------------*
                                    * Get billing data from Delivery header(VBRK) and item (VBRP)
                                    * & store in internal table it_vbrk_vbrp
                                    *----------------------------------------------------------------------*
                                    FORM get_billing_data .

                                    REFRESH: it_vbrk_vbrp.

                                    * Select Billing data by joining VBRK & VBRP and store in it_vbrk_vbrp
                                    SELECT a~vbeln
                                    b~posnr
                                    b~aubel
                                    a~waerk
                                    b~mvgr1
                                    b~mvgr3
                                    b~mvgr4
                                    b~matnr
                                    b~ntgew
                                    b~gewei
                                    b~kzwi1
                                    b~kursk
                                    FROM vbrk AS a INNER JOIN vbrp AS b
                                    ON a~vbeln = b~vbeln
                                    INTO TABLE it_vbrk_vbrp
                                    WHERE a~fkdat IN s_fkdat
                                    * Consider only non-deleted document
                                    AND fksto = space
                                    * Billing doc type should be ZXTB
                                    AND fkart = 'ZXTB'

                                    AND pstyv = c_zxto.

                                    IF sy-subrc <> 0.
                                    MESSAGE i999(zttl) WITH 'No data is there'(m06).
                                    LEAVE LIST-PROCESSING.
                                    ENDIF.
                                    ENDFORM.                    " get_billing_data
                                    *&---------------------------------------------------------------------*
                                    *&      Form  get_ship_to_data
                                    *&---------------------------------------------------------------------*
                                    * Get Ship-To party data
                                    *----------------------------------------------------------------------*
                                    FORM get_ship_to_data .

                                    DATA: l_it_vbpa TYPE STANDARD TABLE OF ty_vbpa.
                                    REFRESH: it_vbpa, it_t005t.

                                    IF NOT it_vbrk_vbrp[] IS INITIAL.
                                    SELECT vbeln
                                    land1
                                    FROM vbpa
                                    INTO TABLE it_vbpa
                                    FOR ALL ENTRIES IN it_vbrk_vbrp
                                    WHERE vbeln = it_vbrk_vbrp-aubel
                                    AND posnr = c_000000
                                    AND parvw = c_ship_to.

                                    IF sy-subrc <> 0.
                                    MESSAGE i999(zttl) WITH 'Exporter country not maintained'(m02).
                                    LEAVE LIST-PROCESSING.
                                    ELSE.
                                    SORT it_vbpa BY vbeln.
                                    * Create an unique and sorted driver table
                                    l_it_vbpa[] = it_vbpa[].
                                    SORT l_it_vbpa BY land1.
                                    DELETE ADJACENT DUPLICATES FROM l_it_vbpa COMPARING land1.

                                    IF NOT l_it_vbpa[] IS INITIAL.
                                    * Get the country description from T005t table
                                    SELECT land1
                                    landx
                                    FROM t005t
                                    INTO TABLE it_t005t
                                    FOR ALL ENTRIES IN l_it_vbpa
                                    WHERE spras = c_e
                                    AND  land1 = l_it_vbpa-land1.
                                    IF sy-subrc = 0.
                                    SORT it_t005t BY land1.
                                    ENDIF.
                                    ENDIF.
                                    ENDIF.

                                    ENDIF.
                                    ENDFORM.                    " get_ship_to_data

                                    *&---------------------------------------------------------------------*
                                    *&      Form  get_material_group_3
                                    *&---------------------------------------------------------------------*
                                    * Get material group 3
                                    *----------------------------------------------------------------------*
                                    FORM get_material_group_3 .

                                    DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.

                                    REFRESH: it_tvm3t.

                                    * Create an unique and sorted driver table
                                    l_it_vbrk_vbrp[] = it_vbrk_vbrp[].
                                    SORT l_it_vbrk_vbrp BY mvgr3.
                                    DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr3.
                                    IF NOT l_it_vbrk_vbrp[] IS INITIAL.
                                    SELECT mvgr3
                                    bezei
                                    FROM tvm3t
                                    INTO TABLE it_tvm3t
                                    FOR ALL ENTRIES IN l_it_vbrk_vbrp
                                    WHERE mvgr3 = l_it_vbrk_vbrp-mvgr3.

                                    IF sy-subrc = 0.
                                    SORT it_tvm3t BY mvgr3.
                                    ENDIF.
                                    ENDIF.

                                    ENDFORM.                    " get_material_group_3

                                    *&---------------------------------------------------------------------*
                                    *&      Form  get_material_group_4
                                    *&---------------------------------------------------------------------*
                                    * Get material group 4
                                    *----------------------------------------------------------------------*
                                    FORM get_material_group_4 .
                                    DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.

                                    REFRESH: it_tvm4t.

                                    * Create an unique and sorted driver table
                                    l_it_vbrk_vbrp[] = it_vbrk_vbrp[].
                                    SORT l_it_vbrk_vbrp BY mvgr4.
                                    DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr4.
                                    IF NOT l_it_vbrk_vbrp[] IS INITIAL.
                                    SELECT mvgr4
                                    bezei
                                    FROM tvm4t
                                    INTO TABLE it_tvm4t
                                    FOR ALL ENTRIES IN l_it_vbrk_vbrp
                                    WHERE mvgr4 = l_it_vbrk_vbrp-mvgr4.
                                    IF sy-subrc = 0.
                                    SORT it_tvm4t BY mvgr4.
                                    ENDIF.
                                    ENDIF.

                                    ENDFORM.                    " get_material_group_4

                                    *&---------------------------------------------------------------------*
                                    *&      Form  process_data
                                    *&---------------------------------------------------------------------*
                                    * Process the data and do summation and populate final display table
                                    *----------------------------------------------------------------------*
                                    FORM process_data .

                                    LOOP AT it_vbrk_vbrp INTO wa_vbrk_vbrp.
                                    CLEAR: wa_data, wa_vbpa.
                                    READ TABLE it_vbpa INTO wa_vbpa WITH KEY
                                    vbeln = wa_vbrk_vbrp-aubel
                                    BINARY SEARCH.
                                    IF sy-subrc = 0.
                                    wa_data-land1 = wa_vbpa-land1.
                                    ENDIF.

                                    wa_data-mvgr3 = wa_vbrk_vbrp-mvgr3.
                                    wa_data-mvgr4 = wa_vbrk_vbrp-mvgr4.

                                    * Do an unit conversion of the quamtity
                                    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                                    EXPORTING
                                    input                      = wa_vbrk_vbrp-ntgew
                                    *      NO_TYPE_CHECK              = 'X'
                                    *      ROUND_SIGN                 = ' '
                                    unit_in                    = wa_vbrk_vbrp-gewei
                                    unit_out                   = 'TO' "Metric tonn
                                    IMPORTING
                                    output                     = wa_vbrk_vbrp-ntgew
                                    EXCEPTIONS
                                    conversion_not_found       = 1
                                    division_by_zero           = 2
                                    input_invalid              = 3
                                    output_invalid             = 4
                                    overflow                   = 5
                                    type_invalid               = 6
                                    units_missing              = 7
                                    unit_in_not_found          = 8
                                    unit_out_not_found         = 9
                                    OTHERS                     = 10.
                                    IF sy-subrc <> 0.
                                    wa_vbrk_vbrp-ntgew = wa_vbrk_vbrp-ntgew.
                                    ENDIF.

                                    * Convert the currency from Customer currency to local
                                    * currency by multiplying with kursk
                                    wa_vbrk_vbrp-kzwi1 =  wa_vbrk_vbrp-kzwi1 * wa_vbrk_vbrp-kursk.

                                    * Convert the amount to Lacks by dividing with 100000
                                    wa_vbrk_vbrp-kzwi1 = wa_vbrk_vbrp-kzwi1 / 100000.       "DV1K905028

                                    * When MVGR1 is between A to F use the amount as TEA_BAG
                                    IF wa_vbrk_vbrp-mvgr1 BETWEEN 'A' AND 'F'.
                                    wa_data-ntgew_tea_bag = wa_vbrk_vbrp-ntgew.
                                    wa_data-kzwi1_tea_bag = wa_vbrk_vbrp-kzwi1.
                                    ENDIF.

                                    * When MVGR1 is between G to L use the amount as TEA_BAG
                                    IF wa_vbrk_vbrp-mvgr1 BETWEEN 'G' AND 'L'.
                                    wa_data-ntgew_pkt_tea = wa_vbrk_vbrp-ntgew.
                                    wa_data-kzwi1_pkt_tea = wa_vbrk_vbrp-kzwi1.
                                    ENDIF.

                                    * When MVGR1 is between G to L use the amount as TEA_BAG
                                    IF wa_vbrk_vbrp-mvgr1 = 'M'.
                                    wa_data-ntgew_bulk_tea = wa_vbrk_vbrp-ntgew.
                                    wa_data-kzwi1_bulk_tea = wa_vbrk_vbrp-kzwi1.
                                    ENDIF.

                                    COLLECT wa_data INTO it_data.
                                    ENDLOOP.
                                    ENDFORM.                    " process_data

                                    *&---------------------------------------------------------------------*
                                    *&      Form  populate_description
                                    *&---------------------------------------------------------------------*
                                    * Populate the description fields
                                    *----------------------------------------------------------------------*
                                    FORM populate_description .

                                    LOOP AT it_data INTO wa_data.
                                    CLEAR: wa_t005t.
                                    READ TABLE it_t005t INTO wa_t005t WITH KEY land1 = wa_data-land1
                                    BINARY SEARCH.
                                    IF sy-subrc = 0.
                                    wa_data-landx = wa_t005t-landx.
                                    ENDIF.

                                    * Read description of Material group 3
                                    CLEAR wa_tvm3t.
                                    READ TABLE it_tvm3t INTO wa_tvm3t WITH KEY
                                                                  mvgr3 = wa_data-mvgr3
                                                                  BINARY SEARCH.
                                         IF sy-subrc = 0.
                                           wa_data-bezei3 = wa_tvm3t-bezei.
                                         ENDIF.

                                    * Read description of Material group 4
                                         CLEAR wa_tvm4t.
                                         READ TABLE it_tvm4t INTO wa_tvm4t WITH KEY
                                                                  mvgr4 = wa_data-mvgr4
                                                                  BINARY SEARCH.
                                         IF sy-subrc = 0.
                                           wa_data-bezei4 = wa_tvm4t-bezei.
                                         ENDIF.

                                    * Get the grand totals
                                         wa_data-ntgew_tot = wa_data-ntgew_tea_bag
                                                  + wa_data-ntgew_pkt_tea
                                                  + wa_data-ntgew_bulk_tea.

                                         wa_data-kzwi1_tot = wa_data-kzwi1_tea_bag
                                                  + wa_data-kzwi1_pkt_tea
                                                  + wa_data-kzwi1_bulk_tea.

                                         MODIFY it_data FROM wa_data TRANSPORTING landx
                                                                                  bezei3
                                                                                  bezei4
                                                                                  ntgew_tot
                                                                                  kzwi1_tot.
                                    * Summattion of grand totals
                                         w_tot_ntgew_tea_bag  = w_tot_ntgew_tea_bag  + wa_data-ntgew_tea_bag.
                                         w_tot_ntgew_pkt_tea  = w_tot_ntgew_pkt_tea  + wa_data-ntgew_pkt_tea.
                                         w_tot_ntgew_bulk_tea  = w_tot_ntgew_bulk_tea  + wa_data-ntgew_bulk_tea.
                                         w_tot_ntgew_tot  = w_tot_ntgew_tot  + wa_data-ntgew_tot.

                                         w_tot_kzwi1_tea_bag  = w_tot_kzwi1_tea_bag  + wa_data-kzwi1_tea_bag.
                                         w_tot_kzwi1_pkt_tea  = w_tot_kzwi1_pkt_tea  + wa_data-kzwi1_pkt_tea.
                                         w_tot_kzwi1_bulk_tea  = w_tot_kzwi1_bulk_tea  + wa_data-kzwi1_bulk_tea.
                                         w_tot_kzwi1_tot  = w_tot_kzwi1_tot  + wa_data-kzwi1_tot.

                                       ENDLOOP.

                                    * Append a grand Total row at the end
                                       CLEAR wa_data.
                                       wa_data-landx = 'Grand Total:'.
                                       wa_data-ntgew_tea_bag = w_tot_ntgew_tea_bag.
                                       wa_data-ntgew_pkt_tea = w_tot_ntgew_pkt_tea.
                                       wa_data-ntgew_bulk_tea = w_tot_ntgew_bulk_tea.
                                       wa_data-ntgew_tot = w_tot_ntgew_tot.
                                       wa_data-kzwi1_tea_bag = w_tot_kzwi1_tea_bag.
                                       wa_data-kzwi1_pkt_tea = w_tot_kzwi1_pkt_tea.
                                       wa_data-kzwi1_bulk_tea = w_tot_kzwi1_bulk_tea.
                                       wa_data-kzwi1_tot = w_tot_kzwi1_tot.
                                       wa_data-line_color    = 'C310'.

                                       APPEND wa_data TO it_data.
                                    ENDFORM.                    " populate_description

                                    *&---------------------------------------------------------------------*
                                    *&      Module  STATUS_9000  OUTPUT
                                    *&---------------------------------------------------------------------*
                                    * Initialise PF-STATUS and title
                                    *----------------------------------------------------------------------*
                                    MODULE status_9000 OUTPUT.
                                       SET PF-STATUS 'MAIN9000'.
                                       SET TITLEBAR 'TITLE_9000'.
                                    ENDMODULE.                 " STATUS_9000  OUTPUT

                                    *&---------------------------------------------------------------------*
                                    *&      Module  initialize_9000  OUTPUT
                                    *&---------------------------------------------------------------------*
                                    *       text
                                    *----------------------------------------------------------------------*
                                    MODULE initialize_9000 OUTPUT.
                                    * Call the ALV grid to display data
                                       PERFORM display_alv_grid.

                                    ENDMODULE.                 " initialize_9000  OUTPUT
                                    *&---------------------------------------------------------------------*
                                    *&      Module  USER_COMMAND_9000  INPUT
                                    *&---------------------------------------------------------------------*
                                    * Module to handle User Command
                                    *----------------------------------------------------------------------*
                                    MODULE user_command_9000 INPUT.
                                       CASE okcode.
                                         WHEN 'BACK'.
                                           SET SCREEN 0.
                                           CLEAR okcode.
                                           LEAVE SCREEN.
                                         WHEN 'CANCEL'.
                                           SET SCREEN 0.
                                           CLEAR okcode.
                                           LEAVE SCREEN.
                                         WHEN 'EXIT'.
                                           CLEAR okcode.
                                           LEAVE PROGRAM.
                                         WHEN OTHERS.
                                       ENDCASE.
                                    ENDMODULE.                 " USER_COMMAND_9000  INPUT
                                    *&---------------------------------------------------------------------*
                                    *&      Form  display_alv_grid
                                    *&---------------------------------------------------------------------*
                                    * Display the data in ALV Grid
                                    *----------------------------------------------------------------------*
                                    FORM display_alv_grid .
                                       IF w_alv_container IS INITIAL.

                                    * Create the alv container object
                                         CREATE OBJECT w_alv_container
                                           EXPORTING
                                             container_name = 'ALV_GRID'
                                           EXCEPTIONS
                                               cntl_error                  = 1
                                               cntl_system_error           = 2
                                               create_error                = 3
                                               lifetime_error              = 4
                                               lifetime_dynpro_dynpro_link = 5
                                               OTHERS                      = 6.
                                         IF sy-subrc <> 0.
                                           MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).
                                         ENDIF.

                                    * Create the ALV grid object. The parent is the ALV container
                                         CREATE OBJECT w_alv_grid
                                           EXPORTING
                                             i_parent = w_alv_container
                                           EXCEPTIONS
                                             error_cntl_create = 1
                                             error_cntl_init   = 2
                                             error_cntl_link   = 3
                                             error_dp_create   = 4
                                             OTHERS            = 5.

                                         IF sy-subrc <> 0.
                                           MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).
                                         ENDIF.

                                    * This subrotine creates the field catalog and
                                    * store in internal table lt_fieldcat
                                         PERFORM prepare_fieldcat CHANGING wt_fieldcat.

                                    * Layout design
                                         w_layo-no_toolbar = ''.

                                    * Not to allow totaling feature
                                         w_layo-no_totline = c_x.

                                    * Report title
                                    *    w_layo-grid_title = text-004.
                                         w_layo-grid_title = w_title.

                                         w_layo-zebra      = c_x.    "Alternating line color (striped)
                                         w_layo-cwidth_opt = c_x.    "Optimize column width
                                         w_layo-sel_mode   = 'A'.    "Selection Mode

                                    * Name of the color field
                                         w_layo-info_fname = 'LINE_COLOR'."For row color

                                    * Call the method to display the data in ALV grid
                                         CALL METHOD w_alv_grid->set_table_for_first_display
                                           EXPORTING
                                             i_save                        = 'A'
                                             is_layout                     = w_layo
                                           CHANGING
                                             it_outtab                     = it_data[]
                                             it_fieldcatalog               = wt_fieldcat
                                           EXCEPTIONS
                                             invalid_parameter_combination = 1
                                             program_error                 = 2
                                             too_many_lines                = 3
                                             OTHERS                        = 4.

                                         IF sy-subrc <> 0.
                                           MESSAGE e999(zttl) WITH text-t04.
                                         ENDIF.
                                       ELSE.
                                    * If the container & grid object is alreadt there reuse them
                                         CALL METHOD w_alv_grid->refresh_table_display
                                           EXCEPTIONS
                                             finished = 1
                                             OTHERS   = 2.
                                         IF sy-subrc <> 0.
                                           MESSAGE e999(zttl) WITH text-t04.
                                         ENDIF.

                                       ENDIF.

                                       IF okcode = 'CANCEL'.
                                         EXIT.
                                       ENDIF.

                                    ENDFORM.                    " display_alv_grid
                                    *&---------------------------------------------------------------------*
                                    *&      Form  prepare_fieldcat
                                    *&---------------------------------------------------------------------*
                                    * Prepare the list of fields to be displayed                          *
                                    *----------------------------------------------------------------------*
                                    *      <--P_WT_FIELDCAT  text
                                    *----------------------------------------------------------------------*
                                    FORM prepare_fieldcat  CHANGING pt_fieldcat TYPE lvc_t_fcat.

                                       DATA : lx_fcat TYPE lvc_s_fcat.

                                       REFRESH: pt_fieldcat.
                                    **List of fields to be displayed should be added in pt_fieldcat

                                    * Customer PO no
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'LANDX'.
                                       lx_fcat-ref_field = 'T005T'.
                                       lx_fcat-ref_table = 'T005T'.
                                       lx_fcat-coltext = 'Market Name'(c01).
                                       lx_fcat-seltext = text-c01.

                                       APPEND lx_fcat TO pt_fieldcat.

                                    * Flavour type
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'BEZEI3'.
                                       lx_fcat-ref_field = 'BEZEI'.
                                       lx_fcat-ref_table = 'TVM3'.
                                       lx_fcat-coltext = 'Flavour Type'(c02).
                                       lx_fcat-seltext = text-c02.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    * Tea type
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'BEZEI4'.
                                       lx_fcat-ref_field = 'BEZEI4'.
                                       lx_fcat-ref_table = 'TVM4'.
                                       lx_fcat-coltext = 'Tea Type.'(c03).
                                       lx_fcat-seltext = text-c03.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    * Tea Bag Quantity in KG
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'NTGEW_TEA_BAG'.
                                       lx_fcat-ref_field = 'NTGEW'.
                                       lx_fcat-ref_table = 'VBRP'.
                                       lx_fcat-coltext = 'Tea Bag(MT)'(c04).
                                       lx_fcat-seltext = text-c04.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    * PKT Tea  Quantity in KG
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'NTGEW_PKT_TEA'.
                                       lx_fcat-ref_field = 'NTGEW'.
                                       lx_fcat-ref_table = 'VBRP'.
                                       lx_fcat-coltext = 'PKT Tea(MT)'(c05).
                                       lx_fcat-seltext = text-c05.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    * Bulk Tea  Quantity in MT
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'NTGEW_BULK_TEA'.
                                       lx_fcat-ref_field = 'NTGEW'.
                                       lx_fcat-ref_table = 'VBRP'.
                                       lx_fcat-coltext = 'Bulk Tea(MT)'(c06).
                                       lx_fcat-seltext = text-c06.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    * Total Quantity in MT
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'NTGEW_TOT'.
                                       lx_fcat-ref_field = 'NTGEW'.
                                       lx_fcat-ref_table = 'VBRP'.
                                       lx_fcat-coltext = 'Total(MT)'(c07).
                                       lx_fcat-seltext = text-c07.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    * Tea Bag Quantity in KG
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'KZWI1_TEA_BAG'.
                                       lx_fcat-ref_field = 'KZWI1'.
                                       lx_fcat-ref_table = 'VBRP'.
                                       lx_fcat-coltext = 'Tea Bag(FOB-Lacs)'(c08).
                                       lx_fcat-seltext = text-c08.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    * PKT Tea  Price in Lakh
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'KZWI1_PKT_TEA'.
                                       lx_fcat-ref_field = 'KZWI1'.
                                       lx_fcat-ref_table = 'VBRP'.
                                       lx_fcat-coltext = 'PKT Tea(FOB-Lacs)'(c09).
                                       lx_fcat-seltext = text-c09.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    * PKT Tea  Quantity in KG
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'KZWI1_BULK_TEA'.
                                       lx_fcat-ref_field = 'KZWI1'.
                                       lx_fcat-ref_table = 'VBRP'.
                                       lx_fcat-coltext = 'Bulk Tea(FOB-Lacs)'(c10).
                                       lx_fcat-seltext = text-c10.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    * Total amount
                                       CLEAR lx_fcat.
                                       lx_fcat-fieldname = 'KZWI1_TOT'.
                                       lx_fcat-ref_field = 'KZWI1'.
                                       lx_fcat-ref_table = 'VBRP'.
                                       lx_fcat-coltext = 'Total(FOB-Lacs)'(c11).
                                       lx_fcat-seltext = text-c11.
                                       APPEND lx_fcat TO pt_fieldcat.

                                    ENDFORM.                    " prepare_fieldcat
                                    *&---------------------------------------------------------------------*
                                    *&      Form  form_title
                                    *&---------------------------------------------------------------------*
                                    *  Form the ALV Title
                                    *----------------------------------------------------------------------*
                                    FORM form_title .

                                       DATA: l_date(10) TYPE c.

                                       CONCATENATE s_fkdat-low+6(2)  s_fkdat-low+4(2)  s_fkdat-low(4)
                                       INTO l_date SEPARATED BY '/'.

                                       CONCATENATE 'TTD - Statement of Export' '-From' l_date INTO
                                    w_title SEPARATED BY space.

                                       CLEAR l_date.
                                       IF NOT s_fkdat-high IS INITIAL.
                                         CONCATENATE s_fkdat-high+6(2)  s_fkdat-high+4(2)  s_fkdat-high(4)
                                         INTO l_date SEPARATED BY '/'.
                                         CONCATENATE w_title 'to' l_date INTO w_title SEPARATED BY space.

                                       ENDIF.
                                    ENDFORM.                    " form_title

 

 

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)