06
May

Send an e-mail throught Scot with an attached PDF recovered from Archivelink

FUNCTION z_viajes_envio_correo.
*"----------------------------------------------------------------------
*"*"Interfase local
*"  IMPORTING
*"     REFERENCE(P_DESTINATARIO) TYPE  SO_RECNAME
*"     REFERENCE(P_CABECERA) TYPE  STRING
*"     REFERENCE(P_CUERPO) TYPE  STRING
*"     REFERENCE(P_AR_OBJECT) TYPE  TOAOM-AR_OBJECT
*"     REFERENCE(P_OBJECT_ID) TYPE  SAPB-SAPOBJID
*"     REFERENCE(P_SAP_OBJECT) TYPE  TOAOM-SAP_OBJECT
*"     REFERENCE(P_DOC_TYPE) TYPE  SO_OBJ_TP
*"  EXCEPTIONS
*"      NO_ATTACHMENT_FOUND
*"      EMAIL_NOT_SENDED
*"----------------------------------------------------------------------
  DATA: docdata LIKE sodocchgi1,
        objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
        objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
        objbin1 LIKE solisti1 OCCURS 10 WITH HEADER LINE,
        objbin2 LIKE solisti1 OCCURS 10 WITH HEADER LINE,
        objbin_final LIKE solisti1 OCCURS 10 WITH HEADER LINE,
        reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
        tab_lines TYPE sy-tabix.

  DATA : solixtab        TYPE solix_tab.
  DATA : archivobject    TYPE STANDARD TABLE OF docs.
  DATA : binarchivobject TYPE STANDARD TABLE OF  tbl1024.
  DATA : binarch_string TYPE string.
  DATA: wa_binarchivobject LIKE LINE OF  binarchivobject.
  DATA: gd_sender_type LIKE soextreci1-adr_typ.
  DATA: rcode LIKE sy-subrc.
  DATA: n TYPE i.

* Body

  docdata-obj_name = space.
  docdata-obj_descr = p_cabecera.
  objtxt = p_cuerpo.
  APPEND objtxt.
  DESCRIBE TABLE objtxt LINES tab_lines.
  READ TABLE objtxt INDEX tab_lines.
  docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).

  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.

* Attachment Pdf.

  CALL FUNCTION 'ARCHIV_GET_TABLE'
    EXPORTING
      ar_object                = p_ar_object
      object_id                = p_object_id
      sap_object               = p_sap_object
    TABLES
      archivobject             = archivobject
      binarchivobject          = binarchivobject
    EXCEPTIONS
      error_archiv             = 1
      error_communicationtable = 2
      error_connectiontable    = 3
      error_kernel             = 4
      error_parameter          = 5
      not_unique               = 6
      OTHERS                   = 7.
  IF sy-subrc <> 0.
    RAISE no_attachment_found.
  ENDIF.

  PERFORM table_copy IN PROGRAM saplsokp TABLES binarchivobject solixtab CHANGING rcode.

* Create attachment notification
  objpack-transf_bin = 'X'.
  objpack-head_start = 1.
  objpack-head_num   = 1.
  objpack-body_start = 1.
  DESCRIBE TABLE solixtab LINES objpack-body_num.
  objpack-doc_type   =  p_doc_type.
  CONCATENATE 'Solicitud_Viaje_' p_object_id INTO objpack-obj_descr.
  objpack-doc_size   =  objpack-body_num * 255.
  APPEND objpack.

*Create the list of recipients

  reclist-receiver = p_destinatario.
  reclist-rec_type = 'U'.
  reclist-express = 'X'.
  APPEND reclist.

*Send the e-mail

  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = docdata
      put_in_outbox              = 'X'
      commit_work                = 'X'
    TABLES
      packing_list               = objpack
      contents_txt               = objtxt
      contents_hex               = solixtab
      receivers                  = reclist
    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.
    RAISE email_not_sended.
  ENDIF.

  COMMIT WORK.

ENDFUNCTION.

, , ,