<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: program in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250134#M144710</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi pavan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think , you have pass filename to t_object_header .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;here is the sample code for Email.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: SLIS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                          INTERNAL TABLES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Customer data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF TB_BSID OCCURS 0,&lt;/P&gt;&lt;P&gt;        BUKRS   LIKE BSID-BUKRS,    " Company code&lt;/P&gt;&lt;P&gt;        KUNNR   LIKE BSID-KUNNR,    " Customer number&lt;/P&gt;&lt;P&gt;        AUGDT   LIKE BSID-AUGDT,    " Clearing Date&lt;/P&gt;&lt;P&gt;        BLDAT   LIKE BSID-BLDAT,    " Doc date in document&lt;/P&gt;&lt;P&gt;        SHKZG   LIKE BSID-SHKZG,    " Debit/credit indicator&lt;/P&gt;&lt;P&gt;        DMBTR   LIKE BSID-DMBTR,    " Amount in local currency&lt;/P&gt;&lt;P&gt;        ZFBDT   LIKE BSID-ZFBDT,    " Baseline date for due date calc&lt;/P&gt;&lt;P&gt;        ZBD1T   LIKE BSID-ZBD1T,    " Cash discount days 1&lt;/P&gt;&lt;P&gt;        ZBD2T   LIKE BSID-ZBD2T,    " Cash discount days 2&lt;/P&gt;&lt;P&gt;        ZBD3T   LIKE BSID-ZBD3T,    " Net Payment Terms Period&lt;/P&gt;&lt;P&gt;        REBZG   LIKE BSID-REBZG,    " No Of the Inv the Tran Belongs to&lt;/P&gt;&lt;P&gt;        REBZT   LIKE BSID-REBZT,    " Follow-On Document Type&lt;/P&gt;&lt;P&gt;      END OF TB_BSID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Open Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: TB_BSID_OPEN LIKE TABLE OF TB_BSID WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Cleared Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: TB_BSAD_CLEAR LIKE TABLE OF TB_BSID WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold General Data in Customer Master&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF TB_KNA1 OCCURS 0,&lt;/P&gt;&lt;P&gt;        KUNNR LIKE KNA1-KUNNR,      " Customer Number&lt;/P&gt;&lt;P&gt;        ADRNR LIKE KNA1-ADRNR,      " Address&lt;/P&gt;&lt;P&gt;      END OF TB_KNA1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Customer Master (Company Code)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF TB_KNB1 OCCURS 0,&lt;/P&gt;&lt;P&gt;        KUNNR LIKE KNB1-KUNNR,     " Customer Number&lt;/P&gt;&lt;P&gt;        BUKRS LIKE KNB1-BUKRS,     " Company code&lt;/P&gt;&lt;P&gt;        ERDAT LIKE KNB1-ERDAT,     " Rec Created Date&lt;/P&gt;&lt;P&gt;        ZAMIB LIKE KNB1-ZAMIB,     " DMS Managed Indicator&lt;/P&gt;&lt;P&gt;      END OF TB_KNB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Final Output Data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF TB_FINAL OCCURS 0,&lt;/P&gt;&lt;P&gt;        KUNNR           LIKE KNA1-KUNNR, " Customer Number&lt;/P&gt;&lt;P&gt;        NAME1           LIKE KNA1-NAME1, " Name Line 1&lt;/P&gt;&lt;P&gt;        ADDRESS1(25)    TYPE C,          " Address line 1&lt;/P&gt;&lt;P&gt;        ADDRESS2(25)    TYPE C,          " Address line 2&lt;/P&gt;&lt;P&gt;        ADDRESS3(25)    TYPE C,          " Address line 3&lt;/P&gt;&lt;P&gt;        ADDRESS4(25)    TYPE C,          " Address line 4&lt;/P&gt;&lt;P&gt;        PHONE           LIKE KNA1-TELF1, " Telephone Number&lt;/P&gt;&lt;P&gt;        DAYS_SLOW(6)    TYPE C,          " Days Slow&lt;/P&gt;&lt;P&gt;        LAST_DATE       LIKE BSID-BLDAT, " Date of Last Invoice&lt;/P&gt;&lt;P&gt;        AVG(6)          TYPE C,          " Average Days to Pay&lt;/P&gt;&lt;P&gt;        CURRENT         LIKE RF035-SNFAE," Current&lt;/P&gt;&lt;P&gt;        AVG_1_30        LIKE RF035-SFAE1," 1-30 past due&lt;/P&gt;&lt;P&gt;        AVG_31_60       LIKE RF035-SFAE2," 31-60 past due&lt;/P&gt;&lt;P&gt;        AVG_61_90       LIKE RF035-SFAE3," 61-90 past due&lt;/P&gt;&lt;P&gt;        AVG_90G         LIKE RF035-SFAE4," 90+ past due&lt;/P&gt;&lt;P&gt;      END OF TB_FINAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ALV Internal tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA : TB_FIELDCAT       TYPE SLIS_T_FIELDCAT_ALV.  " Field Catalog&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal tables for the sending mail data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: TB_OBJPACK  TYPE SOPCKLSTI1 OCCURS 2  WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_OBJHEAD  TYPE SOLISTI1   OCCURS 1  WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_OBJTXT   TYPE SOLISTI1   OCCURS 10 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_RECLIST  TYPE SOMLRECI1  OCCURS 5  WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_OBJBIN   LIKE SOLISTI1   OCCURS 0  WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_DOC_CHNG TYPE SODOCCHGI1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to get mail Receivers Address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: TB_ZRECEIVE LIKE YSMTP_ADDRESS OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           STRUCTURES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: X_SADR            TYPE SADR,                 " For Address&lt;/P&gt;&lt;P&gt;      X_FIELDCAT        TYPE SLIS_FIELDCAT_ALV,    " For Field Catalog&lt;/P&gt;&lt;P&gt;      X_LAYOUT          TYPE SLIS_LAYOUT_ALV,      " For Layout&lt;/P&gt;&lt;P&gt;      X_ADDR1_SEL       LIKE ADDR1_SEL,            " For Address&lt;/P&gt;&lt;P&gt;      WA_FAEDE          TYPE FAEDE.                " For FAEDE struct&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;                           VARIABLES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: G_REPID         LIKE SY-REPID,             " Prog ID&lt;/P&gt;&lt;P&gt;      G_DAYS_SLOW(4)  TYPE N,                    " Days Slow&lt;/P&gt;&lt;P&gt;      G_OPEN          TYPE I,                    " Counter&lt;/P&gt;&lt;P&gt;      G_AVG(4)        TYPE N,                    " Avg Days&lt;/P&gt;&lt;P&gt;      G_COUNT(10)     TYPE N,                    " Counter&lt;/P&gt;&lt;P&gt;      G_TEXT          TYPE SOLISTI1-LINE,        " Description&lt;/P&gt;&lt;P&gt;      G_TAB_LINES     TYPE SY-TABIX,             " Internal data count&lt;/P&gt;&lt;P&gt;      G_REC_COUNT(10) TYPE N,                    " Total records&lt;/P&gt;&lt;P&gt;      G_CURR_BAL(10)  TYPE N,                    " Account balance&lt;/P&gt;&lt;P&gt;      G_FILE_NAME     LIKE EDI_PATH-PTHNAM,      " Output File Name&lt;/P&gt;&lt;P&gt;      G_BUKRS         LIKE BSID-BUKRS,           " Company Code&lt;/P&gt;&lt;P&gt;      G_BLDAT         LIKE BSID-BLDAT,           " Doc Date&lt;/P&gt;&lt;P&gt;      G_FLAG          TYPE C,                    " Flag to Exit&lt;/P&gt;&lt;P&gt;      G_KUNNR         LIKE BSID-KUNNR,           " Cust No&lt;/P&gt;&lt;P&gt;      G_ZUONR         LIKE BSID-ZUONR.           " Assignment&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;                           CONSTANTS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS: C_D            TYPE C VALUE 'D',     " Account type&lt;/P&gt;&lt;P&gt;           C_X(1)                VALUE 'X',     " Default value 'X'&lt;/P&gt;&lt;P&gt;           C_1(2)         TYPE C VALUE '01',    " Posting key const&lt;/P&gt;&lt;P&gt;           C_DELIMETER TYPE X  VALUE '09', " ASCII CODE LINE begin&lt;/P&gt;&lt;P&gt;           C_INTERFACE    TYPE YWFSALOFFICNOTIF-INTERFACE_ID VALUE 'AP',&lt;/P&gt;&lt;P&gt;           C_Z001 TYPE RF035-RASID VALUE 'Z001'." Net 30/60/90/120/150&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           SELECTION SCREEN.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection Screen for Selection Criteria.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-T01.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS:  S_BUKRS FOR  G_BUKRS  OBLIGATORY,    " Company Code&lt;/P&gt;&lt;P&gt;                 S_BLDAT FOR  G_BLDAT  OBLIGATORY,    " Doc Date&lt;/P&gt;&lt;P&gt;                 S_KUNNR FOR  G_KUNNR,                " Cust No&lt;/P&gt;&lt;P&gt;                 S_ZUONR FOR  G_ZUONR.                " Assignment&lt;/P&gt;&lt;P&gt;PARAMETERS:      P_GRACE(2)   TYPE N OBLIGATORY,      " Grace Days&lt;/P&gt;&lt;P&gt;                 P_ZAMIB LIKE KNB1-ZAMIB AS CHECKBOX. " DMS Indicator&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection Screen for Output Options.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-T02.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN POSITION 01.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_REPORT RADIOBUTTON GROUP R1.             " Report Only&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 5(25) TEXT-016.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN POSITION 01.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_DOWN RADIOBUTTON GROUP R1.               " Dwnld to Unix&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 5(25) TEXT-017.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN POSITION 30.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_FILE LIKE FILENAME-FILEINTERN DEFAULT&lt;/P&gt;&lt;P&gt;                   'Z21614_DB_CREDIT_AGENCY'. " File Name&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection Screen for E-mail.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-T03.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN POSITION 01.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_EMAIL AS CHECKBOX.                        " E-mail&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 5(25) TEXT-018.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           INITIALIZATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;  G_REPID = SY-REPID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               AT SELECTION SCREEN.                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Validation of selection screen entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform validate_data.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If both display report and send email is checked&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF P_REPORT = C_X AND P_EMAIL  = C_X.&lt;/P&gt;&lt;P&gt;    MESSAGE E999 WITH&lt;/P&gt;&lt;P&gt;      'Select One Among Report Only &amp;amp; Send E-mail'(023).&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Preparing file for download to Unix&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM GET_FILE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If File Error, then err out and exit the program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if g_flag = 'X'.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select Data from Customer Master (Company Code)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM SELECT_KNB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select Custmer Open Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM SELECT_CUSTOMER_OPEN_ITEMS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select Custmer Cleared Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM SELECT_CUSTOMER_CLEARED_ITEMS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select General Data in Customer Master&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM SELECT_KNA1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Populate Final Output Data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM POPULATE_TB_FINAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                   End of selection                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If there are no records in TB_FINAL internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF TB_FINAL[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH&lt;/P&gt;&lt;P&gt;      'No Records Found For Selection Criteria'(024).&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;When Radiobutton for Email or if the program is run background&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF ( P_EMAIL = C_X OR SY-BATCH = C_X ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To send the mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      PERFORM SEND_MAIL USING C_INTERFACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF P_REPORT = C_X .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To display the Final Output data using ALV's&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      PERFORM DISPLAY_ALV_REPORT.&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;Transfering data to file when downloading to Unix&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF P_DOWN = C_X.&lt;/P&gt;&lt;P&gt;      IF NOT G_FILE_NAME IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Trasefering data to file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        PERFORM TRANSFER_DATA_FILE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Interface Audit report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        PERFORM WRITE_REPORT.&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;&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;                          F O R M S&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  VALIDATE_DATA&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Validating selection-screen entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM VALIDATE_DATA.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Validate the Company code.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR G_BUKRS.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE BUKRS&lt;/P&gt;&lt;P&gt;    INTO G_BUKRS&lt;/P&gt;&lt;P&gt;    FROM T001&lt;/P&gt;&lt;P&gt;   WHERE BUKRS IN S_BUKRS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE E999 WITH 'Enter valid Company Code'(025).&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;Validate the Customer number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR G_KUNNR.&lt;/P&gt;&lt;P&gt;  IF NOT S_KUNNR[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE KUNNR&lt;/P&gt;&lt;P&gt;      INTO G_KUNNR&lt;/P&gt;&lt;P&gt;      FROM KNA1&lt;/P&gt;&lt;P&gt;     WHERE KUNNR IN S_KUNNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      MESSAGE E999 WITH 'Enter valid Customer Number'(026).&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " VALIDATE_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_FILE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Preparing file to download to Unix&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_FILE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  If file path is empty an error is given at the selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF P_DOWN = 'X' AND P_FILE = ''.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH&lt;/P&gt;&lt;P&gt;           'Enter The File Path To Download the Data'(027).&lt;/P&gt;&lt;P&gt;    g_flag = 'X'.&lt;/P&gt;&lt;P&gt;    EXIT.&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;  Assign the Physical File Name Using a Logical File Name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF P_DOWN = 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM POPULATE_FILE_PATH_SERVER.&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;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  POPULATE_FILE_PATH_SERVER&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Assign the Physical File Name Using a Logical File Name&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;FORM POPULATE_FILE_PATH_SERVER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'FILE_GET_NAME'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            LOGICAL_FILENAME = P_FILE&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            FILE_NAME        = G_FILE_NAME&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            FILE_NOT_FOUND   = 1&lt;/P&gt;&lt;P&gt;            OTHERS           = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'File not found for the logical path'(028).&lt;/P&gt;&lt;P&gt;    g_flag = 'X'.&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;ENDFORM.                    " POPULATE_FILE_PATH_SERVER&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SELECT_KNB1&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select Data from Customer Master (Company Code)&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 SELECT_KNB1 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_KNB1,&lt;/P&gt;&lt;P&gt;         TB_KNB1[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT KUNNR&lt;/P&gt;&lt;P&gt;         BUKRS&lt;/P&gt;&lt;P&gt;         ERDAT&lt;/P&gt;&lt;P&gt;         ZAMIB&lt;/P&gt;&lt;P&gt;         FROM KNB1&lt;/P&gt;&lt;P&gt;         INTO TABLE TB_KNB1&lt;/P&gt;&lt;P&gt;         WHERE BUKRS IN S_BUKRS&lt;/P&gt;&lt;P&gt;           AND KUNNR IN S_KUNNR.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Sort TB_KNB1 by Customer no &amp;amp; Rec Created Date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SORT TB_KNB1 BY KUNNR ERDAT DESCENDING.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECT_KNB1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SELECT_CUSTOMER_OPEN_ITEMS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select Custmer Open Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM SELECT_CUSTOMER_OPEN_ITEMS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_BSID,&lt;/P&gt;&lt;P&gt;         TB_BSID[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT  A~BUKRS&lt;/P&gt;&lt;P&gt;          B~KUNNR&lt;/P&gt;&lt;P&gt;          B~AUGDT&lt;/P&gt;&lt;P&gt;          B~BLDAT&lt;/P&gt;&lt;P&gt;          B~SHKZG&lt;/P&gt;&lt;P&gt;          B~DMBTR&lt;/P&gt;&lt;P&gt;          B~ZFBDT&lt;/P&gt;&lt;P&gt;          B~ZBD1T&lt;/P&gt;&lt;P&gt;          B~ZBD2T&lt;/P&gt;&lt;P&gt;          B~ZBD3T&lt;/P&gt;&lt;P&gt;          B~REBZG&lt;/P&gt;&lt;P&gt;          B~REBZT&lt;/P&gt;&lt;P&gt;     INTO TABLE TB_BSID&lt;/P&gt;&lt;P&gt;     FROM BKPF AS A JOIN BSID AS B&lt;/P&gt;&lt;P&gt;       ON A&lt;SUB&gt;BUKRS = B&lt;/SUB&gt;BUKRS&lt;/P&gt;&lt;P&gt;      AND A&lt;SUB&gt;BELNR = B&lt;/SUB&gt;BELNR&lt;/P&gt;&lt;P&gt;      AND A&lt;SUB&gt;GJAHR = B&lt;/SUB&gt;GJAHR&lt;/P&gt;&lt;P&gt;    WHERE A~BUKRS IN S_BUKRS&lt;/P&gt;&lt;P&gt;      AND A~BLDAT IN S_BLDAT&lt;/P&gt;&lt;P&gt;      AND B~KUNNR IN S_KUNNR&lt;/P&gt;&lt;P&gt;      AND B~ZUONR IN S_ZUONR&lt;/P&gt;&lt;P&gt;      AND B~BSCHL = C_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DMS Managed Indicator  = &amp;#145;X&amp;#146;.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF P_ZAMIB = C_X.&lt;/P&gt;&lt;P&gt;      LOOP AT TB_KNB1 WHERE ZAMIB = SPACE.&lt;/P&gt;&lt;P&gt;        DELETE TB_BSID WHERE BUKRS = TB_KNB1-BUKRS&lt;/P&gt;&lt;P&gt;                         AND KUNNR = TB_KNB1-KUNNR.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Transfering Open Items from TB_BSID to TB_BSID_OPEN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_BSID_OPEN[] = TB_BSID[].&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECT_CUSTOMER_OPEN_ITEMS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SELECT_CUSTOMER_CLEARED_ITEMS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select Custmer Cleared Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM SELECT_CUSTOMER_CLEARED_ITEMS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_BSAD_CLEAR,&lt;/P&gt;&lt;P&gt;         TB_BSAD_CLEAR[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT   A~BUKRS&lt;/P&gt;&lt;P&gt;           B~KUNNR&lt;/P&gt;&lt;P&gt;           B~AUGDT&lt;/P&gt;&lt;P&gt;           B~BLDAT&lt;/P&gt;&lt;P&gt;           B~SHKZG&lt;/P&gt;&lt;P&gt;           B~DMBTR&lt;/P&gt;&lt;P&gt;           B~ZFBDT&lt;/P&gt;&lt;P&gt;           B~ZBD1T&lt;/P&gt;&lt;P&gt;           B~ZBD2T&lt;/P&gt;&lt;P&gt;           B~ZBD3T&lt;/P&gt;&lt;P&gt;           B~REBZG&lt;/P&gt;&lt;P&gt;           B~REBZT&lt;/P&gt;&lt;P&gt;      INTO TABLE TB_BSAD_CLEAR&lt;/P&gt;&lt;P&gt;      FROM BKPF AS A JOIN BSAD AS B&lt;/P&gt;&lt;P&gt;        ON A&lt;SUB&gt;BUKRS = B&lt;/SUB&gt;BUKRS&lt;/P&gt;&lt;P&gt;      AND  A&lt;SUB&gt;BELNR = B&lt;/SUB&gt;BELNR&lt;/P&gt;&lt;P&gt;      AND  A&lt;SUB&gt;GJAHR = B&lt;/SUB&gt;GJAHR&lt;/P&gt;&lt;P&gt;     WHERE A~BUKRS IN S_BUKRS&lt;/P&gt;&lt;P&gt;       AND A~BLDAT IN S_BLDAT&lt;/P&gt;&lt;P&gt;       AND B~KUNNR IN S_KUNNR&lt;/P&gt;&lt;P&gt;       AND B~ZUONR IN S_ZUONR&lt;/P&gt;&lt;P&gt;       AND B~BSCHL = C_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DMS Managed Indicator = &amp;#145;X&amp;#146;.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF P_ZAMIB = C_X.&lt;/P&gt;&lt;P&gt;      LOOP AT TB_KNB1 WHERE ZAMIB = SPACE.&lt;/P&gt;&lt;P&gt;        DELETE TB_BSID WHERE BUKRS = TB_KNB1-BUKRS&lt;/P&gt;&lt;P&gt;                         AND KUNNR = TB_KNB1-KUNNR.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&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;  Sort TB_BSID_CLEAR by Customer number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SORT TB_BSAD_CLEAR BY KUNNR.&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;Append lines of TB_BSID_CLEAR to table TB_BSID&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  APPEND LINES OF TB_BSAD_CLEAR TO TB_BSID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sort TB_BSID by Cust num AND Doc date in document&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SORT TB_BSID BY KUNNR BLDAT DESCENDING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECT_CUSTOMER_CLEARED_ITEMS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SELECT_KNA1&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select General Data in Customer Master&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 SELECT_KNA1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_KNA1,&lt;/P&gt;&lt;P&gt;         TB_KNA1[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT TB_BSID[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    select kunnr&lt;/P&gt;&lt;P&gt;           adrnr&lt;/P&gt;&lt;P&gt;           from kna1&lt;/P&gt;&lt;P&gt;           into table tb_kna1&lt;/P&gt;&lt;P&gt;           FOR ALL ENTRIES IN TB_BSID&lt;/P&gt;&lt;P&gt;           where KUNNR = TB_BSID-KUNNR AND&lt;/P&gt;&lt;P&gt;                 kunnr in s_kunnr.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECT_KNA1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  POPULATE_TB_FINAL&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Populate Final Output 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 POPULATE_TB_FINAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local variable&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: L_DAYS_SLOW(4)   TYPE N,                  " Days Slow&lt;/P&gt;&lt;P&gt;        L_DAYS_SLOW_TEMP TYPE P DECIMALS 3.       " Days Slow&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_FINAL,&lt;/P&gt;&lt;P&gt;         TB_FINAL[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT TB_KNA1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TB_FINAL-KUNNR = TB_KNA1-KUNNR.  " Customer Number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get Customer Address.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM GET_CUSTOMER_ADDRESS.&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;  To get Date of Last Invoice.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR TB_BSID.&lt;/P&gt;&lt;P&gt;    READ TABLE TB_BSID WITH KEY KUNNR = TB_KNA1-KUNNR.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      TB_FINAL-LAST_DATE = TB_BSID-BLDAT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get past due and current details.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM GET_PAST_DUE_CURRENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get Days Slow.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR WA_FAEDE .&lt;/P&gt;&lt;P&gt;    LOOP AT TB_BSID_OPEN WHERE KUNNR = TB_KNA1-KUNNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      WA_FAEDE-SHKZG = TB_BSID-SHKZG.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-ZFBDT = TB_BSID-ZFBDT.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-ZBD1T = TB_BSID-ZBD1T.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-ZBD2T = TB_BSID-ZBD2T.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-ZBD3T = TB_BSID-ZBD3T.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-REBZG = TB_BSID-REBZG.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-REBZT = TB_BSID-REBZT.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-KOART = C_D.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    To Determine Due Date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'DETERMINE_DUE_DATE'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                I_FAEDE                    = WA_FAEDE&lt;/P&gt;&lt;P&gt;           IMPORTING&lt;/P&gt;&lt;P&gt;                E_FAEDE                    = WA_FAEDE&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                ACCOUNT_TYPE_NOT_SUPPORTED = 1&lt;/P&gt;&lt;P&gt;                OTHERS                     = 2.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        CLEAR WA_FAEDE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR: L_DAYS_SLOW.&lt;/P&gt;&lt;P&gt;      L_DAYS_SLOW = SY-DATUM - WA_FAEDE-NETDT - P_GRACE.&lt;/P&gt;&lt;P&gt;      G_DAYS_SLOW = G_DAYS_SLOW + ABS( L_DAYS_SLOW ).&lt;/P&gt;&lt;P&gt;      G_OPEN      = G_OPEN + 1.&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;    CLEAR L_DAYS_SLOW_TEMP.&lt;/P&gt;&lt;P&gt;    IF NOT G_OPEN IS INITIAL.&lt;/P&gt;&lt;P&gt;      L_DAYS_SLOW_TEMP   = G_DAYS_SLOW / G_OPEN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Days Slow.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-DAYS_SLOW = L_DAYS_SLOW_TEMP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get Average days to Pay.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM GET_AVG_DAYS_PAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT P_REPORT = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Calculating total records .&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      G_REC_COUNT = G_REC_COUNT + 1.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND TB_FINAL.&lt;/P&gt;&lt;P&gt;    CLEAR  TB_FINAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " POPULATE_TB_FINAL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_PAST_DUE_CURRENT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To get past due and current details.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_PAST_DUE_CURRENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Local Varaibles.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: L_RF035_SFAE1 TYPE RF035-SFAE1, " Total of Due Items&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE2 TYPE RF035-SFAE2, " Total of Due Items (Interval 2)&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE3 TYPE RF035-SFAE3, " Total of Due Items (Interval 3)&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE4 TYPE RF035-SFAE4, " Total of Due Items (Interval 4)&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE5 TYPE RF035-SFAE5, " Total of Due Items (Interval 5)&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE6 TYPE RF035-SFAE6, " Total of Due Items (Interval 6)&lt;/P&gt;&lt;P&gt;        L_RF035_SNFAE TYPE RF035-SNFAE. " Total of Items not Due&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear G_CURR_BAL.&lt;/P&gt;&lt;P&gt;  LOOP AT TB_KNB1 WHERE KUNNR = TB_KNA1-KUNNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear : L_RF035_SFAE1, L_RF035_SFAE2, L_RF035_SFAE3, L_RF035_SFAE4,&lt;/P&gt;&lt;P&gt;            L_RF035_SFAE5, L_RF035_SFAE6, L_RF035_SNFAE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  For Customer Due Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'CUSTOMER_DUE_DATE_ANALYSIS'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              BUKRS          = TB_KNB1-BUKRS&lt;/P&gt;&lt;P&gt;              KKBER          = ' '&lt;/P&gt;&lt;P&gt;              KUNNR          = TB_KNB1-KUNNR&lt;/P&gt;&lt;P&gt;              RASID          = C_Z001&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;              SFAE1          = L_RF035_SFAE1&lt;/P&gt;&lt;P&gt;              SFAE2          = L_RF035_SFAE2&lt;/P&gt;&lt;P&gt;              SFAE3          = L_RF035_SFAE3&lt;/P&gt;&lt;P&gt;              SFAE4          = L_RF035_SFAE4&lt;/P&gt;&lt;P&gt;              SFAE5          = L_RF035_SFAE5&lt;/P&gt;&lt;P&gt;              SFAE6          = L_RF035_SFAE6&lt;/P&gt;&lt;P&gt;              SNFAE          = L_RF035_SNFAE&lt;/P&gt;&lt;P&gt;         EXCEPTIONS&lt;/P&gt;&lt;P&gt;              INVALID_RASTER = 1&lt;/P&gt;&lt;P&gt;              NO_OPEN_ITEMS  = 2&lt;/P&gt;&lt;P&gt;              OTHERS         = 3.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    1 &amp;#150; 30 past Due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-AVG_1_30  = TB_FINAL-AVG_1_30  + L_RF035_SFAE1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    31 &amp;#150; 60 past Due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-AVG_31_60 = TB_FINAL-AVG_31_60 + L_RF035_SFAE2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    61 &amp;#150; 90 past Due.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-AVG_61_90 = TB_FINAL-AVG_61_90 + L_RF035_SFAE3.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    90 + past Due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-AVG_90G   = TB_FINAL-AVG_90G   + L_RF035_SFAE4&lt;/P&gt;&lt;P&gt;                                              + L_RF035_SFAE5&lt;/P&gt;&lt;P&gt;                                              + L_RF035_SFAE6.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Current.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-CURRENT  = TB_FINAL-CURRENT    + L_RF035_SNFAE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF NOT P_REPORT = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Current account balance.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        G_CURR_BAL   = G_CURR_BAL + TB_FINAL-CURRENT   +&lt;/P&gt;&lt;P&gt;                                    TB_FINAL-AVG_1_30  +&lt;/P&gt;&lt;P&gt;                                    TB_FINAL-AVG_31_60 +&lt;/P&gt;&lt;P&gt;                                    TB_FINAL-AVG_61_90 +&lt;/P&gt;&lt;P&gt;                                    TB_FINAL-AVG_90G   .&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      CLEAR: L_RF035_SFAE1,L_RF035_SFAE2,L_RF035_SFAE3,&lt;/P&gt;&lt;P&gt;             L_RF035_SFAE4,L_RF035_SFAE5,L_RF035_SFAE6,&lt;/P&gt;&lt;P&gt;             L_RF035_SNFAE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " GET_PAST_DUE_CURRENT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_CUSTOMER_ADDRESS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To get Customer Address.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_CUSTOMER_ADDRESS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: X_ADDR1_SEL,&lt;/P&gt;&lt;P&gt;         X_SADR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Populate Address to ADDRESS_SELECTION-ADDRNUMBER field&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  X_ADDR1_SEL-ADDRNUMBER = TB_KNA1-ADRNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The function module reads all records for the addresses specified&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;in the structure ADDRESS_SELECTION and puts them in the return&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;structures *ADDRESS_VALUE and SADR.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'ADDR_GET'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            ADDRESS_SELECTION = X_ADDR1_SEL&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            SADR              = X_SADR&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            PARAMETER_ERROR   = 1&lt;/P&gt;&lt;P&gt;            ADDRESS_NOT_EXIST = 2&lt;/P&gt;&lt;P&gt;            VERSION_NOT_EXIST = 3&lt;/P&gt;&lt;P&gt;            INTERNAL_ERROR    = 4&lt;/P&gt;&lt;P&gt;            OTHERS            = 5.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Name Line 1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_FINAL-NAME1 = X_SADR-NAME1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Telephone Number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_FINAL-PHONE = X_SADR-TELF1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ADDRESS LINE 1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_FINAL-ADDRESS1 = X_SADR-STRAS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ADDRESS LINE 2.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CONCATENATE X_SADR-PFACH 'CODE' X_SADR-PSTL2 INTO TB_FINAL-ADDRESS2&lt;/P&gt;&lt;P&gt;                                                    SEPARATED BY SPACE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ADDRESS LINE 3.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   CONCATENATE  X_SADR-ORT01 X_SADR-ORT02 ',' X_SADR-REGIO X_SADR-PSTLZ&lt;/P&gt;&lt;P&gt;                              INTO TB_FINAL-ADDRESS3 SEPARATED BY SPACE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ADDRESS LINE 4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_FINAL-ADDRESS4 = X_SADR-LAND1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CLEAR: X_ADDR1_SEL,&lt;/P&gt;&lt;P&gt;           X_SADR.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " GET_CUSTOMER_ADDRESS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_AVG_DAYS_PAY&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To get Average days to Pay.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_AVG_DAYS_PAY.&lt;/P&gt;&lt;P&gt;*Local variable&lt;/P&gt;&lt;P&gt;  DATA: L_DAYS(4) TYPE N,                       " Number of Days&lt;/P&gt;&lt;P&gt;        L_TEMP TYPE P DECIMALS 3.               " Average&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT TB_BSAD_CLEAR WHERE KUNNR = TB_KNA1-KUNNR.&lt;/P&gt;&lt;P&gt;    L_DAYS  = TB_BSAD_CLEAR-AUGDT - TB_BSAD_CLEAR-BLDAT.&lt;/P&gt;&lt;P&gt;    G_AVG   = G_AVG + L_DAYS.&lt;/P&gt;&lt;P&gt;    G_COUNT = G_COUNT + 1.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT G_COUNT IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Average days to Pay.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    L_TEMP = G_AVG / G_COUNT.&lt;/P&gt;&lt;P&gt;    TB_FINAL-AVG = L_TEMP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " GET_AVG_DAYS_PAY&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  DISPLAY_ALV_REPORT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To display the Final Output data using ALV's&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM DISPLAY_ALV_REPORT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For Populating Field Catalog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM RPT_BUILD_FIELDCATLOG.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If the Field catlog failed, then err out and exit the program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if g_flag = 'X'.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For Modifying Field Catalog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM RPT_MODIFY_FIELDCATLOG.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For Displaying Output in Grid Format.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM RPT_GRID_DISPLAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " DISPLAY_ALV_REPORT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  RPT_BUILD_FIELDCATLOG&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      For Populating Field Catalog.&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 RPT_BUILD_FIELDCATLOG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local Variable.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA : L_TABNAME TYPE SLIS_TABNAME.  " Table Name&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  L_TABNAME = 'TB_FINAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR:TB_FIELDCAT,&lt;/P&gt;&lt;P&gt;        TB_FIELDCAT[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            I_PROGRAM_NAME         = G_REPID&lt;/P&gt;&lt;P&gt;            I_INTERNAL_TABNAME     = L_TABNAME&lt;/P&gt;&lt;P&gt;            I_INCLNAME             = G_REPID&lt;/P&gt;&lt;P&gt;       CHANGING&lt;/P&gt;&lt;P&gt;            CT_FIELDCAT            = TB_FIELDCAT&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            INCONSISTENT_INTERFACE = 1&lt;/P&gt;&lt;P&gt;            PROGRAM_ERROR          = 2&lt;/P&gt;&lt;P&gt;            OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'Error in Populating Fieldcatalog'(036).&lt;/P&gt;&lt;P&gt;    g_flag = 'X'.&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;ENDFORM.                    " RPT_BUILD_FIELDCATLOG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  RPT_MODIFY_FIELDCATLOG&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      For Modifying Field Catalog&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 RPT_MODIFY_FIELDCATLOG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Getting the Header Text for the Coloumns&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA : L_TABIX LIKE SY-TABIX,            " Index&lt;/P&gt;&lt;P&gt;         L_DDICTXT TYPE C  VALUE 'L'.      " Flag&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Getting the Header Text for the Coloumns&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT TB_FIELDCAT INTO X_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR L_TABIX.&lt;/P&gt;&lt;P&gt;    L_TABIX = SY-TABIX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CASE X_FIELDCAT-FIELDNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Customer Number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'KUNNR'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Customer Number'(001).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Name Line 1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'NAME1'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Name'(002).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Address line 1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'ADDRESS1'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Address 1'(003).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Address line 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'ADDRESS2'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Address 2'(004).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Address line 3&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'ADDRESS3'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Address 3'(005).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Address line 4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'ADDRESS4'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Address 4'(006).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Telephone Number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'PHONE'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Telephone Number'(007).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Days Slow&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'DAYS_SLOW'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Days Slow'(008).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT      =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Date of Last Invoice&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'LAST_DATE'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Date of Last Invoice'(009).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Average Days to Pay&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Average Days to Pay'(010).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Current&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'CURRENT'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 1'(011).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    1-30 past due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG_1_30'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 2'(012).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    31-60 past due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG_31_60'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 3'(013).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    61-90 past due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG_61_90'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 4'(014).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    90+ past due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG_90G'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 5'(015).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&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;    MODIFY TB_FIELDCAT FROM X_FIELDCAT INDEX L_TABIX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " RPT_MODIFY_FIELDCATLOG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  RPT_GRID_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      For Displaying Output in Grid Format.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM RPT_GRID_DISPLAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Layout Settings&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR X_LAYOUT.&lt;/P&gt;&lt;P&gt;  X_LAYOUT-ZEBRA = 'X'.&lt;/P&gt;&lt;P&gt;  X_LAYOUT-COLWIDTH_OPTIMIZE = C_X.&lt;/P&gt;&lt;P&gt;  X_LAYOUT-NO_COLHEAD        = SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To Display the Output in ALV Format&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            I_CALLBACK_PROGRAM = G_REPID&lt;/P&gt;&lt;P&gt;            IS_LAYOUT          = X_LAYOUT&lt;/P&gt;&lt;P&gt;            IT_FIELDCAT        = TB_FIELDCAT&lt;/P&gt;&lt;P&gt;            I_GRID_TITLE       = 'D&amp;amp;B Credit Agency Interface'(019)&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            T_OUTTAB           = TB_FINAL&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            PROGRAM_ERROR      = 1&lt;/P&gt;&lt;P&gt;            OTHERS             = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'Error in displaying ALV Grid'(037).&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;ENDFORM.                    " RPT_GRID_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TRANSFER_DATA_FILE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Download data to Application server&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 TRANSFER_DATA_FILE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Opening file in application server&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  OPEN DATASET G_FILE_NAME FOR OUTPUT IN TEXT MODE.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'Error When Opening File'(034).&lt;/P&gt;&lt;P&gt;    EXIT.&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;Transfer of data to file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT TB_FINAL.&lt;/P&gt;&lt;P&gt;    TRANSFER TB_FINAL TO G_FILE_NAME.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&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;Closing the file in application server&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLOSE DATASET G_FILE_NAME.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'No File Found To Close'(035).&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;ENDFORM.                    " TRANSFER_DATA_FILE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  WRITE_REPORT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Display data for summary report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM WRITE_REPORT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Colunm headings for the Report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  WRITE :/01(46) SY-ULINE.&lt;/P&gt;&lt;P&gt;  FORMAT COLOR 1.&lt;/P&gt;&lt;P&gt;  WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; SY-VLINE,&lt;/P&gt;&lt;P&gt;           02(14) 'Record Count'(021),&lt;/P&gt;&lt;P&gt;           16 SY-VLINE,&lt;/P&gt;&lt;P&gt;           19(25) 'Current Account Balance'(022),&lt;/P&gt;&lt;P&gt;           46 SY-VLINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FORMAT COLOR OFF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Displaying the record count and Curr Acc balance&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  FORMAT COLOR 2.&lt;/P&gt;&lt;P&gt;  WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; SY-VLINE,&lt;/P&gt;&lt;P&gt;          02(14) G_REC_COUNT LEFT-JUSTIFIED,&lt;/P&gt;&lt;P&gt;          16     SY-VLINE ,&lt;/P&gt;&lt;P&gt;          19(25) G_CURR_BAL ,&lt;/P&gt;&lt;P&gt;          46     SY-VLINE.&lt;/P&gt;&lt;P&gt;  FORMAT COLOR OFF.&lt;/P&gt;&lt;P&gt;  WRITE :/01(46) SY-ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " WRITE_REPORT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SEND_MAIL&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To Send Mail to The user Attaching The TXT File&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM SEND_MAIL USING P_SENDER TYPE YWFSALOFFICNOTIF-INTERFACE_ID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Populating data to send mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM POPULATE_EMAIL_REF_DATA USING G_TEXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To populate the data to table tb_objbin&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM POP_DATA_OBJBIN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get the attached file for the mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR G_TAB_LINES.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE TB_OBJBIN LINES G_TAB_LINES.&lt;/P&gt;&lt;P&gt;  TB_OBJHEAD = 'TEST.TXT'.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJHEAD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Creation of the entry for the mail(mail contents)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TB_OBJPACK-TRANSF_BIN = C_X.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-HEAD_START = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-HEAD_NUM   = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-BODY_START = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-BODY_NUM   = G_TAB_LINES.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-DOC_TYPE   = 'TXT'.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-OBJ_NAME   = SY-REPID.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-OBJ_DESCR  = 'Interface Audit Report'(020).&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-DOC_SIZE   = G_TAB_LINES * 255.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJPACK.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Populate the User mail id entered on selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM MAIL_DETAILS TABLES TB_ZRECEIVE USING P_SENDER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SEND_MAIL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  POPULATE_EMAIL_REF_DATA&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Populating data to send mail&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 POPULATE_EMAIL_REF_DATA USING TEXT TYPE SOLISTI1-LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;File&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TB_DOC_CHNG-OBJ_NAME = 'Interface Audit Report'(020).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TB_DOC_CHNG-OBJ_DESCR = 'Interface Audit Report'(020).&lt;/P&gt;&lt;P&gt;  TB_OBJTXT = TEXT.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE TB_OBJTXT LINES G_TAB_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE TB_OBJTXT INDEX G_TAB_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To determine the document size&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; TB_DOC_CHNG-DOC_SIZE = ( G_TAB_LINES - 1 ) * 255 + STRLEN( TB_OBJTXT )&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;Creation of the entry for the Mail Contents&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR TB_OBJPACK-TRANSF_BIN.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-HEAD_START = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-HEAD_NUM = 0.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-BODY_START = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-BODY_NUM = G_TAB_LINES.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-DOC_TYPE = 'RAW'.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJPACK.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " POPULATE_EMAIL_REF_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  POP_DATA_OBJBIN&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Send mail Logic&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM POP_DATA_OBJBIN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set space for Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set coloumn heading for the Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_HEADING_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set space for Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;to populate data for the Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_DATA_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set space for Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " POP_DATA_OBJBIN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EXCEL_SPACE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Setting The space&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 EXCEL_SPACE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set the space&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CONCATENATE SPACE C_DELIMETER INTO TB_OBJBIN-LINE.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJBIN.&lt;/P&gt;&lt;P&gt;  CLEAR TB_OBJBIN.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " EXCEL_SPACE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EXCEL_HEADING_1&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Heading For The Mail&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 EXCEL_HEADING_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To get the Column headings for the attached file in the mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CONCATENATE&lt;/P&gt;&lt;P&gt;     TEXT-021                " Record Count&lt;/P&gt;&lt;P&gt;     TEXT-022                " Current Account Balance&lt;/P&gt;&lt;P&gt;     INTO TB_OBJBIN-LINE&lt;/P&gt;&lt;P&gt;     SEPARATED BY C_DELIMETER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE TB_OBJBIN-LINE C_DELIMETER INTO&lt;/P&gt;&lt;P&gt;  TB_OBJBIN-LINE.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJBIN.&lt;/P&gt;&lt;P&gt;  CLEAR TB_OBJBIN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " EXCEL_HEADING_1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EXCEL_DATA_1&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Data Population To Send Mail&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 EXCEL_DATA_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONDENSE: G_REC_COUNT,G_CURR_BAL.&lt;/P&gt;&lt;P&gt;  CONCATENATE G_REC_COUNT C_DELIMETER  G_CURR_BAL INTO&lt;/P&gt;&lt;P&gt;              TB_OBJBIN-LINE.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJBIN.&lt;/P&gt;&lt;P&gt;  CLEAR TB_OBJBIN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " EXCEL_DATA_1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  MAIL_DETAILS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                   Mail Receviers&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 MAIL_DETAILS TABLES PI_RECEIVER STRUCTURE YSMTP_ADDRESS&lt;/P&gt;&lt;P&gt;                  USING P_SENDER TYPE YWFSALOFFICNOTIF-INTERFACE_ID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Table declared for the mail receviers&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: TB_ACTOR LIKE SWHACTOR OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sales office&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CONSTANTS : C_VKBUR LIKE YWFSALOFFICNOTIF-VKBUR VALUE '0123'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Area To Get The Receviers Address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: WA_USERS LIKE YWFSALOFFICNOTIF OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To get the user id for the mail recepients&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT  SINGLE *&lt;/P&gt;&lt;P&gt;    INTO  WA_USERS&lt;/P&gt;&lt;P&gt;    FROM  YWFSALOFFICNOTIF&lt;/P&gt;&lt;P&gt;    WHERE INTERFACE_ID  = P_SENDER&lt;/P&gt;&lt;P&gt;    AND   VKBUR         = C_VKBUR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;populating the tb_actor table from wa_users&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    IF NOT WA_USERS-OBJID01 IS INITIAL AND&lt;/P&gt;&lt;P&gt;       NOT WA_USERS-OTYPE01 IS INITIAL.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OTYPE = WA_USERS-OTYPE01.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OBJID = WA_USERS-OBJID01.&lt;/P&gt;&lt;P&gt;      APPEND TB_ACTOR.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT WA_USERS-OBJID02 IS INITIAL AND&lt;/P&gt;&lt;P&gt;       NOT WA_USERS-OTYPE02 IS INITIAL.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OTYPE = WA_USERS-OTYPE02.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OBJID = WA_USERS-OBJID02.&lt;/P&gt;&lt;P&gt;      APPEND TB_ACTOR.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT WA_USERS-OBJID03 IS INITIAL AND&lt;/P&gt;&lt;P&gt;       NOT WA_USERS-OTYPE03 IS INITIAL.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OTYPE = WA_USERS-OTYPE03.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OBJID = WA_USERS-OBJID03.&lt;/P&gt;&lt;P&gt;      APPEND TB_ACTOR.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get the list of smtp address from the selected objid/otype.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM GET_ADDRESS TABLES PI_RECEIVER&lt;/P&gt;&lt;P&gt;                             TB_ACTOR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create the records in the receiver internal table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF NOT TB_ZRECEIVE[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT TB_ZRECEIVE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TB_RECLIST-RECEIVER = TB_ZRECEIVE-SMTP_ADDR.&lt;/P&gt;&lt;P&gt;      TB_RECLIST-REC_TYPE = 'U'.&lt;/P&gt;&lt;P&gt;      APPEND TB_RECLIST.&lt;/P&gt;&lt;P&gt;      CLEAR TB_RECLIST.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDLOOP.  " receivers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    used to send the mail along with attached file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM CALL_FUNCTION_TXT.&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.                    " MAIL_DETAILS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_ADDRESS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Getting The Receviers Address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_ADDRESS TABLES   P_ADDRESS STRUCTURE YSMTP_ADDRESS&lt;/P&gt;&lt;P&gt;                          P_ACTOR   STRUCTURE SWHACTOR.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal tables and structure to find the address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: TB_RESULT_TAB    TYPE TABLE OF SWHACTOR,&lt;/P&gt;&lt;P&gt;        TB_LIST_OF_USERS TYPE TABLE OF SWHACTOR,&lt;/P&gt;&lt;P&gt;        TB_EPEOPLE_OBJEC TYPE OBJEC OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        TB_EPEOPLE_STRUC TYPE TABLE OF STRUC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: L_ACTOR          TYPE SWHACTOR,         " Role Resol Result&lt;/P&gt;&lt;P&gt;        L_USERID         TYPE PA0105-USRID,     " Communication ID&lt;/P&gt;&lt;P&gt;        L_OBJID          TYPE OBJEC-OBJID,      " Object ID&lt;/P&gt;&lt;P&gt;        L_DATUM          TYPE BEGDATUM,         " Start Date&lt;/P&gt;&lt;P&gt;        L_PERSON_NUMBER  TYPE USR21-PERSNUMBER, " Person number&lt;/P&gt;&lt;P&gt;        L_ADDRESS_NUMBER TYPE USR21-ADDRNUMBER. " Address Number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  L_DATUM = SY-DATUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get the email addresses of the selected agent&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT P_ACTOR INTO L_ACTOR.&lt;/P&gt;&lt;P&gt;    IF L_ACTOR-OTYPE = 'A '.                   "Agent is a workcenter&lt;/P&gt;&lt;P&gt;      CLEAR   TB_RESULT_TAB.&lt;/P&gt;&lt;P&gt;      REFRESH TB_RESULT_TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FM to find the receipent&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'RH_STRUC_GET'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                ACT_OTYPE       = L_ACTOR-OTYPE&lt;/P&gt;&lt;P&gt;                ACT_OBJID       = L_ACTOR-OBJID&lt;/P&gt;&lt;P&gt;                ACT_WEGID       = 'US_ACTGR'&lt;/P&gt;&lt;P&gt;                ACT_BEGDA       = L_DATUM                "#EC DOM_EQUAL&lt;/P&gt;&lt;P&gt;                ACT_ENDDA       = L_DATUM                "#EC DOM_EQUAL&lt;/P&gt;&lt;P&gt;                AUTHORITY_CHECK = ' '&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                RESULT_TAB      = TB_RESULT_TAB&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                NO_PLVAR_FOUND  = 1&lt;/P&gt;&lt;P&gt;                NO_ENTRY_FOUND  = 2&lt;/P&gt;&lt;P&gt;                OTHERS          = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;        CONTINUE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT TB_RESULT_TAB INTO L_ACTOR WHERE OTYPE = 'US'.&lt;/P&gt;&lt;P&gt;        COLLECT L_ACTOR INTO TB_LIST_OF_USERS.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF L_ACTOR-OTYPE = 'US'.                 "Agent is a userid&lt;/P&gt;&lt;P&gt;      COLLECT L_ACTOR INTO TB_LIST_OF_USERS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSE.                                        "Agent is a position&lt;/P&gt;&lt;P&gt;      L_OBJID = L_ACTOR-OBJID.&lt;/P&gt;&lt;P&gt;      CLEAR  : TB_EPEOPLE_OBJEC, TB_EPEOPLE_STRUC.&lt;/P&gt;&lt;P&gt;      REFRESH: TB_EPEOPLE_OBJEC, TB_EPEOPLE_STRUC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FM to find the  List of People&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'RH_GET_PEOPLE_STRUC'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                PLVAR           = '01'&lt;/P&gt;&lt;P&gt;                OTYPE           = L_ACTOR-OTYPE&lt;/P&gt;&lt;P&gt;                OBJID           = L_OBJID&lt;/P&gt;&lt;P&gt;                C_OTYPE         = ''&lt;/P&gt;&lt;P&gt;                C_OBJID         = L_OBJID&lt;/P&gt;&lt;P&gt;                BEGDA           = L_DATUM                "#EC DOM_EQUAL&lt;/P&gt;&lt;P&gt;                ENDDA           = L_DATUM                "#EC DOM_EQUAL&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                EPEOPLE_OBJEC   = TB_EPEOPLE_OBJEC&lt;/P&gt;&lt;P&gt;                EPEOPLE_STRUC   = TB_EPEOPLE_STRUC&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                NO_PLVAR_FOUND  = 1&lt;/P&gt;&lt;P&gt;                NO_ENTRY_FOUND  = 2&lt;/P&gt;&lt;P&gt;                STRUCTURE_ERROR = 3&lt;/P&gt;&lt;P&gt;                OTHERS          = 4.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;        CONTINUE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT TB_EPEOPLE_OBJEC.&lt;/P&gt;&lt;P&gt;        CASE TB_EPEOPLE_OBJEC-OTYPE.&lt;/P&gt;&lt;P&gt;          WHEN 'US'.&lt;/P&gt;&lt;P&gt;            L_ACTOR-OTYPE = TB_EPEOPLE_OBJEC-OTYPE.&lt;/P&gt;&lt;P&gt;            L_ACTOR-OBJID = TB_EPEOPLE_OBJEC-REALO.&lt;/P&gt;&lt;P&gt;            COLLECT L_ACTOR INTO TB_LIST_OF_USERS.&lt;/P&gt;&lt;P&gt;          WHEN 'P '.&lt;/P&gt;&lt;P&gt;            CLEAR L_USERID.&lt;/P&gt;&lt;P&gt;            SELECT SINGLE USRID INTO L_USERID FROM PA0105&lt;/P&gt;&lt;P&gt;                 WHERE PERNR = TB_EPEOPLE_OBJEC-OBJID&lt;/P&gt;&lt;P&gt;                   AND SUBTY = '0001'&lt;/P&gt;&lt;P&gt;                   AND OBJPS = '  '&lt;/P&gt;&lt;P&gt;                   AND SPRPS = ' '&lt;/P&gt;&lt;P&gt;                   AND ENDDA GE SY-DATUM&lt;/P&gt;&lt;P&gt;                   AND BEGDA LE SY-DATUM&lt;/P&gt;&lt;P&gt;                   AND USRTY = '0001'.&lt;/P&gt;&lt;P&gt;            IF NOT L_USERID IS INITIAL.&lt;/P&gt;&lt;P&gt;              L_ACTOR-OTYPE = 'US'.&lt;/P&gt;&lt;P&gt;              L_ACTOR-OBJID = L_USERID.&lt;/P&gt;&lt;P&gt;              COLLECT L_ACTOR INTO TB_LIST_OF_USERS.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;        ENDCASE.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&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;Get email addresses for selected users&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR P_ADDRESS. REFRESH P_ADDRESS.&lt;/P&gt;&lt;P&gt;  LOOP AT TB_LIST_OF_USERS INTO L_ACTOR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR: L_PERSON_NUMBER, L_ADDRESS_NUMBER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE PERSNUMBER ADDRNUMBER FROM USR21&lt;/P&gt;&lt;P&gt;      INTO (L_PERSON_NUMBER, L_ADDRESS_NUMBER)&lt;/P&gt;&lt;P&gt;      WHERE BNAME = L_ACTOR-OBJID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE SMTP_ADDR INTO P_ADDRESS-SMTP_ADDR FROM ADR6&lt;/P&gt;&lt;P&gt;      WHERE    PERSNUMBER = L_PERSON_NUMBER&lt;/P&gt;&lt;P&gt;           AND ADDRNUMBER = L_ADDRESS_NUMBER&lt;/P&gt;&lt;P&gt;           AND FLGDEFAULT = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      APPEND P_ADDRESS.&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;ENDFORM.                    "get_address&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CALL_FUNCTION_TXT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Function Module used to send mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CALL_FUNCTION_TXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function Module used to send mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            DOCUMENT_DATA              = TB_DOC_CHNG&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            PACKING_LIST               = TB_OBJPACK&lt;/P&gt;&lt;P&gt;            OBJECT_HEADER              = TB_OBJHEAD&lt;/P&gt;&lt;P&gt;            CONTENTS_BIN               = TB_OBJBIN&lt;/P&gt;&lt;P&gt;            CONTENTS_TXT               = TB_OBJTXT&lt;/P&gt;&lt;P&gt;            RECEIVERS                  = TB_RECLIST&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            TOO_MANY_RECEIVERS         = 1&lt;/P&gt;&lt;P&gt;            DOCUMENT_NOT_SENT          = 2&lt;/P&gt;&lt;P&gt;            OPERATION_NO_AUTHORIZATION = 4&lt;/P&gt;&lt;P&gt;            OTHERS                     = 99.&lt;/P&gt;&lt;P&gt;  CASE SY-SUBRC.&lt;/P&gt;&lt;P&gt;    WHEN 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Mail has been sucessfully sent&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'Mail has been sucessfully sent'(029).&lt;/P&gt;&lt;P&gt;    WHEN 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Too Many Parameters&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'Too Many Parameters'(030).&lt;/P&gt;&lt;P&gt;    WHEN 2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Doc Could Not Be Sent&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'Doc Could Not Be Sent'(031).&lt;/P&gt;&lt;P&gt;    WHEN 4.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    No Authority To Send&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'No Authority To Send'(032).&lt;/P&gt;&lt;P&gt;    WHEN 99.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Error While Sending&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'Error While Sending'(033).&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CALL_FUNCTION_TXT&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 03 Mar 2006 13:15:42 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-03-03T13:15:42Z</dc:date>
    <item>
      <title>program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250133#M144709</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the below code where should I give the file name. ex : my file name is test.txt/.doc file present in d:\pavan\test.txt. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please let me know if there is any modification to be done.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Report  ZSPOOLTOPDF2                                                *&lt;/P&gt;&lt;P&gt;*&amp;amp;                                                                     *&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Converts spool request into PDF document and emails it to           *&lt;/P&gt;&lt;P&gt;*&amp;amp; recipicant.                                                         *&lt;/P&gt;&lt;P&gt;*&amp;amp;                                                                     *&lt;/P&gt;&lt;P&gt;*&amp;amp; Execution                                                           *&lt;/P&gt;&lt;P&gt;*&amp;amp; -&lt;/P&gt;&lt;HR originaltext="--------" /&gt;&lt;P&gt;                                                           *&lt;/P&gt;&lt;P&gt;*&amp;amp; This program can be run in background or online and a spool request *&lt;/P&gt;&lt;P&gt;*&amp;amp; will still be created                                               *&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  zspooltopdf2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETER: p_email1 LIKE somlreci1-receiver&lt;/P&gt;&lt;P&gt;                                    DEFAULT 'abap@sapdev.co.uk',&lt;/P&gt;&lt;P&gt;           p_sender LIKE somlreci1-receiver&lt;/P&gt;&lt;P&gt;                                    DEFAULT 'abap@sapdev.co.uk',&lt;/P&gt;&lt;P&gt;           p_delspl  AS CHECKBOX,&lt;/P&gt;&lt;P&gt;           p_online no-display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*DATA DECLARATION&lt;/P&gt;&lt;P&gt;DATA: gd_recsize TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Spool IDs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TYPES: BEGIN OF t_tbtcp.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE tbtcp.&lt;/P&gt;&lt;P&gt;TYPES: END OF t_tbtcp.&lt;/P&gt;&lt;P&gt;DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;      wa_tbtcp TYPE t_tbtcp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Job Runtime Parameters&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: gd_eventid LIKE tbtcm-eventid,&lt;/P&gt;&lt;P&gt;      gd_eventparm LIKE tbtcm-eventparm,&lt;/P&gt;&lt;P&gt;      gd_external_program_active LIKE tbtcm-xpgactive,&lt;/P&gt;&lt;P&gt;      gd_jobcount LIKE tbtcm-jobcount,&lt;/P&gt;&lt;P&gt;      gd_jobname LIKE tbtcm-jobname,&lt;/P&gt;&lt;P&gt;      gd_stepcount LIKE tbtcm-stepcount,&lt;/P&gt;&lt;P&gt;      gd_error    TYPE sy-subrc,&lt;/P&gt;&lt;P&gt;      gd_reciever TYPE sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:  w_recsize TYPE i,&lt;/P&gt;&lt;P&gt;       w_spool_nr like sy-spono.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      %_print LIKE pri_params.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gd_subject   LIKE sodocchgi1-obj_descr,&lt;/P&gt;&lt;P&gt;      it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      gd_sender_type     LIKE soextreci1-adr_typ,&lt;/P&gt;&lt;P&gt;      gd_attachment_desc TYPE so_obj_nam,&lt;/P&gt;&lt;P&gt;      gd_attachment_name TYPE so_obj_des.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Spool to PDF conversions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: gd_spool_nr LIKE tsp01-rqident,&lt;/P&gt;&lt;P&gt;      gd_destination LIKE rlgrap-filename,&lt;/P&gt;&lt;P&gt;      gd_bytecount LIKE tst01-dsize,&lt;/P&gt;&lt;P&gt;      gd_buffer TYPE string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Binary store for PDF&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF it_pdf_output OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE tline.&lt;/P&gt;&lt;P&gt;DATA: END OF it_pdf_output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS: c_dev LIKE  sy-sysid VALUE 'DEV',&lt;/P&gt;&lt;P&gt;           c_no(1)     TYPE c   VALUE ' ',&lt;/P&gt;&lt;P&gt;           c_device(4) TYPE c   VALUE 'LOCL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;*START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Write statement to represent report output. Spool request is created&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if write statement is executed in background. This could also be an&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ALV grid which would be converted to PDF without any extra effort&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  WRITE 'Hello World'.&lt;/P&gt;&lt;P&gt;  new-page.&lt;/P&gt;&lt;P&gt;  commit work.&lt;/P&gt;&lt;P&gt;  new-page print off.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  If p_online = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Processing performed when program calls itself when run online  &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    gd_spool_nr = sy-spono.&lt;/P&gt;&lt;P&gt;    EXPORT gd_spool_nr TO MEMORY ID 'SPOOLTOPDF'.&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;  IF sy-batch EQ 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM get_job_details.&lt;/P&gt;&lt;P&gt;    PERFORM obtain_spool_id.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    gd_spool_nr = sy-spono.&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;If executed online, it submits a program to perform the write statements &lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;instructing it to create a spool request, this could be another program&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;which just performs the write statements and then exports sy-spono &lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;to memory. But in this example it calls itself passing X to parameter&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;p_online, which takes it down an alternative procesing path.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    submit ZSPOOLTOPDF2&lt;/P&gt;&lt;P&gt;           with p_online = 'X'&lt;/P&gt;&lt;P&gt;           to sap-spool&lt;/P&gt;&lt;P&gt;           spool parameters   %_print&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          archive parameters %_print&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           without spool dynpro&lt;/P&gt;&lt;P&gt;           and return.&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;Get spool id from program called above&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IMPORT gd_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM convert_spool_to_pdf.&lt;/P&gt;&lt;P&gt;  PERFORM process_email.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if p_delspl EQ 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM delete_spool.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-sysid = c_dev.&lt;/P&gt;&lt;P&gt;    wait up to 5 seconds.&lt;/P&gt;&lt;P&gt;    SUBMIT rsconn01 WITH mode   = 'INT'&lt;/P&gt;&lt;P&gt;                    WITH output = 'X'&lt;/P&gt;&lt;P&gt;                    AND RETURN.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM obtain_spool_id                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM obtain_spool_id.&lt;/P&gt;&lt;P&gt;  CHECK NOT ( gd_jobname IS INITIAL ).&lt;/P&gt;&lt;P&gt;  CHECK NOT ( gd_jobcount IS INITIAL ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT * FROM  tbtcp&lt;/P&gt;&lt;P&gt;                 INTO TABLE it_tbtcp&lt;/P&gt;&lt;P&gt;                 WHERE      jobname     = gd_jobname&lt;/P&gt;&lt;P&gt;                 AND        jobcount    = gd_jobcount&lt;/P&gt;&lt;P&gt;                 AND        stepcount   = gd_stepcount&lt;/P&gt;&lt;P&gt;                 AND        listident   &amp;lt;&amp;gt; '0000000000'&lt;/P&gt;&lt;P&gt;                 ORDER BY   jobname&lt;/P&gt;&lt;P&gt;                            jobcount&lt;/P&gt;&lt;P&gt;                            stepcount.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    message s004(zdd) with gd_spool_nr.&lt;/P&gt;&lt;P&gt;    gd_spool_nr = wa_tbtcp-listident.&lt;/P&gt;&lt;P&gt;    MESSAGE s004(zdd) WITH gd_spool_nr.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MESSAGE s005(zdd).&lt;/P&gt;&lt;P&gt;  ENDIF.&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 get_job_details                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_job_details.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get current job details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'GET_JOB_RUNTIME_INFO'&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            eventid                 = gd_eventid&lt;/P&gt;&lt;P&gt;            eventparm               = gd_eventparm&lt;/P&gt;&lt;P&gt;            external_program_active = gd_external_program_active&lt;/P&gt;&lt;P&gt;            jobcount                = gd_jobcount&lt;/P&gt;&lt;P&gt;            jobname                 = gd_jobname&lt;/P&gt;&lt;P&gt;            stepcount               = gd_stepcount&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            no_runtime_info         = 1&lt;/P&gt;&lt;P&gt;            OTHERS                  = 2.&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 convert_spool_to_pdf                                     *&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 convert_spool_to_pdf.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            src_spoolid              = gd_spool_nr&lt;/P&gt;&lt;P&gt;            no_dialog                = c_no&lt;/P&gt;&lt;P&gt;            dst_device               = c_device&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            pdf_bytecount            = gd_bytecount&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            pdf                      = it_pdf_output&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            err_no_abap_spooljob     = 1&lt;/P&gt;&lt;P&gt;            err_no_spooljob          = 2&lt;/P&gt;&lt;P&gt;            err_no_permission        = 3&lt;/P&gt;&lt;P&gt;            err_conv_not_possible    = 4&lt;/P&gt;&lt;P&gt;            err_bad_destdevice       = 5&lt;/P&gt;&lt;P&gt;            user_cancelled           = 6&lt;/P&gt;&lt;P&gt;            err_spoolerror           = 7&lt;/P&gt;&lt;P&gt;            err_temseerror           = 8&lt;/P&gt;&lt;P&gt;            err_btcjob_open_failed   = 9&lt;/P&gt;&lt;P&gt;            err_btcjob_submit_failed = 10&lt;/P&gt;&lt;P&gt;            err_btcjob_close_failed  = 11&lt;/P&gt;&lt;P&gt;            OTHERS                   = 12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Transfer the 132-long strings to 255-long strings&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT it_pdf_output.&lt;/P&gt;&lt;P&gt;    TRANSLATE it_pdf_output USING ' ~'.&lt;/P&gt;&lt;P&gt;    CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRANSLATE gd_buffer USING '~ '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO.&lt;/P&gt;&lt;P&gt;    it_mess_att = gd_buffer.&lt;/P&gt;&lt;P&gt;    APPEND it_mess_att.&lt;/P&gt;&lt;P&gt;    SHIFT gd_buffer LEFT BY 255 PLACES.&lt;/P&gt;&lt;P&gt;    IF gd_buffer IS INITIAL.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDDO.&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 process_email                                            *&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 process_email.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE it_mess_att LINES gd_recsize.&lt;/P&gt;&lt;P&gt;  CHECK gd_recsize &amp;gt; 0.&lt;/P&gt;&lt;P&gt;  PERFORM send_email USING p_email1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform send_email using p_email2.&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 send_email                                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p_email                                                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM send_email USING p_email.&lt;/P&gt;&lt;P&gt;  CHECK NOT ( p_email IS INITIAL ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH it_mess_bod.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Default subject matter&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  gd_subject         = 'Subject'.&lt;/P&gt;&lt;P&gt;  gd_attachment_desc = 'Attachname'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  it_mess_bod        = 'Message Body text, line 1'.&lt;/P&gt;&lt;P&gt;  APPEND it_mess_bod.&lt;/P&gt;&lt;P&gt;  it_mess_bod        = 'Message Body text, line 2...'.&lt;/P&gt;&lt;P&gt;  APPEND it_mess_bod.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If no sender specified - default blank&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF p_sender EQ space.&lt;/P&gt;&lt;P&gt;    gd_sender_type  = space.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    gd_sender_type  = 'INT'.&lt;/P&gt;&lt;P&gt;  ENDIF.&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;Send file by email as .xls speadsheet&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM send_file_as_email_attachment&lt;/P&gt;&lt;P&gt;                               tables it_mess_bod&lt;/P&gt;&lt;P&gt;                                      it_mess_att&lt;/P&gt;&lt;P&gt;                                using p_email&lt;/P&gt;&lt;P&gt;                                      'Example .xls documnet attachment'&lt;/P&gt;&lt;P&gt;                                      'PDF'&lt;/P&gt;&lt;P&gt;                                      gd_attachment_name&lt;/P&gt;&lt;P&gt;                                      gd_attachment_desc&lt;/P&gt;&lt;P&gt;                                      p_sender&lt;/P&gt;&lt;P&gt;                                      gd_sender_type&lt;/P&gt;&lt;P&gt;                             changing gd_error&lt;/P&gt;&lt;P&gt;                                      gd_reciever.&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 delete_spool                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM delete_spool.&lt;/P&gt;&lt;P&gt;  DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ld_spool_nr = gd_spool_nr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK p_delspl &amp;lt;&amp;gt; c_no.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            spoolid = ld_spool_nr.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SEND_FILE_AS_EMAIL_ATTACHMENT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Send email&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM send_file_as_email_attachment tables it_message&lt;/P&gt;&lt;P&gt;                                          it_attach&lt;/P&gt;&lt;P&gt;                                    using p_email&lt;/P&gt;&lt;P&gt;                                          p_mtitle&lt;/P&gt;&lt;P&gt;                                          p_format&lt;/P&gt;&lt;P&gt;                                          p_filename&lt;/P&gt;&lt;P&gt;                                          p_attdescription&lt;/P&gt;&lt;P&gt;                                          p_sender_address&lt;/P&gt;&lt;P&gt;                                          p_sender_addres_type&lt;/P&gt;&lt;P&gt;                                 changing p_error&lt;/P&gt;&lt;P&gt;                                          p_reciever.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: ld_error    TYPE sy-subrc,&lt;/P&gt;&lt;P&gt;        ld_reciever TYPE sy-subrc,&lt;/P&gt;&lt;P&gt;        ld_mtitle LIKE sodocchgi1-obj_descr,&lt;/P&gt;&lt;P&gt;        ld_email LIKE  somlreci1-receiver,&lt;/P&gt;&lt;P&gt;        ld_format TYPE  so_obj_tp ,&lt;/P&gt;&lt;P&gt;        ld_attdescription TYPE  so_obj_nam ,&lt;/P&gt;&lt;P&gt;        ld_attfilename TYPE  so_obj_des ,&lt;/P&gt;&lt;P&gt;        ld_sender_address LIKE  soextreci1-receiver,&lt;/P&gt;&lt;P&gt;        ld_sender_address_type LIKE  soextreci1-adr_typ,&lt;/P&gt;&lt;P&gt;        ld_receiver LIKE  sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:   t_packing_list like sopcklsti1 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;        t_contents like solisti1 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;        t_receivers like somlreci1 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;        t_attachment like solisti1 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;        t_object_header like solisti1 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;        w_cnt type i,&lt;/P&gt;&lt;P&gt;        w_sent_all(1) type c,&lt;/P&gt;&lt;P&gt;        w_doc_data like sodocchgi1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ld_email   = p_email.&lt;/P&gt;&lt;P&gt;  ld_mtitle = p_mtitle.&lt;/P&gt;&lt;P&gt;  ld_format              = p_format.&lt;/P&gt;&lt;P&gt;  ld_attdescription      = p_attdescription.&lt;/P&gt;&lt;P&gt;  ld_attfilename         = p_filename.&lt;/P&gt;&lt;P&gt;  ld_sender_address      = p_sender_address.&lt;/P&gt;&lt;P&gt;  ld_sender_address_type = p_sender_addres_type.&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;Fill the document data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  w_doc_data-doc_size = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Populate the subject/generic message attributes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  w_doc_data-obj_langu = sy-langu.&lt;/P&gt;&lt;P&gt;  w_doc_data-obj_name  = 'SAPRPT'.&lt;/P&gt;&lt;P&gt;  w_doc_data-obj_descr = ld_mtitle .&lt;/P&gt;&lt;P&gt;  w_doc_data-sensitivty = 'F'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fill the document data and get size of attachment&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR w_doc_data.&lt;/P&gt;&lt;P&gt;  READ TABLE it_attach INDEX w_cnt.&lt;/P&gt;&lt;P&gt;  w_doc_data-doc_size =&lt;/P&gt;&lt;P&gt;     ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).&lt;/P&gt;&lt;P&gt;  w_doc_data-obj_langu  = sy-langu.&lt;/P&gt;&lt;P&gt;  w_doc_data-obj_name   = 'SAPRPT'.&lt;/P&gt;&lt;P&gt;  w_doc_data-obj_descr  = ld_mtitle.&lt;/P&gt;&lt;P&gt;  w_doc_data-sensitivty = 'F'.&lt;/P&gt;&lt;P&gt;  CLEAR t_attachment.&lt;/P&gt;&lt;P&gt;  REFRESH t_attachment.&lt;/P&gt;&lt;P&gt;  t_attachment[] = it_attach[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Describe the body of the message&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR t_packing_list.&lt;/P&gt;&lt;P&gt;  REFRESH t_packing_list.&lt;/P&gt;&lt;P&gt;  t_packing_list-transf_bin = space.&lt;/P&gt;&lt;P&gt;  t_packing_list-head_start = 1.&lt;/P&gt;&lt;P&gt;  t_packing_list-head_num = 0.&lt;/P&gt;&lt;P&gt;  t_packing_list-body_start = 1.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE it_message LINES t_packing_list-body_num.&lt;/P&gt;&lt;P&gt;  t_packing_list-doc_type = 'RAW'.&lt;/P&gt;&lt;P&gt;  APPEND t_packing_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create attachment notification&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  t_packing_list-transf_bin = 'X'.&lt;/P&gt;&lt;P&gt;  t_packing_list-head_start = 1.&lt;/P&gt;&lt;P&gt;  t_packing_list-head_num   = 1.&lt;/P&gt;&lt;P&gt;  t_packing_list-body_start = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.&lt;/P&gt;&lt;P&gt;  t_packing_list-doc_type   =  ld_format.&lt;/P&gt;&lt;P&gt;  t_packing_list-obj_descr  =  ld_attdescription.&lt;/P&gt;&lt;P&gt;  t_packing_list-obj_name   =  ld_attfilename.&lt;/P&gt;&lt;P&gt;  t_packing_list-doc_size   =  t_packing_list-body_num * 255.&lt;/P&gt;&lt;P&gt;  APPEND t_packing_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add the recipients email address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR t_receivers.&lt;/P&gt;&lt;P&gt;  REFRESH t_receivers.&lt;/P&gt;&lt;P&gt;  t_receivers-receiver = ld_email.&lt;/P&gt;&lt;P&gt;  t_receivers-rec_type = 'U'.&lt;/P&gt;&lt;P&gt;  t_receivers-com_type = 'INT'.&lt;/P&gt;&lt;P&gt;  t_receivers-notif_del = 'X'.&lt;/P&gt;&lt;P&gt;  t_receivers-notif_ndel = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND t_receivers.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            document_data              = w_doc_data&lt;/P&gt;&lt;P&gt;            put_in_outbox              = 'X'&lt;/P&gt;&lt;P&gt;            sender_address             = ld_sender_address&lt;/P&gt;&lt;P&gt;            sender_address_type        = ld_sender_address_type&lt;/P&gt;&lt;P&gt;            commit_work                = 'X'&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            sent_to_all                = w_sent_all&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            packing_list               = t_packing_list&lt;/P&gt;&lt;P&gt;            contents_bin               = t_attachment&lt;/P&gt;&lt;P&gt;            contents_txt               = it_message&lt;/P&gt;&lt;P&gt;            receivers                  = t_receivers&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            too_many_receivers         = 1&lt;/P&gt;&lt;P&gt;            document_not_sent          = 2&lt;/P&gt;&lt;P&gt;            document_type_not_exist    = 3&lt;/P&gt;&lt;P&gt;            operation_no_authorization = 4&lt;/P&gt;&lt;P&gt;            parameter_error            = 5&lt;/P&gt;&lt;P&gt;            x_error                    = 6&lt;/P&gt;&lt;P&gt;            enqueue_error              = 7&lt;/P&gt;&lt;P&gt;            OTHERS                     = 8.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Populate zerror return code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ld_error = sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Populate zreceiver return code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT t_receivers.&lt;/P&gt;&lt;P&gt;    ld_receiver = t_receivers-retrn_code.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&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;Awaiting for your reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Pavan.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Mar 2006 12:56:25 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250133#M144709</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-03T12:56:25Z</dc:date>
    </item>
    <item>
      <title>Re: program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250134#M144710</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi pavan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think , you have pass filename to t_object_header .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;here is the sample code for Email.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: SLIS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                          INTERNAL TABLES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Customer data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF TB_BSID OCCURS 0,&lt;/P&gt;&lt;P&gt;        BUKRS   LIKE BSID-BUKRS,    " Company code&lt;/P&gt;&lt;P&gt;        KUNNR   LIKE BSID-KUNNR,    " Customer number&lt;/P&gt;&lt;P&gt;        AUGDT   LIKE BSID-AUGDT,    " Clearing Date&lt;/P&gt;&lt;P&gt;        BLDAT   LIKE BSID-BLDAT,    " Doc date in document&lt;/P&gt;&lt;P&gt;        SHKZG   LIKE BSID-SHKZG,    " Debit/credit indicator&lt;/P&gt;&lt;P&gt;        DMBTR   LIKE BSID-DMBTR,    " Amount in local currency&lt;/P&gt;&lt;P&gt;        ZFBDT   LIKE BSID-ZFBDT,    " Baseline date for due date calc&lt;/P&gt;&lt;P&gt;        ZBD1T   LIKE BSID-ZBD1T,    " Cash discount days 1&lt;/P&gt;&lt;P&gt;        ZBD2T   LIKE BSID-ZBD2T,    " Cash discount days 2&lt;/P&gt;&lt;P&gt;        ZBD3T   LIKE BSID-ZBD3T,    " Net Payment Terms Period&lt;/P&gt;&lt;P&gt;        REBZG   LIKE BSID-REBZG,    " No Of the Inv the Tran Belongs to&lt;/P&gt;&lt;P&gt;        REBZT   LIKE BSID-REBZT,    " Follow-On Document Type&lt;/P&gt;&lt;P&gt;      END OF TB_BSID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Open Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: TB_BSID_OPEN LIKE TABLE OF TB_BSID WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Cleared Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: TB_BSAD_CLEAR LIKE TABLE OF TB_BSID WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold General Data in Customer Master&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF TB_KNA1 OCCURS 0,&lt;/P&gt;&lt;P&gt;        KUNNR LIKE KNA1-KUNNR,      " Customer Number&lt;/P&gt;&lt;P&gt;        ADRNR LIKE KNA1-ADRNR,      " Address&lt;/P&gt;&lt;P&gt;      END OF TB_KNA1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Customer Master (Company Code)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF TB_KNB1 OCCURS 0,&lt;/P&gt;&lt;P&gt;        KUNNR LIKE KNB1-KUNNR,     " Customer Number&lt;/P&gt;&lt;P&gt;        BUKRS LIKE KNB1-BUKRS,     " Company code&lt;/P&gt;&lt;P&gt;        ERDAT LIKE KNB1-ERDAT,     " Rec Created Date&lt;/P&gt;&lt;P&gt;        ZAMIB LIKE KNB1-ZAMIB,     " DMS Managed Indicator&lt;/P&gt;&lt;P&gt;      END OF TB_KNB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to hold Final Output Data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF TB_FINAL OCCURS 0,&lt;/P&gt;&lt;P&gt;        KUNNR           LIKE KNA1-KUNNR, " Customer Number&lt;/P&gt;&lt;P&gt;        NAME1           LIKE KNA1-NAME1, " Name Line 1&lt;/P&gt;&lt;P&gt;        ADDRESS1(25)    TYPE C,          " Address line 1&lt;/P&gt;&lt;P&gt;        ADDRESS2(25)    TYPE C,          " Address line 2&lt;/P&gt;&lt;P&gt;        ADDRESS3(25)    TYPE C,          " Address line 3&lt;/P&gt;&lt;P&gt;        ADDRESS4(25)    TYPE C,          " Address line 4&lt;/P&gt;&lt;P&gt;        PHONE           LIKE KNA1-TELF1, " Telephone Number&lt;/P&gt;&lt;P&gt;        DAYS_SLOW(6)    TYPE C,          " Days Slow&lt;/P&gt;&lt;P&gt;        LAST_DATE       LIKE BSID-BLDAT, " Date of Last Invoice&lt;/P&gt;&lt;P&gt;        AVG(6)          TYPE C,          " Average Days to Pay&lt;/P&gt;&lt;P&gt;        CURRENT         LIKE RF035-SNFAE," Current&lt;/P&gt;&lt;P&gt;        AVG_1_30        LIKE RF035-SFAE1," 1-30 past due&lt;/P&gt;&lt;P&gt;        AVG_31_60       LIKE RF035-SFAE2," 31-60 past due&lt;/P&gt;&lt;P&gt;        AVG_61_90       LIKE RF035-SFAE3," 61-90 past due&lt;/P&gt;&lt;P&gt;        AVG_90G         LIKE RF035-SFAE4," 90+ past due&lt;/P&gt;&lt;P&gt;      END OF TB_FINAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ALV Internal tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA : TB_FIELDCAT       TYPE SLIS_T_FIELDCAT_ALV.  " Field Catalog&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal tables for the sending mail data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: TB_OBJPACK  TYPE SOPCKLSTI1 OCCURS 2  WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_OBJHEAD  TYPE SOLISTI1   OCCURS 1  WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_OBJTXT   TYPE SOLISTI1   OCCURS 10 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_RECLIST  TYPE SOMLRECI1  OCCURS 5  WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_OBJBIN   LIKE SOLISTI1   OCCURS 0  WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      TB_DOC_CHNG TYPE SODOCCHGI1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Internal table to get mail Receivers Address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: TB_ZRECEIVE LIKE YSMTP_ADDRESS OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           STRUCTURES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: X_SADR            TYPE SADR,                 " For Address&lt;/P&gt;&lt;P&gt;      X_FIELDCAT        TYPE SLIS_FIELDCAT_ALV,    " For Field Catalog&lt;/P&gt;&lt;P&gt;      X_LAYOUT          TYPE SLIS_LAYOUT_ALV,      " For Layout&lt;/P&gt;&lt;P&gt;      X_ADDR1_SEL       LIKE ADDR1_SEL,            " For Address&lt;/P&gt;&lt;P&gt;      WA_FAEDE          TYPE FAEDE.                " For FAEDE struct&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;                           VARIABLES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: G_REPID         LIKE SY-REPID,             " Prog ID&lt;/P&gt;&lt;P&gt;      G_DAYS_SLOW(4)  TYPE N,                    " Days Slow&lt;/P&gt;&lt;P&gt;      G_OPEN          TYPE I,                    " Counter&lt;/P&gt;&lt;P&gt;      G_AVG(4)        TYPE N,                    " Avg Days&lt;/P&gt;&lt;P&gt;      G_COUNT(10)     TYPE N,                    " Counter&lt;/P&gt;&lt;P&gt;      G_TEXT          TYPE SOLISTI1-LINE,        " Description&lt;/P&gt;&lt;P&gt;      G_TAB_LINES     TYPE SY-TABIX,             " Internal data count&lt;/P&gt;&lt;P&gt;      G_REC_COUNT(10) TYPE N,                    " Total records&lt;/P&gt;&lt;P&gt;      G_CURR_BAL(10)  TYPE N,                    " Account balance&lt;/P&gt;&lt;P&gt;      G_FILE_NAME     LIKE EDI_PATH-PTHNAM,      " Output File Name&lt;/P&gt;&lt;P&gt;      G_BUKRS         LIKE BSID-BUKRS,           " Company Code&lt;/P&gt;&lt;P&gt;      G_BLDAT         LIKE BSID-BLDAT,           " Doc Date&lt;/P&gt;&lt;P&gt;      G_FLAG          TYPE C,                    " Flag to Exit&lt;/P&gt;&lt;P&gt;      G_KUNNR         LIKE BSID-KUNNR,           " Cust No&lt;/P&gt;&lt;P&gt;      G_ZUONR         LIKE BSID-ZUONR.           " Assignment&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;                           CONSTANTS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS: C_D            TYPE C VALUE 'D',     " Account type&lt;/P&gt;&lt;P&gt;           C_X(1)                VALUE 'X',     " Default value 'X'&lt;/P&gt;&lt;P&gt;           C_1(2)         TYPE C VALUE '01',    " Posting key const&lt;/P&gt;&lt;P&gt;           C_DELIMETER TYPE X  VALUE '09', " ASCII CODE LINE begin&lt;/P&gt;&lt;P&gt;           C_INTERFACE    TYPE YWFSALOFFICNOTIF-INTERFACE_ID VALUE 'AP',&lt;/P&gt;&lt;P&gt;           C_Z001 TYPE RF035-RASID VALUE 'Z001'." Net 30/60/90/120/150&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           SELECTION SCREEN.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection Screen for Selection Criteria.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-T01.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS:  S_BUKRS FOR  G_BUKRS  OBLIGATORY,    " Company Code&lt;/P&gt;&lt;P&gt;                 S_BLDAT FOR  G_BLDAT  OBLIGATORY,    " Doc Date&lt;/P&gt;&lt;P&gt;                 S_KUNNR FOR  G_KUNNR,                " Cust No&lt;/P&gt;&lt;P&gt;                 S_ZUONR FOR  G_ZUONR.                " Assignment&lt;/P&gt;&lt;P&gt;PARAMETERS:      P_GRACE(2)   TYPE N OBLIGATORY,      " Grace Days&lt;/P&gt;&lt;P&gt;                 P_ZAMIB LIKE KNB1-ZAMIB AS CHECKBOX. " DMS Indicator&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection Screen for Output Options.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-T02.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN POSITION 01.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_REPORT RADIOBUTTON GROUP R1.             " Report Only&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 5(25) TEXT-016.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN POSITION 01.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_DOWN RADIOBUTTON GROUP R1.               " Dwnld to Unix&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 5(25) TEXT-017.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN POSITION 30.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_FILE LIKE FILENAME-FILEINTERN DEFAULT&lt;/P&gt;&lt;P&gt;                   'Z21614_DB_CREDIT_AGENCY'. " File Name&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection Screen for E-mail.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-T03.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN POSITION 01.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_EMAIL AS CHECKBOX.                        " E-mail&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 5(25) TEXT-018.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           INITIALIZATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;  G_REPID = SY-REPID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               AT SELECTION SCREEN.                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Validation of selection screen entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform validate_data.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If both display report and send email is checked&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF P_REPORT = C_X AND P_EMAIL  = C_X.&lt;/P&gt;&lt;P&gt;    MESSAGE E999 WITH&lt;/P&gt;&lt;P&gt;      'Select One Among Report Only &amp;amp; Send E-mail'(023).&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                           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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Preparing file for download to Unix&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM GET_FILE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If File Error, then err out and exit the program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if g_flag = 'X'.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select Data from Customer Master (Company Code)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM SELECT_KNB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select Custmer Open Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM SELECT_CUSTOMER_OPEN_ITEMS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select Custmer Cleared Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM SELECT_CUSTOMER_CLEARED_ITEMS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select General Data in Customer Master&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM SELECT_KNA1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Populate Final Output Data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM POPULATE_TB_FINAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                   End of selection                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If there are no records in TB_FINAL internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF TB_FINAL[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH&lt;/P&gt;&lt;P&gt;      'No Records Found For Selection Criteria'(024).&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;When Radiobutton for Email or if the program is run background&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF ( P_EMAIL = C_X OR SY-BATCH = C_X ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To send the mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      PERFORM SEND_MAIL USING C_INTERFACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF P_REPORT = C_X .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To display the Final Output data using ALV's&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      PERFORM DISPLAY_ALV_REPORT.&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;Transfering data to file when downloading to Unix&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF P_DOWN = C_X.&lt;/P&gt;&lt;P&gt;      IF NOT G_FILE_NAME IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Trasefering data to file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        PERFORM TRANSFER_DATA_FILE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Interface Audit report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        PERFORM WRITE_REPORT.&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;&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;                          F O R M S&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  VALIDATE_DATA&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Validating selection-screen entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM VALIDATE_DATA.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Validate the Company code.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR G_BUKRS.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE BUKRS&lt;/P&gt;&lt;P&gt;    INTO G_BUKRS&lt;/P&gt;&lt;P&gt;    FROM T001&lt;/P&gt;&lt;P&gt;   WHERE BUKRS IN S_BUKRS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE E999 WITH 'Enter valid Company Code'(025).&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;Validate the Customer number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR G_KUNNR.&lt;/P&gt;&lt;P&gt;  IF NOT S_KUNNR[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE KUNNR&lt;/P&gt;&lt;P&gt;      INTO G_KUNNR&lt;/P&gt;&lt;P&gt;      FROM KNA1&lt;/P&gt;&lt;P&gt;     WHERE KUNNR IN S_KUNNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      MESSAGE E999 WITH 'Enter valid Customer Number'(026).&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " VALIDATE_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_FILE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Preparing file to download to Unix&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_FILE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  If file path is empty an error is given at the selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF P_DOWN = 'X' AND P_FILE = ''.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH&lt;/P&gt;&lt;P&gt;           'Enter The File Path To Download the Data'(027).&lt;/P&gt;&lt;P&gt;    g_flag = 'X'.&lt;/P&gt;&lt;P&gt;    EXIT.&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;  Assign the Physical File Name Using a Logical File Name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF P_DOWN = 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM POPULATE_FILE_PATH_SERVER.&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;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  POPULATE_FILE_PATH_SERVER&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Assign the Physical File Name Using a Logical File Name&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;FORM POPULATE_FILE_PATH_SERVER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'FILE_GET_NAME'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            LOGICAL_FILENAME = P_FILE&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            FILE_NAME        = G_FILE_NAME&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            FILE_NOT_FOUND   = 1&lt;/P&gt;&lt;P&gt;            OTHERS           = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'File not found for the logical path'(028).&lt;/P&gt;&lt;P&gt;    g_flag = 'X'.&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;ENDFORM.                    " POPULATE_FILE_PATH_SERVER&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SELECT_KNB1&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select Data from Customer Master (Company Code)&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 SELECT_KNB1 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_KNB1,&lt;/P&gt;&lt;P&gt;         TB_KNB1[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT KUNNR&lt;/P&gt;&lt;P&gt;         BUKRS&lt;/P&gt;&lt;P&gt;         ERDAT&lt;/P&gt;&lt;P&gt;         ZAMIB&lt;/P&gt;&lt;P&gt;         FROM KNB1&lt;/P&gt;&lt;P&gt;         INTO TABLE TB_KNB1&lt;/P&gt;&lt;P&gt;         WHERE BUKRS IN S_BUKRS&lt;/P&gt;&lt;P&gt;           AND KUNNR IN S_KUNNR.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Sort TB_KNB1 by Customer no &amp;amp; Rec Created Date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SORT TB_KNB1 BY KUNNR ERDAT DESCENDING.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECT_KNB1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SELECT_CUSTOMER_OPEN_ITEMS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select Custmer Open Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM SELECT_CUSTOMER_OPEN_ITEMS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_BSID,&lt;/P&gt;&lt;P&gt;         TB_BSID[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT  A~BUKRS&lt;/P&gt;&lt;P&gt;          B~KUNNR&lt;/P&gt;&lt;P&gt;          B~AUGDT&lt;/P&gt;&lt;P&gt;          B~BLDAT&lt;/P&gt;&lt;P&gt;          B~SHKZG&lt;/P&gt;&lt;P&gt;          B~DMBTR&lt;/P&gt;&lt;P&gt;          B~ZFBDT&lt;/P&gt;&lt;P&gt;          B~ZBD1T&lt;/P&gt;&lt;P&gt;          B~ZBD2T&lt;/P&gt;&lt;P&gt;          B~ZBD3T&lt;/P&gt;&lt;P&gt;          B~REBZG&lt;/P&gt;&lt;P&gt;          B~REBZT&lt;/P&gt;&lt;P&gt;     INTO TABLE TB_BSID&lt;/P&gt;&lt;P&gt;     FROM BKPF AS A JOIN BSID AS B&lt;/P&gt;&lt;P&gt;       ON A&lt;SUB&gt;BUKRS = B&lt;/SUB&gt;BUKRS&lt;/P&gt;&lt;P&gt;      AND A&lt;SUB&gt;BELNR = B&lt;/SUB&gt;BELNR&lt;/P&gt;&lt;P&gt;      AND A&lt;SUB&gt;GJAHR = B&lt;/SUB&gt;GJAHR&lt;/P&gt;&lt;P&gt;    WHERE A~BUKRS IN S_BUKRS&lt;/P&gt;&lt;P&gt;      AND A~BLDAT IN S_BLDAT&lt;/P&gt;&lt;P&gt;      AND B~KUNNR IN S_KUNNR&lt;/P&gt;&lt;P&gt;      AND B~ZUONR IN S_ZUONR&lt;/P&gt;&lt;P&gt;      AND B~BSCHL = C_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DMS Managed Indicator  = &amp;#145;X&amp;#146;.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF P_ZAMIB = C_X.&lt;/P&gt;&lt;P&gt;      LOOP AT TB_KNB1 WHERE ZAMIB = SPACE.&lt;/P&gt;&lt;P&gt;        DELETE TB_BSID WHERE BUKRS = TB_KNB1-BUKRS&lt;/P&gt;&lt;P&gt;                         AND KUNNR = TB_KNB1-KUNNR.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Transfering Open Items from TB_BSID to TB_BSID_OPEN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_BSID_OPEN[] = TB_BSID[].&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECT_CUSTOMER_OPEN_ITEMS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SELECT_CUSTOMER_CLEARED_ITEMS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select Custmer Cleared Items.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM SELECT_CUSTOMER_CLEARED_ITEMS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_BSAD_CLEAR,&lt;/P&gt;&lt;P&gt;         TB_BSAD_CLEAR[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT   A~BUKRS&lt;/P&gt;&lt;P&gt;           B~KUNNR&lt;/P&gt;&lt;P&gt;           B~AUGDT&lt;/P&gt;&lt;P&gt;           B~BLDAT&lt;/P&gt;&lt;P&gt;           B~SHKZG&lt;/P&gt;&lt;P&gt;           B~DMBTR&lt;/P&gt;&lt;P&gt;           B~ZFBDT&lt;/P&gt;&lt;P&gt;           B~ZBD1T&lt;/P&gt;&lt;P&gt;           B~ZBD2T&lt;/P&gt;&lt;P&gt;           B~ZBD3T&lt;/P&gt;&lt;P&gt;           B~REBZG&lt;/P&gt;&lt;P&gt;           B~REBZT&lt;/P&gt;&lt;P&gt;      INTO TABLE TB_BSAD_CLEAR&lt;/P&gt;&lt;P&gt;      FROM BKPF AS A JOIN BSAD AS B&lt;/P&gt;&lt;P&gt;        ON A&lt;SUB&gt;BUKRS = B&lt;/SUB&gt;BUKRS&lt;/P&gt;&lt;P&gt;      AND  A&lt;SUB&gt;BELNR = B&lt;/SUB&gt;BELNR&lt;/P&gt;&lt;P&gt;      AND  A&lt;SUB&gt;GJAHR = B&lt;/SUB&gt;GJAHR&lt;/P&gt;&lt;P&gt;     WHERE A~BUKRS IN S_BUKRS&lt;/P&gt;&lt;P&gt;       AND A~BLDAT IN S_BLDAT&lt;/P&gt;&lt;P&gt;       AND B~KUNNR IN S_KUNNR&lt;/P&gt;&lt;P&gt;       AND B~ZUONR IN S_ZUONR&lt;/P&gt;&lt;P&gt;       AND B~BSCHL = C_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DMS Managed Indicator = &amp;#145;X&amp;#146;.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF P_ZAMIB = C_X.&lt;/P&gt;&lt;P&gt;      LOOP AT TB_KNB1 WHERE ZAMIB = SPACE.&lt;/P&gt;&lt;P&gt;        DELETE TB_BSID WHERE BUKRS = TB_KNB1-BUKRS&lt;/P&gt;&lt;P&gt;                         AND KUNNR = TB_KNB1-KUNNR.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&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;  Sort TB_BSID_CLEAR by Customer number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SORT TB_BSAD_CLEAR BY KUNNR.&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;Append lines of TB_BSID_CLEAR to table TB_BSID&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  APPEND LINES OF TB_BSAD_CLEAR TO TB_BSID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sort TB_BSID by Cust num AND Doc date in document&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SORT TB_BSID BY KUNNR BLDAT DESCENDING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECT_CUSTOMER_CLEARED_ITEMS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SELECT_KNA1&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select General Data in Customer Master&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 SELECT_KNA1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_KNA1,&lt;/P&gt;&lt;P&gt;         TB_KNA1[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT TB_BSID[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    select kunnr&lt;/P&gt;&lt;P&gt;           adrnr&lt;/P&gt;&lt;P&gt;           from kna1&lt;/P&gt;&lt;P&gt;           into table tb_kna1&lt;/P&gt;&lt;P&gt;           FOR ALL ENTRIES IN TB_BSID&lt;/P&gt;&lt;P&gt;           where KUNNR = TB_BSID-KUNNR AND&lt;/P&gt;&lt;P&gt;                 kunnr in s_kunnr.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECT_KNA1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  POPULATE_TB_FINAL&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Populate Final Output 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 POPULATE_TB_FINAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local variable&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: L_DAYS_SLOW(4)   TYPE N,                  " Days Slow&lt;/P&gt;&lt;P&gt;        L_DAYS_SLOW_TEMP TYPE P DECIMALS 3.       " Days Slow&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: TB_FINAL,&lt;/P&gt;&lt;P&gt;         TB_FINAL[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT TB_KNA1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TB_FINAL-KUNNR = TB_KNA1-KUNNR.  " Customer Number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get Customer Address.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM GET_CUSTOMER_ADDRESS.&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;  To get Date of Last Invoice.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR TB_BSID.&lt;/P&gt;&lt;P&gt;    READ TABLE TB_BSID WITH KEY KUNNR = TB_KNA1-KUNNR.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      TB_FINAL-LAST_DATE = TB_BSID-BLDAT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get past due and current details.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM GET_PAST_DUE_CURRENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get Days Slow.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR WA_FAEDE .&lt;/P&gt;&lt;P&gt;    LOOP AT TB_BSID_OPEN WHERE KUNNR = TB_KNA1-KUNNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      WA_FAEDE-SHKZG = TB_BSID-SHKZG.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-ZFBDT = TB_BSID-ZFBDT.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-ZBD1T = TB_BSID-ZBD1T.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-ZBD2T = TB_BSID-ZBD2T.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-ZBD3T = TB_BSID-ZBD3T.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-REBZG = TB_BSID-REBZG.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-REBZT = TB_BSID-REBZT.&lt;/P&gt;&lt;P&gt;      WA_FAEDE-KOART = C_D.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    To Determine Due Date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'DETERMINE_DUE_DATE'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                I_FAEDE                    = WA_FAEDE&lt;/P&gt;&lt;P&gt;           IMPORTING&lt;/P&gt;&lt;P&gt;                E_FAEDE                    = WA_FAEDE&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                ACCOUNT_TYPE_NOT_SUPPORTED = 1&lt;/P&gt;&lt;P&gt;                OTHERS                     = 2.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        CLEAR WA_FAEDE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR: L_DAYS_SLOW.&lt;/P&gt;&lt;P&gt;      L_DAYS_SLOW = SY-DATUM - WA_FAEDE-NETDT - P_GRACE.&lt;/P&gt;&lt;P&gt;      G_DAYS_SLOW = G_DAYS_SLOW + ABS( L_DAYS_SLOW ).&lt;/P&gt;&lt;P&gt;      G_OPEN      = G_OPEN + 1.&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;    CLEAR L_DAYS_SLOW_TEMP.&lt;/P&gt;&lt;P&gt;    IF NOT G_OPEN IS INITIAL.&lt;/P&gt;&lt;P&gt;      L_DAYS_SLOW_TEMP   = G_DAYS_SLOW / G_OPEN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Days Slow.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-DAYS_SLOW = L_DAYS_SLOW_TEMP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get Average days to Pay.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM GET_AVG_DAYS_PAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT P_REPORT = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Calculating total records .&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      G_REC_COUNT = G_REC_COUNT + 1.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND TB_FINAL.&lt;/P&gt;&lt;P&gt;    CLEAR  TB_FINAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " POPULATE_TB_FINAL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_PAST_DUE_CURRENT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To get past due and current details.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_PAST_DUE_CURRENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Local Varaibles.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: L_RF035_SFAE1 TYPE RF035-SFAE1, " Total of Due Items&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE2 TYPE RF035-SFAE2, " Total of Due Items (Interval 2)&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE3 TYPE RF035-SFAE3, " Total of Due Items (Interval 3)&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE4 TYPE RF035-SFAE4, " Total of Due Items (Interval 4)&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE5 TYPE RF035-SFAE5, " Total of Due Items (Interval 5)&lt;/P&gt;&lt;P&gt;       L_RF035_SFAE6 TYPE RF035-SFAE6, " Total of Due Items (Interval 6)&lt;/P&gt;&lt;P&gt;        L_RF035_SNFAE TYPE RF035-SNFAE. " Total of Items not Due&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear G_CURR_BAL.&lt;/P&gt;&lt;P&gt;  LOOP AT TB_KNB1 WHERE KUNNR = TB_KNA1-KUNNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear : L_RF035_SFAE1, L_RF035_SFAE2, L_RF035_SFAE3, L_RF035_SFAE4,&lt;/P&gt;&lt;P&gt;            L_RF035_SFAE5, L_RF035_SFAE6, L_RF035_SNFAE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  For Customer Due Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'CUSTOMER_DUE_DATE_ANALYSIS'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              BUKRS          = TB_KNB1-BUKRS&lt;/P&gt;&lt;P&gt;              KKBER          = ' '&lt;/P&gt;&lt;P&gt;              KUNNR          = TB_KNB1-KUNNR&lt;/P&gt;&lt;P&gt;              RASID          = C_Z001&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;              SFAE1          = L_RF035_SFAE1&lt;/P&gt;&lt;P&gt;              SFAE2          = L_RF035_SFAE2&lt;/P&gt;&lt;P&gt;              SFAE3          = L_RF035_SFAE3&lt;/P&gt;&lt;P&gt;              SFAE4          = L_RF035_SFAE4&lt;/P&gt;&lt;P&gt;              SFAE5          = L_RF035_SFAE5&lt;/P&gt;&lt;P&gt;              SFAE6          = L_RF035_SFAE6&lt;/P&gt;&lt;P&gt;              SNFAE          = L_RF035_SNFAE&lt;/P&gt;&lt;P&gt;         EXCEPTIONS&lt;/P&gt;&lt;P&gt;              INVALID_RASTER = 1&lt;/P&gt;&lt;P&gt;              NO_OPEN_ITEMS  = 2&lt;/P&gt;&lt;P&gt;              OTHERS         = 3.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    1 &amp;#150; 30 past Due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-AVG_1_30  = TB_FINAL-AVG_1_30  + L_RF035_SFAE1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    31 &amp;#150; 60 past Due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-AVG_31_60 = TB_FINAL-AVG_31_60 + L_RF035_SFAE2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    61 &amp;#150; 90 past Due.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-AVG_61_90 = TB_FINAL-AVG_61_90 + L_RF035_SFAE3.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    90 + past Due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-AVG_90G   = TB_FINAL-AVG_90G   + L_RF035_SFAE4&lt;/P&gt;&lt;P&gt;                                              + L_RF035_SFAE5&lt;/P&gt;&lt;P&gt;                                              + L_RF035_SFAE6.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Current.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TB_FINAL-CURRENT  = TB_FINAL-CURRENT    + L_RF035_SNFAE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF NOT P_REPORT = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Current account balance.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        G_CURR_BAL   = G_CURR_BAL + TB_FINAL-CURRENT   +&lt;/P&gt;&lt;P&gt;                                    TB_FINAL-AVG_1_30  +&lt;/P&gt;&lt;P&gt;                                    TB_FINAL-AVG_31_60 +&lt;/P&gt;&lt;P&gt;                                    TB_FINAL-AVG_61_90 +&lt;/P&gt;&lt;P&gt;                                    TB_FINAL-AVG_90G   .&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      CLEAR: L_RF035_SFAE1,L_RF035_SFAE2,L_RF035_SFAE3,&lt;/P&gt;&lt;P&gt;             L_RF035_SFAE4,L_RF035_SFAE5,L_RF035_SFAE6,&lt;/P&gt;&lt;P&gt;             L_RF035_SNFAE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " GET_PAST_DUE_CURRENT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_CUSTOMER_ADDRESS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To get Customer Address.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_CUSTOMER_ADDRESS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: X_ADDR1_SEL,&lt;/P&gt;&lt;P&gt;         X_SADR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Populate Address to ADDRESS_SELECTION-ADDRNUMBER field&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  X_ADDR1_SEL-ADDRNUMBER = TB_KNA1-ADRNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The function module reads all records for the addresses specified&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;in the structure ADDRESS_SELECTION and puts them in the return&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;structures *ADDRESS_VALUE and SADR.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'ADDR_GET'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            ADDRESS_SELECTION = X_ADDR1_SEL&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            SADR              = X_SADR&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            PARAMETER_ERROR   = 1&lt;/P&gt;&lt;P&gt;            ADDRESS_NOT_EXIST = 2&lt;/P&gt;&lt;P&gt;            VERSION_NOT_EXIST = 3&lt;/P&gt;&lt;P&gt;            INTERNAL_ERROR    = 4&lt;/P&gt;&lt;P&gt;            OTHERS            = 5.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Name Line 1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_FINAL-NAME1 = X_SADR-NAME1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Telephone Number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_FINAL-PHONE = X_SADR-TELF1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ADDRESS LINE 1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_FINAL-ADDRESS1 = X_SADR-STRAS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ADDRESS LINE 2.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CONCATENATE X_SADR-PFACH 'CODE' X_SADR-PSTL2 INTO TB_FINAL-ADDRESS2&lt;/P&gt;&lt;P&gt;                                                    SEPARATED BY SPACE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ADDRESS LINE 3.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   CONCATENATE  X_SADR-ORT01 X_SADR-ORT02 ',' X_SADR-REGIO X_SADR-PSTLZ&lt;/P&gt;&lt;P&gt;                              INTO TB_FINAL-ADDRESS3 SEPARATED BY SPACE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ADDRESS LINE 4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TB_FINAL-ADDRESS4 = X_SADR-LAND1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CLEAR: X_ADDR1_SEL,&lt;/P&gt;&lt;P&gt;           X_SADR.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " GET_CUSTOMER_ADDRESS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_AVG_DAYS_PAY&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To get Average days to Pay.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_AVG_DAYS_PAY.&lt;/P&gt;&lt;P&gt;*Local variable&lt;/P&gt;&lt;P&gt;  DATA: L_DAYS(4) TYPE N,                       " Number of Days&lt;/P&gt;&lt;P&gt;        L_TEMP TYPE P DECIMALS 3.               " Average&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT TB_BSAD_CLEAR WHERE KUNNR = TB_KNA1-KUNNR.&lt;/P&gt;&lt;P&gt;    L_DAYS  = TB_BSAD_CLEAR-AUGDT - TB_BSAD_CLEAR-BLDAT.&lt;/P&gt;&lt;P&gt;    G_AVG   = G_AVG + L_DAYS.&lt;/P&gt;&lt;P&gt;    G_COUNT = G_COUNT + 1.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT G_COUNT IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Average days to Pay.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    L_TEMP = G_AVG / G_COUNT.&lt;/P&gt;&lt;P&gt;    TB_FINAL-AVG = L_TEMP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " GET_AVG_DAYS_PAY&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  DISPLAY_ALV_REPORT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To display the Final Output data using ALV's&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM DISPLAY_ALV_REPORT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For Populating Field Catalog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM RPT_BUILD_FIELDCATLOG.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If the Field catlog failed, then err out and exit the program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if g_flag = 'X'.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For Modifying Field Catalog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM RPT_MODIFY_FIELDCATLOG.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For Displaying Output in Grid Format.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM RPT_GRID_DISPLAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " DISPLAY_ALV_REPORT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  RPT_BUILD_FIELDCATLOG&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      For Populating Field Catalog.&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 RPT_BUILD_FIELDCATLOG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local Variable.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA : L_TABNAME TYPE SLIS_TABNAME.  " Table Name&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  L_TABNAME = 'TB_FINAL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR:TB_FIELDCAT,&lt;/P&gt;&lt;P&gt;        TB_FIELDCAT[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            I_PROGRAM_NAME         = G_REPID&lt;/P&gt;&lt;P&gt;            I_INTERNAL_TABNAME     = L_TABNAME&lt;/P&gt;&lt;P&gt;            I_INCLNAME             = G_REPID&lt;/P&gt;&lt;P&gt;       CHANGING&lt;/P&gt;&lt;P&gt;            CT_FIELDCAT            = TB_FIELDCAT&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            INCONSISTENT_INTERFACE = 1&lt;/P&gt;&lt;P&gt;            PROGRAM_ERROR          = 2&lt;/P&gt;&lt;P&gt;            OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'Error in Populating Fieldcatalog'(036).&lt;/P&gt;&lt;P&gt;    g_flag = 'X'.&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;ENDFORM.                    " RPT_BUILD_FIELDCATLOG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  RPT_MODIFY_FIELDCATLOG&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      For Modifying Field Catalog&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 RPT_MODIFY_FIELDCATLOG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Getting the Header Text for the Coloumns&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA : L_TABIX LIKE SY-TABIX,            " Index&lt;/P&gt;&lt;P&gt;         L_DDICTXT TYPE C  VALUE 'L'.      " Flag&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Getting the Header Text for the Coloumns&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT TB_FIELDCAT INTO X_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR L_TABIX.&lt;/P&gt;&lt;P&gt;    L_TABIX = SY-TABIX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CASE X_FIELDCAT-FIELDNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Customer Number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'KUNNR'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Customer Number'(001).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Name Line 1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'NAME1'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Name'(002).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Address line 1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'ADDRESS1'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Address 1'(003).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Address line 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'ADDRESS2'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Address 2'(004).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Address line 3&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'ADDRESS3'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Address 3'(005).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Address line 4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'ADDRESS4'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Address 4'(006).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Telephone Number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'PHONE'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Telephone Number'(007).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Days Slow&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'DAYS_SLOW'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Days Slow'(008).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT      =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Date of Last Invoice&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'LAST_DATE'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Date of Last Invoice'(009).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Average Days to Pay&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Average Days to Pay'(010).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Current&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'CURRENT'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 1'(011).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    1-30 past due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG_1_30'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 2'(012).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    31-60 past due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG_31_60'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 3'(013).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    61-90 past due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG_61_90'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 4'(014).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    90+ past due&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'AVG_90G'.&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-SELTEXT_L = 'Aging Category 5'(015).&lt;/P&gt;&lt;P&gt;        X_FIELDCAT-DDICTXT   =  L_DDICTXT.&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;    MODIFY TB_FIELDCAT FROM X_FIELDCAT INDEX L_TABIX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " RPT_MODIFY_FIELDCATLOG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  RPT_GRID_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      For Displaying Output in Grid Format.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM RPT_GRID_DISPLAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Layout Settings&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR X_LAYOUT.&lt;/P&gt;&lt;P&gt;  X_LAYOUT-ZEBRA = 'X'.&lt;/P&gt;&lt;P&gt;  X_LAYOUT-COLWIDTH_OPTIMIZE = C_X.&lt;/P&gt;&lt;P&gt;  X_LAYOUT-NO_COLHEAD        = SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To Display the Output in ALV Format&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            I_CALLBACK_PROGRAM = G_REPID&lt;/P&gt;&lt;P&gt;            IS_LAYOUT          = X_LAYOUT&lt;/P&gt;&lt;P&gt;            IT_FIELDCAT        = TB_FIELDCAT&lt;/P&gt;&lt;P&gt;            I_GRID_TITLE       = 'D&amp;amp;B Credit Agency Interface'(019)&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            T_OUTTAB           = TB_FINAL&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            PROGRAM_ERROR      = 1&lt;/P&gt;&lt;P&gt;            OTHERS             = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'Error in displaying ALV Grid'(037).&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;ENDFORM.                    " RPT_GRID_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  TRANSFER_DATA_FILE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Download data to Application server&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 TRANSFER_DATA_FILE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Opening file in application server&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  OPEN DATASET G_FILE_NAME FOR OUTPUT IN TEXT MODE.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'Error When Opening File'(034).&lt;/P&gt;&lt;P&gt;    EXIT.&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;Transfer of data to file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT TB_FINAL.&lt;/P&gt;&lt;P&gt;    TRANSFER TB_FINAL TO G_FILE_NAME.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&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;Closing the file in application server&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLOSE DATASET G_FILE_NAME.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE I999 WITH 'No File Found To Close'(035).&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;ENDFORM.                    " TRANSFER_DATA_FILE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  WRITE_REPORT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Display data for summary report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM WRITE_REPORT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Colunm headings for the Report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  WRITE :/01(46) SY-ULINE.&lt;/P&gt;&lt;P&gt;  FORMAT COLOR 1.&lt;/P&gt;&lt;P&gt;  WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; SY-VLINE,&lt;/P&gt;&lt;P&gt;           02(14) 'Record Count'(021),&lt;/P&gt;&lt;P&gt;           16 SY-VLINE,&lt;/P&gt;&lt;P&gt;           19(25) 'Current Account Balance'(022),&lt;/P&gt;&lt;P&gt;           46 SY-VLINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FORMAT COLOR OFF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Displaying the record count and Curr Acc balance&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  FORMAT COLOR 2.&lt;/P&gt;&lt;P&gt;  WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; SY-VLINE,&lt;/P&gt;&lt;P&gt;          02(14) G_REC_COUNT LEFT-JUSTIFIED,&lt;/P&gt;&lt;P&gt;          16     SY-VLINE ,&lt;/P&gt;&lt;P&gt;          19(25) G_CURR_BAL ,&lt;/P&gt;&lt;P&gt;          46     SY-VLINE.&lt;/P&gt;&lt;P&gt;  FORMAT COLOR OFF.&lt;/P&gt;&lt;P&gt;  WRITE :/01(46) SY-ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " WRITE_REPORT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SEND_MAIL&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      To Send Mail to The user Attaching The TXT File&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM SEND_MAIL USING P_SENDER TYPE YWFSALOFFICNOTIF-INTERFACE_ID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Populating data to send mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM POPULATE_EMAIL_REF_DATA USING G_TEXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To populate the data to table tb_objbin&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM POP_DATA_OBJBIN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get the attached file for the mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR G_TAB_LINES.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE TB_OBJBIN LINES G_TAB_LINES.&lt;/P&gt;&lt;P&gt;  TB_OBJHEAD = 'TEST.TXT'.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJHEAD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Creation of the entry for the mail(mail contents)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TB_OBJPACK-TRANSF_BIN = C_X.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-HEAD_START = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-HEAD_NUM   = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-BODY_START = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-BODY_NUM   = G_TAB_LINES.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-DOC_TYPE   = 'TXT'.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-OBJ_NAME   = SY-REPID.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-OBJ_DESCR  = 'Interface Audit Report'(020).&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-DOC_SIZE   = G_TAB_LINES * 255.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJPACK.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Populate the User mail id entered on selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM MAIL_DETAILS TABLES TB_ZRECEIVE USING P_SENDER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SEND_MAIL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  POPULATE_EMAIL_REF_DATA&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Populating data to send mail&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 POPULATE_EMAIL_REF_DATA USING TEXT TYPE SOLISTI1-LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;File&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TB_DOC_CHNG-OBJ_NAME = 'Interface Audit Report'(020).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TB_DOC_CHNG-OBJ_DESCR = 'Interface Audit Report'(020).&lt;/P&gt;&lt;P&gt;  TB_OBJTXT = TEXT.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJTXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE TB_OBJTXT LINES G_TAB_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE TB_OBJTXT INDEX G_TAB_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To determine the document size&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; TB_DOC_CHNG-DOC_SIZE = ( G_TAB_LINES - 1 ) * 255 + STRLEN( TB_OBJTXT )&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;Creation of the entry for the Mail Contents&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR TB_OBJPACK-TRANSF_BIN.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-HEAD_START = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-HEAD_NUM = 0.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-BODY_START = 1.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-BODY_NUM = G_TAB_LINES.&lt;/P&gt;&lt;P&gt;  TB_OBJPACK-DOC_TYPE = 'RAW'.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJPACK.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " POPULATE_EMAIL_REF_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  POP_DATA_OBJBIN&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Send mail Logic&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM POP_DATA_OBJBIN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set space for Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set coloumn heading for the Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_HEADING_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set space for Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;to populate data for the Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_DATA_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set space for Excel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM EXCEL_SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " POP_DATA_OBJBIN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EXCEL_SPACE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Setting The space&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 EXCEL_SPACE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To set the space&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CONCATENATE SPACE C_DELIMETER INTO TB_OBJBIN-LINE.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJBIN.&lt;/P&gt;&lt;P&gt;  CLEAR TB_OBJBIN.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " EXCEL_SPACE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EXCEL_HEADING_1&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Heading For The Mail&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 EXCEL_HEADING_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To get the Column headings for the attached file in the mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CONCATENATE&lt;/P&gt;&lt;P&gt;     TEXT-021                " Record Count&lt;/P&gt;&lt;P&gt;     TEXT-022                " Current Account Balance&lt;/P&gt;&lt;P&gt;     INTO TB_OBJBIN-LINE&lt;/P&gt;&lt;P&gt;     SEPARATED BY C_DELIMETER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE TB_OBJBIN-LINE C_DELIMETER INTO&lt;/P&gt;&lt;P&gt;  TB_OBJBIN-LINE.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJBIN.&lt;/P&gt;&lt;P&gt;  CLEAR TB_OBJBIN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " EXCEL_HEADING_1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  EXCEL_DATA_1&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Data Population To Send Mail&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 EXCEL_DATA_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONDENSE: G_REC_COUNT,G_CURR_BAL.&lt;/P&gt;&lt;P&gt;  CONCATENATE G_REC_COUNT C_DELIMETER  G_CURR_BAL INTO&lt;/P&gt;&lt;P&gt;              TB_OBJBIN-LINE.&lt;/P&gt;&lt;P&gt;  APPEND TB_OBJBIN.&lt;/P&gt;&lt;P&gt;  CLEAR TB_OBJBIN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " EXCEL_DATA_1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  MAIL_DETAILS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                   Mail Receviers&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 MAIL_DETAILS TABLES PI_RECEIVER STRUCTURE YSMTP_ADDRESS&lt;/P&gt;&lt;P&gt;                  USING P_SENDER TYPE YWFSALOFFICNOTIF-INTERFACE_ID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Table declared for the mail receviers&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: TB_ACTOR LIKE SWHACTOR OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sales office&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CONSTANTS : C_VKBUR LIKE YWFSALOFFICNOTIF-VKBUR VALUE '0123'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Area To Get The Receviers Address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: WA_USERS LIKE YWFSALOFFICNOTIF OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To get the user id for the mail recepients&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT  SINGLE *&lt;/P&gt;&lt;P&gt;    INTO  WA_USERS&lt;/P&gt;&lt;P&gt;    FROM  YWFSALOFFICNOTIF&lt;/P&gt;&lt;P&gt;    WHERE INTERFACE_ID  = P_SENDER&lt;/P&gt;&lt;P&gt;    AND   VKBUR         = C_VKBUR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;populating the tb_actor table from wa_users&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    IF NOT WA_USERS-OBJID01 IS INITIAL AND&lt;/P&gt;&lt;P&gt;       NOT WA_USERS-OTYPE01 IS INITIAL.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OTYPE = WA_USERS-OTYPE01.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OBJID = WA_USERS-OBJID01.&lt;/P&gt;&lt;P&gt;      APPEND TB_ACTOR.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT WA_USERS-OBJID02 IS INITIAL AND&lt;/P&gt;&lt;P&gt;       NOT WA_USERS-OTYPE02 IS INITIAL.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OTYPE = WA_USERS-OTYPE02.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OBJID = WA_USERS-OBJID02.&lt;/P&gt;&lt;P&gt;      APPEND TB_ACTOR.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT WA_USERS-OBJID03 IS INITIAL AND&lt;/P&gt;&lt;P&gt;       NOT WA_USERS-OTYPE03 IS INITIAL.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OTYPE = WA_USERS-OTYPE03.&lt;/P&gt;&lt;P&gt;      TB_ACTOR-OBJID = WA_USERS-OBJID03.&lt;/P&gt;&lt;P&gt;      APPEND TB_ACTOR.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get the list of smtp address from the selected objid/otype.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM GET_ADDRESS TABLES PI_RECEIVER&lt;/P&gt;&lt;P&gt;                             TB_ACTOR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create the records in the receiver internal table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF NOT TB_ZRECEIVE[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT TB_ZRECEIVE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TB_RECLIST-RECEIVER = TB_ZRECEIVE-SMTP_ADDR.&lt;/P&gt;&lt;P&gt;      TB_RECLIST-REC_TYPE = 'U'.&lt;/P&gt;&lt;P&gt;      APPEND TB_RECLIST.&lt;/P&gt;&lt;P&gt;      CLEAR TB_RECLIST.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDLOOP.  " receivers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    used to send the mail along with attached file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM CALL_FUNCTION_TXT.&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.                    " MAIL_DETAILS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_ADDRESS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Getting The Receviers Address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM GET_ADDRESS TABLES   P_ADDRESS STRUCTURE YSMTP_ADDRESS&lt;/P&gt;&lt;P&gt;                          P_ACTOR   STRUCTURE SWHACTOR.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal tables and structure to find the address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: TB_RESULT_TAB    TYPE TABLE OF SWHACTOR,&lt;/P&gt;&lt;P&gt;        TB_LIST_OF_USERS TYPE TABLE OF SWHACTOR,&lt;/P&gt;&lt;P&gt;        TB_EPEOPLE_OBJEC TYPE OBJEC OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        TB_EPEOPLE_STRUC TYPE TABLE OF STRUC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: L_ACTOR          TYPE SWHACTOR,         " Role Resol Result&lt;/P&gt;&lt;P&gt;        L_USERID         TYPE PA0105-USRID,     " Communication ID&lt;/P&gt;&lt;P&gt;        L_OBJID          TYPE OBJEC-OBJID,      " Object ID&lt;/P&gt;&lt;P&gt;        L_DATUM          TYPE BEGDATUM,         " Start Date&lt;/P&gt;&lt;P&gt;        L_PERSON_NUMBER  TYPE USR21-PERSNUMBER, " Person number&lt;/P&gt;&lt;P&gt;        L_ADDRESS_NUMBER TYPE USR21-ADDRNUMBER. " Address Number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  L_DATUM = SY-DATUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get the email addresses of the selected agent&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT P_ACTOR INTO L_ACTOR.&lt;/P&gt;&lt;P&gt;    IF L_ACTOR-OTYPE = 'A '.                   "Agent is a workcenter&lt;/P&gt;&lt;P&gt;      CLEAR   TB_RESULT_TAB.&lt;/P&gt;&lt;P&gt;      REFRESH TB_RESULT_TAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FM to find the receipent&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'RH_STRUC_GET'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                ACT_OTYPE       = L_ACTOR-OTYPE&lt;/P&gt;&lt;P&gt;                ACT_OBJID       = L_ACTOR-OBJID&lt;/P&gt;&lt;P&gt;                ACT_WEGID       = 'US_ACTGR'&lt;/P&gt;&lt;P&gt;                ACT_BEGDA       = L_DATUM                "#EC DOM_EQUAL&lt;/P&gt;&lt;P&gt;                ACT_ENDDA       = L_DATUM                "#EC DOM_EQUAL&lt;/P&gt;&lt;P&gt;                AUTHORITY_CHECK = ' '&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                RESULT_TAB      = TB_RESULT_TAB&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                NO_PLVAR_FOUND  = 1&lt;/P&gt;&lt;P&gt;                NO_ENTRY_FOUND  = 2&lt;/P&gt;&lt;P&gt;                OTHERS          = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;        CONTINUE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT TB_RESULT_TAB INTO L_ACTOR WHERE OTYPE = 'US'.&lt;/P&gt;&lt;P&gt;        COLLECT L_ACTOR INTO TB_LIST_OF_USERS.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF L_ACTOR-OTYPE = 'US'.                 "Agent is a userid&lt;/P&gt;&lt;P&gt;      COLLECT L_ACTOR INTO TB_LIST_OF_USERS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSE.                                        "Agent is a position&lt;/P&gt;&lt;P&gt;      L_OBJID = L_ACTOR-OBJID.&lt;/P&gt;&lt;P&gt;      CLEAR  : TB_EPEOPLE_OBJEC, TB_EPEOPLE_STRUC.&lt;/P&gt;&lt;P&gt;      REFRESH: TB_EPEOPLE_OBJEC, TB_EPEOPLE_STRUC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FM to find the  List of People&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'RH_GET_PEOPLE_STRUC'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                PLVAR           = '01'&lt;/P&gt;&lt;P&gt;                OTYPE           = L_ACTOR-OTYPE&lt;/P&gt;&lt;P&gt;                OBJID           = L_OBJID&lt;/P&gt;&lt;P&gt;                C_OTYPE         = ''&lt;/P&gt;&lt;P&gt;                C_OBJID         = L_OBJID&lt;/P&gt;&lt;P&gt;                BEGDA           = L_DATUM                "#EC DOM_EQUAL&lt;/P&gt;&lt;P&gt;                ENDDA           = L_DATUM                "#EC DOM_EQUAL&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                EPEOPLE_OBJEC   = TB_EPEOPLE_OBJEC&lt;/P&gt;&lt;P&gt;                EPEOPLE_STRUC   = TB_EPEOPLE_STRUC&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                NO_PLVAR_FOUND  = 1&lt;/P&gt;&lt;P&gt;                NO_ENTRY_FOUND  = 2&lt;/P&gt;&lt;P&gt;                STRUCTURE_ERROR = 3&lt;/P&gt;&lt;P&gt;                OTHERS          = 4.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;        CONTINUE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT TB_EPEOPLE_OBJEC.&lt;/P&gt;&lt;P&gt;        CASE TB_EPEOPLE_OBJEC-OTYPE.&lt;/P&gt;&lt;P&gt;          WHEN 'US'.&lt;/P&gt;&lt;P&gt;            L_ACTOR-OTYPE = TB_EPEOPLE_OBJEC-OTYPE.&lt;/P&gt;&lt;P&gt;            L_ACTOR-OBJID = TB_EPEOPLE_OBJEC-REALO.&lt;/P&gt;&lt;P&gt;            COLLECT L_ACTOR INTO TB_LIST_OF_USERS.&lt;/P&gt;&lt;P&gt;          WHEN 'P '.&lt;/P&gt;&lt;P&gt;            CLEAR L_USERID.&lt;/P&gt;&lt;P&gt;            SELECT SINGLE USRID INTO L_USERID FROM PA0105&lt;/P&gt;&lt;P&gt;                 WHERE PERNR = TB_EPEOPLE_OBJEC-OBJID&lt;/P&gt;&lt;P&gt;                   AND SUBTY = '0001'&lt;/P&gt;&lt;P&gt;                   AND OBJPS = '  '&lt;/P&gt;&lt;P&gt;                   AND SPRPS = ' '&lt;/P&gt;&lt;P&gt;                   AND ENDDA GE SY-DATUM&lt;/P&gt;&lt;P&gt;                   AND BEGDA LE SY-DATUM&lt;/P&gt;&lt;P&gt;                   AND USRTY = '0001'.&lt;/P&gt;&lt;P&gt;            IF NOT L_USERID IS INITIAL.&lt;/P&gt;&lt;P&gt;              L_ACTOR-OTYPE = 'US'.&lt;/P&gt;&lt;P&gt;              L_ACTOR-OBJID = L_USERID.&lt;/P&gt;&lt;P&gt;              COLLECT L_ACTOR INTO TB_LIST_OF_USERS.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;        ENDCASE.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&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;Get email addresses for selected users&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR P_ADDRESS. REFRESH P_ADDRESS.&lt;/P&gt;&lt;P&gt;  LOOP AT TB_LIST_OF_USERS INTO L_ACTOR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR: L_PERSON_NUMBER, L_ADDRESS_NUMBER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE PERSNUMBER ADDRNUMBER FROM USR21&lt;/P&gt;&lt;P&gt;      INTO (L_PERSON_NUMBER, L_ADDRESS_NUMBER)&lt;/P&gt;&lt;P&gt;      WHERE BNAME = L_ACTOR-OBJID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE SMTP_ADDR INTO P_ADDRESS-SMTP_ADDR FROM ADR6&lt;/P&gt;&lt;P&gt;      WHERE    PERSNUMBER = L_PERSON_NUMBER&lt;/P&gt;&lt;P&gt;           AND ADDRNUMBER = L_ADDRESS_NUMBER&lt;/P&gt;&lt;P&gt;           AND FLGDEFAULT = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      APPEND P_ADDRESS.&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;ENDFORM.                    "get_address&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CALL_FUNCTION_TXT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Function Module used to send mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CALL_FUNCTION_TXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function Module used to send mail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            DOCUMENT_DATA              = TB_DOC_CHNG&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            PACKING_LIST               = TB_OBJPACK&lt;/P&gt;&lt;P&gt;            OBJECT_HEADER              = TB_OBJHEAD&lt;/P&gt;&lt;P&gt;            CONTENTS_BIN               = TB_OBJBIN&lt;/P&gt;&lt;P&gt;            CONTENTS_TXT               = TB_OBJTXT&lt;/P&gt;&lt;P&gt;            RECEIVERS                  = TB_RECLIST&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            TOO_MANY_RECEIVERS         = 1&lt;/P&gt;&lt;P&gt;            DOCUMENT_NOT_SENT          = 2&lt;/P&gt;&lt;P&gt;            OPERATION_NO_AUTHORIZATION = 4&lt;/P&gt;&lt;P&gt;            OTHERS                     = 99.&lt;/P&gt;&lt;P&gt;  CASE SY-SUBRC.&lt;/P&gt;&lt;P&gt;    WHEN 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Mail has been sucessfully sent&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'Mail has been sucessfully sent'(029).&lt;/P&gt;&lt;P&gt;    WHEN 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Too Many Parameters&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'Too Many Parameters'(030).&lt;/P&gt;&lt;P&gt;    WHEN 2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Doc Could Not Be Sent&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'Doc Could Not Be Sent'(031).&lt;/P&gt;&lt;P&gt;    WHEN 4.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    No Authority To Send&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'No Authority To Send'(032).&lt;/P&gt;&lt;P&gt;    WHEN 99.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Error While Sending&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MESSAGE S999 WITH 'Error While Sending'(033).&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CALL_FUNCTION_TXT&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Mar 2006 13:15:42 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250134#M144710</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-03T13:15:42Z</dc:date>
    </item>
    <item>
      <title>Re: program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250135#M144711</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Pavan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After going through your code it does all the operations via memory and there is no interaction to get file from disk. Are u asking how this to be changed to access file from disk e.g d:\text.txt? and ur file is stored on disk which u want to convert to PDF and pass to email. &lt;/P&gt;&lt;P&gt;Please correct me if my understanding is worng.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Mar 2006 13:51:05 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250135#M144711</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-03T13:51:05Z</dc:date>
    </item>
    <item>
      <title>Re: program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250136#M144712</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;U r correct that is my requirement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please correct me.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;PAvan.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Mar 2006 03:30:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250136#M144712</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-06T03:30:16Z</dc:date>
    </item>
    <item>
      <title>Re: program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250137#M144713</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;PARAMETERS: FILENAME TYPE RLGRAP-FILENAME&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILENAME.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        FILE_NAME           = FILENAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;THE ABOVE FN MODULE WORKS LIKE A BROWSER, MEANS IT SHOWS U&lt;/P&gt;&lt;P&gt;PATHS IN PRESENTATION SERVER, WITH WHICH U CAN SELECT UR FILE&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Mar 2006 03:40:28 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/program/m-p/1250137#M144713</guid>
      <dc:creator>hymavathi_oruganti</dc:creator>
      <dc:date>2006-03-06T03:40:28Z</dc:date>
    </item>
  </channel>
</rss>

