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 18/12/09, 10:22:01
Hasurac Hasurac is offline
Member
 
Fecha de Ingreso: nov 2009
Mensajes: 41
Question Mandar un pdf en mail

Hola mi consulta es como puedo enviar un pdf por mail, ósea yo trasformo el smanfromts en pdf pero ahora debo enviarlo por mail y no se como e visto por la red unas opciones pero no logro entenderlas bien si alguien me podria ayudar se lo agradecería hai les pongo el código donde trasformo a pdf


DATA: lv_solicitud TYPE zthr_0004-num_solicitud,
i_pdf LIKE tline OCCURS 100 WITH HEADER LINE,
W_CTRLOP TYPE SSFCTRLOP,
V_LEN_IN LIKE SOOD-OBJLEN,
I_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,
W_COMPOP TYPE SSFCOMPOP,
I_TLINE TYPE TABLE OF TLINE," WITH HEADER LINE,
W_RETURN TYPE SSFCRESCL,
SPOOLNO type TSP01-RQIDENT. " Orden Spool


W_CTRLOP-GETOTF = 'X'.
W_CTRLOP-NO_DIALOG = 'X'.
W_COMPOP-TDNOPREV = 'X'.
W_COMPOP-TDDEST = 'LOCL'.
W_COMPOP-TDARMOD = '1'.
W_COMPOP-TDCOPIES = '1'.
W_COMPOP-TDPRINTER = 'SAPWIN'.
W_COMPOP-TDLIFETIME = '8'.

CALL FUNCTION '/1BCDWB/SF00000006'

EXPORTING
CONTROL_PARAMETERS = W_CTRLOP
OUTPUT_OPTIONS = W_COMPOP
USER_SETTINGS = 'X'
"Aca los parametros que necesita el smartform
gp_logo = p_logo
gp_n_solicitud = p_n_solicitud
gp_nom_tra = p_nom_tra
gp_rut_tra = p_rut_tra
gp_empresa = p_empresa
gp_fech_ing_emp = p_fech_ing_emp
gp_sindicato = p_sindicato
gp_tip_boni = p_tip_boni
gp_fech_soli = p_fech_soli
gp_rut_bene = p_rut_ben
gp_nom_famil = p_nom_hc
gp_ap_paterno = p_ap_paterno
gp_ap_materno = p_ap_materno

IMPORTING
JOB_OUTPUT_INFO = W_RETURN "aca me devuelve el smartform
TABLES
tp_for001 = tp_001
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

I_OTF[] = W_RETURN-OTFDATA[].

CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
MAX_LINEWIDTH = 132
IMPORTING
BIN_FILESIZE = V_LEN_IN
TABLES
OTF = I_OTF
LINES = I_TLINE
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.
IF SY-SUBRC EQ 0.
ENDIF.
Responder Con Cita
  #2  
Viejo 18/12/09, 12:31:30
The_best_for_less The_best_for_less is offline
Junior Member
 
Fecha de Ingreso: may 2009
Mensajes: 7
Thumbs up Prueba...

Estimado prueba con este código, a mi me funko
Saludos.

REPORT zkpi0020.
***
TABLES: usr01. "Maestro de usuarios
*
DATA: d_lineas LIKE sy-tabix,
i_pdf LIKE tline,
fich_p_borrar LIKE tsp01-rqtitle,
pbyte TYPE i,
i_spoolreq LIKE rsporq,
spool_id LIKE tsp01-rqident,
respuesta LIKE sy-tabix,
i_otf,
fecha_w(16),
indice LIKE sy-tabix,
datc LIKE rsporq-rqcretime,
l_comando LIKE sxpgcolist-name.
* Tablas Internas
DATA: t_pdf LIKE tline OCCURS 0,
tspoolreq LIKE rsporq OCCURS 0,
lista_sel LIKE spopli OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF i_output OCCURS 10.
INCLUDE STRUCTURE btcxpm.
DATA: END OF i_output.
DATA: d_status LIKE extcmdexex-status,
d_exit LIKE extcmdexex-exitcode.

DATA : p_to(60),
p_subj(30),
p_body(50).

* Include Objetos OLE para envio de mensajes
INCLUDE ole2incl.

***-------------------------------------------------------------------**
** PANTALLA DE SELECCION

SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK datos WITH FRAME TITLE text-000.
PARAMETERS:
p_arch LIKE tsp01-rqtitle,
p_fich LIKE rlgrap-filename OBLIGATORY
DEFAULT 'C:\Envios\',
usernam LIKE sy-uname DEFAULT sy-uname,
disp LIKE rspotype-device OBLIGATORY,
datum LIKE sy-datum DEFAULT sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK datos.
*
INITIALIZATION.
PERFORM recuperar_impresora.
***------------------------------------------------------------------***
START-OF-SELECTION.
PERFORM buscar_datos_seleccion.
*
IF respuesta NE 0.
PERFORM tratamiento_pdf.
DESCRIBE TABLE t_pdf LINES d_lineas.
IF d_lineas NE 0. "solo hago el download si tengo datos
PERFORM bajar_archivo.
PERFORM envia-mail.
OPEN DATASET p_fich FOR INPUT IN BINARY MODE. "IN TEXT MODE.
DELETE DATASET p_fich.
ENDIF.
ENDIF.

END-OF-SELECTION.
*---------------------------------------------------------------------*
* Form BUSCAR_DATOS_SELECCION
*---------------------------------------------------------------------*
FORM buscar_datos_seleccion.
CONCATENATE sy-datum '00000000' INTO fecha_w.
CALL FUNCTION 'RSPO_FIND_SPOOL_REQUESTS' " Leemos los spools
EXPORTING
allclients = ' '
authority = 'X'
datatype = '*'
has_output_requests = '*'
rq0name = '*'
rq1name = '*'
rq2name = '*'
rqdest = disp
rqident = 0
rqowner = usernam
* rqcretime = fecha_w
TABLES
spoolrequests = tspoolreq
EXCEPTIONS
no_permission = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID 'Z1' TYPE 'E' NUMBER 000 WITH text-001.
respuesta = 4.
ELSE.
PERFORM elegir-spool.
ENDIF.

ENDFORM. " BUSCAR_DATOS_SELECCION
*---------------------------------------------------------------------*
* Form TRATAMIENTO_PDF
*---------------------------------------------------------------------*
FORM tratamiento_pdf.
* Miramos qué tipo de spool tenemos
CALL FUNCTION 'RSPO_GET_TYPE_SPOOLJOB'
EXPORTING
rqident = spool_id
IMPORTING
is_otf = i_otf
EXCEPTIONS
can_not_access = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID 'Z1' TYPE 'E' NUMBER 000
WITH text-002.
ELSEIF i_otf EQ 'X'.
* Generar PDF de OTF
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = spool_id
IMPORTING
pdf_bytecount = pbyte
TABLES
pdf = t_pdf
EXCEPTIONS
err_no_otf_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_dstdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
ELSE. " Generar PDF de Abap
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = spool_id
IMPORTING
pdf_bytecount = pbyte
TABLES
pdf = t_pdf
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
IF sy-subrc EQ 0.
* Iniciamos la traducción por error en la funcion de conversion ABAP-PDF
LOOP AT t_pdf INTO i_pdf.
TRANSLATE i_pdf USING ',.'.
MODIFY t_pdf FROM i_pdf.
ENDLOOP.
ENDIF.
ENDIF. "De if sy-subrc

ENDFORM. " TRATAMIENTO_PDF

*---------------------------------------------------------------------*
* Form BAJAR_ARCHIVO
*---------------------------------------------------------------------*
FORM bajar_archivo.
CONCATENATE p_fich p_arch '.pdf' INTO p_fich.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
bin_filesize = pbyte
filename = p_fich
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
*---------------------------------------------------------------------*
* Form RECUPERAR_IMPRESORA
*---------------------------------------------------------------------*
FORM recuperar_impresora.
SELECT SINGLE spld FROM usr01
INTO CORRESPONDING FIELDS OF usr01
WHERE bname = sy-uname.
IF sy-subrc = 0.
disp = usr01-spld.
ENDIF.
ENDFORM. " RECUPERAR_IMPRESORA
*---------------------------------------------------------------------*
* Form ELEGIR-SPOOL
*---------------------------------------------------------------------*
FORM elegir-spool.
* Definimos la lista para elegir la orden spool
SORT tspoolreq.
LOOP AT tspoolreq INTO i_spoolreq.
IF i_spoolreq-rqcretime+0(8) = datum.
IF i_spoolreq-rqtitle IS INITIAL.
CONCATENATE i_spoolreq-rqident i_spoolreq-rq0name
i_spoolreq-rq1name i_spoolreq-rq2name INTO
lista_sel-varoption SEPARATED BY space.
ELSE.
CONCATENATE i_spoolreq-rqident i_spoolreq-rqtitle
INTO lista_sel-varoption SEPARATED BY space.
ENDIF.
APPEND lista_sel.
ELSE.
DELETE tspoolreq.
ENDIF.
ENDLOOP.

* Y Pedimos que se seleccione la orden spool
SORT lista_sel BY varoption+0(10) AS TEXT.
IF sy-subrc = 0.
respuesta = 0.
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
endpos_col = 60
endpos_row = 10
startpos_col = 1
startpos_row = 1
titletext = text-010
IMPORTING
choise = respuesta
TABLES
valuetab = lista_sel
EXCEPTIONS
break_off = 1
OTHERS = 2.
IF ( sy-subrc = 1 ) OR ( sy-subrc = 2 ).
LEAVE TO SCREEN 0.
ELSE.
IF respuesta NE 0.
MOVE respuesta TO indice.
ENDIF.
READ TABLE lista_sel INTO i_spoolreq INDEX indice.
SHIFT i_spoolreq LEFT DELETING LEADING space.
spool_id = i_spoolreq-rqident.
ENDIF.
ENDIF.

ENDFORM. " ELEGIR-SPOOL

*&---------------------------------------------------------------------*
*& Form ENVIA-MAIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM envia-mail.
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.
* 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' = p_to.
SET PROPERTY OF appitem 'Subject' = p_subj.
SET PROPERTY OF appitem 'Body' = p_body.

****************************************
*Se adjunta el fichero
IF NOT p_fich IS INITIAL.
CALL METHOD OF appitem 'Attachments' = attachments.
CALL METHOD OF attachments 'Add'
EXPORTING #1 = p_fich.
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
Responder Con Cita
  #3  
Viejo 18/12/09, 12:40:58
Hasurac Hasurac is offline
Member
 
Fecha de Ingreso: nov 2009
Mensajes: 41
Gracia s por tu ayuda pero no e s lo que estoy buscando en si lo que pasaste usa el Outlook lo cual no necesariamente van a usar, y la parte de pdf ya esta echa solo deseo saber como mandar el mail con el archivo pdf adjunto pero gracias de todas forma XD
Responder Con Cita
  #4  
Viejo 18/12/09, 13:30:33
Hasurac Hasurac is offline
Member
 
Fecha de Ingreso: nov 2009
Mensajes: 41
Buscando por Internet lo que encuentro es esta función pero no entiendo bien como ago para cargarle el archivo pdf dado que en algunos lados lo convierten a bin y en otros no pero definen siempre una estructura objekpack o algo así pero n entiendo bien donde cargan ahí si me podrían ayudar agradecería
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 22:55:56.


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