Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Attachment List

Former Member
0 Likes
520

Hi,

Hw to retireve attachment list for the object ? (Im talking about the Object Service toolbox list...)

From the forum i found there is a package SGOS and the report RSGOSRE01 to achieve this functionality.

But ended in vain. I have a object id ( 50003630 Coursetype D) and some docus are attached to this course object.I need to retieve the attached document and send mail with atttachments retrieved.

Any idea will be appreicted greatly.

Thanks,

SAPUSER

1 REPLY 1
Read only

b_deterd2
Active Contributor
0 Likes
359

Hi,

Try using fm 'SREL_GET_NEXT_RELATIONS' . Here is an example .


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'. 

Regards,

Bert