#12
|
|||
|
|||
Hola ballan
Este es mi código: DATA: pe_fichero TYPE string, pe_fichero2 type xstring. DATA: BEGIN OF i_lines_fichero occurs 0, tdline(255) type x. DATA: END OF i_lines_fichero. DATA: ruta type char30, BIN_SIZE TYPE I, contador_posiciones TYPE i VALUE 0, longitud_fichero TYPE i, fichero_binario TYPE xstring, cociente TYPE i, resto TYPE i, r_registro_linea LIKE LINE OF i_lines_fichero, fichero_base64 TYPE string, ruta_funcion LIKE sapb-sappfad. "Esto es un ejemplo de string binario correspondiente a un xml. "Como no tengo ningún ejemplo de momento de string en base64 "correspondiente a un xml, lo que hago es pasar esto a binario64 "y luego a binario, para verificar que usando las funciones de "más abajo, lo convierte bien. CONCATENATE '50313939392D31302D3230000B416C69636520536D697468533136313233204D' '61706C65205374726565744D696C6C2056616C6C657920202020202020202043' '41393039353200010C526F6265727420536D69746850EA1400004F6C6420546F' '776E20202020202020202020202050413935383139005048757272792C206D79' '206C61776E20697320676F696E672077696C6421003837322D4141004C61776E' '6D6F7765720031003134382E39350050436F6E6669726D207468697320697320' '656C65637472696300413932362D41410042616279204D6F6E69746F72003100' '33392E3938004150313939392D30352D323100' INTO pe_fichero. pe_fichero2 = pe_fichero. *Paso de binario a binario64 CALL FUNCTION 'SSFC_BASE64_ENCODE' EXPORTING BINDATA = pe_fichero2 * BINLENG = IMPORTING B64DATA = fichero_base64 . IF SY-SUBRC <> 0. ENDIF. "Paso de binario64 a binario CALL FUNCTION 'SSFC_BASE64_DECODE' EXPORTING B64DATA = fichero_base64 * B64LENG = * B_CHECK = IMPORTING BINDATA = fichero_binario . IF SY-SUBRC <> 0. ENDIF. if fichero_binario = pe_fichero. "Si realmente lo convierte bien longitud_fichero = XSTRLEN( fichero_binario ). cociente = longitud_fichero div 255. resto = longitud_fichero mod 255. DO cociente TIMES. r_registro_linea-tdline = fichero_binario+contador_posiciones(255). APPEND r_registro_linea TO i_lines_fichero. contador_posiciones = contador_posiciones + 255. CLEAR r_registro_linea. ENDDO. r_registro_linea-tdline = fichero_binario+contador_posiciones(resto). APPEND r_registro_linea TO i_lines_fichero. ruta = 'C:\Documents and Settings\usr\Escritorio\Fic1.xml'. CALL FUNCTION 'SAP_CONVERT_TO_XML_FORMAT' EXPORTING I_FILENAME = 'Fic1.xml' I_XML_DOC_NAME = ruta IMPORTING PE_BIN_FILESIZE = BIN_SIZE TABLES I_TAB_SAP_DATA = i_lines_fichero * CHANGING * I_TAB_CONVERTED_DATA = i_lines_fichero EXCEPTIONS CONVERSION_FAILED = 1 OTHERS = 2. IF SY-SUBRC <> 0. ENDIF. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING FILENAME = 'C:\Documents and Settings\usr\Escritorio\Fic1.xml' FILETYPE = 'BIN' TABLES DATA_TAB = i_lines_fichero. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. else. MESSAGE 'El archivo generado no es igual que el de entrada' TYPE 'I'. endif. Es el mismo código que me funcionaba para pdf, pero he añadido la función de convertir a xml. A lo mejor no la estoy usando bien o no es la que tengo que usar. Gracias por contestar tan rápido |
Herramientas | Buscar en Tema |
Desplegado | |
|
|