Foro de programacion ABAP
SAP / ABAP => Programación ABAP => Mensaje iniciado por: FuryNocturn en 12 de Diciembre de 2017, 05:53:40 pm
-
buenas tengo en una tabla un campo con un dominio que tiene RAWSTRING en el hay yna cadena '3C53756D696E697374726F4C524C53756D696E69737C53756D696E697373A7072783D22C53756D696E69737361C53756D696E6973770726F78793A4D' "es el principio del código pero repetido para que se vea mas o menos la largura del campo
desde una transacción de sap al darle a un icono me carga un xml. se supone que esta linea es ese xml. mi pregunta que método se usa para transformar esta linea en el xml?
he probado con este método CL_HTTP_UTILITY=>IF_HTTP_UTILITY~DECODE_BASE64 pero sin resultado. la cadena en concreto no puedo pasarlo pues tiene datos delicados.
-
Resuelto la mayor parte.
data: gs_edocumentfile type edocumentfile,
lo_xml type ref to cl_xml_document,
lo_error type ref to if_ixml_parse_error,
lv_xml_error type string,
lv_error_txt type string,
iv_xml_string type xstring.
parameter gv_key(32) type c.
select single *
from edocumentfile
into gs_edocumentfile
where edoc_guid = gv_key and
file_type = 'RESPONSE' .
iv_xml_string = gs_edocumentfile-file_raw.
check not iv_xml_string is initial.
create object lo_xml.
if lo_xml is bound.
try.
clear lv_xml_error.
lo_xml->parse_xstring( exporting stream = iv_xml_string ).
lo_error = lo_xml->get_last_parse_error( ).
if lo_error is bound.
lv_xml_error = lo_error->get_reason( ).
endif.
if lv_xml_error is initial.
******************************************
lo_xml->display( ).
lo_xml->export_to_file( 'C:\Users\fernandt\Documents\SAP\TEM.xml' ).
******************************************
else.
message e071(edocument) into lv_error_txt.
cl_edocument=>raise_edoc_exception( ).
endif.
catch cx_root.
message e071(edocument) into lv_error_txt.
cl_edocument=>raise_edoc_exception( ).
endtry.
endif.
lo que me falla es esto
catch cx_root.
message e071(edocument) into lv_error_txt.
cl_edocument=>raise_edoc_exception( ).
me tira damn y me cierra todo.
-
La clase CX_ROOT es la clase más alta de todas las clases de excepción.
Mira en tu DUMP que excepción te esta devolviendo.
Este ejemplo te puede ayudar... TRY CATCH – Ejemplo básico de excepción (https://abapers.wordpress.com/2014/06/30/try-catch-ejemplo-basico-de-excepcion/)
-
gracias revisando el código con la info que me distes me di cuenta que el primer if que es el que dice si hay registro al no aver llamaba al error sin cargar y solo carga cuando procesa datos el método. por eso es imposible poner esa sentencia así que busque otra. ya me funciona usando el mensaje mostrando texto de tipo s pero con aspecto de tipo e.
message text-e01 type 'S' display like 'E'." INTO lv_error_txt.
y así si me hace la advertencia y no se sale del programa permitiendo modificar la variable. gracias. ya termine este proyecto
ahora a por el siguiente.