PDA

Ver la Versión Completa : Error En Interfax Sincronica Entre Sap Pi Y R/3


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