JayEffpee
06/05/10, 15:25:54
Hola Gente,
no sé si el foro de ABAP es el indicado para esto, pero al menos el tema lo está viendo mi equipo de ABAP :-)
A ver si nos pueden ayudar porque es muy extraño. Estamos haciendo un upgrade de ECC 5.0 a ECC 6.0, y al probar una de las interfaces sincronicas con SAP NetWeaver 7.10 (para conversion de Ordenes de Compra)
Cuando SAP PI nos devuelve la respuesta
SAP R/3 no puede interpretar el XML dando el error
El momento exacto es cuando PI proces el IDOC ORDERS y reponde el status, no puede interpretar el XML
La llamanda a CALL TRANSFORMATION termina, por algun motivo desconocido, con la excepcion CX_ST_MATCH_ELEMENT.
Les adjunto un detalle (en ingles, perdon) con la secuencia de ejecucion de los metodos. Si alguien quiere las pantallas del debug, me pasa su mail, por favor:
Order in which the methods are executed until arriving at the exception:
1.-
cl_ws_payload_handler=>deserialize(
exporting
part = lr_part
ws_payload = me->ws_payload
payload = payload
changing
bindings = lt_bindings
).
2.- lr_part->deserialize( reader = lr_reader ).
3.-
CALL TRANSFORMATION (m_transformation_deserialize)
PARAMETERS (l_ref_params)
SOURCE XML reader
RESULT (l_data_refs).
options value_handling = m_opt_value_handling.
CATCH cx_xslt_system_error cx_st_error INTO l_exception.
cl_soap_util=>log_create_from_exception(
ex_root = l_exception
add_info = m_transformation_deserialize
add_info_name = 'DESERIALIZE_TRANSFORMATION'
).
Values of the parameters:
a.- m_transformation_deserialize = ‘/1SAI/TXS32F9B78F3FC73361C131’.
b.- l_ref_params = Table[0x16].
c.- reader = {O:165*\CLASS=CL_SXML_STRING_READER}
d.- l_data_refs = Table[1x16].
NAME INPUT
VALUE {A:4*\TYPE=ZDPI_ORDEN_COCO_SUPPLIER_RESP1}
4.- Exception CX_ST_MATCH_ELEMENT.
Si testeamos proxy desde la trx SPROXY aparece el error:
Detail of the error:
The error that this giving is in line 124 of the transformation /1SAI/TXE32F9B78F3FC73361C131:
<!--
name /1SAI/TXE32F9B78F3FC73361C131
object CLAS
obj_name ZDPI_ORDEN_COCO_CO_SI_R3_ORDEN
method EXECUTE_SYNCHRONOUS
extended
-->
<?sap.transform simple?>
<tt:transform version="1.0" xmlns:tt="http://www.sap.com/transformation-templates" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sapgdt="http://sap.com/xi/SAPGlobal/GDT" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:p&>
rx="urn:sap.com:proxy:PRD:/1SAI/TXE32F9B78F3FC73361C131:701:2009/02/10" xmlns:n0="urn:dds.com.ar:r3:int_11">
<tt:root name="INPUT" type="ddic:ZDPI_ORDEN_COCO_SUPPLIER_RESP1"/>
<tt:variable name="_C_NIL" val="''"/>
<tt:template name="ZDPI_ORDEN_COCO_SUPPLIER_RESP1">
<tt:context>
<tt:root name="ROOT" type="ddic:ZDPI_ORDEN_COCO_SUPPLIER_RESP1"/>
<tt:variable name="_C_1" val="''"/>
<tt:variable name="_C_2" val="'3'"/>
<tt:variable name="_C_3" val="'3'"/>
</tt:context>
<tt:ref name="ROOT">
<tt:deserialize>
<tt:group>
<tt:cond frq="?">
<status>
<tt:assign to-var="_C_2" val="'1'"/>
<tt:deserialize>
<tt:apply name="XSI_NIL_READ">
<tt:with-parameter name="CTRL" var="_C_2"/>
</tt:apply>
</tt:deserialize>
<tt:cond-var check="_C_2!='2'">
<tt:read var="_C_2" type="C"/>
<tt:assign to-ref="SUPPLIER_RESPONSE_MSG.STATUS" var="_C_2"/>
<tt:switch-var>
<tt:cond-var check="initial(var(_C_2))">
<tt:assign to-var="_C_2" val="'1'"/>
</tt:cond-var>
<tt:cond-var>
<tt:assign to-var="_C_2" val="''"/>
</tt:cond-var>
</tt:switch-var>
</tt:cond-var>
</status>
</tt:cond>
<tt:cond frq="?">
<messageId>
<tt:assign to-var="_C_3" val="'1'"/>
<tt:deserialize>
<tt:apply name="XSI_NIL_READ">
<tt:with-parameter name="CTRL" var="_C_3"/>
</tt:apply>
</tt:deserialize>
<tt:cond-var check="_C_3!='2'">
<tt:read var="_C_3" type="C"/>
<tt:assign to-ref="SUPPLIER_RESPONSE_MSG.MESSAGE_ID" var="_C_3"/>
<tt:switch-var>
<tt:cond-var check="initial(var(_C_3))">
<tt:assign to-var="_C_3" val="'1'"/>
</tt:cond-var>
<tt:cond-var>
<tt:assign to-var="_C_3" val="''"/>
</tt:cond-var>
</tt:switch-var>
</tt:cond-var>
</messageId>
</tt:cond>
</tt:group>
<tt:group>
<tt:cond using="exist($REF)">
<tt:cond-var check="not-initial(_C_1)">
<tt:assign to-ref="CONTROLLER">
<tt:assign to-ref="FIELD" val="'SUPPLIER_RESPONSE_MSG'"/>
<tt:assign to-ref="VALUE" var="_C_1"/>
</tt:assign>
</tt:cond-var>
<tt:ref name="SUPPLIER_RESPONSE_MSG">
<tt:cond-var check="not-initial(_C_2)">
<tt:assign to-ref="CONTROLLER">
<tt:assign to-ref="FIELD" val="'STATUS'"/>
<tt:assign to-ref="VALUE" var="_C_2"/>
</tt:assign>
</tt:cond-var>
<tt:cond-var check="not-initial(_C_3)">
<tt:assign to-ref="CONTROLLER">
<tt:assign to-ref="FIELD" val="'MESSAGE_ID'"/>
<tt:assign to-ref="VALUE" var="_C_3"/>
</tt:assign>
</tt:cond-var>
</tt:ref>
</tt:cond>
</tt:group>
</tt:deserialize>
</tt:ref>
</tt:template>
<tt:template name="XSI_NIL_READ">
<tt:context>
<tt:parameter name="CTRL" kind="in/out"/>
</tt:context>
<tt:d-cond>
<tt:attribute name="xsi:nil">
<tt:switch>
<tt:cond>
<tt:text>true</tt:text>
<tt:assign to-var="CTRL" val="'2'"/>
</tt:cond>
<tt:cond>
<tt:text>false</tt:text>
</tt:cond>
<tt:cond>
<tt:text>1</tt:text>
<tt:assign to-var="CTRL" val="'2'"/>
</tt:cond>
<tt:cond>
<tt:text>0</tt:text>
</tt:cond>
</tt:switch>
</tt:attribute>
</tt:d-cond>
</tt:template>
<tt:template>
<tt:clear ref="INPUT"/> Here it is where it marks the error!!
<n0:SupplierResponseMsg tt:extensible="deep">
<tt:namespace name="prx"/>
<tt:namespace name="n0"/>
<tt:ref name="INPUT">
<tt:apply name="ZDPI_ORDEN_COCO_SUPPLIER_RESP1">
<tt:with-root name="ROOT"/>
</tt:apply>
</tt:ref>
</n0:SupplierResponseMsg>
</tt:template>
</tt:transform>
Desde ya cualquier ayuda será bienvenida!!
Mil gracias
Javier
no sé si el foro de ABAP es el indicado para esto, pero al menos el tema lo está viendo mi equipo de ABAP :-)
A ver si nos pueden ayudar porque es muy extraño. Estamos haciendo un upgrade de ECC 5.0 a ECC 6.0, y al probar una de las interfaces sincronicas con SAP NetWeaver 7.10 (para conversion de Ordenes de Compra)
Cuando SAP PI nos devuelve la respuesta
SAP R/3 no puede interpretar el XML dando el error
El momento exacto es cuando PI proces el IDOC ORDERS y reponde el status, no puede interpretar el XML
La llamanda a CALL TRANSFORMATION termina, por algun motivo desconocido, con la excepcion CX_ST_MATCH_ELEMENT.
Les adjunto un detalle (en ingles, perdon) con la secuencia de ejecucion de los metodos. Si alguien quiere las pantallas del debug, me pasa su mail, por favor:
Order in which the methods are executed until arriving at the exception:
1.-
cl_ws_payload_handler=>deserialize(
exporting
part = lr_part
ws_payload = me->ws_payload
payload = payload
changing
bindings = lt_bindings
).
2.- lr_part->deserialize( reader = lr_reader ).
3.-
CALL TRANSFORMATION (m_transformation_deserialize)
PARAMETERS (l_ref_params)
SOURCE XML reader
RESULT (l_data_refs).
options value_handling = m_opt_value_handling.
CATCH cx_xslt_system_error cx_st_error INTO l_exception.
cl_soap_util=>log_create_from_exception(
ex_root = l_exception
add_info = m_transformation_deserialize
add_info_name = 'DESERIALIZE_TRANSFORMATION'
).
Values of the parameters:
a.- m_transformation_deserialize = ‘/1SAI/TXS32F9B78F3FC73361C131’.
b.- l_ref_params = Table[0x16].
c.- reader = {O:165*\CLASS=CL_SXML_STRING_READER}
d.- l_data_refs = Table[1x16].
NAME INPUT
VALUE {A:4*\TYPE=ZDPI_ORDEN_COCO_SUPPLIER_RESP1}
4.- Exception CX_ST_MATCH_ELEMENT.
Si testeamos proxy desde la trx SPROXY aparece el error:
Detail of the error:
The error that this giving is in line 124 of the transformation /1SAI/TXE32F9B78F3FC73361C131:
<!--
name /1SAI/TXE32F9B78F3FC73361C131
object CLAS
obj_name ZDPI_ORDEN_COCO_CO_SI_R3_ORDEN
method EXECUTE_SYNCHRONOUS
extended
-->
<?sap.transform simple?>
<tt:transform version="1.0" xmlns:tt="http://www.sap.com/transformation-templates" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sapgdt="http://sap.com/xi/SAPGlobal/GDT" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:p&>
rx="urn:sap.com:proxy:PRD:/1SAI/TXE32F9B78F3FC73361C131:701:2009/02/10" xmlns:n0="urn:dds.com.ar:r3:int_11">
<tt:root name="INPUT" type="ddic:ZDPI_ORDEN_COCO_SUPPLIER_RESP1"/>
<tt:variable name="_C_NIL" val="''"/>
<tt:template name="ZDPI_ORDEN_COCO_SUPPLIER_RESP1">
<tt:context>
<tt:root name="ROOT" type="ddic:ZDPI_ORDEN_COCO_SUPPLIER_RESP1"/>
<tt:variable name="_C_1" val="''"/>
<tt:variable name="_C_2" val="'3'"/>
<tt:variable name="_C_3" val="'3'"/>
</tt:context>
<tt:ref name="ROOT">
<tt:deserialize>
<tt:group>
<tt:cond frq="?">
<status>
<tt:assign to-var="_C_2" val="'1'"/>
<tt:deserialize>
<tt:apply name="XSI_NIL_READ">
<tt:with-parameter name="CTRL" var="_C_2"/>
</tt:apply>
</tt:deserialize>
<tt:cond-var check="_C_2!='2'">
<tt:read var="_C_2" type="C"/>
<tt:assign to-ref="SUPPLIER_RESPONSE_MSG.STATUS" var="_C_2"/>
<tt:switch-var>
<tt:cond-var check="initial(var(_C_2))">
<tt:assign to-var="_C_2" val="'1'"/>
</tt:cond-var>
<tt:cond-var>
<tt:assign to-var="_C_2" val="''"/>
</tt:cond-var>
</tt:switch-var>
</tt:cond-var>
</status>
</tt:cond>
<tt:cond frq="?">
<messageId>
<tt:assign to-var="_C_3" val="'1'"/>
<tt:deserialize>
<tt:apply name="XSI_NIL_READ">
<tt:with-parameter name="CTRL" var="_C_3"/>
</tt:apply>
</tt:deserialize>
<tt:cond-var check="_C_3!='2'">
<tt:read var="_C_3" type="C"/>
<tt:assign to-ref="SUPPLIER_RESPONSE_MSG.MESSAGE_ID" var="_C_3"/>
<tt:switch-var>
<tt:cond-var check="initial(var(_C_3))">
<tt:assign to-var="_C_3" val="'1'"/>
</tt:cond-var>
<tt:cond-var>
<tt:assign to-var="_C_3" val="''"/>
</tt:cond-var>
</tt:switch-var>
</tt:cond-var>
</messageId>
</tt:cond>
</tt:group>
<tt:group>
<tt:cond using="exist($REF)">
<tt:cond-var check="not-initial(_C_1)">
<tt:assign to-ref="CONTROLLER">
<tt:assign to-ref="FIELD" val="'SUPPLIER_RESPONSE_MSG'"/>
<tt:assign to-ref="VALUE" var="_C_1"/>
</tt:assign>
</tt:cond-var>
<tt:ref name="SUPPLIER_RESPONSE_MSG">
<tt:cond-var check="not-initial(_C_2)">
<tt:assign to-ref="CONTROLLER">
<tt:assign to-ref="FIELD" val="'STATUS'"/>
<tt:assign to-ref="VALUE" var="_C_2"/>
</tt:assign>
</tt:cond-var>
<tt:cond-var check="not-initial(_C_3)">
<tt:assign to-ref="CONTROLLER">
<tt:assign to-ref="FIELD" val="'MESSAGE_ID'"/>
<tt:assign to-ref="VALUE" var="_C_3"/>
</tt:assign>
</tt:cond-var>
</tt:ref>
</tt:cond>
</tt:group>
</tt:deserialize>
</tt:ref>
</tt:template>
<tt:template name="XSI_NIL_READ">
<tt:context>
<tt:parameter name="CTRL" kind="in/out"/>
</tt:context>
<tt:d-cond>
<tt:attribute name="xsi:nil">
<tt:switch>
<tt:cond>
<tt:text>true</tt:text>
<tt:assign to-var="CTRL" val="'2'"/>
</tt:cond>
<tt:cond>
<tt:text>false</tt:text>
</tt:cond>
<tt:cond>
<tt:text>1</tt:text>
<tt:assign to-var="CTRL" val="'2'"/>
</tt:cond>
<tt:cond>
<tt:text>0</tt:text>
</tt:cond>
</tt:switch>
</tt:attribute>
</tt:d-cond>
</tt:template>
<tt:template>
<tt:clear ref="INPUT"/> Here it is where it marks the error!!
<n0:SupplierResponseMsg tt:extensible="deep">
<tt:namespace name="prx"/>
<tt:namespace name="n0"/>
<tt:ref name="INPUT">
<tt:apply name="ZDPI_ORDEN_COCO_SUPPLIER_RESP1">
<tt:with-root name="ROOT"/>
</tt:apply>
</tt:ref>
</n0:SupplierResponseMsg>
</tt:template>
</tt:transform>
Desde ya cualquier ayuda será bienvenida!!
Mil gracias
Javier