Spool retention

Hi all,
In my spool parameter, I have changed the 'Spool retention period' to 9 days (do not delete) for all my spool request, but still it is being deleted after 8 days.
Is there any other setup that i need to check so that my spool is not deleted by the system and it is only the administrator who can delete the spool as when it is necessary.
Regards
Satar

Date spool request was deleted for SP01
    The spool request can be deleted after the specified date.
    To automatically delete spool requests, you can:
    o   Activate the delete function in the spool administration transaction
        (SPAD), or
    o   Schedule report RSPO0041 (or RSPO1041, which includes additional
        selection options) as a background job.

Similar Messages

  • Function Module or BAPI to update a job's parameters like Spool retention

    Hi All,
    Anyones knows any BAPI or Function Module through with we can update a job's parameters  like Spool retention period or Spool request title or some other printer settings.
    Thanks in Advance.
    Regards,
    Shailendra

    Hi,
    BAPI_XBP_JOB_HEADER_MODIFY

  • How to set the spool retention period till 30 days(Printer Properties).

    Hi SAP Experts
    I need to setup a job which creates a spool. I want to set the spool retention period till 30 days(Printer Properties). But I have the option of keeping it only for 8 days or Do Not Delete at all. Can you please let me know how can I setup a job which creates a spool which wil be retained for 30 days and then will automatically get deleted?
    Advanced Thanks
    Thanks & Regards,
    Kishore.

    Hello Kishore,
    I can understand why you dont want to change the variant.
    However may be a slight change in the variant might help your cause though I am not sure whether you will like this suggestion or not.
    Create a dummy output device type to which all spools created for this report need to be assigned.
    Once this is done  make a small change in the variant for the field Output device in such a manner that all the spools belonging to this printer/output device are not deleted.
    Then create a new variant for this output device ensuring that only spools belonging to this output device and older than 29 or 30 days  are deleted.
    While this will  ensure that normal spool requests are deleted these ones are not.
    Really dont if this solution is acceptable or not.
    Regards.
    Ruchit.

  • Background Job Processing Spool Retention period

    Hi ,
    In my program i am calling another ABAP program and sumitting the same as a background job(using Job_Submit,Close etc.)
    In this case i can view the Spool generated by the called program(using sm37).
    But this spool exists for a very less period in the system.Is it possible to specify a retention period,as 90 days in my case.?
    Pls Help !!!
    Answers will be rewarded.
    Regards,
    Rohan

    hi Roahn,
    You must set print parameters before the printing process starts.
    When printing lists after creating them, the system uses the print format specified in the print parameters to split the completed list and fit it onto the print pages, truncating it if necessary.
    When printing lists while creating them, the system uses the print format to actually format the list in the program.
    Print parameters are set either interactively by the user or from within the program.
    For each print process, the spool system needs a complete and consistent set of print parameters. In ABAP, the structure PRI_PARAMS (ABAP Dictionary) represent a set of print parameters.
    When passing the print parameters interactively, the system displays a dialog box after starting the report, on which the user has to enter the most important print parameters.
    It's shown below which input field of the Print List Output dialog window conform to which PRI_PARAMS component.
    Input field----
    Retention period
    Component-------PEXPI
    Meaning----
    Number of days for which the system holds the spool request before deleting it. (Default value: 8).

  • In Spool Retention Period adding - "Delete After 365 Days"? Is it possible?

    Team,
    rel 4.7
    I have the following retention periods in the spool drop down:
    Delete After 1 Days
    Delete After 2 Days
    Delete After 3 Days
    Delete After 8 Days
    Do Not Delete
    Question: I want to add other periods like 365...
    where can I maintain it.
    Thanks
    Naved
    PS. These retention periods carry over to SAPinBOX and populate expiration date field
    Message was edited by: SAPna2000
    Message was edited by: SAPna2000

    Hi,
    I know Job retention period by using T/code : SO16--> document org.
    Check this may help.
    Lanka

  • Spool Retention for 1 month

    Hi All,
    I want to retain spool for 1 month.By default spool deletion date is set to sy-datum.
    I am using FM PRINT_OTF.In this FM there is one parameter which allows me to retain spool atmax for 8 days.
    Is there any other way or FM which will generate spoolid and will retain spool id for a month for my OTF data.
    Regards,
    Vikas Kabra

    Hi
    Further to the above I noted I am unable to execute the depreciation reports for May only in PROD system. In Test sytem I can. I am wondering whetherh this is due to the fact the assets year-end closure for 2008 (Our period is from July to June) has been carried out.
    Can someone pls confirm whether this is the reason?
    Thanks & Regards
    Nadini

  • Send to Spool But No Print

    Hi everybody.
    Can anybody tell me how can I send a ABAP report to spool, but I d'ont want print?
    Thanks in advance.

    hi,
    Try this sample code.. This writes your report output to spool and it doesnt print.
    CONSTANTS: CX_MARK(1) TYPE C VALUE 'X',      
               C_ROWS TYPE I VALUE 65,           
               C_COLS TYPE I VALUE 132,          
               C_LAY(16) TYPE C VALUE 'X_65_132'.
    DATA: VAL(1) TYPE C.
    DATA: PRIPAR LIKE PRI_PARAMS.
    START-OF-SELECTION.
    PERFORM GET_PRINT_PARAM.
    NEW-PAGE PRINT ON NEW-SECTION
            PARAMETERS PRIPAR NO DIALOG.
    PERFORM PRINT_SPOOL.
    NEW-PAGE PRINT OFF.
    FORM PRINT_SPOOL.
      WRITE : / 'this is test spool -- test 7:30'.   "<--Write your report output here
    ENDFORM. 
    FORM GET_PRINT_PARAM.
    CALL FUNCTION 'GET_PRINT_PARAMETERS'
        EXPORTING
    *         ARCHIVE_ID             = C_CHAR_UNKNOWN
    *         ARCHIVE_INFO           = C_CHAR_UNKNOWN
    *         ARCHIVE_MODE           = C_CHAR_UNKNOWN
    *         ARCHIVE_TEXT           = C_CHAR_UNKNOWN
    *         AR_OBJECT              = C_CHAR_UNKNOWN
    *         AUTHORITY              = C_CHAR_UNKNOWN
    *         COPIES                 = C_NUM3_UNKNOWN
    *         COVER_PAGE             = C_CHAR_UNKNOWN
    *         DATA_SET               = C_CHAR_UNKNOWN
    *         DEPARTMENT             = C_CHAR_UNKNOWN
    *         DESTINATION            = C_CHAR_UNKNOWN
    *         EXPIRATION             = C_NUM1_UNKNOWN
    *         IMMEDIATELY            = C_CHAR_UNKNOWN
    *         IN_ARCHIVE_PARAMETERS  = ' '
    *         IN_PARAMETERS          = ' '
    *         LAYOUT                 = C_CHAR_UNKNOWN
    *         LINE_COUNT             = C_INT_UNKNOWN
    *         LINE_SIZE              = C_INT_UNKNOWN
    *         LIST_NAME              = C_CHAR_UNKNOWN
    *         LIST_TEXT              = C_CHAR_UNKNOWN
    *         MODE                   = ' '
    *         NEW_LIST_ID            = C_CHAR_UNKNOWN
              NO_DIALOG              = CX_MARK
    *         RECEIVER               = C_CHAR_UNKNOWN
    *         RELEASE                = C_CHAR_UNKNOWN
    *         REPORT                 = C_CHAR_UNKNOWN
    *         SAP_COVER_PAGE         = C_CHAR_UNKNOWN
    *         SAP_OBJECT             = C_CHAR_UNKNOWN
    *         TYPE                   = C_CHAR_UNKNOWN
    *    IMPORTING
    *         OUT_ARCHIVE_PARAMETERS =
              OUT_PARAMETERS         = PRIPAR
              VALID                  = VAL
         EXCEPTIONS
              ARCHIVE_INFO_NOT_FOUND = 1
              INVALID_PRINT_PARAMS   = 2
              INVALID_ARCHIVE_PARAMS = 3
              OTHERS                 = 4.
    * Output device
      IF PRIPAR-PDEST IS INITIAL.
         PRIPAR-PDEST = 'LOCL'.
      ENDIF.
    * Number of copies
      PRIPAR-PRCOP = '001'.
    *Name of spool request
      CONCATENATE SY-CPROG '_' SY-UNAME+0(3) INTO PRIPAR-PLIST.
    * Text for cover sheet
      CONCATENATE SY-TITLE SPOOLLOG INTO PRIPAR-PRTXT SEPARATED BY SPACE.
    * Print immediately
      PRIPAR-PRIMM = SPACE.
    * Delete after printing
      PRIPAR-PRREL = SPACE.
    * new spool request
      PRIPAR-PRNEW = CX_MARK.
    * Spool retention period
      IF PRIPAR-PEXPI IS INITIAL.
         PRIPAR-PEXPI = '8'.
      ENDIF.
    * Number of list lines
      PRIPAR-LINCT = C_ROWS.
    * Line size of list
      PRIPAR-LINSZ = C_COLS.
    * Format
      PRIPAR-PAART = C_LAY.
    * Selection cover sheet
      PRIPAR-PRBIG = SPACE.
    * SAP cover sheet
      PRIPAR-PRSAP = 'D'.
    * Recipient
      PRIPAR-PRREC = SY-UNAME.
    * Department on cover sheet
      PRIPAR-PRABT = SPACE.
    * Authorization
      PRIPAR-PRBER = SPACE.
    * Name of spool dataset
      IF PRIPAR-PRDSN IS INITIAL.
        PRIPAR-PRDSN = 'LIST1S'.
      ENDIF.
    * Type of spool request
      IF PRIPAR-PTYPE IS INITIAL.
         PRIPAR-PTYPE = 'TEXT'.
    *    pripar-ptype = 'OTF'.
      ENDIF.
    * Archiving mode
      PRIPAR-ARMOD = '1'.    "Print only
    * Output footer
      PRIPAR-FOOTL = SPACE.
    * Check sum for print and archiving parameters
    PERFORM COMPUTE_CHECKSUM USING PRIPAR CHANGING PRIPAR-PRCHK.
    ENDFORM.                    " GET_PRINT_PARAM
    *&      Form  COMPUTE_CHECKSUM
    FORM COMPUTE_CHECKSUM USING    P_BUFFER TYPE ANY
                          CHANGING P_CHECKSUM TYPE I.
      FIELD-SYMBOLS <L_FS>.
      DATA L_LENGTH TYPE I.
      P_CHECKSUM = 0.
      DESCRIBE FIELD P_BUFFER LENGTH L_LENGTH.
      SUBTRACT 4 FROM L_LENGTH.
      ASSIGN P_BUFFER(1) TO <L_FS> TYPE 'X'.
      DO L_LENGTH TIMES.
        ADD <L_FS> TO P_CHECKSUM.
        ASSIGN <L_FS>+1 TO <L_FS>.
      ENDDO.
    ENDFORM.                    " COMPUTE_CHECKSUM
    Regards
    Sailaja.

  • Use of Spool request

    Dear All,
    Sorry for posting some basic questions. But I am not clear in basics of this topic.
    Please explain me some basics about Spool request.
    1. When the spool will be generated, how to identify in the delivery that, some spool got generated for those output types in the Deliver?
    2. Is the spool generation printer oriented? For example, if I have only Dot matrix printer, is it possible to generate Spool?
    3. In the Delivery, if I have 5 Similar output types (LD00), does it generate 5 different Spool or 1 Spool?
    4. In the Delivery, if I have 5 Different output types (LD00, LD01, LD02, LD03, LD04), does it generate 5 different Spool or 1 Spool?
    3. After the Spool generated, in SP02, how to identify the particular spool which is generated for a particular output? For example, I need to identify the output LD00 for a particular Delivery, is that possible?
    4. How to identify the Spool retention period?
    Regards,
    Mullairaja

    1. When the spool will be generated, how to identify in the delivery that, some spool got generated for those output types in the Deliver?
    Via the status of the output type.
    2. Is the spool generation printer oriented? For example, if I have only Dot matrix printer, is it possible to generate Spool?
    It is triggered via the output type.
    3. In the Delivery, if I have 5 Similar output types (LD00), does it generate 5 different Spool or 1 Spool?
    5, per each output type, doesn't matter whether it is the same output type.
    4. In the Delivery, if I have 5 Different output types (LD00, LD01, LD02, LD03, LD04), does it generate 5 different Spool or 1 Spool?
    5 different spools
    3. After the Spool generated, in SP02, how to identify the particular spool which is generated for a particular output? For example, I need to identify the output LD00 for a particular Delivery, is that possible?
    You cannot identify the deilvery however, by maintainting the output as the 'spool request name' or 'suffix1' or suffix 2' in the output condition record you may identify the output type in SP02.
    4. How to identify the Spool retention period?
    It is set at OS level. cant tell from spools.

  • Exclude spool requests from program RSPO0041

    Hi
    We have a request to keep the spools and logs for certain jobs. If we set the Spool Retention period to 'Do not Delete' in the Print Specifications of the job (via SM37) would this mean that these spools will not be deleted when the SAP_REORG_SPOOL  (Program RSPO0041) job is run?
    Thanks

    Hi,
    Welcome to SDN
    Note 64333 - Change default value for spool retention period
    FYI , even though you select DO NOT DELETE  this it will delete the spool if JOB RSPO* runs .
    May refer this inetresting thread
    How to set the spool retention period till 30 days(Printer Properties).
    running RSPO1041 can help , more selection options are available.
    Regards,
    Edited by: Gagan Deep Kaushal on Nov 9, 2010 10:45 PM

  • List of system fields like sy-index, sy-srow......

    can any one give me list of system fields with there use. i would b very thankful.

    hi Amjad,
    Please find below the request fields, from table SYST.
    INDEX     Loops, number of current pass
    PAGNO     List creation, current page
    TABIX     Internal table, current line index
    TFILL     Internal tables, current number of lines
    TOCCU     Internal tables, initial main memory requirements
    DBCNT     DB operations, number of table lines processed
    FDPOS     Character strings, offset in character string
    COLNO     List creation, current column of list
    LINCT     List processing, page length of list
    LINNO     List creation, current line
    LINSZ     List creation, width of list
    MACOL     Print list, columns from SET MARGIN statement
    MAROW     List printing, lines from SET MARGIN statement
    TLENG     Internal tables, line width
    LILLI     List processing, current list line
    SUBRC     Return value, return value after ABAP statements
    CUCOL     Screens, horizontal cursor position at PAI
    CUROW     Screens, vertical cursor position at PAI
    LSIND     List processing, details list index
    LISTI     List processing, index of current list
    STEPL     Screens, current table line index
    SROWS     Screens, numbers of lines
    SCOLS     Screens, number of columns
    LOOPC     Screens, number of lines visible in table
    TZONE     Date and time, time difference from Greenwich Mean Time
    DAYST     Date and time, Daylight savings time flag
    FDAYW     Date and time, factory calendar weekday
    LANGU     R/3 System, current language
    MODNO     R/3 System, external modes index
    BATCH     Program running in background
    BINPT     Batch input, program running under batch input
    CALLD     ABAP program, ABAP program call mode
    DYNNR     ABAP program, number of current screen
    DYNGR     ABAP program, screen group of current screen
    WTITL     List creation, flag for standard page header
    CPAGE     List processing, current page number
    DBNAM     ABAP program, related logical database
    MANDT     R/3 System, client number from logon
    PEXPI     Print parameters, spool retention period
    PRIMM     Print parameters, print immediately
    PRREL     Print parameters, delete after printing
    PRBIG     Print parameters, selection cover page
    PRNEW     Print parameters, new spool request
    PDEST     Print parameters, output device
    PLIST     Print parameters, name of spool request
    PRDSN     Print parameters, name of spool dataset
    CALLR     Print list, ID for print dialog function
    RTITL     Print parameters, title of print program
    PRREC     Print parameters, recipient
    PRTXT     Print parameters, text for cover page
    PRABT     Print parameters, department on cover page
    PAART     Print parameters, print formatting
    PRCOP     Print parameters, number of copies
    DBSYS     R/3 System, name of central database system
    SYSID     R/3 System, name of R/3 System
    OPSYS     R/3 System, operating system of application server
    PFKEY     Screens, current GUI status
    SAPRL     R/3 System, system release
    TCODE     ABAP program, current transaction code
    UCOMM     Screens, function code triggered by PAI
    SPONO     Print list, spool number
    DATUM     Date and time, current (application server) date
    SLSET     Selection screens, name of variant
    UZEIT     Dat and time, current application server time
    REPID     ABAP program, current main program
    UNAME     R/3 System, user logon name
    LSTAT     List processing, list level IDs
    ABCDE     Constant: Alphabet (A,B,C,...)
    MSGLI     Messages, message line
    TITLE     Screens, title text
    LISEL     List processing, contents of selected line
    ULINE     Constants, horizontal line with length 255
    CPROG     ABAP program, caller in external procedures
    LDBPG     ABAP program, logical database program
    TVAR0     List creation, text variable for headers
    TVAR1     List creation, text variable for headers
    TVAR2     List creation, text variable for headers
    TVAR3     List creation, text variable for headers
    TVAR4     List creation, text variable for headers
    TVAR5     List creation, text variable for headers
    TVAR6     List creation, text variable for headers
    TVAR7     List creation, text variable for headers
    TVAR8     List creation, text variable for headers
    TVAR9     List creation, text variable for headers
    MSGID     Messages, message class
    MSGTY     Messages, message type
    MSGNO     Messages, message number
    MSGV1     Messages, message variables
    MSGV2     Messages, message variables
    MSGV3     Messages, message variables
    MSGV4     Messages, message variables
    VLINE     Constants, vertical bar
    STACO     List processing, initial column displayed
    STARO     List processing, first line displayed at top
    DATAR     Screens, display user entry
    HOST     R/3 System, Name of application server
    DATLO     Date and time, local date of user
    TIMLO     Date and time, local time for user
    ZONLO     Date and time, time zone of user
    Hope this helps,
    Sajan Joseph.

  • LIST OF SYSTEM FIELDS?

    CAN SOME ONE GIVE ME THE LIST OF SYSTEM FIELDS THAT WE CAN USE IN TEH PROGEAM.
    LIKE SY-DATUM...
    vj

    hi VJ,
    Please find below the request fields, from table SYST.
    INDEX     Loops, number of current pass
    PAGNO     List creation, current page
    TABIX     Internal table, current line index
    TFILL     Internal tables, current number of lines
    TOCCU     Internal tables, initial main memory requirements
    DBCNT     DB operations, number of table lines processed
    FDPOS     Character strings, offset in character string
    COLNO     List creation, current column of list
    LINCT     List processing, page length of list
    LINNO     List creation, current line
    LINSZ     List creation, width of list
    MACOL     Print list, columns from SET MARGIN statement
    MAROW     List printing, lines from SET MARGIN statement
    TLENG     Internal tables, line width
    LILLI     List processing, current list line
    SUBRC     Return value, return value after ABAP statements
    CUCOL     Screens, horizontal cursor position at PAI
    CUROW     Screens, vertical cursor position at PAI
    LSIND     List processing, details list index
    LISTI     List processing, index of current list
    STEPL     Screens, current table line index
    SROWS     Screens, numbers of lines
    SCOLS     Screens, number of columns
    LOOPC     Screens, number of lines visible in table
    TZONE     Date and time, time difference from Greenwich Mean Time
    DAYST     Date and time, Daylight savings time flag
    FDAYW     Date and time, factory calendar weekday
    LANGU     R/3 System, current language
    MODNO     R/3 System, external modes index
    BATCH     Program running in background
    BINPT     Batch input, program running under batch input
    CALLD     ABAP program, ABAP program call mode
    DYNNR     ABAP program, number of current screen
    DYNGR     ABAP program, screen group of current screen
    WTITL     List creation, flag for standard page header
    CPAGE     List processing, current page number
    DBNAM     ABAP program, related logical database
    MANDT     R/3 System, client number from logon
    PEXPI     Print parameters, spool retention period
    PRIMM     Print parameters, print immediately
    PRREL     Print parameters, delete after printing
    PRBIG     Print parameters, selection cover page
    PRNEW     Print parameters, new spool request
    PDEST     Print parameters, output device
    PLIST     Print parameters, name of spool request
    PRDSN     Print parameters, name of spool dataset
    CALLR     Print list, ID for print dialog function
    RTITL     Print parameters, title of print program
    PRREC     Print parameters, recipient
    PRTXT     Print parameters, text for cover page
    PRABT     Print parameters, department on cover page
    PAART     Print parameters, print formatting
    PRCOP     Print parameters, number of copies
    DBSYS     R/3 System, name of central database system
    SYSID     R/3 System, name of R/3 System
    OPSYS     R/3 System, operating system of application server
    PFKEY     Screens, current GUI status
    SAPRL     R/3 System, system release
    TCODE     ABAP program, current transaction code
    UCOMM     Screens, function code triggered by PAI
    SPONO     Print list, spool number
    DATUM     Date and time, current (application server) date
    SLSET     Selection screens, name of variant
    UZEIT     Dat and time, current application server time
    REPID     ABAP program, current main program
    UNAME     R/3 System, user logon name
    LSTAT     List processing, list level IDs
    ABCDE     Constant: Alphabet (A,B,C,...)
    MSGLI     Messages, message line
    TITLE     Screens, title text
    LISEL     List processing, contents of selected line
    ULINE     Constants, horizontal line with length 255
    CPROG     ABAP program, caller in external procedures
    LDBPG     ABAP program, logical database program
    TVAR0     List creation, text variable for headers
    TVAR1     List creation, text variable for headers
    TVAR2     List creation, text variable for headers
    TVAR3     List creation, text variable for headers
    TVAR4     List creation, text variable for headers
    TVAR5     List creation, text variable for headers
    TVAR6     List creation, text variable for headers
    TVAR7     List creation, text variable for headers
    TVAR8     List creation, text variable for headers
    TVAR9     List creation, text variable for headers
    MSGID     Messages, message class
    MSGTY     Messages, message type
    MSGNO     Messages, message number
    MSGV1     Messages, message variables
    MSGV2     Messages, message variables
    MSGV3     Messages, message variables
    MSGV4     Messages, message variables
    VLINE     Constants, vertical bar
    STACO     List processing, initial column displayed
    STARO     List processing, first line displayed at top
    DATAR     Screens, display user entry
    HOST     R/3 System, Name of application server
    DATLO     Date and time, local date of user
    TIMLO     Date and time, local time for user
    ZONLO     Date and time, time zone of user
    Hope this helps,
    Sajan Joseph.

  • Reg sending mail attachment

    Hi,
    im working on sending report output as mail attachment in pdf format..
    but im not getting the required output,,,i.e., even after entering email addresses in the selection screen....im not getting any mail to the respective mail-ids..
    im pasting the code..pls fix the problem..
    pls let me know wat we have to do in SCOT transaction after executing the program....pls respond ..pls ..
    TABLES : t001,                                         "COMPANY CODE
             knb1,                                         "CUSTOMER MASTER(COMPANY CODE)
             cdhdr,                                        "CHANGE DOCUMENT HEADER
             knkk,                                         "CUSTOMER MASTER CREDIT MANAGEMENT: CONTROL AREA DATA
             kna1,                                         "GENERAL DATA IN CUSTOMER MASTER
             adrc,                                         "ADDRESSES (BUSINESS ADDRESS SERVICES)
             t001s,                                        "ACCOUNTING CLERKS
             adrt,                                         "COMMUNICATION DATA TEXT (BUSINESS ADDRESS SERVICES)
             adr6.                                         "E-MAIL ADDRESSES (BUSINESS ADDRESS SERVICES)
    TABLES: itcpo,                                         "SAPscript output interface
            itcpp.                                         "SAPscript output parameters
    TYPES:   BEGIN OF y_t001,
                      bukrs TYPE bukrs,
                      kkber TYPE kkber,
                      adrnr TYPE adrnr,
             END OF y_t001.
    TYPES:   BEGIN OF y_cust,
                      p_objectid TYPE cdobjectv,
             END OF y_cust.
    TYPES:   BEGIN OF y_knkk,
                      kunnr TYPE kunnr,
                      kkber TYPE kkber,
                      dtrev TYPE dtrev_cm,
                      nxtrv TYPE nxtrv_cm,
                      klimk TYPE klimk,
                      dbwae TYPE dbwae_cm,
             END OF y_knkk.
    TYPES:   BEGIN OF y_customer,
                      kunnr TYPE kunnr,
                      adrnr TYPE adrnr,
             END OF y_customer.
    TYPES:   BEGIN OF y_custo ,
                      kunnr TYPE  kunnr,
                      name  TYPE  name1_gp,
                      kkber TYPE kkber,
             END OF y_custo.
    TYPES:   BEGIN OF y_knkk1,
                      kunnr LIKE knkk-kunnr,
                      dtrev LIKE knkk-dtrev,
                      nxtrv LIKE knkk-nxtrv,
                      klimk LIKE knkk-klimk,
             END OF y_knkk1.
    TYPES:   BEGIN OF y_report_display,
                      kunnr TYPE kunnr,
                      name  TYPE name1_gp,
                      dtrev TYPE dtrev_cm,
                      nxtrv TYPE nxtrv_cm,
                      klimk TYPE klimk,
                      dbwae TYPE dbwae_cm,
             END OF y_report_display.
    TYPES:   BEGIN OF y_adrt,
                      addrnumber TYPE adrnr,
                      comm_type  TYPE ad_comm,
                      remark     TYPE ad_remark2,
                      persnumber TYPE ad_persnum,
                      date_from  TYPE ad_date_fr,
                      consnumber TYPE ad_consnum,
                      smtp_addr  TYPE ad_smtpadr,
              END OF y_adrt.
    *TYPES : BEGIN OF y_adr6,
                     addrnumber TYPE ad_addrnum,
                     persnumber TYPE ad_persnum,
                     date_from  TYPE ad_date_fr,
                     consnumber TYPE ad_consnum,
                     smtp_addr  TYPE ad_smtpadr,
           END OF y_adr6.
    *TYPES:   BEGIN OF y_addr,
                     addrnumber TYPE adrnr,
                     name1  TYPE ad_name1,
                     postcode TYPE ad_pstcd1,
                     city1    TYPE ad_city1,
                     street   TYPE ad_street,
                     housenum TYPE ad_hsnm1,
                     telnum   TYPE ad_tlnmbr1,
                     faxnum   TYPE ad_fxnmbr1,
            END OF y_addr.
    TYPES:   BEGIN OF y_custnam,
                      adrnr TYPE adrnr,
                      name2 TYPE ad_name1,
             END OF y_custnam.
    TYPES:   BEGIN OF y_kna1,
                      kunnr TYPE kunnr,
                      adrnr TYPE adrnr,
                      name1 TYPE name1,
                     END OF y_kna1.
    TYPES:   BEGIN OF y_knb1,
                      kunnr TYPE kunnr,
                      bukrs TYPE bukrs,
                      busab TYPE busab,
             END OF y_knb1.
    TYPES:   BEGIN OF y_clv,
                      dtrev TYPE dtrev_cm,
                      nxtrv TYPE nxtrv_cm,
                      klimk TYPE klimk,
             END OF y_clv.
    TYPES:    BEGIN OF y_ccname,
                       sname TYPE t001s-sname,
              END OF y_ccname.
    *TYPES DECLARATION FOR DESIGING SCRIPT
    TYPES : BEGIN OF y_adrc,
               addrnumber LIKE adrc-addrnumber,
               name1 LIKE adrc-name1,
               post_code1 LIKE adrc-post_code1,
               city1 LIKE adrc-city1,
               street LIKE adrc-street,
               house_num1 LIKE adrc-house_num1,
               tel_number LIKE adrc-tel_number,
               nation LIKE adrc-nation ,
               fax_number LIKE adrc-fax_number,
               country LIKE adrc-country,
               END OF y_adrc.
    *TO GET C1 (CUSTOMER NAME IN RUSSIAN
    TYPES : BEGIN OF y_adrc1,
            addrnumber LIKE adrc-addrnumber,
            name1 LIKE adrc-name1,
            nation LIKE adrc-nation,
            END OF y_adrc1.
    *TO GET C7
    TYPES :BEGIN OF y_t001s,
            bukrs LIKE t001s-bukrs,    "Company Code
            busab LIKE t001s-busab,
            sname LIKE t001s-sname,
            END OF y_t001s.
    CONSTANTS:
    c_printer         LIKE itcpp-tddevice VALUE 'PRINTER',
    c_true(1)         TYPE c VALUE 'X',
    c_1(1)            TYPE n VALUE '1',
    c_pdf_format(3)   TYPE c VALUE 'PDF',
    c_u               LIKE soos1-recesc   VALUE 'U',
    c_recipient_name  LIKE soos1-recnam   VALUE 'U-',
    c_english         LIKE sy-langu       VALUE 'E',
    c_f               LIKE sood1-objsns   VALUE 'F',
    c_int(3)          TYPE c VALUE 'INT',
    c_main(4)         TYPE c VALUE 'ITEM',
    c_main_window(4)  TYPE c VALUE 'MAIN',
    c_header(6)       TYPE c VALUE 'HEADER',
    c_minus_sign(1)   TYPE c VALUE '-',
    c_document_type   LIKE sood-objtp     VALUE 'EXT',
    c_space(1)        TYPE c VALUE ' '.
    DATA t_result LIKE itcpp.
    DATA :w_t001      TYPE t001,
          w_custo     TYPE y_custo,
          w_knkk      TYPE y_knkk,
          w_cust      TYPE y_cust,
          w_customer  TYPE y_customer,
          w_report_display TYPE y_report_display,
         w_addr      TYPE y_addr,
          w_custnam   TYPE y_custnam,
          w_adrt      TYPE y_adrt,
         w_adr6      TYPE y_adr6,
          w_kna1      TYPE y_kna1,
          w_knb1      TYPE y_knb1,
          w_clv       TYPE y_clv,
          w_ccname    TYPE y_ccname.
    DATA:    w_error_found(1)       TYPE c,
             w_key_date_text(30)    TYPE c,
             w_total(10)            TYPE p DECIMALS 2,
             w_htddevice            LIKE itcpp-tddevice.
    DATA: E_PROFILE LIKE SOPRD.
    DATA:   t_t001            TYPE STANDARD TABLE OF y_t001,
            t_custo           TYPE STANDARD TABLE OF y_custo,
          t_knkk            TYPE STANDARD TABLE OF y_knkk,
            t_cust            TYPE STANDARD TABLE OF y_cust,
            t_customer        TYPE STANDARD TABLE OF y_customer,
            t_report_display  TYPE STANDARD TABLE OF y_report_display,
           t_addr            TYPE STANDARD TABLE OF y_addr,
            t_custnam         TYPE STANDARD TABLE OF y_custnam,
            t_adrt            TYPE STANDARD TABLE OF y_adrt,
           t_adr6            TYPE STANDARD TABLE OF y_adr6,
            t_kna1            TYPE STANDARD TABLE OF y_kna1,
            t_knb1            TYPE STANDARD TABLE OF y_knb1,
            t_clv             TYPE STANDARD TABLE OF y_clv,
            t_ccname          TYPE STANDARD TABLE OF y_ccname.
    DATA : number LIKE spell,
           amount(1000) TYPE c.
    For storing error log
    DATA: BEGIN OF t_error OCCURS 0,
            kunnr LIKE kna1-kunnr,
            comm(30) TYPE c,
          END OF t_error.
    For storing customer's email address
    DATA: BEGIN OF t_email OCCURS 0,
            smtp_addr LIKE adr6-smtp_addr,
          END OF t_email.
    To be used in the function to send a layout via email
    DATA: t_otfdata LIKE itcoo OCCURS 0 WITH HEADER LINE,
          t_htline  LIKE tline OCCURS 0 WITH HEADER LINE.
    DATA DECLARATIONS FOR DESIGING SCRIPT
    DATA : it_t001 TYPE STANDARD TABLE OF y_t001,
           wa_t001 TYPE y_t001.
    DATA : it_adrc TYPE STANDARD TABLE OF y_adrc,
            wa_adrc type  y_adrc.
    DATA : it_adrc1 TYPE STANDARD TABLE OF y_adrc1,
           wa_adrc1 TYPE y_adrc1.
    DATA : it_knb1 TYPE STANDARD TABLE OF y_knb1,
           wa_knb1 TYPE y_knb1.
    DATA : it_kna1 TYPE STANDARD TABLE OF y_kna1,
           wa_kna1 TYPE y_kna1.
    DATA : it_knkk TYPE STANDARD TABLE OF y_knkk,
           wa_knkk TYPE y_knkk.
    DATA : it_knkk1 TYPE STANDARD TABLE OF y_knkk1,
           wa_knkk1 TYPE y_knkk1.
    DATA : it_t001s TYPE STANDARD TABLE OF y_t001s,
           wa_t001s TYPE y_t001s.
    *DATA STATEMENTS FOR EMAIL ADDRESSES
    DATA : it_adrt TYPE TABLE OF y_adrt,
           wa_adrt TYPE y_adrt,
           wa_email LIKE t_email.
    *DATA : it_adr6 TYPE TABLE OF y_adr6,
          wa_adr6 TYPE y_adr6,
    DATA : counter TYPE i,
           counter1 TYPE i,
           c5 LIKE spell.
    SELECTION-SCREEN BEGIN OF BLOCK clcn WITH FRAME TITLE text-200.
    SELECTION-SCREEN SKIP.
    PARAMETERS:     p_bukrs LIKE t001-bukrs OBLIGATORY,                    "COMPANY CODE
                    p_kkber LIKE t001-kkber OBLIGATORY.                    "CREDIT CONTROL AREA
    SELECT-OPTIONS: s_kunnr FOR knb1-kunnr OBLIGATORY,                     "CUSTOMER NUMBER
                    s_datum FOR sy-datum OBLIGATORY DEFAULT sy-datum.      "DATE OF CREDIT LIMIT UPDATE
    SELECTION-SCREEN SKIP.
    PARAMETERS : p_simul AS CHECKBOX DEFAULT 'X'.                          "RUN IN SIMULATION MODE
    SELECTION-SCREEN SKIP.
    PARAMETERS : p_lemail LIKE adr6-smtp_addr.                             " EMAIL
    SELECTION-SCREEN END OF BLOCK clcn.
    AT SELECTION-SCREEN.
      PERFORM f0100_validate_bukrs.  "*  For Company Code.
      PERFORM f0200_validate_kkber.  "* For Credit Control Area.
      PERFORM f0300_validate_kunnr.  "* For Customer Number
      PERFORM f0400_validate_datum.  "* For Date of Credit Limit Update
      PERFORM f0500_validate_simul.  "* For simulation mode and e-mail address
    *======================================================================
    START-OF-SELECTION.
      PERFORM f1000_get_customer.          "** COLLECT INFO FOR REPORT DISPLAY
      IF p_simul is initial AND NOT P_lemail IS INITIAL.
        PERFORM F1000_CHECK_GATEWAY_CONNECTION.
      ENDIF.
      IF p_simul IS INITIAL AND  NOT p_lemail IS INITIAL.
        PERFORM f3000_process_data_script USING t_report_display.
      ENDIF.
    END-OF-SELECTION.
      IF NOT p_simul IS INITIAL.
        PERFORM f2000_display_customer USING t_report_display.
      ENDIF.
    FORM f0100_validate_bukrs.
      DATA : w_bukrs TYPE bukrs.
    VALIDATION OF P_BUKRS
      SELECT SINGLE bukrs
                    FROM t001
                    INTO w_bukrs
                    WHERE bukrs EQ p_bukrs.
      IF sy-subrc NE 0.
        MESSAGE e999(zf) WITH 'Invalid Company Code' p_bukrs.   "(E01).
    *AUTHORIZATION CHECK
        AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
                            ID 'BUKRS' FIELD p_bukrs
                            ID 'ACTVT' FIELD '03'.
        IF sy-subrc NE 0.
          MESSAGE e999(zf)  WITH 'No Authorization for company code' p_bukrs."(e06).
        ENDIF.
      ENDIF.
    ENDFORM.                    " F0100_VALIDATE_BUKRS
    *Eject
    *&      Form  F0200_VALIDATE_KKBER
         *-> CREDIT CONTROL AREA AUTHORITY CHECK
    FOR CREDIT CONTROL AREA.
    FORM f0200_validate_kkber.
      DATA : w_kkber LIKE t001-kkber.
      SELECT SINGLE kkber
              FROM t001
              INTO w_kkber
              WHERE bukrs EQ p_bukrs
                AND   kkber EQ p_kkber.
      IF sy-subrc NE 0.
        MESSAGE e999(zf) WITH
       'Credit Control Area' p_kkber 'not defined for Company Code' p_bukrs."(e02).
       MESSAGE e999 WITH text-e02 p_kkber .
      ENDIF.
    ENDFORM.                    "F0200_VALIDATE_KKBER
    *&      Form  F0300_VALIDATE_KUNNR
         *-> CUSTOMER NUMBER AUTHORITY CHECK
    FORM f0300_validate_kunnr.
    VALIDATION OF S_KUNNR
      DATA : w_kunnr TYPE kunnr,
             w_bukrs TYPE bukrs.
      IF s_kunnr IS INITIAL .
        MESSAGE e999 WITH 'Enter Customer Number'(e04).
        SUBMIT (sy-cprog) VIA SELECTION-SCREEN.
      ENDIF.
      LOOP AT s_kunnr.
        CLEAR : w_kunnr,
                w_bukrs.
        IF NOT s_kunnr-low IS INITIAL.
          SELECT SINGLE kunnr bukrs
          FROM knb1 INTO (w_kunnr ,w_bukrs)
          WHERE kunnr EQ s_kunnr-low
          AND bukrs EQ p_bukrs.
          IF sy-subrc NE 0.
            MESSAGE e999(zf)  WITH 'Customer S_KUNNR-LOW not defined in company code' p_bukrs."(e03).
          ENDIF.
        ENDIF. "if not s_kunnr-low is initial.
        IF NOT s_kunnr-high IS INITIAL.
          CLEAR : w_kunnr,
                  w_bukrs.
          SELECT SINGLE kunnr bukrs
          FROM knb1 INTO (w_kunnr , w_bukrs)
          WHERE kunnr EQ s_kunnr-high
          AND bukrs EQ p_bukrs.
          IF sy-subrc NE 0.
            MESSAGE e999(zf)  WITH 'Customer S_KUNNR-HIGH not defined in company code' p_bukrs."(e03).
          ENDIF.
        ENDIF. "if not s_kunnr-high is initial.
      ENDLOOP. " loop at s_kunnr
    ENDFORM.                    " F0200_VALIDATE_KUNNR
    *&      Form  F0400_VALIDATE_DATUM
         *-> DATE OF CREDIT LIMIT UPDATE
    FORM f0400_validate_datum.
      IF s_kunnr IS INITIAL AND s_datum IS INITIAL.
        MESSAGE e999 WITH 'Enter either Date of CL update or Customer number.'(e04).
      ENDIF.
    ENDFORM.                    "F0400_VALIDATE_DATUM
    *&      Form  F1000_GET_CUSTOMER
          text
    -->  p1        text
    <--  p2        text
    FORM f1000_get_customer .
      DATA : w_kunnr LIKE knkk-kunnr,
               w_kkber LIKE knkk-kkber.
      IF s_datum IS NOT INITIAL.
        SELECT objectid
               FROM cdhdr
               INTO TABLE t_cust
               WHERE  objectclas IN ('KLIM','DTREV','NXTRV')
               AND  change_ind IN ('U','I')
               AND udate IN s_datum.
              WHERE ( objectclas EQ 'KLIM' OR objectclas EQ 'DTREV' OR  objectclas EQ 'NXTRV')
              AND  ( change_ind EQ 'U' OR change_ind EQ 'I')
              AND udate IN s_datum .
      ENDIF.
      IF sy-subrc NE 0.
        MESSAGE s999 WITH 'There is no data for selected period'(e07).
      ELSE.
        MOVE t_cust TO t_customer.
      ENDIF.
      SORT t_customer BY kunnr.
      IF NOT t_customer[] IS INITIAL.
        SELECT kunnr
               kkber
               dtrev
               nxtrv
               klimk
               dbwae
               FROM knkk
               INTO TABLE t_knkk
               FOR ALL ENTRIES IN t_customer
               WHERE kunnr = t_customer-kunnr
               AND   kkber = p_kkber.
      ELSE.
        MESSAGE e999 WITH text-e07.
      ENDIF.
      IF sy-subrc NE 0.
      ENDIF.
      SORT t_knkk BY kunnr kkber.
      IF NOT t_knkk[] IS INITIAL.
        SELECT   kunnr
                 name1
        FROM kna1
        INTO TABLE t_custo
        FOR ALL ENTRIES IN t_knkk
        WHERE kunnr = t_knkk-kunnr.
      ENDIF.
      IF sy-subrc = 0.
      ENDIF.
      SORT t_custo BY kunnr kkber.
      LOOP AT t_custo INTO w_custo.
        CLEAR w_knkk.
        READ TABLE t_knkk INTO w_knkk WITH KEY kunnr = w_custo-kunnr
                                      BINARY SEARCH.
        IF sy-subrc = 0.
          w_report_display-kunnr = w_custo-kunnr.
          w_report_display-name  = w_custo-name.
          w_report_display-dtrev = w_knkk-dtrev.
          w_report_display-nxtrv = w_knkk-nxtrv.
          w_report_display-klimk = w_knkk-klimk.
          w_report_display-dbwae = w_knkk-dbwae.
          APPEND w_report_display TO t_report_display .
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " F1000_GET_CUSTOMER
    *&      Form  F2000_DISPLAY_CUSTOMER
          text
         -->P_T_REPORT_DISPLAY  text
    FORM f2000_display_customer  USING    p_t_report_display.
      DATA: no  TYPE n  VALUE 1.
      DATA: t_data TYPE STANDARD TABLE OF y_report_display.
      t_data = p_t_report_display.
      DATA : w_data LIKE LINE OF t_data .
      ULINE (118).
      WRITE:/ sy-vline,
              8 'CREDIT LIMIT CHANGE NOTIFICATION REPORT ON',
              sy-datum , 118 sy-vline.
      ULINE (118).
      WRITE:/ sy-vline,'NO'(008) ,
            10 sy-vline, 11 'CUSTOMER NUMBER',
            28 sy-vline, 29 'CUSTOMER NAME', 43 sy-vline,
            44 'CREDIT LIMIT VALID', 63 sy-vline ,
            64 'CREDIT LIMIT AMOUNT', 85 sy-vline, 86 'CURRENCY',
            95 sy-vline , 96 'Notification Status',118 sy-vline.
      ULINE (118).
      WRITE:/ sy-vline,43 sy-vline, 44 'FROM', 53 sy-vline,
      56 'TILL', 63 sy-vline, 118 sy-vline .
      ULINE (118).
      LOOP AT t_data INTO w_data.
        WRITE:/ sy-vline, no,
              10 sy-vline, 11 w_data-kunnr ,
              28 sy-vline, 29 w_data-name, 43 sy-vline, 44 w_data-dtrev,
              53 sy-vline, 56 w_data-nxtrv ,63 sy-vline ,64 w_data-klimk,
              85 sy-vline, 86 w_data-dbwae,
              95 sy-vline , 118 sy-vline.
        no = no + 1.
        ULINE (118).
      ENDLOOP.
    ENDFORM.                    " F2000_DISPLAY_CUSTOMER
    *&      Form  F3000_PROCESS_DATA_SCRIPT
          text
         -->P_T_REPORT_DISPLAY  text
    FORM f3000_process_data_script  USING    p_t_report_display.
      DATA: t_data TYPE STANDARD TABLE OF y_report_display.
      t_data = p_t_report_display.
      DATA : w_data LIKE LINE OF t_data .
      DATA: temp_is_negative(1) TYPE c,
               temp_text(20)       TYPE c,
               temp_sname          LIKE t001s-sname,
               temp_email          LIKE adr6-smtp_addr.
      DATA : number LIKE spell,
             amount(255) TYPE c.
      PERFORM f3100_initialize_settings.
      LOOP AT t_data INTO w_data.
        AT NEW kunnr.
          CLEAR w_error_found.
          IF p_simul IS INITIAL AND  NOT p_lemail IS INITIAL.
            PERFORM f3300_open_form.
           data:  wa_t001 like line of t001
            DATA : begin of wa_t001,
                   adrnr like t001-adrnr,
                   end of wa_t001.
            SELECT SINGLE
                   adrnr FROM t001 INTO wa_t001
                   WHERE bukrs = p_bukrs.
          DATA: BEGIN OF wa_adrc,
                 addrnumber LIKE adrc-addrnumber,
                 name1 LIKE adrc-name1,
                 post_code1 LIKE adrc-post_code1,
                 city1 LIKE adrc-city1,
                 street LIKE adrc-street,
                 house_num1 LIKE adrc-house_num1,
                 tel_number LIKE adrc-tel_number,
                 nation LIKE adrc-nation ,
                 fax_number LIKE adrc-fax_number,
                 country LIKE adrc-country,
               END OF wa_adrc.
       SELECT SINGLE
                addrnumber
                name1
                post_code1
                city1
                street
                house_num1
                tel_number
                nation
                fax_number
                country
                FROM adrc
                INTO corresponding fields of wa_adrc
                WHERE addrnumber EQ wa_t001-adrnr  AND
                      nation EQ ' '.
            PERFORM f3700_write_form.
            DATA: wa_kna1 LIKE LINE OF t_kna1,
                  wa_adrcc LIKE LINE OF it_adrc.
            SELECT SINGLE
                   kunnr
                   adrnr FROM kna1
                   INTO  wa_kna1
                   WHERE kunnr = w_data-kunnr.
            IF sy-subrc EQ 0.
              SELECT SINGLE
                     addrnumber
                     name1
                     FROM adrc
                     INTO wa_adrcc
                     WHERE addrnumber = wa_kna1-adrnr
                     AND nation = ' '.
            ENDIF.
            PERFORM f3701_write_form.
            DATA : wa_knkk LIKE LINE OF t_knkk.
            DATA : counter TYPE i,
                   counter1 TYPE i.
            IF sy-subrc EQ 0.
          SELECT SINGLE KUNNR
                 DTREV
                 NXTRV
                 KLIMK  FROM KNKK INTO WA_KNKK WHERE
                 KUNNR EQ W_DATA-KUNNR.
            ENDIF.
            CALL FUNCTION 'SPELL_AMOUNT'
             EXPORTING
               amount          = w_knkk-klimk
       CURRENCY        = ' '
       FILLER          = ' '
               language        = sy-langu
             IMPORTING
               in_words        = number.
            IF sy-subrc <> 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            ENDIF.
            amount = number-word.
            PERFORM f3702_write_form.
            DATA: wa_knb1 LIKE LINE OF t_knb1.
            IF sy-subrc EQ 0.
              SELECT SINGLE
                     busab
                     FROM   knb1
                     INTO   wa_knb1
                     WHERE  kunnr = w_data-kunnr
                     AND    bukrs = p_bukrs.
            ENDIF.
            DATA : wa_t001s LIKE LINE OF it_t001s.
            IF sy-subrc EQ 0.
              SELECT SINGLE bukrs
                 busab
                 sname
                 FROM t001s
                 INTO wa_t001s
                 WHERE bukrs = wa_knb1-bukrs
                 AND busab = wa_knb1-busab.
            ENDIF.
            PERFORM f3703_write_form.
            PERFORM f3704_write_form.
            IF counter1 < counter.
              PERFORM f3705_write_form.
            ENDIF.
            PERFORM f3706_close_form.
          ENDIF.
        ENDAT.
        IF w_error_found EQ c_true.
        ENDIF.
        AT END OF kunnr.
    PERFORM F3400_WRITE_FORM USING C_TOTAL C_MAIN_WINDOW.
         PERFORM F3500_CLOSE_FORM.
          IF p_simul IS INITIAL AND  NOT p_lemail IS INITIAL.       "Email setting
            PERFORM f3200_get_email_addr USING w_data-kunnr.
            PERFORM f3600_send_data_via_email USING w_data-kunnr.
          ENDIF.
        ENDAT.
      ENDLOOP.
      WRITE:/ ' E-Mail is sent to the customer'.
    ENDFORM.                    " F3000_PROCESS_DATA_SCRIPT
    *&      Form  F3100_INITIALIZE_SETTINGS
          text
    -->  p1        text
    <--  p2        text
    FORM f3100_initialize_settings .
      SELECT SINGLE spld
            INTO itcpo-tddest
            FROM usr01
            WHERE bname EQ sy-uname.
      IF sy-subrc NE 0.
        itcpo-tddest = 'LOCAL'.
      ENDIF.
      w_htddevice      = c_printer.
      itcpo-tddest = ''.
      itcpo-tdrdidev = ''.
      itcpo-tdsenddate = sy-datum.
      itcpo-tdsendtime = sy-uzeit.
      itcpo-tdschedule = 'IMM'.
      itcpo-tdimmed = ' '.
    itcpo-tdnewid    = c_true.            "PRINT: New spool request
      itcpo-tdlifetime = c_1.               "PRINT: Spool retention period
      itcpo-tdgetotf   = c_true.
      IF p_simul IS INITIAL AND  NOT p_lemail IS INITIAL.       "Email setting
        itcpo-tdgetotf     = c_true.
      ENDIF.
    ENDFORM.                    " F3100_INITIALIZE_SETTINGS
    *&      Form  f0500_validate_simul
          text
    -->  p1        text
    <--  p2        text
    FORM f0500_validate_simul .
      IF p_simul IS INITIAL AND p_lemail IS INITIAL.       "Email setting
       MESSAGE e999(zf) WITH 'Enter Email address'.            "(e05).
      ENDIF.
    ENDFORM.                    " f0500_validate_simul
    *&      Form  F3600_SEND_DATA_VIA_EMAIL
          text
         -->P_W_DATA_KUNNR  text
    FORM f3600_send_data_via_email  USING p_w_data_kunnr.
      DATA:   fle1(2)       TYPE p,
              fle2(2)       TYPE p,
              off1          TYPE p,
              hltlines      TYPE i,
              temp_filesize TYPE i,
              hfeld(500)    TYPE c,
              header(50)   TYPE c,
              htabix        LIKE sy-tabix,
              x_sent_to_all LIKE sonv-flag.
      DATA: BEGIN OF x_objcont OCCURS 0.
              INCLUDE STRUCTURE soli.
              INCLUDE STRUCTURE SOLISTI1.
      DATA: END OF x_objcont.
      DATA: BEGIN OF x_object_hd_change.
              INCLUDE STRUCTURE sood1.
      DATA: END OF x_object_hd_change.
      DATA: BEGIN OF x_receivers OCCURS 0.
              INCLUDE STRUCTURE soos1.
             INCLUDE STRUCTURE SOMLRECI1.
      DATA: END OF x_receivers.
      DATA: BEGIN OF x_objhead OCCURS 1.
              INCLUDE STRUCTURE soli.
      DATA: END OF x_objhead.
    **Data: begin of objpack occurs 0.
             include structure SOPCKLSTI1.
    **Data: end of objpack.
    **Data: begin of email_data occurs 0.
             include structure SODOCCHGI1.
    **Data: end of email_data.
    Converts the layout set to PDF format
      CALL FUNCTION 'CONVERT_OTF'
        EXPORTING
          format                = c_pdf_format
        IMPORTING
          bin_filesize          = temp_filesize
        TABLES
          otf                   = t_otfdata
          lines                 = t_htline
        EXCEPTIONS
          err_max_linewidth     = 1
          err_format            = 2
          err_conv_not_possible = 3
          OTHERS                = 4.
      IF sy-subrc NE 0.
        w_error_found = c_true.
        t_error-kunnr = p_w_data_kunnr.
        t_error-comm  = 'Error in conversion to PDF format.'(e08).
        APPEND t_error.
        CLEAR t_error.
        EXIT.
      ENDIF.
    Convert the PDF file into an internal table which to be used in the
    function that will send a PDF file to a email address
      DESCRIBE TABLE t_htline LINES hltlines.
    DESCRIBE FIELD T_HTLINE LENGTH FLE1 IN BYTE MODE.
      DESCRIBE FIELD t_htline LENGTH fle1
                                  IN CHARACTER MODE.
    DESCRIBE FIELD X_OBJCONT LENGTH FLE2 IN BYTE MODE.
      DESCRIBE FIELD x_objcont LENGTH fle2
                                   IN CHARACTER MODE.
      CLEAR x_objcont.
      REFRESH x_objcont.
      LOOP AT t_htline.
        htabix = sy-tabix.
        MOVE t_htline TO hfeld+off1.
        IF htabix = hltlines.
          fle1 = STRLEN( t_htline ).
        ENDIF.
        off1 = off1 + fle1.
        IF off1 GE fle2.
          CLEAR x_objcont.
          x_objcont = hfeld(fle2).
          APPEND x_objcont.
          SHIFT hfeld BY fle2 PLACES.
          off1 = off1 - fle2.
        ENDIF.
        IF htabix = hltlines.
          IF off1 GT 0.
            CLEAR x_objcont.
            x_objcont = hfeld(off1).
            APPEND x_objcont.
          ENDIF.
        ENDIF.
      ENDLOOP.
    LOOP AT t_email.
       x_receivers-receiver = t_email-smtp_addr.
       x_receivers-rec_type = c_u.
       APPEND x_receivers.
    ENDLOOP.
    x_receivers-receiver = p_lemail.
    x_receivers-rec_type = c_u.
    APPEND x_receivers.
    DESCRIBE TABLE x_objcont LINES sy-tfill.
    READ TABLE x_objcont INDEX sy-tfill.
    email_data-doc_size = ( sy-tfill - 1 ) * 255 + STRLEN( x_objcont ).
    CLEAR objpack-transf_bin.
    objpack-head_start = 1.
    objpack-head_num = 0.
    objpack-body_start = 1.
    objpack-body_num = sy-tfill.
    objpack-doc_type = 'RAW'.
    APPEND objpack.
    email_data-obj_descr = 'Notification'.
    APPEND email_data.
    IF x_receivers[] IS NOT INITIAL.
       CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
         EXPORTING
           document_data = email_data
           put_in_outbox = 'X'
           commit_work   = 'X' "used from rel. 6.10
         TABLES
           packing_list  = objpack
           object_header = email_fname
           contents_bin  = email_text
           contents_txt  = x_objcont
           receivers     = x_receivers.
    endif.
      CLEAR x_objhead.
      REFRESH x_objhead.
      CLEAR x_object_hd_change.
      x_object_hd_change-objnam = 'EMAIL'(t04).
      header = 'Procter & Gamble'(t05).
      x_object_hd_change-objdes = header.                         "Title
      x_object_hd_change-objla = c_english.                       "Language
      x_object_hd_change-objsns = c_f.
      x_object_hd_change-objlen = temp_filesize.
      x_object_hd_change-file_ext = c_pdf_format.
    Transfer the email address to an internal table which will be used
    in the function that will send a PDF file to a email address
      CLEAR x_receivers.
      REFRESH x_receivers.
      LOOP AT t_email.
        x_receivers-sndex = c_true.
        x_receivers-sndpri = c_1.
        x_receivers-recesc = c_u.
        x_receivers-recnam = c_recipient_name.
    Populate the email address of the customer
        x_receivers-recextnam = t_email-smtp_addr.
        x_receivers-recesc = c_english.
        x_receivers-sndart = c_int.
        APPEND x_receivers.
      ENDLOOP.
      x_receivers-sndex = c_true.
      x_receivers-sndpri = c_1.
      x_receivers-recesc = c_u.
      x_receivers-recnam = c_recipient_name.
    Populate the Local mail address
      x_receivers-recextnam = p_lemail.
      x_receivers-recesc = c_english.
      x_receivers-sndart = c_int.
      APPEND x_receivers.
    Calling a SAP function to send out email with attachment of PDF file
      CALL FUNCTION 'SO_OBJECT_SEND'
        EXPORTING
          object_hd_change           = x_object_hd_change
          object_type                = c_document_type
          outbox_flag                = c_true
        IMPORTING
          sent_to_all                = x_sent_to_all
        TABLES
          objcont                    = x_objcont
          objhead                    = x_objhead
          receivers                  = x_receivers
        EXCEPTIONS
          active_user_not_exist      = 1
          communication_failure      = 2
          component_not_available    = 3
          folder_not_exist           = 4
          folder_no_authorization    = 5
          forwarder_not_exist        = 6
          note_not_exist             = 7
          object_not_exist           = 8
          object_not_sent            = 9
          object_no_authorization    = 10
          object_type_not_exist      = 11
          operation_no_authorization = 12
          owner_not_exist            = 13
          parameter_error            = 14
          substitute_not_active      = 15
          substitute_not_defined     = 16
          system_failure             = 17
          too_much_receivers         = 18
          user_not_exist             = 19
          x_error                    = 20
          OTHERS                     = 21.
      IF sy-subrc NE 0.
        w_error_found = c_true.
        t_error-kunnr = p_w_data_kunnr.
        t_error-comm  = 'Error in sending email.'(e09).
        APPEND t_error.
        CLEAR t_error.
      ELSEIF sy-subrc EQ 0.
        COMMIT WORK.
    *Transmit Mail
        SUBMIT rsconn01 WITH mode = c_int
        WITH output = c_space
        AND RETURN.
      ENDIF.
    ENDFORM.                    " F3600_SEND_DATA_VIA_EMAIL
    *&      Form  F3200_GET_EMAIL_ADDR
          text
         -->P_T_REPORT_DISPLAY  text
    FORM f3200_get_email_addr USING p_w_data_kunnr.
      REFRESH t_customer.
      REFRESH t_adrt.
      REFRESH t_email.
      DATA: t_data TYPE STANDARD TABLE OF y_report_display.
    t_data = p_t_report_display.
      DATA : w_data LIKE LINE OF t_data .

    Sending mail with attachment
    This program will allowed you to send email with attachment.
    First, specify the attachment file from your local hardisk and execute.
    Next, specify the sender email address and click the send button.
    report y_cr17_mail.
    data method1 like sy-ucomm.
    data g_user like soudnamei1.
    data g_user_data like soudatai1.
    data g_owner like soud-usrnam.
    data g_receipients like soos1 occurs 0 with header line.
    data g_document like sood4 .
    data g_header like sood2.
    data g_folmam like sofm2.
    data g_objcnt like soli occurs 0 with header line.
    data g_objhead like soli occurs 0 with header line.
    data g_objpara like selc occurs 0 with header line.
    data g_objparb like soop1 occurs 0 with header line.
    data g_attachments like sood5 occurs 0 with header line.
    data g_references like soxrl occurs 0 with header line.
    data g_authority like sofa-usracc.
    data g_ref_document like sood4.
    data g_new_parent like soodk.
    data: begin of g_files occurs 10 ,
    text(4096) type c,
    end of g_files.
    data : fold_number(12) type c,
    fold_yr(2) type c,
    fold_type(3) type c.
    parameters ws_file(4096) type c default 'c:\debugger.txt'.
    Can me any file fromyour pc ....either xls or word or ppt etc ...
    g_user-sapname = sy-uname.
    call function 'SO_USER_READ_API1'
    exporting
    user = g_user
    PREPARE_FOR_FOLDER_ACCESS = ' '
    importing
    user_data = g_user_data
    EXCEPTIONS
    USER_NOT_EXIST = 1
    PARAMETER_ERROR = 2
    X_ERROR = 3
    OTHERS = 4
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    fold_type = g_user_data-outboxfol+0(3).
    fold_yr = g_user_data-outboxfol+3(2).
    fold_number = g_user_data-outboxfol+5(12).
    clear g_files.
    refresh : g_objcnt,
    g_objhead,
    g_objpara,
    g_objparb,
    g_receipients,
    g_attachments,
    g_references,
    g_files.
    method1 = 'SAVE'.
    g_document-foltp = fold_type.
    g_document-folyr = fold_yr.
    g_document-folno = fold_number.
    g_document-objtp = g_user_data-object_typ.
    *g_document-OBJYR = '27'.
    *g_document-OBJNO = '000000002365'.
    *g_document-OBJNAM = 'MESSAGE'.
    g_document-objdes = 'sap-img.com testing by program'.
    g_document-folrg = 'O'.
    *g_document-okcode = 'CHNG'.
    g_document-objlen = '0'.
    g_document-file_ext = 'TXT'.
    g_header-objdes = 'sap-img.com testing by program'.
    g_header-file_ext = 'TXT'.
    call function 'SO_DOCUMENT_REPOSITORY_MANAGER'
    exporting
    method = method1
    office_user = sy-uname
    ref_document = g_ref_document
    new_parent = g_new_parent
    importing
    authority = g_authority
    tables
    objcont = g_objcnt
    objhead = g_objhead
    objpara = g_objpara
    objparb = g_objparb
    recipients = g_receipients
    attachments = g_attachments
    references = g_references
    files = g_files
    changing
    document = g_document
    header_data = g_header
    FOLMEM_DATA =
    RECEIVE_DATA =
    File from the pc to send...
    method1 = 'ATTCREATEFROMPC'.
    g_files-text = ws_file.
    append g_files.
    call function 'SO_DOCUMENT_REPOSITORY_MANAGER'
    exporting
    method = method1
    office_user = g_owner
    ref_document = g_ref_document
    new_parent = g_new_parent
    importing
    authority = g_authority
    tables
    objcont = g_objcnt
    objhead = g_objhead
    objpara = g_objpara
    objparb = g_objparb
    recipients = g_receipients
    attachments = g_attachments
    references = g_references
    files = g_files
    changing
    document = g_document
    header_data = g_header
    method1 = 'SEND'.
    g_receipients-recnam = 'MK085'.
    g_receipients-recesc = 'B'.
    g_receipients-sndex = 'X'.
    append g_receipients.
    call function 'SO_DOCUMENT_REPOSITORY_MANAGER'
    exporting
    method = method1
    office_user = g_owner
    ref_document = g_ref_document
    new_parent = g_new_parent
    importing
    authority = g_authority
    tables
    objcont = g_objcnt
    objhead = g_objhead
    objpara = g_objpara
    objparb = g_objparb
    recipients = g_receipients
    attachments = g_attachments
    references = g_references
    files = g_files
    changing
    document = g_document
    header_data = g_header.
    *-- End of Program
    also try this one for background scheduling the same
    Sending mail with attachment report in Background
    Pay attention because it’s working with output list from spool converted to pdf.
    =================================================================================
    z_send_email_fax_global
    FUNCTION-POOL z_gfaian_mail_fax. “MESSAGE-ID ..
    WORK TABLE AREAS
    TABLES: tsp01.
    INTERNAL TABLES
    DATA: lt_rec_tab LIKE STANDARD TABLE OF soos1 WITH HEADER LINE,
    lt_note_text LIKE STANDARD TABLE OF soli WITH HEADER LINE,
    lt_attachments LIKE STANDARD TABLE OF sood5 WITH HEADER LINE.
    DATA: lt_objcont LIKE STANDARD TABLE OF soli WITH HEADER LINE,
    lt_objhead LIKE STANDARD TABLE OF soli WITH HEADER LINE.
    DATA: pdf_format LIKE STANDARD TABLE OF tline WITH HEADER LINE.
    TYPES: BEGIN OF y_files,
    file(60) TYPE c,
    END OF y_files.
    DATA: lt_files TYPE STANDARD TABLE OF y_files WITH HEADER LINE.
    DATA: l_objcont LIKE soli OCCURS 0 WITH HEADER LINE.
    DATA: l_objhead LIKE soli OCCURS 0 WITH HEADER LINE.
    STRUCTURES
    DATA: folder_id LIKE soodk,
    object_id LIKE soodk,
    link_folder_id LIKE soodk,
    g_document LIKE sood4,
    g_header_data LIKE sood2,
    g_folmem_data LIKE sofm2,
    g_header_data LIKE sood2,
    g_receive_data LIKE soos6,
    g_ref_document LIKE sood4,
    g_new_parent LIKE soodk,
    l_folder_id LIKE sofdk,
    v_email(50).
    DATA: hd_dat like sood1.
    VARIABLES
    DATA: client LIKE tst01-dclient,
    name LIKE tst01-dname,
    objtype LIKE rststype-type,
    type LIKE rststype-type.
    DATA: numbytes TYPE i,
    arc_idx LIKE toa_dara,
    pdfspoolid LIKE tsp01-rqident,
    jobname LIKE tbtcjob-jobname,
    jobcount LIKE tbtcjob-jobcount,
    is_otf.
    DATA: outbox_flag LIKE sonv-flag VALUE ‘X’,
    store_flag LIKE sonv-flag,
    delete_flag LIKE sonv-flag,
    owner LIKE soud-usrnam,
    on LIKE sonv-flag VALUE ‘X’,
    sent_to_all LIKE sonv-flag,
    g_authority LIKE sofa-usracc,
    w_objdes LIKE sood4-objdes.
    DATA: c_file LIKE rlgrap-filename,
    n_spool(6) TYPE n.
    DATA: cancel.
    DATA: desired_type LIKE sood-objtp,
    real_type LIKE sood-objtp,
    attach_type LIKE sood-objtp,
    otf LIKE sood-objtp VALUE ‘OTF’, ” SAPscript Ausgabeformat
    ali LIKE sood-objtp VALUE ‘ALI’. ” ABAP lists
    CONSTANTS
    CONSTANTS: ou_fol LIKE sofh-folrg VALUE ‘O’,
    c_objtp LIKE g_document-objtp VALUE ‘RAW’,
    c_file_ext LIKE g_document-file_ext VALUE ‘TXT’.
    =================================================================================
    z_send_email_fax2
    FUNCTION z_faian_mail_fax2.
    ””Interface local:
    *” IMPORTING
    *” REFERENCE(SRC_SPOOLID) LIKE TSP01-RQIDENT
    *” REFERENCE(FAX_MAIL_NUMBER) TYPE SO_NAME
    *” REFERENCE(HEADER_MAIL) TYPE SO_OBJ_DES
    *” REFERENCE(OBJECT_TYPE) TYPE SO_ESCAPE
    *” TABLES
    *” LT_BODY_EMAIL STRUCTURE SOLI
    *” EXCEPTIONS
    *” ERR_NO_ABAP_SPOOLJOB
    Fist part: Verify if the spool really exists
    SELECT SINGLE * FROM tsp01 WHERE rqident = src_spoolid.
    IF sy-subrc NE 0.
    RAISE err_no_abap_spooljob. “doesn’t exist
    ELSE.
    client = tsp01-rqclient.
    name = tsp01-rqo1name.
    CALL FUNCTION ‘RSTS_GET_ATTRIBUTES’
    EXPORTING
    authority = ‘SP01&#8242;
    client = client
    name = name
    part = 1
    IMPORTING
    type = type
    objtype = objtype
    EXCEPTIONS
    fb_error = 1
    fb_rsts_other = 2
    no_object = 3
    no_permission = 4
    OTHERS = 5.
    IF objtype(3) = ‘OTF’.
    desired_type = otf.
    ELSE.
    desired_type = ali.
    ENDIF.
    CALL FUNCTION ‘RSPO_RETURN_SPOOLJOB’
    EXPORTING
    rqident = src_spoolid
    desired_type = desired_type
    IMPORTING
    real_type = real_type
    TABLES
    buffer = l_objcont
    EXCEPTIONS
    no_such_job = 14
    type_no_match = 94
    job_contains_no_data = 54
    no_permission = 21
    can_not_access = 21
    read_error = 54.
    IF sy-subrc EQ 0.
    attach_type = real_type.
    ENDIF.
    CALL FUNCTION ‘SO_FOLDER_ROOT_ID_GET’
    EXPORTING
    owner = sy-uname
    region = ou_fol
    IMPORTING
    folder_id = l_folder_id
    EXCEPTIONS
    OTHERS = 5.
    fill out informations about the header of the email
    CLEAR: g_document.
    g_document-foltp = l_folder_id-foltp.
    g_document-folyr = l_folder_id-folyr.
    g_document-folno = l_folder_id-folno.
    g_document-objtp = c_objtp.
    g_document-objdes = header_mail.
    g_document-file_ext = c_file_ext.
    g_header_data-objdes = header_mail.
    CALL FUNCTION ‘SO_DOCUMENT_REPOSITORY_MANAGER’
    EXPORTING
    method = ‘SAVE’
    office_user = sy-uname
    IMPORTING
    authority = g_authority
    TABLES
    objcont = lt_body_email
    attachments = lt_attachments
    CHANGING
    document = g_document
    header_data = g_header_data
    EXCEPTIONS
    OTHERS = 1.
    folder_id-objtp = l_folder_id-foltp.
    folder_id-objyr = l_folder_id-folyr.
    folder_id-objno = l_folder_id-folno.
    object_id-objtp = c_objtp.
    object_id-objyr = g_document-objyr.
    object_id-objno = g_document-objno.
    link_folder_id-objtp = l_folder_id-foltp.
    link_folder_id-objyr = l_folder_id-folyr.
    link_folder_id-objno = l_folder_id-folno.
    REFRESH lt_rec_tab.
    CLEAR lt_rec_tab.
    lt_rec_tab-sel = ‘X’.
    lt_rec_tab-recesc = object_type. “This field for FAX/MAIL
    lt_rec_tab-recnam = ‘U-’.
    lt_rec_tab-deliver = ‘X’.
    lt_rec_tab-not_deli = ‘X’.
    lt_rec_tab-read = ‘X’.
    lt_rec_tab-mailstatus = ‘E’.
    lt_rec_tab-adr_name = fax_mail_number.
    lt_rec_tab-sortfield = fax_mail_number.
    lt_rec_tab-recextnam = fax_mail_number.
    lt_rec_tab-sortclass = ‘5&#8242;.
    APPEND lt_rec_tab.
    lt_rec_tab-recextnam = fax_mail_number.
    lt_rec_tab-recesc = object_type.
    lt_rec_tab-sndart = ‘INT’.
    lt_rec_tab-sndpri = 1.
    APPEND lt_rec_tab.
    lt_files-file = c_file.
    APPEND lt_files.
    begin of insertion by faianf01
    hd_dat-objdes = header_mail.
    CALL FUNCTION ‘SO_ATTACHMENT_INSERT’
    EXPORTING
    object_id = object_id
    attach_type = attach_type
    object_hd_change = hd_dat
    owner = sy-uname
    TABLES
    objcont = l_objcont
    objhead = l_objhead
    EXCEPTIONS
    active_user_not_exist = 35
    communication_failure = 71
    object_type_not_exist = 17
    operation_no_authorization = 21
    owner_not_exist = 22
    parameter_error = 23
    substitute_not_active = 31
    substitute_not_defined = 32
    system_failure = 72
    x_error = 1000.
    IF sy-subrc > 0.
    ENDIF.
    end of insertion by faianf01
    send email from SAPOFFICE
    CALL FUNCTION ‘SO_OBJECT_SEND’
    EXPORTING
    folder_id = folder_id
    object_id = object_id
    outbox_flag = outbox_flag
    link_folder_id = link_folder_id
    owner = sy-uname
    check_send_authority = ‘X’
    TABLES
    receivers = lt_rec_tab
    note_text = lt_note_text
    EXCEPTIONS
    active_user_not_exist = 35
    communication_failure = 71
    component_not_available = 1
    folder_no_authorization = 5
    folder_not_exist = 6
    forwarder_not_exist = 8
    object_no_authorization = 13
    object_not_exist = 14
    object_not_sent = 15
    operation_no_authorization = 21
    owner_not_exist = 22
    parameter_error = 23
    substitute_not_active = 31
    substitute_not_defined = 32
    system_failure = 72
    too_much_receivers = 73
    user_not_exist = 35.
    ENDIF.
    ENDFUNCTION.
    =================================================================================
    z_send_email_fax
    FUNCTION ZCBFS_SEND_MAIL.
    ””Interface local:
    *” IMPORTING
    *” REFERENCE(SRC_SPOOLID) LIKE TSP01-RQIDENT
    *” REFERENCE(HEADER_MAIL) TYPE SO_OBJ_DES
    *” TABLES
    *” LIST_FAX_MAIL_NUMBER STRUCTURE SOLI
    *” EXCEPTIONS
    *” ERR_NO_ABAP_SPOOLJOB
    DATA: vg_achou(1) TYPE n.
    Fist part: Verify if the spool really exists
    vg_achou = 1.
    DO 60 TIMES.
    SELECT SINGLE * FROM tsp01 WHERE rqident = src_spoolid.
    IF sy-subrc IS INITIAL.
    CLEAR vg_achou.
    EXIT.
    ELSE.
    WAIT UP TO 1 SECONDS.
    ENDIF.
    ENDDO.
    IF vg_achou = 1.
    RAISE err_no_abap_spooljob. “doesn’t exist
    ENDIF.
    client = tsp01-rqclient.
    name = tsp01-rqo1name.
    CALL FUNCTION ‘RSTS_GET_ATTRIBUTES’
    EXPORTING
    authority = ‘SP01&#8242;
    client = client
    name = name
    part = 1
    IMPORTING
    type = type
    objtype = objtype
    EXCEPTIONS
    fb_error = 1
    fb_rsts_other = 2
    no_object = 3
    no_permission = 4
    OTHERS = 5.
    IF objtype(3) = ‘OTF’.
    desired_type = otf.
    ELSE.
    desired_type = ali.
    ENDIF.
    CALL FUNCTION ‘RSPO_RETURN_SPOOLJOB’
    EXPORTING
    rqident = src_spoolid
    desired_type = desired_type
    IMPORTING
    real_type = real_type
    TABLES
    buffer = l_objcont
    EXCEPTIONS
    no_such_job = 14
    type_no_match = 94
    job_contains_no_data = 54
    no_permission = 21
    can_not_access = 21
    read_error = 54.
    IF sy-subrc EQ 0.
    attach_type = real_type.
    ENDIF.
    CALL FUNCTION ‘SO_FOLDER_ROOT_ID_GET’
    EXPORTING
    owner = sy-uname
    region = ou_fol
    IMPORTING
    folder_id = l_folder_id
    EXCEPTIONS
    OTHERS = 5.
    fill out informations about the header of the email
    CLEAR: g_document.
    g_document-foltp = l_folder_id-foltp.
    g_document-folyr = l_folder_id-folyr.
    g_document-folno = l_folder_id-folno.
    g_document-objtp = c_objtp.
    g_document-objdes = header_mail.
    g_document-file_ext = c_file_ext.
    g_header_data-objdes = header_mail.
    CALL FUNCTION ‘SO_DOCUMENT_REPOSITORY_MANAGER’
    EXPORTING
    method = ‘SAVE’
    office_user = sy-uname
    IMPORTING
    authority = g_authority
    TABLES
    attachments = lt_attachments
    CHANGING
    document = g_document
    header_data = g_header_data
    EXCEPTIONS
    OTHERS = 1.
    folder_id-objtp = l_folder_id-foltp.
    folder_id-objyr = l_folder_id-folyr.
    folder_id-objno = l_folder_id-folno.
    object_id-objtp = c_objtp.
    object_id-objyr = g_document-objyr.
    object_id-objno = g_document-objno.
    link_folder_id-objtp = l_folder_id-foltp.
    link_folder_id-objyr = l_folder_id-folyr.
    link_folder_id-objno = l_folder_id-folno.
    REFRESH lt_rec_tab.
    LOOP AT LIST_FAX_MAIL_NUMBER.
    lt_rec_tab-recextnam = LIST_FAX_MAIL_NUMBER-LINE.
    lt_rec_tab-recesc = ‘U’.
    lt_rec_tab-sndart = ‘INT’.
    lt_rec_tab-sndpri = 1.
    APPEND lt_rec_tab.
    ENDLOOP.
    lt_files-file = c_file.
    APPEND lt_files.
    hd_dat-objdes = header_mail.
    CALL FUNCTION ‘SO_ATTACHMENT_INSERT’
    EXPORTING
    object_id = object_id
    attach_type = attach_type
    object_hd_change = hd_dat
    owner = sy-uname
    TABLES
    objcont = l_objcont
    objhead = l_objhead
    EXCEPTIONS
    active_user_not_exist = 35
    communication_failure = 71
    object_type_not_exist = 17
    operation_no_authorization = 21
    owner_not_exist = 22
    parameter_error = 23
    substitute_not_active = 31
    substitute_not_defined = 32
    system_failure = 72
    x_error = 1000.
    IF sy-subrc > 0.
    ENDIF.
    send email from SAPOFFICE
    CALL FUNCTION ‘SO_OBJECT_SEND’
    EXPORTING
    folder_id = folder_id
    object_id = object_id
    outbox_flag = outbox_flag
    link_folder_id = link_folder_id
    owner = sy-uname
    TABLES
    receivers = lt_rec_tab
    note_text = lt_note_text
    EXCEPTIONS
    active_user_not_exist = 35
    communication_failure = 71
    component_not_available = 1
    folder_no_authorization = 5
    folder_not_exist = 6
    forwarder_not_exist = 8
    object_no_authorization = 13
    object_not_exist = 14
    object_not_sent = 15
    operation_no_authorization = 21
    owner_not_exist = 22
    parameter_error = 23
    substitute_not_active = 31
    substitute_not_defined = 32
    system_failure = 72
    too_much_receivers = 73
    user_not_exist = 35.
    ENDFUNCTION.
    regards,
    srinivas
    <b>*reward for useful answers*</b>

  • Background job output

    I schedule a job in backgroung proces(smartform).
    Whwn i click on the spool  to see the output ,  there is  error  "NO FRONTEND AVAILABALE" .
    how can i see my output of the back ground  job (smartforms).
    i am executing the process  like 
    1. tcode run
    2. F9  ( FOR BACKGROUND PROCESS)
    3. se37  to see the job proceesing
    4. click on spool
    5. but no  ouput i can see
    i don't know why??

    Hi Ajay,
    Please search form with '
    Mulitple Purchase order Print in SAP Script'
    the thread shows below.
    If your requirement is to print multiple PO's then i think you need to develop a Program .
    In that in your final internal table you can loop it and print...
    And also these setting need for background job.
    If you have smartforms you can set following parameters
    CALL FUNCTION LV_FM_NAME
    EXPORTING
    ARCHIVE_INDEX =
    ARCHIVE_INDEX_TAB =
    ARCHIVE_PARAMETERS =
    CONTROL_PARAMETERS = CONTROL
    MAIL_APPL_OBJ =
    MAIL_RECIPIENT =
    MAIL_SENDER =
    OUTPUT_OPTIONS = OUTPUT_OPTIONS
    USER_SETTINGS = ' '
    VEHICLE = VEHICLE
    LV_BAR = LV_BAR
    IMPORTING
    DOCUMENT_OUTPUT_INFO =
    JOB_OUTPUT_INFO =
    JOB_OUTPUT_OPTIONS =
    TABLES
    IT_FINAL = IT_FINAL
    EXCEPTIONS
    FORMATTING_ERROR = 1
    INTERNAL_ERROR = 2
    SEND_ERROR = 3
    USER_CANCELED = 4
    OTHERS = 5
    IF SY-SUBRC 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CONTROL-PREVIEW = 'X'. "Preview the output of Smartform
    CONTROL-NO_DIALOG = 'X'. "Don't show Dialog
    OUTPUT_OPTIONS-TDDEST =  'X' or space. "Spool: Output device(depend on requirement)
    OUTPUT_OPTIONS-TDNOPRINT = ' '. "No printing from print preview
    OUTPUT_OPTIONS-TDCOPIES = 1. " number of print copies
    OUTPUT_OPTIONS-TDIMMED = 'X'. " Print Immediately (Print Parameters)
    OUTPUT_OPTIONS-TDDELETE = 'X'. " delete the request after printing
    OUTPUT_OPTIONS-TDLIFETIME = '5'. " spool retention period
    OUTPUT_OPTIONS-TDCOVER = ' '. " no cover print
    If you want immediate output while setting background set printer property time of print "Immediate"
    Hope this will help to you.
    Thanks,
    Hari

  • Need to avoid pop-up screen while printing shop paper

    hi all ,
    we have develop a z program to print shop paper for selected orders based on selection criteria. Once the output displayed (out put contain shop paper , printer,order no and operation no )for selection criteria user will select one or many records from output and click on print button. Once user select the print button the spool request has to be created,
    problem :- when we select the print button in output display we are getting print pop-up screen
    OutputDevice      
    Frontend printer HP
    Copies           1
    Page selection                     
    Name           
    Title          
    Authorization    
    Spool retention pe
    Archiving mode   
       Thanks in advance
    jayasankar

    hi all ,
    we have develop a z program to print shop paper for selected orders based on selection criteria. Once the output displayed (out put contain shop paper , printer,order no and operation no )for selection criteria user will select one or many records from output and click on print button. Once user select the print button the spool request has to be created,
    problem :- when we select the print button in output display we are getting print pop-up screen
    OutputDevice      
    Frontend printer HP
    Copies           1
    Page selection                     
    Name           
    Title          
    Authorization    
    Spool retention pe
    Archiving mode   
       Thanks in advance
    jayasankar

  • Archive FI_DOCUMNT Doc.Type :All

    Hi Experts,
    Now I am doing archiving in FI Module.Business object is FI_DOCUMENT,Document type: All.
    The total No of records to be archived: 8,50,000.
    Period wise  i am doing archiving,while doing archiving Read action is taking more time for execution.
    Can i skip the Read action?,means after write action can i go for direct Delete action.
    is there any issue for skipping Read action?
    Thanks and Regards,
    Veera.

    yes,i got reply from SAP,we can skip read action,before that in variant creation we should maintain this,
    Spool Parameters: spool retent period: do not delete
                                  select cover page check box enable
    then in variant
    Detail Log:Complete
    Log output:List and Application Log.
    we can get detail log after write action job completed.
    Regards,
    veera.

Maybe you are looking for