Clubbing all Data packages into together an processing as one data packet

Hi Friends,
We may get requirement that, you need to club all the data package data into one internal table in start routine and then after if you want to send it to further targets.. :) Is it Possible in BW?
Yes It is Possible. Stop all the data packets and process them in one sequence is possible.
In BW 3.5 We can club all data packets together into one data packet in start routine.
In Start routine we can club all the data packet data into one internal table, then after you can send this internal table for further processing.

Logic to stop data packets:

DATA: packet_nbr TYPE i VALUE 1.

DATA: y_requnr TYPE rsrequnr.

DATA: Is_rec TYPE string VALUE 'G_S_IS-RECNO',
is_requnr TYPE string VALUE 'G_S_MINFO-REQUNR',
it_rsmonfact TYPE STANDARD TABLE OF ls_rsmonfact
FIELD-SYMBOLS: TYPE ANY,
TYPE ANY.
ASSIGN (is_requnr) TO .

SELECT dp_nr FROM rsmonfact
INTO TABLE it_rsmonfact
WHERE rnr = .

DESCRIBE TABLE it_rsmonfact LINES v_packet_max.

IF v_packet_nbr < v_packet_max.
APPEND LINES OF DATA_PACKAGE[] TO lt_data_package_collect[].
CLEAR: DATA_PACKAGE.
REFRESH DATA_PACKAGE.
v_packet_nbr = v_packet_nbr + 1.

CLEAR: MONITOR[], MONITOR.
MONITOR-msgid = '00'.
MONITOR-msgty = 'I'.
MONITOR-msgno = '398'.
MONITOR-msgv1 = 'All data_packages have been gathered in one. '.
MONITOR-msgv2 = 'The last DATA_PACKAGE contains all records.'.
APPEND MONITOR.

ELSE.
last data_package => perform Business Rules.
IF v_packet_max > 1.
APPEND LINES OF DATA_PACKAGE[] TO lt_data_package_collect[].
CLEAR: DATA_PACKAGE[], DATA_PACKAGE.
Write your logic @ here....

ENDIF.
ENDIF.

No comments: