Is it possible to send a instance to error hospital for business errors?

I have a business cenario where if an error is returned from an external service the first time it will automatically retry. The second time it will need to be sent for manual resolution which I was thinking of doing in the error hospital (human intervention) does anyone know if it is possible to send an instance for human-intervention from within the process rather from the fault policies?

We have an instance where sometimes we are sending embedded tiff images to an external service and if the image is corrupt we need to allow the users to terminate the process. Unfrotunately there are no capabilities to send any notifications (email/sms/fax/voicemail) and need to notify the user of the corrupt image and to terminate the process. We could use a worklist task and but the business have defined this as a support team responsibility and want to use the same manual recovery console for all errors. (activities tab)

Similar Messages

  • BizTalk 2013 SFTP Adapter Dynamic SFTP send port exception: Open remote file for write error

    I am using BizTalk 2013 SFTP adapter. I defined a Dynamic One-Way
    send port on BizTalk server administration.
    Below is the error I'm getting on BizTalk while trying to write files to a designated folder on a client's SFTP server.
    When defining the same path and properties on a Static One-Way send port everything works properly and the files are being saved on the SFTP server.
    A message sent to adapter "SFTP" on send port "ComverseSFTP_1.0.0.0_ComverseSFTP.SendFileToSFTP_SendFileToSFTPServer_f6b86b86a22079f8" with URI "SFTP://abc.xyz.com:22/upload/%SourceFileName%"
    is suspended.
    Error details: Microsoft.BizTalk.Adapter.SftpInvoker.SftpException: Open remote file for write error.
     Server stack trace:
       at Microsoft.BizTalk.Adapter.SftpInvoker.SftpInvoker.OpenRemoteFileWrite(String fileName, Int32 fileOffset)
       at Microsoft.BizTalk.Adapter.SftpInvoker.SftpFileWriterStream.Write(Byte[] buffer, Int32 offset, Int32 count)
       at Microsoft.BizTalk.Adapter.Sftp.SftpOutputChannel.Send(Message message, TimeSpan timeOut)
       at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
       at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
     Exception rethrown at [0]:
       at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
       at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
       at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
     Exception rethrown at [1]:
       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
       at System.ServiceModel.Channels.IOutputChannel.EndSend(IAsyncResult result)
       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.SendCallback(IAsyncResult result)
    MessageId:  {926F44F2-9180-4B33-96FF-9E4CBC459382}
    InstanceID: {36A50A7F-63C4-48D9-903D-A33C85DDAE36}
    Can you please assist with explaining why are we getting this exception?
    Thank you for your help.

    Below is the error I'm getting on BizTalk while trying to write files to a designated folder on a client's SFTP server.
    When defining the same path and properties on a Static One-Way send port everything works properly and the files are being saved on the SFTP server.
    A message sent to adapter "SFTP" on send port "ComverseSFTP_1.0.0.0_ComverseSFTP.SendFileToSFTP_SendFileToSFTPServer_f6b86b86a22079f8" with URI "SFTP://abc.xyz.com:22/upload/%SourceFileName%"
    is suspended.
    Error details: Microsoft.BizTalk.Adapter.SftpInvoker.SftpException: Open remote file for write error.
    Hi Yaeli1,
    From the error message above,  please check the permission for file writing , it seems that this issue is related to access permission.
    Best regards,
    Angie
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Sending class instance to an external application

    Hi,
    I was wondering if it is possible to send an instance of a class that has been initialized and instantiated to an external application as a parameter to the application?
    Thanks in advance.

    I dont thin that is posible since the java doc says
    Class Class is special cased within the Serialization Stream Protocol. A Class instance is written initially into an ObjectOutputStream in the following format:
    TC_CLASS ClassDescriptor
    A ClassDescriptor is a special cased serialization of
    a java.io.ObjectStreamClass instance.
    A new handle is generated for the initial time the class descriptor is written into the stream. Future references to the class descriptor are written as references to the initial class descriptor instance.
    So am not sure whether you can create new instances from the deserialized classes.

  • I'm not able to send emails with mail.ru. Receiving and reading is not a problem. When I create a email with mail.ru its not possible to send it although its stored in my mail.ru account as "still to be send". What can it be??

    I'm not able to send emails with mail.ru. Receiving is not a problem. Creating a mail is also not a problem and the mail will be stored at mail.ru as still to be send, only problem is its not possible to send. I noticed the buttons for sending change colour when used but they don't perform. What it is?

    Don't know what changed, but all of a sudden able to send emails by mail.ru ...... sorry for bothering.

  • Is it possible to send Planned Cost from MSP?

    Dear All,
    Is it possible to send Planned Cost (MSP Column = Cost) for resources (Financial Elements) from Microsoft Projects to oracle Projects for a Fully Shared Structures?

    If you are using Rate Schedule then in MSP planned the Hours or Quantity against the Resources then send back the Data to Oracle Projects. System will calculate your Planned Cost using your Hours and Rate Schedule under Workplan Resources. And using your Workplan budget you can always create Financial Budget.
    Khan.

  • Is it possible to send a text message using the UDP protocol?

    Support doc
    http://www.adobe.com/support/director/multiuser/using_udp/using_udp02.html
    says to use the following format with connectToNetServer:
    errCode =
    gMultiuserInstance.connectToNetServer([#remoteAddress:
    "chatServer.myCompany.com", #logonInfo: [#userID: "Bob",
    #password:
    "MySecret", #movieID: "Tech Chat"], #mode: #smus,
    #localUDPPort: 1627,
    #localAddress: "123.45.67.89", #remoteTCPPort: 1626])
    But if I change the mode to #text, it still sends out
    messages as smus.
    In fact, if I leave out the UDP parameters altogether but
    still use the
    list parameters for connectToNetServer, it still always sends
    as smus.
    Sends as smus:
    errCode =
    gMultiuserInstance.connectToNetServer([#remoteAddress:
    "chatServer.myCompany.com", #logonInfo: [#userID: "Bob",
    #password:
    "MySecret", #movieID: "Tech Chat"], #mode: #text,
    #localUDPPort: 1627,
    #localAddress: "123.45.67.89", #remoteTCPPort: 1626])
    Sends as smus:
    errCode =
    gMultiuserInstance.connectToNetServer([#remoteAddress:
    "chatServer.myCompany.com", #logonInfo: [#userID: "Bob",
    #password:
    "MySecret", #movieID: "Tech Chat"], #mode: #text])
    Only the string parameter method can be made to send text
    messages.
    Sends as text:
    errCode = gMultiuserInstance.connectToNetServer("Bob",
    "MySecret",
    "chatServer.myCompany.com", 1626, "Tech Chat", 1)
    Am I missing something? Is this a known issue? Anyone have a
    work around?
    -Jeremy

    Drat!
    Thanks for the answer though.
    alchemist wrote:
    > The multiuserXtra supports either tcp text or tcp smus
    connections.
    > The ability to send udp messages was an expansion to the
    original mus
    > protocol/xtra and is valid only for muXtra instances
    already connected in
    > smus mode.
    > So, if you are asking if you can create a udp instance
    and use it at will
    > (exchange udp messages with some remote udp socket),
    then the answer is no.
    >
    >
    > "Jeremy Aker" <[email protected]> wrote in message
    > news:[email protected]...
    >> I'm really sorry that I wasn't clear enough. I'll
    repeat the questions
    >> more concisely.
    >> Is it possible to send a text message using the UDP
    protocol? If so, how?
    >> Is the bug I described in my original message (see
    below) really a bug or
    >> am I doing something wrong?
    >> If it's a bug, does anyone have a work around?
    >>
    >> alchemist wrote:
    >>> And the question is?
    >>>
    >>> "Jeremy Aker" <[email protected]> wrote in
    message
    >>> news:[email protected]...
    >>>> Support doc
    >>>>
    http://www.adobe.com/support/director/multiuser/using_udp/using_udp02.html
    >>>> says to use the following format with
    connectToNetServer:
    >>>> errCode =
    gMultiuserInstance.connectToNetServer([#remoteAddress:
    >>>> "chatServer.myCompany.com", #logonInfo:
    [#userID: "Bob", #password:
    >>>> "MySecret", #movieID: "Tech Chat"], #mode:
    #smus, #localUDPPort: 1627,
    >>>> #localAddress: "123.45.67.89",
    #remoteTCPPort: 1626])
    >>>>
    >>>> But if I change the mode to #text, it still
    sends out messages as smus.
    >>>> In fact, if I leave out the UDP parameters
    altogether but still use the
    >>>> list parameters for connectToNetServer, it
    still always sends as smus.
    >>>>
    >>>> Sends as smus:
    >>>> errCode =
    gMultiuserInstance.connectToNetServer([#remoteAddress:
    >>>> "chatServer.myCompany.com", #logonInfo:
    [#userID: "Bob", #password:
    >>>> "MySecret", #movieID: "Tech Chat"], #mode:
    #text, #localUDPPort: 1627,
    >>>> #localAddress: "123.45.67.89",
    #remoteTCPPort: 1626])
    >>>>
    >>>> Sends as smus:
    >>>> errCode =
    gMultiuserInstance.connectToNetServer([#remoteAddress:
    >>>> "chatServer.myCompany.com", #logonInfo:
    [#userID: "Bob", #password:
    >>>> "MySecret", #movieID: "Tech Chat"], #mode:
    #text])
    >>>>
    >>>> Only the string parameter method can be made
    to send text messages.
    >>>> Sends as text:
    >>>> errCode =
    gMultiuserInstance.connectToNetServer("Bob", "MySecret",
    >>>> "chatServer.myCompany.com", 1626, "Tech
    Chat", 1)
    >>>>
    >>>> Am I missing something? Is this a known
    issue? Anyone have a work
    >>>> around?
    >>>>
    >>>> -Jeremy
    >

  • VA05 (Or VA05N) - Is it possible to send automatically the file generated ?

    Hello
    when I run the VA05 (Or VA05N), the list of sales order is showed and is possible to have this list into a file.
    My question is:
    Is it possible make a set up to send this file automatically somewhere ? For exemple on al11, or by idoc, etc etc
    Thank you for the reply
    R

    Hi
    You can send it as a PDF from the SPOOL after a job. For instance, in tcode SBWP, and mantain distribution lists.
    After, you can run VA05 and VA05N with SM36, and in Spool list recipient, in the popup dynpro in recipient, select in distribution lists and run it. Of course, you need have the SMTP in the SCOT. After, check in tcode SOSB the sending of emails.
    I hope this helps you
    Regards
    Eduardo

  • Is it possible to bind an instance of a class(Object)

    Hi All
    Is it possible to bind an instance i.e an Object to a name in JNDI and later when
    U look up I should get the same object with the state as of the object when I
    had bound the Object.
    For Ex: Suppose there is a class A having two variables x and y.
    Now I will create an object with name objA using
    A objA = new A();
    objA.setX(2)
    objA.setY(6)
    now I will bind objA to JNDI tree.
    Later I will look up for objA which I had bound.
    now what does objA.getX will return?
    Please clarify my doubt
    Thanks
    Mrutyunjay
    now objA.getX

    ziggy wrote:
    I need to pass an instance of "Properties" to it but i dont want to change the signature of the method to add a new argument to it. I have been struggling with this for the last couple of days and have tried a couple of options - see http://stackoverflow.com/questions/5134462/sending-in-an-object-of-type-object-instead-of-string-polymorphism
    The class that calls the parsing method "ParserManager" knows of the properties object. Is there a way for the MessageParser to find the properties object without it being passed to it?I completely agree with Kayaman if you can get away with only the passing the Properties once (as he suggests, at construction time).
    If you can't (ie, you must pass the Properties with each message), then I suspect you have a new type of Parser, and your design will have to reflect that.
    One possibility would be to extend Parser with a PropertiesParser interface that defines a new parse() method and either update the current ParserManager to "understand" the difference, or create a new one.
    The problem with the first option is that the manager then becomes a dispatcher, which kind of goes against the grain of OO programming (what if you need to add a third type of parser, or a fourth?).
    Another possibility (probably better) would be to create a variant of your MessageObject class that includes Properties, and a variant of your MessageCParser that knows how to deal with such an object.
    There are many ways to go, and only you probably know which is best.
    That said, if you can get away with passing the Properties once, definitely follow Kayaman's advice.
    Winston

  • Is it possible to find an instance of an object without it being passed to

    Hi all,
    I have a parser class "MessageParser" which i pass a message which is of type "String" to it for it to be parsed. The parsing method signature for the class is
    public void parse(String message);
    I need to pass an instance of "Properties" to it but i dont want to change the signature of the method to add a new argument to it. I have been struggling with this for the last couple of days and have tried a couple of options - see http://stackoverflow.com/questions/5134462/sending-in-an-object-of-type-object-instead-of-string-polymorphism
    The class that calls the parsing method "ParserManager" knows of the properties object. Is there a way for the MessageParser to find the properties object without it being passed to it?
    Thanks
    ps - also posted in http://stackoverflow.com/questions/5140795/is-it-possible-to-find-an-instance-of-an-object-without-it-being-passed-to-the-me

    ziggy wrote:
    I need to pass an instance of "Properties" to it but i dont want to change the signature of the method to add a new argument to it. I have been struggling with this for the last couple of days and have tried a couple of options - see http://stackoverflow.com/questions/5134462/sending-in-an-object-of-type-object-instead-of-string-polymorphism
    The class that calls the parsing method "ParserManager" knows of the properties object. Is there a way for the MessageParser to find the properties object without it being passed to it?I completely agree with Kayaman if you can get away with only the passing the Properties once (as he suggests, at construction time).
    If you can't (ie, you must pass the Properties with each message), then I suspect you have a new type of Parser, and your design will have to reflect that.
    One possibility would be to extend Parser with a PropertiesParser interface that defines a new parse() method and either update the current ParserManager to "understand" the difference, or create a new one.
    The problem with the first option is that the manager then becomes a dispatcher, which kind of goes against the grain of OO programming (what if you need to add a third type of parser, or a fourth?).
    Another possibility (probably better) would be to create a variant of your MessageObject class that includes Properties, and a variant of your MessageCParser that knows how to deal with such an object.
    There are many ways to go, and only you probably know which is best.
    That said, if you can get away with passing the Properties once, definitely follow Kayaman's advice.
    Winston

  • Send and Instance to an "Archive" folder

    Hello,
    I'm trying to send Instances in a special folder that I crated and called "Archive" on the CMC.
    It seems to me, that I can do that thanks to the command "send" -> "file location"
    But in order to parameter this "file location" in the DestinationJobServer, I need to specify an UNC Path.
    I contacted my "Administrator" and he can't find where the CMC files are really saved (!

    HI Sanjay, there is one solution, the one Fritz told us: You have to create a "fictive user" named "Archive", and then:
    "1. Send your instances to the Archive user.  -> the Archives User receives the instances in its mail box.
    2. Create a new category called "Archive".
    3. Add all required instances in Archive's inbox to the new "Archive" category. -> You go in Archive User personnal mail box and send the Instance in the category you just created.
    Users will then be able to view archived instances by clicking on the Categories icon in the toolbar and choosing the "Archive" category.
    The thing is weird... but it works.
    I personnaly choose to explain my client how it is possible to see an instance directly by clicking on the document an viewing the history feature...
    I wish you good kuck !! Ciao !

  • Possible to send the 50,000 records at a time using proxy?

    Hi All,
    I am using the proxy to send the data form SAP to PI and then send it to Receciver by using JMS. Here i have a small issue.... is it possible to send the 50,000 records at a time using proxy? If not please suggest me how can i send bulk of records through proxy?
    Thanks
    Karthik.

    is it possible to send the 50,000 records at a time using proxy? If not please suggest me how
    can i send bulk of records through proxy?
    you can try this in steps...do not go for a BigBang testing :)....check how much your XI system can handle at a time...then you may need to tune the system parameters to accomodate more message size.....how to do this??...check the below document..section 3.9.2 (Special Cases)
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/2016a0b1-1780-2b10-97bd-be3ac62214c7
    Regards,
    Abhishek.

  • Is it possible to send a text to several contacts at the same time and not have their replies go to everyone on the list?  I have an iphone 4s and most of the people I am texting also have iPhones.  I do have group messaging turned off.

    Is it possible to send a text from the iphone 4s to several contacts and not have their replies go to everyone else on the original text?  I have group messaging turned off but this seems to do nothing. 

    Do this instead:
    Email everyone instead of texting and use BCC: which will hide all of the people's emails.

  • Is not possible to send a sms from Italy to Belaru...

    Hi Guys,
    I am stay in Italy on my personal computer, through an italian account from my list of skype, I can not delivery a sms at price of 0,078 € to a mobile phone in Belarus. In fact beside there is the message "delivered not yet".
    Viceversa I can, through a Belarus account or Moldavian account of my list of Skype, regardless of their are on-line or off-line, sending a sms to a mobile phone in Belarus always at the price of 0,078 €.
    I can not understand because is not possible to send a sms by italian account while is it possible by belarus account or moldavian account.
    Thank you everybody.

    Hi Xperts,
    Have found the solution by using the Standard  Program RSWNSENDMAIL1. Need to pass the sender
    userid in the field of 'User id for System Logon.
    ThanQ.
    Krishna.

  • Is it possible to send an alert or notification once short dump happens?

    Is it possible to send a notification automaticlly to system administrator if a short dump happens?
    Thanks for your answer.

    Hi Ya,
    You need to configure CCMS alerts to be sent by mail or sms..
    read this thread
    XI - CCMS alerts send to external Email ID's
    and this blog
    /people/aravindh.prasanna/blog/2006/02/20/configuring-scenario-specific-e-mail-alerts-in-xi-ccms-part-3
    hope this help!
    Juan
    Please reward with points if helpful

  • Is it possible to send xls attach in mail in background ?

    is it possible to send xls attach in mail in background ?
    i build/copy program to send attach file in xls format  ,
    its work fine in foreground but do nothing in background  ,
    What can be the reason?
    the section of the sending  :
      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.

    Try this example, not sure where I got this, but it works.
    report zmail_excel.
    parameters: p_email   type somlreci1-receiver
                                   default '[email protected]'.
    data: begin of it001 occurs 0,
          bukrs type t001-bukrs,
          butxt type t001-butxt,
          end of it001.
    data:   imessage type standard table of solisti1 with header line,
            iattach type standard table of solisti1 with header line,
            ipacking_list like sopcklsti1 occurs 0 with header line,
            ireceivers like somlreci1 occurs 0 with header line,
            iattachment like solisti1 occurs 0 with header line.
    start-of-selection.
      select bukrs butxt into table it001 from t001.
    *   Populate table with detaisl to be entered into .xls file
      perform build_xls_data .
    * Populate message body text
      clear imessage.   refresh imessage.
      imessage = 'Please find attached excel file'.
      append imessage.
    * Send file by email as .xls speadsheet
      perform send_email_with_xls tables imessage
                                          iattach
                                    using p_email
                                          'Example Excel Attachment'
                                          'XLS'
                                          'TestFileName'
                                          'CompanyCodes'.
    *      Form  BUILD_XLS_DATA
    form build_xls_data .
      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 'BUKRS' 'BUTXT'
             into iattach separated by con_tab.
      concatenate con_cret iattach into iattach.
      append  iattach.
      loop at it001.
        concatenate it001-bukrs it001-butxt
               into iattach separated by con_tab.
        concatenate con_cret iattach  into iattach.
        append  iattach.
      endloop.
    endform.
    *      Form  SEND_EMAIL_WITH_XLS
    form send_email_with_xls tables pit_message
                                              pit_attach
                                        using p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription.
      data: xdocdata like sodocchgi1,
            xcnt type i.
    * Fill the document data.
      xdocdata-doc_size = 1.
    * Populate the subject/generic message attributes
      xdocdata-obj_langu = sy-langu.
      xdocdata-obj_name  = 'SAPRPT'.
      xdocdata-obj_descr = p_mtitle .
    * Fill the document data and get size of attachment
      clear xdocdata.
      read table iattach index xcnt.
      xdocdata-doc_size =
         ( xcnt - 1 ) * 255 + strlen( iattach ).
      xdocdata-obj_langu  = sy-langu.
      xdocdata-obj_name   = 'SAPRPT'.
      xdocdata-obj_descr  = p_mtitle.
      clear iattachment.  refresh iattachment.
      iattachment[] = pit_attach[].
    * Describe the body of the message
      clear ipacking_list.  refresh ipacking_list.
      ipacking_list-transf_bin = space.
      ipacking_list-head_start = 1.
      ipacking_list-head_num = 0.
      ipacking_list-body_start = 1.
      describe table imessage lines ipacking_list-body_num.
      ipacking_list-doc_type = 'RAW'.
      append ipacking_list.
    * Create attachment notification
      ipacking_list-transf_bin = 'X'.
      ipacking_list-head_start = 1.
      ipacking_list-head_num   = 1.
      ipacking_list-body_start = 1.
      describe table iattachment lines ipacking_list-body_num.
      ipacking_list-doc_type   =  p_format.
      ipacking_list-obj_descr  =  p_attdescription.
      ipacking_list-obj_name   =  p_filename.
      ipacking_list-doc_size   =  ipacking_list-body_num * 255.
      append ipacking_list.
    * Add the recipients email address
      clear ireceivers.  refresh ireceivers.
      ireceivers-receiver = p_email.
      ireceivers-rec_type = 'U'.
      ireceivers-com_type = 'INT'.
      ireceivers-notif_del = 'X'.
      ireceivers-notif_ndel = 'X'.
      append ireceivers.
      call function 'SO_DOCUMENT_SEND_API1'
           exporting
                document_data              = xdocdata
                put_in_outbox              = 'X'
                commit_work                = 'X'
           tables
                packing_list               = ipacking_list
                contents_bin               = iattachment
                contents_txt               = imessage
                receivers                  = ireceivers
           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.
    endform.
    Regards,
    Rich Heilman

Maybe you are looking for