MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 09/07/13, 18:31:05
minerva0112 minerva0112 is offline
Senior Member
 
Fecha de Ingreso: nov 2009
Mensajes: 116
Question enviar pdf por outlook desde proceso de fonfo

Hola estoy utilizando lo siguiente:


LOOP AT it_correo.

* 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'.
* Propiedades TO , SUBJECT y BODY
SET PROPERTY OF appitem 'To' = it_correo-correo.
SET PROPERTY OF appitem 'Subject' = g_txt.
SET PROPERTY OF appitem 'Body' = g_body.

* Se adjunta el archivo
IF NOT g_file IS INITIAL.
CALL METHOD OF appitem 'Attachments' = attachments.
CALL METHOD OF attachments 'Add'
EXPORTING
#1 = g_file.
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.

ENDLOOP.


me sirve de maravilla cuando corro el reporte en linea, una vez que agendo los jobs simplemente no funciona

por favor alguien me puede indicar un metodo para enviar un pdf por correo en proceso de fondo?

gracias
Responder Con Cita
  #2  
Viejo 09/07/13, 18:40:11
Mauricio Hidalgo Mauricio Hidalgo is offline
Senior Member
 
Fecha de Ingreso: may 2006
Localización: Santiago, Chile
Mensajes: 481
Claro por que OLE está en el front-end, no en el servidor de aplicaciones.

Pregunta el PDF lo tienes a partir de que?:

Una lista, un formulario, una orden spool, un PDF en tu disco local?...disco local imposible que lo puedas levantar en proceso de fondo.

Saludos

Úlima edición por Mauricio Hidalgo fecha: 09/07/13 a las 18:47:41.
Responder Con Cita
  #3  
Viejo 09/07/13, 20:27:24
minerva0112 minerva0112 is offline
Senior Member
 
Fecha de Ingreso: nov 2009
Mensajes: 116
Unhappy



hola es un formulario (smartforms)
Responder Con Cita
  #4  
Viejo 09/07/13, 20:49:47
Mauricio Hidalgo Mauricio Hidalgo is offline
Senior Member
 
Fecha de Ingreso: may 2006
Localización: Santiago, Chile
Mensajes: 481
Fijar lo siguientes atributos a la estructura de control de salida del formulario, parámetros CONTROL_PARAMETERS y OUTPUT_OPTIONS en el llamado del formulario .


control-getotf = 'X'. "con esto tendras el OTF para poder enviar el PDF
control-no_dialog = 'X' "Sin dialogo para selección de impresora
output-tdnoprev = 'X'. "sin vista previa


Te adjunto rutina para armar el envio del correo.

FORM ENVIAR_MAIL_Usuario.
DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.
DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.
DATA: DOC_CHNG LIKE SODOCCHGI1.
DATA: TAB_LINES LIKE SY-TABIX.
DATA L_NUM(3).
DATA LARGO TYPE I.
DATA SYSUBRC TYPE N.

Data: v_ADDRNUMBER like ADRC-ADDRNUMBER,
v_PERSNUMBER like ADRP-PERSNUMBER.


DATA: BEGIN OF correo OCCURS 24.
DATA: linea(255).
DATA: END OF correo.

DATA filesize TYPE I.

* TOMAR OTF Y PASARLO A PDF
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = FILESIZE
TABLES
OTF = T_OTF
LINES = T_LINES
EXCEPTIONS
ERR_CONV_NOT_POSSIBLE = 1.

* File Name
DOC_CHNG-OBJ_NAME = 'MESSAGE'.
* Mail Subject
CONCATENATE 'Reclamo N° ' nast-objky
into DOC_CHNG-OBJ_DESCR
SEPARATED BY SPACE.

* PACKING INFO TEXT DATA
OBJTXT-LINE = 'Ver detalle de reclamo en Documento Adjunto.'.
APPEND OBJTXT.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.
READ TABLE OBJTXT INDEX TAB_LINES.
DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).

* CLEAR OBJHEAD.
* OBJHEAD = 'MiPDF.PDF'.
* APPEND OBJHEAD.

clear OBJPACK.
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.

CALL FUNCTION 'QCE1_CONVERT'
TABLES
T_SOURCE_TAB = T_LINES
T_TARGET_TAB = OBJBIN
EXCEPTIONS
CONVERT_NOT_POSSIBLE = 1.


DESCRIBE TABLE OBJBIN LINES TAB_LINES.
READ TABLE OBJBIN INDEX TAB_LINES.

clear OBJPACK.
OBJPACK-TRANSF_BIN = 'X'.
OBJPACK-head_start = 1.
OBJPACK-head_num = 0.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'PDF'.
OBJPACK-OBJ_NAME = 'COTIPDF'.

CONCATENATE 'Cotizac_' nast-objky Into OBJPACK-OBJ_DESCR.

* OBJPACK-OBJ_DESCR = 'Click para ver archivo'.
OBJPACK-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJBIN ).
APPEND OBJPACK.

* Completing the recipient list target recipent
clear RECLIST.
select single ADDRNUMBER PERSNUMBER
into (v_ADDRNUMBER, v_PERSNUMBER)
from USR21
where BNAME = sy-uname.

if sy-subrc eq 0.
select single SMTP_ADDR into RECLIST-RECEIVER
from ADR6
where ADDRNUMBER = v_ADDRNUMBER
and PERSNUMBER = v_PERSNUMBER.
if sy-subrc eq 0.
RECLIST-REC_TYPE = 'U'.
APPEND RECLIST.
Else.
* Si no encuentra el correo externo del usuario,
* mandamos al correo interno de SAP.
RECLIST-RECEIVER = sy-uname.
RECLIST-REC_TYPE = 'B'.
APPEND RECLIST.
endif.
ENDIF.

*
* Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_CHNG
TABLES
PACKING_LIST = OBJPACK
* OBJECT_HEADER = OBJHEAD
CONTENTS_BIN = OBJBIN
CONTENTS_TXT = OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
OPERATION_NO_AUTHORIZATION = 4
OTHERS = 99.
ENDFORM.

Con eso debería poder armar tu programa para que pueda correr en segundo plano.

Saludos
Responder Con Cita
  #5  
Viejo 11/07/13, 16:01:39
minerva0112 minerva0112 is offline
Senior Member
 
Fecha de Ingreso: nov 2009
Mensajes: 116
hola



Debo de tener algo de mas o me esta faltando algo porque no me genera el correo ni en linea ni en proceso de fondo, please si me puedes ayudar te anexo el codigo

FORM f_generar_archivo_pdf.


* Funcion para llamar el formulario
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZHRO_LSTD_NTFCCNS'(031)
IMPORTING
fm_name = g_funcion
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.


g_control_parameters-getotf = 'X'.
g_control_parameters-no_dialog = 'X'.
g_output_options-tdnoprev = 'X'.
g_output_options-tddest = 'PDF '.
g_output_options-tdnewid = 'X'.
g_output_options-tdimmed = 'X'.



CALL FUNCTION g_funcion
EXPORTING
indicador = g_indicador
texto = g_texto
output_options = g_output_options
control_parameters = g_control_parameters
user_settings = space
IMPORTING
job_output_info = t_otf_from_fm
TABLES
it_data = it_data
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.


IF sy-subrc EQ 0.
t_otf[] = t_otf_from_fm-otfdata[].
ENDIF.

ENDFORM. "f_generar_archivo_pdf



FORM f_enviar_correo.


SELECT *
FROM pa0105
INTO TABLE it_pa0105a
WHERE pernr IN p_remit
AND endda EQ '99991231'
AND subty EQ '0010'.

LOOP AT it_pa0105a.
MOVE: it_pa0105a-usrid_long TO it_correo-correo.
APPEND it_correo.
ENDLOOP.


LOOP AT it_correo.
* TOMAR OTF Y PASARLO A PDF
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = filesize
TABLES
otf = t_otf
lines = t_lines
EXCEPTIONS
err_conv_not_possible = 1.

* File Name
doc_chng-obj_name = 'MESSAGE'.
* Mail Subject
CONCATENATE 'Reclamo N° ' sy-datum
INTO doc_chng-obj_descr
SEPARATED BY space.

* PACKING INFO TEXT DATA
objtxt-line = 'Anexo Listado de Notificacion.'.
APPEND objtxt.

DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).

* CLEAR OBJHEAD.
* OBJHEAD = 'MiPDF.PDF'.
* APPEND OBJHEAD.

CLEAR objpack.
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.

CALL FUNCTION 'QCE1_CONVERT'
TABLES
t_source_tab = t_lines
t_target_tab = objbin
EXCEPTIONS
convert_not_possible = 1.


DESCRIBE TABLE objbin LINES tab_lines.
READ TABLE objbin INDEX tab_lines.

CLEAR objpack.
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'PDF'.
objpack-obj_name = 'COTIPDF'.

CONCATENATE 'Listado Notificacion' sy-datum INTO objpack-obj_descr.

* OBJPACK-OBJ_DESCR = 'Click para ver archivo'.
objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).
APPEND objpack.

* Completing the recipient list target recipent
CLEAR reclist.
* SELECT SINGLE addrnumber persnumber
* INTO (v_addrnumber, v_persnumber)
* FROM usr21
* WHERE bname = sy-uname.
*
* IF sy-subrc EQ 0.
* SELECT SINGLE smtp_addr INTO reclist-receiver
* FROM adr6
* WHERE addrnumber = v_addrnumber
* AND persnumber = v_persnumber.
* IF sy-subrc EQ 0.
* reclist-rec_type = 'U'.
* APPEND reclist.
* ELSE.
** Si no encuentra el correo externo del usuario,
** mandamos al correo interno de SAP.
* reclist-receiver = sy-uname.
* reclist-rec_type = 'B'.
* APPEND reclist.
* ENDIF.
* ENDIF.
reclist-receiver = it_correo-correo.
reclist-rec_type = 'B'.
APPEND reclist.

* Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_chng
TABLES
packing_list = objpack
* OBJECT_HEADER = OBJHEAD
contents_bin = objbin
contents_txt = objtxt
receivers = reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
operation_no_authorization = 4
OTHERS = 99.

ENDLOOP.
Responder Con Cita
  #6  
Viejo 11/07/13, 18:55:58
Mauricio Hidalgo Mauricio Hidalgo is offline
Senior Member
 
Fecha de Ingreso: may 2006
Localización: Santiago, Chile
Mensajes: 481
Quita esto:

g_output_options-tddest = 'PDF '.
g_output_options-tdnewid = 'X'.
g_output_options-tdimmed = 'X'.

Son correos SAP Office?...porque si son externo el tipo debe ser 'U' no 'B'.

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 21:29:52.


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