SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

ABAP - Sending GOS attachments to an email address



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> SAP Business Workflow
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Sun Dec 16, 2007 1:22 am    Post subject: ABAP - Sending GOS attachments to an email address Reply with quote

Author: Narendran Muthukumaran

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

Code:
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'.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> SAP Business Workflow All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.