MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Trucos, Consejos y Advertencias
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
  #31  
Viejo 15/04/08, 10:09:36
Jesus Jesus is offline
Moderator
 
Fecha de Ingreso: jun 2006
Localización: Madrid - Spain
Mensajes: 610
Hola LAVR:

Entra en la tx. SP02 y ves tus ordenes de Spool. Mira el numero de la que necesitas y ya está.
__________________
Salu2
Responder Con Cita
  #32  
Viejo 22/04/08, 18:33:43
Avatar de Carlos J. Ortega González
Carlos J. Ortega González Carlos J. Ortega González is offline
Junior Member
 
Fecha de Ingreso: jun 2006
Mensajes: 28
Aqui mando unas rutinas, esto recupera el número de spool, convierte el spool a PDF, abre el Outlook, y agrega el archivo a un mail.

Lo importante de esta rutina son las funciones utilizadas.


Saludos
CJOG




*&---------------------------------------------------------------------*
*& Form OKCODE_CPDF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM okcode_cpdf.
REFRESH i_rsporq.
CLEAR vc_user.
CONCATENATE 'ZSDSAPMV7' sy-uname(3) INTO vc_user.
CALL FUNCTION 'RSPO_FIND_SPOOL_REQUESTS'
EXPORTING
allclients = '410'
rq2name = vc_user "'ZSDSAPMV7CIP'
rqowner = sy-uname
TABLES
spoolrequests = i_rsporq.
IF i_rsporq[] IS INITIAL.
MESSAGE i998(sp01r)
WITH 'Es necesario mandar a imprimir previamente'.
ELSE.
IF s_kunnr-high NE space.
MESSAGE i532(ou) WITH text-m01.
sy-lsind = sy-lsind - 1.
IF NOT i_rsporq[] IS INITIAL.
PERFORM borra_spool.
ENDIF.
EXIT.
ENDIF.
LOOP AT i_rsporq.
MOVE i_rsporq-rqcretime(8) TO vd_fecha.
IF vd_fecha LT sy-datum.
DELETE i_rsporq INDEX sy-tabix.
CONTINUE.
ELSE.
MOVE: i_rsporq-rqident TO vi_spool,
i_rsporq-rqident TO st_spool-rqident.
CONCATENATE 'C:\P' i_rsporq-rqident '.PDF'
INTO vc_file.
* SUBMIT rstxpdft4
* WITH spoolno = vi_spool
* WITH download = 'X'
* WITH p_file = vc_file "skip selection-screen
* AND RETURN.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = vi_spool
no_dialog = ' '
IMPORTING
pdf_bytecount = v_lines
pdf_spoolid = vc_spool
btc_jobname = vc_jobnm
btc_jobcount = vi_jobcn
TABLES
pdf = i_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 <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL FUNCTION 'RSPO_IDELETE_SPOOLREQ'
EXPORTING
spoolreq = st_spool.
CONCATENATE 'C:\' i_rsporq-rqident '.PDF'
INTO vc_file.
CONDENSE vc_file.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = v_lines
filename = vc_file
filetype = 'BIN'
TABLES
data_tab = i_pdf.
IF sy-subrc EQ 0.
READ TABLE s_kunnr INDEX 1.
MOVE s_kunnr-low TO vc_kunnr.
CLEAR: kna1, adr6.
SELECT SINGLE adrnr name1 name2
INTO (kna1-adrnr, kna1-name1, kna1-name2)
FROM kna1
WHERE kunnr EQ vc_kunnr.
IF sy-subrc EQ 0.
SELECT SINGLE smtp_addr INTO adr6-smtp_addr
FROM adr6
WHERE addrnumber EQ kna1-adrnr
AND persnumber EQ space
AND date_from GT '00010101'
AND consnumber EQ '001'.
ENDIF.
CLEAR vc_fecha.
CONCATENATE sy-datum+6(2) '/' sy-datum+4(2) '/'
sy-datum(4) INTO vc_fecha.
CONCATENATE 'al' vc_fecha INTO vc_fecha
SEPARATED BY space.
CONCATENATE text-r01 vc_fecha
INTO vc_subject SEPARATED BY space.
CONCATENATE kna1-name1 kna1-name2 ':'
INTO i_body-line SEPARATED BY space.
APPEND i_body.
CLEAR i_body.
APPEND i_body.
MOVE text-r02 TO i_body-line.
APPEND i_body.
CLEAR i_body.
MOVE text-r03 TO i_body-line.
APPEND i_body.
CLEAR i_body.
MOVE text-r04 TO i_body-line.
APPEND i_body.
CLEAR i_body.
MOVE adr6-smtp_addr TO i_address.
APPEND i_address.
CLEAR i_address.
MOVE vc_file TO i_attachs.
APPEND i_attachs.
CLEAR i_attachs.
CALL FUNCTION 'Z_OUTLOOK'
EXPORTING
subject = vc_subject
TABLES
email_body = i_body
email_address = i_address
email_attachments = i_attachs
EXCEPTIONS
invalid_pathname = 1
download_failed = 2
execution_failed = 3
OTHERS = 4.
CLEAR: v_lines, vc_file.
REFRESH: i_pdf, i_body, i_address, i_attachs.
ENDIF.
CLEAR: vd_fecha, v_lines, i_pdf, vc_file.
REFRESH i_pdf.
ENDIF.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
sy-lsind = sy-lsind - 1.
ENDFORM. " OKCODE_CPDF


************************************************
************************************************

FUNCTION z_outlook.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(SUBJECT) TYPE C OPTIONAL
*" TABLES
*" EMAIL_BODY STRUCTURE SOLI OPTIONAL
*" EMAIL_ADDRESS STRUCTURE SOLI OPTIONAL
*" EMAIL_ATTACHMENTS STRUCTURE SOLI OPTIONAL
*" EXCEPTIONS
*" INVALID_PATHNAME
*" DOWNLOAD_FAILED
*" EXECUTION_FAILED
*"----------------------------------------------------------------------
*- Documentación.-
* Mediante esta función podemos enviar a través del Outlook un mail
* indicando el Asunto, Destinatarios, Cuerpo del mensaje, Archivos adj.
* Tan solo es necesario pasar los parámetros que queramos y automát.
* nos dejará en la pantalla de envio de mensajes de Outlook con todos
* los datos rellenos
CONSTANTS: BEGIN OF con_hex,
tab(1) TYPE x VALUE '09',
END OF con_hex.
DATA: g_file(120),
g_translate(2),
t_vbs LIKE STANDARD TABLE OF soli WITH HEADER LINE,
g_last,
g_vbs_filename LIKE rlgrap-filename,
commandline(1000).
*- Prepara un código para traducir una comilla en hexadecimal
*- para que pueda ser traducido de nuevo en comillas dobles.
CONCATENATE '"' con_hex-tab INTO g_translate.
APPEND: 'Dim myolapp ' TO t_vbs,
'Dim olNamespace ' TO t_vbs,
'Dim myItem ' TO t_vbs,
'Dim myRecipient ' TO t_vbs,
'Dim myAttachments ' TO t_vbs,
' ' TO t_vbs,
'Set myolapp = CreateObject("Outlook.Application") '
TO t_vbs,
'Set olNamespace = myolapp.GetNamespace("MAPI") '
TO t_vbs,
'Set myItem = myolapp.CreateItem(olMailItem) '
TO t_vbs,
' ' TO t_vbs.
*- Destinatarios del mensaje
LOOP AT email_address.
IF email_address = space.
CONTINUE.
ENDIF.
CONCATENATE 'Set myRecipient = myItem.Recipients.Add("'
email_address '")' INTO t_vbs.
APPEND t_vbs.
ENDLOOP.
*- Asunto del mensaje
CONCATENATE 'myItem.Subject = "' subject '"' INTO t_vbs.
APPEND t_vbs.
*- Archivos adjuntos
APPEND 'Set myAttachments = myItem.Attachments' TO t_vbs.
*- Chequeo de existencia de archivos adjuntos
LOOP AT email_attachments.
g_file = email_attachments-line.
CALL FUNCTION 'WS_QUERY'
EXPORTING
filename = g_file
query = 'FE'
EXCEPTIONS
inv_query = 1
no_batch = 2
frontend_error = 3
OTHERS = 4.
IF sy-subrc EQ 0.
CONCATENATE 'myAttachments.Add("' email_attachments
'")' INTO t_vbs.
APPEND t_vbs.
ELSE.
MESSAGE i000(38) WITH 'No se ha podido adjuntar el archivo'
email_attachments.
ENDIF.
ENDLOOP.
*- Cuerpo del email
CLEAR: g_last, t_vbs.
APPEND t_vbs.
LOOP AT email_body.
AT FIRST.
APPEND 'myitem.body = _' TO t_vbs.
ENDAT.
AT LAST.
g_last = 'X'.
ENDAT.
*- Comillas dobles(") causan un error en VBScript
*- Reemplzar con un hexadecimal y luego reemplaza con
*- 2 comillas dobles ("")
TRANSLATE email_body USING g_translate.
WHILE sy-subrc EQ 0.
REPLACE con_hex-tab WITH '""' INTO email_body.
ENDWHILE.
IF g_last = 'X'.
CONCATENATE '"' email_body '" &vbCrLf '
INTO t_vbs.
ELSE.
CONCATENATE '"' email_body '" &vbCrLf &_'
INTO t_vbs.
ENDIF.
APPEND t_vbs.
ENDLOOP.
APPEND 'myItem.Display' TO t_vbs.
* -- Posibilidad de mostrar un MsgBox al abrir el Outlook
* APPEND 'Dim myVar' TO t_vbs.
* DATA: aux(255).
* aux = 'Aquí podemos poner el mensaje que queramos'.
* CONCATENATE 'myVar = MsgBox ("' aux '", 0, "Advertencia")' INTO aux.
* APPEND aux TO t_vbs.

*- Prepara el nombre de archivo vbscript para descargarlo
*- y ejecutarlo, llamando a la variable de entorno de Windows
*- TEMP
CLEAR g_vbs_filename.
CALL FUNCTION 'WS_QUERY'
EXPORTING
environment = 'TEMP'
query = 'EN'
IMPORTING
return = g_vbs_filename
EXCEPTIONS
inv_query = 1
no_batch = 2
frontend_error = 3
OTHERS = 4.
IF sy-subrc GT 0.
RAISE invalid_pathname.
ENDIF.
CONCATENATE g_vbs_filename '\mail.vbs' INTO g_vbs_filename.
commandline = g_vbs_filename.
PERFORM sapgui_progress(rstxldmc) USING 10
'Realizando download de fichero...'.
*- Descarga el archivo vbscript
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = g_vbs_filename
filetype = 'DAT'
mode = 'S'
TABLES
data_tab = t_vbs
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
OTHERS = 8.
IF sy-subrc GT 0.
RAISE download_failed.
ENDIF.
* Abre el Outlook
PERFORM sapgui_progress(rstxldmc) USING 50
'Abriendo Outlook... Espere por favor'.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
commandline = commandline
program = 'WSCRIPT.EXE'
EXCEPTIONS
frontend_error = 1
no_batch = 2
prog_not_found = 3
illegal_option = 4
OTHERS = 5.
IF sy-subrc GT 0.
RAISE execution_failed.
ENDIF.
MESSAGE s000(38) WITH 'Abriendo Outlook... Espere por favor'.
ENDFUNCTION.
Responder Con Cita
  #33  
Viejo 03/06/08, 17:55:05
jamostos jamostos is offline
Junior Member
 
Fecha de Ingreso: feb 2006
Mensajes: 6
Varias Ordenes SPOOL

Habeis conseguido alguno generar un PDF que contengan varias ordenes SPOOL???
Responder Con Cita
  #34  
Viejo 03/06/08, 17:58:56
bisonye bisonye is offline
Senior Member
 
Fecha de Ingreso: ago 2006
Mensajes: 635
Si por cada orden de spool consigues una tabla interna con los datos lo único que tienes que hacer es copiar todas las tablas con las órdenes en una sola.
Debería funcionar...
Responder Con Cita
  #35  
Viejo 04/06/08, 08:17:07
jamostos jamostos is offline
Junior Member
 
Fecha de Ingreso: feb 2006
Mensajes: 6
Pues no ya lo intente pero solo me guarda la ultima orden, vamos que me machaca las anteriores
Responder Con Cita
  #36  
Viejo 04/06/08, 08:23:33
bisonye bisonye is offline
Senior Member
 
Fecha de Ingreso: ago 2006
Mensajes: 635
No me has entendido. Lo que tienes que hacer es guardar en diferentes tablas las diferentes órdenes de spool y luego esas tablas las juntas en una sola,

Saludos
Responder Con Cita
  #37  
Viejo 04/06/08, 08:56:45
jamostos jamostos is offline
Junior Member
 
Fecha de Ingreso: feb 2006
Mensajes: 6
No no si ya he realizado eso, me he hecho un loop con un append y al final paso la tabla global al la funcion, el tamaño del fichero es el correcto ( la suma de todos) pero solo contiene la ultima orden spool de las anteriores nada de nada. No se si cada fichero contiene un EON y un EOF y al intentar meterlo en uno solo me machaca los anteriores o que....
Responder Con Cita
  #38  
Viejo 04/06/08, 09:01:50
bisonye bisonye is offline
Senior Member
 
Fecha de Ingreso: ago 2006
Mensajes: 635
Vaya, el que no te había entendido era yo.
Pues es muy posible que tengas un principio y fin de fichero. El problema va a ser reconocerlo...
¿Con que función descargas el PDF?
Veo que en la GUI download hay un parámetro que es APPEND que por defecto tiene space. Prueba a marcarlo con X y haces tantos downloads como ordenes de spool tengas añadiendo al mismo archivo.
Creo que los datasets tambien tenían algún parámetro que indicaba si el archivo se sobreescribía o se anexaba.

A ver si así funciona.
Responder Con Cita
  #39  
Viejo 19/08/08, 11:58:59
cramr cramr is offline
Member
 
Fecha de Ingreso: oct 2007
Mensajes: 68
Vale, y pongamos que adjunto el archivo correctamente, pero como puede hacer para darle un nombre, en que parametro de que tabla pongo el nombre que aparecerá a posteriori en el email??

Y una duda, en la tabla "object_header" que se le pasa?

muchas gracias
Responder Con Cita
  #40  
Viejo 25/08/09, 11:02:26
ABPdelCerro ABPdelCerro is offline
Junior Member
 
Fecha de Ingreso: ene 2008
Mensajes: 21
¿Y si lo quiero dejar en el servidor?

Hola.
Creo que en este tema siempre se está hablando de dejar el PDF en local. ¿Alguien sabe como se podría dejar en el servidor?

Gracias a todos.
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á On
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 20:28:32.


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