on 11-27-2008 12:35 PM
Hi all,
For testing I took a simple structure,my sender and the receiver structures are same.
Sender interfacce:
EMP_DETAILS_out
Receiver Interface:
EMP_DETAILS_in
Sender/Receiver Structures:
EMP_DETAILS ->
EMP ->
EName
EmpNo
Hire_Date
Address
ABAP MAPPING Code I tried.
method IF_MAPPING~EXECUTE.
TYPE-POOLS: IXML.
CLASS CL_IXML DEFINITION LOAD.
TYPES: BEGIN OF EMP_HEAD,
EMP TYPE STRING,
END OF EMP_HEAD.
TYPES: BEGIN OF EMP_DTL,
EName TYPE STRING,
EmpNo TYPE STRING,
Hire_Date TYPE STRING,
Address TYPE STRING,
END OF EMP_DTL.
DATA: O_CONV TYPE REF TO CL_ABAP_CONV_IN_CE,
O_CONV_E TYPE REF TO CL_ABAP_CONV_OUT_CE,
O_ST_ERR TYPE REF TO CX_ST_ERROR,
O_TR_ERR TYPE REF TO CX_TRANSFORMATION_ERROR,
WA_REC TYPE EMP_HEAD,
WA_DTLE TYPE EMP_DTL,
T_HDR TYPE TABLE OF EMP_HEAD,
W_HDR TYPE EMP_HEAD,
T_DTL TYPE TABLE OF EMP_DTL,
W_DTL TYPE EMP_DTL,
V_NUMBER(6) TYPE N,
V_CNT(2) TYPE N,
V_ERR_MSG TYPE STRING,
V_RFC_ERR(255),
V_AMT TYPE P DECIMALS 2,
V_DEST TYPE RFCDEST,
V_SOURCE TYPE STRING.
** Convert the incoming xstring to string.
CALL METHOD CL_ABAP_CONV_IN_CE=>CREATE
EXPORTING
INPUT = SOURCE
ENCODING = 'UTF-8'
REPLACEMENT = '?'
IGNORE_CERR = ABAP_TRUE
RECEIVING
CONV = O_CONV.
TRY.
CALL METHOD O_CONV->READ
IMPORTING
DATA = V_SOURCE.
CATCH CX_SY_CONVERSION_CODEPAGE.
*-- Should ignore errors in code conversions
CATCH CX_SY_CODEPAGE_CONVERTER_INIT.
*-- Should ignore errors in code conversions
CATCH CX_PARAMETER_INVALID_TYPE.
CATCH CX_PARAMETER_INVALID_RANGE.
ENDTRY.
*
Use simple transformation from XML to internal table
TRY .
CALL TRANSFORMATION ('ZMAPPTRANS_IN')
SOURCE XML V_SOURCE
RESULT ROOT = WA_REC.
CATCH CX_ST_ERROR INTO O_ST_ERR.
V_ERR_MSG = O_ST_ERR->GET_TEXT( ).
RAISE EXCEPTION TYPE CX_MAPPING_FAULT EXPORTING ERROR_TEXT = V_ERR_MSG.
CATCH CX_TRANSFORMATION_ERROR INTO O_TR_ERR.
V_ERR_MSG = TEXT-001.
RAISE EXCEPTION TYPE CX_MAPPING_FAULT EXPORTING ERROR_TEXT = V_ERR_MSG.
ENDTRY.
LOOP AT T_DTL INTO W_DTL .
TRY.
CALL TRANSFORMATION ('ZMAPPTRANS')
SOURCE ROOT = WA_REC
RESULT XML V_SOURCE.
CATCH CX_ST_ERROR INTO O_ST_ERR.
V_ERR_MSG = O_ST_ERR->GET_TEXT( ).
RAISE EXCEPTION TYPE CX_MAPPING_FAULT EXPORTING ERROR_TEXT = V_ERR_MSG.
CATCH CX_TRANSFORMATION_ERROR INTO O_TR_ERR.
V_ERR_MSG = TEXT-002.
RAISE EXCEPTION TYPE CX_MAPPING_FAULT EXPORTING ERROR_TEXT = V_ERR_MSG.
ENDTRY.
REPLACE 'utf-16' IN V_SOURCE WITH 'utf-8'.
O_CONV_E = CL_ABAP_CONV_OUT_CE=>CREATE( ENCODING = 'UTF-8' ).
O_CONV_E->RESET( ).
CALL METHOD O_CONV_E->WRITE
EXPORTING
DATA = V_SOURCE.
RESULT = O_CONV_E->GET_BUFFER( ).
EndLOOP.
endmethod.
Up on execution of this scenario,I am getting the Below Error.
<SAP:Stack>Application error in mapping program ZTEST_1, error code: , error text: System expected element 'EMP_DETAILS' Exception CX_MAPPING_FAULT occurred (program: ZTEST_1=======================CP, include: ZTEST_1=======================CM001, line: 71).</SAP:Stack>
Transformation Defined in SE80:
Outbound:
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ns="http://hp.eds.com/p1">
<tt:root name= "ROOT"/>
<tt:template>
<EMP_DETAILS tt:ref="ROOT">
<tt:loop ref=".ROOT" name="EMP">
<EMP>
<EName><tt:value ref="$EMP.EMP.EName"/></EName>
<EmpNo><tt:value ref="$EMP.EMP.EmpNo"/></EmpNo>
<Hire_Date><tt:value ref="$EMP.EMP.Hire_Date"/></Hire_Date>
<Address><tt:value ref="$EMP.EMP.Address"/></Address>
</EMP>
</tt:loop>
</EMP_DETAILS>
</tt:template>
</tt:transform>
Inbound:
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ns="http://hp.eds.com/p1">
<tt:root name= "ROOT"/>
<tt:template>
<EMP_DETAILS tt:ref="ROOT">
<tt:loop ref=".ROOT" name="EMP">
<EMP>
<EName><tt:value ref="$EMP.EMP.EName"/></EName>
<EmpNo><tt:value ref="$EMP.EMP.EmpNo"/></EmpNo>
<Hire_Date><tt:value ref="$EMP.EMP.Hire_Date"/></Hire_Date>
<Address><tt:value ref="$EMP.EMP.Address"/></Address>
</EMP>
</tt:loop>
</EMP_DETAILS>
</tt:template>
</tt:transform>
Please let me know where the problem is.
Thanks,
Sree
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.