<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: give an example for bapi and give code plz in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951182#M695938</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;chek this&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  ztest .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               TABLES DECLARATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: ekko.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                    TYPES DECLARATIONS                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          TYPES DECLARATION FOR OPEN QUANTITY PO ITEMS               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_openpoitems,&lt;/P&gt;&lt;P&gt;          ebeln TYPE ebeln,        "Purchasing Document Number&lt;/P&gt;&lt;P&gt;          ebelp TYPE ekpo-ebelp,   "Item Number of Purchasing Document&lt;/P&gt;&lt;P&gt;          bukrs TYPE bukrs,        "Company Code&lt;/P&gt;&lt;P&gt;          bedat TYPE bedat,        "Purchasing Document Date&lt;/P&gt;&lt;P&gt;          menge TYPE ekpo-menge,   "Purchase order quantity&lt;/P&gt;&lt;P&gt;          txz01 TYPE ekpo-txz01,   "Short text&lt;/P&gt;&lt;P&gt;          werks TYPE ekpo-werks,   "Plant&lt;/P&gt;&lt;P&gt;          matkl TYPE ekpo-matkl,   "Material Group&lt;/P&gt;&lt;P&gt;          elikz TYPE ekpo-elikz,   "Delivery Completed Indicator&lt;/P&gt;&lt;P&gt;          meins TYPE ekpo-meins,   "Order Unit&lt;/P&gt;&lt;P&gt;          netpr TYPE ekpo-netpr,   "Net price in purchasing document&lt;/P&gt;&lt;P&gt;          peinh TYPE ekpo-peinh,   "Price unit&lt;/P&gt;&lt;P&gt;       END OF t_openpoitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      TYPES DECLARATION FOR UPDATION OF LINE ITEMS                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_updateitems,&lt;/P&gt;&lt;P&gt;         ebeln   TYPE ebeln,        "Purchasing Document Number&lt;/P&gt;&lt;P&gt;         ebelp   TYPE ekpo-ebelp,   "Item Number of Purchasing Document&lt;/P&gt;&lt;P&gt;         matnr   TYPE ekpo-matnr,   "Material Number&lt;/P&gt;&lt;P&gt;         txz01   TYPE ekpo-txz01,   " Item Description&lt;/P&gt;&lt;P&gt;         menge   TYPE ekpo-menge,   "Purchase order quantity&lt;/P&gt;&lt;P&gt;         meins   TYPE ekpo-meins,   "Order Unit&lt;/P&gt;&lt;P&gt;         werks   TYPE ekpo-werks,   "Plant&lt;/P&gt;&lt;P&gt;         elikz   TYPE ekpo-elikz,   "Delivery Completed Indicator&lt;/P&gt;&lt;P&gt;         netpr   TYPE ekpo-netpr,   "Net price in purchasing document&lt;/P&gt;&lt;P&gt;         peinh   TYPE ekpo-peinh,   "Price unit&lt;/P&gt;&lt;P&gt;         ebelp_n TYPE ekpo-ebelp,   " New line item&lt;/P&gt;&lt;P&gt;         menge_n TYPE ekpo-menge,   " New Qty&lt;/P&gt;&lt;P&gt;       END OF t_updateitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        TYPES DECLARATION TO SUM OF DELIVERED FOR AN ITEM            *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_podelitems,&lt;/P&gt;&lt;P&gt;         ebeln  TYPE ekko-ebeln,  " Purchase doc. no&lt;/P&gt;&lt;P&gt;         ebelp  TYPE ekpo-ebelp,  " Item number&lt;/P&gt;&lt;P&gt;         wemng  TYPE eket-wemng,  " Quantity&lt;/P&gt;&lt;P&gt;       END OF t_podelitems.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TYPES DECLARATION FOR MATERIAL THAT EXISTS                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_matnr,&lt;/P&gt;&lt;P&gt;        matnr TYPE mara-matnr,   " Material&lt;/P&gt;&lt;P&gt;       END OF t_matnr.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TYPES DECLARATION FOR ERROR LOG                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_error,&lt;/P&gt;&lt;P&gt;         ebeln(30)   TYPE c,          " Purchase order&lt;/P&gt;&lt;P&gt;         ebelp(8)    TYPE c,          " Item Number&lt;/P&gt;&lt;P&gt;         txz01(40)   TYPE c,          " Description&lt;/P&gt;&lt;P&gt;         menge(18)   TYPE c,          " Quantity&lt;/P&gt;&lt;P&gt;         ebelp_n(8)  TYPE c,          " New Item No&lt;/P&gt;&lt;P&gt;         matnr(18)   TYPE c,          " Material No&lt;/P&gt;&lt;P&gt;         menge_n(18) TYPE c,          " Quantity new&lt;/P&gt;&lt;P&gt;         msgnr(10)   TYPE c,          " SAP MSG no&lt;/P&gt;&lt;P&gt;         txt(100)    TYPE c,          " Message Text&lt;/P&gt;&lt;P&gt;       END   OF t_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                    DATA DECLARATIONS                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_matnr TYPE SORTED TABLE OF t_matnr WITH UNIQUE KEY matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_error TYPE TABLE OF t_error,&lt;/P&gt;&lt;P&gt;      wa_error TYPE t_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_updateitems   TYPE TABLE OF t_updateitems,&lt;/P&gt;&lt;P&gt;      wa_updateitems  TYPE t_updateitems.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     v_error         TYPE c. "#EC *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        CONSTANTS                                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS: c_i(1)      TYPE c VALUE 'X'.      "Constant with Value 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                    SELECTION SCREEN                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME.&lt;/P&gt;&lt;P&gt;PARAMETERS  p_file TYPE rlgrap-filename OBLIGATORY." ERROR FILE PATH&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS s_ebeln FOR ekko-ebeln.   " only for testing&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK block1.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  START-OF-SELECTION                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the BCPS purchase order data for update&lt;/P&gt;&lt;P&gt;  PERFORM get_purchase_order_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Call the BAPI for changing the PO's&lt;/P&gt;&lt;P&gt;  PERFORM call_bapi_po_change.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  END-OF-SELECTION                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF i_updateitems[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    MESSAGE i002.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Display the errors in spool or Error file&lt;/P&gt;&lt;P&gt;    PERFORM error_report.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  TOP-OF-PAGE                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TOP-OF-PAGE.&lt;/P&gt;&lt;P&gt;  PERFORM top_of_page.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**********************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                               SUBROUTINES                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  get_purchase_order_data&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Retrieve all the purchase orders for conversion&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_purchase_order_data .&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           DATA DECLARATION                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONSTANTS: lc_bpcs TYPE ekko-bsart VALUE 'BPCS', " PO type&lt;/P&gt;&lt;P&gt;             lc_f    TYPE ekko-bstyp VALUE 'F',    " PO category&lt;/P&gt;&lt;P&gt;             lc_r    TYPE ekpo-knttp VALUE 'R'.    " Item Cat&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: li_openpoitems      TYPE TABLE OF t_openpoitems,&lt;/P&gt;&lt;P&gt;        lwa_openpoitems     TYPE t_openpoitems,&lt;/P&gt;&lt;P&gt;        li_podelitems       TYPE TABLE OF t_podelitems,&lt;/P&gt;&lt;P&gt;        lwa_podelitems      TYPE t_podelitems,&lt;/P&gt;&lt;P&gt;        lwa_poitemsum       TYPE t_podelitems,&lt;/P&gt;&lt;P&gt;        li_poitemsum        TYPE SORTED TABLE OF t_podelitems&lt;/P&gt;&lt;P&gt;                                      WITH UNIQUE KEY ebeln ebelp,&lt;/P&gt;&lt;P&gt;        lv_matnr            TYPE mara-matnr,&lt;/P&gt;&lt;P&gt;        lv_rcode            TYPE sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the BPCS Purchase Order and there line items which&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; are not completely delivered&lt;/P&gt;&lt;P&gt;  SELECT ekko&lt;SUB&gt;ebeln ekpo&lt;/SUB&gt;ebelp ekko&lt;SUB&gt;bukrs ekko&lt;/SUB&gt;bedat  ekpo~menge txz01&lt;/P&gt;&lt;P&gt;       werks matkl elikz meins netpr peinh&lt;/P&gt;&lt;P&gt;    FROM ekko JOIN ekpo ON&lt;/P&gt;&lt;P&gt;      ekpo&lt;SUB&gt;ebeln = ekko&lt;/SUB&gt;ebeln&lt;/P&gt;&lt;P&gt;    INTO TABLE LI_OPENPOITEMS&lt;/P&gt;&lt;P&gt;        WHERE bsart EQ lc_bpcs        AND&lt;/P&gt;&lt;P&gt;              ekko~bstyp EQ lc_f      AND&lt;/P&gt;&lt;P&gt;              ekko~ebeln IN s_ebeln   AND&lt;/P&gt;&lt;P&gt;              knttp EQ lc_r           AND&lt;/P&gt;&lt;P&gt;              elikz EQ space          AND&lt;/P&gt;&lt;P&gt;              ekpo~loekz EQ space     AND&lt;/P&gt;&lt;P&gt;              ekko~loekz EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the sum of of delivered quantity for the&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; purchase order scheduled items&lt;/P&gt;&lt;P&gt;    SELECT ebeln ebelp wemng&lt;/P&gt;&lt;P&gt;      FROM eket&lt;/P&gt;&lt;P&gt;       INTO TABLE li_podelitems&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN li_openpoitems&lt;/P&gt;&lt;P&gt;      WHERE ebeln = li_openpoitems-ebeln AND&lt;/P&gt;&lt;P&gt;            ebelp = li_openpoitems-ebelp.&lt;/P&gt;&lt;P&gt;    IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Sum the delivered quantity of each line item&lt;/P&gt;&lt;P&gt;      LOOP AT  li_podelitems INTO lwa_podelitems.&lt;/P&gt;&lt;P&gt;        MOVE: lwa_podelitems TO lwa_poitemsum.&lt;/P&gt;&lt;P&gt;        COLLECT lwa_poitemsum INTO li_poitemsum.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Exit when there are no records selected&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ENDIF.              " if sy-subrc eq 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Get allthe purchase orders which needs to be changed&lt;/P&gt;&lt;P&gt;  LOOP AT li_openpoitems INTO lwa_openpoitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Read the table for delivered quantity&lt;/P&gt;&lt;P&gt;    CLEAR lwa_poitemsum.&lt;/P&gt;&lt;P&gt;    READ TABLE li_poitemsum INTO lwa_poitemsum&lt;/P&gt;&lt;P&gt;                        WITH KEY ebeln = lwa_openpoitems-ebeln&lt;/P&gt;&lt;P&gt;                            ebelp = lwa_openpoitems-ebelp BINARY SEARCH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; check if delivered QTY is GT PO QTY then skip&lt;/P&gt;&lt;P&gt;    IF lwa_poitemsum-wemng GT lwa_openpoitems-menge.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Identify the material number from the description&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the numberic part from the material description&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; untill you find a character.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the length of the description&lt;/P&gt;&lt;P&gt;    PERFORM get_material_from_description&lt;/P&gt;&lt;P&gt;                       USING    lwa_openpoitems-txz01&lt;/P&gt;&lt;P&gt;                       CHANGING lv_matnr.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; If there is no numberic part in the desc. then error&lt;/P&gt;&lt;P&gt;    IF lv_matnr = space.&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING lwa_openpoitems TO wa_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE: 'Material not found in the descrition'(001) TO wa_error-txt.&lt;/P&gt;&lt;P&gt;      APPEND wa_error TO i_error.&lt;/P&gt;&lt;P&gt;      CLEAR wa_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; validate if it is a valid material.&lt;/P&gt;&lt;P&gt;    PERFORM validate_material USING     lv_matnr&lt;/P&gt;&lt;P&gt;                              CHANGING  lv_rcode.&lt;/P&gt;&lt;P&gt;    IF lv_rcode NE 0.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Error the record and process next record&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING lwa_openpoitems TO wa_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE: 'Material not found in SAP'(002) TO wa_error-txt.&lt;/P&gt;&lt;P&gt;      APPEND wa_error TO i_error.&lt;/P&gt;&lt;P&gt;      CLEAR wa_error.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; if the Purchase order quantity is greater than delivered quantity&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; then change the purchase order item quantity and set delivery ind&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; complete and create a new line item with the new material number&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt;  with the remaining quantity&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING lwa_openpoitems TO wa_updateitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF lwa_poitemsum-wemng LE lwa_openpoitems-menge.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; now also we have to update the old item&lt;/P&gt;&lt;P&gt;      wa_updateitems-elikz = c_i.&lt;/P&gt;&lt;P&gt;      IF lwa_poitemsum-wemng GT 0.&lt;/P&gt;&lt;P&gt;        wa_updateitems-menge_n = lwa_poitemsum-wemng.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      APPEND wa_updateitems TO i_updateitems.&lt;/P&gt;&lt;P&gt;      wa_updateitems-ebelp_n = ''.&lt;/P&gt;&lt;P&gt;      wa_updateitems-matnr = lv_matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_updateitems-menge_n =&lt;/P&gt;&lt;P&gt;      lwa_openpoitems-menge - lwa_poitemsum-wemng.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Don't add when the line item is greater than 0&lt;/P&gt;&lt;P&gt;      IF wa_updateitems-menge_n EQ 0.&lt;/P&gt;&lt;P&gt;        CONTINUE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      APPEND wa_updateitems TO i_updateitems.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    CLEAR wa_updateitems.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " get_purchase_order_data&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  get_material_From&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Retrieves the material number from the description&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_material_from_description&lt;/P&gt;&lt;P&gt;                        USING    value(p_desc) TYPE ekpo-txz01&lt;/P&gt;&lt;P&gt;                        CHANGING       p_matnr TYPE ekpo-matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           DATA DECLARATION                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:  lv_pos              TYPE sy-tabix,  " Index&lt;/P&gt;&lt;P&gt;         lv_char             TYPE c.         " Get charater&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        lv_length(2)        TYPE n.  "#EC * " Length&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR p_matnr.&lt;/P&gt;&lt;P&gt;  DO 7  TIMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Get each charater and check if it is numberic or not&lt;/P&gt;&lt;P&gt;    lv_char = p_desc+lv_pos(1).&lt;/P&gt;&lt;P&gt;    IF lv_char CO '0123456789'.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; if it finds the charater in the string then the initial part&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; is the numberic part&lt;/P&gt;&lt;P&gt;      IF lv_pos &amp;gt; 0.&lt;/P&gt;&lt;P&gt;        p_matnr = p_desc+0(lv_pos).&lt;/P&gt;&lt;P&gt;        EXIT.   " Do loop.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    lv_pos = lv_pos + 1.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " get_material_From&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  validate_material&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Validate the material number found from the description&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM validate_material  USING    value(p_matnr) TYPE mara-matnr&lt;/P&gt;&lt;P&gt;                        CHANGING p_rcode TYPE sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE i_matnr WITH KEY matnr = p_matnr TRANSPORTING NO FIELDS.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    SELECT matnr APPENDING TABLE i_matnr&lt;/P&gt;&lt;P&gt;      FROM mara&lt;/P&gt;&lt;P&gt;      WHERE matnr = p_matnr.&lt;/P&gt;&lt;P&gt;    p_rcode = sy-subrc.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    p_rcode = 0.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " validate_material&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  call_bapi_po_change&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BAPI will be called here to update the line or add a new line item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM call_bapi_po_change .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_index     TYPE sy-tabix,                 " Index&lt;/P&gt;&lt;P&gt;        lv_purcno    TYPE bapimepoheader-po_number, " Bapi PO variable&lt;/P&gt;&lt;P&gt;        li_return    TYPE TABLE OF bapiret2,        " BAPI return&lt;/P&gt;&lt;P&gt;        li_items     TYPE TABLE OF bapimepoitem,    " BAPI Item&lt;/P&gt;&lt;P&gt;        li_itemx     TYPE TABLE OF bapimepoitemx,   " BAPI ITEMX&lt;/P&gt;&lt;P&gt;        lwa_return   TYPE bapiret2,                 " BAPI return heade&lt;/P&gt;&lt;P&gt;        lwa_items    TYPE bapimepoitem,             " Item Wa&lt;/P&gt;&lt;P&gt;        lwa_itemx    TYPE bapimepoitemx,            " ITEMx&lt;/P&gt;&lt;P&gt;        lv_ebelp     TYPE ekpo-ebelp.     "#EC *   " Purchase order&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       wa_cond      TYPE bapimepocond.    "#EC *   "&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       li_cond      TYPE TABLE OF bapimepocond.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_updateitems BY ebeln ebelp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT i_updateitems INTO wa_updateitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    lv_index = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Purchase order for passing to the BAPI&lt;/P&gt;&lt;P&gt;    lv_purcno = wa_updateitems-ebeln.&lt;/P&gt;&lt;P&gt;    AT NEW ebeln.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Get the Maximum line item number&lt;/P&gt;&lt;P&gt;      CLEAR lv_ebelp.&lt;/P&gt;&lt;P&gt;      SELECT MAX( ebelp ) INTO lv_ebelp&lt;/P&gt;&lt;P&gt;        FROM ekpo&lt;/P&gt;&lt;P&gt;        WHERE ebeln = lv_purcno.&lt;/P&gt;&lt;P&gt;      lv_ebelp = lv_ebelp + 10.&lt;/P&gt;&lt;P&gt;    ENDAT.                      " at new ebeln&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; if material number is populated then it is the new item&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt;if not it is update of the old item&lt;/P&gt;&lt;P&gt;    IF  NOT wa_updateitems-matnr IS INITIAL.&lt;/P&gt;&lt;P&gt;      wa_updateitems-ebelp_n = lv_ebelp.&lt;/P&gt;&lt;P&gt;      MOVE: wa_updateitems-ebelp_n TO lwa_items-po_item,&lt;/P&gt;&lt;P&gt;            wa_updateitems-ebelp_n TO lwa_itemx-po_item,&lt;/P&gt;&lt;P&gt;            wa_updateitems-matnr   TO lwa_items-material,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-material,&lt;/P&gt;&lt;P&gt;            wa_updateitems-txz01   TO lwa_items-short_text,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-short_text,&lt;/P&gt;&lt;P&gt;            wa_updateitems-werks   TO lwa_items-plant,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-plant,&lt;/P&gt;&lt;P&gt;            wa_updateitems-menge_n TO lwa_items-quantity,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-quantity,&lt;/P&gt;&lt;P&gt;            wa_updateitems-meins   TO lwa_items-po_unit,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-po_unit,&lt;/P&gt;&lt;P&gt;            wa_updateitems-netpr   TO lwa_items-net_price,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-net_price,&lt;/P&gt;&lt;P&gt;            wa_updateitems-peinh   TO lwa_items-price_unit,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-price_unit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      lv_ebelp = lv_ebelp + 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MOVE: wa_updateitems-ebelp   TO lwa_items-po_item,&lt;/P&gt;&lt;P&gt;            wa_updateitems-ebelp   TO lwa_itemx-po_item,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_items-no_more_gr,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-no_more_gr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_updateitems-menge_n GT 0.&lt;/P&gt;&lt;P&gt;        MOVE: wa_updateitems-menge_n TO lwa_items-quantity,&lt;/P&gt;&lt;P&gt;        c_i                    TO lwa_itemx-quantity.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND lwa_items TO li_items.&lt;/P&gt;&lt;P&gt;    APPEND lwa_itemx TO li_itemx.&lt;/P&gt;&lt;P&gt;    CLEAR: lwa_items,lwa_itemx.&lt;/P&gt;&lt;P&gt;    AT END OF ebelp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Get the correct values from the right hand side of the change&lt;/P&gt;&lt;P&gt;      READ TABLE i_updateitems INTO wa_updateitems INDEX lv_index.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'BAPI_PO_CHANGE'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          purchaseorder = lv_purcno&lt;/P&gt;&lt;P&gt;        TABLES&lt;/P&gt;&lt;P&gt;          return        = li_return&lt;/P&gt;&lt;P&gt;          poitem        = li_items&lt;/P&gt;&lt;P&gt;          poitemx       = li_itemx.&lt;/P&gt;&lt;P&gt;      REFRESH: li_items,li_itemx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Check if there are any errrors in the PO&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; if no error exists the commit the PO&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt;if not populate the error table.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Delete message which you don't need&lt;/P&gt;&lt;P&gt;      DELETE li_return WHERE id = 'MEPO' AND&lt;/P&gt;&lt;P&gt;                             number = '000'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT li_return INTO lwa_return WHERE type = 'E'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING wa_updateitems TO wa_error.&lt;/P&gt;&lt;P&gt;        MOVE:&lt;/P&gt;&lt;P&gt;        wa_updateitems-ebelp_n TO wa_error-ebelp_n,&lt;/P&gt;&lt;P&gt;              wa_updateitems-menge_n TO wa_error-menge_n,&lt;/P&gt;&lt;P&gt;              lwa_return-number      TO wa_error-msgnr,&lt;/P&gt;&lt;P&gt;              lwa_return-message     TO wa_error-txt.&lt;/P&gt;&lt;P&gt;        APPEND wa_error TO i_error.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Commit the Purchase order&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            wait = c_i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.                " if sy-subrc ne 0&lt;/P&gt;&lt;P&gt;      REFRESH li_return.&lt;/P&gt;&lt;P&gt;    ENDAT.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " call_bapi_po_change&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  error_report&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Display errors in file or spool as the the execution of the program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM error_report .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; message on completion of the program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Print the error report only when there are errors.&lt;/P&gt;&lt;P&gt;  IF NOT i_error[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; If the program is run in backgroung then send to spool.&lt;/P&gt;&lt;P&gt;    IF sy-batch = c_i.&lt;/P&gt;&lt;P&gt;      PERFORM send_to_spool.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      PERFORM write_errors_to_file.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    MESSAGE s520.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MESSAGE s521.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " error_report&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  write_errors_to_file&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;all errrors when the program runs in foreground will be stored in the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the file as per the selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM write_errors_to_file .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_file TYPE string,&lt;/P&gt;&lt;P&gt;        wa_error TYPE t_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; prepare the heading for the download file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  wa_error-ebeln   = 'Purchase order'(013).&lt;/P&gt;&lt;P&gt;  wa_error-ebelp   = 'Old Item No'(014).&lt;/P&gt;&lt;P&gt;  wa_error-txz01   = 'Description'(015).&lt;/P&gt;&lt;P&gt;  wa_error-menge   = 'Old Qty'(007).&lt;/P&gt;&lt;P&gt;  wa_error-ebelp_n =  'New Item no'(016).&lt;/P&gt;&lt;P&gt;  wa_error-matnr   = 'Material No'(009).&lt;/P&gt;&lt;P&gt;  wa_error-menge_n = 'New Qty'(010).&lt;/P&gt;&lt;P&gt;  wa_error-msgnr   = 'Msg NO'(017).&lt;/P&gt;&lt;P&gt;  wa_error-txt     =  'Message Text'(018).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  INSERT wa_error INTO i_error INDEX 1.&lt;/P&gt;&lt;P&gt;  lv_file = p_file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Call the function to download&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'GUI_DOWNLOAD'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      filename                = lv_file&lt;/P&gt;&lt;P&gt;      filetype                = 'ASC'&lt;/P&gt;&lt;P&gt;      write_field_separator   = c_i&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      data_tab                = i_error&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FIELDNAMES              = x&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      file_write_error        = 1&lt;/P&gt;&lt;P&gt;      no_batch                = 2&lt;/P&gt;&lt;P&gt;      gui_refuse_filetransfer = 3&lt;/P&gt;&lt;P&gt;      invalid_type            = 4&lt;/P&gt;&lt;P&gt;      no_authority            = 5&lt;/P&gt;&lt;P&gt;      unknown_error           = 6&lt;/P&gt;&lt;P&gt;      header_not_allowed      = 7&lt;/P&gt;&lt;P&gt;      separator_not_allowed   = 8&lt;/P&gt;&lt;P&gt;      filesize_not_allowed    = 9&lt;/P&gt;&lt;P&gt;      header_too_long         = 10&lt;/P&gt;&lt;P&gt;      dp_error_create         = 11&lt;/P&gt;&lt;P&gt;      dp_error_send           = 12&lt;/P&gt;&lt;P&gt;      dp_error_write          = 13&lt;/P&gt;&lt;P&gt;      unknown_dp_error        = 14&lt;/P&gt;&lt;P&gt;      access_denied           = 15&lt;/P&gt;&lt;P&gt;      dp_out_of_memory        = 16&lt;/P&gt;&lt;P&gt;      disk_full               = 17&lt;/P&gt;&lt;P&gt;      dp_timeout              = 18&lt;/P&gt;&lt;P&gt;      file_not_found          = 19&lt;/P&gt;&lt;P&gt;      dataprovider_exception  = 20&lt;/P&gt;&lt;P&gt;      control_flush_error     = 21&lt;/P&gt;&lt;P&gt;      OTHERS                  = 22.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " write_errors_to_file&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  send_to_spool&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;when the program is run in bacground the program will send the error&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;messages in to spool&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM send_to_spool .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT i_error INTO wa_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE:/1   wa_error-ebeln,&lt;/P&gt;&lt;P&gt;           11  wa_error-ebelp,&lt;/P&gt;&lt;P&gt;           21  wa_error-txz01,&lt;/P&gt;&lt;P&gt;           62  wa_error-menge DECIMALS 2 ,&lt;/P&gt;&lt;P&gt;           82  wa_error-ebelp_n,&lt;/P&gt;&lt;P&gt;           92  wa_error-matnr,&lt;/P&gt;&lt;P&gt;           110 wa_error-menge_n DECIMALS 2,&lt;/P&gt;&lt;P&gt;           130 wa_error-msgnr,&lt;/P&gt;&lt;P&gt;           137 wa_error-txt.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " send_to_spool&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  top_of_page&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; This subroutine call the standard genentech top-of-page function&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; for displaying the top of the page&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM top_of_page .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'Z_REPORT_HEADER'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      report_header = text-003&lt;/P&gt;&lt;P&gt;      line_size     = '255'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      user_error    = 1&lt;/P&gt;&lt;P&gt;      OTHERS        = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:/1   'PO Number'(004),&lt;/P&gt;&lt;P&gt;         11  'Old itm'(005),&lt;/P&gt;&lt;P&gt;         21  'Item Text'(006),&lt;/P&gt;&lt;P&gt;         62  'Old Qty'(007),&lt;/P&gt;&lt;P&gt;         82  'New Itm'(008),&lt;/P&gt;&lt;P&gt;         92  'Material No'(009),&lt;/P&gt;&lt;P&gt;         110 'New Qty'(010),&lt;/P&gt;&lt;P&gt;         130 'Msgno'(011),&lt;/P&gt;&lt;P&gt;         137 'Error text'(012).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " top_of_page&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward if helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Nagaraj&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 15 Oct 2007 07:21:36 GMT</pubDate>
    <dc:creator>former_member404244</dc:creator>
    <dc:date>2007-10-15T07:21:36Z</dc:date>
    <item>
      <title>give an example for bapi and give code plz</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951179#M695935</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;how will u access bapi, give an object with expalnation&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2007 07:16:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951179#M695935</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-15T07:16:33Z</dc:date>
    </item>
    <item>
      <title>Re: give an example for bapi and give code plz</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951180#M695936</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Go to SE37.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;put bapi* &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;press F4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you have a number of bapi's here.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you use them from se37 only.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you also have a number of bapi's and code as well, they are just like that of FM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward if useful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Amit Singla&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        Amit Singla&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2007 07:20:13 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951180#M695936</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-15T07:20:13Z</dc:date>
    </item>
    <item>
      <title>Re: give an example for bapi and give code plz</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951181#M695937</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;try tcode BAPI.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards, Dieter&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2007 07:20:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951181#M695937</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-15T07:20:59Z</dc:date>
    </item>
    <item>
      <title>Re: give an example for bapi and give code plz</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951182#M695938</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;chek this&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  ztest .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               TABLES DECLARATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: ekko.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                    TYPES DECLARATIONS                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          TYPES DECLARATION FOR OPEN QUANTITY PO ITEMS               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_openpoitems,&lt;/P&gt;&lt;P&gt;          ebeln TYPE ebeln,        "Purchasing Document Number&lt;/P&gt;&lt;P&gt;          ebelp TYPE ekpo-ebelp,   "Item Number of Purchasing Document&lt;/P&gt;&lt;P&gt;          bukrs TYPE bukrs,        "Company Code&lt;/P&gt;&lt;P&gt;          bedat TYPE bedat,        "Purchasing Document Date&lt;/P&gt;&lt;P&gt;          menge TYPE ekpo-menge,   "Purchase order quantity&lt;/P&gt;&lt;P&gt;          txz01 TYPE ekpo-txz01,   "Short text&lt;/P&gt;&lt;P&gt;          werks TYPE ekpo-werks,   "Plant&lt;/P&gt;&lt;P&gt;          matkl TYPE ekpo-matkl,   "Material Group&lt;/P&gt;&lt;P&gt;          elikz TYPE ekpo-elikz,   "Delivery Completed Indicator&lt;/P&gt;&lt;P&gt;          meins TYPE ekpo-meins,   "Order Unit&lt;/P&gt;&lt;P&gt;          netpr TYPE ekpo-netpr,   "Net price in purchasing document&lt;/P&gt;&lt;P&gt;          peinh TYPE ekpo-peinh,   "Price unit&lt;/P&gt;&lt;P&gt;       END OF t_openpoitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      TYPES DECLARATION FOR UPDATION OF LINE ITEMS                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_updateitems,&lt;/P&gt;&lt;P&gt;         ebeln   TYPE ebeln,        "Purchasing Document Number&lt;/P&gt;&lt;P&gt;         ebelp   TYPE ekpo-ebelp,   "Item Number of Purchasing Document&lt;/P&gt;&lt;P&gt;         matnr   TYPE ekpo-matnr,   "Material Number&lt;/P&gt;&lt;P&gt;         txz01   TYPE ekpo-txz01,   " Item Description&lt;/P&gt;&lt;P&gt;         menge   TYPE ekpo-menge,   "Purchase order quantity&lt;/P&gt;&lt;P&gt;         meins   TYPE ekpo-meins,   "Order Unit&lt;/P&gt;&lt;P&gt;         werks   TYPE ekpo-werks,   "Plant&lt;/P&gt;&lt;P&gt;         elikz   TYPE ekpo-elikz,   "Delivery Completed Indicator&lt;/P&gt;&lt;P&gt;         netpr   TYPE ekpo-netpr,   "Net price in purchasing document&lt;/P&gt;&lt;P&gt;         peinh   TYPE ekpo-peinh,   "Price unit&lt;/P&gt;&lt;P&gt;         ebelp_n TYPE ekpo-ebelp,   " New line item&lt;/P&gt;&lt;P&gt;         menge_n TYPE ekpo-menge,   " New Qty&lt;/P&gt;&lt;P&gt;       END OF t_updateitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        TYPES DECLARATION TO SUM OF DELIVERED FOR AN ITEM            *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_podelitems,&lt;/P&gt;&lt;P&gt;         ebeln  TYPE ekko-ebeln,  " Purchase doc. no&lt;/P&gt;&lt;P&gt;         ebelp  TYPE ekpo-ebelp,  " Item number&lt;/P&gt;&lt;P&gt;         wemng  TYPE eket-wemng,  " Quantity&lt;/P&gt;&lt;P&gt;       END OF t_podelitems.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TYPES DECLARATION FOR MATERIAL THAT EXISTS                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_matnr,&lt;/P&gt;&lt;P&gt;        matnr TYPE mara-matnr,   " Material&lt;/P&gt;&lt;P&gt;       END OF t_matnr.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TYPES DECLARATION FOR ERROR LOG                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_error,&lt;/P&gt;&lt;P&gt;         ebeln(30)   TYPE c,          " Purchase order&lt;/P&gt;&lt;P&gt;         ebelp(8)    TYPE c,          " Item Number&lt;/P&gt;&lt;P&gt;         txz01(40)   TYPE c,          " Description&lt;/P&gt;&lt;P&gt;         menge(18)   TYPE c,          " Quantity&lt;/P&gt;&lt;P&gt;         ebelp_n(8)  TYPE c,          " New Item No&lt;/P&gt;&lt;P&gt;         matnr(18)   TYPE c,          " Material No&lt;/P&gt;&lt;P&gt;         menge_n(18) TYPE c,          " Quantity new&lt;/P&gt;&lt;P&gt;         msgnr(10)   TYPE c,          " SAP MSG no&lt;/P&gt;&lt;P&gt;         txt(100)    TYPE c,          " Message Text&lt;/P&gt;&lt;P&gt;       END   OF t_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                    DATA DECLARATIONS                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_matnr TYPE SORTED TABLE OF t_matnr WITH UNIQUE KEY matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_error TYPE TABLE OF t_error,&lt;/P&gt;&lt;P&gt;      wa_error TYPE t_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_updateitems   TYPE TABLE OF t_updateitems,&lt;/P&gt;&lt;P&gt;      wa_updateitems  TYPE t_updateitems.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     v_error         TYPE c. "#EC *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        CONSTANTS                                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS: c_i(1)      TYPE c VALUE 'X'.      "Constant with Value 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                    SELECTION SCREEN                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME.&lt;/P&gt;&lt;P&gt;PARAMETERS  p_file TYPE rlgrap-filename OBLIGATORY." ERROR FILE PATH&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS s_ebeln FOR ekko-ebeln.   " only for testing&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK block1.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  START-OF-SELECTION                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the BCPS purchase order data for update&lt;/P&gt;&lt;P&gt;  PERFORM get_purchase_order_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Call the BAPI for changing the PO's&lt;/P&gt;&lt;P&gt;  PERFORM call_bapi_po_change.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  END-OF-SELECTION                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF i_updateitems[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    MESSAGE i002.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Display the errors in spool or Error file&lt;/P&gt;&lt;P&gt;    PERFORM error_report.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  TOP-OF-PAGE                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TOP-OF-PAGE.&lt;/P&gt;&lt;P&gt;  PERFORM top_of_page.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**********************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                               SUBROUTINES                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  get_purchase_order_data&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Retrieve all the purchase orders for conversion&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_purchase_order_data .&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           DATA DECLARATION                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONSTANTS: lc_bpcs TYPE ekko-bsart VALUE 'BPCS', " PO type&lt;/P&gt;&lt;P&gt;             lc_f    TYPE ekko-bstyp VALUE 'F',    " PO category&lt;/P&gt;&lt;P&gt;             lc_r    TYPE ekpo-knttp VALUE 'R'.    " Item Cat&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: li_openpoitems      TYPE TABLE OF t_openpoitems,&lt;/P&gt;&lt;P&gt;        lwa_openpoitems     TYPE t_openpoitems,&lt;/P&gt;&lt;P&gt;        li_podelitems       TYPE TABLE OF t_podelitems,&lt;/P&gt;&lt;P&gt;        lwa_podelitems      TYPE t_podelitems,&lt;/P&gt;&lt;P&gt;        lwa_poitemsum       TYPE t_podelitems,&lt;/P&gt;&lt;P&gt;        li_poitemsum        TYPE SORTED TABLE OF t_podelitems&lt;/P&gt;&lt;P&gt;                                      WITH UNIQUE KEY ebeln ebelp,&lt;/P&gt;&lt;P&gt;        lv_matnr            TYPE mara-matnr,&lt;/P&gt;&lt;P&gt;        lv_rcode            TYPE sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the BPCS Purchase Order and there line items which&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; are not completely delivered&lt;/P&gt;&lt;P&gt;  SELECT ekko&lt;SUB&gt;ebeln ekpo&lt;/SUB&gt;ebelp ekko&lt;SUB&gt;bukrs ekko&lt;/SUB&gt;bedat  ekpo~menge txz01&lt;/P&gt;&lt;P&gt;       werks matkl elikz meins netpr peinh&lt;/P&gt;&lt;P&gt;    FROM ekko JOIN ekpo ON&lt;/P&gt;&lt;P&gt;      ekpo&lt;SUB&gt;ebeln = ekko&lt;/SUB&gt;ebeln&lt;/P&gt;&lt;P&gt;    INTO TABLE LI_OPENPOITEMS&lt;/P&gt;&lt;P&gt;        WHERE bsart EQ lc_bpcs        AND&lt;/P&gt;&lt;P&gt;              ekko~bstyp EQ lc_f      AND&lt;/P&gt;&lt;P&gt;              ekko~ebeln IN s_ebeln   AND&lt;/P&gt;&lt;P&gt;              knttp EQ lc_r           AND&lt;/P&gt;&lt;P&gt;              elikz EQ space          AND&lt;/P&gt;&lt;P&gt;              ekpo~loekz EQ space     AND&lt;/P&gt;&lt;P&gt;              ekko~loekz EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the sum of of delivered quantity for the&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; purchase order scheduled items&lt;/P&gt;&lt;P&gt;    SELECT ebeln ebelp wemng&lt;/P&gt;&lt;P&gt;      FROM eket&lt;/P&gt;&lt;P&gt;       INTO TABLE li_podelitems&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN li_openpoitems&lt;/P&gt;&lt;P&gt;      WHERE ebeln = li_openpoitems-ebeln AND&lt;/P&gt;&lt;P&gt;            ebelp = li_openpoitems-ebelp.&lt;/P&gt;&lt;P&gt;    IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Sum the delivered quantity of each line item&lt;/P&gt;&lt;P&gt;      LOOP AT  li_podelitems INTO lwa_podelitems.&lt;/P&gt;&lt;P&gt;        MOVE: lwa_podelitems TO lwa_poitemsum.&lt;/P&gt;&lt;P&gt;        COLLECT lwa_poitemsum INTO li_poitemsum.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Exit when there are no records selected&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ENDIF.              " if sy-subrc eq 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Get allthe purchase orders which needs to be changed&lt;/P&gt;&lt;P&gt;  LOOP AT li_openpoitems INTO lwa_openpoitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Read the table for delivered quantity&lt;/P&gt;&lt;P&gt;    CLEAR lwa_poitemsum.&lt;/P&gt;&lt;P&gt;    READ TABLE li_poitemsum INTO lwa_poitemsum&lt;/P&gt;&lt;P&gt;                        WITH KEY ebeln = lwa_openpoitems-ebeln&lt;/P&gt;&lt;P&gt;                            ebelp = lwa_openpoitems-ebelp BINARY SEARCH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; check if delivered QTY is GT PO QTY then skip&lt;/P&gt;&lt;P&gt;    IF lwa_poitemsum-wemng GT lwa_openpoitems-menge.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Identify the material number from the description&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the numberic part from the material description&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; untill you find a character.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; get the length of the description&lt;/P&gt;&lt;P&gt;    PERFORM get_material_from_description&lt;/P&gt;&lt;P&gt;                       USING    lwa_openpoitems-txz01&lt;/P&gt;&lt;P&gt;                       CHANGING lv_matnr.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; If there is no numberic part in the desc. then error&lt;/P&gt;&lt;P&gt;    IF lv_matnr = space.&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING lwa_openpoitems TO wa_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE: 'Material not found in the descrition'(001) TO wa_error-txt.&lt;/P&gt;&lt;P&gt;      APPEND wa_error TO i_error.&lt;/P&gt;&lt;P&gt;      CLEAR wa_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; validate if it is a valid material.&lt;/P&gt;&lt;P&gt;    PERFORM validate_material USING     lv_matnr&lt;/P&gt;&lt;P&gt;                              CHANGING  lv_rcode.&lt;/P&gt;&lt;P&gt;    IF lv_rcode NE 0.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Error the record and process next record&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING lwa_openpoitems TO wa_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MOVE: 'Material not found in SAP'(002) TO wa_error-txt.&lt;/P&gt;&lt;P&gt;      APPEND wa_error TO i_error.&lt;/P&gt;&lt;P&gt;      CLEAR wa_error.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; if the Purchase order quantity is greater than delivered quantity&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; then change the purchase order item quantity and set delivery ind&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; complete and create a new line item with the new material number&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt;  with the remaining quantity&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING lwa_openpoitems TO wa_updateitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF lwa_poitemsum-wemng LE lwa_openpoitems-menge.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; now also we have to update the old item&lt;/P&gt;&lt;P&gt;      wa_updateitems-elikz = c_i.&lt;/P&gt;&lt;P&gt;      IF lwa_poitemsum-wemng GT 0.&lt;/P&gt;&lt;P&gt;        wa_updateitems-menge_n = lwa_poitemsum-wemng.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      APPEND wa_updateitems TO i_updateitems.&lt;/P&gt;&lt;P&gt;      wa_updateitems-ebelp_n = ''.&lt;/P&gt;&lt;P&gt;      wa_updateitems-matnr = lv_matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_updateitems-menge_n =&lt;/P&gt;&lt;P&gt;      lwa_openpoitems-menge - lwa_poitemsum-wemng.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Don't add when the line item is greater than 0&lt;/P&gt;&lt;P&gt;      IF wa_updateitems-menge_n EQ 0.&lt;/P&gt;&lt;P&gt;        CONTINUE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      APPEND wa_updateitems TO i_updateitems.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    CLEAR wa_updateitems.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " get_purchase_order_data&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  get_material_From&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Retrieves the material number from the description&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_material_from_description&lt;/P&gt;&lt;P&gt;                        USING    value(p_desc) TYPE ekpo-txz01&lt;/P&gt;&lt;P&gt;                        CHANGING       p_matnr TYPE ekpo-matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           DATA DECLARATION                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:  lv_pos              TYPE sy-tabix,  " Index&lt;/P&gt;&lt;P&gt;         lv_char             TYPE c.         " Get charater&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        lv_length(2)        TYPE n.  "#EC * " Length&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR p_matnr.&lt;/P&gt;&lt;P&gt;  DO 7  TIMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Get each charater and check if it is numberic or not&lt;/P&gt;&lt;P&gt;    lv_char = p_desc+lv_pos(1).&lt;/P&gt;&lt;P&gt;    IF lv_char CO '0123456789'.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; if it finds the charater in the string then the initial part&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; is the numberic part&lt;/P&gt;&lt;P&gt;      IF lv_pos &amp;gt; 0.&lt;/P&gt;&lt;P&gt;        p_matnr = p_desc+0(lv_pos).&lt;/P&gt;&lt;P&gt;        EXIT.   " Do loop.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    lv_pos = lv_pos + 1.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " get_material_From&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  validate_material&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Validate the material number found from the description&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM validate_material  USING    value(p_matnr) TYPE mara-matnr&lt;/P&gt;&lt;P&gt;                        CHANGING p_rcode TYPE sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE i_matnr WITH KEY matnr = p_matnr TRANSPORTING NO FIELDS.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    SELECT matnr APPENDING TABLE i_matnr&lt;/P&gt;&lt;P&gt;      FROM mara&lt;/P&gt;&lt;P&gt;      WHERE matnr = p_matnr.&lt;/P&gt;&lt;P&gt;    p_rcode = sy-subrc.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    p_rcode = 0.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " validate_material&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  call_bapi_po_change&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BAPI will be called here to update the line or add a new line item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM call_bapi_po_change .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_index     TYPE sy-tabix,                 " Index&lt;/P&gt;&lt;P&gt;        lv_purcno    TYPE bapimepoheader-po_number, " Bapi PO variable&lt;/P&gt;&lt;P&gt;        li_return    TYPE TABLE OF bapiret2,        " BAPI return&lt;/P&gt;&lt;P&gt;        li_items     TYPE TABLE OF bapimepoitem,    " BAPI Item&lt;/P&gt;&lt;P&gt;        li_itemx     TYPE TABLE OF bapimepoitemx,   " BAPI ITEMX&lt;/P&gt;&lt;P&gt;        lwa_return   TYPE bapiret2,                 " BAPI return heade&lt;/P&gt;&lt;P&gt;        lwa_items    TYPE bapimepoitem,             " Item Wa&lt;/P&gt;&lt;P&gt;        lwa_itemx    TYPE bapimepoitemx,            " ITEMx&lt;/P&gt;&lt;P&gt;        lv_ebelp     TYPE ekpo-ebelp.     "#EC *   " Purchase order&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       wa_cond      TYPE bapimepocond.    "#EC *   "&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       li_cond      TYPE TABLE OF bapimepocond.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_updateitems BY ebeln ebelp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT i_updateitems INTO wa_updateitems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    lv_index = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Purchase order for passing to the BAPI&lt;/P&gt;&lt;P&gt;    lv_purcno = wa_updateitems-ebeln.&lt;/P&gt;&lt;P&gt;    AT NEW ebeln.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Get the Maximum line item number&lt;/P&gt;&lt;P&gt;      CLEAR lv_ebelp.&lt;/P&gt;&lt;P&gt;      SELECT MAX( ebelp ) INTO lv_ebelp&lt;/P&gt;&lt;P&gt;        FROM ekpo&lt;/P&gt;&lt;P&gt;        WHERE ebeln = lv_purcno.&lt;/P&gt;&lt;P&gt;      lv_ebelp = lv_ebelp + 10.&lt;/P&gt;&lt;P&gt;    ENDAT.                      " at new ebeln&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; if material number is populated then it is the new item&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt;if not it is update of the old item&lt;/P&gt;&lt;P&gt;    IF  NOT wa_updateitems-matnr IS INITIAL.&lt;/P&gt;&lt;P&gt;      wa_updateitems-ebelp_n = lv_ebelp.&lt;/P&gt;&lt;P&gt;      MOVE: wa_updateitems-ebelp_n TO lwa_items-po_item,&lt;/P&gt;&lt;P&gt;            wa_updateitems-ebelp_n TO lwa_itemx-po_item,&lt;/P&gt;&lt;P&gt;            wa_updateitems-matnr   TO lwa_items-material,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-material,&lt;/P&gt;&lt;P&gt;            wa_updateitems-txz01   TO lwa_items-short_text,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-short_text,&lt;/P&gt;&lt;P&gt;            wa_updateitems-werks   TO lwa_items-plant,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-plant,&lt;/P&gt;&lt;P&gt;            wa_updateitems-menge_n TO lwa_items-quantity,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-quantity,&lt;/P&gt;&lt;P&gt;            wa_updateitems-meins   TO lwa_items-po_unit,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-po_unit,&lt;/P&gt;&lt;P&gt;            wa_updateitems-netpr   TO lwa_items-net_price,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-net_price,&lt;/P&gt;&lt;P&gt;            wa_updateitems-peinh   TO lwa_items-price_unit,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-price_unit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      lv_ebelp = lv_ebelp + 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MOVE: wa_updateitems-ebelp   TO lwa_items-po_item,&lt;/P&gt;&lt;P&gt;            wa_updateitems-ebelp   TO lwa_itemx-po_item,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_items-no_more_gr,&lt;/P&gt;&lt;P&gt;            c_i                    TO lwa_itemx-no_more_gr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_updateitems-menge_n GT 0.&lt;/P&gt;&lt;P&gt;        MOVE: wa_updateitems-menge_n TO lwa_items-quantity,&lt;/P&gt;&lt;P&gt;        c_i                    TO lwa_itemx-quantity.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND lwa_items TO li_items.&lt;/P&gt;&lt;P&gt;    APPEND lwa_itemx TO li_itemx.&lt;/P&gt;&lt;P&gt;    CLEAR: lwa_items,lwa_itemx.&lt;/P&gt;&lt;P&gt;    AT END OF ebelp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Get the correct values from the right hand side of the change&lt;/P&gt;&lt;P&gt;      READ TABLE i_updateitems INTO wa_updateitems INDEX lv_index.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'BAPI_PO_CHANGE'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          purchaseorder = lv_purcno&lt;/P&gt;&lt;P&gt;        TABLES&lt;/P&gt;&lt;P&gt;          return        = li_return&lt;/P&gt;&lt;P&gt;          poitem        = li_items&lt;/P&gt;&lt;P&gt;          poitemx       = li_itemx.&lt;/P&gt;&lt;P&gt;      REFRESH: li_items,li_itemx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Check if there are any errrors in the PO&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; if no error exists the commit the PO&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt;if not populate the error table.&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Delete message which you don't need&lt;/P&gt;&lt;P&gt;      DELETE li_return WHERE id = 'MEPO' AND&lt;/P&gt;&lt;P&gt;                             number = '000'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT li_return INTO lwa_return WHERE type = 'E'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING wa_updateitems TO wa_error.&lt;/P&gt;&lt;P&gt;        MOVE:&lt;/P&gt;&lt;P&gt;        wa_updateitems-ebelp_n TO wa_error-ebelp_n,&lt;/P&gt;&lt;P&gt;              wa_updateitems-menge_n TO wa_error-menge_n,&lt;/P&gt;&lt;P&gt;              lwa_return-number      TO wa_error-msgnr,&lt;/P&gt;&lt;P&gt;              lwa_return-message     TO wa_error-txt.&lt;/P&gt;&lt;P&gt;        APPEND wa_error TO i_error.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Commit the Purchase order&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            wait = c_i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.                " if sy-subrc ne 0&lt;/P&gt;&lt;P&gt;      REFRESH li_return.&lt;/P&gt;&lt;P&gt;    ENDAT.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " call_bapi_po_change&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  error_report&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Display errors in file or spool as the the execution of the program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM error_report .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; message on completion of the program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Print the error report only when there are errors.&lt;/P&gt;&lt;P&gt;  IF NOT i_error[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; If the program is run in backgroung then send to spool.&lt;/P&gt;&lt;P&gt;    IF sy-batch = c_i.&lt;/P&gt;&lt;P&gt;      PERFORM send_to_spool.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      PERFORM write_errors_to_file.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    MESSAGE s520.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MESSAGE s521.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " error_report&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  write_errors_to_file&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;all errrors when the program runs in foreground will be stored in the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the file as per the selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM write_errors_to_file .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_file TYPE string,&lt;/P&gt;&lt;P&gt;        wa_error TYPE t_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; prepare the heading for the download file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  wa_error-ebeln   = 'Purchase order'(013).&lt;/P&gt;&lt;P&gt;  wa_error-ebelp   = 'Old Item No'(014).&lt;/P&gt;&lt;P&gt;  wa_error-txz01   = 'Description'(015).&lt;/P&gt;&lt;P&gt;  wa_error-menge   = 'Old Qty'(007).&lt;/P&gt;&lt;P&gt;  wa_error-ebelp_n =  'New Item no'(016).&lt;/P&gt;&lt;P&gt;  wa_error-matnr   = 'Material No'(009).&lt;/P&gt;&lt;P&gt;  wa_error-menge_n = 'New Qty'(010).&lt;/P&gt;&lt;P&gt;  wa_error-msgnr   = 'Msg NO'(017).&lt;/P&gt;&lt;P&gt;  wa_error-txt     =  'Message Text'(018).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  INSERT wa_error INTO i_error INDEX 1.&lt;/P&gt;&lt;P&gt;  lv_file = p_file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-&amp;gt;&amp;gt; Call the function to download&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'GUI_DOWNLOAD'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      filename                = lv_file&lt;/P&gt;&lt;P&gt;      filetype                = 'ASC'&lt;/P&gt;&lt;P&gt;      write_field_separator   = c_i&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      data_tab                = i_error&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FIELDNAMES              = x&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      file_write_error        = 1&lt;/P&gt;&lt;P&gt;      no_batch                = 2&lt;/P&gt;&lt;P&gt;      gui_refuse_filetransfer = 3&lt;/P&gt;&lt;P&gt;      invalid_type            = 4&lt;/P&gt;&lt;P&gt;      no_authority            = 5&lt;/P&gt;&lt;P&gt;      unknown_error           = 6&lt;/P&gt;&lt;P&gt;      header_not_allowed      = 7&lt;/P&gt;&lt;P&gt;      separator_not_allowed   = 8&lt;/P&gt;&lt;P&gt;      filesize_not_allowed    = 9&lt;/P&gt;&lt;P&gt;      header_too_long         = 10&lt;/P&gt;&lt;P&gt;      dp_error_create         = 11&lt;/P&gt;&lt;P&gt;      dp_error_send           = 12&lt;/P&gt;&lt;P&gt;      dp_error_write          = 13&lt;/P&gt;&lt;P&gt;      unknown_dp_error        = 14&lt;/P&gt;&lt;P&gt;      access_denied           = 15&lt;/P&gt;&lt;P&gt;      dp_out_of_memory        = 16&lt;/P&gt;&lt;P&gt;      disk_full               = 17&lt;/P&gt;&lt;P&gt;      dp_timeout              = 18&lt;/P&gt;&lt;P&gt;      file_not_found          = 19&lt;/P&gt;&lt;P&gt;      dataprovider_exception  = 20&lt;/P&gt;&lt;P&gt;      control_flush_error     = 21&lt;/P&gt;&lt;P&gt;      OTHERS                  = 22.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " write_errors_to_file&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  send_to_spool&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;when the program is run in bacground the program will send the error&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;messages in to spool&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM send_to_spool .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT i_error INTO wa_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE:/1   wa_error-ebeln,&lt;/P&gt;&lt;P&gt;           11  wa_error-ebelp,&lt;/P&gt;&lt;P&gt;           21  wa_error-txz01,&lt;/P&gt;&lt;P&gt;           62  wa_error-menge DECIMALS 2 ,&lt;/P&gt;&lt;P&gt;           82  wa_error-ebelp_n,&lt;/P&gt;&lt;P&gt;           92  wa_error-matnr,&lt;/P&gt;&lt;P&gt;           110 wa_error-menge_n DECIMALS 2,&lt;/P&gt;&lt;P&gt;           130 wa_error-msgnr,&lt;/P&gt;&lt;P&gt;           137 wa_error-txt.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " send_to_spool&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  top_of_page&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; This subroutine call the standard genentech top-of-page function&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; for displaying the top of the page&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM top_of_page .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'Z_REPORT_HEADER'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      report_header = text-003&lt;/P&gt;&lt;P&gt;      line_size     = '255'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      user_error    = 1&lt;/P&gt;&lt;P&gt;      OTHERS        = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE:/1   'PO Number'(004),&lt;/P&gt;&lt;P&gt;         11  'Old itm'(005),&lt;/P&gt;&lt;P&gt;         21  'Item Text'(006),&lt;/P&gt;&lt;P&gt;         62  'Old Qty'(007),&lt;/P&gt;&lt;P&gt;         82  'New Itm'(008),&lt;/P&gt;&lt;P&gt;         92  'Material No'(009),&lt;/P&gt;&lt;P&gt;         110 'New Qty'(010),&lt;/P&gt;&lt;P&gt;         130 'Msgno'(011),&lt;/P&gt;&lt;P&gt;         137 'Error text'(012).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " top_of_page&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward if helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Nagaraj&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2007 07:21:36 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951182#M695938</guid>
      <dc:creator>former_member404244</dc:creator>
      <dc:date>2007-10-15T07:21:36Z</dc:date>
    </item>
    <item>
      <title>Re: give an example for bapi and give code plz</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951183#M695939</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;int_bapi_item_data-invoice_doc_item = '0001'.&lt;/P&gt;&lt;P&gt;              int_bapi_item_data-po_number =  '6510003165'.&lt;/P&gt;&lt;P&gt;              int_bapi_item_data-po_item = '0001'.&lt;/P&gt;&lt;P&gt;              int_bapi_item_data-tax_code = 'E0'.&lt;/P&gt;&lt;P&gt;              int_bapi_item_data-item_amount = '10000.00'.&lt;/P&gt;&lt;P&gt;              APPEND int_bapi_item_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              acc_data-invoice_doc_item = '0001'.&lt;/P&gt;&lt;P&gt;              acc_data-xunpl = 'X'.&lt;/P&gt;&lt;P&gt;              acc_data-tax_code = 'E0'.&lt;/P&gt;&lt;P&gt;              acc_data-item_amount =  '10000.00'.&lt;/P&gt;&lt;P&gt;              acc_data-gl_account = '0009900001'.&lt;/P&gt;&lt;P&gt;              APPEND acc_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          wf_bapi_header_data-invoice_ind = 'X'.&lt;/P&gt;&lt;P&gt;          wf_bapi_header_data-doc_type    = 'RE'.&lt;/P&gt;&lt;P&gt;          wf_bapi_header_data-doc_date    = sy-datum.&lt;/P&gt;&lt;P&gt;          wf_bapi_header_data-pstng_date  = '20070806'.&lt;/P&gt;&lt;P&gt;          CONCATENATE P_ipABrp p_ipabrj  loc_date sy-uzeit  INTO&lt;/P&gt;&lt;P&gt;          wf_bapi_header_data-ref_doc_no.&lt;/P&gt;&lt;P&gt;          wf_bapi_header_data-comp_code    = '1000'.&lt;/P&gt;&lt;P&gt;          wf_bapi_header_data-gross_amount = '122222' .&lt;/P&gt;&lt;P&gt;          wf_bapi_header_data-currency = 'USD'.&lt;/P&gt;&lt;P&gt;          wf_bapi_header_data-pmnttrms = 'NT00'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CALL FUNCTION 'ZSMP_INVOICE_CREATE' &lt;/P&gt;&lt;P&gt;            EXPORTING&lt;/P&gt;&lt;P&gt;              headerdata       = wf_bapi_header_data&lt;/P&gt;&lt;P&gt;            IMPORTING&lt;/P&gt;&lt;P&gt;              invoicedocnumber = wf_belnr&lt;/P&gt;&lt;P&gt;              fiscalyear       = wf_gjahr&lt;/P&gt;&lt;P&gt;            TABLES&lt;/P&gt;&lt;P&gt;              itemdata         = int_bapi_item_data&lt;/P&gt;&lt;P&gt;              accountingdata   = acc_data&lt;/P&gt;&lt;P&gt;              return           = int_bapi_return_messages.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                     IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2007 07:21:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/give-an-example-for-bapi-and-give-code-plz/m-p/2951183#M695939</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-15T07:21:53Z</dc:date>
    </item>
  </channel>
</rss>

