cancel
Showing results for 
Search instead for 
Did you mean: 

***Abap Mapping

Former Member
0 Kudos

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

Accepted Solutions (0)

Answers (1)

Answers (1)

aashish_sinha
Active Contributor
0 Kudos

Hi,

Have a look into similar kind of error and solution by Michael in this thread.

Regards

Aashish Sinha