Dear Roger,
actually I do not remember this scenario anymore I wrote about in my thread. Its a long time ago.
But I again recognized it a few weeks ago in BW 7.3. There we use a query as data source and push the information into a cube. Against a few records got "lost" by some "delete adjencates dublicates" functionality.
I believe after my ongoing tests that this is some internal logic inside SAP standard - to me it seems lke a bug but I have not yet reported to SAP.
In other words: This transformation I now talk about has an end routine but no start routine. When debugging it I see that before the system reads all information from the source, but right before the end routine (and also inside at the very beginning), I am already missing a few records.
What I did to solve it:
- I created a start routine with an internal table (same structure like the source_fields).
- I loop over source_package and collect into my own table
- then I delete the content of source_package and write my own data back
That solved the problem.
To me it seems that the system deletes all dublicate entries by comparing the against the target structure. So if the target has les fields that the source, then data gets deleted.
I recognized this behaviour only when writing into a DSO. I personally would expect that the transformation itself does not aggregate the information. If you use a standard datasource like 2LIS for sales orders, one package could also contain multiple records and the last "wins" and overwrites the previous record values. I assumed that - once I dont want that - that I need to aggregate myself with ABAP "collect" statement. But obviously I miss and dont understand the BI behaviour correct or its a but.
Anyhow with the "preaggregation" in the start routine I was able to get to my correct result.
Hope this answer helps you to solve yours!
Cheers,
Hendrik