on 12-30-2014 12:30 PM
Hi Team,
I have wriiten a start routine for deleting the records from the active table of DSO
But,above the DSO,there is a cube is present.So,if i move the records from DSO to cube,all the entries(deleted entries also going to cube).
My changes shoud get reflected in Cube also.
So,if it possible to delete both records and changelog table??
if possible,can you please tell how it can be done.
Regards,
Varun Kumar
Hi Varun,
Delta from Standard DSO will always takes the data from Change Log.
The better way to delete the data from active table (which also reflects in change log) is changing the record mode to D.
Rater than deleteing the data directly from Active table in the start routine. Make the Record Mode field to D for that particular record and activate the DSO.
After activation the record will not be present in the active table and the new image will be created in the change log as well.
Example Code :
LOOP AT SOURCE_PACKAGE ASSIGNING <source_fields>.
<source_fields>-recordmode = 'D'.
ENDLOOP.
Regards,
Bhaskar
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Varun,
If the loads from DSO to Cue is delta then the data will be taken from Changelog table.
So check the update mode and try to change to Selective Full (Full with filters) then the data will be extracted from active table.
There is no method to do a selctive deltion only on Change Log Table. We have a process step to delete the entire data from Change Log.
Regards,
Bhaskar
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Varun,
Can you please share your coding in the Start Routine?
You should not directly delete records from the Active table but rather use technical Characteristic 0RECORDMODE for this purpose. If you set 0RECORDMODE to 'D' (= delete), then you will delete the records the right way. You only have to supply the key fields.
Best regards,
Sander
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi ,
This is the code i have written.
DATA:ITAB_ds TYPE TABLE OF /BIC/AIxxxxxxx.
data:wrkarea_ds type /BIC/AIxxxxx.
DATA: ITAB_src TYPE TABLE OF _ty_s_SC_1.
data: wrkarea_src type _ty_s_SC_1.
Select * from /BIC/AIxxxxxxxinto table ITAB_ds
for all entries in SOURCE_PACKAGE
where soursystem = SOURCE_PACKAGE-soursystem AND
OI_EBELN = SOURCE_PACKAGE-OI_ebeln AND
OI_EBELP = SOURCE_PACKAGE-OI_ebelp.
lOOP AT SOURCE_PACKAGE INTO WRKAREA_src.
if ( ( wrkarea_src-conf_line > 1 ) AND (
wrkarea_src-conf_type = 'AB' ) ).
sort itab_DS by SOURSYSTEM OI_EBELN OI_ebelp
CONF_LINE .
read table iTAB_ds into wrkarea_ds with key soursystem =
wrkarea_src-soursystem
oi_ebEln = wrkarea_src-oi_ebEln
oi_ebElp = wrkarea_src-oi_ebelp
CONF_TYPE = 'LA'.
if sy-subrc = 0.
if ( ( wrkarea_ds-conf_line = 1 ) ).
delete ITAB_ds where conf_line = 001.
Hi Varun,
I am afraid that it's not the complete source code. There is a part missing.
Anyway, the method which I described (0RECORDMODE to 'D') is a proven way and works perfectly together with the delta mechanism and reloads.
In the coding you should write a statement like (e.g. after a particular condition is met for a particular record of the source package):
SOURCE_PACKAGE-RECORDMODE = 'D'.
Only the key fields have to be supplied; all other (non-key) fields can be initial.
Best regards,
Sander
User | Count |
---|---|
88 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.