Envio de Email atraves de Outlook

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • reijimher
    El más rápido del oeste
    • mar
    • 93

    #1

    Envio de Email atraves de Outlook

    Muy buenas tardes foro, quisiera saber que funcion puedo utilizar para enviar correo desde SAP atraves de Outlook, agradezco mucho a quien pueda ayudarme.

    Saludos...
  • erp
    Junior Member
    • feb
    • 21

    #2
    Hola abapero,


    Te transcribo el siguiente programa ejemplo que envía un email utilizando el sapmail de sap por si te vale.


    *&---------------------------------------------------------------------*
    *& Form SEND_MAIL
    *&---------------------------------------------------------------------*
    * send email to current user *
    *----------------------------------------------------------------------*
    FORM SEND_MAIL.

    * PARAMETERS FOR SO_NEW_DOCUMENT_SEND_API1
    DATA: W_OBJECT_ID LIKE SOODK,
    W_SONV_FLAG LIKE SONV-FLAG.
    DATA: T_RECEIVERS LIKE SOMLRECI1 OCCURS 1 WITH HEADER LINE,
    W_OBJECT_CONTENT LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE,
    W_DOC_DATA LIKE SODOCCHGI1 OCCURS 0 WITH HEADER LINE.
    *
    DATA: W_DATE(10).
    CLEAR T_RECEIVERS.
    T_RECEIVERS-RECEIVER = SY-UNAME.
    T_RECEIVERS-REC_TYPE = 'B'.
    T_RECEIVERS-EXPRESS = ' '.
    APPEND T_RECEIVERS.

    W_DOC_DATA-OBJ_DESCR = 'Change Expiry date'.


    * Delivery NO
    CONCATENATE 'Delivery No' M_VMVMA-VBELN INTO W_OBJECT_CONTENT
    SEPARATED BY ' '.
    APPEND W_OBJECT_CONTENT.
    * material Batch
    CONCATENATE 'Material' ZGREC-MATNR 'Batch' ZGREC-CHARG
    INTO W_OBJECT_CONTENT SEPARATED BY ' '.
    APPEND W_OBJECT_CONTENT.
    * Expiry date
    WRITE B_VFDAT TO W_DATE DD/MM/YYYY.
    CONCATENATE 'Change expiry date to' W_DATE
    INTO W_OBJECT_CONTENT SEPARATED BY ' '.
    APPEND W_OBJECT_CONTENT.
    *
    CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
    EXPORTING
    DOCUMENT_DATA = W_DOC_DATA
    PUT_IN_OUTBOX = ' '
    TABLES
    OBJECT_CONTENT = W_OBJECT_CONTENT
    RECEIVERS = T_RECEIVERS
    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.
    ENDFORM. " SEND_MAIL


    Un saludo
    El consultor anteriormente conocido como dump

    Comentario

    • axapta
      Moderator
      • feb
      • 37

      #3
      Y si no te sirve el programa de dump aquí te suscribo otro programa abap que demuestra como un email a una dirección de correo externo test@sapdev.co.uk


      *&---------------------------------------------------------------------*
      *& Report ZSENDEMAIL *
      *& *
      *&---------------------------------------------------------------------*
      *& Example of sending external email via SAPCONNECT *
      *& *
      *&---------------------------------------------------------------------*
      REPORT zsendemail .

      PARAMETERS: psubject(40) type c default 'Hello',
      p_email(40) type c default 'test@sapdev.co.uk' .

      data: it_packing_list like sopcklsti1 occurs 0 with header line,
      it_contents like solisti1 occurs 0 with header line,
      it_receivers like somlreci1 occurs 0 with header line,
      it_attachment like solisti1 occurs 0 with header line,
      gd_cnt type i,
      gd_sent_all(1) type c,
      gd_doc_data like sodocchgi1,
      gd_error type sy-subrc.

      data: it_message type standard table of SOLISTI1 initial size 0
      with header line.

      ************************************************** *********************
      *START-OF-SELECTION.
      START-OF-SELECTION.

      Perform populate_message_table.

      *Send email message, although is not sent from SAP until mail send
      *program has been executed(rsconn01)
      PERFORM send_email_message.

      *Instructs mail send program for SAPCONNECT to send email(rsconn01)
      perform initiate_mail_execute_program.


      *&---------------------------------------------------------------------*
      *& Form POPULATE_MESSAGE_TABLE
      *&---------------------------------------------------------------------*
      * Adds text to email text table
      *----------------------------------------------------------------------*
      form populate_message_table.
      Append 'Email line 1' to it_message.
      Append 'Email line 2' to it_message.
      Append 'Email line 3' to it_message.
      Append 'Email line 4' to it_message.
      endform. " POPULATE_MESSAGE_TABLE


      *&---------------------------------------------------------------------*
      *& Form SEND_EMAIL_MESSAGE
      *&---------------------------------------------------------------------*
      * Send email message
      *----------------------------------------------------------------------*
      form send_email_message.
      * Fill the document data.
      gd_doc_data-doc_size = 1.

      * Populate the subject/generic message attributes
      gd_doc_data-obj_langu = sy-langu.
      gd_doc_data-obj_name = 'SAPRPT'.
      gd_doc_data-obj_descr = psubject.
      gd_doc_data-sensitivty = 'F'.

      * Describe the body of the message
      clear it_packing_list.
      refresh it_packing_list.
      it_packing_list-transf_bin = space.
      it_packing_list-head_start = 1.
      it_packing_list-head_num = 0.
      it_packing_list-body_start = 1.
      describe table it_message lines it_packing_list-body_num.
      it_packing_list-doc_type = 'RAW'.
      append it_packing_list.

      * Add the recipients email address
      clear it_receivers.
      refresh it_receivers.
      it_receivers-receiver = p_email.
      it_receivers-rec_type = 'U'.
      it_receivers-com_type = 'INT'.
      it_receivers-notif_del = 'X'.
      it_receivers-notif_ndel = 'X'.
      append it_receivers.

      * Call the FM to post the message to SAPMAIL
      call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
      exporting
      document_data = gd_doc_data
      put_in_outbox = 'X'
      importing
      sent_to_all = gd_sent_all
      tables
      packing_list = it_packing_list
      contents_txt = it_message
      receivers = it_receivers
      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.

      * Store function module return code
      gd_error = sy-subrc.

      * Get it_receivers return code
      loop at it_receivers.
      endloop.
      endform. " SEND_EMAIL_MESSAGE


      *&---------------------------------------------------------------------*
      *& Form INITIATE_MAIL_EXECUTE_PROGRAM
      *&---------------------------------------------------------------------*
      * Instructs mail send program for SAPCONNECT to send email.
      *----------------------------------------------------------------------*

      form initiate_mail_execute_program.
      wait up to 2 seconds.
      if gd_error eq 0.
      submit rsconn01 with mode = 'INT'
      with output = 'X'
      and return.
      endif.
      endform. " INITIATE_MAIL_EXECUTE_PROGRAM



      Un saludete al personal

      Comentario

      • tracer
        Administrator
        • feb
        • 503

        #4
        En la zona de descargas tienes un programa para:

        MANDAR MAIL EXTERNOS VIA OUTLOOK

        Función que permite mandar un mail externo a SAP utilizando las macros de Outlook.

        Un saludo
        Si precisas una mano, recuerda que yo tengo dos.

        Comentario

        • K-MUS
          Member
          • feb
          • 87

          #5
          Una pregunta, ambos de estos ejemplos, ya sea un mail destino interno de SAP o externo, usan si o si el mail origen q esta seteado en el user q ta logueado en el R3 o hay alguna posibilidad de configurar asi tambien un mail origen externo.

          o sea quiero hacer un programa q cuando se modifiq algo. mande un mail desde info@miempresa.com hacia pedritocliente@hotmail.com

          esto es posible ? porq solo veo parametros de destino en la funciones q se usan para mandar mails.

          Gracias

          Comentario

          • jacmono
            Member
            • jun
            • 48

            #6
            Si deseas enviar el origen del correo, debes usar otra función, por ejemplo la SO_OBJECT_SEND, (de hecho se utiliza dentro de SO_NEW_DOCUMENT_SEND_API1), aunque su uso es mas complicado.
            Jack of all Trades

            Comentario

            Trabajando...