I am trying to perform a DTP Load from an R3 Datasource to an InfoObject. We have previously used the 3.x scenario, but I wish to enhance the transformation and so have created a new Transformation Rule and DTP.
The DTP relates to Equipment which is time-dependent. The DTP fails due to duplicate records.
There are duplicates in the PSA Error Stack, but this is because EQUIPMENT# 25000000101010 might have several records with different validity date ranges.
When I select the DTP Update option of "Handle Duplicate Record Keys", the DTP produces a shortdump with an ASSIGN_TYPE_CONFLICT error.
From the Log:
Short text: Type conflict with ASSIGN in program "CL_RSDMD_UPDATE_MASTER_DATA===CP".
What happened? Error in the ABAP Application Program
The current ABAP program "CL_RSDMD_UPDATE_MASTER_DATA===CP" had to be terminated because it has come across a statement that unfortunately cannot be executed.
Source Code Extract The code seems to fall over here
113 " assign date values
>>>>> ASSIGN COMPONENT l_index_datefrom OF STRUCTURE <l_s_data> TO <l_datefrom>.
115 ASSIGN COMPONENT l_index_dateto OF STRUCTURE <l_s_data> TO <l_dateto>.
116 ASSIGN COMPONENT l_index_datefrom OF STRUCTURE <l_s_prev_data> TO <l_prev_datefrom>.
117 ASSIGN COMPONENT l_index_dateto OF STRUCTURE <l_s_prev_data> TO <l_prev_dateto>.
In my transformation, I assign the DATETO (not the DATEFROM). DATEFROM is available in the DataSource, but not as an attribute of the Characteristic
Should I be making DATEFROM an attribute of Equipment? This wasn't necessary in the old 3.x transfer rules/update rules.
Problem solved. I realised that I don't want to add DATEFROM attribute to the InfoObject as this would mean multiple records for the one Equipment.
So I added a line to the Start Routine.
DELETE SOURCE_PACKAGE WHERE DATETO NE '99991231'.
Now all is good.
I'm guessing that the Handle Duplicate Record Keys only works if you have DATEFROM and DATETO.