Hi guys,
Just want to ask if you guys already encountered this problem?
I am using the standard datasource 0RT_PA_TRAN_CONTROL. I appended some fields on it (I used BADI to provide data for the additional fields) and extracting is fine since October 6, 2015. However, Last January 5, 2016 the extractor encountered the error below every time the number of rows extracted reached 1,263,116. I read some threads about this error (but not related with this datasource) but any solution mentioned did not solve the problem. Please refer for error details below.
Some threads:
Before the error happened, we can extract more than 1,263,116 records so I think this is not related with number of records being extracted. Do you think one the fields exceeded the number of length of the infoobject? But if that's the case, data should be truncated right? Or is it related with the internal table? Can I still optimize my code below?
Where do you guys think is the problem? Any idea how to solve this?
Here is the BADI code:
method IF_EX_RSU5_SAPI_BADI~DATA_TRANSFORM.
CHECK i_datasource = '0RT_PA_TRAN_CONTROL'.
DATA: lt_data TYPE TABLE OF /POSDW/BW_RETAIL_CONTROL.
FIELD-SYMBOLS: <ls_data> TYPE /POSDW/BW_RETAIL_CONTROL.
*----------------------------------------------------------------*
* Internal table for /POSDW/TLOGF
*----------------------------------------------------------------*
TYPES:
BEGIN OF ty_tran_control,
FIELDGROUP TYPE /POSDW/BW_RETAIL_CONTROL-FIELDGROUP,
FIELDNAME TYPE /POSDW/BW_RETAIL_CONTROL-FIELDNAME,
FIELDVALUE TYPE /POSDW/BW_RETAIL_CONTROL-FIELDVALUE,
RETAILSTOREID TYPE /POSDW/BW_RETAIL_CONTROL-RETAILSTOREID,
BUSINESSDAYDATE TYPE /POSDW/BW_RETAIL_CONTROL-BUSINESSDAYDATE,
TRANSINDEX TYPE /POSDW/BW_RETAIL_CONTROL-TRANSINDEX,
ROWKEY type /POSDW/TLOGF-ROWKEY,
LOYNUMBER type /POSDW/TLOGF-LOYNUMBER,
CUSTCARDNUMBER type /POSDW/TLOGF-CUSTCARDNUMBER,
LOYPROGRAMID type /POSDW/TLOGF-LOYPROGRAMID,
LOYPNTSAWARDED type /POSDW/TLOGF-LOYPNTSAWARDED,
LOYPNTSREDEEMED type /POSDW/TLOGF-LOYPNTSREDEEMED,
ORIGSTOREID type /POSDW/TLOGF-ORIGSTOREID,
ORIGBUSINESSDATE type /POSDW/TLOGF-ORIGBUSINESSDATE,
ORIGWRKSTID type /POSDW/TLOGF-ORIGWRKSTID,
ORIGTRANSNUMBER type /POSDW/TLOGF-ORIGTRANSNUMBER,
VOIDEDLINE type /POSDW/TLOGF-VOIDEDLINE,
END OF ty_tran_control.
DATA:
lt_tran_control type standard table of ty_tran_control,
ls_tran_control type ty_tran_control.
lt_data[] = c_t_data[].
*----------------------------------------------------------------*
* Read data into internal memory
*----------------------------------------------------------------*
select
FIELDGROUP
FIELDNAME
FIELDVALUE
RETAILSTOREID
BUSINESSDAYDATE
TRANSINDEX
ROWKEY
LOYNUMBER
CUSTCARDNUMBER
LOYPROGRAMID
LOYPNTSAWARDED
LOYPNTSREDEEMED
ORIGSTOREID
ORIGBUSINESSDATE
ORIGWRKSTID
ORIGTRANSNUMBER
VOIDEDLINE
from /POSDW/TLOGF
into table lt_tran_control
for all entries in lt_data
where
RETAILSTOREID = lt_data-RETAILSTOREID and
BUSINESSDAYDATE = lt_data-BUSINESSDAYDATE and
TRANSINDEX = lt_data-TRANSINDEX and
FIELDNAME = 'MIN'.
sort lt_tran_control by RETAILSTOREID DESCENDING BUSINESSDAYDATE DESCENDING TRANSINDEx DESCENDING
fieldgroup DESCENDING fieldname DESCENDING fieldvalue DESCENDING
LOYNUMBER DESCENDING
CUSTCARDNUMBER DESCENDING
LOYPROGRAMID DESCENDING
LOYPNTSAWARDED DESCENDING
LOYPNTSREDEEMED DESCENDING
ORIGSTOREID DESCENDING
ORIGBUSINESSDATE DESCENDING
ORIGWRKSTID DESCENDING
ORIGTRANSNUMBER DESCENDING
VOIDEDLINE DESCENDING.
delete ADJACENT DUPLICATES FROM lt_tran_control COMPARING RETAILSTOREID BUSINESSDAYDATE TRANSINDEX.
LOOP AT lt_data ASSIGNING <ls_data>.
read table lt_tran_control into ls_tran_control
with key
RETAILSTOREID = <ls_data>-RETAILSTOREID
BUSINESSDAYDATE = <ls_data>-BUSINESSDAYDATE
TRANSINDEX = <ls_data>-TRANSINDEX.
if sy-subrc eq 0.
<ls_data>-FIELDGROUP = ls_tran_control-FIELDGROUP.
<ls_data>-FIELDNAME = ls_tran_control-FIELDNAME.
<ls_data>-FIELDVALUE = ls_tran_control-FIELDVALUE.
<ls_data>-LOYNUMBER = ls_tran_control-LOYNUMBER.
<ls_data>-CUSTCARDNUMBER = ls_tran_control-CUSTCARDNUMBER.
<ls_data>-LOYPROGRAMID = ls_tran_control-LOYPROGRAMID.
<ls_data>-LOYPNTSAWARDED = ls_tran_control-LOYPNTSAWARDED.
<ls_data>-LOYPNTSREDEEMED = ls_tran_control-LOYPNTSREDEEMED.
<ls_data>-ORIGSTOREID = ls_tran_control-ORIGSTOREID.
<ls_data>-ORIGBUSINESSDATE = ls_tran_control-ORIGBUSINESSDATE.
<ls_data>-ORIGWRKSTID = ls_tran_control-ORIGWRKSTID.
<ls_data>-ORIGTRANSNUMBER = ls_tran_control-ORIGTRANSNUMBER.
<ls_data>-VOIDEDLINE = ls_tran_control-VOIDEDLINE.
endif.
ENDLOOP.
REFRESH c_t_data.
c_t_data[] = lt_data[].
endmethod.
Thank you.
Loed