Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
Abhishek_Hazra
Active Contributor
Hello,

For many of us existing BW consumers, while moving to BW/4HANA platform it's quite common a scene these days that we change the existing BW transformation routines from ABAP to AMDP to leverage the HANA performance in better possible way. In one of our cases, we had dataflows from several source ADSOs into one target ADSO. And the ABAP start routine in the TRFN had to look into the active tables of the source ADSOs for respective loads to find out the maximum date from it's source. In ABAP we had this method : p_r_request-> get_src which can get us back the source provider's technical name for the load request. I was searching for something similar to replicate the same logic in AMDP.

However, while trying to build a custom solution to replicate the method p_r_request-> get_src, with great inputs from torsten.kessler I found out that there's already a set of available parameters in each AMDP global area of TRFNs. 🙂
  methods GLOBAL_START
importing
value(i_error_handling) type STRING
value(i_req_dtp_name) type STRING
value(i_req_logsys) type STRING
value(i_req_src_name) type STRING
value(i_req_src_type) type STRING
value(i_req_tgt_name) type STRING
value(i_req_tgt_type) type STRING
value(i_req_requid) type STRING
value(inTab) type TN_T_IN_GLOBAL_START
exporting
value(outTab) type TN_T_OUT_GLOBAL_START
value(errorTab) type TN_T_ERROR .

 

Above are the available parameters in GLOBAL_START of the AMDP. These are filled accordingly for each load request going through an AMDP. These parameters contain different technical information associated with the load eg. logical system, technical names of source, target, type of the source/target, request ID of load request etc as shown in above screenshot. In this context I have used i_req_src_name in order to replicate the code in p_r_request-> get_src in ABAP. A note to remember, i_req_src_name provides the source of the DTP (so the source infoprovider) & not the source of the TRFN (which might be an infosource as well).

A code snippet from my scenario is provided as below : Here I am trying to stamp the maximum billing date (last sales date) from different sales ADSOs' active tables (source providers : SRCADSOX, X = 1,2,3) for the delta combination of material & plant data.
METHOD GLOBAL_START BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY
USING /BIC/ASRCADSO12
/BIC/ASRCADSO22
/BIC/ASRCADSO32.

-- *** Begin of routine - insert your code only below this line ***
outTab = select
case :i_req_src_name
when 'SRCADSO1' then
max( a.BILL_DATE )
when 'SRCADSO2' then
max( b.BILL_DATE )
when 'SRCADSO3' then
max( c.BILL_DATE ) end as BILL_DATE,
it.RECORDMODE,
it.PLANT,
it.MAT_PLANT,
it.RECORD,
it.SQL__PROCEDURE__SOURCE__RECORD

from :intab as it
LEFT JOIN "/BIC/ASRCADSO12" as a ON it.MAT_PLANT = a.MAT_PLANT AND it.PLANT = a.PLANT
LEFT JOIN "/BIC/ASRCADSO22" as b ON it.MAT_PLANT = b.MAT_PLANT AND it.PLANT = b.PLANT
LEFT JOIN "/BIC/ASRCADSO32" as c ON it.MAT_PLANT = c.MAT_PLANT AND it.PLANT = c.PLANT
WHERE it.RECORDMODE <> 'X'
group by it.RECORDMODE,
it.PLANT,
it.MAT_PLANT,
it.RECORD,
it.SQL__PROCEDURE__SOURCE__RECORD;

 

Note : We had an ABAP code for this whole activity in the start routine of TRFN before using p_r_request-> get_src & preparing the active table name of the ADSOs dynamically by concatenating the '/BIC/A' & '2' partz as prefix & suffix to the source name. With AMDP, I could as of now, build a case based script by hardcoding the constant source provider names in the data flow. This may as well be optimized further using dynamic sql preparing the table name & using the look up dynamically without using the constant table names in join condition.

Needless to say, by switching from ABAP to AMDP in HANA based BW TRFN, we reduced the runtime of the load to from 14 minutes to just 23 seconds. Awesome isn't it? 😉

Cheers!
Abhi
2 Comments
Labels in this area