MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   RFC .- Archivos (foro/showthread.php?t=37379)

Paola79 22/06/10 10:55:23

RFC .- Archivos
 
Hola a todos,

Tengo que crear una rfc en la que ellos me mandandan unos datos para generar un informe en SAP, hasta ahí todo bien.

Ese informe lo tengo que generar en PDF, hasta ahí todo bien.

y aqui va mi cuestión: ¿El informe en PDF se lo puedo devolver al otro sistema en la propia RFC o se lo tendría que dejar en una ruta y que lo recojan ellos?

Muchas gracias de antemano y un saludo

ballan 23/06/10 11:30:33

Puedes hacerlo de las dos maneras, podrias depositar el fichero en algun sitio y devolver la ruta como parametro o bien si quieres puedes mandar el fichero en una cadena

Asi a bote pronto se me ocurre que podrias crear una orden de spool con el pdf

Despues llamar a la funcion CONVERT_ABAPSPOOLJOB_2_PDF y obtendrias el pdf en una tabla

Esta tabla la puedes convertir con la funcion SX_TABLE_LINE_WIDTH_CHANGE y cambiarle la longitud de linea de 132 a 255

Despues llamarias a la funcion SCMS_BINARY_TO_XSTRING y en el parametro buffer obtendrias una cadena que repesenta el pdf

Luego el receptor del pdf podria tratar esa cadena y generar el fichero o hacer lo que necesitara

Paola79 15/07/10 09:35:21

Gracias Ballan, estoy con ello porque he estado liadilla con otros temas...

La RFC la he creado haciendo un submit al programa del que sacamos el listado, como recupero el número de la orden SPOOL? para realizar los siguientes pasos qeu me indicas.

Muchas gracias y un saludo,

Paola79 21/07/10 07:41:51

Buenos días,

Tengo creada ya la RFC donde hago un submit al al programa donde me genera el listado y la orden SPOOL, pero no consigo que la RFC reciba el xstring para que lo trate el otro sistema. En el submit al hacer el AT RETURN se lo puedo devolver?

En espera de vuestra ayuda muchas gracias,

Un saludo

Atlas 21/07/10 11:13:13

tal vez esto te sirva

DATA list_tab TYPE TABLE OF abaplist.

SUBMIT report EXPORTING LIST TO MEMORY
AND RETURN.

CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = list_tab
EXCEPTIONS
not_found = 1
OTHERS = 2.

melerogalan 21/07/10 12:23:36

Como bien dice mi compañero, es conveniente usar los MEMORY ID. Un ejemplo más sencillo.



El resultado será en pantalla
1234567890.

Saludos.

ballan 21/07/10 12:56:57

Pon el codigo para que veamos como haces la llamada, si estas haciendo submit y no has añadido el and return la rfc se va a quedar colgada en ese punto

Paola79 21/07/10 13:28:33

Hola gracias ante todo,

La llamada desde a la RFC al programa la tengo de la siguiente forma:



SUBMIT zsalo056_spool_2
WITH s_bukrs = bukrs
WITH s_filkd = filkd
WITH s_gsber = gsber
AND RETURN.

Los parametros de la RFC son:
IMPORTING
VALUE(BUKRS) TYPE BSID-BUKRS OPTIONAL
VALUE(FILKD) TYPE BSID-FILKD OPTIONAL
VALUE(GSBER) TYPE BSID-GSBER OPTIONAL
EXPORTING
VALUE(PDF) TYPE XSTRING.

En el programa le paso un parametro que se llama s_pdf al PDF de la RFC.

Un saludo y gracias de antemano,

Paola79 21/07/10 14:27:15

Muchas gracias ya lo he conseguido, pero ahora quieren que les pase un fichero plano (txt) porque dicen que el XSTRING no lo pueden leer. Esto con que función podría hacerlo?

Un saludo

ballan 21/07/10 14:37:12

Hasta donde yo se un PDF no es texto sino que es una "imagen" del texto por lo que para convertir el xstring BINARIO que contiene el PDF tendrias que pasarlo por algun tipo de programa conversor de PDF a TXT o algo asi

Si lo que quieres es enviarles un fichero plano lo que tendras que hacer es que dentro de tu programa zsalo056_spool_2 tendras alguna tabla interna que contiene los datos necesarios para el fichero, tienes que exportar/importar esa tabla entre tu RFC y el programa zsalo056_spool_2

Puedes hacerlo de dos maneras

1.-

Haces el submit igual

Dentro de tu programa zsalo056_spool_2 añades la instruccion

EXPORT (aqui iria el nombre de la tabla interna) TO MEMORY ID 'TEST'

y luego en tu RFC despues de la llamada al submit and return haces

IMPORT (aqui iria el nombre de la tabla interna) FROM MEMORY ID 'TEST'

2.-

Haces submit con exporting list to memory

En tu RFC despues del submit llamas a la funcion LIST_FROM_MEMORY


Una vez que tengas tu tabla interna podras crear el fichero con GUI_DOWNLOAD o con OPEN DATASET


Husos Horarios son GMT. La hora en este momento es 12:59:50.

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