<?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 Interface validation in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/interface-validation/m-p/2751435#M639965</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is my existing interface ,I need to do a validation on Unique id,which i need to add to custom table ZBACKS_GIPD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check if there is same unique id within the upload file.&lt;/P&gt;&lt;P&gt;Check from table ZBACKS_GIPD if the same Unique ID already exists ,&lt;/P&gt;&lt;P&gt;Update log file with error message :"Duplicate record"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please let me know where I need to add this validation in the below code. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT ZBAB005 LINE-SIZE 255&lt;/P&gt;&lt;P&gt;               LINE-COUNT 58(2)&lt;/P&gt;&lt;P&gt;               NO STANDARD PAGE HEADING&lt;/P&gt;&lt;P&gt;               MESSAGE-ID 00.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: MARA,        "Material master&lt;/P&gt;&lt;P&gt;        MARC,        "Plant Data for Material&lt;/P&gt;&lt;P&gt;        MBEW,        "Material Valuation&lt;/P&gt;&lt;P&gt;        T001K,       "Valuation area&lt;/P&gt;&lt;P&gt;        t100,        "Messages&lt;/P&gt;&lt;P&gt;        kna1,        "Customer master&lt;/P&gt;&lt;P&gt;        SKB1,        "G/L account&lt;/P&gt;&lt;P&gt;        BKPF,        "FIN doc&lt;/P&gt;&lt;P&gt;        zprdordhdr,  "production order header&lt;/P&gt;&lt;P&gt;        ZSTDLOADING, "BACKS-SAP Interface - Generic ProdOrd costing data&lt;/P&gt;&lt;P&gt;        ZBACKS_GIPD. "BACKS-SAP Interface - Material Consumption&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Short name of the interface name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: INTFNAME(4) value 'GIPD'. "Good Issues for Prod. Order&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;include zbab000. "Common procedures for files handling&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK 6 WITH FRAME TITLE TEXT-006.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  parameters: p_usafl obligatory default 'E'. "Usgae indicator&lt;/P&gt;&lt;P&gt;  parameters: p_chk_ui as checkbox "check invalid usage ind "UATK922842&lt;/P&gt;&lt;P&gt;                default space.                              "UATK922842&lt;/P&gt;&lt;P&gt;  parameters: p_chk_pd as checkbox "check period of the posting date&lt;/P&gt;&lt;P&gt;                default 'X'.                                "UATK923027&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK 6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK 7 WITH FRAME TITLE TEXT-007.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;parameters: fb70mode default 'N'.&lt;/P&gt;&lt;P&gt;parameters: fb50mode default 'N'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK 7.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK 8 WITH FRAME TITLE TEXT-008.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;parameters:&lt;/P&gt;&lt;P&gt;  p_nor  radiobutton group rad1, "new posting&lt;/P&gt;&lt;P&gt;  p_rep2 radiobutton group rad1. "report (flag '2')&lt;/P&gt;&lt;P&gt;select-options:&lt;/P&gt;&lt;P&gt;  recno for zbacks_gipd-recno    "record number&lt;/P&gt;&lt;P&gt;    default '1' obligatory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK 8.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF TAB OCCURS 1000,&lt;/P&gt;&lt;P&gt;         WERKS(04),  "plant&lt;/P&gt;&lt;P&gt;         AUFNR(25),  "production order number&lt;/P&gt;&lt;P&gt;         MATNR(18),  "material&lt;/P&gt;&lt;P&gt;         ERDAT(10),  "BACKS tx date&lt;/P&gt;&lt;P&gt;         MENGE_as_string(17),  "qty&lt;/P&gt;&lt;P&gt;         USAFL(01),  "consumption/usage indicator&lt;/P&gt;&lt;P&gt;         SAKNR(10),  "G/L account number (this is from user's data file,&lt;/P&gt;&lt;P&gt;                     "use SAKNR_FOR_POSTING to post mat. doc instead)&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       EXPCD(02),  "expenses code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         IDNUM(35),  "BACKS Identification number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         kunnr(10),  "customer number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The below 3 fields have no use in SAP transactions&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;however they are included in the data file from BACKS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Just store them in ZBACKS_GIPD for future use if required&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         USACD(10),  "usage code&lt;/P&gt;&lt;P&gt;         ORDCD(10),  "order code&lt;/P&gt;&lt;P&gt;         LOSTY(03),  "loss type&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         COTAX(13),  " like zbacks_gipd-cotax, "consumption tax&lt;/P&gt;&lt;P&gt;         MWSKZ(02),  " like zbacks_gipd-MWSKZ, "tax code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The below fields are not included in the BACKS incoming data file&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;They are only for the processing of this program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         RECNO(10),  "record number in the uploaded data file&lt;/P&gt;&lt;P&gt;         FAILF(01),  "Status flag (0=OK, see documentation for details)&lt;/P&gt;&lt;P&gt;         MSGNR(01),                     "message number&lt;/P&gt;&lt;P&gt;         MSGTX(200),                    "message text&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         menge(13) type p decimals 3, "qty as numeric&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         BUKRS        like t001-bukrs,  "company code&lt;/P&gt;&lt;P&gt;         PRCTR        like marc-prctr,  "profit center&lt;/P&gt;&lt;P&gt;         matkl        like mara-matkl,  "material group&lt;/P&gt;&lt;P&gt;         unitstdcost  type p decimals 3,"standard cost (per 1 EA)&lt;/P&gt;&lt;P&gt;         matloading   type i,           "material loading&lt;/P&gt;&lt;P&gt;         runum        like zprdordhdr-runum,"prod. order running number&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       SAKNR        like zexpense-saknr, "account no.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         KOSTL        like zexpense-kostl, "cost center&lt;/P&gt;&lt;P&gt;         saknr_for_posting like bseg-saknr,"G/L acct after validation&lt;/P&gt;&lt;P&gt;         erdat_raw(10),                    "BACKS tx date (MM/DD/YYYY)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       post_seq_ORIG like DATATYPE-INTEGER4,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       "(5) type n,          "random number: posting order&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       post_seq_RAND like DATATYPE-INTEGER4,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       "(5) type n,          "random number: posting order&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         MATDOC(10),     "material document&lt;/P&gt;&lt;P&gt;         MATDOCITEM(4),  "material document item number&lt;/P&gt;&lt;P&gt;         Direction(1),   "I=Issue, R=Reverse (based on the +/- of MENGE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         ladra like zbacks_gipd-ladra, "material loading rate&lt;/P&gt;&lt;P&gt;         hdr_SUBPR like zprdordhdr-SUBPR, "Sub-con Prodorder "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the below 2 fields are added to resolve 1-yen issue        "DEVK914235&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         STOCKQTY like ZBACKS_GIPD-STOCKQTY,    "total stock (from MBEW)&lt;/P&gt;&lt;P&gt;         SALK3    like ZBACKS_GIPD-SALK3,      "total value before issue&lt;/P&gt;&lt;P&gt;         ISSUESTPRS like ZBACKS_GIPD-ISSUESTPRS,"unit std cost&lt;/P&gt;&lt;P&gt;      END OF TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: START_RECNO like ZBACKS_GIPD-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF BDCDATA OCCURS 100.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BDCDATA.&lt;/P&gt;&lt;P&gt;DATA: END OF BDCDATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of msgtab occurs 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BDCMSGCOLL.&lt;/P&gt;&lt;P&gt;data: end of msgtab.&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 used in A/C &amp;amp; Inv 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;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for JV posting&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_WIP_LABOUR_OH like BSEG-SAKNR "G/L act: WIP-Labour &amp;amp; O/H&lt;/P&gt;&lt;P&gt;    value '0000141000',&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_WIP_MAT_LOAD like BSEG-SAKNR  "G/L act: WIP Matl. Loading&lt;/P&gt;&lt;P&gt;    value '0000543004',&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_WIP_MAT like BSEG-SAKNR            "G/L act: WIP matl&lt;/P&gt;&lt;P&gt;    value '0000140000',&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_OTHER_INCOME like BSEG-SAKNR       "G/L act: Other income&lt;/P&gt;&lt;P&gt;    value '0000725000', "was: '0000400310',&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_WIP_MAT_SUB_CON like BSEG-SAKNR    "G/L act: Mat supplied&lt;/P&gt;&lt;P&gt;    value '0000126001'.                          "to subcontractor&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for material movement (inventory posting)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;   CONST_LGORT like mseg-LGORT      "storage location&lt;/P&gt;&lt;P&gt;     value 'STR1',&lt;/P&gt;&lt;P&gt;   CONST_CHARG like mseg-charg      "batch number&lt;/P&gt;&lt;P&gt;     value 'BACKS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for AR customer invoice for sub-contractor&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;   CONST_TAX_RATE     type p decimals 2 value '0.05',     "i.e. 5%&lt;/P&gt;&lt;P&gt;   CONST_PENALTY_RATE type p decimals 2 value '0.2'.      "i.e. 20%&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Structures &amp;amp; internal tables for BAPI - Material movement          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Header segment with control information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF GOODSMVT_HEADER OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPI2017_GM_HEAD_01.&lt;/P&gt;&lt;P&gt;DATA: END OF GOODSMVT_HEADER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF GOODSMVT_CODE OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPI2017_GM_CODE.&lt;/P&gt;&lt;P&gt;DATA: END OF GOODSMVT_CODE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF GOODSMVT_ITEM OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPI2017_GM_ITEM_CREATE.&lt;/P&gt;&lt;P&gt;DATA: END OF GOODSMVT_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF REMSG OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPIRET2.&lt;/P&gt;&lt;P&gt;DATA: END OF REMSG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF GOODSMVT_HEADRET OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPI2017_GM_HEAD_RET.&lt;/P&gt;&lt;P&gt;DATA: END OF GOODSMVT_HEADRET.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*DATA: MATDOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC.&lt;/P&gt;&lt;P&gt;DATA: DOCYEAR LIKE BAPI2017_GM_HEAD_RET-DOC_YEAR.&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;  Structures &amp;amp; internal tables for BAPI - Account Doc Posting        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: DOCUMENTHEADER like BAPIACHE08.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ACCOUNTGL occurs 0.&lt;/P&gt;&lt;P&gt;      include structure BAPIACGL08.&lt;/P&gt;&lt;P&gt;DATA: END OF ACCOUNTGL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF CURRENCYAMOUNT occurs 0.&lt;/P&gt;&lt;P&gt;      include structure BAPIACCR08.&lt;/P&gt;&lt;P&gt;DATA: END OF CURRENCYAMOUNT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF RETURN occurs 0.&lt;/P&gt;&lt;P&gt;      include structure BAPIRET2.&lt;/P&gt;&lt;P&gt;DATA: END OF RETURN.&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;  Misc. internal tables and variable for error logging               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ERRTX OCCURS 0,&lt;/P&gt;&lt;P&gt;      MSGTX(110).&lt;/P&gt;&lt;P&gt;DATA: END OF ERRTX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ERR(1) TYPE C.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TTLQTY(12) TYPE P,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    SUCQTY(12) TYPE P,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FALQTY(12) TYPE P.&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;  Calculation variables for sub-contractor                           *&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: ar_amt_vendor   type p decimals 0.&lt;/P&gt;&lt;P&gt;  data: ar_amt_penalty  type p decimals 0.&lt;/P&gt;&lt;P&gt;  data: ar_amt_total    type p decimals 0.&lt;/P&gt;&lt;P&gt;  data: ar_amt_tax      type p decimals 0.&lt;/P&gt;&lt;P&gt;  data: ar_amt_vendor_as_text(13).&lt;/P&gt;&lt;P&gt;  data: ar_amt_penalty_as_text(13).&lt;/P&gt;&lt;P&gt;  data: ar_amt_total_as_text(13).&lt;/P&gt;&lt;P&gt;  data: ar_amt_tax_as_text(13).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: last_werks like tab-werks. "plant&lt;/P&gt;&lt;P&gt;data: last_matnr like tab-matnr. "to avoid locking problem -&amp;gt; Sleep if&lt;/P&gt;&lt;P&gt;                           "the current p/n is the same as the last one&lt;/P&gt;&lt;P&gt;data: last_direction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: FI_DOC_TEXT(50).   "contains: 1-35:  BACKS ID&lt;/P&gt;&lt;P&gt;                         "          36-50: Quantity&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of tab_by_matnr occurs 0.&lt;/P&gt;&lt;P&gt;      include structure tab.&lt;/P&gt;&lt;P&gt;data: end of tab_by_matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: MATDOC_AND_ITEM(16). "to put in reference fields&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Data for mat doc item rearrangement                                *&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;*Max. no. of items in a single material doc.&lt;/P&gt;&lt;P&gt;*This number must be less than the half of the FI doc. item limit (999)&lt;/P&gt;&lt;P&gt;constants:&lt;/P&gt;&lt;P&gt;  c_max_mat_doc_items type i value '400'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;last flag to indicate if a break is required&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: l_last_matnr     like tab-matnr.     "last material&lt;/P&gt;&lt;P&gt;data: l_last_direction like tab-direction. "last direction (+ or -)&lt;/P&gt;&lt;P&gt;data: l_last_werks     like tab-werks.     "last plant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;count the no. of items (to check against the max. no. of item limit)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: l_matnr_counter type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Start and End date of the allowed posting priod                    *&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: g_period_start_date like sy-datum. "first date of current period&lt;/P&gt;&lt;P&gt;data: g_period_end_date   like sy-datum. "end date of current period&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;  Stock info before Goods issue (to solve 1-yen issue)               *&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: G_SALK3(16) type p decimals 0. "total stock value&lt;/P&gt;&lt;P&gt;data: G_LBKUM like mbew-lbkum.      "total stock qty&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;     T O P   O F   P A G E&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;TOP-OF-PAGE.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'Z_PRINT_REPORT_HEADING'&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;            I_WERKS = 'IHK1'&lt;/P&gt;&lt;P&gt;            I_LINSZ = SY-LINSZ&lt;/P&gt;&lt;P&gt;            I_CPROG = SY-CPROG&lt;/P&gt;&lt;P&gt;            I_TITLE = SY-TITLE.&lt;/P&gt;&lt;P&gt;WRITE: /1(006)  'Plant'                color 1,&lt;/P&gt;&lt;P&gt;         (025)  'Production Order No'  color 1,&lt;/P&gt;&lt;P&gt;         (018)  'Material'             color 1,&lt;/P&gt;&lt;P&gt;         (010)  'CreDate'              color 1,&lt;/P&gt;&lt;P&gt;         (015)  'Qty'                  color 1,&lt;/P&gt;&lt;P&gt;         (010)  'Usage Ind.'           color 1,&lt;/P&gt;&lt;P&gt;         (010)  'G/L Acct.'            color 1,&lt;/P&gt;&lt;P&gt;         (025)  'BACKS ID'             color 1,&lt;/P&gt;&lt;P&gt;         (010)  'Cust.No.'             color 1,&lt;/P&gt;&lt;P&gt;         (001)  'Fail Flag'            color 1,&lt;/P&gt;&lt;P&gt;         (100)  'Message'              color 1.&lt;/P&gt;&lt;P&gt;ULINE.&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;&lt;/P&gt;&lt;P&gt;if p_chk_pd = 'X'. "check preiod is needed    "UATK923027&lt;/P&gt;&lt;P&gt;  perform start_end_date_of_period.  "calculate period start/end date&lt;/P&gt;&lt;P&gt;  if   g_period_start_date is initial     "if the start/end date is not&lt;/P&gt;&lt;P&gt;    or g_period_end_date   is initial.    "determined, stop the program&lt;/P&gt;&lt;P&gt;    write: / 'Period start/end date not determined, program stopped.'.&lt;/P&gt;&lt;P&gt;    stop.&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;if p_nor = 'X'.&lt;/P&gt;&lt;P&gt;  PERFORM COMMON_SETUP_FILENAMES. "auto setup filenames by current date&lt;/P&gt;&lt;P&gt;  PERFORM COMMON_UPLOAD_FILES.    "upload input files: TXT and FLG&lt;/P&gt;&lt;P&gt;  PERFORM CONVERSION_DATA.&lt;/P&gt;&lt;P&gt;elseif p_rep2 = 'X'.&lt;/P&gt;&lt;P&gt;  perform read_data_from_GIPD.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PERFORM CHECK_DATA.&lt;/P&gt;&lt;P&gt;PERFORM MAIN_UPDATE.&lt;/P&gt;&lt;P&gt;PERFORM PRINT_OUTPUT.&lt;/P&gt;&lt;P&gt;PERFORM COMMON_DOWNLOAD_FILES.  "download the log &amp;amp; status file&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;  FORM READ_DATA_FROM_GIPD                                         *&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 read_data_from_GIPD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select * from zbacks_gipd&lt;/P&gt;&lt;P&gt;    where failf = '2'&lt;/P&gt;&lt;P&gt;      and recno in recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear tab.&lt;/P&gt;&lt;P&gt;    clear result_total. "reset the record counter&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tab-werks = zbacks_gipd-WERKS.         "plant&lt;/P&gt;&lt;P&gt;    tab-aufnr = zbacks_gipd-AUFNR.         "production order no.&lt;/P&gt;&lt;P&gt;    tab-matnr = zbacks_gipd-MATNR.         "material&lt;/P&gt;&lt;P&gt;    tab-erdat = zbacks_gipd-BUDAT.         "transaction date&lt;/P&gt;&lt;P&gt;    tab-recno = zbacks_gipd-recno.&lt;/P&gt;&lt;P&gt;    TAB-MENGE = zbacks_gipd-menge.         "qty&lt;/P&gt;&lt;P&gt;    TAB-USAFL = zbacks_gipd-usafl.         "usage/consumption ind.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         TAB-EXPCD            "Expenses code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TAB-SAKNR = zbacks_gipd-saknr.         "G/L account number&lt;/P&gt;&lt;P&gt;    TAB-IDNUM = zbacks_gipd-idnum.         "BACKS identification no.&lt;/P&gt;&lt;P&gt;    TAB-KUNNR = zbacks_gipd-kunnr.         "Customer Number&lt;/P&gt;&lt;P&gt;    TAB-USACD = zbacks_gipd-usacd.         "usage code&lt;/P&gt;&lt;P&gt;    TAB-ORDCD = zbacks_gipd-ordcd.         "order code&lt;/P&gt;&lt;P&gt;    TAB-LOSTY = zbacks_gipd-losty.         "loss type&lt;/P&gt;&lt;P&gt;    TAB-COTAX = zbacks_gipd-cotax.         "consumption tax&lt;/P&gt;&lt;P&gt;    TAB-MWSKZ = zbacks_gipd-mwskz.         "tax code&lt;/P&gt;&lt;P&gt;    tab-runum = zbacks_gipd-runum.         "running number&lt;/P&gt;&lt;P&gt;    tab-failf = zbacks_gipd-failf.     "failure flag&lt;/P&gt;&lt;P&gt;    tab-msgnr = zbacks_gipd-failf.     "failure flag&lt;/P&gt;&lt;P&gt;    tab-matdoc = zbacks_gipd-docm1.    "material doc&lt;/P&gt;&lt;P&gt;    tab-msgtx = 'Repost 2nd step'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   tab-erdat_raw = tab-erdat. "keep the MM/DD/YYYY format&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CONCATENATE TAB-ERDAT&lt;EM&gt;6(4) TAB-ERDAT&lt;/EM&gt;0(2) TAB-ERDAT+3(2)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          INTO TAB-ERDAT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     concatenate tab-erdat+4(2) '/'&lt;/P&gt;&lt;P&gt;                 tab-erdat+6(2) '/'&lt;/P&gt;&lt;P&gt;                 tab-erdat+0(4)&lt;/P&gt;&lt;P&gt;               into tab-erdat_raw.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Process only a particular set of usage indicator first&lt;/P&gt;&lt;P&gt;    if tab-usafl = p_usafl.&lt;/P&gt;&lt;P&gt;      APPEND TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      result_total = result_total + 1. "Increase the record counter&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;  endselect.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  write: / 'Re-processing records for usage indicator', p_usafl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FORM CONVERSION_DATA                                               *&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 CONVERSION_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data: saknr_len type i. "field length of GL acct&lt;/P&gt;&lt;P&gt;  data: kunnr_len type i. "field length of cust no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  describe field tab-saknr length saknr_len.&lt;/P&gt;&lt;P&gt;  describe field tab-kunnr length kunnr_len.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear result_total. "reset the record counter&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT STR_TXT.&lt;/P&gt;&lt;P&gt;     CLEAR TAB.&lt;/P&gt;&lt;P&gt;     SPLIT STR_TXT-SLINE AT '|'&lt;/P&gt;&lt;P&gt;      INTO TAB-WERKS            "plant&lt;/P&gt;&lt;P&gt;           TAB-AUFNR            "production order no.&lt;/P&gt;&lt;P&gt;           TAB-MATNR            "material&lt;/P&gt;&lt;P&gt;           TAB-ERDAT            "transaction date&lt;/P&gt;&lt;P&gt;           TAB-MENGE_as_string  "qty&lt;/P&gt;&lt;P&gt;           TAB-USAFL            "usage/consumption ind.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         TAB-EXPCD            "Expenses code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           TAB-SAKNR            "G/L account number&lt;/P&gt;&lt;P&gt;           TAB-IDNUM            "BACKS identification no.&lt;/P&gt;&lt;P&gt;           TAB-KUNNR            "Customer Number&lt;/P&gt;&lt;P&gt;           TAB-USACD            "usage code&lt;/P&gt;&lt;P&gt;           TAB-ORDCD            "order code&lt;/P&gt;&lt;P&gt;           TAB-LOSTY            "loss type&lt;/P&gt;&lt;P&gt;           TAB-COTAX            "consumption tax&lt;/P&gt;&lt;P&gt;           TAB-MWSKZ            "tax code&lt;/P&gt;&lt;P&gt;           .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     tab-erdat_raw = tab-erdat. "keep the MM/DD/YYYY format&lt;/P&gt;&lt;P&gt;     CONCATENATE TAB-ERDAT&lt;EM&gt;6(4) TAB-ERDAT&lt;/EM&gt;0(2) TAB-ERDAT+3(2)&lt;/P&gt;&lt;P&gt;            INTO TAB-ERDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     tab-menge = tab-menge_as_string. "convert to numeric field&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*set tab-msgnr to 1 for invalid usage indicator&lt;/P&gt;&lt;P&gt;*so that the error records will be included in the error log&lt;/P&gt;&lt;P&gt;     if p_chk_ui = 'X'.&lt;/P&gt;&lt;P&gt;       perform check_usage_indicator.&lt;/P&gt;&lt;P&gt;     endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Process only a particular set of usage indicator first&lt;/P&gt;&lt;P&gt;*{Gary Tang 02/10/2003 UATK922842 also include MSGNR=1 (invalid usage&lt;/P&gt;&lt;P&gt;*incicator records&lt;/P&gt;&lt;P&gt;     if tab-usafl = p_usafl "this is the target usage indicator&lt;/P&gt;&lt;P&gt;        or tab-msgnr = '1'. "this is 1 because of invalid usage ind.&lt;/P&gt;&lt;P&gt;*}Gary Tang 02/10/2003 UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;add leading zero to numeric GL acct no.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;e.g. data file: 230330 --&amp;gt; convert to: 0000230330&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       CALL FUNCTION 'Z_PURE_NUMERIC_ADD_LEADING_0'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           INPUT_FIELD        = tab-saknr&lt;/P&gt;&lt;P&gt;           TARGET_LEN         = saknr_len&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;           OUTPUT_FIELD       = tab-saknr&lt;/P&gt;&lt;P&gt;                 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;add leading zero to numeric cust num&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;e.g. data file: 3100001 --&amp;gt; convert to: 0003100001&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;e.g. data file: NEC-JP  --&amp;gt; no conversion: NEC-JP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       CALL FUNCTION 'Z_PURE_NUMERIC_ADD_LEADING_0'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           INPUT_FIELD        = tab-kunnr&lt;/P&gt;&lt;P&gt;           TARGET_LEN         = kunnr_len&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;           OUTPUT_FIELD       = tab-kunnr&lt;/P&gt;&lt;P&gt;             .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       APPEND TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       result_total = result_total + 1. "Increase the record counter&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;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  write: / 'Processing records for usage indicator', p_usafl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FORM CHECK_DATA                                                    *&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 CHECK_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   if p_nor = 'X'.&lt;/P&gt;&lt;P&gt;     PERFORM GET_NEXT_RECNO.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   LOOP AT TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform check_data_on_period."record date must in current period&lt;/P&gt;&lt;P&gt;      perform check_data_on_zprdordhdr. "production order header&lt;/P&gt;&lt;P&gt;      perform check_data_on_mara.  "material master (general)&lt;/P&gt;&lt;P&gt;      perform check_data_on_marc.  "material master (plant)&lt;/P&gt;&lt;P&gt;      perform check_data_on_t001k. "company code vs plant&lt;/P&gt;&lt;P&gt;      perform check_data_on_mbew.  "Material Valuation&lt;/P&gt;&lt;P&gt;      perform check_usage_indicator. "usage indicator&lt;/P&gt;&lt;P&gt;      perform check_sub_contract.  "must have customer number&lt;/P&gt;&lt;P&gt;      perform check_data_on_kna1.  "customer number&lt;/P&gt;&lt;P&gt;      perform check_data_on_skb1.  "G/L account&lt;/P&gt;&lt;P&gt;      perform check_menge.         "quantity&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    perform check_expense.       "for eXpenses&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform calculate_materail_loading.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    perform gen_random_posting_sequence.&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 p_nor = 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM INSERT_TABLE_ZBACKS_GIPD.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MODIFY TAB.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if p_nor = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;print the last record number for reference&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  write: / 'ZBACKS_GIPD record number (RECNO) to   :',&lt;/P&gt;&lt;P&gt;            ZBACKS_GIPD-RECNO.&lt;/P&gt;&lt;P&gt;  skip 1.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FOMR Gen_random_posting_sequence                                   *&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 gen_random_posting_sequence.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; tab-post_seq_ORIG = SY-TABIX.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   tab-post_seq_RAND = 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CALL FUNCTION 'RANDOM_I4'&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;       RND_MIN         = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       RND_MAX         = 50000&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;       RND_VALUE       = tab-Post_seq_RAND&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; endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FOMR CHECH_MENGE                                             *&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 check_MENGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tab-menge &amp;gt; 0.      "Issue qty &amp;gt; 0&lt;/P&gt;&lt;P&gt;    tab-direction = 'I'. "Issue (i.e. decrease the inventory)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  elseif tab-menge &amp;lt; 0.  "Issue qty &amp;lt; 0&lt;/P&gt;&lt;P&gt;    tab-direction = 'R'. "Reverse (i.e. increase the inventory&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  elseif tab-menge = 0.  "Issue qty = 0 ==&amp;gt; Strange case, error!&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    tab-msgtx = 'Qty is 0. Nothing to post!'.&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.&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;  FOMR CHECH_USAGE_INDICATOR                                         *&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 check_usage_indicator.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  case tab-usafl.&lt;/P&gt;&lt;P&gt;    when 'I'. "Inhouse production&lt;/P&gt;&lt;P&gt;    when 'E'. "External procurement&lt;/P&gt;&lt;P&gt;    when 'X'. "Expense&lt;/P&gt;&lt;P&gt;    when 'T'. "transfer to sub-contractor&lt;/P&gt;&lt;P&gt;    when 'S'. "sale to sub-contractor&lt;/P&gt;&lt;P&gt;    when 'C'. "consign to sub-contractor&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when '?'. "add new usage indicator here if needed!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    when others. "illegal value! reject the record&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     concatenate 'Invalid usage indicator'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       into tab-msgtx separated by space.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      tab-msgtx = 'Invalid usage indicator'.&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*form check_expense.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check not tab-msgnr = '1'. "no need to go further if already rejected*&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; check tab-usafl = 'X'. "only for expense&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; SELECT SINGLE ZEXPENSE~SAKNR&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               ZEXPENSE~KOSTL&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   into (TAB-SAKNR,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         TAB-KOSTL)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   FROM ZEXPENSE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   WHERE ZEXPENSE~WERKS = TAB-WERKS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     AND ZEXPENSE~EXPCD = TAB-EXPCD.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&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;   TAB-MSGNR = '1'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   TAB-MSGTX = 'Expense code not found (ZEXPENSE)'.&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;*&lt;/P&gt;&lt;P&gt;*endform.&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;  FOMR CALCULATE_MATERIAL_LOADING                                    *&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 calculate_materail_loading.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Material loading is calculated for all records&lt;/P&gt;&lt;P&gt;*Though posting only required for usage 'E'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check tab-usafl = 'E'. "only for External procurement need to post&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single ZSTDLOADING~LADRA  "loading %&lt;/P&gt;&lt;P&gt;    into ZSTDLOADING-LADRA         "loading %&lt;/P&gt;&lt;P&gt;    from ZSTDLOADING               "standard loading info.&lt;/P&gt;&lt;P&gt;    where WERKS = tab-werks        "plant&lt;/P&gt;&lt;P&gt;      and MATGP = tab-matkl+0(2)   "customer code&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    and LADTY = tab-usafl.       "usage code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      and LADTY = 'P'.             "material loading&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if ( sy-subrc &amp;lt;&amp;gt; 0 ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   or ( zstdloading-LADRA is initial ). "DEVK909574&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Mat. loading % not found or = 0% (ZSTDLOADING)'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tab-ladra = zstdloading-ladra. "store the loading rate into table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*{Gary Tang 02/10/2003                                     "UATK922842&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;round the qty*stdcost to integer before multiplying the loading rate&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    tab-matloading         "type is integer (result will be rounded off)&lt;/P&gt;&lt;P&gt;      = tab-menge          "qty&lt;/P&gt;&lt;P&gt;      &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;tab-unitstdcost.   "std cost (of 1 EA)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     * ZSTDLOADING-LADRA "material loading percentage (%)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     / 100.              "because material loading is in %&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   tab-matloading         "type is integer (result will be rounded off)&lt;/P&gt;&lt;P&gt;      = tab-matloading&lt;/P&gt;&lt;P&gt;       &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ZSTDLOADING-LADRA "material loading percentage (%)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       / 100.              "because material loading is in %&lt;/P&gt;&lt;P&gt;*}Gary Tang 02/10/2003                                     "UATK922842&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.&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;  FORM CHECK_DATA_ON_SKB1                                            *&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 check_data_on_SKB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data: saknr_as_numeric(10) type n. "for leading zero&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  case tab-usafl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  when 'I' or 'E' or 'C'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not tab-saknr is initial.&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'G/L Account no. should be blank for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      tab-saknr_for_posting = CONST_SAKNR_WIP_MAT.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  when 'T' or 'S'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not tab-saknr is initial.&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'G/L Account no. should be blank for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      tab-saknr_for_posting = CONST_SAKNR_WIP_MAT_SUB_CON.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  when 'X'. "G/L acct is required for eXpense&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if tab-saknr is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'G/L Account no. is REQUIRED for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CATCH SYSTEM-EXCEPTIONS CONVT_NO_NUMBER = 4.&lt;/P&gt;&lt;P&gt;        SAKNR_AS_NUMERIC = TAB-SAKNR.&lt;/P&gt;&lt;P&gt;      endcatch.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if sy-subrc = 4.&lt;/P&gt;&lt;P&gt;        TAB-MSGNR         = '1'.&lt;/P&gt;&lt;P&gt;        TAB-MSGTX         = 'Invild G/L acct no. (should be numeric)'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select single skb1~saknr&lt;/P&gt;&lt;P&gt;        into skb1-saknr&lt;/P&gt;&lt;P&gt;      from skb1&lt;/P&gt;&lt;P&gt;      where skb1~bukrs = tab-bukrs&lt;/P&gt;&lt;P&gt;        and skb1~saknr = saknr_as_numeric. " tab-saknr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        tab-saknr_for_posting = saknr_as_numeric. " tab-saknr.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;        TAB-MSGTX = 'G/L Account no. not found (SKB1)'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM CHECK_DATA_ON_PREIOD                                          *&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 check_data_on_period.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check p_chk_pd = 'X'.      "check period option is selected&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if   tab-erdat &amp;lt; g_period_start_date "record in past period, reject!&lt;/P&gt;&lt;P&gt;    or tab-erdat &amp;gt; g_period_end_date.  "record in future period, reject!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Record date is not in open period.'.&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.&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;  FORM CHECK_DATA_ON_MBEW                                            *&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 check_data_on_mbew.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data: local_stprs like mbew-stprs. "std price&lt;/P&gt;&lt;P&gt;  data: local_peinh like mbew-peinh. "price unit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Standard cost is checked for all records&lt;/P&gt;&lt;P&gt;*Though calculation is only required for usage 'E'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; check tab-usafl = 'E' "for External procurement&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    or tab-usafl = 'T' "for Transfer to sub-contractor&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    or tab-usafl = 'S'."for Sale to sub-contractor&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single stprs              "std price&lt;/P&gt;&lt;P&gt;                peinh              "price unit&lt;/P&gt;&lt;P&gt;          into  (local_stprs,      "std price&lt;/P&gt;&lt;P&gt;                 local_peinh)      "price unit&lt;/P&gt;&lt;P&gt;    from mbew                      "material valuation&lt;/P&gt;&lt;P&gt;    where matnr = tab-matnr        "material&lt;/P&gt;&lt;P&gt;      and bwkey = tab-werks.       "plant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if ( sy-subrc &amp;lt;&amp;gt; 0 )             "record not round&lt;/P&gt;&lt;P&gt;    or ( local_stprs = 0 ).        "std cost = 0 (should not happen)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Standard cost not found or = 0 (MBEW)'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else.                            "calculate the cost of 1 EA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tab-unitstdcost = local_stprs / local_peinh * 100.&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.&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;  FORM CHECK_DATA_ON_ZPRDORDHDR                                      *&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 check_data_on_zprdordhdr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Production order is not required for usage indicator 'T' or 'S'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Even the number is provided, it may or may not exist in ZPRDORDHDR&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Therefore, all checking on production order can be skipped for T &amp;amp; S&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(11/11/2002, confirmation from Stephen Chung, Miura-san, Sato-san)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  check tab-usafl &amp;lt;&amp;gt; 'T'  "Transfer to sub-contract&lt;/P&gt;&lt;P&gt;    and tab-usafl &amp;lt;&amp;gt; 'S'  "Sales to sub-contract&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Confirmed by Miura-san on 11/30/2002&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Production order no. is also not required for 'X' (Expense)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    and tab-usafl &amp;lt;&amp;gt; 'X'. "Expenses&lt;/P&gt;&lt;P&gt;  if tab-aufnr is initial.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Production order number is missing'.&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;  select single zprdordhdr~aufnr&lt;/P&gt;&lt;P&gt;    into zprdordhdr-aufnr&lt;/P&gt;&lt;P&gt;    from zprdordhdr&lt;/P&gt;&lt;P&gt;    where zprdordhdr~werks = tab-werks&lt;/P&gt;&lt;P&gt;      and zprdordhdr~aufnr = tab-aufnr.&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;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Production order number not found (ZPRDORDHDR)'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    select max( zprdordhdr~runum )&lt;/P&gt;&lt;P&gt;      into tab-runum&lt;/P&gt;&lt;P&gt;      from zprdordhdr&lt;/P&gt;&lt;P&gt;      where zprdordhdr~werks = tab-werks&lt;/P&gt;&lt;P&gt;        and zprdordhdr~aufnr = tab-aufnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if tab-runum is initial.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TAB-MSGNR = '1'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TAB-MSGTX = 'Production order number not found (ZPRDORDHDR)'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select single&lt;/P&gt;&lt;P&gt;         stats   "production order status&lt;/P&gt;&lt;P&gt;         SUBPR   "Sub-contracting Production Order&lt;/P&gt;&lt;P&gt;        into (zprdordhdr-stats,&lt;/P&gt;&lt;P&gt;              tab-hdr_SUBPR)    "save into internal table TAB directly!&lt;/P&gt;&lt;P&gt;        from zprdordhdr&lt;/P&gt;&lt;P&gt;        where zprdordhdr~werks = tab-werks&lt;/P&gt;&lt;P&gt;          and zprdordhdr~aufnr = tab-aufnr&lt;/P&gt;&lt;P&gt;          and zprdordhdr~runum = tab-runum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if ( zprdordhdr-stats &amp;lt;&amp;gt; 'O' )&lt;/P&gt;&lt;P&gt;        and ( zprdordhdr-stats &amp;lt;&amp;gt; 'C' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;        concatenate 'No tx is allowed, production order in status'&lt;/P&gt;&lt;P&gt;        zprdordhdr-stats into tab-msgtx separated by space.&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;   endif.&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;endform.&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;  FORM CHECK_DATA_ON_MARA                                            *&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 check_data_on_mara.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get cost center that is from profit center in MARC&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE MARA~MATKL                   "material group&lt;/P&gt;&lt;P&gt;    into MARA-MATKL                          "material group&lt;/P&gt;&lt;P&gt;    FROM MARA                                "Material master&lt;/P&gt;&lt;P&gt;    WHERE MATNR = TAB-MATNR.                 "material&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    TAB-MATKL = MARA-MATKL.                  "material group&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Material not found (mat.gp./cust code missing) (MARA)'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FORM CHECK_DATA_ON_MARC                                            *&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 check_data_on_marc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get cost center that is from profit center in MARC&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE PRCTR&lt;/P&gt;&lt;P&gt;    into MARC-PRCTR&lt;/P&gt;&lt;P&gt;    FROM MARC  "Plant Data for Material&lt;/P&gt;&lt;P&gt;    WHERE MATNR = TAB-MATNR  "material&lt;/P&gt;&lt;P&gt;      AND WERKS = TAB-WERKS. "plant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;    TAB-PRCTR = MARC-PRCTR.  "profit center&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX =&lt;/P&gt;&lt;P&gt;      'Mat. not found in plant. (Profit center missing) (MARC)'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FORM CHECK_DATA_ON_KNA1                                            *&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 check_data_on_kna1.  "customer number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; data: kunnr_as_numeric(10) type n.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; data: kunnr_as_string(10).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;  check not tab-kunnr is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF NOT TAB-KUNNR CA 'ABCDEFGHIJKLMNOPQRSTUVWXYZ.,-_#'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   kunnr_as_numeric = tab-kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   kunnr_as_string = kunnr_as_numeric.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   kunnr_as_string = tab-kunnr.&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;&lt;/P&gt;&lt;P&gt;  select single kna1~kunnr&lt;/P&gt;&lt;P&gt;    into kna1-kunnr&lt;/P&gt;&lt;P&gt;    from kna1&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  where kunnr = kunnr_as_string. " tab-kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    where kunnr = tab-kunnr. "customer no. (w/ leading zero if numeric)&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    concatenate 'Customer number' tab-kunnr 'not found (KNA1)'&lt;/P&gt;&lt;P&gt;      into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM CHECK_Sub_contract                                            *&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 check_sub_contract.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tab-kunnr is initial.&lt;/P&gt;&lt;P&gt;    if ( tab-usafl = 'T' )&lt;/P&gt;&lt;P&gt;      or ( tab-usafl = 'S' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'Cust number should not be blank for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&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;  else.&lt;/P&gt;&lt;P&gt;    if ( tab-usafl &amp;lt;&amp;gt; 'T' )&lt;/P&gt;&lt;P&gt;      and ( tab-usafl &amp;lt;&amp;gt; 'S' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'Cust. number should be blank for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM CHECK_DATA_ON_t001k                                           *&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 check_data_on_t001k.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single * from t001k  "Valuation area&lt;/P&gt;&lt;P&gt;    where bwkey = tab-werks.  "plant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    tab-bukrs = t001k-bukrs.  "company code&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    concatenate 'Company code not found for plant'&lt;/P&gt;&lt;P&gt;                tab-werks '(T001K)'&lt;/P&gt;&lt;P&gt;      into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM POST_GOODS_ISSUE                                              *&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 post_goods_issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform UPDATE_GI_FOR_COST_CTR.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; clear FI_DOC_TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;write: / '**&lt;STRONG&gt;', tab-matdoc, '&lt;/STRONG&gt;**'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;endform.&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;  FORM MAIN_UPDATE                                                   *&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 MAIN_UPDATE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: current_lock_matnr like mara-matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; sort tab by post_seq_RAND ascending.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Direction: I=Issue, R=Reverse&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do reverse first since it will increase invenotry&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  sort tab by direction  descending "R first, then I&lt;/P&gt;&lt;P&gt;              werks      ascending&lt;/P&gt;&lt;P&gt;              matnr      ascending. "Sort by plant and then material&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if p_nor = 'X'. "new posting first step&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;read the first record into the last flag to avoid problem when&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;processing the 1st record&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at tab where msgnr &amp;lt;&amp;gt; '1'. "skip the rejected records&lt;/P&gt;&lt;P&gt;      last_matnr = tab-matnr.&lt;/P&gt;&lt;P&gt;      last_direction = tab-direction.&lt;/P&gt;&lt;P&gt;      last_werks = tab-werks.&lt;/P&gt;&lt;P&gt;      exit.&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 tab where msgnr &amp;lt;&amp;gt; '1'. "skip the rejected records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if ( tab-werks &amp;lt;&amp;gt; last_werks )&lt;/P&gt;&lt;P&gt;      or ( tab-matnr &amp;lt;&amp;gt; last_matnr )&lt;/P&gt;&lt;P&gt;      or ( tab-direction &amp;lt;&amp;gt; last_direction )&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check if the no. of material i.e.items reach the limit "DE1K901698&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      or ( l_matnr_counter &amp;gt;= c_max_mat_doc_items ).     "DE1K901698&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     if sy-tabix &amp;lt;&amp;gt; '1'.          "not needed!         "DE1K901698&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;sleep for 5 seconds before different plant and Issues/Reversal tx&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if ( tab-werks &amp;lt;&amp;gt; last_werks )&lt;/P&gt;&lt;P&gt;          or ( tab-direction &amp;lt;&amp;gt; last_direction )&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        or ( tab-matnr = last_matnr ).                 "DE1K901698&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          or ( tab_by_matnr-matnr = current_lock_matnr ).   "DE1K901698&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         write: / tab-matnr, last_matnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;write: / tab-recno.&lt;/P&gt;&lt;P&gt;           perform sleep_5_seconds.&lt;/P&gt;&lt;P&gt;&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;      describe table tab_by_matnr lines sy-tfill.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      write: / tab_by_matnr-werks, tab_by_matnr-matnr, sy-tfill.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform post_goods_issue.&lt;/P&gt;&lt;P&gt;        current_lock_matnr = tab_by_matnr-matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      clear l_matnr_counter.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      last_werks = tab-werks.&lt;/P&gt;&lt;P&gt;      last_matnr = tab-matnr.&lt;/P&gt;&lt;P&gt;      last_direction = tab-direction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      refresh tab_by_matnr.&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;    clear tab_by_matnr.     "DE1K901698 record for the same material&lt;/P&gt;&lt;P&gt;    tab_by_matnr = tab.     "DE1K901698 put into a temp table&lt;/P&gt;&lt;P&gt;    append tab_by_matnr.    "DE1K901698 will be posted to 1 mat doc&lt;/P&gt;&lt;P&gt;    l_matnr_counter = l_matnr_counter + 1. "DE1K901698 count the mat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  clear tab_by_matnr.    "DE1K901698 moved to the start of the loop&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  tab_by_matnr = tab.    "DE1K901698 moved to the start of the loop&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  append tab_by_matnr.   "DE1K901698 moved to the start of the loop&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check if the temp item table still contains record&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  describe table tab_by_matnr lines sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;sleep for 5 seconds before different plant and Issues/Reversal tx&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if sy-tfill &amp;gt; 0. "still need to post the last batch&lt;/P&gt;&lt;P&gt;write: / 'last'.&lt;/P&gt;&lt;P&gt;      perform sleep_5_seconds.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Post goods issues for the last batch of records (after ENDLOOP)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      perform post_goods_issue.&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;  endif. "new posting step 1 done&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;perform UPDATE_GI_FOR_COST_CTR.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;clear FI_DOC_TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;loop at TAB where msgnr &amp;lt;&amp;gt; '1'. "skip the rejected records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;msgnr = 2 ==&amp;gt; ready for step 2. (Mat doc. already posted)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at TAB where msgnr = '2'. "skip the rejected records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if tab-matnr = last_matnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     write: / 'Sleep 1 sec', tab-matnr, tab-post_seq_rand.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CALL FUNCTION 'RZL_SLEEP'&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;         SECONDS              = 1&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;         ARGUMENT_ERROR       = 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;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&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;UL&gt;&lt;LI level="2" 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="2" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&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;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     last_matnr = tab-matnr.&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*****&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   perform UPDATE_GI_FOR_COST_CTR.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   clear FI_DOC_TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;post JV for different usage indicator&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if  ( tab-usafl = 'E'             "external procurement&lt;/P&gt;&lt;P&gt;          and tab-hdr_SUBPR = space ) "not sub-contract    "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      or tab-usafl = 'C'.       "consignment               "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if tab-msgnr = '2'.     "ready for step 2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        "mat. loading amount = 0, no need to create doc&lt;/P&gt;&lt;P&gt;        if tab-matloading = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CONCATENATE tab-msgtx ', JV (Mat.Load.) Not needed (0)'&lt;/P&gt;&lt;P&gt;           INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;          MODIFY TAB TRANSPORTING MSGNR MSGTX.&lt;/P&gt;&lt;P&gt;          result_ok = result_ok + 1.&lt;/P&gt;&lt;P&gt;                                   "Increase record counter (Successful)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;            using tab-werks&lt;/P&gt;&lt;P&gt;             tab-aufnr&lt;/P&gt;&lt;P&gt;             tab-matnr&lt;/P&gt;&lt;P&gt;             tab-erdat&lt;/P&gt;&lt;P&gt;             tab-recno&lt;/P&gt;&lt;P&gt;             tab-msgnr&lt;/P&gt;&lt;P&gt;             space          "parameter not needed for mat doc&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           msgtab-msgv1.  "FI DOC for material loading&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;             'N/A'.         "FI DOC N/A&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        else. "post a JV for material loading&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          perform UPDATE_MATERIAL_LOADING_JV.&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;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if ( tab-usafl = 'T' )    "transfer to subcon&lt;/P&gt;&lt;P&gt;      or ( tab-usafl = 'S' ). "sales to subcon&lt;/P&gt;&lt;P&gt;      if tab-msgnr = '2'.     "ready for step 2&lt;/P&gt;&lt;P&gt;        perform update_sub_contractor.&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;*no JV posting is needed for inhouse production&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if tab-usafl = 'I'.       "inhouse production&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     if tab-msgnr = '0'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       perform update_???&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;   endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*no JV posting is needed for expenses&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if tab-usafl = 'X'.       "expenses&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     if tab-msgnr = '0'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       perform update_???&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;   endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*no JV posting is needed for consign to sub-contractor&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  if ( tab-usafl = 'C' ).    "consign to subcon&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    if tab-msgnr = '0'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      perform update_???.&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;  endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FORM UPDATE_SUB_CONTRACTOR                                         *&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 update_sub_contractor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform sub_con_fb70_prepare.&lt;/P&gt;&lt;P&gt;  perform sub_con_fb70_fillscreen.&lt;/P&gt;&lt;P&gt;  perform sub_con_fb70_calltx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM SUB_CON_FB70_PREPARE                                          *&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 sub_con_fb70_prepare.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear ar_amt_vendor.     "material amount (std price * qty)&lt;/P&gt;&lt;P&gt;  clear ar_amt_penalty.    "penalty amount&lt;/P&gt;&lt;P&gt;  clear ar_amt_total.      "total amount (with tax)&lt;/P&gt;&lt;P&gt;  clear ar_amt_tax.        "tax amount&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ar_amt_vendor&lt;/P&gt;&lt;P&gt;    = tab-menge         "qty&lt;/P&gt;&lt;P&gt;    &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;tab-unitstdcost.  "std cost (of 1 EA)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tab-usafl = 'T'.   "Transfer to sub-contractor&lt;/P&gt;&lt;P&gt;    ar_amt_penalty      "Add the amount for penalty&lt;/P&gt;&lt;P&gt;      = ar_amt_vendor&lt;/P&gt;&lt;P&gt;      &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CONST_PENALTY_RATE.&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;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ar_amt_tax = ( ar_amt_vendor + ar_amt_penalty ) * CONST_TAX_RATE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ar_amt_tax = tab-cotax.&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ar_amt_total          "Total amonut (with tax)&lt;/P&gt;&lt;P&gt;    =   ar_amt_vendor&lt;/P&gt;&lt;P&gt;      + ar_amt_penalty&lt;/P&gt;&lt;P&gt;      + ar_amt_tax.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  * ( '1.0' + CONST_TAX_RATE ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ar_amt_total_as_text   = abs( ar_amt_total ).&lt;/P&gt;&lt;P&gt;  ar_amt_vendor_as_text  = abs( ar_amt_vendor ).&lt;/P&gt;&lt;P&gt;  ar_amt_penalty_as_text = abs( ar_amt_penalty ).&lt;/P&gt;&lt;P&gt;  ar_amt_tax_as_text     = abs( ar_amt_tax ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM SUB_CON_FB70_FILLSCREEN                                       *&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 sub_con_fb70_fillscreen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; DATA: FI_DOC_TEXT(50).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; clear FI_DOC_TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;  concatenate TAB-MATDOC '-' TAB-MATDOCITEM into MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;  condense MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;  FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;P&gt;  write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  refresh bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_OKCODE' '=DUMM'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'BDC_OKCODE' '=MORE'. "goto Details tab&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF TAB-MENGE &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD       USING 'RF05A-BUSCS' 'R'.  "Invoice&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD       USING 'RF05A-BUSCS' 'G'.  "Credit memo&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;PERFORM BDC_FIELD  USING 'BDC_CURSOR' 'ACGL_ITEM-HKONT(01)'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-ACCNT' TAB-KUNNR.     "customer number&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-BLDAT' TAB-ERDAT_RAW. "invoice date&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-BUDAT' TAB-ERDAT_RAW. "posting date&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-XBLNR' MATDOC_AND_ITEM. "Material Doc.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-SGTXT' FI_DOC_TEXT.   "tab-idnum.&lt;/P&gt;&lt;P&gt;                                                        "BACKS ID No.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-WAERS' 'JPY'.         "Currency&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-WRBTR' ar_amt_total_as_text.  "Amount&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD USING 'INVFO-MWSKZ' TAB-MWSKZ.          "tax code&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD USING 'INVFO-WMWST' ar_amt_tax_as_text. "Tax amount&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PERFORM BDC_FIELD USING 'INVFO-XMWST' 'X'.              "auto cal. tax&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CLEAR AUFNR.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CONCATENATE TAB-AUFNR '-' TAB-RUNUM INTO AUFNR.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PERFORM BDC_FIELD       USING 'INVFO-SGTXT' AUFNR. "PO no.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'BDC_OKCODE' '/00'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-BKTXT' tab-aufnr. "Productioin order&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-ZUONR' TAB-MATNR. "material no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-HKONT(01)'&lt;/P&gt;&lt;P&gt;                                   CONST_SAKNR_WIP_MAT_SUB_CON.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-WRBTR(01)' ar_amt_vendor_as_text.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-KOSTL(01)' TAB-PRCTR.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-SGTXT(01)' FI_DOC_TEXT."TAB-IDNUM.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-ZUONR(01)' TAB-MATNR.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-MWSKZ(01)' TAB-MWSKZ. "Tax code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tab-usafl = 'T'. "Transfer: add the penalty!&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-HKONT(02)' "other income&lt;/P&gt;&lt;P&gt;                                   CONST_SAKNR_OTHER_INCOME.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-WRBTR(02)'&lt;/P&gt;&lt;P&gt;                                   ar_amt_penalty_as_text.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-KOSTL(02)' TAB-PRCTR.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-SGTXT(02)' FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;                                                  "TAB-IDNUM.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-ZUONR(02)' TAB-MATNR.&lt;/P&gt;&lt;P&gt;&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; PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_OKCODE' '=TEXT'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO USING 'SAPLFTXT' '0100'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_CURSOR' 'RTEXT-SPRAS(01)'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_OKCODE' '=TEDE'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'RTEXT-SPRAS(01)' 'JA'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO USING 'SAPLSTXX' '1100'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_CURSOR' 'RSTXT-TXLINE(02)'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=EDNL'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CLEAR TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CONCATENATE '          QUANTITY : ' TAB-MENGE INTO TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'RSTXT-TXLINE(02)' TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO      USING 'SAPLSTXX' '1100'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=TXBA'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO      USING 'SAPLFTXT' '0100'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=BACK'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO      USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=MORE'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO      USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '/00'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'INVFO-BKTXT' TAB-VBELN.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_DYNPRO      USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=BU'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM SUB_CON_FB70_CALLTX                                           *&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 sub_con_fb70_calltx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  refresh msgtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if ar_amt_total = 0. "Amount = 0, no need to post AR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;    CONCATENATE  TAB-MSGTX&lt;/P&gt;&lt;P&gt;      ', AR invoice not needed (Amount=0)'&lt;/P&gt;&lt;P&gt;      INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;    result_ok = result_ok + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else. "Amount &amp;lt;&amp;gt; 0, post AR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    call transaction 'FB70'&lt;/P&gt;&lt;P&gt;      using    bdcdata&lt;/P&gt;&lt;P&gt;      update   'S'&lt;/P&gt;&lt;P&gt;      mode     fb70mode&lt;/P&gt;&lt;P&gt;      messages into msgtab.&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;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TAB-MSGNR = '3'. "no need to change, this is remain in 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      read table msgtab with key MSGTYP = 'E'.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        select single t100~text&lt;/P&gt;&lt;P&gt;          into t100-text&lt;/P&gt;&lt;P&gt;          from t100&lt;/P&gt;&lt;P&gt;            where t100~sprsl = sy-langu&lt;/P&gt;&lt;P&gt;              and arbgb = msgtab-msgid&lt;/P&gt;&lt;P&gt;              and msgnr = msgtab-msgnr.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          CONCATENATE TAB-MSGTX ', AR invoice error:' t100-text&lt;/P&gt;&lt;P&gt;            INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          CONCATENATE TAB-MSGTX&lt;/P&gt;&lt;P&gt;            ', AR invoice error:' '(error message not found)'&lt;/P&gt;&lt;P&gt;            INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;        endif.&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;    result_err = result_err + 1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      read table msgtab with key msgid = 'F5' msgnr = '312'.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;        CONCATENATE  TAB-MSGTX&lt;/P&gt;&lt;P&gt;          ', AR invoice posted:' msgtab-msgv1&lt;/P&gt;&lt;P&gt;          INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;        result_ok = result_ok + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;          using tab-werks&lt;/P&gt;&lt;P&gt;            tab-aufnr&lt;/P&gt;&lt;P&gt;            tab-matnr&lt;/P&gt;&lt;P&gt;            tab-erdat&lt;/P&gt;&lt;P&gt;            tab-recno&lt;/P&gt;&lt;P&gt;            tab-msgnr&lt;/P&gt;&lt;P&gt;            space          "parameter not needed for mat doc&lt;/P&gt;&lt;P&gt;            MSGTAB-MSGV1.  "Customer invoice&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;        CONCATENATE TAB-MSGTX&lt;/P&gt;&lt;P&gt;          'AR invoice problem:' '(Cannot display invoice no.)'&lt;/P&gt;&lt;P&gt;          INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      result_err = result_err + 1.&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;&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MODIFY TAB TRANSPORTING MSGNR MSGTX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM UPDATE_GI_FOR_COST_CTR                                        *&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 UPDATE_GI_FOR_COST_CTR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   REFRESH: GOODSMVT_HEADER, GOODSMVT_CODE, GOODSMVT_ITEM, REMSG.&lt;/P&gt;&lt;P&gt;   CLEAR: GOODSMVT_HEADER, GOODSMVT_CODE, GOODSMVT_ITEM, REMSG.&lt;/P&gt;&lt;P&gt;   CLEAR: ERR, TAB-MATDOC, DOCYEAR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM MAINTAIN_GOODSMVT_HEADER.&lt;/P&gt;&lt;P&gt;   PERFORM MAINTAIN_GOODSMVT_CODE.&lt;/P&gt;&lt;P&gt;   PERFORM MAINTAIN_GOODSMVT_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   CALL FUNCTION 'BAPI_GOODSMVT_CREATE'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                GOODSMVT_HEADER             = GOODSMVT_HEADER&lt;/P&gt;&lt;P&gt;                GOODSMVT_CODE               = GOODSMVT_CODE&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              TESTRUN                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           IMPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              GOODSMVT_HEADRET            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                MATERIALDOCUMENT            = TAB-MATDOC&lt;/P&gt;&lt;P&gt;                MATDOCUMENTYEAR             = DOCYEAR&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                GOODSMVT_ITEM               = GOODSMVT_ITEM&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              GOODSMVT_SERIALNUMBER       =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                RETURN                      = REMSG&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;UL&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;              WAIT          =&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;              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;&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;&amp;gt;&lt;/P&gt;&lt;P&gt;commit work.&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF REMSG-TYPE = 'E'.&lt;/P&gt;&lt;P&gt;         ERR = 'X'.&lt;/P&gt;&lt;P&gt;         CONCATENATE REMSG-NUMBER REMSG-MESSAGE INTO&lt;/P&gt;&lt;P&gt;                     ERRTX-MSGTX SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      LOOP AT REMSG.&lt;/P&gt;&lt;P&gt;         IF REMSG-TYPE = 'E'.&lt;/P&gt;&lt;P&gt;            ERR = 'X'.&lt;/P&gt;&lt;P&gt;            CONCATENATE REMSG-NUMBER REMSG-MESSAGE&lt;/P&gt;&lt;P&gt;                   INTO ERRTX-MSGTX SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;            APPEND ERRTX.&lt;/P&gt;&lt;P&gt;         ENDIF.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&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;&lt;/P&gt;&lt;P&gt;   IF ERR EQ 'X'.&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TAB-MSGTX = 'Update failed for Goods Issue'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      concatenate 'Update failed for Goods Issue:'&lt;/P&gt;&lt;P&gt;                  errtx-msgtx(68) into tab-msgtx&lt;/P&gt;&lt;P&gt;                  separated by space.&lt;/P&gt;&lt;P&gt;      loop at tab_by_matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        TAB-STOCKQTY = TAB_BY_MATNR-STOCKQTY.     "DEVK914235&lt;/P&gt;&lt;P&gt;        TAB-ISSUESTPRS = TAB_BY_MATNR-ISSUESTPRS. "DEVK914235&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MODIFY TAB TRANSPORTING MSGNR MSGTX MATDOC&lt;/P&gt;&lt;P&gt;            STOCKQTY    "DEVK914235&lt;/P&gt;&lt;P&gt;            ISSUESTPRS  "DEVK914235&lt;/P&gt;&lt;P&gt;          WHERE  "  MSGNR EQ ' '&lt;/P&gt;&lt;P&gt;                WERKS = TAB_BY_MATNR-werks&lt;/P&gt;&lt;P&gt;            and matnr = tab_by_matnr-matnr&lt;/P&gt;&lt;P&gt;            and recno = tab_by_matnr-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;          using tab_by_matnr-werks&lt;/P&gt;&lt;P&gt;                tab_by_matnr-aufnr&lt;/P&gt;&lt;P&gt;                tab_by_matnr-matnr&lt;/P&gt;&lt;P&gt;                tab_by_matnr-erdat&lt;/P&gt;&lt;P&gt;                tab_by_matnr-recno&lt;/P&gt;&lt;P&gt;                TAB-MSGNR    "must be '1' failed&lt;/P&gt;&lt;P&gt;                space  "no mat doc since posting failed&lt;/P&gt;&lt;P&gt;                space. "parameter not needed for FI doc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    result_err = result_err + 1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   ELSEIF ERR EQ ' '.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TAB-MSGNR = '0'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CONCATENATE 'Mat. doc.:' TAB-MATDOC&lt;/P&gt;&lt;P&gt;             INTO TAB-MSGTX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      loop at tab_by_matnr.&lt;/P&gt;&lt;P&gt;        TAB-MATDOCITEM = SY-TABIX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        if  tab-usafl = 'I'   "Inhouse production&lt;/P&gt;&lt;P&gt;          or tab-usafl = 'X'  "Expenses&lt;/P&gt;&lt;P&gt;*{Gary Tang 02/10/2003                      "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Usage ind. 'C' should be 2 tx in fact, mat loading is REQUIRED&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        or tab-usafl = 'C'.  "Consignment "UATK922842&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Usage ind. 'E' and ZPRDORDHDR-SUBPR = 'X', mat loading NOT required&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          or ( tab-usafl = 'E' and tab_by_matnr-hdr_SUBPR = 'X' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*}Gary Tang 02/10/2003                      "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Only 1 tx (MvT 201/202) is needed for the above usage ind.&lt;/P&gt;&lt;P&gt;*Therefore, update the no. of OK record now&lt;/P&gt;&lt;P&gt;          result_ok = result_ok + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          TAB-MSGNR = '0'. "all work is done!&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          TAB-MSGNR = '2'. "first step (mvt 201/202) is done, but&lt;/P&gt;&lt;P&gt;                        "next step (mat loading JV or cust AR is needed&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;        TAB-STOCKQTY = TAB_BY_MATNR-STOCKQTY.     "DEVK914235&lt;/P&gt;&lt;P&gt;        TAB-ISSUESTPRS = TAB_BY_MATNR-ISSUESTPRS. "DEVK914235&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MODIFY TAB TRANSPORTING MSGNR MSGTX MATDOC MATDOCITEM&lt;/P&gt;&lt;P&gt;            STOCKQTY                              "DEVK914235&lt;/P&gt;&lt;P&gt;            ISSUESTPRS                            "DEVK914235&lt;/P&gt;&lt;P&gt;          WHERE  "  MSGNR EQ ' '&lt;/P&gt;&lt;P&gt;                WERKS = TAB_BY_MATNR-werks&lt;/P&gt;&lt;P&gt;            and matnr = tab_by_matnr-matnr&lt;/P&gt;&lt;P&gt;            and recno = tab_by_matnr-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;          using tab_by_matnr-werks&lt;/P&gt;&lt;P&gt;                tab_by_matnr-aufnr&lt;/P&gt;&lt;P&gt;                tab_by_matnr-matnr&lt;/P&gt;&lt;P&gt;                tab_by_matnr-erdat&lt;/P&gt;&lt;P&gt;                tab_by_matnr-recno&lt;/P&gt;&lt;P&gt;                TAB-MSGNR    "0 (all done) or 2 (first step done)&lt;/P&gt;&lt;P&gt;                tab-matdoc&lt;/P&gt;&lt;P&gt;                space. "parameter not needed for FI doc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;**&amp;gt;&amp;gt;      MODIFY TAB TRANSPORTING MSGNR MSGTX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WHERE MSGNR EQ ' '.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&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;endform.&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;  UPDATE &lt;U&gt;MATERIAL&lt;/U&gt;LOADING_JV                                        *&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 UPDATE_MATERIAL_LOADING_JV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform prepare_jv_DOCUMENTHEADER.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform prepare_jv_ACCOUNTGL.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform prepare_jv_currencyamount.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform perpare_jv_return.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform call_bapi_jv.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform FB50_FILL_SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL TRANSACTION 'FB50'&lt;/P&gt;&lt;P&gt;       USING BDCDATA&lt;/P&gt;&lt;P&gt;       MODE fb50mode&lt;/P&gt;&lt;P&gt;       MESSAGES INTO Msgtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  read table msgtab with key&lt;/P&gt;&lt;P&gt;    MSGTYP = 'S'&lt;/P&gt;&lt;P&gt;    MSGID  = 'F5'&lt;/P&gt;&lt;P&gt;    MSGNR  = '312'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE tab-msgtx ', JV (Mat.Load.) Posted:' msgtab-msgv1&lt;/P&gt;&lt;P&gt;      INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;     MODIFY TAB TRANSPORTING MSGNR MSGTX.&lt;/P&gt;&lt;P&gt;     result_ok = result_ok + 1. "Increase record counter (Successful)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;       using tab-werks&lt;/P&gt;&lt;P&gt;             tab-aufnr&lt;/P&gt;&lt;P&gt;             tab-matnr&lt;/P&gt;&lt;P&gt;             tab-erdat&lt;/P&gt;&lt;P&gt;             tab-recno&lt;/P&gt;&lt;P&gt;             tab-msgnr&lt;/P&gt;&lt;P&gt;             space          "parameter not needed for mat doc&lt;/P&gt;&lt;P&gt;             msgtab-msgv1.  "FI DOC for material loading&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; TAB-MSGNR = '3'. "no need to change, it is remain in 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    concatenate tab-msgtx 'JV (Mat.Load.) failed:'&lt;/P&gt;&lt;P&gt;      into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at msgtab where MSGTYP = 'E'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      concatenate tab-msgtx msgtab-msgid msgtab-msgnr&lt;/P&gt;&lt;P&gt;        into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;      MODIFY TAB TRANSPORTING MSGNR MSGTX.&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;&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM FB50_FILL_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 FB50_FILL_SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: MATLOADINg_AS_STRING(12).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: BDCDATA, MSGTAB.&lt;/P&gt;&lt;P&gt;  REFRESH: BDCDATA, MSGTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;  concatenate TAB-MATDOC '-' TAB-MATDOCITEM into MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;  condense MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  matloading_as_string = abs( tab-matloading ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;  FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;P&gt;  write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM BDC_DYNPRO    USING 'SAPMF05A'             '1001'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'BDC_OKCODE'           '/00'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-BLDAT'      tab-erdat_raw.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-BUDAT'      tab-erdat_raw.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-WAERS'      'JPY'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-BKTXT'      tab-aufnr.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-XBLNR'      MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM BDC_DYNPRO    USING 'SAPMF05A'             '1001'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'BDC_OKCODE'           '=BU'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;1st item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-HKONT(01)'&lt;/P&gt;&lt;P&gt;                                          CONST_SAKNR_WIP_LABOUR_OH.&lt;/P&gt;&lt;P&gt;   If tab-matloading &amp;gt; 0.&lt;/P&gt;&lt;P&gt;     PERFORM BDC_FIELD     USING 'ACGL_ITEM-SHKZG(01)'  'S'.&lt;/P&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;P&gt;     PERFORM BDC_FIELD     USING 'ACGL_ITEM-SHKZG(01)'  'H'.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-WRBTR(01)'&lt;/P&gt;&lt;P&gt;                                          matloading_as_string.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-KOSTL(01)'  TAB-prctr.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-MARKSP(01)' 'X'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-SGTXT(01)'  FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-ZUONR(01)'  TAB-MATNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2nd item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-HKONT(02)' "Mat. loading&lt;/P&gt;&lt;P&gt;                                          CONST_SAKNR_WIP_MAT_LOAD.&lt;/P&gt;&lt;P&gt;   If tab-matloading &amp;gt; 0.&lt;/P&gt;&lt;P&gt;     PERFORM BDC_FIELD     USING 'ACGL_ITEM-SHKZG(02)'  'H'.&lt;/P&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;P&gt;     PERFORM BDC_FIELD     USING 'ACGL_ITEM-SHKZG(02)'  'S'.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-WRBTR(02)'&lt;/P&gt;&lt;P&gt;                                          matloading_as_string.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-KOSTL(02)'  TAB-prctr.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-MARKSP(02)' 'X'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-SGTXT(02)'  FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-ZUONR(02)'  TAB-MATNR.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_DYNPRO    USING 'SAPMF05A'             '1001'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'BDC_OKCODE'           '=BU'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 03 Sep 2007 12:03:21 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-09-03T12:03:21Z</dc:date>
    <item>
      <title>Interface validation</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/interface-validation/m-p/2751435#M639965</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is my existing interface ,I need to do a validation on Unique id,which i need to add to custom table ZBACKS_GIPD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check if there is same unique id within the upload file.&lt;/P&gt;&lt;P&gt;Check from table ZBACKS_GIPD if the same Unique ID already exists ,&lt;/P&gt;&lt;P&gt;Update log file with error message :"Duplicate record"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please let me know where I need to add this validation in the below code. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT ZBAB005 LINE-SIZE 255&lt;/P&gt;&lt;P&gt;               LINE-COUNT 58(2)&lt;/P&gt;&lt;P&gt;               NO STANDARD PAGE HEADING&lt;/P&gt;&lt;P&gt;               MESSAGE-ID 00.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: MARA,        "Material master&lt;/P&gt;&lt;P&gt;        MARC,        "Plant Data for Material&lt;/P&gt;&lt;P&gt;        MBEW,        "Material Valuation&lt;/P&gt;&lt;P&gt;        T001K,       "Valuation area&lt;/P&gt;&lt;P&gt;        t100,        "Messages&lt;/P&gt;&lt;P&gt;        kna1,        "Customer master&lt;/P&gt;&lt;P&gt;        SKB1,        "G/L account&lt;/P&gt;&lt;P&gt;        BKPF,        "FIN doc&lt;/P&gt;&lt;P&gt;        zprdordhdr,  "production order header&lt;/P&gt;&lt;P&gt;        ZSTDLOADING, "BACKS-SAP Interface - Generic ProdOrd costing data&lt;/P&gt;&lt;P&gt;        ZBACKS_GIPD. "BACKS-SAP Interface - Material Consumption&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Short name of the interface name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: INTFNAME(4) value 'GIPD'. "Good Issues for Prod. Order&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;include zbab000. "Common procedures for files handling&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK 6 WITH FRAME TITLE TEXT-006.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  parameters: p_usafl obligatory default 'E'. "Usgae indicator&lt;/P&gt;&lt;P&gt;  parameters: p_chk_ui as checkbox "check invalid usage ind "UATK922842&lt;/P&gt;&lt;P&gt;                default space.                              "UATK922842&lt;/P&gt;&lt;P&gt;  parameters: p_chk_pd as checkbox "check period of the posting date&lt;/P&gt;&lt;P&gt;                default 'X'.                                "UATK923027&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK 6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK 7 WITH FRAME TITLE TEXT-007.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;parameters: fb70mode default 'N'.&lt;/P&gt;&lt;P&gt;parameters: fb50mode default 'N'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK 7.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK 8 WITH FRAME TITLE TEXT-008.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;parameters:&lt;/P&gt;&lt;P&gt;  p_nor  radiobutton group rad1, "new posting&lt;/P&gt;&lt;P&gt;  p_rep2 radiobutton group rad1. "report (flag '2')&lt;/P&gt;&lt;P&gt;select-options:&lt;/P&gt;&lt;P&gt;  recno for zbacks_gipd-recno    "record number&lt;/P&gt;&lt;P&gt;    default '1' obligatory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK 8.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF TAB OCCURS 1000,&lt;/P&gt;&lt;P&gt;         WERKS(04),  "plant&lt;/P&gt;&lt;P&gt;         AUFNR(25),  "production order number&lt;/P&gt;&lt;P&gt;         MATNR(18),  "material&lt;/P&gt;&lt;P&gt;         ERDAT(10),  "BACKS tx date&lt;/P&gt;&lt;P&gt;         MENGE_as_string(17),  "qty&lt;/P&gt;&lt;P&gt;         USAFL(01),  "consumption/usage indicator&lt;/P&gt;&lt;P&gt;         SAKNR(10),  "G/L account number (this is from user's data file,&lt;/P&gt;&lt;P&gt;                     "use SAKNR_FOR_POSTING to post mat. doc instead)&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       EXPCD(02),  "expenses code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         IDNUM(35),  "BACKS Identification number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         kunnr(10),  "customer number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The below 3 fields have no use in SAP transactions&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;however they are included in the data file from BACKS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Just store them in ZBACKS_GIPD for future use if required&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         USACD(10),  "usage code&lt;/P&gt;&lt;P&gt;         ORDCD(10),  "order code&lt;/P&gt;&lt;P&gt;         LOSTY(03),  "loss type&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         COTAX(13),  " like zbacks_gipd-cotax, "consumption tax&lt;/P&gt;&lt;P&gt;         MWSKZ(02),  " like zbacks_gipd-MWSKZ, "tax code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The below fields are not included in the BACKS incoming data file&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;They are only for the processing of this program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         RECNO(10),  "record number in the uploaded data file&lt;/P&gt;&lt;P&gt;         FAILF(01),  "Status flag (0=OK, see documentation for details)&lt;/P&gt;&lt;P&gt;         MSGNR(01),                     "message number&lt;/P&gt;&lt;P&gt;         MSGTX(200),                    "message text&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         menge(13) type p decimals 3, "qty as numeric&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         BUKRS        like t001-bukrs,  "company code&lt;/P&gt;&lt;P&gt;         PRCTR        like marc-prctr,  "profit center&lt;/P&gt;&lt;P&gt;         matkl        like mara-matkl,  "material group&lt;/P&gt;&lt;P&gt;         unitstdcost  type p decimals 3,"standard cost (per 1 EA)&lt;/P&gt;&lt;P&gt;         matloading   type i,           "material loading&lt;/P&gt;&lt;P&gt;         runum        like zprdordhdr-runum,"prod. order running number&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       SAKNR        like zexpense-saknr, "account no.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         KOSTL        like zexpense-kostl, "cost center&lt;/P&gt;&lt;P&gt;         saknr_for_posting like bseg-saknr,"G/L acct after validation&lt;/P&gt;&lt;P&gt;         erdat_raw(10),                    "BACKS tx date (MM/DD/YYYY)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       post_seq_ORIG like DATATYPE-INTEGER4,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       "(5) type n,          "random number: posting order&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       post_seq_RAND like DATATYPE-INTEGER4,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       "(5) type n,          "random number: posting order&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         MATDOC(10),     "material document&lt;/P&gt;&lt;P&gt;         MATDOCITEM(4),  "material document item number&lt;/P&gt;&lt;P&gt;         Direction(1),   "I=Issue, R=Reverse (based on the +/- of MENGE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         ladra like zbacks_gipd-ladra, "material loading rate&lt;/P&gt;&lt;P&gt;         hdr_SUBPR like zprdordhdr-SUBPR, "Sub-con Prodorder "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the below 2 fields are added to resolve 1-yen issue        "DEVK914235&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         STOCKQTY like ZBACKS_GIPD-STOCKQTY,    "total stock (from MBEW)&lt;/P&gt;&lt;P&gt;         SALK3    like ZBACKS_GIPD-SALK3,      "total value before issue&lt;/P&gt;&lt;P&gt;         ISSUESTPRS like ZBACKS_GIPD-ISSUESTPRS,"unit std cost&lt;/P&gt;&lt;P&gt;      END OF TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: START_RECNO like ZBACKS_GIPD-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF BDCDATA OCCURS 100.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BDCDATA.&lt;/P&gt;&lt;P&gt;DATA: END OF BDCDATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of msgtab occurs 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BDCMSGCOLL.&lt;/P&gt;&lt;P&gt;data: end of msgtab.&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 used in A/C &amp;amp; Inv 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;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for JV posting&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_WIP_LABOUR_OH like BSEG-SAKNR "G/L act: WIP-Labour &amp;amp; O/H&lt;/P&gt;&lt;P&gt;    value '0000141000',&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_WIP_MAT_LOAD like BSEG-SAKNR  "G/L act: WIP Matl. Loading&lt;/P&gt;&lt;P&gt;    value '0000543004',&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_WIP_MAT like BSEG-SAKNR            "G/L act: WIP matl&lt;/P&gt;&lt;P&gt;    value '0000140000',&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_OTHER_INCOME like BSEG-SAKNR       "G/L act: Other income&lt;/P&gt;&lt;P&gt;    value '0000725000', "was: '0000400310',&lt;/P&gt;&lt;P&gt;  CONST_SAKNR_WIP_MAT_SUB_CON like BSEG-SAKNR    "G/L act: Mat supplied&lt;/P&gt;&lt;P&gt;    value '0000126001'.                          "to subcontractor&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for material movement (inventory posting)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;   CONST_LGORT like mseg-LGORT      "storage location&lt;/P&gt;&lt;P&gt;     value 'STR1',&lt;/P&gt;&lt;P&gt;   CONST_CHARG like mseg-charg      "batch number&lt;/P&gt;&lt;P&gt;     value 'BACKS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for AR customer invoice for sub-contractor&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;   CONST_TAX_RATE     type p decimals 2 value '0.05',     "i.e. 5%&lt;/P&gt;&lt;P&gt;   CONST_PENALTY_RATE type p decimals 2 value '0.2'.      "i.e. 20%&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Structures &amp;amp; internal tables for BAPI - Material movement          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Header segment with control information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF GOODSMVT_HEADER OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPI2017_GM_HEAD_01.&lt;/P&gt;&lt;P&gt;DATA: END OF GOODSMVT_HEADER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF GOODSMVT_CODE OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPI2017_GM_CODE.&lt;/P&gt;&lt;P&gt;DATA: END OF GOODSMVT_CODE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF GOODSMVT_ITEM OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPI2017_GM_ITEM_CREATE.&lt;/P&gt;&lt;P&gt;DATA: END OF GOODSMVT_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF REMSG OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPIRET2.&lt;/P&gt;&lt;P&gt;DATA: END OF REMSG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF GOODSMVT_HEADRET OCCURS 0.&lt;/P&gt;&lt;P&gt;      INCLUDE STRUCTURE BAPI2017_GM_HEAD_RET.&lt;/P&gt;&lt;P&gt;DATA: END OF GOODSMVT_HEADRET.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*DATA: MATDOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC.&lt;/P&gt;&lt;P&gt;DATA: DOCYEAR LIKE BAPI2017_GM_HEAD_RET-DOC_YEAR.&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;  Structures &amp;amp; internal tables for BAPI - Account Doc Posting        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: DOCUMENTHEADER like BAPIACHE08.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ACCOUNTGL occurs 0.&lt;/P&gt;&lt;P&gt;      include structure BAPIACGL08.&lt;/P&gt;&lt;P&gt;DATA: END OF ACCOUNTGL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF CURRENCYAMOUNT occurs 0.&lt;/P&gt;&lt;P&gt;      include structure BAPIACCR08.&lt;/P&gt;&lt;P&gt;DATA: END OF CURRENCYAMOUNT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF RETURN occurs 0.&lt;/P&gt;&lt;P&gt;      include structure BAPIRET2.&lt;/P&gt;&lt;P&gt;DATA: END OF RETURN.&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;  Misc. internal tables and variable for error logging               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ERRTX OCCURS 0,&lt;/P&gt;&lt;P&gt;      MSGTX(110).&lt;/P&gt;&lt;P&gt;DATA: END OF ERRTX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ERR(1) TYPE C.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TTLQTY(12) TYPE P,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    SUCQTY(12) TYPE P,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FALQTY(12) TYPE P.&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;  Calculation variables for sub-contractor                           *&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: ar_amt_vendor   type p decimals 0.&lt;/P&gt;&lt;P&gt;  data: ar_amt_penalty  type p decimals 0.&lt;/P&gt;&lt;P&gt;  data: ar_amt_total    type p decimals 0.&lt;/P&gt;&lt;P&gt;  data: ar_amt_tax      type p decimals 0.&lt;/P&gt;&lt;P&gt;  data: ar_amt_vendor_as_text(13).&lt;/P&gt;&lt;P&gt;  data: ar_amt_penalty_as_text(13).&lt;/P&gt;&lt;P&gt;  data: ar_amt_total_as_text(13).&lt;/P&gt;&lt;P&gt;  data: ar_amt_tax_as_text(13).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: last_werks like tab-werks. "plant&lt;/P&gt;&lt;P&gt;data: last_matnr like tab-matnr. "to avoid locking problem -&amp;gt; Sleep if&lt;/P&gt;&lt;P&gt;                           "the current p/n is the same as the last one&lt;/P&gt;&lt;P&gt;data: last_direction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: FI_DOC_TEXT(50).   "contains: 1-35:  BACKS ID&lt;/P&gt;&lt;P&gt;                         "          36-50: Quantity&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of tab_by_matnr occurs 0.&lt;/P&gt;&lt;P&gt;      include structure tab.&lt;/P&gt;&lt;P&gt;data: end of tab_by_matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: MATDOC_AND_ITEM(16). "to put in reference fields&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Data for mat doc item rearrangement                                *&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;*Max. no. of items in a single material doc.&lt;/P&gt;&lt;P&gt;*This number must be less than the half of the FI doc. item limit (999)&lt;/P&gt;&lt;P&gt;constants:&lt;/P&gt;&lt;P&gt;  c_max_mat_doc_items type i value '400'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;last flag to indicate if a break is required&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: l_last_matnr     like tab-matnr.     "last material&lt;/P&gt;&lt;P&gt;data: l_last_direction like tab-direction. "last direction (+ or -)&lt;/P&gt;&lt;P&gt;data: l_last_werks     like tab-werks.     "last plant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;count the no. of items (to check against the max. no. of item limit)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: l_matnr_counter type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Start and End date of the allowed posting priod                    *&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: g_period_start_date like sy-datum. "first date of current period&lt;/P&gt;&lt;P&gt;data: g_period_end_date   like sy-datum. "end date of current period&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;  Stock info before Goods issue (to solve 1-yen issue)               *&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: G_SALK3(16) type p decimals 0. "total stock value&lt;/P&gt;&lt;P&gt;data: G_LBKUM like mbew-lbkum.      "total stock qty&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;     T O P   O F   P A G E&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;TOP-OF-PAGE.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'Z_PRINT_REPORT_HEADING'&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;            I_WERKS = 'IHK1'&lt;/P&gt;&lt;P&gt;            I_LINSZ = SY-LINSZ&lt;/P&gt;&lt;P&gt;            I_CPROG = SY-CPROG&lt;/P&gt;&lt;P&gt;            I_TITLE = SY-TITLE.&lt;/P&gt;&lt;P&gt;WRITE: /1(006)  'Plant'                color 1,&lt;/P&gt;&lt;P&gt;         (025)  'Production Order No'  color 1,&lt;/P&gt;&lt;P&gt;         (018)  'Material'             color 1,&lt;/P&gt;&lt;P&gt;         (010)  'CreDate'              color 1,&lt;/P&gt;&lt;P&gt;         (015)  'Qty'                  color 1,&lt;/P&gt;&lt;P&gt;         (010)  'Usage Ind.'           color 1,&lt;/P&gt;&lt;P&gt;         (010)  'G/L Acct.'            color 1,&lt;/P&gt;&lt;P&gt;         (025)  'BACKS ID'             color 1,&lt;/P&gt;&lt;P&gt;         (010)  'Cust.No.'             color 1,&lt;/P&gt;&lt;P&gt;         (001)  'Fail Flag'            color 1,&lt;/P&gt;&lt;P&gt;         (100)  'Message'              color 1.&lt;/P&gt;&lt;P&gt;ULINE.&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;&lt;/P&gt;&lt;P&gt;if p_chk_pd = 'X'. "check preiod is needed    "UATK923027&lt;/P&gt;&lt;P&gt;  perform start_end_date_of_period.  "calculate period start/end date&lt;/P&gt;&lt;P&gt;  if   g_period_start_date is initial     "if the start/end date is not&lt;/P&gt;&lt;P&gt;    or g_period_end_date   is initial.    "determined, stop the program&lt;/P&gt;&lt;P&gt;    write: / 'Period start/end date not determined, program stopped.'.&lt;/P&gt;&lt;P&gt;    stop.&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;if p_nor = 'X'.&lt;/P&gt;&lt;P&gt;  PERFORM COMMON_SETUP_FILENAMES. "auto setup filenames by current date&lt;/P&gt;&lt;P&gt;  PERFORM COMMON_UPLOAD_FILES.    "upload input files: TXT and FLG&lt;/P&gt;&lt;P&gt;  PERFORM CONVERSION_DATA.&lt;/P&gt;&lt;P&gt;elseif p_rep2 = 'X'.&lt;/P&gt;&lt;P&gt;  perform read_data_from_GIPD.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PERFORM CHECK_DATA.&lt;/P&gt;&lt;P&gt;PERFORM MAIN_UPDATE.&lt;/P&gt;&lt;P&gt;PERFORM PRINT_OUTPUT.&lt;/P&gt;&lt;P&gt;PERFORM COMMON_DOWNLOAD_FILES.  "download the log &amp;amp; status file&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;  FORM READ_DATA_FROM_GIPD                                         *&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 read_data_from_GIPD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select * from zbacks_gipd&lt;/P&gt;&lt;P&gt;    where failf = '2'&lt;/P&gt;&lt;P&gt;      and recno in recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear tab.&lt;/P&gt;&lt;P&gt;    clear result_total. "reset the record counter&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tab-werks = zbacks_gipd-WERKS.         "plant&lt;/P&gt;&lt;P&gt;    tab-aufnr = zbacks_gipd-AUFNR.         "production order no.&lt;/P&gt;&lt;P&gt;    tab-matnr = zbacks_gipd-MATNR.         "material&lt;/P&gt;&lt;P&gt;    tab-erdat = zbacks_gipd-BUDAT.         "transaction date&lt;/P&gt;&lt;P&gt;    tab-recno = zbacks_gipd-recno.&lt;/P&gt;&lt;P&gt;    TAB-MENGE = zbacks_gipd-menge.         "qty&lt;/P&gt;&lt;P&gt;    TAB-USAFL = zbacks_gipd-usafl.         "usage/consumption ind.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         TAB-EXPCD            "Expenses code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TAB-SAKNR = zbacks_gipd-saknr.         "G/L account number&lt;/P&gt;&lt;P&gt;    TAB-IDNUM = zbacks_gipd-idnum.         "BACKS identification no.&lt;/P&gt;&lt;P&gt;    TAB-KUNNR = zbacks_gipd-kunnr.         "Customer Number&lt;/P&gt;&lt;P&gt;    TAB-USACD = zbacks_gipd-usacd.         "usage code&lt;/P&gt;&lt;P&gt;    TAB-ORDCD = zbacks_gipd-ordcd.         "order code&lt;/P&gt;&lt;P&gt;    TAB-LOSTY = zbacks_gipd-losty.         "loss type&lt;/P&gt;&lt;P&gt;    TAB-COTAX = zbacks_gipd-cotax.         "consumption tax&lt;/P&gt;&lt;P&gt;    TAB-MWSKZ = zbacks_gipd-mwskz.         "tax code&lt;/P&gt;&lt;P&gt;    tab-runum = zbacks_gipd-runum.         "running number&lt;/P&gt;&lt;P&gt;    tab-failf = zbacks_gipd-failf.     "failure flag&lt;/P&gt;&lt;P&gt;    tab-msgnr = zbacks_gipd-failf.     "failure flag&lt;/P&gt;&lt;P&gt;    tab-matdoc = zbacks_gipd-docm1.    "material doc&lt;/P&gt;&lt;P&gt;    tab-msgtx = 'Repost 2nd step'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   tab-erdat_raw = tab-erdat. "keep the MM/DD/YYYY format&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CONCATENATE TAB-ERDAT&lt;EM&gt;6(4) TAB-ERDAT&lt;/EM&gt;0(2) TAB-ERDAT+3(2)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          INTO TAB-ERDAT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     concatenate tab-erdat+4(2) '/'&lt;/P&gt;&lt;P&gt;                 tab-erdat+6(2) '/'&lt;/P&gt;&lt;P&gt;                 tab-erdat+0(4)&lt;/P&gt;&lt;P&gt;               into tab-erdat_raw.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Process only a particular set of usage indicator first&lt;/P&gt;&lt;P&gt;    if tab-usafl = p_usafl.&lt;/P&gt;&lt;P&gt;      APPEND TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      result_total = result_total + 1. "Increase the record counter&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;  endselect.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  write: / 'Re-processing records for usage indicator', p_usafl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FORM CONVERSION_DATA                                               *&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 CONVERSION_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data: saknr_len type i. "field length of GL acct&lt;/P&gt;&lt;P&gt;  data: kunnr_len type i. "field length of cust no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  describe field tab-saknr length saknr_len.&lt;/P&gt;&lt;P&gt;  describe field tab-kunnr length kunnr_len.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear result_total. "reset the record counter&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT STR_TXT.&lt;/P&gt;&lt;P&gt;     CLEAR TAB.&lt;/P&gt;&lt;P&gt;     SPLIT STR_TXT-SLINE AT '|'&lt;/P&gt;&lt;P&gt;      INTO TAB-WERKS            "plant&lt;/P&gt;&lt;P&gt;           TAB-AUFNR            "production order no.&lt;/P&gt;&lt;P&gt;           TAB-MATNR            "material&lt;/P&gt;&lt;P&gt;           TAB-ERDAT            "transaction date&lt;/P&gt;&lt;P&gt;           TAB-MENGE_as_string  "qty&lt;/P&gt;&lt;P&gt;           TAB-USAFL            "usage/consumption ind.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         TAB-EXPCD            "Expenses code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           TAB-SAKNR            "G/L account number&lt;/P&gt;&lt;P&gt;           TAB-IDNUM            "BACKS identification no.&lt;/P&gt;&lt;P&gt;           TAB-KUNNR            "Customer Number&lt;/P&gt;&lt;P&gt;           TAB-USACD            "usage code&lt;/P&gt;&lt;P&gt;           TAB-ORDCD            "order code&lt;/P&gt;&lt;P&gt;           TAB-LOSTY            "loss type&lt;/P&gt;&lt;P&gt;           TAB-COTAX            "consumption tax&lt;/P&gt;&lt;P&gt;           TAB-MWSKZ            "tax code&lt;/P&gt;&lt;P&gt;           .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     tab-erdat_raw = tab-erdat. "keep the MM/DD/YYYY format&lt;/P&gt;&lt;P&gt;     CONCATENATE TAB-ERDAT&lt;EM&gt;6(4) TAB-ERDAT&lt;/EM&gt;0(2) TAB-ERDAT+3(2)&lt;/P&gt;&lt;P&gt;            INTO TAB-ERDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     tab-menge = tab-menge_as_string. "convert to numeric field&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*set tab-msgnr to 1 for invalid usage indicator&lt;/P&gt;&lt;P&gt;*so that the error records will be included in the error log&lt;/P&gt;&lt;P&gt;     if p_chk_ui = 'X'.&lt;/P&gt;&lt;P&gt;       perform check_usage_indicator.&lt;/P&gt;&lt;P&gt;     endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Process only a particular set of usage indicator first&lt;/P&gt;&lt;P&gt;*{Gary Tang 02/10/2003 UATK922842 also include MSGNR=1 (invalid usage&lt;/P&gt;&lt;P&gt;*incicator records&lt;/P&gt;&lt;P&gt;     if tab-usafl = p_usafl "this is the target usage indicator&lt;/P&gt;&lt;P&gt;        or tab-msgnr = '1'. "this is 1 because of invalid usage ind.&lt;/P&gt;&lt;P&gt;*}Gary Tang 02/10/2003 UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;add leading zero to numeric GL acct no.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;e.g. data file: 230330 --&amp;gt; convert to: 0000230330&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       CALL FUNCTION 'Z_PURE_NUMERIC_ADD_LEADING_0'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           INPUT_FIELD        = tab-saknr&lt;/P&gt;&lt;P&gt;           TARGET_LEN         = saknr_len&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;           OUTPUT_FIELD       = tab-saknr&lt;/P&gt;&lt;P&gt;                 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;add leading zero to numeric cust num&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;e.g. data file: 3100001 --&amp;gt; convert to: 0003100001&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;e.g. data file: NEC-JP  --&amp;gt; no conversion: NEC-JP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       CALL FUNCTION 'Z_PURE_NUMERIC_ADD_LEADING_0'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           INPUT_FIELD        = tab-kunnr&lt;/P&gt;&lt;P&gt;           TARGET_LEN         = kunnr_len&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;           OUTPUT_FIELD       = tab-kunnr&lt;/P&gt;&lt;P&gt;             .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       APPEND TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       result_total = result_total + 1. "Increase the record counter&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;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  write: / 'Processing records for usage indicator', p_usafl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FORM CHECK_DATA                                                    *&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 CHECK_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   if p_nor = 'X'.&lt;/P&gt;&lt;P&gt;     PERFORM GET_NEXT_RECNO.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   LOOP AT TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform check_data_on_period."record date must in current period&lt;/P&gt;&lt;P&gt;      perform check_data_on_zprdordhdr. "production order header&lt;/P&gt;&lt;P&gt;      perform check_data_on_mara.  "material master (general)&lt;/P&gt;&lt;P&gt;      perform check_data_on_marc.  "material master (plant)&lt;/P&gt;&lt;P&gt;      perform check_data_on_t001k. "company code vs plant&lt;/P&gt;&lt;P&gt;      perform check_data_on_mbew.  "Material Valuation&lt;/P&gt;&lt;P&gt;      perform check_usage_indicator. "usage indicator&lt;/P&gt;&lt;P&gt;      perform check_sub_contract.  "must have customer number&lt;/P&gt;&lt;P&gt;      perform check_data_on_kna1.  "customer number&lt;/P&gt;&lt;P&gt;      perform check_data_on_skb1.  "G/L account&lt;/P&gt;&lt;P&gt;      perform check_menge.         "quantity&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    perform check_expense.       "for eXpenses&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform calculate_materail_loading.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    perform gen_random_posting_sequence.&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 p_nor = 'X'.&lt;/P&gt;&lt;P&gt;        PERFORM INSERT_TABLE_ZBACKS_GIPD.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MODIFY TAB.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if p_nor = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;print the last record number for reference&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  write: / 'ZBACKS_GIPD record number (RECNO) to   :',&lt;/P&gt;&lt;P&gt;            ZBACKS_GIPD-RECNO.&lt;/P&gt;&lt;P&gt;  skip 1.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FOMR Gen_random_posting_sequence                                   *&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 gen_random_posting_sequence.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; tab-post_seq_ORIG = SY-TABIX.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   tab-post_seq_RAND = 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CALL FUNCTION 'RANDOM_I4'&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;       RND_MIN         = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       RND_MAX         = 50000&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;       RND_VALUE       = tab-Post_seq_RAND&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; endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FOMR CHECH_MENGE                                             *&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 check_MENGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tab-menge &amp;gt; 0.      "Issue qty &amp;gt; 0&lt;/P&gt;&lt;P&gt;    tab-direction = 'I'. "Issue (i.e. decrease the inventory)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  elseif tab-menge &amp;lt; 0.  "Issue qty &amp;lt; 0&lt;/P&gt;&lt;P&gt;    tab-direction = 'R'. "Reverse (i.e. increase the inventory&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  elseif tab-menge = 0.  "Issue qty = 0 ==&amp;gt; Strange case, error!&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    tab-msgtx = 'Qty is 0. Nothing to post!'.&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.&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;  FOMR CHECH_USAGE_INDICATOR                                         *&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 check_usage_indicator.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  case tab-usafl.&lt;/P&gt;&lt;P&gt;    when 'I'. "Inhouse production&lt;/P&gt;&lt;P&gt;    when 'E'. "External procurement&lt;/P&gt;&lt;P&gt;    when 'X'. "Expense&lt;/P&gt;&lt;P&gt;    when 'T'. "transfer to sub-contractor&lt;/P&gt;&lt;P&gt;    when 'S'. "sale to sub-contractor&lt;/P&gt;&lt;P&gt;    when 'C'. "consign to sub-contractor&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when '?'. "add new usage indicator here if needed!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    when others. "illegal value! reject the record&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     concatenate 'Invalid usage indicator'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       into tab-msgtx separated by space.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      tab-msgtx = 'Invalid usage indicator'.&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*form check_expense.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check not tab-msgnr = '1'. "no need to go further if already rejected*&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; check tab-usafl = 'X'. "only for expense&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; SELECT SINGLE ZEXPENSE~SAKNR&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               ZEXPENSE~KOSTL&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   into (TAB-SAKNR,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         TAB-KOSTL)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   FROM ZEXPENSE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   WHERE ZEXPENSE~WERKS = TAB-WERKS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     AND ZEXPENSE~EXPCD = TAB-EXPCD.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&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;   TAB-MSGNR = '1'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   TAB-MSGTX = 'Expense code not found (ZEXPENSE)'.&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;*&lt;/P&gt;&lt;P&gt;*endform.&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;  FOMR CALCULATE_MATERIAL_LOADING                                    *&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 calculate_materail_loading.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Material loading is calculated for all records&lt;/P&gt;&lt;P&gt;*Though posting only required for usage 'E'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check tab-usafl = 'E'. "only for External procurement need to post&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single ZSTDLOADING~LADRA  "loading %&lt;/P&gt;&lt;P&gt;    into ZSTDLOADING-LADRA         "loading %&lt;/P&gt;&lt;P&gt;    from ZSTDLOADING               "standard loading info.&lt;/P&gt;&lt;P&gt;    where WERKS = tab-werks        "plant&lt;/P&gt;&lt;P&gt;      and MATGP = tab-matkl+0(2)   "customer code&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    and LADTY = tab-usafl.       "usage code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      and LADTY = 'P'.             "material loading&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if ( sy-subrc &amp;lt;&amp;gt; 0 ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   or ( zstdloading-LADRA is initial ). "DEVK909574&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Mat. loading % not found or = 0% (ZSTDLOADING)'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tab-ladra = zstdloading-ladra. "store the loading rate into table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*{Gary Tang 02/10/2003                                     "UATK922842&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;round the qty*stdcost to integer before multiplying the loading rate&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    tab-matloading         "type is integer (result will be rounded off)&lt;/P&gt;&lt;P&gt;      = tab-menge          "qty&lt;/P&gt;&lt;P&gt;      &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;tab-unitstdcost.   "std cost (of 1 EA)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     * ZSTDLOADING-LADRA "material loading percentage (%)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     / 100.              "because material loading is in %&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   tab-matloading         "type is integer (result will be rounded off)&lt;/P&gt;&lt;P&gt;      = tab-matloading&lt;/P&gt;&lt;P&gt;       &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ZSTDLOADING-LADRA "material loading percentage (%)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       / 100.              "because material loading is in %&lt;/P&gt;&lt;P&gt;*}Gary Tang 02/10/2003                                     "UATK922842&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.&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;  FORM CHECK_DATA_ON_SKB1                                            *&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 check_data_on_SKB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data: saknr_as_numeric(10) type n. "for leading zero&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  case tab-usafl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  when 'I' or 'E' or 'C'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not tab-saknr is initial.&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'G/L Account no. should be blank for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      tab-saknr_for_posting = CONST_SAKNR_WIP_MAT.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  when 'T' or 'S'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not tab-saknr is initial.&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'G/L Account no. should be blank for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      tab-saknr_for_posting = CONST_SAKNR_WIP_MAT_SUB_CON.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  when 'X'. "G/L acct is required for eXpense&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if tab-saknr is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'G/L Account no. is REQUIRED for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CATCH SYSTEM-EXCEPTIONS CONVT_NO_NUMBER = 4.&lt;/P&gt;&lt;P&gt;        SAKNR_AS_NUMERIC = TAB-SAKNR.&lt;/P&gt;&lt;P&gt;      endcatch.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if sy-subrc = 4.&lt;/P&gt;&lt;P&gt;        TAB-MSGNR         = '1'.&lt;/P&gt;&lt;P&gt;        TAB-MSGTX         = 'Invild G/L acct no. (should be numeric)'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select single skb1~saknr&lt;/P&gt;&lt;P&gt;        into skb1-saknr&lt;/P&gt;&lt;P&gt;      from skb1&lt;/P&gt;&lt;P&gt;      where skb1~bukrs = tab-bukrs&lt;/P&gt;&lt;P&gt;        and skb1~saknr = saknr_as_numeric. " tab-saknr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        tab-saknr_for_posting = saknr_as_numeric. " tab-saknr.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;        TAB-MSGTX = 'G/L Account no. not found (SKB1)'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM CHECK_DATA_ON_PREIOD                                          *&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 check_data_on_period.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check p_chk_pd = 'X'.      "check period option is selected&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if   tab-erdat &amp;lt; g_period_start_date "record in past period, reject!&lt;/P&gt;&lt;P&gt;    or tab-erdat &amp;gt; g_period_end_date.  "record in future period, reject!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Record date is not in open period.'.&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.&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;  FORM CHECK_DATA_ON_MBEW                                            *&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 check_data_on_mbew.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data: local_stprs like mbew-stprs. "std price&lt;/P&gt;&lt;P&gt;  data: local_peinh like mbew-peinh. "price unit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Standard cost is checked for all records&lt;/P&gt;&lt;P&gt;*Though calculation is only required for usage 'E'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; check tab-usafl = 'E' "for External procurement&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    or tab-usafl = 'T' "for Transfer to sub-contractor&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    or tab-usafl = 'S'."for Sale to sub-contractor&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single stprs              "std price&lt;/P&gt;&lt;P&gt;                peinh              "price unit&lt;/P&gt;&lt;P&gt;          into  (local_stprs,      "std price&lt;/P&gt;&lt;P&gt;                 local_peinh)      "price unit&lt;/P&gt;&lt;P&gt;    from mbew                      "material valuation&lt;/P&gt;&lt;P&gt;    where matnr = tab-matnr        "material&lt;/P&gt;&lt;P&gt;      and bwkey = tab-werks.       "plant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if ( sy-subrc &amp;lt;&amp;gt; 0 )             "record not round&lt;/P&gt;&lt;P&gt;    or ( local_stprs = 0 ).        "std cost = 0 (should not happen)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Standard cost not found or = 0 (MBEW)'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else.                            "calculate the cost of 1 EA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tab-unitstdcost = local_stprs / local_peinh * 100.&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.&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;  FORM CHECK_DATA_ON_ZPRDORDHDR                                      *&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 check_data_on_zprdordhdr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Production order is not required for usage indicator 'T' or 'S'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Even the number is provided, it may or may not exist in ZPRDORDHDR&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Therefore, all checking on production order can be skipped for T &amp;amp; S&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(11/11/2002, confirmation from Stephen Chung, Miura-san, Sato-san)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  check tab-usafl &amp;lt;&amp;gt; 'T'  "Transfer to sub-contract&lt;/P&gt;&lt;P&gt;    and tab-usafl &amp;lt;&amp;gt; 'S'  "Sales to sub-contract&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Confirmed by Miura-san on 11/30/2002&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Production order no. is also not required for 'X' (Expense)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    and tab-usafl &amp;lt;&amp;gt; 'X'. "Expenses&lt;/P&gt;&lt;P&gt;  if tab-aufnr is initial.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Production order number is missing'.&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;  select single zprdordhdr~aufnr&lt;/P&gt;&lt;P&gt;    into zprdordhdr-aufnr&lt;/P&gt;&lt;P&gt;    from zprdordhdr&lt;/P&gt;&lt;P&gt;    where zprdordhdr~werks = tab-werks&lt;/P&gt;&lt;P&gt;      and zprdordhdr~aufnr = tab-aufnr.&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;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Production order number not found (ZPRDORDHDR)'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    select max( zprdordhdr~runum )&lt;/P&gt;&lt;P&gt;      into tab-runum&lt;/P&gt;&lt;P&gt;      from zprdordhdr&lt;/P&gt;&lt;P&gt;      where zprdordhdr~werks = tab-werks&lt;/P&gt;&lt;P&gt;        and zprdordhdr~aufnr = tab-aufnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if tab-runum is initial.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TAB-MSGNR = '1'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TAB-MSGTX = 'Production order number not found (ZPRDORDHDR)'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select single&lt;/P&gt;&lt;P&gt;         stats   "production order status&lt;/P&gt;&lt;P&gt;         SUBPR   "Sub-contracting Production Order&lt;/P&gt;&lt;P&gt;        into (zprdordhdr-stats,&lt;/P&gt;&lt;P&gt;              tab-hdr_SUBPR)    "save into internal table TAB directly!&lt;/P&gt;&lt;P&gt;        from zprdordhdr&lt;/P&gt;&lt;P&gt;        where zprdordhdr~werks = tab-werks&lt;/P&gt;&lt;P&gt;          and zprdordhdr~aufnr = tab-aufnr&lt;/P&gt;&lt;P&gt;          and zprdordhdr~runum = tab-runum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if ( zprdordhdr-stats &amp;lt;&amp;gt; 'O' )&lt;/P&gt;&lt;P&gt;        and ( zprdordhdr-stats &amp;lt;&amp;gt; 'C' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;        concatenate 'No tx is allowed, production order in status'&lt;/P&gt;&lt;P&gt;        zprdordhdr-stats into tab-msgtx separated by space.&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;   endif.&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;endform.&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;  FORM CHECK_DATA_ON_MARA                                            *&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 check_data_on_mara.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get cost center that is from profit center in MARC&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE MARA~MATKL                   "material group&lt;/P&gt;&lt;P&gt;    into MARA-MATKL                          "material group&lt;/P&gt;&lt;P&gt;    FROM MARA                                "Material master&lt;/P&gt;&lt;P&gt;    WHERE MATNR = TAB-MATNR.                 "material&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    TAB-MATKL = MARA-MATKL.                  "material group&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX = 'Material not found (mat.gp./cust code missing) (MARA)'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FORM CHECK_DATA_ON_MARC                                            *&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 check_data_on_marc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get cost center that is from profit center in MARC&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE PRCTR&lt;/P&gt;&lt;P&gt;    into MARC-PRCTR&lt;/P&gt;&lt;P&gt;    FROM MARC  "Plant Data for Material&lt;/P&gt;&lt;P&gt;    WHERE MATNR = TAB-MATNR  "material&lt;/P&gt;&lt;P&gt;      AND WERKS = TAB-WERKS. "plant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;    TAB-PRCTR = MARC-PRCTR.  "profit center&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    TAB-MSGTX =&lt;/P&gt;&lt;P&gt;      'Mat. not found in plant. (Profit center missing) (MARC)'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FORM CHECK_DATA_ON_KNA1                                            *&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 check_data_on_kna1.  "customer number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; data: kunnr_as_numeric(10) type n.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; data: kunnr_as_string(10).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;  check not tab-kunnr is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF NOT TAB-KUNNR CA 'ABCDEFGHIJKLMNOPQRSTUVWXYZ.,-_#'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   kunnr_as_numeric = tab-kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   kunnr_as_string = kunnr_as_numeric.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   kunnr_as_string = tab-kunnr.&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;&lt;/P&gt;&lt;P&gt;  select single kna1~kunnr&lt;/P&gt;&lt;P&gt;    into kna1-kunnr&lt;/P&gt;&lt;P&gt;    from kna1&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  where kunnr = kunnr_as_string. " tab-kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    where kunnr = tab-kunnr. "customer no. (w/ leading zero if numeric)&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    concatenate 'Customer number' tab-kunnr 'not found (KNA1)'&lt;/P&gt;&lt;P&gt;      into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM CHECK_Sub_contract                                            *&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 check_sub_contract.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tab-kunnr is initial.&lt;/P&gt;&lt;P&gt;    if ( tab-usafl = 'T' )&lt;/P&gt;&lt;P&gt;      or ( tab-usafl = 'S' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'Cust number should not be blank for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&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;  else.&lt;/P&gt;&lt;P&gt;    if ( tab-usafl &amp;lt;&amp;gt; 'T' )&lt;/P&gt;&lt;P&gt;      and ( tab-usafl &amp;lt;&amp;gt; 'S' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;      concatenate 'Cust. number should be blank for usage indicator'&lt;/P&gt;&lt;P&gt;        tab-usafl into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM CHECK_DATA_ON_t001k                                           *&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 check_data_on_t001k.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check not tab-msgnr = '1'. "no need to go further if already rejected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single * from t001k  "Valuation area&lt;/P&gt;&lt;P&gt;    where bwkey = tab-werks.  "plant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    tab-bukrs = t001k-bukrs.  "company code&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '1'.&lt;/P&gt;&lt;P&gt;    concatenate 'Company code not found for plant'&lt;/P&gt;&lt;P&gt;                tab-werks '(T001K)'&lt;/P&gt;&lt;P&gt;      into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM POST_GOODS_ISSUE                                              *&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 post_goods_issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform UPDATE_GI_FOR_COST_CTR.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; clear FI_DOC_TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;write: / '**&lt;STRONG&gt;', tab-matdoc, '&lt;/STRONG&gt;**'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;endform.&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;  FORM MAIN_UPDATE                                                   *&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 MAIN_UPDATE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: current_lock_matnr like mara-matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; sort tab by post_seq_RAND ascending.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Direction: I=Issue, R=Reverse&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do reverse first since it will increase invenotry&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  sort tab by direction  descending "R first, then I&lt;/P&gt;&lt;P&gt;              werks      ascending&lt;/P&gt;&lt;P&gt;              matnr      ascending. "Sort by plant and then material&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if p_nor = 'X'. "new posting first step&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;read the first record into the last flag to avoid problem when&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;processing the 1st record&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at tab where msgnr &amp;lt;&amp;gt; '1'. "skip the rejected records&lt;/P&gt;&lt;P&gt;      last_matnr = tab-matnr.&lt;/P&gt;&lt;P&gt;      last_direction = tab-direction.&lt;/P&gt;&lt;P&gt;      last_werks = tab-werks.&lt;/P&gt;&lt;P&gt;      exit.&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 tab where msgnr &amp;lt;&amp;gt; '1'. "skip the rejected records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if ( tab-werks &amp;lt;&amp;gt; last_werks )&lt;/P&gt;&lt;P&gt;      or ( tab-matnr &amp;lt;&amp;gt; last_matnr )&lt;/P&gt;&lt;P&gt;      or ( tab-direction &amp;lt;&amp;gt; last_direction )&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check if the no. of material i.e.items reach the limit "DE1K901698&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      or ( l_matnr_counter &amp;gt;= c_max_mat_doc_items ).     "DE1K901698&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     if sy-tabix &amp;lt;&amp;gt; '1'.          "not needed!         "DE1K901698&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;sleep for 5 seconds before different plant and Issues/Reversal tx&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if ( tab-werks &amp;lt;&amp;gt; last_werks )&lt;/P&gt;&lt;P&gt;          or ( tab-direction &amp;lt;&amp;gt; last_direction )&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        or ( tab-matnr = last_matnr ).                 "DE1K901698&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          or ( tab_by_matnr-matnr = current_lock_matnr ).   "DE1K901698&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         write: / tab-matnr, last_matnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;write: / tab-recno.&lt;/P&gt;&lt;P&gt;           perform sleep_5_seconds.&lt;/P&gt;&lt;P&gt;&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;      describe table tab_by_matnr lines sy-tfill.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      write: / tab_by_matnr-werks, tab_by_matnr-matnr, sy-tfill.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform post_goods_issue.&lt;/P&gt;&lt;P&gt;        current_lock_matnr = tab_by_matnr-matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      clear l_matnr_counter.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      last_werks = tab-werks.&lt;/P&gt;&lt;P&gt;      last_matnr = tab-matnr.&lt;/P&gt;&lt;P&gt;      last_direction = tab-direction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      refresh tab_by_matnr.&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;    clear tab_by_matnr.     "DE1K901698 record for the same material&lt;/P&gt;&lt;P&gt;    tab_by_matnr = tab.     "DE1K901698 put into a temp table&lt;/P&gt;&lt;P&gt;    append tab_by_matnr.    "DE1K901698 will be posted to 1 mat doc&lt;/P&gt;&lt;P&gt;    l_matnr_counter = l_matnr_counter + 1. "DE1K901698 count the mat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  clear tab_by_matnr.    "DE1K901698 moved to the start of the loop&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  tab_by_matnr = tab.    "DE1K901698 moved to the start of the loop&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  append tab_by_matnr.   "DE1K901698 moved to the start of the loop&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check if the temp item table still contains record&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  describe table tab_by_matnr lines sy-tfill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;sleep for 5 seconds before different plant and Issues/Reversal tx&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if sy-tfill &amp;gt; 0. "still need to post the last batch&lt;/P&gt;&lt;P&gt;write: / 'last'.&lt;/P&gt;&lt;P&gt;      perform sleep_5_seconds.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Post goods issues for the last batch of records (after ENDLOOP)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      perform post_goods_issue.&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;  endif. "new posting step 1 done&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;perform UPDATE_GI_FOR_COST_CTR.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;clear FI_DOC_TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;loop at TAB where msgnr &amp;lt;&amp;gt; '1'. "skip the rejected records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;msgnr = 2 ==&amp;gt; ready for step 2. (Mat doc. already posted)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at TAB where msgnr = '2'. "skip the rejected records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if tab-matnr = last_matnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     write: / 'Sleep 1 sec', tab-matnr, tab-post_seq_rand.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CALL FUNCTION 'RZL_SLEEP'&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;         SECONDS              = 1&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;         ARGUMENT_ERROR       = 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;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&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;UL&gt;&lt;LI level="2" 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="2" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&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;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     last_matnr = tab-matnr.&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*****&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   perform UPDATE_GI_FOR_COST_CTR.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   clear FI_DOC_TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;post JV for different usage indicator&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if  ( tab-usafl = 'E'             "external procurement&lt;/P&gt;&lt;P&gt;          and tab-hdr_SUBPR = space ) "not sub-contract    "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      or tab-usafl = 'C'.       "consignment               "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if tab-msgnr = '2'.     "ready for step 2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        "mat. loading amount = 0, no need to create doc&lt;/P&gt;&lt;P&gt;        if tab-matloading = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CONCATENATE tab-msgtx ', JV (Mat.Load.) Not needed (0)'&lt;/P&gt;&lt;P&gt;           INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;          MODIFY TAB TRANSPORTING MSGNR MSGTX.&lt;/P&gt;&lt;P&gt;          result_ok = result_ok + 1.&lt;/P&gt;&lt;P&gt;                                   "Increase record counter (Successful)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;            using tab-werks&lt;/P&gt;&lt;P&gt;             tab-aufnr&lt;/P&gt;&lt;P&gt;             tab-matnr&lt;/P&gt;&lt;P&gt;             tab-erdat&lt;/P&gt;&lt;P&gt;             tab-recno&lt;/P&gt;&lt;P&gt;             tab-msgnr&lt;/P&gt;&lt;P&gt;             space          "parameter not needed for mat doc&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           msgtab-msgv1.  "FI DOC for material loading&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;             'N/A'.         "FI DOC N/A&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        else. "post a JV for material loading&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          perform UPDATE_MATERIAL_LOADING_JV.&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;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if ( tab-usafl = 'T' )    "transfer to subcon&lt;/P&gt;&lt;P&gt;      or ( tab-usafl = 'S' ). "sales to subcon&lt;/P&gt;&lt;P&gt;      if tab-msgnr = '2'.     "ready for step 2&lt;/P&gt;&lt;P&gt;        perform update_sub_contractor.&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;*no JV posting is needed for inhouse production&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if tab-usafl = 'I'.       "inhouse production&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     if tab-msgnr = '0'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       perform update_???&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;   endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*no JV posting is needed for expenses&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if tab-usafl = 'X'.       "expenses&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     if tab-msgnr = '0'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       perform update_???&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;   endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*no JV posting is needed for consign to sub-contractor&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  if ( tab-usafl = 'C' ).    "consign to subcon&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    if tab-msgnr = '0'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      perform update_???.&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;  endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FORM UPDATE_SUB_CONTRACTOR                                         *&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 update_sub_contractor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform sub_con_fb70_prepare.&lt;/P&gt;&lt;P&gt;  perform sub_con_fb70_fillscreen.&lt;/P&gt;&lt;P&gt;  perform sub_con_fb70_calltx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM SUB_CON_FB70_PREPARE                                          *&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 sub_con_fb70_prepare.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear ar_amt_vendor.     "material amount (std price * qty)&lt;/P&gt;&lt;P&gt;  clear ar_amt_penalty.    "penalty amount&lt;/P&gt;&lt;P&gt;  clear ar_amt_total.      "total amount (with tax)&lt;/P&gt;&lt;P&gt;  clear ar_amt_tax.        "tax amount&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ar_amt_vendor&lt;/P&gt;&lt;P&gt;    = tab-menge         "qty&lt;/P&gt;&lt;P&gt;    &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;tab-unitstdcost.  "std cost (of 1 EA)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tab-usafl = 'T'.   "Transfer to sub-contractor&lt;/P&gt;&lt;P&gt;    ar_amt_penalty      "Add the amount for penalty&lt;/P&gt;&lt;P&gt;      = ar_amt_vendor&lt;/P&gt;&lt;P&gt;      &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CONST_PENALTY_RATE.&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;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ar_amt_tax = ( ar_amt_vendor + ar_amt_penalty ) * CONST_TAX_RATE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ar_amt_tax = tab-cotax.&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;1104&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ar_amt_total          "Total amonut (with tax)&lt;/P&gt;&lt;P&gt;    =   ar_amt_vendor&lt;/P&gt;&lt;P&gt;      + ar_amt_penalty&lt;/P&gt;&lt;P&gt;      + ar_amt_tax.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  * ( '1.0' + CONST_TAX_RATE ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ar_amt_total_as_text   = abs( ar_amt_total ).&lt;/P&gt;&lt;P&gt;  ar_amt_vendor_as_text  = abs( ar_amt_vendor ).&lt;/P&gt;&lt;P&gt;  ar_amt_penalty_as_text = abs( ar_amt_penalty ).&lt;/P&gt;&lt;P&gt;  ar_amt_tax_as_text     = abs( ar_amt_tax ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM SUB_CON_FB70_FILLSCREEN                                       *&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 sub_con_fb70_fillscreen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; DATA: FI_DOC_TEXT(50).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; clear FI_DOC_TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;  concatenate TAB-MATDOC '-' TAB-MATDOCITEM into MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;  condense MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;  FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;P&gt;  write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  refresh bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_OKCODE' '=DUMM'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'BDC_OKCODE' '=MORE'. "goto Details tab&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF TAB-MENGE &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD       USING 'RF05A-BUSCS' 'R'.  "Invoice&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD       USING 'RF05A-BUSCS' 'G'.  "Credit memo&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;PERFORM BDC_FIELD  USING 'BDC_CURSOR' 'ACGL_ITEM-HKONT(01)'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-ACCNT' TAB-KUNNR.     "customer number&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-BLDAT' TAB-ERDAT_RAW. "invoice date&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-BUDAT' TAB-ERDAT_RAW. "posting date&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-XBLNR' MATDOC_AND_ITEM. "Material Doc.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-SGTXT' FI_DOC_TEXT.   "tab-idnum.&lt;/P&gt;&lt;P&gt;                                                        "BACKS ID No.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-WAERS' 'JPY'.         "Currency&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-WRBTR' ar_amt_total_as_text.  "Amount&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD USING 'INVFO-MWSKZ' TAB-MWSKZ.          "tax code&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD USING 'INVFO-WMWST' ar_amt_tax_as_text. "Tax amount&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PERFORM BDC_FIELD USING 'INVFO-XMWST' 'X'.              "auto cal. tax&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CLEAR AUFNR.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CONCATENATE TAB-AUFNR '-' TAB-RUNUM INTO AUFNR.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PERFORM BDC_FIELD       USING 'INVFO-SGTXT' AUFNR. "PO no.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'BDC_OKCODE' '/00'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-BKTXT' tab-aufnr. "Productioin order&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'INVFO-ZUONR' TAB-MATNR. "material no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-HKONT(01)'&lt;/P&gt;&lt;P&gt;                                   CONST_SAKNR_WIP_MAT_SUB_CON.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-WRBTR(01)' ar_amt_vendor_as_text.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-KOSTL(01)' TAB-PRCTR.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-SGTXT(01)' FI_DOC_TEXT."TAB-IDNUM.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-ZUONR(01)' TAB-MATNR.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD  USING 'ACGL_ITEM-MWSKZ(01)' TAB-MWSKZ. "Tax code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tab-usafl = 'T'. "Transfer: add the penalty!&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-HKONT(02)' "other income&lt;/P&gt;&lt;P&gt;                                   CONST_SAKNR_OTHER_INCOME.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-WRBTR(02)'&lt;/P&gt;&lt;P&gt;                                   ar_amt_penalty_as_text.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-KOSTL(02)' TAB-PRCTR.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-SGTXT(02)' FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;                                                  "TAB-IDNUM.&lt;/P&gt;&lt;P&gt;    PERFORM BDC_FIELD  USING 'ACGL_ITEM-ZUONR(02)' TAB-MATNR.&lt;/P&gt;&lt;P&gt;&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; PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_OKCODE' '=TEXT'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO USING 'SAPLFTXT' '0100'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_CURSOR' 'RTEXT-SPRAS(01)'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_OKCODE' '=TEDE'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'RTEXT-SPRAS(01)' 'JA'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO USING 'SAPLSTXX' '1100'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD  USING 'BDC_CURSOR' 'RSTXT-TXLINE(02)'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=EDNL'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CLEAR TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CONCATENATE '          QUANTITY : ' TAB-MENGE INTO TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'RSTXT-TXLINE(02)' TEXT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO      USING 'SAPLSTXX' '1100'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=TXBA'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO      USING 'SAPLFTXT' '0100'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=BACK'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO      USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=MORE'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_DYNPRO      USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'BDC_OKCODE' '/00'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM BDC_FIELD       USING 'INVFO-BKTXT' TAB-VBELN.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM BDC_DYNPRO      USING 'SAPMF05A' '1200'.&lt;/P&gt;&lt;P&gt;  PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=BU'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM SUB_CON_FB70_CALLTX                                           *&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 sub_con_fb70_calltx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  refresh msgtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if ar_amt_total = 0. "Amount = 0, no need to post AR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;    CONCATENATE  TAB-MSGTX&lt;/P&gt;&lt;P&gt;      ', AR invoice not needed (Amount=0)'&lt;/P&gt;&lt;P&gt;      INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;    result_ok = result_ok + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else. "Amount &amp;lt;&amp;gt; 0, post AR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    call transaction 'FB70'&lt;/P&gt;&lt;P&gt;      using    bdcdata&lt;/P&gt;&lt;P&gt;      update   'S'&lt;/P&gt;&lt;P&gt;      mode     fb70mode&lt;/P&gt;&lt;P&gt;      messages into msgtab.&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;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TAB-MSGNR = '3'. "no need to change, this is remain in 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      read table msgtab with key MSGTYP = 'E'.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        select single t100~text&lt;/P&gt;&lt;P&gt;          into t100-text&lt;/P&gt;&lt;P&gt;          from t100&lt;/P&gt;&lt;P&gt;            where t100~sprsl = sy-langu&lt;/P&gt;&lt;P&gt;              and arbgb = msgtab-msgid&lt;/P&gt;&lt;P&gt;              and msgnr = msgtab-msgnr.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          CONCATENATE TAB-MSGTX ', AR invoice error:' t100-text&lt;/P&gt;&lt;P&gt;            INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          CONCATENATE TAB-MSGTX&lt;/P&gt;&lt;P&gt;            ', AR invoice error:' '(error message not found)'&lt;/P&gt;&lt;P&gt;            INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;        endif.&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;    result_err = result_err + 1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      read table msgtab with key msgid = 'F5' msgnr = '312'.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;        CONCATENATE  TAB-MSGTX&lt;/P&gt;&lt;P&gt;          ', AR invoice posted:' msgtab-msgv1&lt;/P&gt;&lt;P&gt;          INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;        result_ok = result_ok + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;          using tab-werks&lt;/P&gt;&lt;P&gt;            tab-aufnr&lt;/P&gt;&lt;P&gt;            tab-matnr&lt;/P&gt;&lt;P&gt;            tab-erdat&lt;/P&gt;&lt;P&gt;            tab-recno&lt;/P&gt;&lt;P&gt;            tab-msgnr&lt;/P&gt;&lt;P&gt;            space          "parameter not needed for mat doc&lt;/P&gt;&lt;P&gt;            MSGTAB-MSGV1.  "Customer invoice&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;        CONCATENATE TAB-MSGTX&lt;/P&gt;&lt;P&gt;          'AR invoice problem:' '(Cannot display invoice no.)'&lt;/P&gt;&lt;P&gt;          INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      result_err = result_err + 1.&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;&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MODIFY TAB TRANSPORTING MSGNR MSGTX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM UPDATE_GI_FOR_COST_CTR                                        *&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 UPDATE_GI_FOR_COST_CTR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   REFRESH: GOODSMVT_HEADER, GOODSMVT_CODE, GOODSMVT_ITEM, REMSG.&lt;/P&gt;&lt;P&gt;   CLEAR: GOODSMVT_HEADER, GOODSMVT_CODE, GOODSMVT_ITEM, REMSG.&lt;/P&gt;&lt;P&gt;   CLEAR: ERR, TAB-MATDOC, DOCYEAR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM MAINTAIN_GOODSMVT_HEADER.&lt;/P&gt;&lt;P&gt;   PERFORM MAINTAIN_GOODSMVT_CODE.&lt;/P&gt;&lt;P&gt;   PERFORM MAINTAIN_GOODSMVT_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   CALL FUNCTION 'BAPI_GOODSMVT_CREATE'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                GOODSMVT_HEADER             = GOODSMVT_HEADER&lt;/P&gt;&lt;P&gt;                GOODSMVT_CODE               = GOODSMVT_CODE&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              TESTRUN                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           IMPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              GOODSMVT_HEADRET            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                MATERIALDOCUMENT            = TAB-MATDOC&lt;/P&gt;&lt;P&gt;                MATDOCUMENTYEAR             = DOCYEAR&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                GOODSMVT_ITEM               = GOODSMVT_ITEM&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              GOODSMVT_SERIALNUMBER       =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                RETURN                      = REMSG&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;UL&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;              WAIT          =&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;              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;&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;&amp;gt;&lt;/P&gt;&lt;P&gt;commit work.&lt;/P&gt;&lt;P&gt;*&amp;gt;&amp;gt;&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF REMSG-TYPE = 'E'.&lt;/P&gt;&lt;P&gt;         ERR = 'X'.&lt;/P&gt;&lt;P&gt;         CONCATENATE REMSG-NUMBER REMSG-MESSAGE INTO&lt;/P&gt;&lt;P&gt;                     ERRTX-MSGTX SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      LOOP AT REMSG.&lt;/P&gt;&lt;P&gt;         IF REMSG-TYPE = 'E'.&lt;/P&gt;&lt;P&gt;            ERR = 'X'.&lt;/P&gt;&lt;P&gt;            CONCATENATE REMSG-NUMBER REMSG-MESSAGE&lt;/P&gt;&lt;P&gt;                   INTO ERRTX-MSGTX SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;            APPEND ERRTX.&lt;/P&gt;&lt;P&gt;         ENDIF.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&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;&lt;/P&gt;&lt;P&gt;   IF ERR EQ 'X'.&lt;/P&gt;&lt;P&gt;      TAB-MSGNR = '1'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TAB-MSGTX = 'Update failed for Goods Issue'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      concatenate 'Update failed for Goods Issue:'&lt;/P&gt;&lt;P&gt;                  errtx-msgtx(68) into tab-msgtx&lt;/P&gt;&lt;P&gt;                  separated by space.&lt;/P&gt;&lt;P&gt;      loop at tab_by_matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        TAB-STOCKQTY = TAB_BY_MATNR-STOCKQTY.     "DEVK914235&lt;/P&gt;&lt;P&gt;        TAB-ISSUESTPRS = TAB_BY_MATNR-ISSUESTPRS. "DEVK914235&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MODIFY TAB TRANSPORTING MSGNR MSGTX MATDOC&lt;/P&gt;&lt;P&gt;            STOCKQTY    "DEVK914235&lt;/P&gt;&lt;P&gt;            ISSUESTPRS  "DEVK914235&lt;/P&gt;&lt;P&gt;          WHERE  "  MSGNR EQ ' '&lt;/P&gt;&lt;P&gt;                WERKS = TAB_BY_MATNR-werks&lt;/P&gt;&lt;P&gt;            and matnr = tab_by_matnr-matnr&lt;/P&gt;&lt;P&gt;            and recno = tab_by_matnr-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;          using tab_by_matnr-werks&lt;/P&gt;&lt;P&gt;                tab_by_matnr-aufnr&lt;/P&gt;&lt;P&gt;                tab_by_matnr-matnr&lt;/P&gt;&lt;P&gt;                tab_by_matnr-erdat&lt;/P&gt;&lt;P&gt;                tab_by_matnr-recno&lt;/P&gt;&lt;P&gt;                TAB-MSGNR    "must be '1' failed&lt;/P&gt;&lt;P&gt;                space  "no mat doc since posting failed&lt;/P&gt;&lt;P&gt;                space. "parameter not needed for FI doc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    result_err = result_err + 1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   ELSEIF ERR EQ ' '.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TAB-MSGNR = '0'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CONCATENATE 'Mat. doc.:' TAB-MATDOC&lt;/P&gt;&lt;P&gt;             INTO TAB-MSGTX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      loop at tab_by_matnr.&lt;/P&gt;&lt;P&gt;        TAB-MATDOCITEM = SY-TABIX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        if  tab-usafl = 'I'   "Inhouse production&lt;/P&gt;&lt;P&gt;          or tab-usafl = 'X'  "Expenses&lt;/P&gt;&lt;P&gt;*{Gary Tang 02/10/2003                      "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Usage ind. 'C' should be 2 tx in fact, mat loading is REQUIRED&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        or tab-usafl = 'C'.  "Consignment "UATK922842&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Usage ind. 'E' and ZPRDORDHDR-SUBPR = 'X', mat loading NOT required&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          or ( tab-usafl = 'E' and tab_by_matnr-hdr_SUBPR = 'X' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*}Gary Tang 02/10/2003                      "UATK922842&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Only 1 tx (MvT 201/202) is needed for the above usage ind.&lt;/P&gt;&lt;P&gt;*Therefore, update the no. of OK record now&lt;/P&gt;&lt;P&gt;          result_ok = result_ok + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          TAB-MSGNR = '0'. "all work is done!&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          TAB-MSGNR = '2'. "first step (mvt 201/202) is done, but&lt;/P&gt;&lt;P&gt;                        "next step (mat loading JV or cust AR is needed&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;        TAB-STOCKQTY = TAB_BY_MATNR-STOCKQTY.     "DEVK914235&lt;/P&gt;&lt;P&gt;        TAB-ISSUESTPRS = TAB_BY_MATNR-ISSUESTPRS. "DEVK914235&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MODIFY TAB TRANSPORTING MSGNR MSGTX MATDOC MATDOCITEM&lt;/P&gt;&lt;P&gt;            STOCKQTY                              "DEVK914235&lt;/P&gt;&lt;P&gt;            ISSUESTPRS                            "DEVK914235&lt;/P&gt;&lt;P&gt;          WHERE  "  MSGNR EQ ' '&lt;/P&gt;&lt;P&gt;                WERKS = TAB_BY_MATNR-werks&lt;/P&gt;&lt;P&gt;            and matnr = tab_by_matnr-matnr&lt;/P&gt;&lt;P&gt;            and recno = tab_by_matnr-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;          using tab_by_matnr-werks&lt;/P&gt;&lt;P&gt;                tab_by_matnr-aufnr&lt;/P&gt;&lt;P&gt;                tab_by_matnr-matnr&lt;/P&gt;&lt;P&gt;                tab_by_matnr-erdat&lt;/P&gt;&lt;P&gt;                tab_by_matnr-recno&lt;/P&gt;&lt;P&gt;                TAB-MSGNR    "0 (all done) or 2 (first step done)&lt;/P&gt;&lt;P&gt;                tab-matdoc&lt;/P&gt;&lt;P&gt;                space. "parameter not needed for FI doc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;**&amp;gt;&amp;gt;      MODIFY TAB TRANSPORTING MSGNR MSGTX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WHERE MSGNR EQ ' '.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&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;endform.&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;  UPDATE &lt;U&gt;MATERIAL&lt;/U&gt;LOADING_JV                                        *&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 UPDATE_MATERIAL_LOADING_JV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform prepare_jv_DOCUMENTHEADER.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform prepare_jv_ACCOUNTGL.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform prepare_jv_currencyamount.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform perpare_jv_return.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform call_bapi_jv.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform FB50_FILL_SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL TRANSACTION 'FB50'&lt;/P&gt;&lt;P&gt;       USING BDCDATA&lt;/P&gt;&lt;P&gt;       MODE fb50mode&lt;/P&gt;&lt;P&gt;       MESSAGES INTO Msgtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  read table msgtab with key&lt;/P&gt;&lt;P&gt;    MSGTYP = 'S'&lt;/P&gt;&lt;P&gt;    MSGID  = 'F5'&lt;/P&gt;&lt;P&gt;    MSGNR  = '312'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TAB-MSGNR = '0'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE tab-msgtx ', JV (Mat.Load.) Posted:' msgtab-msgv1&lt;/P&gt;&lt;P&gt;      INTO TAB-MSGTX separated by space.&lt;/P&gt;&lt;P&gt;     MODIFY TAB TRANSPORTING MSGNR MSGTX.&lt;/P&gt;&lt;P&gt;     result_ok = result_ok + 1. "Increase record counter (Successful)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     perform update_zbacks_gipd&lt;/P&gt;&lt;P&gt;       using tab-werks&lt;/P&gt;&lt;P&gt;             tab-aufnr&lt;/P&gt;&lt;P&gt;             tab-matnr&lt;/P&gt;&lt;P&gt;             tab-erdat&lt;/P&gt;&lt;P&gt;             tab-recno&lt;/P&gt;&lt;P&gt;             tab-msgnr&lt;/P&gt;&lt;P&gt;             space          "parameter not needed for mat doc&lt;/P&gt;&lt;P&gt;             msgtab-msgv1.  "FI DOC for material loading&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; TAB-MSGNR = '3'. "no need to change, it is remain in 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    concatenate tab-msgtx 'JV (Mat.Load.) failed:'&lt;/P&gt;&lt;P&gt;      into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at msgtab where MSGTYP = 'E'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      concatenate tab-msgtx msgtab-msgid msgtab-msgnr&lt;/P&gt;&lt;P&gt;        into tab-msgtx separated by space.&lt;/P&gt;&lt;P&gt;      MODIFY TAB TRANSPORTING MSGNR MSGTX.&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;&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&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;  FORM FB50_FILL_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 FB50_FILL_SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: MATLOADINg_AS_STRING(12).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: BDCDATA, MSGTAB.&lt;/P&gt;&lt;P&gt;  REFRESH: BDCDATA, MSGTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;  concatenate TAB-MATDOC '-' TAB-MATDOCITEM into MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;  condense MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  matloading_as_string = abs( tab-matloading ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;  FI_DOC_TEXT+0(35) = tab-idnum.&lt;/P&gt;&lt;P&gt;  write: tab-menge to FI_DOC_TEXT+35(15) right-justified.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM BDC_DYNPRO    USING 'SAPMF05A'             '1001'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'BDC_OKCODE'           '/00'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-BLDAT'      tab-erdat_raw.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-BUDAT'      tab-erdat_raw.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-WAERS'      'JPY'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-BKTXT'      tab-aufnr.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_HEAD-XBLNR'      MATDOC_AND_ITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM BDC_DYNPRO    USING 'SAPMF05A'             '1001'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'BDC_OKCODE'           '=BU'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;1st item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-HKONT(01)'&lt;/P&gt;&lt;P&gt;                                          CONST_SAKNR_WIP_LABOUR_OH.&lt;/P&gt;&lt;P&gt;   If tab-matloading &amp;gt; 0.&lt;/P&gt;&lt;P&gt;     PERFORM BDC_FIELD     USING 'ACGL_ITEM-SHKZG(01)'  'S'.&lt;/P&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;P&gt;     PERFORM BDC_FIELD     USING 'ACGL_ITEM-SHKZG(01)'  'H'.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-WRBTR(01)'&lt;/P&gt;&lt;P&gt;                                          matloading_as_string.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-KOSTL(01)'  TAB-prctr.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-MARKSP(01)' 'X'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-SGTXT(01)'  FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-ZUONR(01)'  TAB-MATNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2nd item&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-HKONT(02)' "Mat. loading&lt;/P&gt;&lt;P&gt;                                          CONST_SAKNR_WIP_MAT_LOAD.&lt;/P&gt;&lt;P&gt;   If tab-matloading &amp;gt; 0.&lt;/P&gt;&lt;P&gt;     PERFORM BDC_FIELD     USING 'ACGL_ITEM-SHKZG(02)'  'H'.&lt;/P&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;P&gt;     PERFORM BDC_FIELD     USING 'ACGL_ITEM-SHKZG(02)'  'S'.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-WRBTR(02)'&lt;/P&gt;&lt;P&gt;                                          matloading_as_string.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-KOSTL(02)'  TAB-prctr.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-MARKSP(02)' 'X'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-SGTXT(02)'  FI_DOC_TEXT.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'ACGL_ITEM-ZUONR(02)'  TAB-MATNR.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_DYNPRO    USING 'SAPMF05A'             '1001'.&lt;/P&gt;&lt;P&gt;   PERFORM BDC_FIELD     USING 'BDC_OKCODE'           '=BU'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Sep 2007 12:03:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/interface-validation/m-p/2751435#M639965</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-03T12:03:21Z</dc:date>
    </item>
    <item>
      <title>Re: Interface validation</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/interface-validation/m-p/2751436#M639966</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes I had solved this&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Sep 2007 10:31:03 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/interface-validation/m-p/2751436#M639966</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-28T10:31:03Z</dc:date>
    </item>
  </channel>
</rss>

