{"id":1380,"date":"2011-09-18T20:41:43","date_gmt":"2011-09-18T18:41:43","guid":{"rendered":"http:\/\/www.karadere.com\/blog\/?p=1380"},"modified":"2011-09-18T20:41:43","modified_gmt":"2011-09-18T18:41:43","slug":"sap-programlama-dili-abap-ile-alv-yazmak-sap-alv-nasil-yazilir-abap-ile-alv-howto-write-prgraming-alv-abap-language-for-sap-system","status":"publish","type":"post","link":"https:\/\/www.karadere.com\/blog\/sap-programlama-dili-abap-ile-alv-yazmak-sap-alv-nasil-yazilir-abap-ile-alv-howto-write-prgraming-alv-abap-language-for-sap-system.html","title":{"rendered":"Sap programlama dili abap ile alv yazmak? Sap ALV nas\u0131l yaz\u0131l\u0131r ? Abap ile alv ? howto write prgraming alv abap language for sap system."},"content":{"rendered":"<p>Merhabalar,<a href=\"http:\/\/www.karadere.com\/blog\/uploads\/\/2010\/02\/sap-abap-logo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-309\" title=\"sap-abap-logo\" src=\"http:\/\/www.karadere.com\/blog\/uploads\/\/2010\/02\/sap-abap-logo.png\" alt=\"\" width=\"230\" height=\"121\" \/><\/a><\/p>\n<p>Sap sistemine \u00f6zel programlama dili olan ABAP ile alv (ABAP LIST VIEWER) nas\u0131l yaz\u0131l\u0131ra bakaca\u011f\u0131z .<\/p>\n<p>\u00f6ncelikle abap nedir bakal\u0131m D\u00fcnya liderleri ars\u0131nda yer alan sap sistemine \u00fczerinde geli\u015ftirme yapmaya olanak sa\u011flayan ABAP WROKBENCH program\u0131 \u00fczerinde abap dili ile sap sisteminde sizi tatmin etmeyen geli\u015ftirmeleri (rapor, program, var olan bir programda de\u011fi\u015fiklik, sistem funsiyonuna eklenti yapmak, user exit, vs) \u00a0yapabilmenize olanak sa\u011flayan bu dili kullanaca\u011f\u0131z.<\/p>\n<p>seviye oalrak c diline syntax olarak biraz benzemektedir, mantik biraz farkl\u0131d\u0131r, native sql kullan\u0131labilir. en \u00e7ok sevdi\u011fim \u00f6zelli\u011fi ise Db ve table ayr\u0131ca connection string yazmamam\u0131zd\u0131r.<\/p>\n<p>open source kaynakl\u0131 sap sistemi gnu gibi olmasada, sonu\u00e7ta ticari bir yaz\u0131l\u0131md\u0131r ticari sahiibine yani lisans \u00fccretini \u00f6deyene open source dur diyebiliriz. Sistemdeki t\u00fcm standart uygulamalar\u0131n kodlar\u0131 g\u00f6r\u00fcnmetdir \u00a0bu kodlarda herhangi bi de\u011fi\u015fiklik yap\u0131lmamaktad\u0131r asl\u0131nda yap\u0131labilmektedir \u015f\u00f6yleki,<\/p>\n<p>sap sistemi geli\u015ftiricileri baz\u0131 yerleri a\u00e7\u0131k b\u0131rakm\u0131\u015ft\u0131r yani baz\u0131 functionlara ek geli\u015ftirmeler \u00fclke de\u011fi\u015fiklikleri, \u015firket k\u00fclt\u00fcr\u00fcne uymayan standart mod\u00fcl geli\u015ftimelerini user exit denen eri\u015fim sa\u011flanan kod function class lar\u0131nda yapabilirsiniz.<\/p>\n<p><strong>\u015eimdi ALV nedir?<\/strong> alv visual programlama icad\u0131 ile gelen Grid database deki baz\u0131 bilgileri izgara grid asl\u0131nda burdna gelir bir d\u00fczen i\u00e7inde excel deki gibi h\u00fccreler ile g\u00f6sterimesini ve baz\u0131 yerlere t\u0131klanarak action ile ba\u015fka bir event tetikleme gibi i\u015flemleri bize kolayca sa\u011flayan g\u00fc\u00e7l\u00fc bir bile\u015fendir (componenttir) grid b\u00f6yle iken asl\u0131nda tablodan baz\u0131 filedlari veririz sql sorgusu ile o bize dinamik bir yap\u0131da ak\u0131ll\u0131ca olu\u015fmas\u0131 gerkeen t\u00fcs\u00fcn ve kay\u0131t say\u0131s\u0131 kadar sat\u0131r olu\u015fturur. i\u015fte grid budur ya alv.<\/p>\n<p>Alv tam anlam\u0131yla gridi sap programlama abap taraf\u0131nda tamamlayan componet dir diye bilirz asl\u0131nda<\/p>\n<p>Bu almanlar \u00e7ok milliyet\u00e7i olduklar\u0131nda \u00a0kendileri kendi literatorlerini i\u00e7at ederler kafa kar\u0131\u015ft\u0131r\u0131rlar \u00a0grid desen ne olurdu hans efendi diyorum ve almanlar\u0131 kendilerine havale ediyorum \u00a0\ud83d\ude42 yeri gelmi\u015f ken s\u00f6yliyeyim adamlar ters adam \ud83d\ude42<\/p>\n<p>ortada bir visual programlama olmad\u0131\u011f\u0131ndan componet yoktur bu componentin class ve functionlar\u0131 vard\u0131r bu function ve classlar bize dinamik alv yi (yani giridi) olu\u015fturmam\u0131za yard\u0131mc\u0131 olacak edit,delete, actin hyper to link gibi event metodlar\u0131n\u0131 yapm\u0131zda kolayla\u015ft\u0131racakd\u0131r.<\/p>\n<p><strong>i\u015fte size bir \u00f6rnek \u00a0alv kodu :<\/strong><\/p>\n<pre><span style=\"color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: x-small;\">                                  <span style=\"font-family: 'Times New Roman', Times, serif; font-size: small;\">DESCRIPTION: ALV grid example - Using SAP\n                                    Control Technology\n\n                                    YOURCODE:\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp; Report  ZTRPSD110                                                   *\n                                    *&amp;                                                                     *\n                                    *&amp;---------------------------------------------------------------------*\n                                    * TITLE: Statement of Export Report for Tata Tetley                    *\n                                    *                                                                      *\n                                    * PURPOSE:Statement of Export Report for Tata Tetley                   *\n                                    *                                                                      *\n                                    *----------------------------------------------------------------------*\n                                    * A. Start-of-selection:                                               *\n                                    * 1. In get_billing_data using the selection screen parameters get the *\n                                    *     billing data from billing header(VBAK) and Item (VBAP)           *\n                                    * 2.  Get the SHIP-TO partner data from VBPA using Customer number as  *\n                                    *     one condition and store in it_vbpa_sh\n                                    * 9.  Popultae the ALV display table\n                                    *\n                                    * B. End-of-selection:\n                                    *    Call screen 9000 and display data in ALV\n                                    *----------------------------------------------------------------------*\n\n                                    REPORT  ztrps110  MESSAGE-ID zttl  LINE-SIZE 130.\n\n                                    TABLES: vbrk.\n\n                                    * CONSTANTS\n                                    CONSTANTS :\n                                    c_x(1)        TYPE c VALUE 'X',\n                                    c_zxto        TYPE vbak-auart VALUE 'ZXTO',\n                                    c_e           TYPE spras VALUE 'E',\n                                    c_000000      TYPE posnr VALUE '000000',\n                                    c_ship_to     TYPE parvw VALUE 'WE'.      \"Ship To Party\n\n                                    * Table Types\n                                    TYPES: BEGIN OF ty_vbrk_vbrp,\n                                    vbeln TYPE vbrk-vbeln,    \"Billing doc\n                                    posnr TYPE vbrp-posnr,    \"Billing item\n                                    aubel TYPE vbrp-aubel,    \"Sales order\n                                    waerk TYPE vbrk-waerk,    \"Doc currency\n                                    mvgr1 TYPE vbrp-mvgr1,    \"Material group 1\n                                    mvgr3 TYPE vbrp-mvgr3,    \"Material group 3\n                                    mvgr4 TYPE vbrp-mvgr4,    \"Material group 4\n                                    matnr TYPE vbrp-matnr,    \"Material no\n                                    ntgew TYPE vbrp-ntgew,    \"Net wt\n                                    gewei TYPE vbrp-gewei,    \"Wt unit\n                                    kzwi1 TYPE vbrp-kzwi1,                             \"Subtotal 1\n                                    kursk TYPE vbrp-kursk,    \"Exchange rate\n                                    END   OF ty_vbrk_vbrp.\n\n                                    TYPES: BEGIN OF ty_data,\n                                    land1 TYPE vbpa-land1,\n                                    landx TYPE t005t-landx,\n                                    mvgr3 TYPE vbrp-mvgr3,\n                                    mvgr4 TYPE vbrp-mvgr4,\n                                    bezei3 TYPE tvm3t-bezei,\n                                    bezei4 TYPE tvm4t-bezei,\n                                    ntgew_tea_bag TYPE vbrp-ntgew,\n                                    ntgew_pkt_tea TYPE vbrp-ntgew,\n                                    ntgew_bulk_tea TYPE vbrp-ntgew,\n                                    kzwi1_tea_bag TYPE vbrp-kzwi1,    \"Subtotal 1 Tea Bag\n                                    kzwi1_pkt_tea TYPE vbrp-kzwi1,    \"Subtotal 1 Pkt Tea\n                                    kzwi1_bulk_tea TYPE vbrp-kzwi1,   \"Subtotal 1 Bulk Tea\n                                    ntgew_tot TYPE vbrp-ntgew,\n                                    kzwi1_tot TYPE vbrp-kzwi1,\n                                    line_color(4) TYPE c,  \"For line color\n\n                                    END OF ty_data.\n\n                                    TYPES: BEGIN OF ty_vbpa,\n                                    vbeln TYPE vbpa-vbeln,\n                                    land1 TYPE vbpa-land1,\n                                    END OF ty_vbpa.\n                                    TYPES: BEGIN OF ty_t005t,\n                                    land1 TYPE t005t-land1,\n                                    landx TYPE t005t-landx,\n                                    END OF ty_t005t.\n\n                                    TYPES: BEGIN OF ty_tvm3t,\n                                    mvgr3 TYPE tvm3-mvgr3,\n                                    bezei TYPE tvm3t-bezei,\n                                    END OF ty_tvm3t.\n\n                                    TYPES: BEGIN OF ty_tvm4t,\n                                    mvgr4 TYPE tvm4-mvgr4,\n                                    bezei TYPE tvm4t-bezei,\n                                    END OF ty_tvm4t.\n\n                                    DATA: it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp,\n                                    wa_vbrk_vbrp TYPE ty_vbrk_vbrp,\n\n                                    it_vbpa TYPE STANDARD TABLE OF ty_vbpa,\n                                    wa_vbpa TYPE ty_vbpa,\n\n                                    it_data TYPE STANDARD TABLE OF ty_data,\n                                    wa_data TYPE ty_data,\n\n                                    it_t005t TYPE STANDARD TABLE OF ty_t005t,\n                                    wa_t005t TYPE ty_t005t,\n\n                                    it_tvm3t TYPE STANDARD TABLE OF ty_tvm3t,\n                                    wa_tvm3t TYPE ty_tvm3t,\n\n                                    it_tvm4t TYPE STANDARD TABLE OF ty_tvm4t,\n                                    wa_tvm4t TYPE ty_tvm4t.\n\n                                    * Global data for grand total\n\n                                    DATA:\n                                    w_tot_ntgew_tea_bag TYPE vbrp-ntgew,\n                                    w_tot_ntgew_pkt_tea TYPE vbrp-ntgew,\n                                    w_tot_ntgew_bulk_tea TYPE vbrp-ntgew,\n                                    w_tot_ntgew_tot TYPE vbrp-ntgew,\n                                    w_tot_kzwi1_tea_bag TYPE vbrp-kzwi1,\n                                    w_tot_kzwi1_pkt_tea TYPE vbrp-kzwi1,\n                                    w_tot_kzwi1_bulk_tea TYPE vbrp-kzwi1,\n                                    w_tot_kzwi1_tot TYPE vbrp-kzwi1.\n\n                                    * Global data definitions for ALV\n                                    DATA :\n                                    * ALV Grid container\n                                    w_alv_container TYPE REF TO cl_gui_custom_container,\n\n                                    * ALV Grid\n                                    w_alv_grid      TYPE REF TO cl_gui_alv_grid,\n                                    w_layo          TYPE        lvc_s_layo,     \"For layout\n                                    wt_fieldcat     TYPE        lvc_t_fcat,     \"For field catalog\n                                    okcode          TYPE         okcode,        \"OK Code\n                                    w_to(2)         TYPE         c,\n                                    w_title         TYPE        string.\n\n                                    *-------------- START OF SELECTION SCREEN ----------------------------*\n                                    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.\n                                    * Billing Date\n                                    SELECT-OPTIONS: s_fkdat FOR vbrk-fkdat MEMORY ID vf OBLIGATORY NO-EXTENSION.\n                                    SELECTION-SCREEN:SKIP 1.\n                                    SELECTION-SCREEN: END OF BLOCK b1.\n\n                                    *-------------- END OF SELECTION SCREEN ------------------------------*\n\n                                    *-------------   EVENT START-OF-SELECTION  -------------------------------*\n                                    START-OF-SELECTION.\n\n                                    * Get billing data from Delivery header(VBRK) and item (VBRP)\n                                    PERFORM get_billing_data.\n\n                                    * Get ship-to country\n                                    PERFORM get_ship_to_data.\n\n                                    * Get material group description 3\n                                    PERFORM get_material_group_3.\n\n                                    * Get material group description 4\n                                    PERFORM get_material_group_4.\n\n                                    * Form the ALV Grid title\n                                    PERFORM form_title.\n\n                                    * Process data\n                                    PERFORM process_data.\n\n                                    * Populate text descriptions\n                                    PERFORM populate_description.\n\n                                    *-------------   EVENT END-OF-SELECTION  -------------------------------*\n                                    END-OF-SELECTION.\n                                    * Set the text to when date high is there\n                                    IF NOT s_fkdat-high IS INITIAL.\n                                    w_to = 'to'(c16).\n                                    ENDIF.\n\n                                    * Call the scren 9000 for ALV Display\n                                    CALL SCREEN 9000.\n\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Form  get_billing_data\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Get billing data from Delivery header(VBRK) and item (VBRP)\n                                    * &amp; store in internal table it_vbrk_vbrp\n                                    *----------------------------------------------------------------------*\n                                    FORM get_billing_data .\n\n                                    REFRESH: it_vbrk_vbrp.\n\n                                    * Select Billing data by joining VBRK &amp; VBRP and store in it_vbrk_vbrp\n                                    SELECT a~vbeln\n                                    b~posnr\n                                    b~aubel\n                                    a~waerk\n                                    b~mvgr1\n                                    b~mvgr3\n                                    b~mvgr4\n                                    b~matnr\n                                    b~ntgew\n                                    b~gewei\n                                    b~kzwi1\n                                    b~kursk\n                                    FROM vbrk AS a INNER JOIN vbrp AS b\n                                    ON a~vbeln = b~vbeln\n                                    INTO TABLE it_vbrk_vbrp\n                                    WHERE a~fkdat IN s_fkdat\n                                    * Consider only non-deleted document\n                                    AND fksto = space\n                                    * Billing doc type should be ZXTB\n                                    AND fkart = 'ZXTB'\n\n                                    AND pstyv = c_zxto.\n\n                                    IF sy-subrc &lt;&gt; 0.\n                                    MESSAGE i999(zttl) WITH 'No data is there'(m06).\n                                    LEAVE LIST-PROCESSING.\n                                    ENDIF.\n                                    ENDFORM.                    \" get_billing_data\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Form  get_ship_to_data\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Get Ship-To party data\n                                    *----------------------------------------------------------------------*\n                                    FORM get_ship_to_data .\n\n                                    DATA: l_it_vbpa TYPE STANDARD TABLE OF ty_vbpa.\n                                    REFRESH: it_vbpa, it_t005t.\n\n                                    IF NOT it_vbrk_vbrp[] IS INITIAL.\n                                    SELECT vbeln\n                                    land1\n                                    FROM vbpa\n                                    INTO TABLE it_vbpa\n                                    FOR ALL ENTRIES IN it_vbrk_vbrp\n                                    WHERE vbeln = it_vbrk_vbrp-aubel\n                                    AND posnr = c_000000\n                                    AND parvw = c_ship_to.\n\n                                    IF sy-subrc &lt;&gt; 0.\n                                    MESSAGE i999(zttl) WITH 'Exporter country not maintained'(m02).\n                                    LEAVE LIST-PROCESSING.\n                                    ELSE.\n                                    SORT it_vbpa BY vbeln.\n                                    * Create an unique and sorted driver table\n                                    l_it_vbpa[] = it_vbpa[].\n                                    SORT l_it_vbpa BY land1.\n                                    DELETE ADJACENT DUPLICATES FROM l_it_vbpa COMPARING land1.\n\n                                    IF NOT l_it_vbpa[] IS INITIAL.\n                                    * Get the country description from T005t table\n                                    SELECT land1\n                                    landx\n                                    FROM t005t\n                                    INTO TABLE it_t005t\n                                    FOR ALL ENTRIES IN l_it_vbpa\n                                    WHERE spras = c_e\n                                    AND  land1 = l_it_vbpa-land1.\n                                    IF sy-subrc = 0.\n                                    SORT it_t005t BY land1.\n                                    ENDIF.\n                                    ENDIF.\n                                    ENDIF.\n\n                                    ENDIF.\n                                    ENDFORM.                    \" get_ship_to_data\n\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Form  get_material_group_3\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Get material group 3\n                                    *----------------------------------------------------------------------*\n                                    FORM get_material_group_3 .\n\n                                    DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.\n\n                                    REFRESH: it_tvm3t.\n\n                                    * Create an unique and sorted driver table\n                                    l_it_vbrk_vbrp[] = it_vbrk_vbrp[].\n                                    SORT l_it_vbrk_vbrp BY mvgr3.\n                                    DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr3.\n                                    IF NOT l_it_vbrk_vbrp[] IS INITIAL.\n                                    SELECT mvgr3\n                                    bezei\n                                    FROM tvm3t\n                                    INTO TABLE it_tvm3t\n                                    FOR ALL ENTRIES IN l_it_vbrk_vbrp\n                                    WHERE mvgr3 = l_it_vbrk_vbrp-mvgr3.\n\n                                    IF sy-subrc = 0.\n                                    SORT it_tvm3t BY mvgr3.\n                                    ENDIF.\n                                    ENDIF.\n\n                                    ENDFORM.                    \" get_material_group_3\n\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Form  get_material_group_4\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Get material group 4\n                                    *----------------------------------------------------------------------*\n                                    FORM get_material_group_4 .\n                                    DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.\n\n                                    REFRESH: it_tvm4t.\n\n                                    * Create an unique and sorted driver table\n                                    l_it_vbrk_vbrp[] = it_vbrk_vbrp[].\n                                    SORT l_it_vbrk_vbrp BY mvgr4.\n                                    DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr4.\n                                    IF NOT l_it_vbrk_vbrp[] IS INITIAL.\n                                    SELECT mvgr4\n                                    bezei\n                                    FROM tvm4t\n                                    INTO TABLE it_tvm4t\n                                    FOR ALL ENTRIES IN l_it_vbrk_vbrp\n                                    WHERE mvgr4 = l_it_vbrk_vbrp-mvgr4.\n                                    IF sy-subrc = 0.\n                                    SORT it_tvm4t BY mvgr4.\n                                    ENDIF.\n                                    ENDIF.\n\n                                    ENDFORM.                    \" get_material_group_4\n\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Form  process_data\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Process the data and do summation and populate final display table\n                                    *----------------------------------------------------------------------*\n                                    FORM process_data .\n\n                                    LOOP AT it_vbrk_vbrp INTO wa_vbrk_vbrp.\n                                    CLEAR: wa_data, wa_vbpa.\n                                    READ TABLE it_vbpa INTO wa_vbpa WITH KEY\n                                    vbeln = wa_vbrk_vbrp-aubel\n                                    BINARY SEARCH.\n                                    IF sy-subrc = 0.\n                                    wa_data-land1 = wa_vbpa-land1.\n                                    ENDIF.\n\n                                    wa_data-mvgr3 = wa_vbrk_vbrp-mvgr3.\n                                    wa_data-mvgr4 = wa_vbrk_vbrp-mvgr4.\n\n                                    * Do an unit conversion of the quamtity\n                                    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'\n                                    EXPORTING\n                                    input                      = wa_vbrk_vbrp-ntgew\n                                    *      NO_TYPE_CHECK              = 'X'\n                                    *      ROUND_SIGN                 = ' '\n                                    unit_in                    = wa_vbrk_vbrp-gewei\n                                    unit_out                   = 'TO' \"Metric tonn\n                                    IMPORTING\n                                    output                     = wa_vbrk_vbrp-ntgew\n                                    EXCEPTIONS\n                                    conversion_not_found       = 1\n                                    division_by_zero           = 2\n                                    input_invalid              = 3\n                                    output_invalid             = 4\n                                    overflow                   = 5\n                                    type_invalid               = 6\n                                    units_missing              = 7\n                                    unit_in_not_found          = 8\n                                    unit_out_not_found         = 9\n                                    OTHERS                     = 10.\n                                    IF sy-subrc &lt;&gt; 0.\n                                    wa_vbrk_vbrp-ntgew = wa_vbrk_vbrp-ntgew.\n                                    ENDIF.\n\n                                    * Convert the currency from Customer currency to local\n                                    * currency by multiplying with kursk\n                                    wa_vbrk_vbrp-kzwi1 =  wa_vbrk_vbrp-kzwi1 * wa_vbrk_vbrp-kursk.\n\n                                    * Convert the amount to Lacks by dividing with 100000\n                                    wa_vbrk_vbrp-kzwi1 = wa_vbrk_vbrp-kzwi1 \/ 100000.       \"DV1K905028\n\n                                    * When MVGR1 is between A to F use the amount as TEA_BAG\n                                    IF wa_vbrk_vbrp-mvgr1 BETWEEN 'A' AND 'F'.\n                                    wa_data-ntgew_tea_bag = wa_vbrk_vbrp-ntgew.\n                                    wa_data-kzwi1_tea_bag = wa_vbrk_vbrp-kzwi1.\n                                    ENDIF.\n\n                                    * When MVGR1 is between G to L use the amount as TEA_BAG\n                                    IF wa_vbrk_vbrp-mvgr1 BETWEEN 'G' AND 'L'.\n                                    wa_data-ntgew_pkt_tea = wa_vbrk_vbrp-ntgew.\n                                    wa_data-kzwi1_pkt_tea = wa_vbrk_vbrp-kzwi1.\n                                    ENDIF.\n\n                                    * When MVGR1 is between G to L use the amount as TEA_BAG\n                                    IF wa_vbrk_vbrp-mvgr1 = 'M'.\n                                    wa_data-ntgew_bulk_tea = wa_vbrk_vbrp-ntgew.\n                                    wa_data-kzwi1_bulk_tea = wa_vbrk_vbrp-kzwi1.\n                                    ENDIF.\n\n                                    COLLECT wa_data INTO it_data.\n                                    ENDLOOP.\n                                    ENDFORM.                    \" process_data\n\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Form  populate_description\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Populate the description fields\n                                    *----------------------------------------------------------------------*\n                                    FORM populate_description .\n\n                                    LOOP AT it_data INTO wa_data.\n                                    CLEAR: wa_t005t.\n                                    READ TABLE it_t005t INTO wa_t005t WITH KEY land1 = wa_data-land1\n                                    BINARY SEARCH.\n                                    IF sy-subrc = 0.\n                                    wa_data-landx = wa_t005t-landx.\n                                    ENDIF.\n\n                                    * Read description of Material group 3\n                                    CLEAR wa_tvm3t.\n                                    READ TABLE it_tvm3t INTO wa_tvm3t WITH KEY\n                                                                  mvgr3 = wa_data-mvgr3\n                                                                  BINARY SEARCH.\n                                         IF sy-subrc = 0.\n                                           wa_data-bezei3 = wa_tvm3t-bezei.\n                                         ENDIF.\n\n                                    * Read description of Material group 4\n                                         CLEAR wa_tvm4t.\n                                         READ TABLE it_tvm4t INTO wa_tvm4t WITH KEY\n                                                                  mvgr4 = wa_data-mvgr4\n                                                                  BINARY SEARCH.\n                                         IF sy-subrc = 0.\n                                           wa_data-bezei4 = wa_tvm4t-bezei.\n                                         ENDIF.\n\n                                    * Get the grand totals\n                                         wa_data-ntgew_tot = wa_data-ntgew_tea_bag\n                                                  + wa_data-ntgew_pkt_tea\n                                                  + wa_data-ntgew_bulk_tea.\n\n                                         wa_data-kzwi1_tot = wa_data-kzwi1_tea_bag\n                                                  + wa_data-kzwi1_pkt_tea\n                                                  + wa_data-kzwi1_bulk_tea.\n\n                                         MODIFY it_data FROM wa_data TRANSPORTING landx\n                                                                                  bezei3\n                                                                                  bezei4\n                                                                                  ntgew_tot\n                                                                                  kzwi1_tot.\n                                    * Summattion of grand totals\n                                         w_tot_ntgew_tea_bag  = w_tot_ntgew_tea_bag  + wa_data-ntgew_tea_bag.\n                                         w_tot_ntgew_pkt_tea  = w_tot_ntgew_pkt_tea  + wa_data-ntgew_pkt_tea.\n                                         w_tot_ntgew_bulk_tea  = w_tot_ntgew_bulk_tea  + wa_data-ntgew_bulk_tea.\n                                         w_tot_ntgew_tot  = w_tot_ntgew_tot  + wa_data-ntgew_tot.\n\n                                         w_tot_kzwi1_tea_bag  = w_tot_kzwi1_tea_bag  + wa_data-kzwi1_tea_bag.\n                                         w_tot_kzwi1_pkt_tea  = w_tot_kzwi1_pkt_tea  + wa_data-kzwi1_pkt_tea.\n                                         w_tot_kzwi1_bulk_tea  = w_tot_kzwi1_bulk_tea  + wa_data-kzwi1_bulk_tea.\n                                         w_tot_kzwi1_tot  = w_tot_kzwi1_tot  + wa_data-kzwi1_tot.\n\n                                       ENDLOOP.\n\n                                    * Append a grand Total row at the end\n                                       CLEAR wa_data.\n                                       wa_data-landx = 'Grand Total:'.\n                                       wa_data-ntgew_tea_bag = w_tot_ntgew_tea_bag.\n                                       wa_data-ntgew_pkt_tea = w_tot_ntgew_pkt_tea.\n                                       wa_data-ntgew_bulk_tea = w_tot_ntgew_bulk_tea.\n                                       wa_data-ntgew_tot = w_tot_ntgew_tot.\n                                       wa_data-kzwi1_tea_bag = w_tot_kzwi1_tea_bag.\n                                       wa_data-kzwi1_pkt_tea = w_tot_kzwi1_pkt_tea.\n                                       wa_data-kzwi1_bulk_tea = w_tot_kzwi1_bulk_tea.\n                                       wa_data-kzwi1_tot = w_tot_kzwi1_tot.\n                                       wa_data-line_color    = 'C310'.\n\n                                       APPEND wa_data TO it_data.\n                                    ENDFORM.                    \" populate_description\n\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Module  STATUS_9000  OUTPUT\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Initialise PF-STATUS and title\n                                    *----------------------------------------------------------------------*\n                                    MODULE status_9000 OUTPUT.\n                                       SET PF-STATUS 'MAIN9000'.\n                                       SET TITLEBAR 'TITLE_9000'.\n                                    ENDMODULE.                 \" STATUS_9000  OUTPUT\n\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Module  initialize_9000  OUTPUT\n                                    *&amp;---------------------------------------------------------------------*\n                                    *       text\n                                    *----------------------------------------------------------------------*\n                                    MODULE initialize_9000 OUTPUT.\n                                    * Call the ALV grid to display data\n                                       PERFORM display_alv_grid.\n\n                                    ENDMODULE.                 \" initialize_9000  OUTPUT\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Module  USER_COMMAND_9000  INPUT\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Module to handle User Command\n                                    *----------------------------------------------------------------------*\n                                    MODULE user_command_9000 INPUT.\n                                       CASE okcode.\n                                         WHEN 'BACK'.\n                                           SET SCREEN 0.\n                                           CLEAR okcode.\n                                           LEAVE SCREEN.\n                                         WHEN 'CANCEL'.\n                                           SET SCREEN 0.\n                                           CLEAR okcode.\n                                           LEAVE SCREEN.\n                                         WHEN 'EXIT'.\n                                           CLEAR okcode.\n                                           LEAVE PROGRAM.\n                                         WHEN OTHERS.\n                                       ENDCASE.\n                                    ENDMODULE.                 \" USER_COMMAND_9000  INPUT\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Form  display_alv_grid\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Display the data in ALV Grid\n                                    *----------------------------------------------------------------------*\n                                    FORM display_alv_grid .\n                                       IF w_alv_container IS INITIAL.\n\n                                    * Create the alv container object\n                                         CREATE OBJECT w_alv_container\n                                           EXPORTING\n                                             container_name = 'ALV_GRID'\n                                           EXCEPTIONS\n                                               cntl_error                  = 1\n                                               cntl_system_error           = 2\n                                               create_error                = 3\n                                               lifetime_error              = 4\n                                               lifetime_dynpro_dynpro_link = 5\n                                               OTHERS                      = 6.\n                                         IF sy-subrc &lt;&gt; 0.\n                                           MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).\n                                         ENDIF.\n\n                                    * Create the ALV grid object. The parent is the ALV container\n                                         CREATE OBJECT w_alv_grid\n                                           EXPORTING\n                                             i_parent = w_alv_container\n                                           EXCEPTIONS\n                                             error_cntl_create = 1\n                                             error_cntl_init   = 2\n                                             error_cntl_link   = 3\n                                             error_dp_create   = 4\n                                             OTHERS            = 5.\n\n                                         IF sy-subrc &lt;&gt; 0.\n                                           MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).\n                                         ENDIF.\n\n                                    * This subrotine creates the field catalog and\n                                    * store in internal table lt_fieldcat\n                                         PERFORM prepare_fieldcat CHANGING wt_fieldcat.\n\n                                    * Layout design\n                                         w_layo-no_toolbar = ''.\n\n                                    * Not to allow totaling feature\n                                         w_layo-no_totline = c_x.\n\n                                    * Report title\n                                    *    w_layo-grid_title = text-004.\n                                         w_layo-grid_title = w_title.\n\n                                         w_layo-zebra      = c_x.    \"Alternating line color (striped)\n                                         w_layo-cwidth_opt = c_x.    \"Optimize column width\n                                         w_layo-sel_mode   = 'A'.    \"Selection Mode\n\n                                    * Name of the color field\n                                         w_layo-info_fname = 'LINE_COLOR'.\"For row color\n\n                                    * Call the method to display the data in ALV grid\n                                         CALL METHOD w_alv_grid-&gt;set_table_for_first_display\n                                           EXPORTING\n                                             i_save                        = 'A'\n                                             is_layout                     = w_layo\n                                           CHANGING\n                                             it_outtab                     = it_data[]\n                                             it_fieldcatalog               = wt_fieldcat\n                                           EXCEPTIONS\n                                             invalid_parameter_combination = 1\n                                             program_error                 = 2\n                                             too_many_lines                = 3\n                                             OTHERS                        = 4.\n\n                                         IF sy-subrc &lt;&gt; 0.\n                                           MESSAGE e999(zttl) WITH text-t04.\n                                         ENDIF.\n                                       ELSE.\n                                    * If the container &amp; grid object is alreadt there reuse them\n                                         CALL METHOD w_alv_grid-&gt;refresh_table_display\n                                           EXCEPTIONS\n                                             finished = 1\n                                             OTHERS   = 2.\n                                         IF sy-subrc &lt;&gt; 0.\n                                           MESSAGE e999(zttl) WITH text-t04.\n                                         ENDIF.\n\n                                       ENDIF.\n\n                                       IF okcode = 'CANCEL'.\n                                         EXIT.\n                                       ENDIF.\n\n                                    ENDFORM.                    \" display_alv_grid\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Form  prepare_fieldcat\n                                    *&amp;---------------------------------------------------------------------*\n                                    * Prepare the list of fields to be displayed                          *\n                                    *----------------------------------------------------------------------*\n                                    *      &lt;--P_WT_FIELDCAT  text\n                                    *----------------------------------------------------------------------*\n                                    FORM prepare_fieldcat  CHANGING pt_fieldcat TYPE lvc_t_fcat.\n\n                                       DATA : lx_fcat TYPE lvc_s_fcat.\n\n                                       REFRESH: pt_fieldcat.\n                                    **List of fields to be displayed should be added in pt_fieldcat\n\n                                    * Customer PO no\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'LANDX'.\n                                       lx_fcat-ref_field = 'T005T'.\n                                       lx_fcat-ref_table = 'T005T'.\n                                       lx_fcat-coltext = 'Market Name'(c01).\n                                       lx_fcat-seltext = text-c01.\n\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * Flavour type\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'BEZEI3'.\n                                       lx_fcat-ref_field = 'BEZEI'.\n                                       lx_fcat-ref_table = 'TVM3'.\n                                       lx_fcat-coltext = 'Flavour Type'(c02).\n                                       lx_fcat-seltext = text-c02.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * Tea type\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'BEZEI4'.\n                                       lx_fcat-ref_field = 'BEZEI4'.\n                                       lx_fcat-ref_table = 'TVM4'.\n                                       lx_fcat-coltext = 'Tea Type.'(c03).\n                                       lx_fcat-seltext = text-c03.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * Tea Bag Quantity in KG\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'NTGEW_TEA_BAG'.\n                                       lx_fcat-ref_field = 'NTGEW'.\n                                       lx_fcat-ref_table = 'VBRP'.\n                                       lx_fcat-coltext = 'Tea Bag(MT)'(c04).\n                                       lx_fcat-seltext = text-c04.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * PKT Tea  Quantity in KG\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'NTGEW_PKT_TEA'.\n                                       lx_fcat-ref_field = 'NTGEW'.\n                                       lx_fcat-ref_table = 'VBRP'.\n                                       lx_fcat-coltext = 'PKT Tea(MT)'(c05).\n                                       lx_fcat-seltext = text-c05.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * Bulk Tea  Quantity in MT\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'NTGEW_BULK_TEA'.\n                                       lx_fcat-ref_field = 'NTGEW'.\n                                       lx_fcat-ref_table = 'VBRP'.\n                                       lx_fcat-coltext = 'Bulk Tea(MT)'(c06).\n                                       lx_fcat-seltext = text-c06.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * Total Quantity in MT\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'NTGEW_TOT'.\n                                       lx_fcat-ref_field = 'NTGEW'.\n                                       lx_fcat-ref_table = 'VBRP'.\n                                       lx_fcat-coltext = 'Total(MT)'(c07).\n                                       lx_fcat-seltext = text-c07.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * Tea Bag Quantity in KG\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'KZWI1_TEA_BAG'.\n                                       lx_fcat-ref_field = 'KZWI1'.\n                                       lx_fcat-ref_table = 'VBRP'.\n                                       lx_fcat-coltext = 'Tea Bag(FOB-Lacs)'(c08).\n                                       lx_fcat-seltext = text-c08.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * PKT Tea  Price in Lakh\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'KZWI1_PKT_TEA'.\n                                       lx_fcat-ref_field = 'KZWI1'.\n                                       lx_fcat-ref_table = 'VBRP'.\n                                       lx_fcat-coltext = 'PKT Tea(FOB-Lacs)'(c09).\n                                       lx_fcat-seltext = text-c09.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * PKT Tea  Quantity in KG\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'KZWI1_BULK_TEA'.\n                                       lx_fcat-ref_field = 'KZWI1'.\n                                       lx_fcat-ref_table = 'VBRP'.\n                                       lx_fcat-coltext = 'Bulk Tea(FOB-Lacs)'(c10).\n                                       lx_fcat-seltext = text-c10.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    * Total amount\n                                       CLEAR lx_fcat.\n                                       lx_fcat-fieldname = 'KZWI1_TOT'.\n                                       lx_fcat-ref_field = 'KZWI1'.\n                                       lx_fcat-ref_table = 'VBRP'.\n                                       lx_fcat-coltext = 'Total(FOB-Lacs)'(c11).\n                                       lx_fcat-seltext = text-c11.\n                                       APPEND lx_fcat TO pt_fieldcat.\n\n                                    ENDFORM.                    \" prepare_fieldcat\n                                    *&amp;---------------------------------------------------------------------*\n                                    *&amp;      Form  form_title\n                                    *&amp;---------------------------------------------------------------------*\n                                    *  Form the ALV Title\n                                    *----------------------------------------------------------------------*\n                                    FORM form_title .\n\n                                       DATA: l_date(10) TYPE c.\n\n                                       CONCATENATE s_fkdat-low+6(2)  s_fkdat-low+4(2)  s_fkdat-low(4)\n                                       INTO l_date SEPARATED BY '\/'.\n\n                                       CONCATENATE 'TTD - Statement of Export' '-From' l_date INTO\n                                    w_title SEPARATED BY space.\n\n                                       CLEAR l_date.\n                                       IF NOT s_fkdat-high IS INITIAL.\n                                         CONCATENATE s_fkdat-high+6(2)  s_fkdat-high+4(2)  s_fkdat-high(4)\n                                         INTO l_date SEPARATED BY '\/'.\n                                         CONCATENATE w_title 'to' l_date INTO w_title SEPARATED BY space.\n\n                                       ENDIF.\n                                    ENDFORM.                    \" form_title<\/span><\/span><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhabalar,<\/p>\n<p>Sap sistemine \u00f6zel programlama dili olan ABAP ile alv nas\u0131l yaz\u0131l\u0131ra bakaca\u011f\u0131z .<\/p>\n<p>\u00f6ncelikle abap nedir bakal\u0131m D\u00fcnya liderleri ars\u0131nda yer alan sap sistemine \u00fczerinde geli\u015ftirme yapmaya olanak sa\u011flayan ABAP WROKBENCH program\u0131 \u00fczerinde abap dili ile sap sisteminde sizi tatmin etmeyen geli\u015ftirmeleri (rapor, program, var olan bir programda de\u011fi\u015fiklik, sistem funsiyonuna eklenti yapmak, user exit, vs)  yapabilmenize olanak sa\u011flayan bu dili kullanaca\u011f\u0131z.<\/p>\n<p>seviye oalrak c diline syntax olarak biraz benzemektedir, mantik biraz farkl\u0131d\u0131r, native sql kullan\u0131labilir. en \u00e7ok sevdi\u011fim \u00f6zelli\u011fi ise Db ve table ayr\u0131ca connection string yazmamam\u0131zd\u0131r.<\/p>\n<p>open source kaynakl\u0131 sap sistemi gnu gibi olmasada, sonu\u00e7ta ticari bir yaz\u0131l\u0131md\u0131r ticari sahiibine yani lisans \u00fccretini \u00f6deyene open source dur diyebiliriz. Sistemdeki t\u00fcm standart uygulamalar\u0131n kodlar\u0131 g\u00f6r\u00fcnmetdir  bu kodlarda herhangi bi de\u011fi\u015fiklik yap\u0131lmamaktad\u0131r asl\u0131nda yap\u0131labilmektedir \u015f\u00f6yleki, <\/p>\n<p>sap sistemi geli\u015ftiricileri baz\u0131 yerleri a\u00e7\u0131k b\u0131rakm\u0131\u015ft\u0131r yani baz\u0131 functionlara ek geli\u015ftirmeler \u00fclke de\u011fi\u015fiklikleri, \u015firket k\u00fclt\u00fcr\u00fcne uymayan standart mod\u00fcl geli\u015ftimelerini user exit denen eri\u015fim sa\u011flanan kod function class lar\u0131nda yapabilirsiniz.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[87,45],"tags":[395,441,1064,1546,1837],"class_list":["post-1380","post","type-post","status-publish","format-standard","hentry","category-advanced-business-application-programming","category-sap","tag-abap","tag-alv","tag-grid-mi-alv-mi","tag-nedir","tag-sap","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"aioseo_notices":[],"views":8891,"_links":{"self":[{"href":"https:\/\/www.karadere.com\/blog\/wp-json\/wp\/v2\/posts\/1380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.karadere.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.karadere.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.karadere.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.karadere.com\/blog\/wp-json\/wp\/v2\/comments?post=1380"}],"version-history":[{"count":0,"href":"https:\/\/www.karadere.com\/blog\/wp-json\/wp\/v2\/posts\/1380\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.karadere.com\/blog\/wp-json\/wp\/v2\/media?parent=1380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.karadere.com\/blog\/wp-json\/wp\/v2\/categories?post=1380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.karadere.com\/blog\/wp-json\/wp\/v2\/tags?post=1380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}