<?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: invoice creation through BAPI in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868343#M672938</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Srinivas,&lt;/P&gt;&lt;P&gt; Just do one thing go to SE37 and enter BAPI&lt;STRONG&gt;INVOIC&lt;/STRONG&gt; then press F4 now u will get all the respected FM's as you know. &lt;/P&gt;&lt;P&gt;Hope this helps you. Reply for queries, shall post the updates.  &lt;SPAN __jive_emoticon_name="happy"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards.  &lt;/P&gt;&lt;P&gt;Kumar.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 24 Sep 2007 08:41:50 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-09-24T08:41:50Z</dc:date>
    <item>
      <title>invoice creation through BAPI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868339#M672934</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi experts,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;             &lt;/P&gt;&lt;P&gt;                  I want to create invoices through bapi FM, I have the data in ME23N , By  this data i have to create.&lt;/P&gt;&lt;P&gt;        So  kindly tell me what are the necessary data i have to pick up and place into the &lt;/P&gt;&lt;P&gt;BAPI FM or tell me what i have to consider.&lt;/P&gt;&lt;P&gt;   I need item data as well as accounting data&lt;/P&gt;&lt;P&gt;           waiting for ur reply,&lt;/P&gt;&lt;P&gt;            Thanks in advance.&lt;/P&gt;&lt;P&gt;              thank u anji for quick reply&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Srinivas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2007 08:17:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868339#M672934</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-24T08:17:45Z</dc:date>
    </item>
    <item>
      <title>Re: invoice creation through BAPI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868340#M672935</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi&lt;/P&gt;&lt;P&gt;good&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can create a Billing doc/invoice from a sales order using the BAPI's&lt;/P&gt;&lt;P&gt;BAPI_BILLINGDOC_CREATE&lt;/P&gt;&lt;P&gt;BAPI_BILLINGDOC_CREATEFROMDATA&lt;/P&gt;&lt;P&gt;BAPI_BILLINGDOC_CREATEMULTIPLE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or first create a Delivery for the sales order using VL01N tcode&lt;/P&gt;&lt;P&gt;after delivery creation use that delivery doc no and create a Billing doc/Invoice using VF01 Tcode&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks&lt;/P&gt;&lt;P&gt;mrutyun^&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2007 08:20:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868340#M672935</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-24T08:20:48Z</dc:date>
    </item>
    <item>
      <title>Re: invoice creation through BAPI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868341#M672936</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;Since you have PO data with you take the PO header,Item and accounting data and use the bapi&lt;/P&gt;&lt;P&gt;BAPI_INCOMING_INVOICE_CRETAE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;see the sample code&lt;/P&gt;&lt;P&gt;REPORT z_yaktest3 NO STANDARD PAGE HEADING MESSAGE-ID zi455.&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;Internal table 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;DATA: gt_headerdata TYPE STANDARD TABLE OF bapi_incinv_create_header&lt;/P&gt;&lt;P&gt;INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;gt_itemdata TYPE STANDARD TABLE OF bapi_incinv_create_item&lt;/P&gt;&lt;P&gt;INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;gt_accountingdata TYPE STANDARD TABLE OF bapi_incinv_create_account&lt;/P&gt;&lt;P&gt;INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;gt_return TYPE STANDARD TABLE OF bapiret2&lt;/P&gt;&lt;P&gt;INITIAL SIZE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gs_headerdata LIKE bapi_incinv_create_&amp;lt;b&amp;gt;header.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;DATA: gs_itemdata LIKE bapi_incinv_create_&amp;lt;b&amp;gt;item&amp;lt;/b&amp;gt;.&lt;/P&gt;&lt;P&gt;DATA: gs_accountingdata TYPE bapi_incinv_create_&amp;lt;b&amp;gt;account.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;DATA: gs_return TYPE bapiret2.&lt;/P&gt;&lt;P&gt;DATA: l_date TYPE sy-datum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;l_date = sy-datum - 15.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Error flag *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: l_errflag(1) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build Invoice header&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&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;Document Type (Invoice)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_headerdata-invoice_ind = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;gs_headerdata-doc_type = 51.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Document Date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_headerdata-doc_date = l_date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Posting Date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_headerdata-pstng_date = l_date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Reference Document No&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_headerdata-ref_doc_no = 323348.&lt;/P&gt;&lt;P&gt;gs_headerdata-gross_amount = 31.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Currency&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_headerdata-currency = 'USD'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Company Code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_headerdata-comp_code = 'D3'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Baseline Date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;gs_headerdata-bline_date = l_date.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Tax Indicator&lt;/P&gt;&lt;P&gt;*gs_headerdata-calc_tax_ind = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build order item(s) - Only 1 is used in this example&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&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;Document Item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_itemdata-invoice_doc_item = 000001.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Purchase Order Number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_itemdata-po_number = 3700000011.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Purchase Order Item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_itemdata-po_item = 00010.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Quantity&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_itemdata-quantity = 31.&lt;/P&gt;&lt;P&gt;gs_itemdata-po_unit = 'Z00'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Item Amount&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gs_itemdata-item_amount = 31.&lt;/P&gt;&lt;P&gt;gs_itemdata-tax_code = 'O0'.&lt;/P&gt;&lt;P&gt;gs_itemdata-taxjurcode = '0100000000'.&lt;/P&gt;&lt;P&gt;APPEND gs_itemdata TO gt_itemdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Document Item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*gs_itemdata-invoice_doc_item = '00002'.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Purchase Order Number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*gs_itemdata-po_number = '4700000158'.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Purchase Order Item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*gs_itemdata-po_item ='00020' .&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Quantity&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*gs_itemdata-quantity = '5'.&lt;/P&gt;&lt;P&gt;*gs_itemdata-po_unit = 'Z00'.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Item Amount&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*gs_itemdata-item_amount = '5'.&lt;/P&gt;&lt;P&gt;*gs_itemdata-tax_code = 'O0'.&lt;/P&gt;&lt;P&gt;*gs_itemdata-taxjurcode = '0100000000'.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*APPEND gs_itemdata TO gt_itemdata.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Accounting Data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***gs_accountingdata-costcenter = 'DUMMY CCTR'.&lt;/P&gt;&lt;P&gt;*gs_accountingdata-invoice_doc_item = '00001'.&lt;/P&gt;&lt;P&gt;*gs_accountingdata-xunpl = 'X'.&lt;/P&gt;&lt;P&gt;*gs_accountingdata-tax_code = 'O0'.&lt;/P&gt;&lt;P&gt;*gs_accountingdata-taxjurcode = '0100000000'.&lt;/P&gt;&lt;P&gt;*gs_accountingdata-ITEM_AMOUNT = 100.&lt;/P&gt;&lt;P&gt;*gs_accountingdata-gl_account = '0003805101'.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*APPEND gs_accountingdata TO gt_accountingdata.&lt;/P&gt;&lt;P&gt;*CLEAR :gs_accountingdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Call the BAPI to Create the Return Order&lt;/P&gt;&lt;P&gt;data: gv_INVOICE type BAPI_INCINV_FLD-INV_DOC_NO,&lt;/P&gt;&lt;P&gt;gv_YEAR type BAPI_INCINV_FLD-FISC_YEAR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;headerdata = gs_headerdata&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;INVOICEDOCNUMBER = gv_INVOICE&lt;/P&gt;&lt;P&gt;FISCALYEAR = gv_YEAR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;return = gt_return&lt;/P&gt;&lt;P&gt;itemdata = gt_itemdata.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;accountingdata = gt_accountingdata.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PERFORM error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check and write Return table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM error.&lt;/P&gt;&lt;P&gt;LEAVE TO LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;CLEAR l_errflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT gt_return INTO gs_return.&lt;/P&gt;&lt;P&gt;WRITE: / gs_return-type, gs_return-message(200).&lt;/P&gt;&lt;P&gt;IF gs_return-type = 'E'.&lt;/P&gt;&lt;P&gt;l_errflag = 'X'.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;PERFORM commit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " ERROR INPUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;No errors - Commit&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM commit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF l_errflag IS INITIAL.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " COMMIT INPUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Anji&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2007 08:28:35 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868341#M672936</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-24T08:28:35Z</dc:date>
    </item>
    <item>
      <title>Re: invoice creation through BAPI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868342#M672937</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;      use the BAPI 'BAPI_INCOMINGINVOICE_CREATE' for invoice creation and bapi BAPI_INCINV_CREATE_HEADER for invoice header creation.Below is code for invoice creation.From Bapi call function in the code, u will get to know what header data , item data and accounting data i have to consider and take into account.&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;Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;method DO_HANDLE_EVENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data zinvheader_it type ZRMINV_HEAD_TAB.&lt;/P&gt;&lt;P&gt;  data: zinvheader type BAPI_INCINV_CREATE_HEADER.&lt;/P&gt;&lt;P&gt;  data: ddate type BLDAT.&lt;/P&gt;&lt;P&gt;  data: pdate type BUDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if htmlb_event is bound and htmlb_event-&amp;gt;server_event = 'onsave'.&lt;/P&gt;&lt;P&gt;    data: temp_tab1  type zrminvhead.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    zinvheader-doc_type = 'RE'.&lt;/P&gt;&lt;P&gt;    zinvheader-doc_date = request-&amp;gt;get_form_field( 'IDate' ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    DATE_EXTERNAL                  = zinvheader-doc_date&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ACCEPT_INITIAL_DATE            =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   DATE_INTERNAL                  = ddate&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   DATE_EXTERNAL_IS_INVALID       = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   OTHERS                         = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          .&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  zinvheader-doc_date = ddate.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    zinvheader-pstng_date = request-&amp;gt;get_form_field( 'PDate' ).&lt;/P&gt;&lt;P&gt;    zinvheader-comp_code = request-&amp;gt;get_form_field( 'CCode' ).&lt;/P&gt;&lt;P&gt;    zinvheader-gross_amount = request-&amp;gt;get_form_field( 'Amt' ).&lt;/P&gt;&lt;P&gt;    zinvheader-partner_bk = request-&amp;gt;get_form_field( 'PBank' ).&lt;/P&gt;&lt;P&gt;    zinvheader-currency = request-&amp;gt;get_form_field( 'Curr' ).&lt;/P&gt;&lt;P&gt;    zinvheader-invoice_ind = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    zitem1-invoice_doc_item = request-&amp;gt;get_form_field( 'IDItem' ).&lt;/P&gt;&lt;P&gt;    zitem1-po_number = request-&amp;gt;get_form_field( 'po_num' ).&lt;/P&gt;&lt;P&gt;    zitem1-po_item = request-&amp;gt;get_form_field( 'po_item' ).&lt;/P&gt;&lt;P&gt;    zitem1-tax_code = request-&amp;gt;get_form_field( 'TCode' ).&lt;/P&gt;&lt;P&gt;    zitem1-item_amount = request-&amp;gt;get_form_field( 'IAmt' ).&lt;/P&gt;&lt;P&gt;    zitem1-quantity = request-&amp;gt;get_form_field( 'quantity' ).&lt;/P&gt;&lt;P&gt;    zitem1-po_unit = request-&amp;gt;get_form_field( 'po_unit' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append zitem1 to zitem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        HEADERDATA                = zinvheader&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ADDRESSDATA               =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   IMPORTING&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   INVOICEDOCNUMBER          = inv_no&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FISCALYEAR                =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;    ITEMDATA                  = zitem&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ACCOUNTINGDATA            =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     GLACCOUNTDATA             =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     MATERIALDATA              =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TAXDATA                   =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     WITHTAXDATA               =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     VENDORITEMSPLITDATA       =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      RETURN                    = ZRET&lt;/P&gt;&lt;P&gt;              .&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;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       WAIT          = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  RETURN        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF INV_NO = ' '.&lt;/P&gt;&lt;P&gt;      inv_no = 'Try Again'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2007 08:34:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868342#M672937</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-24T08:34:38Z</dc:date>
    </item>
    <item>
      <title>Re: invoice creation through BAPI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868343#M672938</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Srinivas,&lt;/P&gt;&lt;P&gt; Just do one thing go to SE37 and enter BAPI&lt;STRONG&gt;INVOIC&lt;/STRONG&gt; then press F4 now u will get all the respected FM's as you know. &lt;/P&gt;&lt;P&gt;Hope this helps you. Reply for queries, shall post the updates.  &lt;SPAN __jive_emoticon_name="happy"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards.  &lt;/P&gt;&lt;P&gt;Kumar.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2007 08:41:50 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868343#M672938</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-24T08:41:50Z</dc:date>
    </item>
    <item>
      <title>Re: invoice creation through BAPI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868344#M672939</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;u need to use bapi_incominginvoice_create&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;tables: vbak,&lt;/P&gt;&lt;P&gt;        adr6,&lt;/P&gt;&lt;P&gt;        trdyse01cm.&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;                   INCLUDE&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;*INCLUDE ZZUTI_STD_HEADER_FOOTER. "Standard header and footer&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&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:&lt;/P&gt;&lt;P&gt;  begin of t_crmemo,&lt;/P&gt;&lt;P&gt;    vbeln type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    posnr type vbap-posnr,&lt;/P&gt;&lt;P&gt;    erdat type vbak-erdat,&lt;/P&gt;&lt;P&gt;    auart type vbak-auart,&lt;/P&gt;&lt;P&gt;    augru type vbak-augru,&lt;/P&gt;&lt;P&gt;    waerk type vbak-waerk,&lt;/P&gt;&lt;P&gt;    vkorg type vbak-vkorg,&lt;/P&gt;&lt;P&gt;    vtweg type vbak-vtweg,&lt;/P&gt;&lt;P&gt;    spart type vbak-spart,&lt;/P&gt;&lt;P&gt;    vdatu type vbak-vdatu,&lt;/P&gt;&lt;P&gt;    bstnk type vbak-bstnk,&lt;/P&gt;&lt;P&gt;    bsark type vbak-bsark,&lt;/P&gt;&lt;P&gt;    bstdk type vbak-bstdk,&lt;/P&gt;&lt;P&gt;    aedat type vbak-aedat,&lt;/P&gt;&lt;P&gt;    bukrs_vf type vbak-bukrs_vf,&lt;/P&gt;&lt;P&gt;    matnr type vbap-matnr,&lt;/P&gt;&lt;P&gt;    zmeng type vbap-zmeng,&lt;/P&gt;&lt;P&gt;    zieme type vbap-zieme,&lt;/P&gt;&lt;P&gt;  end of t_crmemo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_crmemo_change,&lt;/P&gt;&lt;P&gt;    vbeln(90) type c,&lt;/P&gt;&lt;P&gt;    posnr type vbap-posnr,&lt;/P&gt;&lt;P&gt;    erdat type vbak-erdat,&lt;/P&gt;&lt;P&gt;    auart type vbak-auart,&lt;/P&gt;&lt;P&gt;    augru type vbak-augru,&lt;/P&gt;&lt;P&gt;    waerk type vbak-waerk,&lt;/P&gt;&lt;P&gt;    vkorg type vbak-vkorg,&lt;/P&gt;&lt;P&gt;    vtweg type vbak-vtweg,&lt;/P&gt;&lt;P&gt;    spart type vbak-spart,&lt;/P&gt;&lt;P&gt;    vdatu type vbak-vdatu,&lt;/P&gt;&lt;P&gt;    bstnk type vbak-bstnk,&lt;/P&gt;&lt;P&gt;    bsark type vbak-bsark,&lt;/P&gt;&lt;P&gt;    bstdk type vbak-bstdk,&lt;/P&gt;&lt;P&gt;    aedat type vbak-aedat,&lt;/P&gt;&lt;P&gt;    bukrs_vf type vbak-bukrs_vf,&lt;/P&gt;&lt;P&gt;    matnr type vbap-matnr,&lt;/P&gt;&lt;P&gt;    zmeng type vbap-zmeng,&lt;/P&gt;&lt;P&gt;    zieme type vbap-zieme,&lt;/P&gt;&lt;P&gt;  end of t_crmemo_change,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_mvke,&lt;/P&gt;&lt;P&gt;    matnr  type mvke-matnr,&lt;/P&gt;&lt;P&gt;    vkorg  type mvke-vkorg,&lt;/P&gt;&lt;P&gt;    vtweg  type mvke-vtweg,&lt;/P&gt;&lt;P&gt;    mtpos  type mvke-mtpos,&lt;/P&gt;&lt;P&gt;  end of t_mvke,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_orders,&lt;/P&gt;&lt;P&gt;    vbelv   type vbfa-vbelv,&lt;/P&gt;&lt;P&gt;    posnv   type vbfa-posnv,&lt;/P&gt;&lt;P&gt;    vbeln   type vbfa-vbeln,&lt;/P&gt;&lt;P&gt;    posnn   type vbfa-posnn,&lt;/P&gt;&lt;P&gt;    vbtyp_n type vbfa-vbtyp_n,&lt;/P&gt;&lt;P&gt;  end of t_orders,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_ekpo,&lt;/P&gt;&lt;P&gt;    ebeln   type ekko-ebeln,&lt;/P&gt;&lt;P&gt;    ebelp   type ekpo-ebelp,&lt;/P&gt;&lt;P&gt;    waers   type ekko-waers,&lt;/P&gt;&lt;P&gt;    menge   type ekpo-menge,&lt;/P&gt;&lt;P&gt;    meins   type ekpo-meins,&lt;/P&gt;&lt;P&gt;    netpr   type ekpo-netpr,&lt;/P&gt;&lt;P&gt;    peinh   type ekpo-peinh,&lt;/P&gt;&lt;P&gt;    mwskz   type ekpo-mwskz,&lt;/P&gt;&lt;P&gt;    txjcd   type ekpo-txjcd,&lt;/P&gt;&lt;P&gt;  end of t_ekpo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_ekbe,&lt;/P&gt;&lt;P&gt;    ebeln   type ekbe-ebeln,&lt;/P&gt;&lt;P&gt;    ebelp   type ekbe-ebelp,&lt;/P&gt;&lt;P&gt;    zekkn   type ekbe-zekkn,&lt;/P&gt;&lt;P&gt;    vgabe   type ekbe-vgabe,&lt;/P&gt;&lt;P&gt;    gjahr   type ekbe-gjahr,&lt;/P&gt;&lt;P&gt;    belnr   type ekbe-belnr,&lt;/P&gt;&lt;P&gt;    buzei   type ekbe-buzei,&lt;/P&gt;&lt;P&gt;  end of t_ekbe,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_rbkp,&lt;/P&gt;&lt;P&gt;    belnr   type rbkp-belnr,&lt;/P&gt;&lt;P&gt;    gjahr   type rbkp-gjahr,&lt;/P&gt;&lt;P&gt;    bldat   type rbkp-bldat,&lt;/P&gt;&lt;P&gt;    budat   type rbkp-budat,&lt;/P&gt;&lt;P&gt;    xblnr   type rbkp-xblnr,&lt;/P&gt;&lt;P&gt;    lifnr   type rbkp-lifnr,&lt;/P&gt;&lt;P&gt;    rmwwr   type rbkp-rmwwr,&lt;/P&gt;&lt;P&gt;    wmwst1  type rbkp-wmwst1,&lt;/P&gt;&lt;P&gt;    xrech   type rbkp-xrech,&lt;/P&gt;&lt;P&gt;    stblg   type rbkp-stblg,&lt;/P&gt;&lt;P&gt;  end of t_rbkp,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_cdhdr,&lt;/P&gt;&lt;P&gt;    objectclas type cdhdr-objectclas,&lt;/P&gt;&lt;P&gt;    objectid   type cdhdr-objectid,&lt;/P&gt;&lt;P&gt;    changenr   type cdhdr-changenr,&lt;/P&gt;&lt;P&gt;    udate      type cdhdr-udate,&lt;/P&gt;&lt;P&gt;    utime      type cdhdr-utime,&lt;/P&gt;&lt;P&gt;  end of t_cdhdr,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_cdpos,&lt;/P&gt;&lt;P&gt;    objectclas type cdhdr-objectclas,&lt;/P&gt;&lt;P&gt;    objectid   type cdhdr-objectid,&lt;/P&gt;&lt;P&gt;    changenr   type cdhdr-changenr,&lt;/P&gt;&lt;P&gt;    tabname    type cdpos-tabname,&lt;/P&gt;&lt;P&gt;    tabkey     type cdpos-tabkey,&lt;/P&gt;&lt;P&gt;    fname      type cdpos-fname,&lt;/P&gt;&lt;P&gt;    chngind    type cdpos-chngind,&lt;/P&gt;&lt;P&gt;    value_new  type cdpos-value_new,&lt;/P&gt;&lt;P&gt;    value_old  type cdpos-value_old,&lt;/P&gt;&lt;P&gt;  end of t_cdpos,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_change_docs,&lt;/P&gt;&lt;P&gt;    objectclas type cdhdr-objectclas,&lt;/P&gt;&lt;P&gt;    objectid   type cdhdr-objectid,&lt;/P&gt;&lt;P&gt;    changenr   type cdhdr-changenr,&lt;/P&gt;&lt;P&gt;    udate      type cdhdr-udate,&lt;/P&gt;&lt;P&gt;    utime      type cdhdr-utime,&lt;/P&gt;&lt;P&gt;    tabname    type cdpos-tabname,&lt;/P&gt;&lt;P&gt;    tabkey     type cdpos-tabkey,&lt;/P&gt;&lt;P&gt;    fname      type cdpos-fname,&lt;/P&gt;&lt;P&gt;    chngind    type cdpos-chngind,&lt;/P&gt;&lt;P&gt;    value_new  type cdpos-value_new,&lt;/P&gt;&lt;P&gt;    value_old  type cdpos-value_old,&lt;/P&gt;&lt;P&gt;  end of t_change_docs,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_success,&lt;/P&gt;&lt;P&gt;    crmemo    type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    cmemo     type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    orders    type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    po        type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    miro_no   type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    text(20)  type c,&lt;/P&gt;&lt;P&gt;  end of t_success,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  begin of t_error,&lt;/P&gt;&lt;P&gt;    crmemo  type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    cmemo     type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    orders    type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    po        type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    miro_no   type vbak-vbeln,&lt;/P&gt;&lt;P&gt;    text(100) type c,&lt;/P&gt;&lt;P&gt;  end of t_error.&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;                      WORKAREA 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;data:&lt;/P&gt;&lt;P&gt;  wa_crmemo  type t_crmemo,&lt;/P&gt;&lt;P&gt;  wa_crmemo_change type t_crmemo_change,&lt;/P&gt;&lt;P&gt;  wa_mvke    type t_mvke,&lt;/P&gt;&lt;P&gt;  wa_orders  type t_orders,&lt;/P&gt;&lt;P&gt;  wa_cmemo   type  t_orders,&lt;/P&gt;&lt;P&gt;  wa_po      type t_orders,&lt;/P&gt;&lt;P&gt;  wa_ekpo    type t_ekpo,&lt;/P&gt;&lt;P&gt;  wa_ekbe    type t_ekbe,&lt;/P&gt;&lt;P&gt;  wa_ekbe_temp type t_ekbe,&lt;/P&gt;&lt;P&gt;  wa_rbkp    type t_rbkp,&lt;/P&gt;&lt;P&gt;  wa_rbkp_tmp type t_rbkp,&lt;/P&gt;&lt;P&gt;  wa_cdhdr   type t_cdhdr,&lt;/P&gt;&lt;P&gt;  wa_cdpos   type t_cdpos,&lt;/P&gt;&lt;P&gt;  wa_change_docs type t_change_docs,&lt;/P&gt;&lt;P&gt;  wa_crmemo_mr8m  type t_crmemo,&lt;/P&gt;&lt;P&gt;  wa_success type t_success,&lt;/P&gt;&lt;P&gt;  wa_error   type t_error,&lt;/P&gt;&lt;P&gt;  wa_success_mr8m type t_success,&lt;/P&gt;&lt;P&gt;  wa_error_mr8m   type t_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--Work area for all the internal tables used for Sending Mail&lt;/P&gt;&lt;P&gt;data :&lt;/P&gt;&lt;P&gt;  wa_objpack type sopcklsti1,&lt;/P&gt;&lt;P&gt;  wa_objhead type solisti1,&lt;/P&gt;&lt;P&gt;  wa_objbin type solisti1,&lt;/P&gt;&lt;P&gt;  wa_objtxt type solisti1,&lt;/P&gt;&lt;P&gt;  wa_reclist type somlreci1 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:&lt;/P&gt;&lt;P&gt;*-- Structure to hold Invoice Header Data&lt;/P&gt;&lt;P&gt;  x_docheader like bapi_incinv_create_header,&lt;/P&gt;&lt;P&gt;*-- Structure to hold Reversal Posting Data&lt;/P&gt;&lt;P&gt;  x_rev_post like bapi_incinv_fld.&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;                 INTERNAL TAABLE 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;data:&lt;/P&gt;&lt;P&gt;  it_crmemo      type standard table of t_crmemo   with header line,&lt;/P&gt;&lt;P&gt;  it_crmemo_change type standard table of t_crmemo_change with header&lt;/P&gt;&lt;P&gt;line,&lt;/P&gt;&lt;P&gt;  it_mvke        type standard table of t_mvke     with header line,&lt;/P&gt;&lt;P&gt;  it_crmemo_miro type standard table of t_crmemo   with header line,&lt;/P&gt;&lt;P&gt;  it_crmemo_mr8m type standard table of t_crmemo   with header line,&lt;/P&gt;&lt;P&gt;  it_orders      type standard table of t_orders   with header line,&lt;/P&gt;&lt;P&gt;  it_cmemo       type standard table of t_orders   with header line,&lt;/P&gt;&lt;P&gt;  it_po          type standard table of t_orders   with header line,&lt;/P&gt;&lt;P&gt;  it_ekpo        type standard table of t_ekpo     with header line,&lt;/P&gt;&lt;P&gt;  it_ekbe        type standard table of t_ekbe     with header line,&lt;/P&gt;&lt;P&gt;  it_ekbe_temp    type standard table of t_ekbe    with header line,&lt;/P&gt;&lt;P&gt;  it_rbkp        type standard table of t_rbkp     with header line,&lt;/P&gt;&lt;P&gt;  it_cdhdr       type standard table of t_cdhdr    with header line,&lt;/P&gt;&lt;P&gt;  it_cdpos       type standard table of t_cdpos    with header line,&lt;/P&gt;&lt;P&gt;  it_change_docs type standard table of t_change_docs with header line,&lt;/P&gt;&lt;P&gt;  it_success     type standard table of t_success  with header line,&lt;/P&gt;&lt;P&gt;  it_error       type standard table of t_error    with header line,&lt;/P&gt;&lt;P&gt;  it_success_mr8m type standard table of t_success with header line,&lt;/P&gt;&lt;P&gt;  it_error_mr8m  type standard table of t_error    with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Internal table to hold Invoice Item Data&lt;/P&gt;&lt;P&gt;data:begin of it_itemdata occurs 0.&lt;/P&gt;&lt;P&gt;       include structure bapi_incinv_create_item.&lt;/P&gt;&lt;P&gt;data:end of it_itemdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Internal table to hold Invoice Acct Assignment Data&lt;/P&gt;&lt;P&gt;data:begin of it_accountingdata occurs 0.&lt;/P&gt;&lt;P&gt;       include structure bapi_incinv_create_account.&lt;/P&gt;&lt;P&gt;data:end of it_accountingdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Internal table to hold BAPI return data&lt;/P&gt;&lt;P&gt;data: begin of it_return occurs 0.&lt;/P&gt;&lt;P&gt;        include structure bapiret2.  "Return Parameter.&lt;/P&gt;&lt;P&gt;data: end of it_return.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Internal table to hold BAPI return data&lt;/P&gt;&lt;P&gt;data: begin of it_return_mr8m occurs 0.&lt;/P&gt;&lt;P&gt;        include structure bapiret2.  "Return Parameter.&lt;/P&gt;&lt;P&gt;data: end of it_return_mr8m.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--MAIL related Internal tables&lt;/P&gt;&lt;P&gt;data: x_doc_chng type sodocchgi1,                      " document&lt;/P&gt;&lt;P&gt;*attributes&lt;/P&gt;&lt;P&gt;      it_objpack type standard table of sopcklsti1,    " attachment&lt;/P&gt;&lt;P&gt;*table&lt;/P&gt;&lt;P&gt;      it_objhead type standard table of solisti1,      " object header&lt;/P&gt;&lt;P&gt;*table&lt;/P&gt;&lt;P&gt;      it_objbin type standard table of solisti1,       " binary table&lt;/P&gt;&lt;P&gt;      it_objtxt type standard table of solisti1,       " object text&lt;/P&gt;&lt;P&gt;      it_reclist type standard table of somlreci1,     " mail recipients&lt;/P&gt;&lt;P&gt;      it_compressed_list type standard table of soli,&lt;/P&gt;&lt;P&gt;      it_pdf_list type standard table of tline,&lt;/P&gt;&lt;P&gt;      it_pdf  type tline occurs 10 with header line,&lt;/P&gt;&lt;P&gt;      it_html  type solisti1   occurs 10  with header line,&lt;/P&gt;&lt;P&gt;*-- Internal table for MIME data (in CHAR format)&lt;/P&gt;&lt;P&gt;      it_temp   type bapiqcmime occurs 10 with header line,&lt;/P&gt;&lt;P&gt;*-- Internal table for storing data&lt;/P&gt;&lt;P&gt;      it_mime(255) type c occurs 10 with header line.&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;GLOBAL VARIABLES                                                     *&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;data: v_pgm_id      type sy-repid,                    " Program id&lt;/P&gt;&lt;P&gt;      v_zterm       type lfb1-zterm,                  " Payment Terms&lt;/P&gt;&lt;P&gt;      v_text(75)    type c,           " To store error or success text&lt;/P&gt;&lt;P&gt;      v_itemno(6)   type n,           " To Increment Item No. for BAPI&lt;/P&gt;&lt;P&gt;      v_docnr       like bapi_incinv_fld-inv_doc_no,&lt;/P&gt;&lt;P&gt;                                      " For MIRO document number&lt;/P&gt;&lt;P&gt;      v_year1       like bapi_incinv_fld-fisc_year,&lt;/P&gt;&lt;P&gt;                                      " For MIRO Fiscal year&lt;/P&gt;&lt;P&gt;      v_spono       type tsp01-rqident,               " For Spool No.&lt;/P&gt;&lt;P&gt;      v_type        type soodk-objtp,                 " For Spool Type&lt;/P&gt;&lt;P&gt;      v_crmemo_qty  type vbap-zmeng,                  " For CR Memo Qty.&lt;/P&gt;&lt;P&gt;      v_line_amount type ekpo-netpr,             " For CR Memo Item Qty.&lt;/P&gt;&lt;P&gt;      v_grossamt    type ekpo-netpr,            " For CR Memo Grand Qty.&lt;/P&gt;&lt;P&gt;      v_tax_per(3)  type n,                   " For CR Memo Tax amount %&lt;/P&gt;&lt;P&gt;      v_tax_amt     type ekpo-netpr,           " For CR Memo Tax amount&lt;/P&gt;&lt;P&gt;      v_flag(1)     type c,                   " Flag to process fruther&lt;/P&gt;&lt;P&gt;      v_tot_s_mr8m  type i,                   " For MR8M Success Records&lt;/P&gt;&lt;P&gt;      v_tot_e_mr8m  type i,                   " For MR8M Error Records&lt;/P&gt;&lt;P&gt;      v_date        type sy-datum,            " For Sel. Screen Date&lt;/P&gt;&lt;P&gt;      v_date2(10)   type c,                           " For EMail Date&lt;/P&gt;&lt;P&gt;      v_time(10)    type c,                           " For EMail Time&lt;/P&gt;&lt;P&gt;      v_time2(10)   type c,                           " For EMail Time&lt;/P&gt;&lt;P&gt;      v_info(100)   type c,                  " For EMail Body Text&lt;/P&gt;&lt;P&gt;      v_table_lines type sy-tabix,           " To Increment Email Count&lt;/P&gt;&lt;P&gt;      v_text2       type string   ,          " For EMail Id text&lt;/P&gt;&lt;P&gt;      v_lines       type i,                  " To Store PDF Lines&lt;/P&gt;&lt;P&gt;      v_temp(500)   type c,              " To Convert to 255 char format&lt;/P&gt;&lt;P&gt;      v_offset      type p,              " To Convert to 255 char format&lt;/P&gt;&lt;P&gt;      v_lineslen    type i,              " To Convert to 255 char format&lt;/P&gt;&lt;P&gt;      v_mimelen     type i,             " To Convert to 255 char format&lt;/P&gt;&lt;P&gt;      v_tabix       type sy-tabix.      " To Convert to 255 char format&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;constants:&lt;/P&gt;&lt;P&gt;  c_x(1)            type c          value 'X',    " Constant X or Flag&lt;/P&gt;&lt;P&gt;  c_e(1)            type c          value 'E',       " For Error check&lt;/P&gt;&lt;P&gt;  c_v(1)            type c          value 'V',       " For PO Docs&lt;/P&gt;&lt;P&gt;  c_o(1)            type c          value 'O',       " For Order Docs&lt;/P&gt;&lt;P&gt;  c_c(1)            type c          value 'C',    " For Credit Memo Docs&lt;/P&gt;&lt;P&gt;  c_k(1)            type c          value 'K',       " For CR Memo Docs&lt;/P&gt;&lt;P&gt;  c_u(1)            type c          value 'U', " For Change tables&lt;/P&gt;&lt;P&gt;  c_ali(3)          type c          value 'ALI',     " For ALI Format&lt;/P&gt;&lt;P&gt;  c_vbak(4)         type c          value 'VBAK',    " For Change docs&lt;/P&gt;&lt;P&gt;  c_01(2)           type c          value '01',      " For Serial No. &amp;amp;&lt;/P&gt;&lt;P&gt;  c_02(2)           type c          value '02',      " For Reversal&lt;/P&gt;&lt;P&gt;  c_blart           type bkpf-blart value 'RE',      " Document type&lt;/P&gt;&lt;P&gt;  c_mtpos           type mvke-mtpos value 'BANS',    " Item Category&lt;/P&gt;&lt;P&gt;  c_augru(5)        type c          value 'AUGRU',   " Reason Code&lt;/P&gt;&lt;P&gt;  c_0000500205(10)  type c          value '0000500205', " GL Account #&lt;/P&gt;&lt;P&gt;  c_verkbeleg(9)    type c          value 'VERKBELEG'.&lt;/P&gt;&lt;P&gt;                                                  " For Object Class&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Horizontal tab &amp;amp; line feed constants&lt;/P&gt;&lt;P&gt;class cl_abap_char_utilities definition load.&lt;/P&gt;&lt;P&gt;constants:&lt;/P&gt;&lt;P&gt;  c_tab  type c value cl_abap_char_utilities=&amp;gt;horizontal_tab,&lt;/P&gt;&lt;P&gt;  c_cr_lf type c value cl_abap_char_utilities=&amp;gt;cr_lf .&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;*-- Select Optons&lt;/P&gt;&lt;P&gt;selection-screen: begin of block b01 with frame title text-001.&lt;/P&gt;&lt;P&gt;  select-options: s_auart for vbak-auart obligatory no intervals,&lt;/P&gt;&lt;P&gt;                                                  " Sales Document Type&lt;/P&gt;&lt;P&gt;                  s_augru for vbak-augru obligatory no intervals,&lt;/P&gt;&lt;P&gt;                                                  " Order reason&lt;/P&gt;&lt;P&gt;                  s_erdat for vbak-erdat obligatory.&lt;/P&gt;&lt;P&gt;                                  " Date on which the record was created&lt;/P&gt;&lt;P&gt;selection-screen: end of block b01.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Mail Sending Options&lt;/P&gt;&lt;P&gt;selection-screen begin of block b2 with frame title text-004.&lt;/P&gt;&lt;P&gt;  parameters:p_email as checkbox default space user-command v_com .&lt;/P&gt;&lt;P&gt;  parameters : p_mode type so_escape   default 'U' modif id us1.&lt;/P&gt;&lt;P&gt;  select-options: s_email for adr6-smtp_addr&lt;/P&gt;&lt;P&gt;                                      no intervals modif id us2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; SELECT-OPTIONS: S_EMAIL FOR TRDYSE01CM-USERNAME&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                     NO INTERVALS MODIF ID US2.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen: begin of line.&lt;/P&gt;&lt;P&gt;    selection-screen: comment 55(40) text-019 modif id us2.&lt;/P&gt;&lt;P&gt;  selection-screen: end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;selection-screen end of block b2.&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;           WORK AREA for SELECT-OPTIONS&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;data :  x_email like s_email.   "Work area for EMAIL select-options&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; INITIALIZATION&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;initialization.&lt;/P&gt;&lt;P&gt;*-- Default values for Sales Document Type&lt;/P&gt;&lt;P&gt;  clear s_auart[].&lt;/P&gt;&lt;P&gt;  s_auart-sign = 'I'.&lt;/P&gt;&lt;P&gt;  s_auart-option = 'EQ'.&lt;/P&gt;&lt;P&gt;  s_auart-low = 'CR'.&lt;/P&gt;&lt;P&gt;  append s_auart.&lt;/P&gt;&lt;P&gt;  clear s_auart.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Default values for Date on which the record was created&lt;/P&gt;&lt;P&gt;  v_date = ( sy-datum - 1 ).&lt;/P&gt;&lt;P&gt;  clear s_erdat[].&lt;/P&gt;&lt;P&gt;  s_erdat-sign = 'I'.&lt;/P&gt;&lt;P&gt;  s_erdat-option = 'EQ'.&lt;/P&gt;&lt;P&gt;  s_erdat-low =  sy-datum.&lt;/P&gt;&lt;P&gt;  s_erdat-high =  sy-datum.&lt;/P&gt;&lt;P&gt;  append s_erdat.&lt;/P&gt;&lt;P&gt;  clear s_erdat.&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;*-- Displaying standard header.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM std_top_of_page USING sy-title.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;A T  S E L E C T I O N   S C R E E N  O U T P U T&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;*-- For modifying the selection screen layout&lt;/P&gt;&lt;P&gt;at selection-screen output.&lt;/P&gt;&lt;P&gt;  perform f_modify_screen.&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;                   AT 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;at selection-screen.&lt;/P&gt;&lt;P&gt;*-- Subroutine to Validate selection screen fields&lt;/P&gt;&lt;P&gt;  perform f_validate.&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; 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;start-of-selection.&lt;/P&gt;&lt;P&gt;*-- Fetch the Credit Memo Requests documents&lt;/P&gt;&lt;P&gt;  perform f_get_credit_memo_request.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not it_crmemo[] is initial.&lt;/P&gt;&lt;P&gt;*-- Fetch Item Category Group&lt;/P&gt;&lt;P&gt;    perform f_get_mvke_docs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch Sales Order documents, PO Documents and Credit Memos&lt;/P&gt;&lt;P&gt;    perform f_get_so_po_docs.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- If Credit memo request internal table have an change records then&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   fetch the change documents from CDHDR and CDPOS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not it_crmemo_change[] is initial.&lt;/P&gt;&lt;P&gt;*-- Fetch Change Documents for CR Memos from CDHDR and CDPOS tables&lt;/P&gt;&lt;P&gt;    perform f_get_changed_docs.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch Purchasing Document Item Details&lt;/P&gt;&lt;P&gt;  if not it_po[] is initial.&lt;/P&gt;&lt;P&gt;    perform f_get_ekpo.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch MIRO Vendor based on the PO Details&lt;/P&gt;&lt;P&gt;  if not it_ekpo[] is initial.&lt;/P&gt;&lt;P&gt;    perform f_get_vendor.&lt;/P&gt;&lt;P&gt;  endif.&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;  if v_flag is initial.&lt;/P&gt;&lt;P&gt;*-- Process Vendor Debit Postings&lt;/P&gt;&lt;P&gt;    perform f_process_miro.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Process Reversal Postings of Vendor Automatic Debits using TCODE MR8M&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform f_process_mr8m.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Send mail,if user enters Email id's and Email Mode is not initial&lt;/P&gt;&lt;P&gt;    if p_email = c_x and p_mode is not initial and s_email[] is not&lt;/P&gt;&lt;P&gt;initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Get spool id&lt;/P&gt;&lt;P&gt;      perform f_spool_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- EMail Logic&lt;/P&gt;&lt;P&gt;      perform f_mail_logic.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*display the EMail RSCONN01 and Sussess and Error records of MIRO and&lt;/P&gt;&lt;P&gt;*MR8M&lt;/P&gt;&lt;P&gt;    perform f_display_report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;*-- Else exit the process&lt;/P&gt;&lt;P&gt;    exit.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&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  F_MODIFY_SCREEN&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;      A Form routine to modify the 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 f_modify_screen .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- To Modify Mail Sending Options&lt;/P&gt;&lt;P&gt;  loop at screen.&lt;/P&gt;&lt;P&gt;    if p_email = c_x.&lt;/P&gt;&lt;P&gt;      if screen-group1 = 'US1' .&lt;/P&gt;&lt;P&gt;        screen-invisible = 0.&lt;/P&gt;&lt;P&gt;        screen-active = 1.&lt;/P&gt;&lt;P&gt;        screen-input = 0.&lt;/P&gt;&lt;P&gt;        modify screen.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      if screen-group2 = 'US2' .&lt;/P&gt;&lt;P&gt;        screen-invisible = 0.&lt;/P&gt;&lt;P&gt;        screen-active = 1.&lt;/P&gt;&lt;P&gt;        modify screen.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    elseif p_email = space.&lt;/P&gt;&lt;P&gt;      if screen-group1 = 'US1' .&lt;/P&gt;&lt;P&gt;        screen-invisible = 1.&lt;/P&gt;&lt;P&gt;        screen-active = 0.&lt;/P&gt;&lt;P&gt;        modify screen.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      if screen-group1 = 'US2' .&lt;/P&gt;&lt;P&gt;        screen-invisible = 1.&lt;/P&gt;&lt;P&gt;        screen-active = 0.&lt;/P&gt;&lt;P&gt;        modify screen.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_MODIFY_SCREEN&lt;/P&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  f_validate&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;      Validation of Selection-Screen Inputs&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 f_validate .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Validate Sales Document Type&lt;/P&gt;&lt;P&gt;  if not s_auart[] is initial.&lt;/P&gt;&lt;P&gt;    select  auart&lt;/P&gt;&lt;P&gt;      into s_auart-low&lt;/P&gt;&lt;P&gt;      from tvak up to 1 rows&lt;/P&gt;&lt;P&gt;      where auart in s_auart.&lt;/P&gt;&lt;P&gt;    endselect.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      message e000 with 'Invalid Sales Document Type'(e01) .&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Validate Order reason (reason for the business transaction)&lt;/P&gt;&lt;P&gt;  if not s_augru[] is initial.&lt;/P&gt;&lt;P&gt;    select  augru&lt;/P&gt;&lt;P&gt;      into s_augru-low&lt;/P&gt;&lt;P&gt;      from tvau up to 1 rows&lt;/P&gt;&lt;P&gt;      where augru in s_augru.&lt;/P&gt;&lt;P&gt;    endselect.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      message e000 with 'Invalid Order reason'(e02) .&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                    " f_validate&lt;/P&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  F_GET_CREDIT_MEMO_REQUEST&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;      Fetch Credit memo requests from VBAK &amp;amp; VBAP&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 f_get_credit_memo_request .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select a~vbeln&lt;/P&gt;&lt;P&gt;         b~posnr&lt;/P&gt;&lt;P&gt;         a~erdat&lt;/P&gt;&lt;P&gt;         a~auart&lt;/P&gt;&lt;P&gt;         a~augru&lt;/P&gt;&lt;P&gt;         a~waerk&lt;/P&gt;&lt;P&gt;         a~vkorg&lt;/P&gt;&lt;P&gt;         a~vtweg&lt;/P&gt;&lt;P&gt;         a~spart&lt;/P&gt;&lt;P&gt;         a~vdatu&lt;/P&gt;&lt;P&gt;         a~bstnk&lt;/P&gt;&lt;P&gt;         a~bsark&lt;/P&gt;&lt;P&gt;         a~bstdk&lt;/P&gt;&lt;P&gt;         a~aedat&lt;/P&gt;&lt;P&gt;         a~bukrs_vf&lt;/P&gt;&lt;P&gt;         b~matnr&lt;/P&gt;&lt;P&gt;         b~zmeng&lt;/P&gt;&lt;P&gt;         b~zieme&lt;/P&gt;&lt;P&gt;    into table it_crmemo&lt;/P&gt;&lt;P&gt;    from ( vbak as a&lt;/P&gt;&lt;P&gt;    inner join vbap as b on a&lt;SUB&gt;vbeln = b&lt;/SUB&gt;vbeln )&lt;/P&gt;&lt;P&gt;    where ( a~erdat in s_erdat&lt;/P&gt;&lt;P&gt;      or  a~aedat in s_erdat )&lt;/P&gt;&lt;P&gt;      and a~auart in s_auart.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    sort it_crmemo by vbeln posnr.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    message i000 with 'No Credit Memo Request selected'(002).&lt;/P&gt;&lt;P&gt;    v_flag = c_x.&lt;/P&gt;&lt;P&gt;    stop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_GET_CREDIT_MEMO_REQUEST&lt;/P&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  F_GET_MVKE_DOCS&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;      Fetch Sales Data for Material&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 f_get_mvke_docs .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data: lv_tabix type sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch Sales Data for Material&lt;/P&gt;&lt;P&gt;  select matnr      " Material Number&lt;/P&gt;&lt;P&gt;         vkorg      " Sales Organization&lt;/P&gt;&lt;P&gt;         vtweg      " Distribution Channel&lt;/P&gt;&lt;P&gt;         mtpos      " Item category group from material master&lt;/P&gt;&lt;P&gt;    from mvke       " Sales Data for Material&lt;/P&gt;&lt;P&gt;    into table it_mvke&lt;/P&gt;&lt;P&gt;    for all entries in it_crmemo&lt;/P&gt;&lt;P&gt;    where matnr = it_crmemo-matnr&lt;/P&gt;&lt;P&gt;      and vkorg = it_crmemo-vkorg&lt;/P&gt;&lt;P&gt;      and vtweg = it_crmemo-vtweg.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    sort it_mvke by matnr vkorg vtweg mtpos.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Validate Item category group if MVKE-MTOPS &amp;lt;&amp;gt; 'BANS' then ignore CM&lt;/P&gt;&lt;P&gt;*Request line item&lt;/P&gt;&lt;P&gt;  loop at it_crmemo into wa_crmemo.&lt;/P&gt;&lt;P&gt;    lv_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;    read table it_mvke into wa_mvke with key matnr = wa_crmemo-matnr&lt;/P&gt;&lt;P&gt;                                             vkorg = wa_crmemo-vkorg&lt;/P&gt;&lt;P&gt;                                             vtweg = wa_crmemo-vtweg&lt;/P&gt;&lt;P&gt;                                             mtpos = c_mtpos&lt;/P&gt;&lt;P&gt;                                             binary search.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      delete it_crmemo index lv_tabix.    " Delete CR memo records&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;*-- Else check for credit memo request change date is not initial, and&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  append those records to IT_CRMEMO_CHANGE internal table to retrive&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  change documents&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if not wa_crmemo-aedat is initial.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-vbeln = wa_crmemo-vbeln.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-posnr = wa_crmemo-posnr.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-erdat = wa_crmemo-erdat.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-auart = wa_crmemo-auart.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-augru = wa_crmemo-augru.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-waerk = wa_crmemo-waerk.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-vkorg = wa_crmemo-vkorg.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-vtweg = wa_crmemo-vtweg.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-spart = wa_crmemo-spart.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-vdatu = wa_crmemo-vdatu.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-bstnk = wa_crmemo-bstnk.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-bsark = wa_crmemo-bsark.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-bstdk = wa_crmemo-bstdk.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-aedat = wa_crmemo-aedat.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-bukrs_vf = wa_crmemo-bukrs_vf.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-matnr = wa_crmemo-matnr.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-zmeng = wa_crmemo-zmeng.&lt;/P&gt;&lt;P&gt;        wa_crmemo_change-zieme = wa_crmemo-zieme.&lt;/P&gt;&lt;P&gt;        append wa_crmemo_change to it_crmemo_change.&lt;/P&gt;&lt;P&gt;        clear wa_crmemo_change.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_GET_MVKE_DOCS&lt;/P&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  F_GET_SO_PO_DOCS&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;      Fetch the Sales Order documents, PO documents, &amp;amp; Credit Memo&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 f_get_so_po_docs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch Preceding sales orders based on the credit memo request&lt;/P&gt;&lt;P&gt;  select vbelv&lt;/P&gt;&lt;P&gt;         posnv&lt;/P&gt;&lt;P&gt;         vbeln&lt;/P&gt;&lt;P&gt;         posnn&lt;/P&gt;&lt;P&gt;         vbtyp_n&lt;/P&gt;&lt;P&gt;    from vbfa&lt;/P&gt;&lt;P&gt;    into table it_orders&lt;/P&gt;&lt;P&gt;    for all entries in it_crmemo&lt;/P&gt;&lt;P&gt;    where vbeln = it_crmemo-vbeln&lt;/P&gt;&lt;P&gt;      and posnn = it_crmemo-posnr&lt;/P&gt;&lt;P&gt;      and vbtyp_n = c_k&lt;/P&gt;&lt;P&gt;      and vbtyp_v = c_c.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    sort it_orders by vbelv posnv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch Subsequent PO documents &amp;amp; Credit Memo based on the sales&lt;/P&gt;&lt;P&gt;*orders&lt;/P&gt;&lt;P&gt;    select vbelv&lt;/P&gt;&lt;P&gt;           posnv&lt;/P&gt;&lt;P&gt;           vbeln&lt;/P&gt;&lt;P&gt;           posnn&lt;/P&gt;&lt;P&gt;           vbtyp_n&lt;/P&gt;&lt;P&gt;      from vbfa&lt;/P&gt;&lt;P&gt;      into table it_po&lt;/P&gt;&lt;P&gt;      for all entries in it_orders&lt;/P&gt;&lt;P&gt;      where vbelv = it_orders-vbelv&lt;/P&gt;&lt;P&gt;        and posnv = it_orders-posnv&lt;/P&gt;&lt;P&gt;        and vbtyp_n in (c_v,c_o)&lt;/P&gt;&lt;P&gt;        and vbtyp_v = c_c.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      sort it_po by vbtyp_n.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Copy the IT_PO internal table contents to IT_CMEMO internal table&lt;/P&gt;&lt;P&gt;      it_cmemo[] = it_po[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Delete PO documents from IT_CMEMO internal table&lt;/P&gt;&lt;P&gt;      delete it_cmemo where vbtyp_n = c_v.&lt;/P&gt;&lt;P&gt;      sort it_cmemo by vbeln posnn.&lt;/P&gt;&lt;P&gt;      if it_cmemo[] is initial.&lt;/P&gt;&lt;P&gt;      message i000 with 'No Credit Memo are available for CM&lt;/P&gt;&lt;P&gt;Request'(003).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       v_flag = c_x.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       stop.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Delete Credit Memo documents from IT_PO internal table&lt;/P&gt;&lt;P&gt;      delete it_po where vbtyp_n = c_o.&lt;/P&gt;&lt;P&gt;      sort it_po by vbeln posnn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_GET_SO_PO_DOCS&lt;/P&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  F_GET_CHANGED_DOCS&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;      Fetch Change Documents for CR Memos from CDHDR and CDPOS tables&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 f_get_changed_docs .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch Change Documents for CR Memos from CDHDR&lt;/P&gt;&lt;P&gt;  select objectclas&lt;/P&gt;&lt;P&gt;         objectid&lt;/P&gt;&lt;P&gt;         changenr&lt;/P&gt;&lt;P&gt;         udate&lt;/P&gt;&lt;P&gt;         utime&lt;/P&gt;&lt;P&gt;  from cdhdr&lt;/P&gt;&lt;P&gt;  into table it_cdhdr&lt;/P&gt;&lt;P&gt;  for all entries in it_crmemo_change&lt;/P&gt;&lt;P&gt;  where objectclas = c_verkbeleg&lt;/P&gt;&lt;P&gt;    and objectid   = it_crmemo_change-vbeln&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   AND UDATE      = IT_CRMEMO_CHANGE-AEDAT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    .&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    sort it_cdhdr by objectclas objectid changenr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch Change Documents for CR Memos from CDPOS&lt;/P&gt;&lt;P&gt;    select objectclas&lt;/P&gt;&lt;P&gt;           objectid&lt;/P&gt;&lt;P&gt;           changenr&lt;/P&gt;&lt;P&gt;           tabname&lt;/P&gt;&lt;P&gt;           tabkey&lt;/P&gt;&lt;P&gt;           fname&lt;/P&gt;&lt;P&gt;           chngind&lt;/P&gt;&lt;P&gt;           value_new&lt;/P&gt;&lt;P&gt;           value_old&lt;/P&gt;&lt;P&gt;      from cdpos&lt;/P&gt;&lt;P&gt;      into table it_cdpos&lt;/P&gt;&lt;P&gt;      for all entries in it_cdhdr&lt;/P&gt;&lt;P&gt;      where objectclas = c_verkbeleg&lt;/P&gt;&lt;P&gt;        and objectid   = it_cdhdr-objectid&lt;/P&gt;&lt;P&gt;        and changenr   = it_cdhdr-changenr&lt;/P&gt;&lt;P&gt;        and tabname    = c_vbak&lt;/P&gt;&lt;P&gt;        and fname      = c_augru&lt;/P&gt;&lt;P&gt;        and chngind    = c_u.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      sort it_cdpos by objectclas objectid changenr.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_GET_CHANGED_DOCS&lt;/P&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  F_GET_EKPO&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;      Fetch Purchasing Document Item Details&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 f_get_ekpo .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch Purchasing Document Item Details&lt;/P&gt;&lt;P&gt;  select a~ebeln&lt;/P&gt;&lt;P&gt;         b~ebelp&lt;/P&gt;&lt;P&gt;         a~waers&lt;/P&gt;&lt;P&gt;         b~menge&lt;/P&gt;&lt;P&gt;         b~meins&lt;/P&gt;&lt;P&gt;         b~netpr&lt;/P&gt;&lt;P&gt;         b~peinh&lt;/P&gt;&lt;P&gt;         b~mwskz&lt;/P&gt;&lt;P&gt;         b~txjcd&lt;/P&gt;&lt;P&gt;  into table it_ekpo&lt;/P&gt;&lt;P&gt;  from ( ekko as a&lt;/P&gt;&lt;P&gt;  inner join ekpo as b on a&lt;SUB&gt;ebeln = b&lt;/SUB&gt;ebeln )&lt;/P&gt;&lt;P&gt;  for all entries in it_po&lt;/P&gt;&lt;P&gt;  where a~ebeln = it_po-vbeln&lt;/P&gt;&lt;P&gt;    and b~ebelp = it_po-posnn+1(5).&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    sort it_ekpo by ebeln ebelp.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_GET_EKPO&lt;/P&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  F_GET_VENDOR&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;      Fetch MIRO Vendor details based on the PO Details&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 f_get_vendor .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: lv_tabix type sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch History per Purchasing Document records for all the PO records&lt;/P&gt;&lt;P&gt;  select ebeln&lt;/P&gt;&lt;P&gt;         ebelp&lt;/P&gt;&lt;P&gt;         zekkn&lt;/P&gt;&lt;P&gt;         vgabe&lt;/P&gt;&lt;P&gt;         gjahr&lt;/P&gt;&lt;P&gt;         belnr&lt;/P&gt;&lt;P&gt;         buzei&lt;/P&gt;&lt;P&gt;  from ekbe&lt;/P&gt;&lt;P&gt;  into table it_ekbe&lt;/P&gt;&lt;P&gt;  for all entries in it_ekpo&lt;/P&gt;&lt;P&gt;  where ebeln = it_ekpo-ebeln&lt;/P&gt;&lt;P&gt;    and ebelp = it_ekpo-ebelp&lt;/P&gt;&lt;P&gt;    and vgabe = '2'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   and STBLG = space.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    sort it_ekbe by belnr gjahr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Fetch the vendor details based on table IT_EKBE internal table&lt;/P&gt;&lt;P&gt;    select belnr&lt;/P&gt;&lt;P&gt;           gjahr&lt;/P&gt;&lt;P&gt;           bldat&lt;/P&gt;&lt;P&gt;           budat&lt;/P&gt;&lt;P&gt;           xblnr&lt;/P&gt;&lt;P&gt;           lifnr&lt;/P&gt;&lt;P&gt;           rmwwr&lt;/P&gt;&lt;P&gt;           wmwst1&lt;/P&gt;&lt;P&gt;           xrech&lt;/P&gt;&lt;P&gt;           stblg&lt;/P&gt;&lt;P&gt;    from rbkp&lt;/P&gt;&lt;P&gt;    into table it_rbkp&lt;/P&gt;&lt;P&gt;    for all entries in it_ekbe&lt;/P&gt;&lt;P&gt;    where belnr = it_ekbe-belnr&lt;/P&gt;&lt;P&gt;      and gjahr = it_ekbe-gjahr.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      sort it_rbkp by belnr gjahr.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Sort PO History documents based on PO # and PO Item&lt;/P&gt;&lt;P&gt;  sort it_ekbe by ebeln ebelp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Copy the PO History documents into IT_EKBE_TEMP internal table&lt;/P&gt;&lt;P&gt;  it_ekbe_temp[] = it_ekbe[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Delete PO History documents from IT_EKBE_TEMP internal table&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  comparing with IT_RBKP where (STBLG) Reversal document number&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  is initial&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at it_ekbe_temp into wa_ekbe_temp.&lt;/P&gt;&lt;P&gt;    lv_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;    read table it_rbkp into wa_rbkp with key belnr = wa_ekbe_temp-belnr&lt;/P&gt;&lt;P&gt;                                             gjahr = wa_ekbe_temp-gjahr&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                            XRECH = SPACE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                                             stblg = space.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      delete it_ekbe_temp index lv_tabix.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    clear: wa_ekbe_temp, wa_rbkp.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_GET_VENDOR&lt;/P&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  F_PROCESS_MIRO&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;      Process MIRO&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 f_process_miro .&lt;/P&gt;&lt;P&gt;  data:&lt;/P&gt;&lt;P&gt;    lv_itemno         type i,&lt;/P&gt;&lt;P&gt;    lv_tabix          type sy-index,&lt;/P&gt;&lt;P&gt;    lc_check(1)       type c value 'X',&lt;/P&gt;&lt;P&gt;    v_fill_item,&lt;/P&gt;&lt;P&gt;    lv_rbkp_bldat type sy-datum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear : it_itemdata, it_accountingdata, it_crmemo_miro, it_crmemo_mr8m&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;  refresh : it_itemdata, it_accountingdata, it_crmemo_miro,&lt;/P&gt;&lt;P&gt;it_crmemo_mr8m.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Copy all the CR Memo Docs and delete order reason not in S_AUGRU&lt;/P&gt;&lt;P&gt;  it_crmemo_mr8m[] = it_crmemo[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Delete Reversal postings which are not in S_AUGRU&lt;/P&gt;&lt;P&gt;  delete it_crmemo_mr8m where augru in s_augru.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Delete Reversal postings where AEDAT is initial&lt;/P&gt;&lt;P&gt;  delete it_crmemo_mr8m where aedat is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Delete order reason which are not in S_AUGRU&lt;/P&gt;&lt;P&gt;  delete it_crmemo where augru not in s_augru.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Loop through the credit memo request records&lt;/P&gt;&lt;P&gt;  loop at it_crmemo into wa_crmemo.&lt;/P&gt;&lt;P&gt;    lv_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- If credit memo request change date is not initial then&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  send change date (AEDAT) to lv_rbkp_bldat&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not wa_crmemo-aedat is initial.&lt;/P&gt;&lt;P&gt;      lv_rbkp_bldat =  wa_crmemo-aedat.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;*-- If credit memo request change date is initial then&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  send create date (ERDAT) to lv_rbkp_bldat&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      lv_rbkp_bldat =  wa_crmemo-erdat.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read table it_orders into wa_orders with key vbeln = wa_crmemo-vbeln&lt;/P&gt;&lt;P&gt;                                                 posnn = wa_crmemo-posnr&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      read table it_po into wa_po with key vbelv = wa_orders-vbelv&lt;/P&gt;&lt;P&gt;                                           posnv = wa_orders-posnv.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        read table it_ekpo into wa_ekpo with key ebeln = wa_po-vbeln&lt;/P&gt;&lt;P&gt;                                                 ebelp = wa_po-posnn.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;*-- Read IT_EKBE_TEMP internal table which contains records which are&lt;/P&gt;&lt;P&gt;*not reversed&lt;/P&gt;&lt;P&gt;          read table it_ekbe_temp into wa_ekbe_temp with key ebeln =&lt;/P&gt;&lt;P&gt;wa_ekpo-ebeln&lt;/P&gt;&lt;P&gt;                                                             ebelp =&lt;/P&gt;&lt;P&gt;wa_ekpo-ebelp.&lt;/P&gt;&lt;P&gt;          if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;*-- Read IT_RBKP internal table with XRECH (Indicator: post invoice) =&lt;/P&gt;&lt;P&gt;*'X' ,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  check for invoice records for the correspnding CR Memo records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            read table it_rbkp into wa_rbkp with key belnr =&lt;/P&gt;&lt;P&gt;wa_ekbe_temp-belnr&lt;/P&gt;&lt;P&gt;                                                     gjahr =&lt;/P&gt;&lt;P&gt;wa_ekbe_temp-gjahr&lt;/P&gt;&lt;P&gt;                                                     xrech = c_x.&lt;/P&gt;&lt;P&gt;            if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;*-- Read IT_RBKP internal table with XRECH (Indicator: post invoice) =&lt;/P&gt;&lt;P&gt;*SPACE,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  and document date = CR Memo creation date&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  and reference document number = PO number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              read table it_rbkp into wa_rbkp_tmp with key belnr =&lt;/P&gt;&lt;P&gt;wa_ekbe_temp-belnr&lt;/P&gt;&lt;P&gt;                                                           gjahr =&lt;/P&gt;&lt;P&gt;wa_ekbe_temp-gjahr&lt;/P&gt;&lt;P&gt;                                                           bldat =&lt;/P&gt;&lt;P&gt;wa_crmemo-erdat&lt;/P&gt;&lt;P&gt;                                                           xrech = ' '&lt;/P&gt;&lt;P&gt;                                                           xblnr+0(10) =&lt;/P&gt;&lt;P&gt; wa_ekbe_temp-ebeln.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                                          STBLG =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*SPACE.&lt;/P&gt;&lt;P&gt;              if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;                continue.&lt;/P&gt;&lt;P&gt;              else.&lt;/P&gt;&lt;P&gt;*-- Quantity Conversion (Get the Credit Memo Quantity by passing CMR&lt;/P&gt;&lt;P&gt;*unit per one PO unit)&lt;/P&gt;&lt;P&gt;                perform f_quantity_conv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Filling the Line items data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Incrementing the item no&lt;/P&gt;&lt;P&gt;                lv_itemno = lv_itemno + 1.&lt;/P&gt;&lt;P&gt;                v_itemno  = lv_itemno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                it_itemdata-invoice_doc_item  = v_itemno.&lt;/P&gt;&lt;P&gt;                it_itemdata-po_number         = wa_ekpo-ebeln.&lt;/P&gt;&lt;P&gt;                it_itemdata-po_item           = wa_ekpo-ebelp.&lt;/P&gt;&lt;P&gt;                it_itemdata-tax_code          = wa_ekpo-mwskz.&lt;/P&gt;&lt;P&gt;                it_itemdata-taxjurcode        = wa_ekpo-txjcd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Converting SAP amount to BAPI format by passing line item amount and&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;currency&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                perform f_currency_amount_sap_to_bapi using&lt;/P&gt;&lt;P&gt;wa_ekpo-waers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;v_line_amount&lt;/P&gt;&lt;P&gt;                                                      changing&lt;/P&gt;&lt;P&gt;it_itemdata-item_amount .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                it_itemdata-quantity          = ( wa_crmemo-zmeng *&lt;/P&gt;&lt;P&gt;v_crmemo_qty ).&lt;/P&gt;&lt;P&gt;                it_itemdata-po_unit           = wa_ekpo-meins.&lt;/P&gt;&lt;P&gt;                append it_itemdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Populate Account Assignment data&lt;/P&gt;&lt;P&gt;                it_accountingdata-invoice_doc_item = v_itemno.&lt;/P&gt;&lt;P&gt;                it_accountingdata-xunpl       = space.&lt;/P&gt;&lt;P&gt;                it_accountingdata-serial_no   = c_01.&lt;/P&gt;&lt;P&gt;                it_accountingdata-tax_code    = it_itemdata-tax_code.&lt;/P&gt;&lt;P&gt;                it_accountingdata-taxjurcode  = it_itemdata-taxjurcode.&lt;/P&gt;&lt;P&gt;                it_accountingdata-item_amount = it_itemdata-item_amount.&lt;/P&gt;&lt;P&gt;                it_accountingdata-quantity    = it_itemdata-quantity.&lt;/P&gt;&lt;P&gt;                it_accountingdata-po_unit     = it_itemdata-po_unit.&lt;/P&gt;&lt;P&gt;                it_accountingdata-gl_account  = c_0000500205.&lt;/P&gt;&lt;P&gt;                append it_accountingdata.&lt;/P&gt;&lt;P&gt;                clear it_accountingdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                clear it_itemdata.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;*-- At end of each credit memo request fill the header details of BAPI&lt;/P&gt;&lt;P&gt;*FM and&lt;/P&gt;&lt;P&gt;*-- post the BAPI&lt;/P&gt;&lt;P&gt;    at end of vbeln.&lt;/P&gt;&lt;P&gt;      read table it_crmemo into wa_crmemo index lv_tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Populate the document Header&lt;/P&gt;&lt;P&gt;*-- Getting the header data for invoice&lt;/P&gt;&lt;P&gt;      x_docheader-invoice_ind  = space.&lt;/P&gt;&lt;P&gt;      x_docheader-doc_type     = c_blart.&lt;/P&gt;&lt;P&gt;      x_docheader-doc_date     = lv_rbkp_bldat.&lt;/P&gt;&lt;P&gt;      x_docheader-pstng_date   = lv_rbkp_bldat.&lt;/P&gt;&lt;P&gt;      x_docheader-ref_doc_no   = wa_rbkp-xblnr.&lt;/P&gt;&lt;P&gt;      x_docheader-comp_code    = wa_crmemo-bukrs_vf.&lt;/P&gt;&lt;P&gt;      x_docheader-currency     = wa_crmemo-waerk.&lt;/P&gt;&lt;P&gt;      x_docheader-calc_tax_ind = lc_check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Logic to find the Tax %&lt;/P&gt;&lt;P&gt;      v_tax_per = ( wa_rbkp-wmwst1 / ( wa_rbkp-rmwwr - wa_rbkp-wmwst1 )&lt;/P&gt;&lt;P&gt;) * 100.&lt;/P&gt;&lt;P&gt;      v_tax_amt = ( v_grossamt *  v_tax_per ) / 100.&lt;/P&gt;&lt;P&gt;      v_grossamt =  ( v_grossamt + v_tax_amt ).&lt;/P&gt;&lt;P&gt;      x_docheader-gross_amount = v_grossamt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      clear:v_docnr, v_year1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Calling BAPI to create PO invoice document&lt;/P&gt;&lt;P&gt;      check not it_itemdata[] is initial.&lt;/P&gt;&lt;P&gt;      call function 'BAPI_INCOMINGINVOICE_CREATE'&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          headerdata       = x_docheader&lt;/P&gt;&lt;P&gt;        importing&lt;/P&gt;&lt;P&gt;          invoicedocnumber = v_docnr&lt;/P&gt;&lt;P&gt;          fiscalyear       = v_year1&lt;/P&gt;&lt;P&gt;        tables&lt;/P&gt;&lt;P&gt;          itemdata         = it_itemdata[]&lt;/P&gt;&lt;P&gt;          accountingdata    = it_accountingdata[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         GLACCOUNTDATA    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         taxdata          =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          return           = it_return.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Commit work&lt;/P&gt;&lt;P&gt;      if not v_docnr is initial.&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 = 'X'.&lt;/P&gt;&lt;P&gt;*-- Move the data to Success Internal Table&lt;/P&gt;&lt;P&gt;        wa_success-crmemo  = wa_crmemo-vbeln.&lt;/P&gt;&lt;P&gt;        wa_success-cmemo   = wa_cmemo-vbeln.&lt;/P&gt;&lt;P&gt;        wa_success-orders  = wa_orders-vbelv.&lt;/P&gt;&lt;P&gt;        wa_success-po      = wa_po-vbeln.&lt;/P&gt;&lt;P&gt;        wa_success-miro_no = v_docnr.&lt;/P&gt;&lt;P&gt;        wa_success-text    = 'MIRO is Posted'.&lt;/P&gt;&lt;P&gt;        append wa_success to it_success.&lt;/P&gt;&lt;P&gt;        clear wa_success.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;*--   Read the values in the table IT_RETURN.&lt;/P&gt;&lt;P&gt;      clear it_return.&lt;/P&gt;&lt;P&gt;      read table it_return index 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  If message type is error then roll back the work&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if it_return-type = c_e.&lt;/P&gt;&lt;P&gt;*-- Roll back&lt;/P&gt;&lt;P&gt;        call function 'BAPI_TRANSACTION_ROLLBACK'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Move the data to Error Internal Table&lt;/P&gt;&lt;P&gt;        wa_error-crmemo = wa_crmemo-vbeln.&lt;/P&gt;&lt;P&gt;        wa_error-cmemo  = wa_cmemo-vbeln.&lt;/P&gt;&lt;P&gt;        wa_error-orders = wa_orders-vbelv.&lt;/P&gt;&lt;P&gt;        wa_error-po     = wa_po-vbeln.&lt;/P&gt;&lt;P&gt;        wa_error-text   = it_return-message.&lt;/P&gt;&lt;P&gt;        append wa_error to it_error.&lt;/P&gt;&lt;P&gt;        clear wa_error.&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;      refresh: it_return, it_itemdata, it_accountingdata.&lt;/P&gt;&lt;P&gt;      clear: v_grossamt, it_return, it_itemdata, wa_crmemo, wa_orders,&lt;/P&gt;&lt;P&gt;wa_po,&lt;/P&gt;&lt;P&gt;             wa_ekpo, wa_ekbe_temp, wa_rbkp, wa_rbkp_tmp, v_docnr,&lt;/P&gt;&lt;P&gt;v_year1, wa_success,&lt;/P&gt;&lt;P&gt;             wa_error, it_accountingdata, v_tax_per, v_tax_amt,&lt;/P&gt;&lt;P&gt;v_fill_item, lv_rbkp_bldat.&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;endform.                    " F_PROCESS_MIRO&lt;/P&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  f_quantity_conv&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;      Quantity 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 f_quantity_conv .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Quantity Conversion (Get the Credit Memo Quantity by passing CMR&lt;/P&gt;&lt;P&gt;*unit per one PO unit)&lt;/P&gt;&lt;P&gt;  clear: v_line_amount, v_crmemo_qty.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'MC_UNIT_CONVERSION'&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      matnr                = wa_crmemo-matnr&lt;/P&gt;&lt;P&gt;      nach_meins           = wa_ekpo-meins&lt;/P&gt;&lt;P&gt;      von_meins            = wa_crmemo-zieme&lt;/P&gt;&lt;P&gt;    importing&lt;/P&gt;&lt;P&gt;      umref                = v_crmemo_qty&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      conversion_not_found = 1&lt;/P&gt;&lt;P&gt;      material_not_found   = 2&lt;/P&gt;&lt;P&gt;      nach_meins_missing   = 3&lt;/P&gt;&lt;P&gt;      overflow             = 4&lt;/P&gt;&lt;P&gt;      von_meins_missing    = 5&lt;/P&gt;&lt;P&gt;      others               = 6.&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;  else.&lt;/P&gt;&lt;P&gt;    v_line_amount = ( v_crmemo_qty  * wa_crmemo-zmeng * wa_ekpo-peinh *&lt;/P&gt;&lt;P&gt;wa_ekpo-netpr ).&lt;/P&gt;&lt;P&gt;    v_grossamt    = v_grossamt + v_line_amount.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " f_quantity_conv&lt;/P&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  f_currency_amount_sap_to_bapi&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;      SAP Amount to BAPI Amount&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 f_currency_amount_sap_to_bapi  using    p_waers&lt;/P&gt;&lt;P&gt;                                             p_kbetr&lt;/P&gt;&lt;P&gt;                                    changing p_amt_doccur.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data : lv_waers like  tcurc-waers,&lt;/P&gt;&lt;P&gt;         lv_sapamount like bapicurr-bapicurr,&lt;/P&gt;&lt;P&gt;         lv_bapi_amount like bapicurr-bapicurr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  lv_waers = p_waers.&lt;/P&gt;&lt;P&gt;  lv_sapamount = p_kbetr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'CURRENCY_AMOUNT_SAP_TO_BAPI'&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      currency    = lv_waers&lt;/P&gt;&lt;P&gt;      sap_amount  = lv_sapamount&lt;/P&gt;&lt;P&gt;    importing&lt;/P&gt;&lt;P&gt;      bapi_amount = lv_bapi_amount.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  p_amt_doccur = lv_bapi_amount.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " f_currency_amount_sap_to_bapi&lt;/P&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  f_display_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 Report&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 f_display_report .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Success Report&lt;/P&gt;&lt;P&gt;  if not it_success[] is initial.&lt;/P&gt;&lt;P&gt;    uline at /1(129).&lt;/P&gt;&lt;P&gt;    write:/1 sy-vline, 'CR Memo',&lt;/P&gt;&lt;P&gt;           19 sy-vline, 'Credit Memo',&lt;/P&gt;&lt;P&gt;           39 sy-vline, 'Sales Order',&lt;/P&gt;&lt;P&gt;           59 sy-vline, 'Purchase Order',&lt;/P&gt;&lt;P&gt;           79 sy-vline, 'MIRO Number',&lt;/P&gt;&lt;P&gt;           99 sy-vline, 'Text',&lt;/P&gt;&lt;P&gt;           129 sy-vline.&lt;/P&gt;&lt;P&gt;    uline at /1(129).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at it_success into wa_success.&lt;/P&gt;&lt;P&gt;      write:/1 sy-vline, wa_success-crmemo,&lt;/P&gt;&lt;P&gt;             19 sy-vline, wa_success-cmemo,&lt;/P&gt;&lt;P&gt;             39 sy-vline, wa_success-orders,&lt;/P&gt;&lt;P&gt;             59 sy-vline, wa_success-po,&lt;/P&gt;&lt;P&gt;             79 sy-vline, wa_success-miro_no,&lt;/P&gt;&lt;P&gt;             99 sy-vline, wa_success-text,&lt;/P&gt;&lt;P&gt;             129 sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline at /1(129).&lt;/P&gt;&lt;P&gt;    skip 2.&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;*-- Error Report&lt;/P&gt;&lt;P&gt;  if not it_error[] is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    uline at /1(179).&lt;/P&gt;&lt;P&gt;    write:/1 sy-vline,  'CR Memo',&lt;/P&gt;&lt;P&gt;           19 sy-vline, 'Credit Memo',&lt;/P&gt;&lt;P&gt;           39 sy-vline, 'Sales Order',&lt;/P&gt;&lt;P&gt;           59 sy-vline, 'Purchase Order',&lt;/P&gt;&lt;P&gt;           79 sy-vline, 'Error Text',&lt;/P&gt;&lt;P&gt;           179 sy-vline.&lt;/P&gt;&lt;P&gt;    uline at /1(179).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at it_error into wa_error.&lt;/P&gt;&lt;P&gt;      write:/1 sy-vline, wa_error-crmemo,&lt;/P&gt;&lt;P&gt;             19 sy-vline, wa_error-cmemo,&lt;/P&gt;&lt;P&gt;             39 sy-vline, wa_error-orders,&lt;/P&gt;&lt;P&gt;             59 sy-vline, wa_error-po,&lt;/P&gt;&lt;P&gt;             79 sy-vline, wa_error-text,&lt;/P&gt;&lt;P&gt;             179 sy-vline.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline at /1(179).&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;&lt;/P&gt;&lt;P&gt;  if not it_success_mr8m[] is initial.&lt;/P&gt;&lt;P&gt;    uline at /1(129).&lt;/P&gt;&lt;P&gt;    write:/1 sy-vline, 'CR Memo',&lt;/P&gt;&lt;P&gt;           19 sy-vline, 'Credit Memo',&lt;/P&gt;&lt;P&gt;           39 sy-vline, 'Sales Order',&lt;/P&gt;&lt;P&gt;           59 sy-vline, 'Purchase Order',&lt;/P&gt;&lt;P&gt;           79 sy-vline, 'Reversal Posting No.',&lt;/P&gt;&lt;P&gt;           99 sy-vline, 'Text',&lt;/P&gt;&lt;P&gt;           129 sy-vline.&lt;/P&gt;&lt;P&gt;    uline at /1(129).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at it_success_mr8m into wa_success_mr8m.&lt;/P&gt;&lt;P&gt;      write:/1 sy-vline, wa_success_mr8m-crmemo,&lt;/P&gt;&lt;P&gt;             19 sy-vline, wa_success_mr8m-cmemo,&lt;/P&gt;&lt;P&gt;             39 sy-vline, wa_success_mr8m-orders,&lt;/P&gt;&lt;P&gt;             59 sy-vline, wa_success_mr8m-po,&lt;/P&gt;&lt;P&gt;             79 sy-vline, wa_success_mr8m-miro_no,&lt;/P&gt;&lt;P&gt;             99 sy-vline, wa_success_mr8m-text,&lt;/P&gt;&lt;P&gt;             129 sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline at /1(129).&lt;/P&gt;&lt;P&gt;    skip 2.&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;*-- Error Report&lt;/P&gt;&lt;P&gt;  if not it_error_mr8m[] is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    uline at /1(179).&lt;/P&gt;&lt;P&gt;    write:/1 sy-vline,  'CR Memo',&lt;/P&gt;&lt;P&gt;           19 sy-vline, 'Credit Memo',&lt;/P&gt;&lt;P&gt;           39 sy-vline, 'Sales Order',&lt;/P&gt;&lt;P&gt;           59 sy-vline, 'Purchase Order',&lt;/P&gt;&lt;P&gt;           79 sy-vline, 'Error Text',&lt;/P&gt;&lt;P&gt;           179 sy-vline.&lt;/P&gt;&lt;P&gt;    uline at /1(179).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at it_error_mr8m into wa_error_mr8m.&lt;/P&gt;&lt;P&gt;      write:/1 sy-vline, wa_error_mr8m-crmemo,&lt;/P&gt;&lt;P&gt;             19 sy-vline, wa_error_mr8m-cmemo,&lt;/P&gt;&lt;P&gt;             39 sy-vline, wa_error_mr8m-orders,&lt;/P&gt;&lt;P&gt;             59 sy-vline, wa_error_mr8m-po,&lt;/P&gt;&lt;P&gt;             79 sy-vline, wa_error_mr8m-text,&lt;/P&gt;&lt;P&gt;             179 sy-vline.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline at /1(179).&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;endform.                    " f_display_report&lt;/P&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  F_PROCESS_MR8M&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;      Process Reversal postings&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 f_process_mr8m .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear: wa_crmemo_mr8m.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at it_crmemo_mr8m into wa_crmemo_mr8m.&lt;/P&gt;&lt;P&gt;   read table it_cdpos into wa_cdpos with key objectid =&lt;/P&gt;&lt;P&gt;wa_crmemo_mr8m-vbeln.&lt;/P&gt;&lt;P&gt;   if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;     continue.&lt;/P&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;P&gt;   if wa_cdpos-value_old in s_augru.&lt;/P&gt;&lt;P&gt;    read table it_orders into wa_orders with key vbeln =&lt;/P&gt;&lt;P&gt;wa_crmemo_mr8m-vbeln&lt;/P&gt;&lt;P&gt;                                                 posnn =&lt;/P&gt;&lt;P&gt;wa_crmemo_mr8m-posnr.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     READ TABLE IT_CMEMO INTO WA_CMEMO WITH KEY VBELV =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;WA_ORDERS-VBELV&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                                POSNV =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;WA_ORDERS-POSNV.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     IF SY-SUBRC = 0.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        read table it_po into wa_po with key vbelv = wa_orders-vbelv&lt;/P&gt;&lt;P&gt;                                             posnv = wa_orders-posnv.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          read table it_ekpo into wa_ekpo with key ebeln = wa_po-vbeln&lt;/P&gt;&lt;P&gt;                                                   ebelp = wa_po-posnn.&lt;/P&gt;&lt;P&gt;          if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         READ TABLE IT_EKBE INTO WA_EKBE WITH KEY EBELN =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*WA_EKPO-EBELN&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                  EBELP = WA_EKPO-EBELP.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         IF SY-SUBRC = 0.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            loop at it_ekbe into wa_ekbe where ebeln = wa_ekpo-ebeln&lt;/P&gt;&lt;P&gt;                                         and   ebelp = wa_ekpo-ebelp.&lt;/P&gt;&lt;P&gt;              read table it_rbkp into wa_rbkp with key&lt;/P&gt;&lt;P&gt;                                               belnr = wa_ekbe-belnr&lt;/P&gt;&lt;P&gt;                                               gjahr = wa_ekbe-gjahr&lt;/P&gt;&lt;P&gt;                                            bldat = wa_crmemo_mr8m-aedat&lt;/P&gt;&lt;P&gt;                                            xblnr+0(10) = wa_ekbe-ebeln&lt;/P&gt;&lt;P&gt;                                                       xrech = space&lt;/P&gt;&lt;P&gt;                                                       stblg = space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;                move: wa_rbkp-belnr   to x_rev_post-inv_doc_no,&lt;/P&gt;&lt;P&gt;                      wa_rbkp-gjahr   to x_rev_post-fisc_year,&lt;/P&gt;&lt;P&gt;                      wa_rbkp-budat   to x_rev_post-pstng_date.&lt;/P&gt;&lt;P&gt;                if wa_rbkp-budat&lt;EM&gt;4(2) = sy-datum&lt;/EM&gt;4(2).&lt;/P&gt;&lt;P&gt;                  x_rev_post-reason_rev = c_01.&lt;/P&gt;&lt;P&gt;                else.&lt;/P&gt;&lt;P&gt;                  x_rev_post-reason_rev = c_02.&lt;/P&gt;&lt;P&gt;                endif.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;            endloop.&lt;/P&gt;&lt;P&gt;*-- Call the FM for MIRO reversal&lt;/P&gt;&lt;P&gt;              call function 'BAPI_INCOMINGINVOICE_CANCEL'&lt;/P&gt;&lt;P&gt;              exporting&lt;/P&gt;&lt;P&gt;                invoicedocnumber          = x_rev_post-inv_doc_no&lt;/P&gt;&lt;P&gt;                fiscalyear                = x_rev_post-fisc_year&lt;/P&gt;&lt;P&gt;                reasonreversal            = x_rev_post-reason_rev&lt;/P&gt;&lt;P&gt;                postingdate               = x_rev_post-pstng_date&lt;/P&gt;&lt;P&gt;              importing&lt;/P&gt;&lt;P&gt;                invoicedocnumber_reversal = x_rev_post-inv_doc_no&lt;/P&gt;&lt;P&gt;                fiscalyear_reversal       = x_rev_post-fisc_year&lt;/P&gt;&lt;P&gt;              tables&lt;/P&gt;&lt;P&gt;                return                    = it_return_mr8m.&lt;/P&gt;&lt;P&gt;*-- Commit work&lt;/P&gt;&lt;P&gt;            if not x_rev_post-inv_doc_no is initial.&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 = 'X'.&lt;/P&gt;&lt;P&gt;*-- Move the data to Success Internal Table&lt;/P&gt;&lt;P&gt;              wa_success_mr8m-crmemo  = wa_crmemo-vbeln.&lt;/P&gt;&lt;P&gt;              wa_success_mr8m-cmemo   = wa_cmemo-vbeln.&lt;/P&gt;&lt;P&gt;              wa_success_mr8m-orders  = wa_orders-vbelv.&lt;/P&gt;&lt;P&gt;              wa_success_mr8m-po      = wa_po-vbeln.&lt;/P&gt;&lt;P&gt;              wa_success_mr8m-text    = 'MR8M Done'.&lt;/P&gt;&lt;P&gt;              append wa_success_mr8m to it_success_mr8m.&lt;/P&gt;&lt;P&gt;              clear wa_success_mr8m.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;*-- Read the values in the table IT_RETURN.&lt;/P&gt;&lt;P&gt;            clear it_return_mr8m.&lt;/P&gt;&lt;P&gt;            read table it_return_mr8m index 1.&lt;/P&gt;&lt;P&gt;*-- If message type is error then roll back the work&lt;/P&gt;&lt;P&gt;            if it_return_mr8m-type = 'E' .&lt;/P&gt;&lt;P&gt;*-- Roll back&lt;/P&gt;&lt;P&gt;              call function 'BAPI_TRANSACTION_ROLLBACK'.&lt;/P&gt;&lt;P&gt;*-- Move the data to Error Internal Table&lt;/P&gt;&lt;P&gt;              wa_error_mr8m-crmemo = wa_crmemo-vbeln.&lt;/P&gt;&lt;P&gt;              wa_error_mr8m-cmemo  = wa_cmemo-vbeln.&lt;/P&gt;&lt;P&gt;              wa_error_mr8m-orders = wa_orders-vbelv.&lt;/P&gt;&lt;P&gt;              wa_error_mr8m-po     = wa_po-vbeln.&lt;/P&gt;&lt;P&gt;              wa_error_mr8m-text   = it_return_mr8m-message.&lt;/P&gt;&lt;P&gt;              append wa_error_mr8m to it_error_mr8m.&lt;/P&gt;&lt;P&gt;              clear wa_error_mr8m.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    clear: wa_error_mr8m, wa_success_mr8m, x_rev_post, wa_crmemo_mr8m,&lt;/P&gt;&lt;P&gt;           wa_orders, wa_po, wa_ekpo, wa_ekbe, wa_rbkp, wa_cmemo.&lt;/P&gt;&lt;P&gt;    refresh: it_return_mr8m.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_PROCESS_MR8M&lt;/P&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  F_spool_id&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;      Create a new spool ID&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 f_spool_id .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Create a new spool from the data in data_tab&lt;/P&gt;&lt;P&gt;*--  new-page line-size sy-linsz print on&lt;/P&gt;&lt;P&gt;  new-page line-size 255 print on&lt;/P&gt;&lt;P&gt;  destination 'LOCL'(p19) "&amp;lt;&amp;lt;== my printer&lt;/P&gt;&lt;P&gt;*-- receiver 'TJOSVOB'&lt;/P&gt;&lt;P&gt;  cover text 'Spool title'(p20) " &amp;lt;&amp;lt;== Title or Spool req. name&lt;/P&gt;&lt;P&gt;  list name 'List name'(p21)&lt;/P&gt;&lt;P&gt;  list dataset 'List Dataset'(p22)&lt;/P&gt;&lt;P&gt;  immediately ' '                  " X means print now&lt;/P&gt;&lt;P&gt;  keep in spool c_x                " X means keep spool&lt;/P&gt;&lt;P&gt;  new list identification c_x&lt;/P&gt;&lt;P&gt;  no dialog .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Writing Report&lt;/P&gt;&lt;P&gt;*-- In this  perform you will write the code for displaying the list&lt;/P&gt;&lt;P&gt;  perform f_display_report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--  new-page print off&lt;/P&gt;&lt;P&gt;  new-page print off.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_spool_id&lt;/P&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  F_MAIL_LOGIC&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;      Logic to send a mail for the given Email ID's&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 f_mail_logic .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data : wa_tsp01sys type tsp01sys.&lt;/P&gt;&lt;P&gt;  clear v_spono.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  v_spono = sy-spono.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; v_attach_desc = sy-title.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*-- Convert the Spool ID into PDF format&lt;/P&gt;&lt;P&gt;  perform f_pdf_conversion tables it_compressed_list&lt;/P&gt;&lt;P&gt;                                  it_pdf_list&lt;/P&gt;&lt;P&gt;                                  using  v_spono.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Send the Mail in PDF Format&lt;/P&gt;&lt;P&gt;  perform f_send_mail.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_MAIL_LOGIC&lt;/P&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  f_pdf_conversion&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;      Read the spool and convert into PDF format&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_ITAB_COMPRESSED_LIST  text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_ITAB_PDF_LIST  text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_V_SPONO  text&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 f_pdf_conversion  tables   it_compressed_list structure soli&lt;/P&gt;&lt;P&gt;                                it_pdf_list structure tline&lt;/P&gt;&lt;P&gt;                       using    lv_spooln type tsp01-rqident.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clear: it_compressed_list, it_pdf_list.&lt;/P&gt;&lt;P&gt;refresh: it_compressed_list, it_pdf_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Call the FM "RSPO_RETURN_SPOOLJOB" to read the spool by passing the&lt;/P&gt;&lt;P&gt;*spool number&lt;/P&gt;&lt;P&gt;  call function 'RSPO_RETURN_SPOOLJOB'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            rqident              = lv_spooln&lt;/P&gt;&lt;P&gt;            desired_type         = v_type&lt;/P&gt;&lt;P&gt;       importing&lt;/P&gt;&lt;P&gt;            real_type            = v_type&lt;/P&gt;&lt;P&gt;       tables&lt;/P&gt;&lt;P&gt;            buffer               = it_compressed_list&lt;/P&gt;&lt;P&gt;            buffer_pdf           = it_pdf_list&lt;/P&gt;&lt;P&gt;       exceptions&lt;/P&gt;&lt;P&gt;            no_such_job          = 1&lt;/P&gt;&lt;P&gt;            job_contains_no_data = 2&lt;/P&gt;&lt;P&gt;            selection_empty      = 3&lt;/P&gt;&lt;P&gt;            no_permission        = 4&lt;/P&gt;&lt;P&gt;            can_not_access       = 5&lt;/P&gt;&lt;P&gt;            read_error           = 6&lt;/P&gt;&lt;P&gt;            type_no_match        = 7&lt;/P&gt;&lt;P&gt;            others               = 8.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    message i000 with 'Error in spool reading'(017).&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- If the List type is ALI call the FM "CONVERT_ABAPSPOOLJOB_2_PDF"&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  to convert list into PDF Format&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if  v_type = c_ali.                          " for List it is ALI&lt;/P&gt;&lt;P&gt;    call function 'CONVERT_ABAPSPOOLJOB_2_PDF'&lt;/P&gt;&lt;P&gt;         exporting&lt;/P&gt;&lt;P&gt;              src_spoolid              = lv_spooln&lt;/P&gt;&lt;P&gt;         tables&lt;/P&gt;&lt;P&gt;              pdf                      = it_pdf&lt;/P&gt;&lt;P&gt;         exceptions&lt;/P&gt;&lt;P&gt;              err_no_abap_spooljob     = 1&lt;/P&gt;&lt;P&gt;              err_no_spooljob          = 2&lt;/P&gt;&lt;P&gt;              err_no_permission        = 3&lt;/P&gt;&lt;P&gt;              err_conv_not_possible    = 4&lt;/P&gt;&lt;P&gt;              err_bad_destdevice       = 5&lt;/P&gt;&lt;P&gt;              user_cancelled           = 6&lt;/P&gt;&lt;P&gt;              err_spoolerror           = 7&lt;/P&gt;&lt;P&gt;              err_temseerror           = 8&lt;/P&gt;&lt;P&gt;              err_btcjob_open_failed   = 9&lt;/P&gt;&lt;P&gt;              err_btcjob_submit_failed = 10&lt;/P&gt;&lt;P&gt;              err_btcjob_close_failed  = 11&lt;/P&gt;&lt;P&gt;              others                   = 12.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      message e000&lt;/P&gt;&lt;P&gt;              with'Error in convertion of list into PDF format'(018).&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Logic to convert the given format into 255 character format in&lt;/P&gt;&lt;P&gt;*IT_PDF&lt;/P&gt;&lt;P&gt;    describe table it_pdf lines v_lines.&lt;/P&gt;&lt;P&gt;    describe field it_pdf length v_lineslen  in character mode.&lt;/P&gt;&lt;P&gt;    describe field it_temp length v_mimelen in character mode.&lt;/P&gt;&lt;P&gt;    loop at it_pdf.&lt;/P&gt;&lt;P&gt;      v_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;      move it_pdf to v_temp+v_offset.&lt;/P&gt;&lt;P&gt;      if v_tabix = v_lines.&lt;/P&gt;&lt;P&gt;        v_lineslen = strlen( it_pdf ).&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      v_offset = v_offset + v_lineslen.&lt;/P&gt;&lt;P&gt;      if v_offset ge v_mimelen.&lt;/P&gt;&lt;P&gt;        clear it_temp.&lt;/P&gt;&lt;P&gt;        it_temp = v_temp(v_mimelen).&lt;/P&gt;&lt;P&gt;        append it_temp.&lt;/P&gt;&lt;P&gt;        shift v_temp by v_mimelen places.&lt;/P&gt;&lt;P&gt;        v_offset = v_offset - v_mimelen.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if v_tabix = v_lines.&lt;/P&gt;&lt;P&gt;        if v_offset gt 0.&lt;/P&gt;&lt;P&gt;          clear it_temp.&lt;/P&gt;&lt;P&gt;          it_temp = v_temp(v_offset).&lt;/P&gt;&lt;P&gt;          append it_temp.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&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;    loop at it_temp.&lt;/P&gt;&lt;P&gt;      it_mime(255) = it_temp-line.&lt;/P&gt;&lt;P&gt;      append it_mime.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Final Data to send to EMail&lt;/P&gt;&lt;P&gt;    it_html[] = it_mime[].&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " f_pdf_conversion&lt;/P&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  f_send_mail&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;      Send EMail Logic&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 f_send_mail .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data : wa_tsp01sys type tsp01sys.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Populate Mail Id's&lt;/P&gt;&lt;P&gt;  wa_reclist-rec_type = p_mode.&lt;/P&gt;&lt;P&gt;  wa_reclist-express  = c_x.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Loop through the Emial select options&lt;/P&gt;&lt;P&gt;  loop at s_email into x_email.&lt;/P&gt;&lt;P&gt;    wa_reclist-receiver = x_email-low.&lt;/P&gt;&lt;P&gt;*-- append receiver table&lt;/P&gt;&lt;P&gt;    append wa_reclist to it_reclist.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- If receiver table is not initial&lt;/P&gt;&lt;P&gt;  check it_reclist[] is not initial.&lt;/P&gt;&lt;P&gt;*--To check Mail ID's internal table should not be Empty.&lt;/P&gt;&lt;P&gt;*--populate document attributes&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Mail subject line&lt;/P&gt;&lt;P&gt;  clear: x_doc_chng.&lt;/P&gt;&lt;P&gt;  x_doc_chng-obj_name = 'HEADING'.&lt;/P&gt;&lt;P&gt;  concatenate 'Automatic Vendor Dedit Postings'(005)&lt;/P&gt;&lt;P&gt;              sy-datum&lt;/P&gt;&lt;P&gt;              into x_doc_chng-obj_descr separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Mail body&lt;/P&gt;&lt;P&gt;  concatenate 'Automatic Vendor Dedit Postings'(005)&lt;/P&gt;&lt;P&gt;             ' is attached.'(006)&lt;/P&gt;&lt;P&gt;             into wa_objtxt separated by space.&lt;/P&gt;&lt;P&gt;  append wa_objtxt to it_objtxt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Append Date and Time into Body of email.&lt;/P&gt;&lt;P&gt;  move 'File is generated on'(007)&lt;/P&gt;&lt;P&gt;        to v_info.&lt;/P&gt;&lt;P&gt;  v_time = sy-uzeit.&lt;/P&gt;&lt;P&gt;  concatenate v_time+0(2)&lt;/P&gt;&lt;P&gt;              v_time+2(2)&lt;/P&gt;&lt;P&gt;              v_time+4(2)&lt;/P&gt;&lt;P&gt;              into&lt;/P&gt;&lt;P&gt;              v_time2 separated by ':'.&lt;/P&gt;&lt;P&gt;  concatenate sy-datum+4(2)&lt;/P&gt;&lt;P&gt;              '/'&lt;/P&gt;&lt;P&gt;              sy-datum+6(2)&lt;/P&gt;&lt;P&gt;              '/'&lt;/P&gt;&lt;P&gt;              sy-datum+0(4)&lt;/P&gt;&lt;P&gt;              into v_date2.&lt;/P&gt;&lt;P&gt;  concatenate v_info&lt;/P&gt;&lt;P&gt;              v_date2&lt;/P&gt;&lt;P&gt;              'At'&lt;/P&gt;&lt;P&gt;              v_time2&lt;/P&gt;&lt;P&gt;              into v_info&lt;/P&gt;&lt;P&gt;              separated by space.&lt;/P&gt;&lt;P&gt;  wa_objtxt = v_info.&lt;/P&gt;&lt;P&gt;  append wa_objtxt to it_objtxt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Document size&lt;/P&gt;&lt;P&gt;  clear : v_table_lines.&lt;/P&gt;&lt;P&gt;  describe table it_objtxt lines v_table_lines.&lt;/P&gt;&lt;P&gt;  read table it_objtxt into wa_objtxt index v_table_lines .&lt;/P&gt;&lt;P&gt;  x_doc_chng-doc_size =&lt;/P&gt;&lt;P&gt;                 ( v_table_lines - 1 ) * 255 + strlen( wa_objtxt ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Populate packing list for body text&lt;/P&gt;&lt;P&gt;  wa_objpack-head_start = 1.&lt;/P&gt;&lt;P&gt;  wa_objpack-head_num = 0.&lt;/P&gt;&lt;P&gt;  wa_objpack-body_start = 1.&lt;/P&gt;&lt;P&gt;  wa_objpack-body_num = v_table_lines.&lt;/P&gt;&lt;P&gt;  wa_objpack-doc_type = 'RAW'.&lt;/P&gt;&lt;P&gt;  append wa_objpack to it_objpack.&lt;/P&gt;&lt;P&gt;  clear wa_objpack.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if v_type = c_ali.&lt;/P&gt;&lt;P&gt;    loop at it_html.&lt;/P&gt;&lt;P&gt;      wa_objbin-line = it_html-line.&lt;/P&gt;&lt;P&gt;    append wa_objbin to it_objbin.&lt;/P&gt;&lt;P&gt;    clear  wa_objbin.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    v_type = 'PDF'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Get total no.of lines of Object table(attachment)&lt;/P&gt;&lt;P&gt;  clear : v_table_lines.&lt;/P&gt;&lt;P&gt;  describe table it_objbin lines v_table_lines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Populate object header(attachment name)&lt;/P&gt;&lt;P&gt;  wa_objhead = 'Automatic Vendor Dedit Postings log'(014).&lt;/P&gt;&lt;P&gt;  append wa_objhead to it_objhead.&lt;/P&gt;&lt;P&gt;  clear  wa_objhead.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Packing list for attachment&lt;/P&gt;&lt;P&gt;  wa_objpack-transf_bin = c_x.&lt;/P&gt;&lt;P&gt;  wa_objpack-head_start = 1.&lt;/P&gt;&lt;P&gt;  wa_objpack-head_num = 1.&lt;/P&gt;&lt;P&gt;  wa_objpack-body_start = 1.&lt;/P&gt;&lt;P&gt;  wa_objpack-body_num = v_table_lines .&lt;/P&gt;&lt;P&gt;  wa_objpack-doc_type = v_type .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  wa_objpack-obj_name = 'Auto_Debit'.&lt;/P&gt;&lt;P&gt;  wa_objpack-obj_descr = 'attachment'.&lt;/P&gt;&lt;P&gt;  wa_objpack-doc_size = v_table_lines * 255.&lt;/P&gt;&lt;P&gt;  append wa_objpack to it_objpack.&lt;/P&gt;&lt;P&gt;  clear  wa_objpack.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Sending the EMail document in given format&lt;/P&gt;&lt;P&gt;  call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      document_data              = x_doc_chng&lt;/P&gt;&lt;P&gt;      put_in_outbox              = c_x&lt;/P&gt;&lt;P&gt;      commit_work                = c_x&lt;/P&gt;&lt;P&gt;    tables&lt;/P&gt;&lt;P&gt;      packing_list               = it_objpack&lt;/P&gt;&lt;P&gt;      object_header              = it_objhead&lt;/P&gt;&lt;P&gt;      contents_bin               = it_objbin&lt;/P&gt;&lt;P&gt;      contents_txt               = it_objtxt&lt;/P&gt;&lt;P&gt;      receivers                  = it_reclist&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      too_many_receivers         = 1&lt;/P&gt;&lt;P&gt;      document_not_sent          = 2&lt;/P&gt;&lt;P&gt;      document_type_not_exist    = 3&lt;/P&gt;&lt;P&gt;      operation_no_authorization = 4&lt;/P&gt;&lt;P&gt;      parameter_error            = 5&lt;/P&gt;&lt;P&gt;      x_error                    = 6&lt;/P&gt;&lt;P&gt;      enqueue_error              = 7&lt;/P&gt;&lt;P&gt;      others                     = 8.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    message e000 with 'Error occurred in sending mail'(015).&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;*-- Wait upto 2 secounds&lt;/P&gt;&lt;P&gt;    wait up to 2 seconds.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Call the RSCONN01 (SAPconnect: Start Send Process)&lt;/P&gt;&lt;P&gt;    submit rsconn01 with mode = 'INT'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    WITH output = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    and return.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform f_display_sent_mail_status.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To delete the spool request&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  wa_tsp01sys-rqident = sy-spono.&lt;/P&gt;&lt;P&gt;  call function 'RSPO_IDELETE_SPOOLREQ'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            spoolreq = wa_tsp01sys.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " f_send_mail&lt;/P&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  F_DISPLAY_SENT_MAIL_STATUS&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 Mail Sent status to the user&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 f_display_sent_mail_status .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  uline at /1(60).&lt;/P&gt;&lt;P&gt;  write &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; sy-vline,&lt;/P&gt;&lt;P&gt;          'Mail sent Successfully to'(016)&lt;/P&gt;&lt;P&gt;           color 5 intensified on,&lt;/P&gt;&lt;P&gt;           60 sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at s_email into x_email.&lt;/P&gt;&lt;P&gt;    v_table_lines = strlen( x_email-low ).&lt;/P&gt;&lt;P&gt;    move x_email-low+0(v_table_lines) to v_text2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    write &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; sy-vline,&lt;/P&gt;&lt;P&gt;             2 sy-tabix left-justified,&lt;/P&gt;&lt;P&gt;             5 ')',&lt;/P&gt;&lt;P&gt;               v_text2,&lt;/P&gt;&lt;P&gt;             60 sy-vline.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    uline at /1(60).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " F_DISPLAY_SENT_MAIL_STATUS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward points if helpful&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Sep 2007 09:14:10 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/invoice-creation-through-bapi/m-p/2868344#M672939</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-24T09:14:10Z</dc:date>
    </item>
  </channel>
</rss>

