Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Error on Dynamic call function using RTTS: CALL_FUNCTION_CONFLICT_GEN_TYP

Former Member
0 Kudos

First the code:

type-pools ABAP.

DATA: l_exceptionsTable TYPE ABAP_FUNC_EXCPBIND_TAB,

L_ParameterTypeStruct TYPE REF TO cl_abap_structdescr,

L_ParameterTypeTable TYPE REF TO cl_abap_structdescr,

L_ParameterType TYPE REF TO cl_abap_typedescr,

L_ParameterTypeElem TYPE REF TO cl_abap_elemdescr,

L_ParameterTab TYPE STANDARD TABLE OF REF TO cl_abap_structdescr

,

L_parametersTable TYPE ABAP_FUNC_PARMBIND_TAB,

L_wa_parametersTable TYPE ABAP_FUNC_PARMBIND,

L_CompTab TYPE cl_abap_structdescr=>component_table,

L_CompTabInc TYPE ABAP_COMPONENT_VIEW_TAB ,

L_Component TYPE CHAR30,

L_Data_Index TYPE I,

l_flag_as_include TYPE C.

DATA: dref TYPE REF TO DATA.

FIELD-SYMBOLS: <l_parametersTable> TYPE LINE OF ZPARAMDATA_TAB,

<L_Struct_Components> TYPE abap_componentdescr,

<L_Struct_Components2> TYPE abap_simple_componentdescr,

<fs> TYPE standard table,

<fs1> TYPE ANY,

<l_datafield> TYPE ZDATAFIELDS.

***********************************************************************

  • Parameters

***********************************************************************

LOOP AT att_PARAMETERSTABLE ASSIGNING <l_parametersTable>.

L_ParameterType ?= cl_abap_typedescr=>describe_by_name(

<l_parametersTable>-dbfield ).

IF L_ParameterType->KIND = 'S'.

  • Cast to struct

IF <l_parametersTable>-kind <> abap_func_tables.

L_ParameterTypeStruct ?= L_ParameterType.

CREATE DATA dref TYPE HANDLE L_ParameterTypeStruct.

ASSIGN dref->* TO <fs> CASTING TYPE HANDLE L_ParameterTypeStruct.

IF L_ParameterTypeStruct->HAS_INCLUDE = abap_true.

L_CompTabInc = L_ParameterTypeStruct->get_included_view( ).

l_flag_as_include = abap_true.

ELSE.

L_CompTab = L_ParameterTypeStruct->get_components( ).

ENDIF.

  • Cast to table

ELSE.

L_ParameterTypeTable ?= L_ParameterType.

CREATE DATA dref TYPE HANDLE L_ParameterTypeTable.

ASSIGN dref->* TO <fs> CASTING TYPE HANDLE L_ParameterTypeTable.

IF L_ParameterTypeTable->HAS_INCLUDE = abap_true.

L_CompTabInc = L_ParameterTypeTable->get_included_view( ).

ELSE.

L_CompTab = L_ParameterTypeTable->get_components( ).

l_flag_as_include = abap_true.

ENDIF.

ENDIF.

IF l_flag_as_include = abap_true.

LOOP AT L_CompTabInc ASSIGNING <L_Struct_Components2>.

L_Component = <L_Struct_Components2>-name.

  • Because <FS> is only known at runtime is needed to assign to

  • another field Symbol

Assign component L_Component of structure <FS> to <FS1>.

  • Read field data from excel hashed internal table

READ TABLE att_datafields ASSIGNING <l_datafield> WITH KEY

STRUCT = <l_parametersTable>-dbfield FIELD =

<L_Struct_Components2>-name FIELDTYPE = 'STRUCT'.

  • Assign data to the strucure

READ TABLE <l_datafield>-FIELDVALUES INDEX L_Data_Index INTO <FS1>

.

CLEAR <l_datafield>-FIELDVALUES.

  • ENDIF.

ENDLOOP.

ELSE.

LOOP AT L_CompTab ASSIGNING <L_Struct_Components>.

L_Component = <L_Struct_Components>-name.

  • Because <FS> is only known at runtime is needed to assign to

  • another field Symbol

Assign component L_Component of structure <FS> to <FS1>.

  • Read field data from excel hashed internal table

READ TABLE att_datafields ASSIGNING <l_datafield> WITH KEY

STRUCT = <l_parametersTable>-dbfield FIELD =

<L_Struct_Components>-name FIELDTYPE = 'STRUCT'.

  • Assign data to the strucure

READ TABLE <l_datafield>-FIELDVALUES INDEX L_Data_Index INTO <FS1>

.

CLEAR <l_datafield>-FIELDVALUES.

CLEAR l_flag_as_include.

ENDLOOP.

ENDIF.

  • Assign reference in the parameters table

<l_parametersTable>-value = dref.

ELSE.

  • TRATAAARR CAMPOS SIMPLES

L_ParameterTypeElem ?= L_ParameterType.

CREATE DATA dref TYPE HANDLE L_ParameterTypeElem.

ASSIGN dref->* TO <fs1> CASTING TYPE HANDLE L_ParameterTypeElem.

READ TABLE att_datafields ASSIGNING <l_datafield> WITH KEY

STRUCT = <l_parametersTable>-dbfield FIELD =

<L_Struct_Components>-name FIELDTYPE = 'FIELD'.

  • <L_Struct_Components>-Type->ABSOLUTE_NAME+6 FIELDTYPE = 'FIELD'.

READ TABLE <l_datafield>-FIELDVALUES INDEX L_Data_Index INTO <fs1>

.

<l_parametersTable>-value = dref.

CLEAR <l_datafield>-FIELDVALUES.

ENDIF.

L_wa_parametersTable-value = <l_parametersTable>-value.

L_wa_parametersTable-tables_wa = <l_parametersTable>-tables_wa.

L_wa_parametersTable-kind = <l_parametersTable>-kind.

L_wa_parametersTable-name = <l_parametersTable>-name.

INSERT L_wa_parametersTable INTO TABLE l_parametersTable.

clear L_wa_parametersTable.

clear L_ParameterTypeStruct.

clear L_ParameterTypeTable.

ENDLOOP.

call function att_bapi_name

PARAMETER-TABLE

l_parametersTable

EXCEPTION-TABLE

l_exceptionsTable.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

I'm using bapi BAPI_MATERIAL_SAVEDATA to test and the error happen with table EXTENSIONIN.

The error says that types are incompatible, EXTENSIONIN. is with "u" type and should be "h" type.

How can I correct the code to overcome this problem ?

1 REPLY 1

Former Member
0 Kudos

ok