SAP Function SO_DOCUMENT_SEND_API1 - SAPoffice: Send new document with attachments using RFC

Parameter Reference Type Length Default Optional Text
COMMIT_WORK SONV-FLAG C 1 SPACE X Execute explicit commit works at end of function module
DOCUMENT_DATA SODOCCHGI1 u 152 Attributes of new document
PUT_IN_OUTBOX SONV-FLAG C 1 SPACE X Flag: Move document to outbox after send
SENDER_ADDRESS SOEXTRECI1-RECEIVER C 1215 SY-UNAME X
SENDER_ADDRESS_TYPE SOEXTRECI1-ADR_TYP C 4 'B' X

Parameter Reference Type Length Text
NEW_OBJECT_ID SOFOLENTI1-OBJECT_ID C 17 ID of created object (not document!)
SENDER_ID SOUDK u 17
SENT_TO_ALL SONV-FLAG C 1 Flag: Document sent to all

Parameter Reference Length Optional Text
CONTENTS_BIN SOLISTI1 255 X Obsolete - see CONTENTS_HEX
CONTENTS_HEX SOLIX 255 X Binary contents of object and attachments
CONTENTS_TXT SOLISTI1 255 X ASCII contents of object and attachments
OBJECT_HEADER SOLISTI1 255 X Header data for document (spec.header)
OBJECT_PARA SOPARAI1 92 X SET/GET parameter for processing
OBJECT_PARB SOPARBI1 285 X Fields and values for processing
PACKING_LIST SOPCKLSTI1 143 Information about structure of data tables
RECEIVERS SOMLRECI1 1367 Document recipients with send attributes

Exception Text
DOCUMENT_NOT_SENT Document was not sent
DOCUMENT_TYPE_NOT_EXIST Document type or attachment type does not exist
ENQUEUE_ERROR Required locks could not be set
OPERATION_NO_AUTHORIZATION No authorization to send/create
PARAMETER_ERROR Invalid combination of parameter values
TOO_MANY_RECEIVERS Too many recipients, no authorization
X_ERROR Internal error or database inconsistency

Functionality
This function module enables you send a new document including anyexisting attachments. The document and the attachments are transferredin the same table. They are created when sent and can also be placed inthe sender's outbox.
It is necessary to distinguish between the document and its folderentries. The document itself only exists in the database once. It is atemplate for the folder entries and can be addressed via its object ID.Any number of folder entries can belong to the document. The folderentries contain the attributes of the document as well as some addition
al attributes relating to the folder entry itself. (Send priority andexpiry date of the entry, for example.) Folder entries are created whena document is resubmitted, referenced or sent as well as when a newdocument is created.

Import parameters
PUT_IN_OUTBOX
Default = ' '.
If this flag is activated ('X'), the newly created document is alsoplaced in the outbox of the active user when it is sent.
COMMIT_WORK
Default = ' '.
If this flag is set ('X'), an explicit Commit Work is sent at the end ofthe function module SO_DOCUMENT_SEND_API1.
DOCUMENT_DATA
This structure must contain the attributes of the document to be sent.

  • OBJ_NAME

  • Name of document.
    • OBJ_DESCR

    • Title (short description) of document.
      • OBJ_LANGU

      • Language of document.
        • OBJ_SORT

        • Sort field of document. You can search for this term using attributesearch.
          • OBJ_EXPDAT

          • Expiration date of document. The document itself cannot expire, but eachtime the document is entered in a folder, this date is used as thedefault for the expiration date of the entry (field EXPIRY_DAT).
            • SENSITIVTY

            • Document sensitivity.
              A personal document can have the following levels of sensitivity:
              'O' : Standard, normal sensitivity
              'F' : Functional, can be forwarded functionally
              'P' : Confidential, not visible to substitutes
              For documents in shared folders, only sensitivity level 'O' ispermitted.
              • OBJ_PRIO

              • Recipient priority. The document itself does not have a priority level,but each time the document is entered in a folder, this value is used asthe default for recipient priority for the entry (field PRIORITY).
                • NO_CHANGE

                • If this flag is activated ('X'), documents in shared folders can only bechanged by the author. The author can change documents in privatefolders after they have been sent.
                  • PRIORITY

                  • Recipient priority for the folder entry. This value gives the priority,which was assigned to the document by the owner, after receipt.
                    • EXPIRY_DAT

                    • Expiration date of the folder entry. When the expiration date has beenreached or passed, the entry is placed in private trash and can beretrieved from there if needed, up until the next time the trash isemptied. A new folder entry is initially given the expiration date ofthe document from field OBJ_EXPDT.
                      • PROC_TYPE

                      • If this field does not contain the default value (default is ' '), thedocument can be processed.
                        The following entries are permitted:
                        'D' : Dialog module
                        'F' : Function module
                        'R' : Report
                        'S' : Report with transfer of values to global memory
                        'T' : Transaction
                        'U' : Transaction with transfer of values to global memory
                        • PROC_NAME

                        • Processing element. You must enter the name of the dialog module,function module, report or transaction in accordance with the entry inthe field PROC_TYPE.
                          • PROC_SYST

                          • Name of sytem in which the document is to be processed. If no system isspecified or '*' is entered, processing is possible in all systems.
                            • PROC_CLINT

                            • Client in which the document is to be processed. If no client isspecified or '*' is entered, processing is possible in all clients.
                              • SKIP_SCREN

                              • If this flag is activated ('X'), the first screen is skipped duringprocessing.
                                • TO_DO_OUT

                                • If this flag is activated ('X'), the document cannot be processed fromthe SAPoffice interface. You must use the API function moduleSO_DOCUMENT_SET_STATUS_API1.
                                  • FREE_DEL

                                  • Wenn dieses Flag gesetzt ('X') wird, kann das Dokument über die API auchin fremden Mappen gelöscht werden.
                                    • DOC_SIZE

                                    • Size of the document in bytes. For PC documents, the size of therelevant file should be entered, for RAW and SCR documents the size isthe "length of the last line" + "number of other lines multiplied by255".

                                      Export parameters
                                      NEW_OBJECT_ID
                                      Object ID of the document created during the send process.
                                      SENT_TO_ALL
                                      If this flag is activated ('X'), the document was sent to all specifiedrecipients or, in the case of external forwarding, the correspondingsend requests were delivered to the subsystem. If sending or deliveryfailed in one or more cases, the flag is not activated.

                                      Table parameters
                                      PACKING_LIST
                                      This table requires information about how the data in the tablesOBJECT_HEADER, CONTENTS_BIN and CONTENTS_TXT are to be distributed tothe documents and its attachments. The first row is for the document,the following rows are each for one attachment.

                                      • TRANSF_BIN

                                      • If this flag is activated ('X'), the table entry describes an objectstored in binary format. The content of the object is in the tableCONTENTS_BIN. If the flag is not activated, the object content is in thetable CONTENTS_TXT in ASCII format.
                                        • HEAD_START

                                        • Requires the start row of the table OBJECT_HEADER, as of which thespecific header data of the object is stored.
                                          • HEAD_NUM

                                          • Requires the number of rows in the table OBJECT_HEADER that containspecific header data for the object. The relevant rows are arranged in ablock and defined uniquely together with the entry in HEAD_START.
                                            • BODY_START

                                            • Requires the start row of the table dependent on the TRANSF_BIN flag asof which the object content is stored.
                                              • BODY_NUM

                                              • Requires the number of rows of the table dependent on the flagTRANSFER_BIN, which contain the object content. The relevant rows arearranged in a block and defined uniquely together with the entry inHEAD_START.
                                                • DOC_TYPE

                                                • Attachment type. In the first row of the table, this field is not used.
                                                  • OBJ_NAME

                                                  • Attachment name. In the first row of the table, this field is not used.
                                                    • OBJ_DESCR

                                                    • Attachment title (short description). In the first row of the table,this field is not used.
                                                      • OBJ_LANGU

                                                      • Attachment language. In the first row of the table, this fiels is notused.
                                                        • DOC_SIZE

                                                        • Attachment size in bytes. For PC objects, the size of the relevant fileshould be entered here. For RAW and SCR objects, the size is the "lengthof the last page" + "number of other rows multiplied by 255". In thefirst row of the table, this field is not used.
                                                          • MESS_TYPE

                                                          • This field is not used.
                                                            OBJECT_HEADER
                                                            This table must contain the summarized data dependent on each objecttype. SAPscript objects store information here about forms and styles,for example. Excel list viewer objects store the number of rows andcolumns amongst other things and PC objects store their original filename.
                                                            • LINE

                                                            • Requires the type-dependent data of the object line by line. The fieldsHEAD_START and HEAD_NUM in the table PACKING_LIST define which sectionbelongs to which object.
                                                              CONTENTS_BIN
                                                              This table must contain the summarized content of the objects identifiedas binary objects.
                                                              • LINE

                                                              • Requires the object content line by line. The fields BODY_START andBODY_NUM in the table PACKING_LIST define which section belongs to whichobject.
                                                                CONTENTS_TXT
                                                                This table must contain the summarized content of the objects identifiedas ASCII objects.
                                                                • LINE

                                                                • Requires the object content line by line. The fiels BODY_START andBODY_NUM in the table PACKING_LIST define which section belongs to whichobject.
                                                                  OBJECT_PARA
                                                                  The table is only needed if the document to be sent is to be processed.The table must contain SET/GET parameters that are transferred to theprocessing element during processing.
                                                                  It is not possible to transfer processing parameters to the documentattachment.
                                                                  • NAME

                                                                  • Name of SET/GET parameter. Only the first three characters are used.
                                                                    • OPTION

                                                                    • This field is not used.
                                                                      • LOW

                                                                      • Contains the value of the parameter in NAME.
                                                                        • HIGH

                                                                        • This field is not used.
                                                                          OBJECT_PARB
                                                                          This table is only used by documents to which a particular processingtype is assigned. The meaning of the table depends on the processingtype. If the processing element is a report, or transaction withtransfer of values to the global memory, the table content isinterpreted as the quantity of parameters with the relevant values andexported to the memory ID taken from the first row. If the processingelement is a function module or a dialog module, the table istransferred to this as table parameter MSGDIAL.
                                                                          It is not possible to transfer processing parameters to the documentattachments.
                                                                          • NAME

                                                                          • If the processing element is a report or a transaction with transfer ofvalues to the global memory, the field of the first row of the tablemust contain the name of the memory ID used for the export. The fieldsof the other rows accommodate the parameter names. If the processingelement is a function module or a dialog module, the fields must containvalues corresponding to the use of the module.
                                                                            • VALUE

                                                                            • If the processing element is a report or a transaction with transfer ofvalues to the global memory, the field for the first row of the tablemust remain empty. The fields for the other rows accommodate the valuesbelonging to the parameters in NAME. If the processing element is afunction or dialog module, the fields must contain values correspondingto the use of the modules.
                                                                              RECEIVERS
                                                                              This table must contain the document recipients.
                                                                              • RECEIVER

                                                                              • Name of recipient.
                                                                                The following entry categories are possible:
                                                                                SAP use name of the recipient
                                                                                SAPoffice name of the recipient
                                                                                Shared distribution list
                                                                                Fax number in the form of structure SADRFD
                                                                                Internet address in the form of structure SADRUD
                                                                                Remote SAP name in the form of structure SADR7D
                                                                                X.400 address in the form of structure SADR8D
                                                                                • ADR_TYPE

                                                                                • Type of RECEIVER entry.
                                                                                  The following values are permitted:
                                                                                  'B' : SAP user name
                                                                                  ' ' : SAPoffice name
                                                                                  'C' : Shared distribution list
                                                                                  'F' : Fax number
                                                                                  'U' : Internet address
                                                                                  'R ' : Remote SAP name
                                                                                  'X' : X.400 address
                                                                                  • REC_ID

                                                                                  • If the recipient is a SAPoffice user, the user ID, instead of therecipient name in RECEIVER, can be entered in this field.
                                                                                    • REPLY_DOC

                                                                                    • If there is a value in this field, the document is a reply to the folderentry identified by the specified ID. A correspondance history isautomatically created/continued.
                                                                                      • REC_DATE

                                                                                      • The date on which the document is to reach the recipient. This datecannot be guaranteed for external recipients, as it depends on connectedproducts.
                                                                                        • PROXY_ID

                                                                                        • If automatic forwarding is active in the recipient's system, this fieldcontains the SAP user ID or the address ID of the external address, towhich the document was ultimately sent.
                                                                                          • RETRN_CODE

                                                                                          • When the recipient has received the document, the function module entersthe value '0' in this field. If the document is not successfullyrecieved, a value unequal to '0' is entered in the field.
                                                                                            • EXPRESS

                                                                                            • If this flag is activated ('X'), the document is sent with the attribute'express'. If the recipient is a logged-on SAPoffice user, he or shereceives a message immediately, saying that he or she has received anexpress mail.
                                                                                              • COPY

                                                                                              • Wenn dieses Flag gesetzt ('X') wird, dann wird das Dokument mit demAttribut 'Kopie' versendet.
                                                                                                • BLIND_COPY

                                                                                                • If this flag is activated ('X'), the document is sent with the attribute'secret copy'. If the recipient is a SAPoffice user, he or she canneither print nor forward the document.
                                                                                                  • NO_FORWARD

                                                                                                  • If this flag is activated ('X') and the recipient is a SAPoffice user,he or she cannot forward the document.
                                                                                                    • NO_PRINT

                                                                                                    • If this flag is activated ('X') and the recipient is a SAPoffice user,he or she cannot print the document.
                                                                                                      • TO_ANSWER

                                                                                                      • If this flag is activated ('X') and the recipient is a SAPoffice user,the user must reply to the document before he or she can delete it fromhis or her inbox.
                                                                                                        • TO_DO_EXPL

                                                                                                        • If this flag is activated ('X') and the recipient is a SAPoffice user,the user must process the document before he or she can delete it fromhis or her inbox.
                                                                                                          • TO_DO_GRP

                                                                                                          • If this field contains a value between '1' and '9', a SAPoffice user inthe recipient group indicated by this number must process the document,before the recipients can delete it from their inboxes. If the value '0'is entered, the document does not need to be processed.
                                                                                                            • COM_TYPE

                                                                                                            • Communication type used to send the document. This field is onlyrelevant if the recipient is an address number, that is, if the documentis sent externally via address management. If the field is empty, thestandard communication type specified in address management is used.
                                                                                                              The following values are permitted:
                                                                                                              'INT' : Send via Internet
                                                                                                              'FAX' : Send as a fax
                                                                                                              'X40' : Send via X.400
                                                                                                              'RML' : Send in another SAP system
                                                                                                              • LFDNR

                                                                                                              • Current number from address management. This field is only relevant ifthe recipient is an address number, that is, if the document is sent viaaddress management. If the field is empty, the default current number inaddress management is used.
                                                                                                                • FAX

                                                                                                                • This field is not used.
                                                                                                                  • COUNTRY

                                                                                                                  • This field is not used.
                                                                                                                    • SPOOL_ID

                                                                                                                    • This field is not used.
                                                                                                                      • NOTIF_DEL

                                                                                                                      • If this flag is activated ('X'), the sender receives confirmation whenthe recipient receives the document. He or she also receives a messageif the document could not be delivered. This flag should only beactivated for external sending, since internal sending is synchronous.Confirmation is only supported by a small number of mail systems,however. For example: X.400 and SAP SAP.
                                                                                                                        • NOTIF_READ

                                                                                                                        • If this flag is activated ('X'), the sender is notified as soon as therecipient has read the document. This flag should only be activated forexternal sending, since internal sending is synchronous. Readnotification is only supported by a small number of mail systems,however. For example: X.400 and SAP SAP.
                                                                                                                          • NOTIF_NDEL

                                                                                                                          • If this flag is activated ('X'), the recipient receives a message if thedocument could not be delivered to the recipient. This flag should onlybe activated for external sending, since internal sending issynchronous. The message is only supported by a small number of mailsystems, however. For example: X.400 and SAP SAP.
                                                                                                                            • SAP_BODY

                                                                                                                            • If this flag is activated ('X'), SAP specific data is transferred to thedocument in an external body part when sending via X.400. This flagshould only be activated if the target system is an SAP System.

                                                                                                                              Exceptions
                                                                                                                              TOO_MANY_RECEIVERS
                                                                                                                              Too many recipients were specified. The active user does not haveauthorization to send to this number of recipients.
                                                                                                                              DOCUMENT_NOT_SENT
                                                                                                                              The document could not be sent. It was not delivered to any of thespecified recipients.
                                                                                                                              DOCUMENT_TYPE_NOT_EXIST
                                                                                                                              A document class assigned to the document or an attachment does notexist.
                                                                                                                              OPERATION_NO_AUTHORIZATION
                                                                                                                              The document was not allowed to be sent, because one of the requiredauthorizations did not exist.
                                                                                                                              PARAMETER_ERROR
                                                                                                                              The combination of parameter values transferred to the function modulewas not a permitted combination.
                                                                                                                              X_ERROR
                                                                                                                              Am internal error or a data base inconsistency has occurred.
                                                                                                                              ENQUEUE_ERROR
                                                                                                                              A lock required for the send process could not be set. It is probablethat another user is processing.

                                                                                                                              Example
                                                                                                                              Sending a new RAW document with a BMP attachment to an Internet addressand a private distribution list.
                                                                                                                              REPORT ZSSO_DOCUMENT_SEND_API1.
                                                                                                                              DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
                                                                                                                              DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.
                                                                                                                              DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
                                                                                                                              DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
                                                                                                                              DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.
                                                                                                                              DATA: DOC_CHNG LIKE SODOCCHGI1.
                                                                                                                              DATA: TAB_LINES LIKE SY-TABIX.
                                                                                                                              * Creating the document to be sent
                                                                                                                              DOC_CHNG-OBJ_NAME = 'OFFER'.
                                                                                                                              DOC_CHNG-OBJ_DESCR = 'Auction of a Picasso jr'.
                                                                                                                              OBJTXT = 'Reserve price : $250000'.
                                                                                                                              APPEND OBJTXT.
                                                                                                                              OBJTXT = 'A reproduction of the painting to be auctioned'.
                                                                                                                              APPEND OBJTXT.
                                                                                                                              OBJTXT = 'is enclosed as an attachment.'.
                                                                                                                              APPEND OBJTXT.
                                                                                                                              DESCRIBE TABLE OBJTXT LINES TAB_LINES.
                                                                                                                              READ TABLE OBJTXT INDEX TAB_LINES.
                                                                                                                              DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).
                                                                                                                              * Creating the entry for the compressed document
                                                                                                                              CLEAR OBJPACK-TRANSF_BIN.
                                                                                                                              OBJPACK-HEAD_START = 1.
                                                                                                                              OBJPACK-HEAD_NUM = 0.
                                                                                                                              OBJPACK-BODY_START = 1.
                                                                                                                              OBJPACK-BODY_NUM = TAB_LINES.
                                                                                                                              OBJPACK-DOC_TYPE = 'RAW'.
                                                                                                                              APPEND OBJPACK.
                                                                                                                              * Creating the document attachment
                                                                                                                              * (Assume the data in OBJBIN are given in BMP format)
                                                                                                                              OBJBIN = ' \O/ '. APPEND OBJBIN.
                                                                                                                              OBJBIN = ' | '. APPEND OBJBIN.
                                                                                                                              OBJBIN = ' / \ '. APPEND OBJBIN.
                                                                                                                              DESCRIBE TABLE OBJBIN LINES TAB_LINES.
                                                                                                                              OBJHEAD = 'picasso.bmp'. APPEND OBJHEAD.
                                                                                                                              * Creating the entry for the compressed attachment
                                                                                                                              OBJPACK-TRANSF_BIN = 'X'.
                                                                                                                              OBJPACK-HEAD_START = 1.
                                                                                                                              OBJPACK-HEAD_NUM = 1.
                                                                                                                              OBJPACK-BODY_START = 1.
                                                                                                                              OBJPACK-BODY_NUM = TAB_LINES.
                                                                                                                              OBJPACK-DOC_TYPE = 'BMP'.
                                                                                                                              OBJPACK-OBJ_NAME = 'ATTACHMENT'.
                                                                                                                              OBJPACK-OBJ_DESCR = 'Reproduction object 138'.
                                                                                                                              OBJPACK-DOC_SIZE = TAB_LINES * 255.
                                                                                                                              APPEND OBJPACK..
                                                                                                                              * Entering names in the distribution list
                                                                                                                              RECLIST-RECEIVER = 'guido.geldsack@money.com'.
                                                                                                                              RECLIST-REC_TYPE = 'U'.
                                                                                                                              APPEND RECLIST.
                                                                                                                              RECLIST-RECEIVER = 'DLI-NEUREICH'.
                                                                                                                              RECLIST-REC_TYPE = 'P'.
                                                                                                                              APPEND RECLIST.
                                                                                                                              * Sending the document
                                                                                                                              CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
                                                                                                                              EXPORTING
                                                                                                                              DOCUMENT_DATA = DOC_CHNG
                                                                                                                              PUT_IN_OUTBOX = 'X'
                                                                                                                              COMMIT_WORK = 'X'
                                                                                                                              TABLES
                                                                                                                              PACKING_LIST = OBJPACK
                                                                                                                              OBJECT_HEADER = OBJHEAD
                                                                                                                              CONTENTS_BIN = OBJBIN
                                                                                                                              CONTENTS_TXT = OBJTXT
                                                                                                                              RECEIVERS = RECLIST
                                                                                                                              EXCEPTIONS
                                                                                                                              TOO_MANY_RECEIVERS = 1
                                                                                                                              DOCUMENT_NOT_SENT = 2
                                                                                                                              OPERATION_NO_AUTHORIZATION = 4
                                                                                                                              OTHERS = 99.
                                                                                                                              CASE SY-SUBRC.
                                                                                                                              WHEN 0.
                                                                                                                              WRITE: / 'Result of the send process:'.
                                                                                                                              LOOP AT RECLIST.
                                                                                                                              WRITE: / RECLIST-RECEIVER(48), ':'.
                                                                                                                              IF RECLIST-RETRN_CODE = 0.
                                                                                                                              WRITE 'sent successfully'.
                                                                                                                              ELSE.
                                                                                                                              WRITE 'not sent'.
                                                                                                                              ENDIF.
                                                                                                                              ENDLOOP.
                                                                                                                              WHEN 1.
                                                                                                                              WRITE: / 'no authorization to send to the specified number of''recipients!'.
                                                                                                                              WHEN 2.
                                                                                                                              WRITE: / 'document could not be sent to any of the recipients!'.

                                                                                                                              WHEN 4.
                                                                                                                              WRITE: / 'no authorization to send !'.
                                                                                                                              WHEN OTHERS.
                                                                                                                              WRITE: / 'error occurred during sending !'.
                                                                                                                              ENDCASE.

922181SRM-SUS: Mail notification not send from 'BBP_SUS_BP_ADM'
1151258Error when sending Excel attachments