top of page

SAP ABAP - URL Attachment

Updated: Aug 29, 2022


 

INCLUDE : <cntn01> .


  TYPES: BEGIN OF ty_message_key,
           foltp TYPE so_fol_tp ,
           folyr TYPE so_fol_yr ,
           folno TYPE so_fol_no ,
           doctp TYPE so_doc_tp ,
           docyr TYPE so_doc_yr ,
           docno TYPE so_doc_no ,
           fortp TYPE so_for_tp ,
           foryr TYPE so_for_yr ,
           forno TYPE so_for_no ,
         END OF ty_message_key.


  DATA : lv_message_key TYPE ty_message_key.


  DATA : p_reltyp LIKE mdoblrel- reltype VALUE 'URL' .




  DATA : folder_id      TYPE sofdk,
         document_id    TYPE sofmk ,
         document_title TYPE sood-objdes ,
         url            TYPE so_url,
         is_object      TYPE borident .
  DATA rel_doc  TYPE borident.


data url_save          type so_url .




PARAMETERS : p_ebeln TYPE ekpo- ebeln,
             p_url   TYPE char100 .




PERFORM add_attachment_url USING p_ebeln p_url.




FORM add_attachment_url  USING    pv_ebeln
                                  pv_link .










  CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
    EXPORTING
      region    = 'B'
    IMPORTING
      folder_id = folder_id
    EXCEPTIONS
      OTHERS    = 1.




  CLEAR url.
  CLEAR document_id.               "note 1387602
  document_title = 'EBA FORM'.


  CLEAR rel_doc.
  rel_doc-objkey  = document_id.
  rel_doc-objtype = 'MESSAGE'.
  CALL FUNCTION 'BINARY_RELATION_CREATE'
    EXPORTING
      obj_rolea    = is_object
      obj_roleb    = rel_doc
      relationtype = 'URL'
    EXCEPTIONS
      OTHERS       = 1.


  CLEAR rel_doc.
  CONCATENATE document_id- FOLTP
              document_id-FOLYR
              document_id-FOLNO
              document_id-DOCTP
              document_id-DOCYR
              document_id-DOCNO
         into rel_doc-objkey .


*  rel_doc-objkey  = document_id.
  rel_doc-objtype = 'MESSAGE'.
  is_object-objkey = pv_ebeln.
  is_object-objtype = 'BUS2012'.
  url = pv_link.
perform create_url_doc.




  CALL FUNCTION 'BINARY_RELATION_CREATE'
    EXPORTING
      obj_rolea    = is_object
      obj_roleb    = rel_doc
      relationtype = 'URL'
    EXCEPTIONS
      OTHERS       = 1.
  IF sy- subrc = 0 .
    lv_message_key = document_id.
  ENDIF.


  DATA : lo_is_object_a TYPE sibflporb.


  lo_is_object_a-instid = pv_ebeln .
  lo_is_object_a-typeid = 'BUS2012' .
  lo_is_object_a-catid  = 'BO' .




  DATA : lo_is_object_b TYPE sibflporb.


  lo_is_object_b-instid = document_id .
  lo_is_object_b-typeid = 'MESSAGE' .
  lo_is_object_b-catid  = 'BO' .


  CALL METHOD cl_binary_relation=> create_link
    EXPORTING
      is_object_a = lo_is_object_a
      is_object_b = lo_is_object_b
      ip_reltype  = p_reltyp.


  COMMIT WORK .






ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  CREATE_URL_DOC
*&---------------------------------------------------------------------*


FORM create_url_doc .
   data lt_objhead type standard table of soli.
  data lt_objcont type standard table of soli.
  data ls_objcont type soli.
  data lt_urltab  type standard table of sood-objdes .
  data l_tab_size type i .
  data l_url_id   type so_url.
  data l_obj_id   type soodk.
  data l_obj_data type sood1.


*  l_url_id = url.                "note 509858
  if url_save( 255) <> url (255).   "note 1884687
    l_url_id = url.
  else.
    l_url_id = url_save.
  endif.
  while not l_url_id is initial .
    concatenate '&KEY&' l_url_id( 250) into ls_objcont.
    append ls_objcont to lt_objcont .
    shift l_url_id left by 250 places.
  endwhile.


  l_obj_data-objsns = 'O'.
  l_obj_data-objla  = sy-langu .
  if document_title is initial .
    split url at '/' into table lt_urltab.
    describe table lt_urltab lines l_tab_size .
    read table lt_urltab index l_tab_size into document_title.
  endif.
  l_obj_data-objdes = document_title.


  call function 'SO_OBJECT_INSERT'
       exporting
            folder_id             = folder_id
            object_type           = 'URL'
            object_hd_change      = l_obj_data
       importing
            object_id             = l_obj_id
       tables
            objhead               = lt_objhead
            objcont               = lt_objcont
       exceptions
            active_user_not_exist =   35
            folder_not_exist      =    6
            object_type_not_exist =   17
            owner_not_exist       =   22
            parameter_error       =   23
            others                = 1000.


  if sy- subrc = 0 .
    document_id- foltp = folder_id -foltp.
    document_id- folyr = folder_id -folyr.
    document_id- folno = folder_id -folno.
    document_id- doctp = l_obj_id -objtp.
    document_id- docyr = l_obj_id -objyr.
    document_id- docno = l_obj_id -objno.
  else.
  endif.
ENDFORM.

15 views0 comments

Recent Posts

See All
Post: Blog2_Post
bottom of page