Envio por Mail Z, adjuntar.

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Dlanor20777
    Senior Member
    • nov
    • 708

    #1

    Envio por Mail Z, adjuntar.

    Hola amigos, tengo un pequeño problema, existe un desarrollo desde el cual se envían las peticiones de oferta de compras por correo outlook, el programa funciona bien, baja la petición y la adjunta al correo y desde outlook se envía. Ahora esta colocando anexos en las peticiones ya sean planos o documentos de word, excel o pdf, esos documentos no se adjuntan en el Z, como podría agregarlos en ese mismo envió, no se mucho de abap pero estoy interesado en aprender, Investigando encontré una tabla que podría contener los anexos SRGBTBREL, les coloco parte del código del programa:

    ***Para bajar el archivo que se va a adjuntar al PC******************

    FORM BAJAR_ARCHIVO.
    *T

    *-Busca el nombre del acreedor
    * SELECT SINGLE * FROM LFA1 WHERE LIFNR EQ REPORT_III-LIFNR.

    P_FILE = LFA1-NAME1.

    CONCATENATE SUBDIR '\' P_FILE '.PDF' INTO W_ARCHIVO.


    CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
    BIN_FILESIZE = PBYTE
    FILENAME = W_ARCHIVO
    FILETYPE = 'BIN'
    TABLES
    DATA_TAB = T_PDF
    EXCEPTIONS
    INVALID_FILESIZE = 1
    INVALID_TABLE_WIDTH = 2
    INVALID_TYPE = 3
    NO_BATCH = 4
    UNKNOWN_ERROR = 5
    GUI_REFUSE_FILETRANSFER = 6.

    IF SY-SUBRC <> 0.
    MESSAGE ID 'Z1' TYPE 'E' NUMBER '000' WITH TEXT-003.
    ENDIF.

    ENDFORM. " BAJAR_ARCHIVO


    ***Para el Envió del Correo******************
    FORM ENVIA-MAIL.
    INCLUDE OLE2INCL.
    DATA: APPOUTLOOK TYPE OLE2_OBJECT.
    DATA: APPOUT2 TYPE OLE2_OBJECT.
    DATA: APPITEM TYPE OLE2_OBJECT.
    DATA: NAMESPACE TYPE OLE2_OBJECT.
    DATA: ATTACHMENTS TYPE OLE2_OBJECT.
    DATA: FRACE01(66), FRACE02(66), FRACE03(66), FRACE04(66), FRACE05(66).

    * Crear objeto OLE : outlook.application
    CREATE OBJECT APPOUTLOOK 'outlook.application' .
    * Mensajes vía MAPI
    CALL METHOD OF APPOUTLOOK 'GetNameSpace' = NAMESPACE
    EXPORTING #1 = 'MAPI'.
    * Crea objeto nuevo ITEM ( nuevo mensaje )
    CALL METHOD OF APPOUTLOOK 'CreateItem' = APPITEM
    EXPORTING #1 = '0'.

    SET PROPERTY OF APPITEM 'To' = P_TO.

    SET PROPERTY OF APPITEM 'Bcc' = 'xxxx@xxxx.com'.


    P_SUBJ = T166U-DRTYP.

    FRACE01 = ''.

    CONCATENATE P_SUBJ 'MATESI N°:' EKKO-EBELN
    INTO P_SUBJ SEPARATED BY SPACE.

    SET PROPERTY OF APPITEM 'Subject' = P_SUBJ.

    frace02 = 'xxxxxx '.
    frace03 = ‘xxxxxx,'.
    frace04 = 'xxxxx'.
    frace05 = xxxxxx.'.

    CONCATENATE FRACE01 FRACE02 FRACE03
    FRACE04 FRACE05 INTO P_BODY SEPARATED BY SPACE.

    SET PROPERTY OF APPITEM 'Body' = P_BODY.
    * Se adjunta el archivo
    IF NOT W_ARCHIVO IS INITIAL.
    CALL METHOD OF APPITEM 'Attachments' = ATTACHMENTS.
    CALL METHOD OF ATTACHMENTS 'Add'
    EXPORTING #1 = W_ARCHIVO.
    ENDIF.
    ****************************************
    * Envíar directamente
    CALL METHOD OF APPITEM 'Send'.
    *Se muestra la pantalla del outlook
    ******** CALL METHOD OF appitem 'Display'.
    * Libera Espacio del objeto
    FREE OBJECT ATTACHMENTS.
    FREE OBJECT APPITEM.
    FREE OBJECT NAMESPACE.
    * Cierra Outlook ( solo si se quiere que quede cerrado )
    ***CALL METHOD OF appoutlook 'Quit'.
    FREE OBJECT APPOUTLOOK.
    ENDFORM. " ENVIA-MAIL

    Espero puedan ayudarme, Saludos!
  • Dlanor20777
    Senior Member
    • nov
    • 708

    #2
    Ayúdenme por favor, no se como solucionar este problema, puedo bajar esos documentos anexos como bajo el documento de la orden o petición a mi pc y luego adjuntarlos a outlook?

    Saludos.

    Comentario

    • Melandry
      Senior Member
      • ene
      • 110

      #3
      Hola.
      A ver si esto te puede ayudar.
      Para ver los documentos anexados a un objeto puedes usar la función 'BDS_GOS_CONNECTIONS_GET', te pongo un ejemplo de recuperación de documentos anexados a un Plan de entregas:
      LOGICAL_SYSTEM
      CLASSNAME BUS2035 (BO correspondiente a tu Petición de oferta)
      OBJKEY 0008701011
      CLIENT 100


      La tabla resultado de ta todos los docs anexados al objeto que indicas.

      Ahora con la función 'SO_DOCUMENTS_MANAGER' puedes descargar los documentos leídos anteriormente entrando los siguientes parámetros:
      ACTIVITY EXPO

      y en la tabla indicar que objeto quieres leer obtenido en la tabla de la func_1 en el campo LOIO_ID mapeando el contenido a estos campos.

      FOLTP
      FOLYR
      FOLNO
      OBJTP
      OBJYR
      OBJNO

      Bueno, ha sido una pruebilla un poco rápida, espero te sirva o te de alguna pista al menos.

      Un saludo.

      Comentario

      • Dlanor20777
        Senior Member
        • nov
        • 708

        #4
        Ya solvente de otra manera!

        Hola amigo gracias por la respuesta, lamentablemente no pude utilizar lo que me propusiste o hacer las pruebas. A cambio de ello hice esto en el programa:

        Coloque un mensaje de confirmación:

        CALL FUNCTION 'POPUP_TO_CONFIRM'
        EXPORTING
        TITLEBAR = 'Confirmación de Envio de Correo.'
        TEXT_QUESTION = '¿Desea enviar el correo Automáticamente o Visualizarlo en pantalla antes de enviarlo?'
        TEXT_BUTTON_1 = 'Enviar'
        ICON_BUTTON_1 = 'ICON_CHECKED'
        TEXT_BUTTON_2 = 'Visualizar'
        ICON_BUTTON_2 = 'ICON_CHECKED'
        DISPLAY_CANCEL_BUTTON = ' '
        POPUP_TYPE = 'ICON_MESSAGE_QUESTION'
        IMPORTING
        ANSWER = ANS.

        Y luego coloque esto, para verificar que desea hacer el comprador:

        IF ANS = 1.
        * Envíar directamente
        CALL METHOD OF APPITEM 'Send'.
        ELSE.
        *Se muestra la pantalla del outlook
        CALL METHOD OF APPITEM 'Display'.
        ENDIF.

        Y así ya pueden adjuntar desde outlook, esto lo hacemos para evitar que se suban archivos a los servidores de SAP, y que llegue a bajar el rendimiento del sistema.

        Saludos y Gracias!

        Comentario

        • ehrman
          Junior Member
          • may
          • 5

          #5
          Excelente me sirvio para la necesidad requerida.

          eXCELENTE APORTE COMPAÑERO. gRACIAS

          Originalmente publicado por Melandry
          Hola.
          A ver si esto te puede ayudar.
          Para ver los documentos anexados a un objeto puedes usar la función 'BDS_GOS_CONNECTIONS_GET', te pongo un ejemplo de recuperación de documentos anexados a un Plan de entregas:
          LOGICAL_SYSTEM
          CLASSNAME BUS2035 (BO correspondiente a tu Petición de oferta)
          OBJKEY 0008701011
          CLIENT 100


          La tabla resultado de ta todos los docs anexados al objeto que indicas.

          Ahora con la función 'SO_DOCUMENTS_MANAGER' puedes descargar los documentos leídos anteriormente entrando los siguientes parámetros:
          ACTIVITY EXPO

          y en la tabla indicar que objeto quieres leer obtenido en la tabla de la func_1 en el campo LOIO_ID mapeando el contenido a estos campos.

          FOLTP
          FOLYR
          FOLNO
          OBJTP
          OBJYR
          OBJNO

          Bueno, ha sido una pruebilla un poco rápida, espero te sirva o te de alguna pista al menos.

          Un saludo.

          Comentario

          Trabajando...