cancel
Showing results for 
Search instead for 
Did you mean: 

Transfering the Records from Changelog table to CUBE.

Former Member
0 Kudos

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

Accepted Solutions (0)

Answers (4)

Answers (4)

bhaskar_v3
Explorer
0 Kudos

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

Former Member
0 Kudos

Hi Varun,

Please see the link.

Hope this helps.

Regards,

bhaskar_v3
Explorer
0 Kudos

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

Former Member
0 Kudos

Hi Bhaskar,

If i use full everytime,then it loses its efficiency rite?

So,if it possible for delta update,and entry should fetch records as same as  active table to cube?

sander_vanwilligen
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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.

sander_vanwilligen
Active Contributor
0 Kudos

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