Skip to Content
0
Former Member
Apr 24, 2014 at 07:54 AM

Dump ITAB_DUPLICATE_KEY at DSO lookup

61 Views

Hi experts

There is a transformation from a source DSO_1 to another DSO_2 (target).

DSO_3 (ZFC_DS31) is used for lookup reasons.

I am getting a dump with ITAB_DUPLICATE_KEY at the select statement (see the red bold line).

There is a similar problem described in the forum.

Which part of the coding must be adjusted with "AT NEW" or "DELETE" statements?

Thanks

TYPES : BEGIN OF FSCD_AD,
FC_OPBEL TYPE /BI0/OIFC_OPBEL,
FC_OPUPK TYPE /BI0/OIFC_OPUPK,
COMP_CODE TYPE /BI0/OICOMP_CODE,
BUS_AREA TYPE /BI0/OIBUS_AREA,
/BIC/ZZGA_NR type /BIC/OIZZGA_NR,
DOC_DATE TYPE /BI0/OIDOC_DATE,
PSTNG_DATE TYPE /BI0/OIPSTNG_DATE,
FC_AUGRS TYPE /BI0/OIFC_AUGRS,
NETDUEDATE TYPE /BI0/OINETDUEDATE,
FC_STUDT TYPE /BI0/OIFC_STUDT,
FC_BLART TYPE /BI0/OIFC_BLART,
CAMNTRANS TYPE /BI0/OICAMNTRANS,
CASUBTRANS TYPE /BI0/OICASUBTRANS,
FC_VTREF TYPE /BI0/OIFC_VTREF,
GL_ACCOUNT TYPE /BI0/OIGL_ACCOUNT,
CACONT_ACC TYPE /BI0/OICACONT_ACC,
CHRT_ACCTS TYPE /BI0/OICHRT_ACCTS,
BPARTNER TYPE /BI0/OIBPARTNER,
FC_STORB TYPE /BI0/OIFC_STORB,
FC_HERKF TYPE /BI0/OIFC_HERKF,
CAAPPLK TYPE /BI0/OICAAPPLK,
FC_ABGRD TYPE /BI0/OIFC_ABGRD,
FC_BETRH TYPE /BI0/OIFC_BETRH,
LOC_CURRCY TYPE /BI0/OILOC_CURRCY,
END OF FSCD_AD.


*$*$ end of 2nd part global - insert your code only before this line *

*---------------------------------------------------------------------*
* CLASS routine IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform IMPLEMENTATION.

*----------------------------------------------------------------------*
* Method end_routine
*----------------------------------------------------------------------*
* Calculation of result package via end routine.
* Note: Update of target fields depends on rule assignment in
* transformation editor. Only fields that have a rule assigned,
* are updated to the data target.
*----------------------------------------------------------------------*
* <-> result package
*----------------------------------------------------------------------*
METHOD end_routine.
*=== Segments ===

FIELD-SYMBOLS:
<RESULT_FIELDS> TYPE _ty_s_TG_1.

DATA:
MONITOR_REC TYPE rstmonitor.

*$*$ begin of routine - insert your code only below this line *-*
... "insert your code here
*-- fill table "MONITOR" with values of structure "MONITOR_REC"
*- to make monitor entries
... "to cancel the update process
* raise exception type CX_RSROUT_ABORT.

DATA: ITAB_TARGET TYPE STANDARD TABLE OF _TY_S_TG_1.
DATA : ICOUNT TYPE RSARECORD.

DATA: ITAB2 TYPE HASHED table of FSCD_AD with Unique Key
FC_OPBEL, WA type FSCD_AD.


* Ensuring the source package is not empty
IF RESULT_PACKAGE IS NOT INITIAL.
ICOUNT = 1.
REFRESH ITAB2.


SELECT * FROM /BIC/AZFC_DS3100
INTO CORRESPONDING FIELDS OF TABLE ITAB2
for all entries in RESULT_PACKAGE
WHERE FC_OPBEL EQ RESULT_PACKAGE-FC_OPBEL.

IF sy-subrc = 0.
*Sorting for optimizing readaccess
SORT ITAB2 BY FC_OPBEL.
ENDIF.

ENDIF.

* Processing Refresh itab_target.
SORT RESULT_PACKAGE BY FC_OPBEL.

LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
READ TABLE ITAB2 INTO WA WITH TABLE KEY
FC_OPBEL = <RESULT_FIELDS>-FC_OPBEL.

If sy-subrc = 0.
<RESULT_FIELDS>-BUS_AREA = WA-BUS_AREA.
<RESULT_FIELDS>-/BIC/ZZGA_NR = WA-/BIC/ZZGA_NR.
<RESULT_FIELDS>-DOC_DATE = WA-DOC_DATE.
<RESULT_FIELDS>-PSTNG_DATE = WA-PSTNG_DATE.
<RESULT_FIELDS>-FC_AUGRS = WA-FC_AUGRS.
<RESULT_FIELDS>-NETDUEDATE = WA-NETDUEDATE.
<RESULT_FIELDS>-FC_STUDT = WA-FC_STUDT.
<RESULT_FIELDS>-FC_BLART = WA-FC_BLART.
<RESULT_FIELDS>-CAMNTRANS = WA-CAMNTRANS.
<RESULT_FIELDS>-CASUBTRANS = WA-CASUBTRANS.
<RESULT_FIELDS>-FC_VTREF = WA-FC_VTREF.
<RESULT_FIELDS>-CHRT_ACCTS = WA-CHRT_ACCTS.
<RESULT_FIELDS>-CACONT_ACC = WA-CACONT_ACC.
<RESULT_FIELDS>-GL_ACCOUNT = WA-GL_ACCOUNT.
<RESULT_FIELDS>-BPARTNER = WA-BPARTNER.

<RESULT_FIELDS>-RECORD = ICOUNT.
ICOUNT = ICOUNT + 1.
APPEND <RESULT_FIELDS> TO ITAB_TARGET.
CLEAR: WA, <result_fields>.


ENDIF.
ENDLOOP.

REFRESH RESULT_PACKAGE.
RESULT_PACKAGE[] = ITAB_TARGET[].
ENDIF.