cancel
Showing results for 
Search instead for 
Did you mean: 

Recordmode in Transfer Rule

Former Member
0 Kudos

Hello everyone,

I've a question about the record mode in transfer rule:

eg: I've ODS which has 2 records:

sales order / item / char1 /char2 / Date

2001 / 10 / A / B / 9999-12-31

2002 / 10 / E / F / 9999-12-31

(sales order, item, char1 and char2 are keys)

I've data in extraction:

2002 / 10 / E / F / 2007-09-20

2002 / 10 / E / F/ 9999-12-31

If I create transfer rule for 0RECORDMODE

IF TRAN_STRUCTURE-Date < SYST-DATUM.

RESULT = 'D'.

ENDIF.

What result will I get in ODS?

I mean I will get:

2001 / 10 / A / B / 9999-12-31

2002 / 10 / E / F / 9999-12-31

or I will get 2001 / 10 / A / B / 9999-12-31

since the transfer rule will assigne 'D' to all records which have key

2002 / 10 / E / F.

Thanks a lot for all idea.

Regards

Juan

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Juan,

> I've data in extraction:

> 2002 / 10 / E / F / 2007-09-20

> 2002 / 10 / E / F/ 9999-12-31

>

This data looks like delta enabled extract. Why are you using a delta enabled load into an ODS? You could, but that is really not necessary. In any case, are you deleting the "old snapshot" record in the transfer rules or update rules?

>

> What result will I get in ODS?

> I mean I will get:

> 2001 / 10 / A / B / 9999-12-31

> 2002 / 10 / E / F / 9999-12-31

>

> or I will get 2001 / 10 / A / B / 9999-12-31

> since the transfer rule will assigne 'D' to all

> records which have key

> 2002 / 10 / E / F.

>

It is hard to tell with 100% confidence because you are trying to load delta enabled extract into an ODS. I suspect you will have the following two records:


2001  /  10 /  A / B / 9999-12-31
2002 / 10 / E / F / 9999-12-31

If I were in your place, I would simply conduct an easy experiment in the development system by creating two CSV files and loading them via flat file upload interface.

Former Member
0 Kudos

Hi Sudhi,

Thanks for your reply.

> This data looks like delta enabled extract. Why are

> you using a delta enabled load into an ODS? You

> could, but that is really not necessary. In any case,

> are you deleting the "old snapshot" record in the

> transfer rules or update rules?

In our case, we have a lot of records but only few rows, so we decide to take an ODS.

Why is not necessary, the delta load into ODS? could you please explain more clear?

> If I were in your place, I would simply conduct an

> easy experiment in the development system by creating

> two CSV files and loading them via flat file upload

> interface.

Yes, I will try it.

Former Member
0 Kudos

A delta load that sends two records for every change (one snapshot for before change and another for after change) is helpful if the data is going directly into a cube. InfoCube data is never deleted and never overwritten. So if you have a record like this


CHAR  KF
A     5

and if the key figure value changes to 8, then you need two records to go into the cube like this:


CHAR  KF
A     -5
A     8

The cube will now have 3 records; the original record, second record negating the original record and the third one with the new value.

ODS data is always overwritten - so there is no need for the before change snapshot.

Former Member
0 Kudos

Hello Sudhi,

I knew that but in our case, I'd like to load only the changed or new records from ECC5 but not all records since the volume is important.

Therefore, I take delta loading to ODS and I should be sure delta works well.

Regards,

Juan

> A delta load that sends two records for every change

> (one snapshot for before change and another for after

> change) is helpful if the data is going directly into

> a cube. InfoCube data is never deleted and never

> overwritten. So if you have a record like this

>


> CHAR  KF
> A     5
> 

> and if the key figure value changes to 8, then you

> need two records to go into the cube like this:

>


> CHAR  KF
> A     -5
> A     8
> 

> The cube will now have 3 records; the original

> record, second record negating the original record

> and the third one with the new value.

>

> ODS data is always overwritten - so there is no need

> for the before change snapshot.

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Juan,

If date is not in keyfields, then you no need to use Recordmode = D to delete rocords from ODS. Latest one overwrites existing one.

Yes you can have multiple records in CUBE, after load compress with Zero record deletion.

Hope it Helps

Srini

Former Member
0 Kudos

Hi Srini,

Yes, I agree with that.

We have only an ODS as InfoProvider in this case.

If a record is deleted in R/3, how can I load it to ODS in order to delete this record in ODS? (The extractor is generic extractor, thus I should define delta rule myself ).

Thanks for you help

Juan

> Hi Juan,

>

> If date is not in keyfields, then you no need to

> use Recordmode = D to delete rocords from ODS.

> Latest one overwrites existing one.

>

> Yes you can have multiple records in CUBE, after

> load compress with Zero record deletion.

>

> Hope it Helps

> Srini

Former Member
0 Kudos

Hi Juan,

Better way : In your ODS date field is there and is filling with latest date.

Now load data from ODS to same ODS(called loop back) and map only record mode, and write a simple routine, like if date is less than system date then Mark D. You can delete old records.

Hope it Helps

Srini

Former Member
0 Kudos

Hi Srini

That seems very interesting.

But how can I map record mode in ODS since I can't add record mode in ODS?

Thank you very much.

Juan

> Hi Juan,

>

> Better way : In your ODS date field is there and

> is filling with latest date.

>

> Now load data from ODS to same ODS(called loop back)

> and map only record mode, and write a simple routine,

> like if date is less than system date then Mark D.

> You can delete old records.

>

> Hope it Helps

> Srini

Former Member
0 Kudos

Hi Juan,

You no need to add, it will be available in ODS by default from 3.1 vesrion. You can check in ODS changelog table for example. Or also you can check in export datasource or infosource of ODS(8<ods name>).

Hope it Helps

Srini

Former Member
0 Kudos

Hi Srini

Your answer is quite helpful.

I have one more question, please:

My ods is loaded with delta mode. If a record is new for this ODS, your methode works well. Therefore, if a record exist already in this ODS, but the date is changed. I mean the key is the same but date is updated. In this case, the old record is set to 'X' and new one is set to ' ' in change log. Thus this record have a date less than system date, but BW will not mark 'D' to this record because it's not a new record but a record updated. In this case, how can I delete it?

Hope my question is clear.

Thanks

Juan

> Hi Juan,

>

> Better way : In your ODS date field is there and

> is filling with latest date.

>

> Now load data from ODS to same ODS(called loop back)

> and map only record mode, and write a simple routine,

> like if date is less than system date then Mark D.

> You can delete old records.

>

> Hope it Helps

> Srini

Former Member
0 Kudos

Hi Juan,

If i undestood correctly, date you are talking about is filling in update rules of ODS(before loading into ODS). in this case our condition works. We no need to bother about ODS change log, which comes into picture once data is activated, in activation Deletion marked records(RECORD Mode = D) will be deleted.

If i didnt understand correctly, please eloborate bit... its been long time(post created on 30 Sep...)... )

Hope it Helps

Srini

Former Member
0 Kudos

Hi Srini,

Thanks to your response rapide.

The field Date is in datasource.

In fact, when loading init, everything is OK.

But the second load with Delta has problem,.

eg:

Record had been loading in INIT:

10 (key) red 9999-12-31

and later, this record is modified in R/3

10(key) red 2007-09-30

That means this record is valid to 2007-09-30. We should thus delete it from ODS.

Therefore, with our routine, this record is only updated to:

10(key) red 2007-09-30

and it is always in ODS.

It seems that because it is a updated record but not new record, so when loading in delta, BW doesn't take it and then can't delete it with the routine.

That's why my question.

Is it clear?

Thank for your help.

Juan

> Hi Juan,

>

> If i undestood correctly, date you are talking

> about is filling in update rules of ODS(before

> loading into ODS). in this case our condition works.

> We no need to bother about ODS change log, which

> comes into picture once data is activated, in

> activation Deletion marked records(RECORD Mode = D)

> will be deleted.

>

> If i didnt understand correctly, please eloborate

> bit... its been long time(post created on 30

> Sep...)... )

>

> Hope it Helps

> Srini

Former Member
0 Kudos

Hi Juan,

Which records you want to delete...? based on which field...? change date, creation date, ....ect..? or loadinging date...? Please explain your requirement... i really lost...

Srini

Former Member
0 Kudos

Hi Srini,

an example:

in INIT loading, I've loaded a record likes:

order no. color DateValidTo

10 red 9999-12-31

Few days later, this sales order has been modified in R/3. I loaded it to BW in Delta:

order no. color DateValidTo

10 red 2007-09-15

I want to delete this record in BW since its date (DateValidTo) is less than Today.

But, with our routine, it can't be deleted.

I suppose that because it's not a new record, but just a record updated.

I hope you understand my problem now.

Best wishes

Juan

Former Member
0 Kudos

Juan,

It can be deleted. Why not..?

I think your routine is : If date to < loaddate(current date) mark record mode = D.

right..? here cant you make it <b>date to <= loaddate</b>..?

Then wat is the problem..?

For before image you will get date : 9999-12-31 and

after image you will get date : 2007-09-15.

so if current date is : 2007-09-15 and condition is delete records where load is less than or equal to Todate.(RECORDMODE = D)

Srini