MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Envio por Mail Z, adjuntar. (foro/showthread.php?t=67173)

Dlanor20777 28/05/13 20:02:01

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 29/05/13 14:05:53

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?:confused: :(

Saludos.

Melandry 30/05/13 16:28:19

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.

Dlanor20777 31/05/13 19:06:08

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.:D

Saludos y Gracias!

ehrman 04/07/17 15:52:23

Excelente me sirvio para la necesidad requerida.
 
eXCELENTE APORTE COMPAÑERO. gRACIAS



Husos Horarios son GMT. La hora en este momento es 10:33:43.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web