Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata

Author: Narendran Muthukumaran
Submitted: 04/13/2007

Description Sending GOS attachements to an email address for the given business object and ID. This program is tested in the version 4.6C.

Error rendering macro 'code': Invalid value specified for parameter 'lang'
REPORT z_send_gos_attachments.

* Selection-screen.
SELECTION-SCREEN BEGIN OF LINE.
* Email address
SELECTION-SCREEN COMMENT 2(20) v_text1 FOR FIELD p_email.
PARAMETERS: p_email(50) OBLIGATORY.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
* Business object type
SELECTION-SCREEN COMMENT 2(20) v_text2 FOR FIELD p_bo.
PARAMETERS: p_bo     TYPE borident-objtype DEFAULT 'BUS2102'.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
* Business object ID
SELECTION-SCREEN COMMENT 2(20) v_text3 FOR FIELD p_boid.
PARAMETERS: p_boid   TYPE borident-objkey  DEFAULT '0060000717'.
SELECTION-SCREEN END OF LINE.


* Internal table declarations.
DATA: lt_links            TYPE TABLE OF relgraphlk,
      lv_document_id      TYPE sofolenti1-doc_id,
      lt_plist            LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE,
      lt_soli             LIKE soli OCCURS 100 WITH HEADER LINE,
      lt_rec_tab          LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
      lt_roles            TYPE STANDARD TABLE OF relroles,
      lt_appllinks        TYPE STANDARD TABLE OF srl_aprel,
      lt_object_content_l LIKE solisti1 OCCURS 0 WITH HEADER LINE,
      lt_object_content   LIKE solisti1 OCCURS 0 WITH HEADER LINE,
      lt_doc_dat          LIKE sofolenti1.

* Variables.
DATA: lv_objtp            LIKE soodk-objtp,
      lv_lang             LIKE tst01-dlang,
      lv_line_size        TYPE i VALUE 255,
      lv_name             LIKE soextreci1-receiver.


* Work areas
DATA: lwa_doc_data        LIKE sodocchgi1,
      lwa_document_data   LIKE sofolenti1,
      lwa_links           LIKE LINE OF lt_links,
      lwa_object          TYPE borident.


* Initialization.
INITIALIZATION.

* Set the texts.
  v_text1 = 'Email addr.'.
  v_text2 = 'Business obj type'.
  v_text3 = 'Business obj ID'.

* Start-of-selection.
START-OF-SELECTION.

* Assign the values
  lwa_object-objkey  = p_boid.
  lwa_object-objtype = p_bo.

* Get the attachment list for the input business object type
* and name.
  CALL FUNCTION 'SREL_GET_NEXT_RELATIONS'
       EXPORTING
            object         = lwa_object
            relationtype   = 'ATTA'
       TABLES
            links          = lt_links
            roles          = lt_roles
            appllinks      = lt_appllinks
       EXCEPTIONS
            internal_error = 1
            no_logsys      = 2
            OTHERS         = 3.

* Check the return code.
  IF sy-subrc <> 0.
    MESSAGE s208(00) WITH 'Error in FM SREL_GET_NEXT_RELATIONS'.
  ENDIF.

* Process the attachment list
  LOOP AT lt_links INTO lwa_links.

    MOVE lwa_links-objkey_b TO lv_document_id.

* Read the data
    CALL FUNCTION 'SO_DOCUMENT_READ_API1'
         EXPORTING
              document_id                = lv_document_id
         IMPORTING
              document_data              = lwa_document_data
         TABLES
              object_content             = lt_object_content_l
         EXCEPTIONS
              document_id_not_exist      = 1
              operation_no_authorization = 2
              x_error                    = 3
              OTHERS                     = 4.


* Prepare the data.
    lt_plist-transf_bin = 'X'.
    lt_plist-head_start = 0.
    lt_plist-head_num = 0.
    lt_plist-body_start = 0.
    lt_plist-body_num = 0.
    lt_plist-doc_type = 'RAW'.
    lt_plist-obj_descr = lwa_document_data-obj_descr.
    APPEND lt_plist.

    lt_plist-transf_bin = 'X'.
    lt_plist-head_start = 0.
    lt_plist-head_num = 0.

    IF sy-tabix = 1.
      lt_plist-body_start = 1.
    ELSE.
      DESCRIBE TABLE lt_object_content.
      lt_plist-body_start = sy-tfill + 1.
    ENDIF.

    DESCRIBE TABLE lt_object_content_l LINES lt_plist-body_num.
    lt_plist-doc_type = lwa_document_data-obj_type.

* Get the size.
    READ TABLE lt_object_content_l INDEX lt_plist-body_num.
    lt_plist-doc_size = ( lt_plist-body_num - 1 ) * lv_line_size
                     + STRLEN( lt_object_content_l ).
    APPEND lt_plist.

* Move the values to the main internal table.
    APPEND LINES OF lt_object_content_l TO lt_object_content.

  ENDLOOP.


* Move the receiver address.
  MOVE: p_email  TO lt_rec_tab-receiver,
        'U'      TO lt_rec_tab-rec_type.
  APPEND lt_rec_tab.

* Set the language.
  lwa_doc_data-obj_langu = sy-langu.

* Email subject.
  CONCATENATE 'GOS '
              p_boid
              'attachments'
              INTO lwa_doc_data-obj_descr
              SEPARATED BY space.

* Set the user name.
  lv_name = sy-uname.

* Send the email.
  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
       EXPORTING
            document_data              = lwa_doc_data
            sender_address             = lv_name
            sender_address_type        = 'B'
       TABLES
            packing_list               = lt_plist
            contents_bin               = lt_object_content
            receivers                  = lt_rec_tab
       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.
  IF sy-subrc <> 0.
    MESSAGE e208(00) WITH 'Error in sending email'.
  ENDIF.

  COMMIT WORK.

* Send the email immediately.
  SUBMIT rsconn01
  WITH mode = 'INT'
  AND RETURN.


* Success message.
  MESSAGE s208(00) WITH 'Email sent'.