|
#1
|
|||
|
|||
Convertir fichero en base 64
Hola!
Estoy creando una RFC que recibe un fichero en base64 y lo tiene que convertir a XML o PDF (dependiendo de la opción que reciba). He encontrado esta función SSFC_BASE64_DECODE, pero no sé como indicarle que quiero que me lo convierta a XML o a PDF. Tampoco sé si es está función la que debería usar. ¿Me podéis ayudar? Gracias!! |
#2
|
|||
|
|||
Xml
Bueno, creo que ahí tienes 2 problemas, uno que al parecer ya has resuelto, que es decodificar el archivo que estaba en base64... ahora tu problema es convertirlo a XML o PDF.
he aquí unos links para convertir una tabla interna (que supongo que ahí tendrás lo que subiste de tu archivo) a XML: espero te pueda ser util. |
#3
|
|||
|
|||
Gracias, pero ya los vi y no funcionan.
¿Alguien sabe alguna solución más? Me interesa preferiblemente el caso de pasar a PDF. Gracias |
#4
|
|||
|
|||
Podrían decirme si es posible pasar a PDF un archivo en formato binario base64 o en formato binario? Si es así, me podrían indicar cómo?
Llevo varios días con esto y no encuentro nada que me sirva Muchas gracias. |
#5
|
|||
|
|||
Prueba a hacer lo siguiente
Convierte el string que te llega en base 64 a un string binario utilizando cualquiera de los metodos que te han indicado anteriormente, con las funciones decode/encode o bien con la clase cl_abap_conv_in_ce Ese string binario tendras que meterlo dentro de una tabla por lo que tendras que hacer un algoritmo o bien mirar si te sirve la funcion CONVERT_STRING_TO_TABLE u otra similar, la tabla destino deberia almacenar los datos en binario tambien, creo que tendrias que definirla mas o menos asi: DATA: begin of tabla occurs 0, linea(1024) type x, end of tabla. Una vez que tengas tu STREAM BINARIO en una tabla podras descargarlo con la funcion GUI_DOWNLOAD si es en online y haciendo open dataset for output in binary mode si lo estuvieras haciendo en fondo Mas o menos seria algo asi *ONLINE GUI_DOWNLOAD FILENAME = ruta donde depositar el fichero terminando en .pdf FILETYPE = 'BIN'. DATA_TAB = tabla que contiene el string *FONDO open dataset dst for output in binary mode. loop at tabla into linea. transfer linea to dst. "Aqui a lo mejor podrias hacer un transfer string to dst *y te ahorrarias tener que convertir el string a tabla endloop. close dataset. Prueba y nos cuentas Úlima edición por ballan fecha: 10/11/09 a las 13:34:03. |
#6
|
|||
|
|||
Hola ballan!
Ante todo, gracias por contestar. He probado lo que me has dicho, y me crea un pdf pero no me deja abrirlo. El código que he creado es el siguiente: DATA: fic_binario TYPE xstring. DATA: string_binario TYPE string. DATA: BEGIN OF lines occurs 100, tdline(132). DATA: END OF lines. "Se convierte el fichero de binario64 a binario CALL FUNCTION 'SSFC_BASE64_DECODE' EXPORTING B64DATA = fichero_64 IMPORTING BINDATA = fic_binario. string_binario = fic_binario. "Se pasa a tabla interna CALL FUNCTION 'CONVERT_STRING_TO_TABLE' EXPORTING I_STRING = string_binario I_TABLINE_LENGTH = 132 TABLES ET_TABLE = lines. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING FILENAME = 'C:\Documents and Settings\usr\Escritorio\Fic1.pdf' FILETYPE = 'BIN' TABLES DATA_TAB = lines . No sé si puede ser por la longitud de cada línea de la tabla. También he probado a insertar en la tabla el string sin utilizar la función 'CONVERT_STRING_TO_TABLE' y a utilizar open dataset, pero esto último es para crear archivos en el servidor y yo lo quiero en local. ¿Alguna idea de por qué me está fallando? Gracias!! |
Herramientas | Buscar en Tema |
Desplegado | |
|
|