You are on page 1of 49

SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.

com
2011 SAP AG 1
How to Write Start Routine in
Update Rules, Transformations
and How to Debug the Routines
Applies to:
SAP NetWeaver Business Warehouse (Formerly BI), Will also work on SAP BW 3.5/SAP BI 7.X. For more
information, visit the EDW homepage
Summary
This Article tells about, How to write a Start Routine in Update Rules, Transformations and How to Debug
the Routines. Here I taken one example i.e., needs to delete the unwanted data in Start Routine of Update
Rules/Transformations based on Customer number.


Author: Surendra Kumar Reddy Koduru
Company: ITC Infotech India Ltd. (Bangalore/INDIA)
Created on: 20 June 2011
Author Bio
Surendra Kumar Reddy Koduru is a SAP BI Lead Consultant currently working with ITC Infotech India
Ltd (Bangalore/INDIA). He has got rich experience and worked on various BW/BI
Implementation/Support Projects and he is the author for various Articles and Blogs (SAP-BW/BI) in
SAP Community Network.


How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 2
Table of Contents
How to Write a Start Routine in Update Rules: .................................................................................................. 3
Introduction: ........................................................................................................................................................ 3
Live Scenario: ..................................................................................................................................................... 3
InfoCube Details: ............................................................................................................................................. 3
Create Start Routine: ...................................................................................................................................... 4
Code before Start Routine: ............................................................................................................................. 5
Code After Start Routine: ................................................................................................................................ 6
Data Loading: .................................................................................................................................................. 9
Monitor the Data Load:.................................................................................................................................. 10
Request Details: ............................................................................................................................................ 12
Display Data in InfoCube: ............................................................................................................................. 13
Data in PSA : ............................................................................................................................................................. 13
Data in Source Flat File: ............................................................................................................................................ 14
How to Debug the Start Routine in Update Rules: ........................................................................................... 14
Change Start Routine:................................................................................................................................... 14
Data Loading: ................................................................................................................................................ 16
InfoPackage Settings: ................................................................................................................................................ 16
Monitor the Data Load:.................................................................................................................................. 17
Manual Update/Simulation: ........................................................................................................................... 18
Debugger Window: ........................................................................................................................................ 19
Our Code: ...................................................................................................................................................... 19
Data Package: ............................................................................................................................................... 20
How to Write Start Routine in Transformations: ............................................................................................... 22
Introduction: ...................................................................................................................................................... 22
Live Scenario: ............................................................................................................................................... 22
InfoCube Details: ........................................................................................................................................... 22
Create Start Routine: .................................................................................................................................... 23
Code Before Start Routine: ........................................................................................................................... 24
Code After Start Routine: .............................................................................................................................. 27
Data Loading: ................................................................................................................................................ 31
Monitor the Data Load:.................................................................................................................................. 33
Request Details: ............................................................................................................................................ 36
Display Data in InfoCube: ............................................................................................................................. 37
Data in PSA: .............................................................................................................................................................. 37
Data in Source Flat File: ............................................................................................................................................ 38
How to Debug Start Routine in Transformations: ............................................................................................. 38
Introduction: ...................................................................................................................................................... 38
Live Scenario: ............................................................................................................................................... 38
Change Start Routine:................................................................................................................................... 38
Data Loading: ................................................................................................................................................ 40
InfoPackage Settings: ................................................................................................................................................ 40
Monitor the Data Load:.................................................................................................................................. 41
DTP and Settings for Debug: ........................................................................................................................ 42
Debugger Window: ........................................................................................................................................ 45
Related Content ................................................................................................................................................ 48
Disclaimer and Liability Notice .......................................................................................................................... 49

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 3
How to Write a Start Routine in Update Rules:
Introduction:
How to write a Start Routine in Update Rules. Here I taken one example i.e., needs to delete the unwanted
data in Start Routine of Update Rules based on Customer number.
Live Scenario:
We are loading the data to InfoCube, the Source system is Flat File (the logic, code and execution is same
for even any SAP Source systems also) and we need to delete the unwanted records/data in Update rules at
the time of data loads based on some Customer numbers.
InfoCube Details:
See the below screens, which will give the details of the InfoCube ZIC_DEMO2.




How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 4
Note: I taken ZIC_DEMO2 InfoCube, which is having just simple Transfer rules and Update Rules (in BW 3.5)
Create Start Routine:
Click on Create Start Routine like below.


It opens the below code window.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 5

Code before Start Routine:

PROGRAM UPDATE_ROUTINE.
*$*$ begin of global - insert your declaration only below this line *-*
* TABLES: ...
* DATA: ...
*$*$ end of global - insert your declaration only before this line *-*

* The follow definition is new in the BW3.x
TYPES:
BEGIN OF DATA_PACKAGE_STRUCTURE.
INCLUDE STRUCTURE /BIC/CSZIS_DEMO2.
TYPES:
RECNO LIKE sy-tabix,
END OF DATA_PACKAGE_STRUCTURE.
DATA:
DATA_PACKAGE TYPE STANDARD TABLE OF DATA_PACKAGE_STRUCTURE
WITH HEADER LINE
WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE 0.

FORM startup
TABLES MONITOR STRUCTURE RSMONITOR "user defined monitoring
MONITOR_RECNO STRUCTURE RSMONITORS " monitoring with record n
DATA_PACKAGE STRUCTURE DATA_PACKAGE
USING RECORD_ALL LIKE SY-TABIX
SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
CHANGING ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
*
*$*$ begin of routine - insert your code only below this line *-*
* fill the internal tables "MONITOR" and/or "MONITOR_RECNO",
* to make monitor entries

* if abort is not equal zero, the update process will be canceled
ABORT = 0.

*$*$ end of routine - insert your code only before this line *-*
*
ENDFORM.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 6
Code After Start Routine:
Write the below code in code window, here I written Customer is equal to 000000C100 or C100, because
0CUSTOMER length is 10 and so if record will come with or without leading zeros the code will work.


PROGRAM UPDATE_ROUTINE.
*$*$ begin of global - insert your declaration only below this line *-*
* TABLES: ...
* DATA: ...
*$*$ end of global - insert your declaration only before this line *-*

* The follow definition is new in the BW3.x
TYPES:
BEGIN OF DATA_PACKAGE_STRUCTURE.
INCLUDE STRUCTURE /BIC/CSZIS_DEMO2.
TYPES:
RECNO LIKE sy-tabix,
END OF DATA_PACKAGE_STRUCTURE.
DATA:
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 7
DATA_PACKAGE TYPE STANDARD TABLE OF DATA_PACKAGE_STRUCTURE
WITH HEADER LINE
WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE 0.

FORM startup
TABLES MONITOR STRUCTURE RSMONITOR "user defined monitoring
MONITOR_RECNO STRUCTURE RSMONITORS " monitoring with record n
DATA_PACKAGE STRUCTURE DATA_PACKAGE
USING RECORD_ALL LIKE SY-TABIX
SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
CHANGING ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
*
*$*$ begin of routine - insert your code only below this line *-*
* fill the internal tables "MONITOR" and/or "MONITOR_RECNO",
* to make monitor entries

***Start Rt, Begin****Surendra Kumar Reddy Koduru*******

DATA: WA_DATA_PACKAGE LIKE DATA_PACKAGE,
ZINDEX LIKE SY-TABIX.

LOOP AT DATA_PACKAGE INTO WA_DATA_PACKAGE.

CLEAR ZINDEX.

ZINDEX = SY-TABIX.

If WA_DATA_PACKAGE-CUSTOMER = '000000C100' OR
WA_DATA_PACKAGE-CUSTOMER = 'C100' OR
WA_DATA_PACKAGE-CUSTOMER = '000000C101' OR
WA_DATA_PACKAGE-CUSTOMER = 'C101' OR
WA_DATA_PACKAGE-CUSTOMER = '000000C102' OR
WA_DATA_PACKAGE-CUSTOMER = 'C102' OR
WA_DATA_PACKAGE-CUSTOMER = '000000C103' OR
WA_DATA_PACKAGE-CUSTOMER = 'C103'.

DELETE DATA_PACKAGE INDEX ZINDEX.

CONTINUE.
ENDIF.

ENDLOOP.


***Start Rt, End******Surendra Kumar Reddy Koduru*******


* if abort is not equal zero, the update process will be canceled
ABORT = 0.

*$*$ end of routine - insert your code only before this line *-*
*
ENDFORM.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 8
After that Check the Syntax then Save, and come back.

In above screen, you can fine the message called No Syntax Errors Found.
So our code is correct and now we can Save, Activate the Update Rules.



How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 9


Data Loading:
After activation, load the data form Flat File.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 10
Monitor the Data Load:
After Load, go to Monitor, see the below screen.


See the number of records; in Flat file we have only Five records, so it is displaying only Five records.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 11
Click on Header Tab and then click on Termination if records occur, see below screen.


It opens the detailed window about the status of records updating, see below screen, totally we have 5
records in Flat file and 5 sent and 5 received, PSA got 5 records, but finally updated only One record in
InfoCube, because Start Routine in Update rules worked properly.


How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 12

Request Details:
See the Request in InfoCube using Manage



In above screen, we can find One request with 5 Transferred and 1 Added records.
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 13
Display Data in InfoCube:
See the Data In the InfoCube using Display Data



See one single record which is Customer = C104, other records are deleted.
Data in PSA :


How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 14
Data in Source Flat File:


How to Debug the Start Routine in Update Rules:
Change Start Routine:
Click on Change Start Routine like below.

It opens the below code window like below, keep break point i.e. BREAK-POINT.
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 15



How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 16
Data Loading:
InfoPackage Settings:

See the above screen, Open the InfoPackage and then go to Processing Tab and then choose Only PSA.
The reason is after PSA Load we will load the data into InfoCube, in between we will debug the Start
Routine.
After PSA Settings then open Schedule tab and then Start Data Loading.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 17

Monitor the Data Load:
After Load, go to Monitor, see the below screen.

See the number of records; in Flat file we have only Five records, so it is displaying only Five records.
In addition that you can see the Process Manually, because we loaded up to PSA.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 18
Manual Update/Simulation:
Open Details Tab and select the Data Package 1 and right Click and Choose Simulate Update.



Select the Activate Debugging in Update Rules, because we written Start Routine in Update Rules and click
on Perform Simulation button.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 19

Debugger Window:
It opens the debugging window like below.

Press F7, till it will reach our Code.
Our Code:
See our code and BREAK-POINT, from now onwards press F5, it will go line by line.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 20
Data Package:
Double click on DATA_PACKAGE, it will come and appear in Right side, see below screen.

Double click on Small Icon before DATA_PACKAGE in right side, it will show the actual Data in that Data
Package like below.

Click on Desktop1 tab and then press F5, it will debug line by line.
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 21

We have 5 records in Flat File, so it deleted all 4 records which will satisfy our Condition in Start Routine and
the rest of the records i.e. only one will appear in DATA PACKAGE, see below screen.

Then press F8.

Close the above window it will display the details of the records updated. After that Load data manually from
PSA to InfoCube then see the Request/Data in InfoCube.
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 22
How to Write Start Routine in Transformations:
Introduction:
How to write a Start Routine in Transformations. Here I took one example i.e., needs to delete the
unwanted data in Start Routine of Transformations based on Customer number.
Live Scenario:
We are loading the data to InfoCube, the Source system is Flat File (the logic, code and execution is same
for even any SAP Source systems also) and we need to delete the unwanted records/data in
Transformations at the time of data loads based on some Customer numbers.
InfoCube Details:
See the below screens, which will give the details of the InfoCube ZIC_DEMO1.



Note: I had taken ZIC_DEMO1 InfoCube, which is having just simple Transformations.
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 23
Create Start Routine:
Click on Start Routine like below.

It opens the below code window.


How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 24
Code Before Start Routine:
PROGRAM trans_routine.


*---------------------------------------------------------------------*
* CLASS routine DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform DEFINITION.
PUBLIC SECTION.

* Attributs
DATA:
p_check_master_data_exist
TYPE RSODSOCHECKONLY READ-ONLY,
*- Instance for getting request runtime attributs;
* Available information: Refer to methods of
* interface 'if_rsbk_request_admintab_view'
p_r_request
TYPE REF TO if_rsbk_request_admintab_view READ-ONLY.

PRIVATE SECTION.

TYPE-POOLS: rsd, rstr.

* Rule specific types
TYPES:
BEGIN OF _ty_s_SC_1,
* Field: MATERIAL Material.
MATERIAL TYPE C LENGTH 18,
* Field: PLANT Plant.
PLANT TYPE C LENGTH 4,
* Field: CUSTOMER Customer.
CUSTOMER TYPE C LENGTH 10,
* Field: CALDAY Calendar Day.
CALDAY TYPE D,
* Field: AMOUNT Amount.
AMOUNT TYPE P LENGTH 9 DECIMALS 2,
* Field: CURRENCY.
CURRENCY TYPE C LENGTH 5,
* Field: QUANT_B Qty in OUn.
QUANT_B TYPE P LENGTH 9 DECIMALS 3,
* Field: BASE_UOM.
BASE_UOM TYPE C LENGTH 3,
* Field: RECORD Record Number.
RECORD TYPE RSARECORD,
END OF _ty_s_SC_1.
TYPES:
_ty_t_SC_1 TYPE STANDARD TABLE OF _ty_s_SC_1
WITH NON-UNIQUE DEFAULT KEY.

*$*$ begin of global - insert your declaration only below this line *-*
... "insert your code here
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 25
*$*$ end of global - insert your declaration only before this line *-*

METHODS
start_routine
IMPORTING
request type rsrequest
datapackid type rsdatapid
EXPORTING
monitor type rstr_ty_t_monitors
CHANGING
SOURCE_PACKAGE type _ty_t_SC_1
RAISING
cx_rsrout_abort.
METHODS
inverse_start_routine
IMPORTING
i_th_fields_outbound TYPE rstran_t_field_inv
i_r_selset_outbound TYPE REF TO cl_rsmds_set
i_is_main_selection TYPE rs_bool
i_r_selset_outbound_complete TYPE REF TO cl_rsmds_set
i_r_universe_inbound TYPE REF TO cl_rsmds_universe
CHANGING
c_th_fields_inbound TYPE rstran_t_field_inv
c_r_selset_inbound TYPE REF TO cl_rsmds_set
c_exact TYPE rs_bool.
ENDCLASS. "routine DEFINITION

*$*$ begin of 2nd part global - insert your code only below this line *
... "insert your code here
*$*$ end of 2nd part global - insert your code only before this line *

*---------------------------------------------------------------------*
* CLASS routine IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform IMPLEMENTATION.

*----------------------------------------------------------------------*
* Method start_routine
*----------------------------------------------------------------------*
* Calculation of source package via start routine
*----------------------------------------------------------------------*
* <-> source package
*----------------------------------------------------------------------*
METHOD start_routine.
*=== Segments ===

FIELD-SYMBOLS:
<SOURCE_FIELDS> TYPE _ty_s_SC_1.

DATA:
MONITOR_REC TYPE rstmonitor.

*$*$ begin of routine - insert your code only below this line *-*
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 26
... "insert your code here
*-- fill table "MONITOR" with values of structure "MONITOR_REC"
*- to make monitor entries
... "to cancel the update process
* raise exception type CX_RSROUT_ABORT.


*$*$ end of routine - insert your code only before this line *-*
ENDMETHOD. "start_routine
*----------------------------------------------------------------------*
* Method inverse_start_routine
*----------------------------------------------------------------------*
*
* This subroutine needs to be implemented only for direct access
* (for better performance) and for the Report/Report Interface
* (drill through).
* The inverse routine should transform a projection and
* a selection for the target to a projection and a selection
* for the source, respectively.
* If the implementation remains empty all fields are filled and
* all values are selected.
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
METHOD inverse_start_routine.

*$*$ begin of inverse routine - insert your code only below this line*-*
... "insert your code here
*$*$ end of inverse routine - insert your code only before this line *-*

ENDMETHOD. "inverse_start_routine
ENDCLASS. "routine IMPLEMENTATION

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 27
Code After Start Routine:
Write the below code in code window, here I written Customer is equal to 000000C100 or C100, because
0CUSTOMER length is 10 and so if record will come with or without leading zeros the code will work.


PROGRAM trans_routine.


*---------------------------------------------------------------------*
* CLASS routine DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform DEFINITION.
PUBLIC SECTION.

* Attributs
DATA:
p_check_master_data_exist
TYPE RSODSOCHECKONLY READ-ONLY,
*- Instance for getting request runtime attributs;
* Available information: Refer to methods of
* interface 'if_rsbk_request_admintab_view'
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 28
p_r_request
TYPE REF TO if_rsbk_request_admintab_view READ-ONLY.

PRIVATE SECTION.

TYPE-POOLS: rsd, rstr.

* Rule specific types
TYPES:
BEGIN OF _ty_s_SC_1,
* Field: MATERIAL Material.
MATERIAL TYPE C LENGTH 18,
* Field: PLANT Plant.
PLANT TYPE C LENGTH 4,
* Field: CUSTOMER Customer.
CUSTOMER TYPE C LENGTH 10,
* Field: CALDAY Calendar Day.
CALDAY TYPE D,
* Field: AMOUNT Amount.
AMOUNT TYPE P LENGTH 9 DECIMALS 2,
* Field: CURRENCY.
CURRENCY TYPE C LENGTH 5,
* Field: QUANT_B Qty in OUn.
QUANT_B TYPE P LENGTH 9 DECIMALS 3,
* Field: BASE_UOM.
BASE_UOM TYPE C LENGTH 3,
* Field: RECORD Record Number.
RECORD TYPE RSARECORD,
END OF _ty_s_SC_1.
TYPES:
_ty_t_SC_1 TYPE STANDARD TABLE OF _ty_s_SC_1
WITH NON-UNIQUE DEFAULT KEY.

*$*$ begin of global - insert your declaration only below this line *-*
... "insert your code here
*$*$ end of global - insert your declaration only before this line *-*

METHODS
start_routine
IMPORTING
request type rsrequest
datapackid type rsdatapid
EXPORTING
monitor type rstr_ty_t_monitors
CHANGING
SOURCE_PACKAGE type _ty_t_SC_1
RAISING
cx_rsrout_abort.
METHODS
inverse_start_routine
IMPORTING
i_th_fields_outbound TYPE rstran_t_field_inv
i_r_selset_outbound TYPE REF TO cl_rsmds_set
i_is_main_selection TYPE rs_bool
i_r_selset_outbound_complete TYPE REF TO cl_rsmds_set
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 29
i_r_universe_inbound TYPE REF TO cl_rsmds_universe
CHANGING
c_th_fields_inbound TYPE rstran_t_field_inv
c_r_selset_inbound TYPE REF TO cl_rsmds_set
c_exact TYPE rs_bool.
ENDCLASS. "routine DEFINITION

*$*$ begin of 2nd part global - insert your code only below this line *
... "insert your code here
*$*$ end of 2nd part global - insert your code only before this line *

*---------------------------------------------------------------------*
* CLASS routine IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform IMPLEMENTATION.

*----------------------------------------------------------------------*
* Method start_routine
*----------------------------------------------------------------------*
* Calculation of source package via start routine
*----------------------------------------------------------------------*
* <-> source package
*----------------------------------------------------------------------*
METHOD start_routine.
*=== Segments ===

FIELD-SYMBOLS:
<SOURCE_FIELDS> TYPE _ty_s_SC_1.

DATA:
MONITOR_REC TYPE rstmonitor.

*$*$ begin of routine - insert your code only below this line *-*
... "insert your code here

************Begin of Start Rt**Surendra Kumar Reddy Koduru**************

DATA : WA_SOURCE_PACKAGE TYPE _ty_s_SC_1,
ZINDEX LIKE SY-TABIX.

LOOP AT SOURCE_PACKAGE INTO WA_SOURCE_PACKAGE.

CLEAR ZINDEX.

ZINDEX = SY-TABIX.

If WA_SOURCE_PACKAGE-CUSTOMER = '000000C100' OR
WA_SOURCE_PACKAGE-CUSTOMER = 'C100' OR
WA_SOURCE_PACKAGE-CUSTOMER = '000000C101' OR
WA_SOURCE_PACKAGE-CUSTOMER = 'C101' OR
WA_SOURCE_PACKAGE-CUSTOMER = '000000C102' OR
WA_SOURCE_PACKAGE-CUSTOMER = 'C102' OR
WA_SOURCE_PACKAGE-CUSTOMER = '000000C103' OR
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 30
WA_SOURCE_PACKAGE-CUSTOMER = 'C103'.

DELETE SOURCE_PACKAGE INDEX ZINDEX.
CONTINUE.
ENDIF.

ENDLOOP.
************End of Start Rt**Surendra Kumar Reddy Koduru****************


*-- fill table "MONITOR" with values of structure "MONITOR_REC"
*- to make monitor entries
... "to cancel the update process
* raise exception type CX_RSROUT_ABORT.


*$*$ end of routine - insert your code only before this line *-*
ENDMETHOD. "start_routine
*----------------------------------------------------------------------*
* Method inverse_start_routine
*----------------------------------------------------------------------*
*
* This subroutine needs to be implemented only for direct access
* (for better performance) and for the Report/Report Interface
* (drill through).
* The inverse routine should transform a projection and
* a selection for the target to a projection and a selection
* for the source, respectively.
* If the implementation remains empty all fields are filled and
* all values are selected.
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
METHOD inverse_start_routine.

*$*$ begin of inverse routine - insert your code only below this line*-*
... "insert your code here
*$*$ end of inverse routine - insert your code only before this line *-*

ENDMETHOD. "inverse_start_routine
ENDCLASS. "routine IMPLEMENTATION

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 31
After that Check the Syntax then Save, and come back.
So our code is correct and now we can Save, Activate the Transformations.

Data Loading:
After activation, load the data form Flat File.
We are working in BI 7.X, so there are only Transformations in between DataSource and InfoSource (in this
example). So in BI 7.X once you create Transformations and DTP, InfoPackage is only used to load the data
up to PSA, after that we need to use DTP (to load the data from PSA to Data Targets).
In below InfoPackage, see the Processing Tab and Data Targets Tab.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 32






How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 33
Monitor the Data Load:
After Load, go to Monitor, see the below screen.

See the number of records; in Flat file we have only Five records, so it is displaying only Five records.


How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 34
See the above screen, the data is loaded only up to PSA, from there we need to execute DTP to load the
data into InfoCube.




How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 35



How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 36
Request Details:
See the Request in InfoCube using Manage.



In above screen, we can find One request with 5 Transferred and 1 Added records.


How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 37
Display Data in InfoCube:
See the Data In the InfoCube using Display Data


See one single record which is Customer = C104, other records are deleted.
Data in PSA:


How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 38
Data in Source Flat File:

How to Debug Start Routine in Transformations:
Introduction:
How to Debug the Start Routine in Transformations, before this article you please reads/go through the
content called How to Write a Start Routine in Transformations. Here I taken one example i.e., needs to
delete the unwanted data in Start Routine of Transformations based on Customer number and we will debug
the same
Live Scenario:
We are loading the data to InfoCube, the Source system is Flat File (the logic, code and execution is same
for even any SAP Source systems also) and we need to delete the unwanted records/data in
Transformations at the time of data loads based on some Customer numbers. So in scenario we will how to
debug the start routine Transformations.
Change Start Routine:
Click on Change Start Routine like below.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 39
It opens the below code window like below, keep break point i.e. BREAK-POINT.


In above screen, you can see the code that we written in How to write Start Routine in
Transformations. Check the Syntax Check, Save and Activate the Transformations.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 40

Data Loading:
InfoPackage Settings:
After activation, load the data form Flat File.
We are working in BI 7.X, so there are only Transformations in between DataSource and InfoSource (in this
example). So in BI 7.X once you create Transformations and DTP, InfoPackage is only used to load the data
up to PSA, after that we need to use DTP (to load the data from PSA to Data Targets).
In below InfoPackage, see the Processing Tab and Data Targets Tab.




How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 41
After PSA Settings then open Schedule tab and then Start Data Loading.

Monitor the Data Load:
After Load, go to Monitor, see the below screen.


How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 42
See the number of records; in Flat file we have only five records, so it is displaying only five records.


DTP and Settings for Debug:
See the above screen, the data is loaded only up to PSA, from there we need to execute DTP to load the
data into InfoCube.
Here we are trying to Debug the Start Routine, so we need to set some settings in DTP, right click on DTP
and select Change and go to Execute Tab give Processing Mode is equal to Serially in the Dialog Process
(for Debugging).
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 43






How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 44


After above settings to DTP, then simulate.

Once you click on Simulate button then it will open the Debug screen, and it will go to our Code there we put
BREAK-POINT, then press F5 for line by line debug.
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 45
Debugger Window:

Press F5 till the Break Point indicator cross the line ZINDEX = SY-TABIX, after that double click on
SOURCE_PACKAGE, it will show in Right Side under Variable. See the below screen.



How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 46
Double click on SOURCE_PACKAGE , and then see the original data in that.

Then click on Desktop 1 and then Press F5 for 3 to 4 times and then again see the data in
SOURCE_PACKAGE.
First record is deleted, because it satisfied our condition in Start Routine i.e. Customer = C100, so it is
deleted.

So like that you click on Desktop 1 and then press F5, till it completes the 5 cycles i.e. it need to come out
from Loop condition. After 4
th
Cycle , if you see the data in SOURCE_PACKAGE, you can find only one
record.

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 47

After that Press F8 it will come out from Debug and show the below screen, in this way we can debug.

After the above Simulation, you remove the BREAK-POINT in Start Routine, Save and Activate the
Transformations.
And Execute the DTP, it will load the data to InfoCube and then check the Request and Data in InfoCube.
How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 48
Related Content
For all Articles and Blogs by Surendra Kumar Reddy, Please visit this URL
Using Customer Exit Variables in BW Reports Part - 5
Using Customer Exit Variables in BW Reports Part - 6
Using Customer Exit Variables in BW Reports: Part - 8
Using Customer Exit Variables in BW Reports: Part - 9
Using Customer Exit Variables in BW Reports: Part - 10
Using Customer Exit Variables in BW Reports: Part - 11
Using Customer Exit Variables in BW Reports: Part - 12
Using Customer Exit Variables in BW Reports: Part - 13
Using Customer Exit Variables in BW Reports: Part - 14
Using Customer Exit Variables in BW Reports: Part - 15
Using Customer Exit Variables in BW Reports: Part - 16
Using Customer Exit Variables in BW Reports: Part - 17
Using Customer Exit Variables in BW Reports: Part - 18
Using Text Variables with Customer Exits in Report Headings
Using Text Variables with Customer Exits in Report Headings
Variables of Type Customer Exit
For more information, visit the EDW homepage

How to Write Start Routine in Update Rules, Transformations and How to Debug the Routines
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
2011 SAP AG 49
Disclaimer and Liability Notice
This document may discuss sample coding or other information that does not include SAP official interfaces and therefore is not
supported by SAP. Changes made based on this information are not supported and can be overwritten during an upgrade.
SAP will not be held liable for any damages caused by using or misusing the information, code or methods suggested in this document,
and anyone using these methods does so at his/her own risk.
SAP offers no guarantees and assumes no responsibility or liability of any type with respect to the content of this technical article or
code sample, including any liability resulting from incompatibility between the content within this document and the materials and
services offered by SAP. You agree that you will not hold, or seek to hold, SAP responsible or liable with respect to the content of this
document.

You might also like