In need of a constant

I have a composite project. Basically one big .dacpac surrounded with four smaller .dacpacs set up with different collations and a handful of user defined functions not found in the main .dacpac.
Even though the differences are small, I would like to protect the user from applying the wrong .dacpac.
Each share the same pre- and postdeployment script. If I could access the project name from the script, or access a constant value of some sort, then that would be very helpful.
I thought SQLCMD Variables could do the trick, but I do not like their visibility in the publishing profiles. Nor would I want them to be overridable on the command line.
Is there such a thing as a SQLCMD Constant I can define? Or better yet: How do I fetch the name of the project that my script has been built into?

If you need to consider removing 30MB folders to create space then I imagine your hdd is seriously short of space. Normally I think it is often suggested a minimum of 20-25% free space be left on a Windows machine hdd. How much free space % wise have you at present.
You probably have already thought of these, a lack of space could slow things down and may even contribute to crash problems.
*Not using the Hibernate feature will release one largish chunk.
*Not keeping video files on the HDD unnecessarily is also likely to save space.

Similar Messages

  • I need help resolving constant crashes

    I found that certain programs seem to crash constantly (ie Firefox).  When I report the error and attempt to restart, the crashes occur more frequently.  If I restart the computer, everything is fine...for a while.
    Also, I have been getting the forced shut down menu (forgot exactly what it's called).
    Here is the most recent "error" description.
    Interval Since Last Panic Report:  206746 sec
    Panics Since Last Report:          4
    Anonymous UUID:                    44825357-F6D1-4702-B44A-1F1CDEB55D81
    Fri May 18 16:54:27 2012
    panic(cpu 2 caller 0xffffff80002c473a): Kernel trap at 0xffffff7f816b0a8c, type 14=page fault, registers:
    CR0: 0x0000000080010033, CR2: 0xffffff812a38cb50, CR3: 0x000000011e34a00c, CR4: 0x00000000000606e0
    RAX: 0x00000000000eec40, RBX: 0xffffff80139ba000, RCX: 0xffffff812a38cb4c, RDX: 0xffffff7f816b0ca4
    RSP: 0xffffff80f022b9f0, RBP: 0xffffff80f022ba10, RSI: 0xffffff80139ba720, RDI: 0xffffff80139ba000
    R8:  0x0000000000002ffa, R9:  0x0000000006bb3080, R10: 0x0000000000000000, R11: 0xffffff80f1f70000
    R12: 0xffffff8014eacd88, R13: 0xffffff80139ba000, R14: 0xffffff80f022bb20, R15: 0xffffff80139ba720
    RFL: 0x0000000000010202, RIP: 0xffffff7f816b0a8c, CS:  0x0000000000000008, SS:  0x0000000000000010
    CR2: 0xffffff812a38cb50, Error code: 0x0000000000000000, Faulting CPU: 0x2
    Backtrace (CPU 2), Frame : Return Address
    0xffffff80f022b6a0 : 0xffffff8000220792
    0xffffff80f022b720 : 0xffffff80002c473a
    0xffffff80f022b8d0 : 0xffffff80002da0cd
    0xffffff80f022b8f0 : 0xffffff7f816b0a8c
    0xffffff80f022ba10 : 0xffffff7f816ff0ea
    0xffffff80f022ba30 : 0xffffff7f816b41a6
    0xffffff80f022bb60 : 0xffffff7f816b12bd
    0xffffff80f022bbc0 : 0xffffff800065501e
    0xffffff80f022bbe0 : 0xffffff80006558fa
    0xffffff80f022bc40 : 0xffffff800065609b
    0xffffff80f022bd80 : 0xffffff80002a3f08
    0xffffff80f022be80 : 0xffffff8000223096
    0xffffff80f022beb0 : 0xffffff80002148a9
    0xffffff80f022bf10 : 0xffffff800021bbd8
    0xffffff80f022bf70 : 0xffffff80002aef20
    0xffffff80f022bfb0 : 0xffffff80002daa33
          Kernel Extensions in backtrace:
             com.apple.driver.AppleIntelHD3000Graphics(7.1.8)[3907A4CB-8AA1-3F6B-B052-8BA001 8E9C83]@0xffffff7f816a8000->0xffffff7f81788fff
                dependency: com.apple.iokit.IOPCIFamily(2.6.8)[F63D4ABE-42DA-33EF-BADD-3415B0CB0179]@0xffff ff7f80843000
                dependency: com.apple.iokit.IONDRVSupport(2.3.2)[D05CFB53-FB72-3613-8162-2D188DB04738]@0xff ffff7f80c68000
                dependency: com.apple.iokit.IOGraphicsFamily(2.3.2)[2D2A4A31-EB4F-3730-BE3A-76C061685FC5]@0 xffffff7f80c30000
    BSD process name corresponding to current thread: Twitter
    Mac OS version:
    11E53
    Kernel version:
    Darwin Kernel Version 11.4.0: Mon Apr  9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64
    Kernel UUID: A8ED611D-FB0F-3729-8392-E7A32C5E7D74
    System model name: MacBookPro8,1 (Mac-94245B3640C91C81)
    System uptime in nanoseconds: 6692928294157
    last loaded kext at 2951795250748: com.apple.filesystems.smbfs    1.7.2 (addr 0xffffff7f80791000, size 241664)
    last unloaded kext at 106132981287: com.apple.driver.AppleUSBUHCI    4.4.5 (addr 0xffffff7f80a51000, size 65536)
    loaded kexts:
    com.Symantec.kext.SAVAPComm    11.0.6
    com.apple.filesystems.smbfs    1.7.2
    com.apple.driver.AppleHWSensor    1.9.5d0
    com.apple.driver.AppleMikeyHIDDriver    122
    com.apple.driver.AudioAUUC    1.59
    com.apple.driver.AppleUpstreamUserClient    3.5.9
    com.apple.driver.AppleMCCSControl    1.0.26
    com.apple.driver.AppleHDA    2.2.0f3
    com.apple.driver.AppleMikeyDriver    2.2.0f3
    com.apple.driver.AGPM    100.12.42
    com.apple.driver.AppleIntelHD3000Graphics    7.1.8
    com.apple.driver.SMCMotionSensor    3.0.2d6
    com.apple.driver.AppleSMCPDRC    5.0.0d0
    com.apple.driver.AppleSMCLMU    2.0.1d2
    com.apple.iokit.IOUserEthernet    1.0.0d1
    com.apple.iokit.IOBluetoothSerialManager    4.0.5f11
    com.apple.Dont_Steal_Mac_OS_X    7.0.0
    com.apple.driver.AudioIPCDriver    1.2.2
    com.apple.driver.ACPI_SMC_PlatformPlugin    5.0.0d0
    com.apple.driver.AppleBacklight    170.1.9
    com.apple.driver.AppleLPC    1.5.8
    com.apple.filesystems.autofs    3.0
    com.apple.driver.BroadcomUSBBluetoothHCIController    4.0.5f11
    com.apple.driver.AppleUSBTCButtons    225.2
    com.apple.driver.AppleUSBTCKeyboard    225.2
    com.apple.driver.AppleIRController    312
    com.apple.iokit.SCSITaskUserClient    3.2.0
    com.apple.AppleFSCompression.AppleFSCompressionTypeDataless    1.0.0d1
    com.apple.AppleFSCompression.AppleFSCompressionTypeZlib    1.0.0d1
    com.apple.BootCache    33
    com.apple.driver.XsanFilter    404
    com.apple.iokit.IOAHCISerialATAPI    2.0.3
    com.apple.iokit.IOAHCIBlockStorage    2.0.3
    com.apple.driver.AppleUSBHub    4.5.0
    com.apple.driver.AppleFWOHCI    4.8.9
    com.apple.driver.AirPort.Brcm4331    530.4.20
    com.apple.driver.AppleSDXC    1.2.0
    com.apple.iokit.AppleBCM5701Ethernet    3.1.2b2
    com.apple.driver.AppleEFINVRAM    1.5.0
    com.apple.driver.AppleSmartBatteryManager    161.0.0
    com.apple.driver.AppleAHCIPort    2.3.0
    com.apple.driver.AppleUSBEHCI    4.5.8
    com.apple.driver.AppleACPIButtons    1.5
    com.apple.driver.AppleRTC    1.5
    com.apple.driver.AppleHPET    1.6
    com.apple.driver.AppleSMBIOS    1.8
    com.apple.driver.AppleACPIEC    1.5
    com.apple.driver.AppleAPIC    1.5
    com.apple.driver.AppleIntelCPUPowerManagementClient    193.0.0
    com.apple.nke.applicationfirewall    3.2.30
    com.apple.security.quarantine    1.3
    com.apple.driver.AppleIntelCPUPowerManagement    193.0.0
    com.apple.driver.DspFuncLib    2.2.0f3
    com.apple.driver.AppleSMBusController    1.0.10d0
    com.apple.iokit.IOSurface    80.0.2
    com.apple.iokit.IOSerialFamily    10.0.5
    com.apple.iokit.IOFireWireIP    2.2.4
    com.apple.driver.AppleHDAController    2.2.0f3
    com.apple.iokit.IOHDAFamily    2.2.0f3
    com.apple.iokit.IOAudioFamily    1.8.6fc17
    com.apple.kext.OSvKernDSPLib    1.3
    com.apple.driver.AppleSMC    3.1.3d8
    com.apple.driver.IOPlatformPluginLegacy    5.0.0d0
    com.apple.driver.ApplePolicyControl    3.0.16
    com.apple.driver.AppleSMBusPCI    1.0.10d0
    com.apple.driver.AppleGraphicsControl    3.0.16
    com.apple.driver.AppleBacklightExpert    1.0.3
    com.apple.iokit.IONDRVSupport    2.3.2
    com.apple.driver.IOPlatformPluginFamily    5.1.0d17
    com.apple.driver.AppleIntelSNBGraphicsFB    7.1.8
    com.apple.iokit.IOGraphicsFamily    2.3.2
    com.apple.kext.triggers    1.0
    com.apple.driver.AppleUSBBluetoothHCIController    4.0.5f11
    com.apple.iokit.IOBluetoothFamily    4.0.5f11
    com.apple.driver.AppleThunderboltDPInAdapter    1.8.2
    com.apple.driver.AppleThunderboltDPAdapterFamily    1.8.2
    com.apple.driver.AppleThunderboltPCIDownAdapter    1.2.4
    com.apple.driver.AppleUSBMultitouch    227.1
    com.apple.iokit.IOUSBHIDDriver    4.4.5
    com.apple.driver.AppleUSBMergeNub    4.5.3
    com.apple.driver.AppleUSBComposite    4.5.8
    com.apple.iokit.IOSCSIMultimediaCommandsDevice    3.2.0
    com.apple.iokit.IOBDStorageFamily    1.6
    com.apple.iokit.IODVDStorageFamily    1.7
    com.apple.iokit.IOCDStorageFamily    1.7
    com.apple.iokit.IOSCSIArchitectureModelFamily    3.2.0
    com.apple.driver.AppleThunderboltNHI    1.5.5
    com.apple.iokit.IOThunderboltFamily    2.0.0
    com.apple.iokit.IOUSBUserClient    4.5.8
    com.apple.iokit.IOFireWireFamily    4.4.5
    com.apple.iokit.IO80211Family    420.3
    com.apple.iokit.IOEthernetAVBController    1.0.1b1
    com.apple.iokit.IONetworkingFamily    2.1
    com.apple.iokit.IOAHCIFamily    2.0.8
    com.apple.iokit.IOUSBFamily    4.5.8
    com.apple.driver.AppleEFIRuntime    1.5.0
    com.apple.iokit.IOHIDFamily    1.7.1
    com.apple.iokit.IOSMBusFamily    1.1
    com.apple.security.sandbox    177.5
    com.apple.kext.AppleMatch    1.0.0d1
    com.apple.security.TMSafetyNet    7
    com.apple.driver.DiskImages    331.6
    com.apple.iokit.IOStorageFamily    1.7.1
    com.apple.driver.AppleKeyStore    28.18
    com.apple.driver.AppleACPIPlatform    1.5
    com.apple.iokit.IOPCIFamily    2.6.8
    com.apple.iokit.IOACPIFamily    1.4
    Model: MacBookPro8,1, BootROM MBP81.0047.B27, 2 processors, Intel Core i5, 2.4 GHz, 8 GB, SMC 1.68f98
    Graphics: Intel HD Graphics 3000, Intel HD Graphics 3000, Built-In, 512 MB
    Memory Module: BANK 0/DIMM0, 4 GB, DDR3, 1333 MHz, 0x029E, 0x434D534F344758334D314131333333433920
    Memory Module: BANK 1/DIMM0, 4 GB, DDR3, 1333 MHz, 0x029E, 0x434D534F344758334D314131333333433920
    AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0xD6), Broadcom BCM43xx 1.0 (5.106.198.4.20)
    Bluetooth: Version 4.0.5f11, 2 service, 11 devices, 1 incoming serial ports
    Network Service: Wi-Fi, AirPort, en1
    Serial ATA Device: TOSHIBA MK5065GSXF, 500.11 GB
    Serial ATA Device: OPTIARC DVD RW AD-5970H
    USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfa100000 / 3
    USB Device: Apple Internal Keyboard / Trackpad, apple_vendor_id, 0x0252, 0xfa120000 / 5
    USB Device: BRCM2070 Hub, 0x0a5c  (Broadcom Corp.), 0x4500, 0xfa110000 / 4
    USB Device: Bluetooth USB Host Controller, apple_vendor_id, 0x821a, 0xfa113000 / 8
    USB Device: FaceTime HD Camera (Built-in), apple_vendor_id, 0x8509, 0xfa200000 / 2
    USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfd100000 / 2
    USB Device: IR Receiver, apple_vendor_id, 0x8242, 0xfd110000 / 3
    Could someone please advise me on what to do?
    I also put in new RAM, but that was about 3-4 weeks ago and I had no problem.  These issues didn't start until a few days ago.
    Thanks!

    Please read this whole message before doing anything.
    This procedure is a diagnostic test. It’s unlikely to solve your problem. Don’t be disappointed when you find that nothing has changed after you complete it.
    The purpose of this exercise is to determine whether the problem is caused by third-party system modifications that load automatically at startup or login. Disconnect all wired peripherals except those needed for the test, and remove all aftermarket expansion cards. Boot in safe mode and log in to the account with the problem. The instructions provided by Apple are as follows:
    Be sure your Mac is shut down.
    Press the power button.
    Immediately after you hear the startup tone, hold the Shift key. The Shift key should be held as soon as possible after the startup tone, but not before the tone.
    Release the Shift key when you see the gray Apple icon and the progress indicator (looks like a spinning gear).
    Note: If FileVault is enabled under Mac OS X 10.7 or later, you can’t boot in safe mode.
    Safe mode is much slower to boot and run than normal, and some things won’t work at all, including wireless networking on certain Macs.
    The login screen appears even if you usually log in automatically. You must know your login password in order to log in. If you’ve forgotten the password, you will need to reset it before you begin.
    Test while in safe mode. Same problem(s)?
    After testing, reboot as usual (i.e., not in safe mode) and verify that you still have the problem. Post the results of the test.

  • Need to remove constant humming sound

    Hello all,
    I am working on video clips for school and the room was quiet that I was in and played back ok on the camera, but after getting them into FCE 4 there is a loud humming noise. I have attempted using various audio filters and am a beginner with that. All I have had practice with is changing audio levels, etc.
    Any tips?? Any comments welcome. Thanks.

    Hi
    If it's OK in Camera - Cheque Cables (test other) - Keep Camera on Mains or try all Battery
    and see if this helps.
    The problem is best handled in Camera / Mac connection - not afterwards with eg filters
    will never be as good.
    If everything fails - I would Use a program "SoundSoap™" That handles noice as
    good as I know of.
    Yours Bengt W

  • Runtime Constant in XSLT :-(

    Hi together,
    I have one problem with constant at the runtime.
    The tag <RCVPRN> is empty, but I need this for my IDoc communication.
    In the SAP help stands this:
    Runtime Constants
    $ReceiverService
    Service on the receiver side that receives the message. For example, the name of a business system.
    As of SAP XI 3.0, use this constant instead of the constant RECEIVER_SYSTEM used previously.
    Yes
    See also: Service
    If you want to access one of the constants in the XSLT program, you first have to declare the constant as a parameter, for example:
    <xsl:param name="MessageId" />
    In my XSLT mapping I have this:
    <RCVPOR>empty</RCVPOR>
    <RCVPRT>LS</RCVPRT>
    <xsl:param name="ReceiverService"/>
    <RCVPRN>
    <xsl:value-of select="$ReceiverService"/>
    </RCVPRN>
    </EDI_DC40>
    But during the runtime the constant is empty
      <RCVPOR>empty</RCVPOR>
      <RCVPRT>LS</RCVPRT>
      <RCVPRN />
       </EDI_DC40>
    Have you an idea for my problem?
    Bye
    Stefan

    Hi Udo/all,
    Thank you for your answer.
    Please see in my last post:
    Idoc with XSLT Mapping ALE service error
    I mark in my channel:
    Take Sender from Payload and Take Receiver from Payload
    I must set control field by xslt maping, because the receiver is flexible.
    With your setting I became a converting error to an ALE logical system.
    I need the runtime constant in the xslt mapping.
    Idea?
    bye
    stefan

  • Hi all   report that sends email shows popup window needs to be supressed

    hi all
    i have developed a report that sends email as an attachement, but this report pops up a window in the end ( it says 'no of objext sent') and there i have to press enter, but my report is running in the background (scheduled report) and therefore there should be no pop ups in the report.
    question is how to avoid popup window in the following program.
    below is my code
    just enter your email id in the code and it will run anywhere.
    TABLES: ekko.
    *PARAMETERS: p_email   TYPE somlreci1-receiver
                                     DEFAULT '[email protected]'.
    TYPES: BEGIN OF t_ekpo,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
    END OF t_ekpo.
    DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,
          wa_ekpo TYPE t_ekpo.
    TYPES: BEGIN OF t_charekpo,
      ebeln(10) TYPE c,
      ebelp(5)  TYPE c,
      aedat(8)  TYPE c,
      matnr(18) TYPE c,
    END OF t_charekpo.
    DATA: wa_charekpo TYPE t_charekpo.
    DATA:   it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
            t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
            t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            w_cnt TYPE i,
            w_sent_all(1) TYPE c,
            w_doc_data LIKE sodocchgi1,
            gd_error    TYPE sy-subrc,
            gd_reciever TYPE sy-subrc.
    *START_OF_SELECTION
    START-OF-SELECTION.
      Retrieve sample data from table ekpo
      PERFORM data_retrieval.
      Populate table with detaisl to be entered into .xls file
      PERFORM build_xls_data_table.
    *END-OF-SELECTION
    END-OF-SELECTION.
    Populate message body text
      perform populate_email_message_body.
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   tables it_message
                                          it_attach
                                    using         " p_email
                                        'Example .xls documnet attachment'
                                          'XLS'
                                          'filename'
                                 changing gd_error
                                          gd_reciever.
      Instructs mail send program for SAPCONNECT to send email(rsconn01)
      PERFORM initiate_mail_execute_program.
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      SELECT ebeln ebelp aedat matnr
       UP TO 1 ROWS
        FROM ekpo
        INTO TABLE it_ekpo.
    ENDFORM.                    " DATA_RETRIEVAL
    *&      Form  BUILD_XLS_DATA_TABLE
          Build data table for .xls document
    FORM build_xls_data_table.
    CONSTANTS: con_cret TYPE x VALUE '0D',  "OK for non Unicode
                con_tab TYPE x VALUE '09'.   "OK for non Unicode
    *If you have Unicode check active in program attributes thnen you will
    *need to declare constants as follows
    class cl_abap_char_utilities definition load.
    constants:
        con_tab  type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
        con_cret type c value cl_abap_char_utilities=>CR_LF.
      CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
             INTO it_attach SEPARATED BY con_tab.
      CONCATENATE con_cret it_attach  INTO it_attach.
      APPEND  it_attach.
      LOOP AT it_ekpo INTO wa_charekpo.
        CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelp
                    wa_charekpo-aedat wa_charekpo-matnr
               INTO it_attach SEPARATED BY con_tab.
        CONCATENATE con_cret it_attach  INTO it_attach.
        APPEND  it_attach.
      ENDLOOP.
    ENDFORM.                    " BUILD_XLS_DATA_TABLE
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM send_file_as_email_attachment tables pit_message
                                              pit_attach
                                        using                  "p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                              p_sender_address
                                              p_sender_addres_type
                                     changing p_error
                                              p_reciever.
      DATA: ld_error    TYPE sy-subrc,
            ld_reciever TYPE sy-subrc,
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver value '[email protected]',
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver LIKE  sy-subrc.
    ld_email   = p_email.
      ld_mtitle = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
      ld_sender_address      = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = pit_attach[].
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.
    *&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
          Instructs mail send program for SAPCONNECT to send email.
    FORM initiate_mail_execute_program.
      WAIT UP TO 2 SECONDS.
      SUBMIT rsconn01 WITH mode = 'INT'
                    WITH output = 'X'.
                   AND RETURN.
    ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM
    *&      Form  POPULATE_EMAIL_MESSAGE_BODY
           Populate message body text
    form populate_email_message_body.
      REFRESH it_message.
      it_message = 'Please find attached a list test ekpo records'.
      APPEND it_message.
    thanx
    rocky

    hi rocky,
    pls comment the submit program form INITIATE_MAIL_EXECUTE_PROGRAM by default the email runs in background and there is no need to submit 'rsconn01'  it again to  that program where u actually get the pop-up...
    try it
    hope this helps
    regards,
    karthik

  • Mapping: constant to integer field

    Hello,
    I've a integer field in target. I've need mapping to constant value. How can i do it?
    Now,  i've:
    constant   ->   integer field
       5  
    in SXMB_MONI i can see the message with status waiting and no change
    i suppose that this value (constant) is a string, but i am not sure, how can i do this?
    thanks very much

    >
    silvia diego wrote:
    > Thanks to all,
    >
    > the message is waiting in 'integration engine', exactly MI_MT_PEDIDO_TRAS_ASY_INB
    >
    > i think the problem is this because when i delete this field in the data type the mapping is ok.
    If your message is waiting state and no change
    you can try  to register the Queues
    TCODE SXMB_ADM -> Manage Queues -> Register the Queues.
    Or run program: RSXMB_REGISTER_QUEUES .
    Regards
    Anika

  • How to make a Combination as Constant ?

    Hi guys,
      I need some help to make a combination of my 'BEx Selection' to be <b>Constant</b>
      On my 'Row Structure', I have one Characteristic called 'Securities Trading Value'. Here, I have restricted to 4 values say A, B, C and D.
      On my 'Column Structure', I have a combination of 'BEx Selections' like Audit 2005, Current Month, Previous Month, Variance and YTD Budget
      What I need to make constant is only the value with combination of Securities Trading Value = 'D' and YTD Budget='1004' .Hence at <b>all time</b>, the intersection of this 2 'selections' should be equal to 1004
      The other combination values, should be key-ed in as usual via BW-BPS.
      Please assist guys.

    Hi John,
    Not really sure if I understand your problem correctly, as
    in the row structure you have restricted 'Securities Trading Value' to 4 values say A, B, C, D and you want to restrict another constant based on value D.
    Have you tried using RKF to solve your problem.

  • Citadel database to store constants?

    can i use citadel database to store constants?
    normally use citadel to store trends of any variable (and work fine), but if i need store a constant value, for example the result of a test (user name, erorr, etc...).    i can do it using memory tags, but is a good practice?  or maybe the best way to do is with other database and the connectivity toolset?
    thanks for any answer!

    I've used memory tags for stuff like this and I've also Flatten to String on clusters and saved this string to a file. Then read the file back into labview and use the Unflatten from String with a cluster constant to get the original data.

  • Best Export Setting for TV 1080 with constant FPS

    1080 23.976fps  DSLR footage
    Coming from Final Cut Pro,  I would export a ProRes 1080 mov file for my TV.  This would give me a high quality playback.
    I have experimented with several export options in PP 6 and noticed choppy playback on my TV.  Upon closer inspection, the FPS appears to be changing with each frame. 
    What settings do I need for a constant 24fps with a high bitrate ?        

    4 Hours later, I am still waiting on the export of a 10 minute HD timeline.   The clips all have Magic Bullet on them but that's about all.    There must be a quicker workflow for this ?  
    My Final Cut workflow was the following...
    Export a 5-10 minute ProRes HD Sequence takes about 5 minutes!   I then open theProRes mov file and convert to H264 with a smaller dimension. I use quicktime player to make this conversion.  This takes me no more than 1 hour.   Total export and conversion with Apple's Final Cut averages about 1 hour and 20 minutes.

  • Constant Text with PE51 deppending on employee settlement

    Hello everybody!
    I have a problem with PE51 transaccion; I need to print a fix text in salary form ONLY when the employee's settlement is going to be paid.
    I was thinking in fit the text I need in a constant variable and show it deppending on a rule, but I don't know how to do that.
    Can anybody help me, please??
    Many thanks!
    Gemma

    I found a workaround for displaying text on intermediate results column.
    I created a column with constant text and hide it. And create a sort object for it.
    SUBTOTAL_SORTS->ADD_SORT(
                            EXPORTING
                              COLUMNNAME = 'KOSTL1'
                              GROUP = '1' ).
        SUBTOTAL_SORTS->ADD_SORT(
                            EXPORTING
                              COLUMNNAME = 'CSTTL'
                              SUBTOTAL = ABAP_TRUE ).
        SUBTOTAL_SORTS->ADD_SORT(
                            EXPORTING
                              COLUMNNAME = 'PERNR'
                              SUBTOTAL = ABAP_TRUE ).
    CSTTL column will have constant text. And its content will contain the text to be displayed. And it MUST be hidden.
    By creating a sort object and making SUBTOTAL to true, the content of column will be visible in the totals row.
    Earlier I used to do subtotal with KOSTL1 column. And this is the business requirement.
    To avoid disturbing this, the value of CSTTL will be same for given cost center and different from other cost centers. In my case,
    I am showing CC number, discription and employees count(concatenated string) as text. So am able to make the values of this column same for a cost center.
    So, at the end of records related to a cost center, the content of constant text column will be displayed with totals in the same row.
    I wish I could r.e.w.a.r.d myself.

  • File from the Application server

    Hi gurus,
    I am working on a scenario where I need to get a file from the application server and for this I need to ask user to enter the location and that too at the selection screen and then I need to read this location using open data set and read data set in my program , once I am done with this I need to do some other validations. so can you please help me out how to achieve this.
    Thanks
    Rajeev Gupta

    Hi
    Declare the selection screen with file as parameter so that the user enter the application server file..
    the use the OPEND DATASET  as mentioned in below code and process
    Refer this:
    http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3ca6358411d1829f0000e829fbfe/frameset.htm
    ABAP code for uploading a TAB delimited file into an internal table. See code below for structures.
    *& Report  ZUPLOADTAB                                                  *                     &----
    *& Example of Uploading tab delimited file                             *
    REPORT  zuploadtab                    .
    PARAMETERS: p_infile  LIKE rlgrap-filename
                            OBLIGATORY DEFAULT  '/usr/sap/'..
    DATA: ld_file LIKE rlgrap-filename.
    *Internal tabe to store upload data
    TYPES: BEGIN OF t_record,
        name1 like pa0002-VORNA,
        name2 like pa0002-name2,
        age   type i,
        END OF t_record.
    DATA: it_record TYPE STANDARD TABLE OF t_record INITIAL SIZE 0,
          wa_record TYPE t_record.
    *Text version of data table
    TYPES: begin of t_uploadtxt,
      name1(10) type c,
      name2(15) type c,
      age(5)  type c,
    end of t_uploadtxt.
    DATA: wa_uploadtxt TYPE t_uploadtxt.
    *String value to data in initially.
    DATA: wa_string(255) type c.
    constants: con_tab TYPE x VALUE '09'.
    *If you have Unicode check active in program attributes then you will
    *need to declare constants as follows:
    *class cl_abap_char_utilities definition load.
    *constants:
       con_tab  type c value cl_abap_char_utilities=>HORIZONTAL_TAB.
    *START-OF-SELECTION
    START-OF-SELECTION.
    ld_file = p_infile.
    OPEN DATASET ld_file FOR INPUT IN TEXT MODE ENCODING DEFAULT.
    IF sy-subrc NE 0.
    ELSE.
      DO.
        CLEAR: wa_string, wa_uploadtxt.
        READ DATASET ld_file INTO wa_string.
        IF sy-subrc NE 0.
          EXIT.
        ELSE.
          SPLIT wa_string AT con_tab INTO wa_uploadtxt-name1
                                          wa_uploadtxt-name2
                                          wa_uploadtxt-age.
          MOVE-CORRESPONDING wa_uploadtxt TO wa_upload.
          APPEND wa_upload TO it_record.
        ENDIF.
      ENDDO.
      CLOSE DATASET ld_file.
    ENDIF.
    *END-OF-SELECTION
    END-OF-SELECTION.
    *!! Text data is now contained within the internal table IT_RECORD
    Display report data for illustration purposes
      loop at it_record into wa_record.
        write:/     sy-vline,
               (10) wa_record-name1, sy-vline,
               (10) wa_record-name2, sy-vline,
               (10) wa_record-age, sy-vline.
      endloop.
    Regards
    Anji

  • Button in alv grid cell using REUSE_ALV_GRID_DISPLAY

    Hi all,
      I want to make the contents of 2 columns of my alv grid as push button with values as text on it. I am not using classes or methods but alv grid fm. On clicking the button one dialog box has to pop up which gives edit option for the values in that coloumn, my question is how to introduce button in alv grid cell? if i can use t_fieldcatalog-icon, then please give me the complete steps for that.
    Thanks.

    this may helps u
    u need to copy stadard screen elemetn to MARATAB1(at PF -STATUS)
    You should copy the 'STANDARD' GUI status from program <b>SAPLSLVC_FULLSCREEN</b>
    type this one in SE41 program name is:<b>SAPLSLVC_FULLSCREEN</b>
    status : <b>STANDARD_FULLSCREEN</b>
    and copy it ...
             Type-pool
    type-pools slis.
             Tables
    tables: mara,sscrfields.
           Selection screen
    select-options: s_matnr for mara-matnr.
    PARAMETERS: p_email TYPE somlreci1-receiver.
    TYPES: BEGIN OF t_charmara,
      matnr(18)  TYPE c,                   " Material Number
      ernam(12)  TYPE c,                   " Person Credited
      aenam(12)  TYPE c,                   " Person Changed Object
      pstat(15)  TYPE c,                   " Maintenance Status
    END OF t_charmara.
             Data Declarations
    data: rt_extab    type slis_t_extab,   " Table of inactive function
                                           codes
          wa_charmara TYPE t_charmara,     " work area of mara Table
          fs_fieldcat type slis_t_fieldcat_alv,
                                           " Field catalog with field
                                           descriptions
          t_fieldcat  like line of fs_fieldcat,
                                           " Table of Field catalog
          r_ucomm     like sy-ucomm,       " User Command
          rs_selfield TYPE slis_selfield.  " cursor position ALV
    data: filedlayout   type slis_layout_alv,
          heading       type slis_t_listheader with header line,
          t_event       type slis_t_event.
    data: fs_event      like line of t_event.
    data: fs_sort type slis_sortinfo_alv,
           t_sort type slis_t_sortinfo_alv.
    data: w_char(200) type c,
          w_matnr     type mara-matnr.
    fs_sort-fieldname = 'MATNR'.
    fs_sort-up        = 'X'.
    fs_sort-group     = '*'.
    append fs_sort to t_sort.
    clear fS_sort.
    DATA:   t_packing_list  LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
            t_contents      LIKE solisti1   OCCURS 0 WITH HEADER LINE,
            t_receivers     LIKE somlreci1  OCCURS 0 WITH HEADER LINE,
            t_attachment    LIKE solisti1   OCCURS 0 WITH HEADER LINE,
            t_object_header LIKE solisti1   OCCURS 0 WITH HEADER LINE,
            w_cnt           TYPE i,
            w_sent_all(1)   TYPE c,
            w_doc_data      LIKE sodocchgi1,
            gd_error        TYPE sy-subrc,
            gd_reciever     TYPE sy-subrc.
             Internal Tables
    data: begin of it_mara occurs 0,
            matnr like mara-matnr,         " Material Number
            ernam like mara-ernam,         " Person Credited
            aenam like mara-aenam,         " Person Changed Object
            pstat like mara-pstat,         " Maintenance Status
          end of it_mara.
    DATA:   it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    *at selection-screen on field event
    AT SELECTION-SCREEN on s_matnr.
    PERFORM f0100_VALIDATE_MATERIAL_NUMBER.
    start-of-selection.
    retrive Data from the data base table Mara
    perform retrive_data_from_mara.
    end-of-selection.
    *Field catalog with field descriptions
    perform fieldcat.
    *perform top_of_page.
    PERFORM EVENT_LIST.
    *ALV Grid Display
    perform alv_display.
    Creating one Push button ENTER
    perform maratab1 USING    RT_EXTAB.
    *&      Form  f0100_VALIDATE_MATERIAL_NUMBER
          text
    There are no interface parameters to be passed to this subroutine
    FORM F0100_VALIDATE_MATERIAL_NUMBER .
    select matnr                          " Material Number
       from mara
      up to 1 rows
       into mara-matnr
      where matnr in s_matnr.
      endselect.
    IF sy-subrc NE 0.
          clear sscrfields-ucomm.
          MESSAGE e000 WITH 'Enter valid Material number'(003).
        ENDIF.                             " IF sy-subrc NE 0
    ENDFORM.                               " f0100_VALIDATE_MATERIAL_NUMBER
    *&      Form  retrive_data_from_mara
          text
    *There are no interface parameters to be passed to this subroutine
    FORM retrive_data_from_mara .
    select   matnr                         " Material Number
             ernam                         " Person Credited
             aenam                         " Person Changed Object
             pstat                         " Maintenance Status
        from mara
        into table It_mara
       where matnr in s_matnr.
    IF sy-subrc NE 0.
          MESSAGE i001 WITH 'Records are not found'.
          exit.
          stop.
        ENDIF.                             " IF sy-subrc NE 0
    ENDFORM.                               " retrive_data_from_mara
    *&      Form  fieldcat
          text
    *There are no interface parameters to be passed to this subroutine
    FORM fieldcat .
    *field catalog for MATNR
      t_FIELDCAT-REF_TABNAME = 'MARA'.
      t_fieldcat-fieldname   = 'MATNR'.
      t_fieldcat-col_pos     = 1.
      append t_fieldcat to fs_fieldcat.
      clear t_fieldcat.
    *field catalog for ERNAM
      t_FIELDCAT-REF_TABNAME = 'MARA'.
      t_fieldcat-fieldname   = 'ERNAM'.
      t_fieldcat-col_pos     = 2.
      append t_fieldcat to fs_fieldcat.
      clear t_fieldcat.
    *field catalog for AENAM
      t_FIELDCAT-REF_TABNAME = 'MARA'.
      t_fieldcat-fieldname   = 'AENAM'.
      t_fieldcat-col_pos     = 3.
      append t_fieldcat to fs_fieldcat.
      clear t_fieldcat.
    *field catalog for PSTAT
      t_FIELDCAT-REF_TABNAME = 'MARA'.
      t_fieldcat-fieldname   = 'PSTAT'.
      t_fieldcat-col_pos     = 4.
      append t_fieldcat to fs_fieldcat.
      clear t_fieldcat.
    ENDFORM.                               " fieldcat
    *&      Form  EVENT_LIST
          text
    *There are no interface parameters to be passed to this subroutine
    FORM EVENT_LIST .
      fs_event-name ='TOP_OF_PAGE'.
      fs_event-form = 'TOP_PAGE'.
      append fs_event TO t_EVENT.
      CLEAR FS_EVENT.
      fs_event-name ='END_OF_PAGE'.
      fs_event-form = 'END_PAGE'.
      append fs_event TO t_EVENT.
      CLEAR FS_EVENT.
      fs_event-name ='END_OF_LIST'.
      fs_event-form = 'LIST_END'.
      append fs_event TO t_EVENT.
      CLEAR FS_EVENT.
    ENDFORM.                               " EVENT_LIST
    *&      Form  alv_display
          text
    *There are no interface parameters to be passed to this subroutine
    FORM alv_display .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
       I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET       = 'MARATAB1'
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
      I_STRUCTURE_NAME               =
      IS_LAYOUT                      =
       IT_FIELDCAT                    = FS_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
       IT_SORT                        = T_SORT
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     =
       IT_EVENTS                      = T_EVENT
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
      IR_SALV_LIST_ADAPTER           =
      IT_EXCEPT_QINFO                =
      I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
      TABLES
        T_OUTTAB                       = IT_MARA[]
    EXCEPTIONS
      PROGRAM_ERROR                  = 1
      OTHERS                         = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                               " alv_display
    form TOP_PAGE.
      data:tbl_listheader type slis_t_listheader,
            wa_listheader type slis_listheader .
       wa_listheader-typ = 'S'.
       wa_listheader-info = 'Created by : Vijay Pawar'.
       append wa_listheader to tbl_listheader.
       wa_listheader-typ = 'S'.
       concatenate ' Date ' sy-datum into
                  wa_listheader-info separated by space.
        append wa_listheader to tbl_listheader.
       wa_listheader-typ = 'S'.
       concatenate ' From ' s_matnr-low '  To  ' s_matnr-high into
                           wa_listheader-info separated by space.
       append wa_listheader to tbl_listheader.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = tbl_listheader
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    endform.                               " form TOP_PAGE.
    form END_PAGE.
      STATICS W_PAGE TYPE I .
      data:tbl_listheader type slis_t_listheader,
            wa_listheader type slis_listheader .
      wa_listheader-typ   = 'S'.
      wa_listheader-info  = W_PAGE.
      append wa_listheader to tbl_listheader.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = tbl_listheader
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    add 1 to w_page.
    endform.                               " form END_PAGE.
    form list_end.
      data:tbl_listheader type slis_t_listheader,
      wa_listheader type slis_listheader .
      wa_listheader-typ = 'S'.
      wa_listheader-info = '......................................Last Page'
      append wa_listheader to tbl_listheader.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = tbl_listheader
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    endform.                               " form list_end.
    *&      Form  maratab1
          text
         -->P_RT_EXTAB  text
    FORM maratab1  USING    P_RT_EXTAB.
      SET PF-STATUS 'MARATAB1' EXCLUDING rt_extab.
    ENDFORM.                               " maratab1
    FORM user_command  USING r_ucomm LIKE sy-ucomm
                         rs_selfield TYPE slis_selfield.
    case r_ucomm.
       when 'ENTER'.
       perform bulid_xls_data_table.
       PERFORM send_file_as_email_attachment
                                      tables it_message
                                             it_attach
                                       using p_email "'[email protected]'
                                    'Example .xls documnet attachment'
                                             'XLS'
                                             'filename'
                                    changing gd_error
                                             gd_reciever.
        perform populate_email_message_body.
        PERFORM initiate_mail_execute_program.
      endcase.                             " case r_ucomm.
    endform.                               " FORM user_command
    perform populate_email_message_body.
    PERFORM initiate_mail_execute_program.
         CALL FUNCTION 'RH_START_EXCEL_WITH_DATA'
    EXPORTING
       DATA_FILENAME             = 'MARA.XLS'
       DATA_PATH_FLAG            = 'W'
      DATA_ENVIRONMENT          =
       DATA_TABLE                = ITAB[]
      MACRO_FILENAME            =
      MACRO_PATH_FLAG           = 'E'
      MACRO_ENVIRONMENT         =
       WAIT                      = 'X'
      DELETE_FILE               = 'X'
    EXCEPTIONS
       NO_BATCH                  = 1
       EXCEL_NOT_INSTALLED       = 2
       INTERNAL_ERROR            = 3
       CANCELLED                 = 4
       DOWNLOAD_ERROR            = 5
       NO_AUTHORITY              = 6
       FILE_NOT_DELETED          = 7
       OTHERS                    = 8
       IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
       ENDIF.
       leave to list-processing.
    endcase.
    *&      Form  bulid_xls_data_table
          text
    *There are no interface parameters to be passed to this subroutine
    FORM bulid_xls_data_table .
    CONSTANTS: con_cret TYPE x VALUE '0D',  "OK for non Unicode
                con_tab TYPE x VALUE '09'.   "OK for non Unicode
    *If you have Unicode check active in program attributes thnen you will
    *need to declare constants as follows
    *class cl_abap_char_utilities definition load.
    constants:
        con_tab  type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
        con_cret type c value cl_abap_char_utilities=>CR_LF.
      CONCATENATE 'matnr' 'ernam' 'aenam' 'pstat'
             INTO it_attach SEPARATED BY con_tab.
      CONCATENATE con_cret it_attach  INTO it_attach.
      APPEND  it_attach.
      LOOP AT It_mara INTO wa_charmara.
        CONCATENATE wa_charmara-matnr wa_charmara-ernam
                    wa_charmara-aenam wa_charmara-pstat
               INTO it_attach SEPARATED BY con_tab.
        CONCATENATE con_cret it_attach  INTO it_attach.
        APPEND  it_attach.
      ENDLOOP.                             " LOOP AT it_mara INTO...
    ENDFORM.                               " bulid_xls_data_table
    *&      Form  send_file_as_email_attachment
       Send email
         -->P_IT_MESSAGE  text
         -->P_IT_ATTACH  text
         -->P_P_EMAIL  text
         -->P_0387   text
         -->P_0388   text
         -->P_0389   text
         -->P_0390   text
         -->P_0391   text
         -->P_0392   text
         <--P_GD_ERROR  text
         <--P_GD_RECIEVER  text
    FORM send_file_as_email_attachment tables pit_message
                                              pit_attach
                                        using p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                              p_sender_address
                                              p_sender_addres_type
                                     changing p_error
                                              p_reciever.
      DATA: ld_error               TYPE sy-subrc,
            ld_reciever            TYPE sy-subrc,
            ld_mtitle              LIKE sodocchgi1-obj_descr,
            ld_email               LIKE  somlreci1-receiver,
            ld_format              TYPE  so_obj_tp ,
            ld_attdescription      TYPE  so_obj_nam ,
            ld_attfilename         TYPE  so_obj_des ,
            ld_sender_address      LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver            LIKE  sy-subrc.
      ld_email               = p_email.
      ld_mtitle              = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
      ld_sender_address      = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = pit_attach[].
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin  = space.
      t_packing_list-head_start  = 1.
      t_packing_list-head_num    = 0.
      t_packing_list-body_start  = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type    = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-receiver   = ld_email.
      t_receivers-rec_type   = 'U'.
      t_receivers-com_type   = 'INT'.
      t_receivers-notif_del  = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.                               " send_file_as_email_attachment
    *&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
          Instructs mail send program for SAPCONNECT to send email.
    FORM initiate_mail_execute_program.
      WAIT UP TO 2 SECONDS.
      SUBMIT rsconn01 WITH mode = 'INT'
                    WITH output = 'X'
                    AND RETURN.
    ENDFORM.                               " INITIATE_MAIL_EXECUTE_PROGRAM
    *&      Form  POPULATE_EMAIL_MESSAGE_BODY
           Populate message body text
    form populate_email_message_body.
      REFRESH it_message.
      it_message = 'Please find attached a list test mara records'.
      APPEND it_message.
    endform.                               "form populate_email_message_bod
    rewards if it helps u

  • Report to be mailed to different persons

    Hi,
    I have a classical report having informations of diferent employees.
    This needs to be mailed to their respective supervisors as attachment but with the condition that each supervisor should get the attachment having details of his subordinates only and no other employee details should be mailed. This needs to be coded in the program itself that generates this report.
    I am calling another program by SUBMIT command, within my program which sends the email.
    Please suggest how to do this.
    Regards,
    Binay

    Hi,
    here is the sample code that will help you out.
    sample code:
    *& Report  ZDOC_AS_EMAIL_3
    REPORT  ZDOC_AS_EMAIL_3.
    *& Report  ZEMAIL_ATTACH                                               *
    *& Example of sending external email via SAPCONNECT                    *
    TABLES: ekko.
    PARAMETERS: p_email   TYPE somlreci1-receiver.
    TYPES: BEGIN OF t_ekpo,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
    END OF t_ekpo.
    DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,
          wa_ekpo TYPE t_ekpo.
    TYPES: BEGIN OF t_charekpo,
      ebeln(10) TYPE c,
      ebelp(5)  TYPE c,
      aedat(8)  TYPE c,
      matnr(18) TYPE c,
    END OF t_charekpo.
    DATA: wa_charekpo TYPE t_charekpo.
    DATA:   it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
            t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
            t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            w_cnt TYPE i,
            w_sent_all(1) TYPE c,
            w_doc_data LIKE sodocchgi1,
            gd_error    TYPE sy-subrc,
            gd_reciever TYPE sy-subrc.
    *START_OF_SELECTION
    START-OF-SELECTION.
      Retrieve sample data from table ekpo
      PERFORM data_retrieval.
      Populate table with detaisl to be entered into .xls file
      PERFORM build_xls_data_table.
    *END-OF-SELECTION
    END-OF-SELECTION.
    Populate message body text
      perform populate_email_message_body.
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   tables it_message
                                          it_attach
                                    using p_email
                                          'Example .xls documnet attachment'
                                          'XLS'
                                          'filename'
                                 changing gd_error
                                          gd_reciever.
      Instructs mail send program for SAPCONNECT to send email(rsconn01)
      PERFORM initiate_mail_execute_program.
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      SELECT ebeln ebelp aedat matnr
       UP TO 10 ROWS
        FROM ekpo
        INTO TABLE it_ekpo.
    ENDFORM.                    " DATA_RETRIEVAL
    *&      Form  BUILD_XLS_DATA_TABLE
          Build data table for .xls document
    FORM build_xls_data_table.
    CONSTANTS: con_cret(2) TYPE c VALUE '0D',  "OK for non Unicode
                con_tab(2) TYPE c VALUE '09'.   "OK for non Unicode
    *If you have Unicode check active in program attributes thnen you will
    *need to declare constants as follows
    *class cl_abap_char_utilities definition load.
    constants:
        con_tab  type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
        con_cret type c value cl_abap_char_utilities=>CR_LF.
      CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
             INTO it_attach SEPARATED BY con_tab.
      CONCATENATE con_cret it_attach  INTO it_attach.
      APPEND  it_attach.
      LOOP AT it_ekpo INTO wa_charekpo.
        CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelp
                    wa_charekpo-aedat wa_charekpo-matnr
               INTO it_attach SEPARATED BY con_tab.
        CONCATENATE con_cret it_attach  INTO it_attach.
        APPEND  it_attach.
      ENDLOOP.
    ENDFORM.                    " BUILD_XLS_DATA_TABLE
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM send_file_as_email_attachment tables pit_message
                                              pit_attach
                                        using p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                              p_sender_address
                                              p_sender_addres_type
                                     changing p_error
                                              p_reciever.
      DATA: ld_error    TYPE sy-subrc,
            ld_reciever TYPE sy-subrc,
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver,
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver LIKE  sy-subrc.
      ld_email   = p_email.
      ld_mtitle = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
      ld_sender_address      = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = pit_attach[].
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.
    *&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
          Instructs mail send program for SAPCONNECT to send email.
    FORM initiate_mail_execute_program.
      WAIT UP TO 2 SECONDS.
      SUBMIT rsconn01 " WITH mode = 'INT'
                      "WITH output = 'X'
                    AND RETURN.
    ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM
    *&      Form  POPULATE_EMAIL_MESSAGE_BODY
           Populate message body text
    form populate_email_message_body.
      REFRESH it_message.
      it_message = 'Please find attached a list test ekpo records'.
      APPEND it_message.
    endform.                    " POPULATE_EMAIL_MESSAGE_BODY

  • Looking for an app which lets me create my own formula

    I need this simple thing done, I know it could be done by Excel, but I DO NOT want an Excel supported app, becuase I need to give this to someone who dealing with a lot of cells might be too confusing to him. Also I need to protect constant variables from being modified by accident, so Excel is not a good idea.
    What I need is:
    Input: A
    Input: B
    Do calculation on A and B base on a formula that I setup, and output answer C. Only +, -, *, / will be involed in the calculation, nothing fancy.
    The interface must be simple: Upon opening the app, there are two fields for the user to input A and B, with text hint of course, and a button to display C.

    Look at iAnnotate. I don't use it, but I have read that it will work with PDF and PowerPoint files and the app description seems to indicate that as well.
    https://itunes.apple.com/us/app/iannotate-pdf/id363998953?mt=8
    Adobe Reader will let you annotate and take notes on PDF files and it is free.

  • To avoid the attachment for the body content while sending email from ABAP

    SAP Version : 4.7
       When i tried to send an external email from the abap report program, the body content of the mail is coming as an attachment for the same. I need to avoid this. Please give the suggestion. Am attaching the code.
                        DECLARATION PART                                 *
    TYPE-POOLS : SLIS.
    TABLES : VBAK.
    DECLARATION FOR ALV.
    DATA : F_FIELD TYPE SLIS_T_FIELDCAT_ALV,
           W_FIELD TYPE SLIS_FIELDCAT_ALV,
           L_HEADER TYPE SLIS_T_LISTHEADER,
           W_HEADER TYPE SLIS_LISTHEADER,
           W_LAYOUT TYPE SLIS_LAYOUT_ALV,
           t_sort type slis_t_sortinfo_alv,
           w_sort type slis_sortinfo_alv.
    TYPES : BEGIN OF T_VBAK,
              VBELN    LIKE VBAK-VBELN,
              VKGRP    LIKE VBAK-VKGRP,
              KUNNR    LIKE VBAK-KUNNR,
              ERDAT    LIKE VBAK-ERDAT,
              VTWEG    LIKE VBAK-VTWEG,
              LIFSK    LIKE VBAK-LIFSK,
              VKBUR    LIKE VBAK-VKBUR,
            END OF T_VBAK.
    TYPES : BEGIN OF T_VBAP,
              VBELN    LIKE VBAP-VBELN,
              POSNR    LIKE VBAP-POSNR,
              MATNR    LIKE VBAP-MATNR,
              WERKS    LIKE VBAP-WERKS,
              ARKTX    LIKE VBAP-ARKTX,
              KWMENG   LIKE VBAP-KWMENG,
              CUOBJ    LIKE VBAP-CUOBJ,
              NETWR    LIKE VBAP-NETWR,
              ZSCHL_K  LIKE VBAP-ZSCHL_K,
              KONDM    LIKE VBAP-KONDM,
              ZZURWN   LIKE VBAP-ZZURWN,
            END OF T_VBAP.
    TYPES : BEGIN OF T_LIPS,
              VBELN    LIKE LIPS-VBELN,
              POSNR    LIKE LIPS-POSNR,
              VGBEL    LIKE LIPS-VGBEL,
              VGPOS    LIKE LIPS-VGPOS,
            END OF T_LIPS.
    TYPES : BEGIN OF T_KNA1,
              KUNNR    LIKE KNA1-KUNNR,
              NAME1    LIKE KNA1-NAME1,
              ADRNR    LIKE KNA1-ADRNR,
            END OF T_KNA1.
    TYPES : BEGIN OF T_VBKD,
              VBELN    LIKE VBKD-VBELN,
              POSNR    LIKE VBKD-POSNR,
              BSTKD    LIKE VBKD-BSTKD,
              BSTDK    LIKE VBKD-BSTDK,
              KURSK    LIKE VBKD-KURSK,          " CURRENCY CHECK
              BZIRK    LIKE VBKD-BZIRK,          " SALES DISTRICT
              KDGRP    LIKE VBKD-KDGRP,
              IHREZ    LIKE VBKD-IHREZ,
            END OF T_VBKD.
    TYPES : BEGIN OF T_LIKP,
              VBELN    LIKE LIKP-VBELN,
              ERDAT    LIKE LIKP-ERDAT,
            END OF T_LIKP.
    TYPES : BEGIN OF T_ADR6,
              ADDRNUMBER LIKE ADR6-ADDRNUMBER,
              SMTP_ADDR  LIKE ADR6-SMTP_ADDR,
            END OF T_ADR6.
    DATA  : BEGIN OF IT_CUST OCCURS 0,
              KUNNR LIKE VBAK-KUNNR,
            END OF IT_CUST.
    TYPES : BEGIN OF T_VBUP,
              VBELN    LIKE VBUP-VBELN,
              POSNR    LIKE VBUP-POSNR,
              KOSTA    LIKE VBUP-KOSTA,
              WBSTA    LIKE VBUP-WBSTA,
            END OF T_VBUP.
    TYPES : BEGIN OF T_TVLST,
              LIFSP    LIKE TVLST-LIFSP,
              VTEXT    LIKE TVLST-VTEXT,
            END OF T_TVLST.
    TYPES : BEGIN OF T_CONFIG.
            INCLUDE STRUCTURE CONF_OUT.
    TYPES : END OF T_CONFIG.
    DATA  : TMP LIKE VBAK-KUNNR.
    DATA  : NAME_TEXT LIKE THEAD-TDNAME.
    DATA  : TLINE1 LIKE TLINE OCCURS 0 WITH HEADER LINE.
    DATA  : TMP_BRAKET LIKE CONF_OUT-ATWRT,
            TMP_BRAKET1 LIKE CONF_OUT-ATWRT.
    DATA : BEGIN OF IT_FINAL OCCURS 0,
              WERKS   LIKE VBAP-WERKS,
              VBELN   LIKE VBAP-VBELN,
              POSNR   LIKE VBAP-POSNR,
              KUNNR   LIKE VBAK-KUNNR,
              NAME1   LIKE KNA1-NAME1,
              VBELN1  LIKE LIKP-VBELN,
              ERDAT   LIKE LIKP-ERDAT,
              LIFSK   LIKE VBAK-LIFSK,
              ZZURWN  LIKE VBAP-ZZURWN,
              IHREZ   LIKE VBKD-IHREZ,
              ERDAT1  LIKE VBAK-ERDAT,
              NETWR(25) type C,
              BSTKD   LIKE VBKD-BSTKD,
              BSTDK   LIKE VBKD-BSTDK,
              SALORD(17)  TYPE C,
              PUMP_TYPE LIKE CONF_OUT-ATWRT,
              PUMP_SIZE LIKE CONF_OUT-ATWRT,
              VTEXT     LIKE TVLST-VTEXT,
              KWMENG(25) TYPE C,
              FOOTER(330) TYPE C,
              ITMTXT(330) TYPE C,
           END OF IT_FINAL.
    DATA : IT_VBAK TYPE STANDARD TABLE OF T_VBAK,
           IT_VBAP TYPE STANDARD TABLE OF T_VBAP,
           IT_VBKD TYPE STANDARD TABLE OF T_VBKD,
           IT_LIKP TYPE STANDARD TABLE OF T_LIKP,
           IT_LIPS TYPE STANDARD TABLE OF T_LIPS,
           IT_VBUP TYPE STANDARD TABLE OF T_VBUP,
           IT_KNA1 TYPE STANDARD TABLE OF T_KNA1,
           IT_ADR6 TYPE STANDARD TABLE OF T_ADR6,
           IT_FINAL1 LIKE IT_FINAL OCCURS 0 with header line,
           IT_TVLST TYPE STANDARD TABLE OF T_TVLST,
           IT_CONFIG TYPE STANDARD TABLE OF T_CONFIG,
           W_VBAK TYPE T_VBAK,
           W_VBAP TYPE T_VBAP,
           W_VBKD TYPE T_VBKD,
           W_LIKP TYPE T_LIKP,
           W_ADR6 TYPE T_ADR6,
           W_LIPS TYPE T_LIPS,
           W_VBUP TYPE T_VBUP,
           W_KNA1 TYPE T_KNA1,
           W_TVLST TYPE T_TVLST,
           W_CONFIG TYPE T_CONFIG.
    DATA:   it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
            t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
            t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            w_cnt TYPE i,
            w_sent_all(1) TYPE c,
            w_doc_data LIKE sodocchgi1,
            gd_error    TYPE sy-subrc,
            gd_reciever TYPE sy-subrc.
                        SELECTION-CRITERIA                               *
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETERS : R2 RADIOBUTTON GROUP G1 USER-COMMAND radio DEFAULT 'X',
                 R1 RADIOBUTTON GROUP G1 .
    selection-screen end of block b1.
    selection-screen begin of block b2 with frame title text-002.
    PARAMETERS:  p_email TYPE somlreci1-receiver
                                      DEFAULT '[email protected]'.
    PARAMETERS : P_VTWEG LIKE W_VBAK-VTWEG ,
                 P_WERKS LIKE W_VBAP-WERKS.
    select-options : s_vkgrp for w_vbak-vkgrp,
                     s_ERDAT for w_LIKP-ERDAT.
    selection-screen end of block b2.
                              Initialization
    INITIALIZATION.
      s_vkgrp-sign = 'I'.
      s_vkgrp-option = 'BT'.
      s_vkgrp-low = '313'.
      s_vkgrp-high = '324'.
      APPEND s_vkgrp.
      s_erdat-sign = 'I'.
      s_erdat-option = 'BT'.
      s_erdat-low = '20080108'.
      s_erdat-high = '20080108'.
    s_erdat-low = '20070101'.
    s_erdat-high = sy-datum.
      APPEND s_erdat.
                      selection-screen validations
    AT SELECTION-SCREEN.
      Validation for Plant.
      IF p_werks NE '7210'.
        MESSAGE : 'Plant entered should be 7210' TYPE 'E'.
      ENDIF.
                   START OF SELECTION                                    *
    start-of-selection.
    GETTING THE DATA FROM THE DATABASE TABLE
      PERFORM DATA_FETCH.
    FILLING THE FINAL INTERNAL TABLE
      PERFORM FILL_FINAL.
    GETTING THE LIST FOR SENDING MAIL OR DISPLAY.
    IF R1 = 'X'.
      Populate table with details to be entered into .xls file
      LOOP AT IT_CUST.
        PERFORM build_xls_data_table using it_cust-kunnr.
      ENDLOOP.
      Instructs mail send program for SAPCONNECT to send email(rsconn01)
        PERFORM initiate_mail_execute_program.
    ELSEIF R2 = 'X'.
      PERFORM LIST_DISPLAY.
    ENDIF.
                   END OF SELECTION                                      *
    end-of-selection.
    *&      Form  DATA_FETCH
          text
    -->  p1        text
    <--  p2        text
    FORM DATA_FETCH .
       SELECT VBELN
              VKGRP
              KUNNR
              ERDAT
              VTWEG
              LIFSK
              VKBUR
       INTO TABLE IT_VBAK
       FROM VBAK
       WHERE VTWEG = P_VTWEG
       AND   VKGRP IN S_VKGRP
       AND   LIFSK NE ''.
    IF IT_VBAK[] IS NOT INITIAL.
      SELECT  LIFSP
              VTEXT
      INTO TABLE IT_TVLST
      FROM TVLST
      FOR ALL ENTRIES IN IT_VBAK
      WHERE  LIFSP = IT_VBAK-LIFSK
      AND    SPRAS = 'EN'.
      SELECT  VBELN
              POSNR
              MATNR
              WERKS
              ARKTX
              KWMENG
              CUOBJ
              NETWR
              ZSCHL_K
              KONDM
              ZZURWN
      INTO TABLE IT_VBAP
      FROM VBAP
      FOR ALL ENTRIES IN IT_VBAK
      WHERE VBELN = IT_VBAK-VBELN
      AND   WERKS = P_WERKS.
      SELECT KUNNR
             NAME1
             ADRNR
      INTO TABLE IT_KNA1
      FROM KNA1
      FOR ALL ENTRIES IN IT_VBAK
      WHERE   KUNNR = IT_VBAK-KUNNR.
      SELECT  VBELN
              POSNR
              BSTKD
              BSTDK
              KURSK
              BZIRK
              KDGRP
      INTO TABLE IT_VBKD
      FROM VBKD
      FOR ALL ENTRIES IN IT_VBAK
      WHERE VBELN = IT_VBAK-VBELN.
    ENDIF.
    IF IT_VBAP[] IS NOT INITIAL.
      SELECT VBELN
             POSNR
             VGBEL
             VGPOS
      INTO TABLE IT_LIPS
      FROM LIPS
      FOR ALL ENTRIES IN IT_VBAP
      WHERE VGBEL = IT_VBAP-VBELN
      AND   VGPOS = IT_VBAP-POSNR.
    ENDIF.
    IF IT_LIPS[] IS NOT INITIAL.
      SELECT VBELN
             ERDAT
      INTO TABLE IT_LIKP
      FROM LIKP
      FOR ALL ENTRIES IN IT_LIPS
      WHERE VBELN = IT_LIPS-VBELN
      AND   ERDAT IN S_ERDAT.
      SELECT VBELN
             POSNR
             KOSTA
             WBSTA
      INTO TABLE IT_VBUP
      FROM VBUP
      FOR ALL ENTRIES IN IT_LIPS
      WHERE VBELN = IT_LIPS-VBELN
      AND   POSNR = IT_LIPS-POSNR
      AND   KOSTA EQ 'C'
      AND   WBSTA NE 'C'.
    ENDIF.
    IF IT_KNA1[] IS NOT INITIAL.
      SELECT ADDRNUMBER
             SMTP_ADDR
      INTO TABLE IT_ADR6
      FROM ADR6
      FOR ALL ENTRIES IN IT_KNA1
      WHERE ADDRNUMBER = IT_KNA1-ADRNR.
    ENDIF.
    ENDFORM.                    " DATA_FETCH
    *&      Form  LIST_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM LIST_DISPLAY .
    REFRESH F_FIELD.
      IF R2 = 'X'.
        W_FIELD-col_pos = 1.
        W_FIELD-fieldname = 'WERKS'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Plant'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 2.
        W_FIELD-fieldname = 'VBELN'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Sales Order'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 3.
        W_FIELD-fieldname = 'KUNNR'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Customer Code'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 4.
        W_FIELD-fieldname = 'NAME1'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Customer Name'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 5.
        W_FIELD-fieldname =  'VBELN1'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Delivery Number'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 6.
        W_FIELD-fieldname = 'ERDAT'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Delivery Date'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 7.
        W_FIELD-fieldname = 'LIFSK'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Delivery Block'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 8.
        W_FIELD-fieldname = 'PUMP_TYPE'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Pump Type'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 9.
        W_FIELD-fieldname = 'PUMP_SIZE'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_l = 'Pump Size'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 10.
        W_FIELD-fieldname = 'ZZURWN'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Pump Srno'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 11.
        W_FIELD-fieldname = 'IHREZ'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Indent No.'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 12.
        W_FIELD-fieldname = 'ERDAT'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Order Booking Dt'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 13.
        W_FIELD-fieldname = 'NETWR'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C710'.
        W_FIELD-seltext_m = 'Net Value'.
        w_field-do_sum = 'X'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 14.
        W_FIELD-fieldname = 'KWMENG'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C710'.
        W_FIELD-seltext_m = 'Qty'.
        w_field-do_sum = 'X'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 15.
        W_FIELD-fieldname = 'BSTKD'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Customer PONO'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 16.
        W_FIELD-fieldname = 'BSTDK'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Customer PODT'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 17.
        W_FIELD-fieldname = 'SALORD'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Sales Order/Item'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 18.
        W_FIELD-fieldname = 'VTEXT'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Delivery Block Desc.'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 19.
        W_FIELD-fieldname = 'FOOTER'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Footer Text'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        W_FIELD-col_pos = 20.
        W_FIELD-fieldname = 'ITMTXT'.
        W_FIELD-tabname = 'IT_FINAL'.
        W_FIELD-emphasize = 'C410'.
        W_FIELD-seltext_m = 'Item Text'.
        APPEND W_FIELD TO F_FIELD.
        CLEAR W_FIELD.
        PERFORM SORT_FIELD.
        PERFORM LAYOUT_DISPLAY.
        PERFORM GRID_DISPLAY.
      ENDIF.
    ENDFORM.                    " LIST_DISPLAY
    *&      Form  FILL_FINAL
          text
    -->  p1        text
    <--  p2        text
    FORM FILL_FINAL .
    REFRESH IT_FINAL.
    LOOP AT IT_VBUP INTO W_VBUP.
        READ TABLE IT_LIPS INTO W_LIPS WITH KEY VBELN = W_VBUP-VBELN POSNR = W_VBUP-POSNR.
        READ TABLE IT_LIKP INTO W_LIKP WITH KEY VBELN = W_LIPS-VBELN.
        IF SY-SUBRC EQ 0.
        READ TABLE IT_VBAP INTO W_VBAP WITH KEY VBELN = W_LIPS-VGBEL POSNR = W_LIPS-VGPOS.
        READ TABLE IT_VBAK INTO W_VBAK WITH KEY VBELN = W_VBAP-VBELN.
        READ TABLE IT_VBKD INTO W_VBKD WITH KEY VBELN = W_VBAK-VBELN.
        READ TABLE IT_KNA1 INTO W_KNA1 WITH KEY KUNNR = W_VBAK-KUNNR.
        READ TABLE IT_TVLST INTO W_TVLST WITH KEY LIFSP = W_VBAK-LIFSK.
          IT_FINAL-WERKS   = W_VBAP-WERKS.
          IT_FINAL-VBELN   = W_VBAP-VBELN.
          IT_FINAL-KUNNR   = W_VBAK-KUNNR.
          IT_FINAL-NAME1   = W_KNA1-NAME1.
          IT_FINAL-VBELN1  = W_LIKP-VBELN.
          IT_FINAL-ERDAT   = W_LIKP-ERDAT.
          IT_FINAL-LIFSK   = W_VBAK-LIFSK.
          IT_FINAL-ZZURWN  = W_VBAP-ZZURWN.
          IT_FINAL-IHREZ   = W_VBKD-IHREZ.
          IT_FINAL-ERDAT1  = W_VBAK-ERDAT.
          IT_FINAL-NETWR   = W_VBAP-NETWR.
          IT_FINAL-BSTKD   = W_VBKD-BSTKD.
          IT_FINAL-BSTDK   = W_VBKD-BSTDK.
          IT_FINAL-POSNR   = W_VBAP-POSNR.
          IT_FINAL-VTEXT   = W_TVLST-VTEXT.
          IT_FINAL-KWMENG  = W_VBAP-KWMENG.
          CONCATENATE W_VBAP-VBELN W_VBAP-POSNR INTO IT_FINAL-SALORD SEPARATED BY '/'.
          IF W_VBAP-CUOBJ NE '000000000000000000'.
            REFRESH IT_CONFIG.
              CALL FUNCTION 'VC_I_GET_CONFIGURATION'
                EXPORTING
                  INSTANCE            = W_VBAP-CUOBJ
                  LANGUAGE            = SY-LANGU
                TABLES
                  CONFIGURATION       = IT_CONFIG
                EXCEPTIONS
                  INSTANCE_NOT_FOUND  = 1
                  INTERNAL_ERROR      = 2
                  NO_CLASS_ALLOCATION = 3
                  INSTANCE_NOT_VALID  = 4
                  OTHERS              = 5.
              IF SY-SUBRC = 0.
                READ TABLE IT_CONFIG INTO W_CONFIG WITH KEY ATNAM = 'IN_PUMP_TYPE'.
                IT_FINAL-PUMP_TYPE = W_CONFIG-ATWRT.
                CLEAR W_CONFIG.
                READ TABLE IT_CONFIG INTO W_CONFIG WITH KEY ATNAM = 'IN_PUMP_SIZE' .
                IT_FINAL-PUMP_SIZE = W_CONFIG-ATWRT.
                CLEAR W_CONFIG.
              ENDIF.
          ENDIF.
            move w_vbap-vbeln to name_text.
            CALL FUNCTION 'READ_TEXT'
              EXPORTING
                id       = 'ZKT1'
                language = 'E'
                name     = name_text
                object   = 'VBBK'
              TABLES
                lines    = tline1
              EXCEPTIONS
                OTHERS   = 8.
          LOOP AT TLINE1.
            CONCATENATE IT_FINAL-FOOTER TLINE1-TDLINE+0(65) INTO IT_FINAL-FOOTER.
            CLEAR : TLINE1.
          ENDLOOP.
          clear : name_text,tline1[].
          concatenate w_vbap-vbeln w_vbap-posnr into name_text.
            CALL FUNCTION 'READ_TEXT'
              EXPORTING
                id       = 'ZKT3'
                language = 'E'
                name     = name_text
                object   = 'VBBP'
              TABLES
                lines    = tline1
              EXCEPTIONS
                OTHERS   = 8.
          LOOP AT TLINE1.
            CONCATENATE IT_FINAL-ITMTXT TLINE1-TDLINE+0(65) INTO IT_FINAL-ITMTXT.
            CLEAR : TLINE1.
          ENDLOOP.
          APPEND IT_FINAL.
        ENDIF.
       CLEAR : IT_FINAL,W_VBAP,W_VBKD,W_VBUP,W_LIPS,W_LIKP,W_KNA1,W_VBAK,W_TVLST,name_text,tline1[].
    ENDLOOP.
    IT_FINAL1[] = IT_FINAL[].
    SORT IT_FINAL1 BY KUNNR.
    LOOP AT IT_FINAL1.
      IF TMP NE IT_FINAL1-KUNNR.
       IT_CUST-KUNNR = IT_FINAL1-KUNNR.
       APPEND IT_CUST.
       clear : tmp,it_cust.
       TMP = IT_FINAL1-KUNNR.
      ENDIF.
      CLEAR : IT_FINAL1.
    ENDLOOP.
    ENDFORM.                    " FILL_FINAL
    *&      Form  LAYOUT_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM LAYOUT_DISPLAY .
      W_LAYOUT-colwidth_optimize = 'X'.
    ENDFORM.                    " LAYOUT_DISPLAY
    *&      Form  GRID_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM GRID_DISPLAY .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
           I_CALLBACK_PROGRAM                = SY-REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
           I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
         IS_LAYOUT                         = W_LAYOUT
         IT_FIELDCAT                       = F_FIELD
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
         IT_SORT                           = T_SORT
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_EVENTS                         =
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      I_HTML_HEIGHT_TOP                 =
      I_HTML_HEIGHT_END                 =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
          TABLES
            T_OUTTAB                          = IT_FINAL
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " GRID_DISPLAY
    *&      Form  SORT_FIELD
          text
    -->  p1        text
    <--  p2        text
    FORM SORT_FIELD .
      w_sort-spos = 1.
      w_sort-fieldname = 'KUNNR'.
      w_sort-up = 'X'.
      append w_sort to t_sort.
      clear w_sort.
      w_sort-spos = 2.
      w_sort-fieldname = 'VBELN'.
      w_sort-up = 'X'.
      append w_sort to t_sort.
      clear w_sort.
    ENDFORM.                    " SORT_FIELD
    *&      Form  TOP_OF_PAGE
          text
    FORM top_of_page.
      IF R2 = 'X'.
        REFRESH l_header.
        w_header-typ = 'S'.
        w_header-key = 'Delivery Block : '.
        w_header-info = 'Outbound delivery created but not despatched'.
        APPEND w_header TO l_header.
        CLEAR w_header.
        CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
          EXPORTING
            it_list_commentary = l_header.
      ENDIF.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  BUILD_XLS_DATA_TABLE
          Build data table for .xls document
    FORM build_xls_data_table using custcode.
    CONSTANTS: con_cret TYPE X VALUE '0D',  "OK for non Unicode
                con_tab TYPE x VALUE '09'.   "OK for non Unicode
    data : it_custcode like vbak-kunnr.
    *If you have Unicode check active in program attributes thnen you will
    *need to declare constants as follows
    *class cl_abap_char_utilities definition load.
    constants:
        con_tab  type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
        con_cret type c value cl_abap_char_utilities=>CR_LF.
    clear : it_attach,it_attach[].
      CONCATENATE 'Customer PONO' 'Customer PODT' 'Sales Order No' 'Item No'
                  'Pump Type' 'Pump Size' 'Order Value Rs' 'Delivery No.' 'Delivery Dt.'
                  'Quantity' 'Reasons for not getting Despatch'
              INTO it_attach SEPARATED BY con_tab.
      CONCATENATE con_cret it_attach  INTO it_attach.
      APPEND  it_attach.
      it_custcode = custcode.
    CLEAR : W_KNA1,W_ADR6.                                             "Code need to be added once testing is over.
    READ TABLE IT_KNA1 INTO W_KNA1 WITH KEY KUNNR = IT_CUSTCODE.
    READ TABLE IT_ADR6 INTO W_ADR6 WITH KEY ADDRNUMBER = W_KNA1-ADRNR.
    P_EMAIL = W_ADR6-SMTP_ADDR.
      LOOP AT it_final where kunnr = it_custcode.
        CONCATENATE
                    IT_FINAL-BSTKD
                    IT_FINAL-BSTDK
                    IT_FINAL-VBELN
                    IT_FINAL-POSNR
                    IT_FINAL-PUMP_TYPE
                    IT_FINAL-PUMP_SIZE
                    IT_FINAL-NETWR
                    IT_FINAL-VBELN1
                    IT_FINAL-ERDAT
                    IT_FINAL-KWMENG
                    IT_FINAL-VTEXT
        INTO it_attach SEPARATED BY con_tab.
        CONCATENATE con_cret it_attach  INTO it_attach.
        APPEND  it_attach.
        clear it_final.
      ENDLOOP.
      if R1 = 'X'.
    Populate message body text
      perform populate_email_message_body.
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   tables it_message
                                          it_attach
                                    using p_email
                                          'AWAITING DESPATCH CLEARANCE'
                                          'XLS'
                                          'Delivery_Block'
                                          'Delivery_Blk'
                                          '[email protected]'
                                          'INT'
                                 changing gd_error
                                          gd_reciever.
      endif.
    ENDFORM.                    " BUILD_XLS_DATA_TABLE
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM send_file_as_email_attachment tables pit_message
                                              pit_attach
                                        using p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                              p_sender_address
                                              p_sender_addres_type
                                     changing p_error
                                              p_reciever.
      DATA: objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE.
      DATA: ld_error    TYPE sy-subrc,
            ld_reciever TYPE sy-subrc,
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver,
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver LIKE  sy-subrc.
      ld_email   = p_email.
      ld_mtitle = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
      ld_sender_address      = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR : w_doc_data,w_cnt.
      DESCRIBE TABLE it_attach LINES w_cnt.
    READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = pit_attach[].
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                object_header              = objhead
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.
    *&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
          Instructs mail send program for SAPCONNECT to send email.
    FORM initiate_mail_execute_program.
      WAIT UP TO 2 SECONDS.
      SUBMIT rsconn01 WITH mode = 'INT'
                    WITH output = 'X'
                    AND RETURN.
    ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM
    *&      Form  POPULATE_EMAIL_MESSAGE_BODY
           Populate message body text
    form populate_email_message_body.
      REFRESH it_message.
      it_message = 'We have manufactured the pump/s against your purchase order and regret to inform'.
      APPEND it_message.
      it_message = 'you that same cannot be despatched for the reason/s indicated below.'.
      APPEND it_message.
      it_message = ' '.
      APPEND it_message.
      it_message = 'Please find the below attachment "Delivery_Blk.xls" for the details.'.
      APPEND it_message.
      it_message = ' '.
      APPEND it_message.
      it_message = 'We now request you to send the required detail/s by return mail/post to enable us '.
      APPEND it_message.
      it_message = 'to despatch the pump/s at the earliest.'.
      APPEND it_message.
      it_message = ' '.
      APPEND it_message.
      it_message = ' '.
      APPEND it_message.
      it_message = 'Best Regards'.
      APPEND it_message.
      it_message = 'O.E. ENGINEER'.
      APPEND it_message.
    endform.                    " POPULATE_EMAIL_MESSAGE_BODY

    Hi,
    Refer to the following piece of code. This is the simple code to send email with content and attachment.
    Declaration
      DATA:    lwa_hd_change TYPE sood1,
               lt_objcont    TYPE STANDARD TABLE OF soli,
               lwa_objcont   TYPE soli,
               lt_receivers  TYPE STANDARD TABLE OF soos1,
               lwa_receivers TYPE soos1 ,
               lt_att_cont   TYPE STANDARD TABLE OF soli,
               lwa_att_cont  TYPE soli,
               lt_packing    TYPE STANDARD TABLE OF soxpl,
               lwa_packing   TYPE soxpl,
               lf_sent       TYPE sonv-flag,
               lf_size       TYPE i.
      CONSTANTS: lc_obj(11)  TYPE c VALUE 'BOMSouthco',
                 lc_desc(20) TYPE c VALUE 'BOM Download',
                 lc_lang(1)  TYPE c VALUE 'E',
                 lc_raw(3)   TYPE c VALUE 'RAW',
                 lc_net(1)   TYPE c VALUE 'U',
                 lc_mail(4)  TYPE c VALUE 'MAIL',
                 lc_xls(3)   TYPE c VALUE 'XLS',
                 lc_ext(3)   TYPE c VALUE 'EXT'.
    Passing values to the strutures used in SO_OBJECT_SEND function module
      lwa_hd_change-objla      = lc_lang.
      lwa_hd_change-objnam     = lc_obj.
      lwa_hd_change-objdes     = lc_desc.
      lwa_hd_change-objlen     = 255.
      lwa_objcont-line = text-t29.
      APPEND lwa_objcont TO lt_objcont.
      CLEAR lwa_objcont.
      lwa_receivers-recextnam  = text-t31.
      lwa_receivers-recesc     = lc_net.
      lwa_receivers-sndart     = lc_mail.
      lwa_receivers-sndex      = 'X'.
      lwa_receivers-sndpri     = 1.
      lwa_receivers-mailstatus = 'E'.
      APPEND lwa_receivers TO lt_receivers.
      CLEAR lwa_receivers.
      lwa_receivers-recextnam  = text-t30.
      lwa_receivers-recesc     = lc_net.
      lwa_receivers-sndart     = lc_mail.
      lwa_receivers-sndex      = 'X'.
      lwa_receivers-sndpri     = 1.
      lwa_receivers-mailstatus = 'E'.
      APPEND lwa_receivers TO lt_receivers.
      CLEAR lwa_receivers.
    Passing values for the attachment file
      LOOP AT gt_output INTO gwa_output.
        CONCATENATE gf_lf  gwa_output-matnr  gf_etb  gwa_output-idnrk  gf_etb
                    gwa_output-type   gf_etb  gwa_output-menge   gf_etb
                    gwa_output-meins  gf_etb  gwa_output-comp    gf_etb
          INTO lwa_att_cont-line.
        APPEND lwa_att_cont TO lt_att_cont.
        CLEAR lwa_att_cont.
      ENDLOOP.
      CHECK lt_att_cont IS NOT INITIAL.
      DESCRIBE TABLE lt_att_cont LINES lf_size.
      lwa_packing-transf_bin = ' '.
      lwa_packing-head_start = 1.
      lwa_packing-head_num   = 0.
      lwa_packing-body_start = 1.
      lwa_packing-body_num   = lf_size.
      lwa_packing-file_ext   = lc_xls.
      lwa_packing-objlen     = lf_size * 255.
      lwa_packing-objtp      = lc_ext.
      lwa_packing-objdes     = lc_desc.
      lwa_packing-objnam     = lc_obj.
      APPEND lwa_packing TO lt_packing.
      CLEAR lwa_packing.
      CHECK gf_error IS NOT INITIAL. "Check if unix file is written
    FM to send email to the intended recipients
      CALL FUNCTION 'SO_OBJECT_SEND'
        EXPORTING
          object_hd_change           = lwa_hd_change
          object_type                = lc_raw
        IMPORTING
          sent_to_all                = lf_sent
        TABLES
          objcont                    = lt_objcont
          receivers                  = lt_receivers
          packing_list               = lt_packing
          att_cont                   = lt_att_cont
        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
          originator_not_exist       = 20
          x_error                    = 21
          OTHERS                     = 22.
      IF sy-subrc = 0.
        MESSAGE s004 WITH text-t34.
      ENDIF.
      COMMIT WORK.
    Reward if helpful.
    Regards,
    Ramya

Maybe you are looking for

  • CS4 Master Collection Won't Install

    Alright...so I insert the Adobe CS4 Master Collection DVD (yes, the first disc) and the autorun comes up. I hit install and nothing happens. I see in the task manager that setup runs for anywhere from 30 seconds to a couple minutes (tried this quite

  • How to implement a Query iView based on user's parameter?

    Hello, I've created a Query iView which depends on a Costumize parameter that the user enters. My question is, after creating this iView, how Do I implement it at the Portal so the user will have a place to enter his parameter and receive the result?

  • Big fat library mess: duplicates / can't locate files / etc.

    Hi, I have several issues. Failed to find my answers online in forums here. Help requested. Recently migrated from another Mac. Moved library manually. 2 issues going on. 1. In the actual media folder where the songs are stored, each artist>album fol

  • Payment Run Deletion

    Hi, We would like to know if there is a way to remove or purge the list of payment/proposal runs for the automatic check creation transaction F110? There are now over 500 or so items in the list and though we know you can't delete the run from SAP we

  • Just got fcp, how do mute the sound on the video clip so it does not come through the audio track?

    just got fcp, how do mute the sound on the video clip so it does not come through the audio track? Please help