cancel
Showing results for 
Search instead for 
Did you mean: 

Modeling Question

TobiasMeinzer
Advisor
Advisor
0 Kudos

Hi Experts,

I have a general modeling question: how can I join data without using an InfoSet?

This is the following case:

DataSource 1:

- Business Partner ID

- Business Partner Function

- Ticket ID

DataSource 2:

- Transport Request ID

- Transport Request System

- Transport Request Client

- Ticket ID

DataSource 3:

- Transport Request ID

- Transported Object Name

- Ticket ID

The final report should give information on

- How many transported objects (counter by Transported Object Name)

- per Transport Request

- per Business Partner (Business Partner ID in a certain Busines Partner Function)

- per Transport Request System/Client

So my problem is: how can I model the subsequent data model? Since the DataSources are that heterogenous a InfoCube will not help as well as several InfoCubes within a MultiProvider does also not fulfill the requirements. As far as I can see the only way would be an InfoSet but this is rather slow.

Any suggestions?

Many thanks in advance!

Cheers

Tobias

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi,

Is Business partner ID someone who raises the ticket? In that case i guess only one person could raise a ticket. If so the solution i gave above should work.

Former Member
0 Kudos

Hi Tobias,

I assume that there is 1:1 relation between ticket id and transport request id (one transport request per ticket) and between ticket id and business partner id. One record exists for a ticket id for datasource1 and datasource2.

DSO1

Key - Ticket ID

Load datasource1 and datasource2 to DSO1.

Cube

Load datasource3 to the cube. Lookup DSO1 by Ticket ID and populate Business Partner ID, Business Partner Function, Transport Request System and Transport Request Client.

TobiasMeinzer
Advisor
Advisor
0 Kudos

Unfortunately it is way more complex. Business partner id and ticket id are not in a 1:1 relation, but m:n.

Former Member
0 Kudos

Load all 3 in separate DSOs.

Create a infoset on D1 and D3, inner join linking Ticket ID.

You may load this Infoset into a Cube. Add 'Counter' ( = Constant 1) in the Cube. Report on this cube.

For D3, you have 2 options, either make Transport ID as Master Data or lookup D2 when loading from infoset to cube.

On flip side, Infoset load does not support delta. Always full. So u need to do a Delete and Full.

On shine side, reporting on infoset is slow.

Former Member
0 Kudos

Hi,

You can try the following :-

Load from DS 2 and DS 3 into a DSO1 :-

The key fields for this would be Transport Request ID and Ticket ID. Transport Request System, Transport Request Client, Transported Object Name will be the data field. And tehn Load the data into a cube for ease in reporting.

For the DS1 :-

Make it a master data. With Ticket ID as the key and Business Partner ID, Business Partner Function as the navigational attribute.

Then create a multiprovider and report on top of that. The multiprovider will have the Both the cube and the Master data.

Best Regards,

Rahul

Former Member
0 Kudos

Hi Tobias ,

If your ticket id is unique then you can load all data into a single cube via three TRFN from all 3 data sources .Cube will have alll fields :

- Ticket ID

- Business Partner ID

- Business Partner Function

- Transport Request ID

- Transport Request System

- Transport Request Client

- Transported Object Name

and then to populate transport object name for particular transport request ID you can write routine and read from DSO table and populate Transported Object Name.

Sample end routine code for that :

data: it_temp type standard table of <tech name of DSO table> ,

wa_temp type <tech name of DSO table>.

SELECT * FROM <tech name of DSO table> INTO TABLE it_temp

FOR ALL ENTRIES IN RESULT_PACKAGE.

SORT it_temp BY Request_ID Object_Name ASCENDING.

DELETE ADJACENT DUPLICATES FROM it_temp COMPARING Request_ID Object_Name .

LOOP AT RESULT_PACKAGE ASSIGNING <result_fields>.

READ TABLE it_temp INTO wa_temp WITH KEY Request_ID = <result_fields>-Request_ID

BINARY SEARCH.

IF sy-subrc = 0.

<result_fields>-Object_Name = wa_temp-Object_Name.

CLEAR wa_temp.

ENDIF.

ENDLOOP.

Hope this will be helpful .

Regards,

Jaya