Skip to Content

SAP Landscape Transformation (SLT) is used to transfer (load/replicate) data from source to target system.

After configuration set-up in SLT, in HANA studio we can load or replicate data using Data Provisioning link. In Data provisioning window, we have the following options:

    DataProvisioning.jpg

   

Load: Starts an initial load of data from the source system. The procedure is a one-time event. After it is completed, further changes to the source system database will not be replicated. No data base triggers will be created. No logging of table occurs.

Replicate: It starts the initial load (if not done before) and also takes care of the delta changes. Database trigger and related logging table are created for each table in the source system.

Stop replication: Stops any current or replication process for a table. It removes the database trigger and related logging tables completely.

Suspend: Pauses a table from a running replication. The database trigger will not be deleted from the source system. The recording of changes will continue, and related information is stored in the related logging tables in the source system.

Resume: Restarts the replication for a suspended table. The previous suspended replication will be resumed (no new initial load required).

Jobs: Not explored yet on this option.

From the above available options, we do not have such option to do only delta loading.

In this document we will see how to do delta loading only (means initial load not required). I stolen this concept from SLT expert Tobias Koebler.

When we load or replicate table from Data provisioning window, an entry will be placed in RS_ORDER table of SLT schema. For every few seconds the Monitoring job checks in the SAP HANA system whether there are any new tasks, and if so, triggers the master control job and then deletes the processed entries from the same table.

So if we can place an entry in RS_ORDER table (an INSERT statement with little cautious) related to delta loading then our task is fully done. First let us understand the structure of this table.

RS_Table.jpg

SID                – Source system ID

CI_HOST        – Hostname of Source System

TABLENAME  – Table name

ORDERID      – Data Provisioning Order ID (not yet used)

ACTION        – Requested Data Provisioning Action

Insert statement for RS_ORDER table would look like

INSERT INTO SCHEMA_NAME.RS_ORDER VALUES (‘SID’,’CI_HOST’,’TABLENAME’,ORDERID,’ACTION’);

SAP ECC has been used as source. To see this in action, let us take T009 table as example.

Values for  SID and CI_HOST can be found in Data provisioning window. OrderID can always be set to zero(0) as this is not used.

Value for Action depends on what type of data provisioning you want to do.

  SID.jpg

Steps Involved in only Delta loading are:

  1. Create an empty table with no data in it
  2. Activate the Trigger and Logging information
  3. Activate the Replication process

All the above steps are performed with the help of INSERT statements only

Step 1. Create an empty table with no data in it ==>  ACTION – T

ACTION parameter used will be “T” which creates an empty table. Insert statement would be:

INSERT INTO ECCDATA.RS_ORDER VALUES (‘EH5′,’SAPEHP5_EH5_65′,’T009′,0,’T‘);

Execute the above SQL in SQLConsole of HANA studio. Now you can see T009 table with Action as Create and Status as Executed.

  T009_Create.jpg

We can confirm the table creation in SLT schema with no data in it. Also the entry which we created in RS_ORDER table will be deleted as it removes the processed entries.

  Empty_Data.jpg

Step2. Activate Triggers and Logging tables ==>  ACTION – M

ACTION parameter used will be “M” which activates the Trigger and logging information.

INSERT INTO ECCDATA.RS_ORDER VALUES (‘EH5′,’SAPEHP5_EH5_65′,’T009′,0,’M‘);

Now the Action will be changed to ‘Record Only’ and Status to ‘In Process’. Entry in RS_ORDER table will be removed.

  Trigger_Activation.jpg

Step 3. Activate Delta recording ==>  ACTION – Q

ACTION parameter used will be “Q” which activates the Delta recording without doing an initial load.

INSERT INTO ECCDATA.RS_ORDER VALUES (‘EH5′,’SAPEHP5_EH5_65′,’T009′,0,’Q‘);

Now the Action will be changed to ‘Replicate Only’ and Status remains ‘In Process’. Entry in RS_ORDER table will be removed.

  Replication_Start.jpg

From now any changes to table T009 in ECC will be captured in HANA. Now do the data preview on T009.

  Empty_Data.jpg

We see that there is no data. It means that there are no changes to table T009 yet, else you find delta records.

Now let us modify the source table in ECC. Changing ANZBP ‘00‘ to ‘1‘ for PERIV ‘EM’ as shown below.

  Change_Data.jpg

Again do the Data preview for T009 in HANA studio. This time you definitely see the delta record

  Delta_record.jpg

Though in Data Provisioning window we have few options, behind this window we can do little more than what data provisioning UI provides.

Disclaimer: This is only work-around and I never implemented this in the Production environment. Before you implement, you understand and test this thoroughly as neither SAP nor me would be responsible for any abnormal behavior.

Thank You for your time

To report this post you need to login first.

47 Comments

You must be Logged on to comment or reply to a post.

  1. Krishna Tangudu

    Thank you very much Raj.

    Was thinking in similar lines of approach to load “Delta” which i posted in forum to check if any one has tried to know their inputs and in short time saw your blog.

    Your blog saved some effort for me.

    Regards,

    Krishna Tangudu

    (0) 
  2. Jomy Joy

    Hi Raj,

    Few questions:

    a) In which scenarios do we need to perform Delta Loading because

        a.1 When something changes on source system table, we anyways needs to drop and reload.

        a.2 And normally just replicate works as Delta Only, right ?

    If you can elaborate on this need then it would really nice.

    b) Also do we always need to follow these statements

        INSERT INTO ECCDATA.RS_ORDER VALUES ‘EH5′,’SAPEHP5_EH5_65′,’T009′,0,’T‘);

       INSERT INTO ECCDATA.RS_ORDER VALUES ‘EH5′,’SAPEHP5_EH5_65′,’T009′,0,’M‘);

      INSERT INTO ECCDATA.RS_ORDER VALUES ‘EH5′,’SAPEHP5_EH5_65′,’T009′,0,’Q‘);

    OR cant we have just have the last Insert statement alone ?

       

    Thanks,

    Jomy

    (0) 
    1. Krishna Tangudu

      Hi Jomy,

      The above process told by Raj can be helpful in the following scenarios:

      1) If we have any problems with “Delta” load. And you are correcting it and you do not want to reload the history data again for it. Something like “Init without Data Transfer” scenario in BW

      2) If you want to use SLT for “Delta” loading and You may use BODS or using HDBSQL with Procedures to load the “History” data

      3) There can be many more lets wait for the SCN Experts to comment on 🙂

      Regarding the order of insert statements, yes you need to follow that order, Please find the below link for more details:

      How to start Data Provisioning without using the Data Provisioning UI

      Action M – Activate Delta Recording

      Description
      Activates the delta recording on the source system (logging tables and triggers are created)
      Action is not available in the HANA data provisioning UI.

      Next Actions
      Action T – Create Table
      Action Q – Start Replicate Process

      Regards,

      Krishna Tangudu

      (0) 
      1. Jomy Joy

        Hi Krishna,

        Thanks for your explanation.

        I agree to that fact that this method can be useful when we have problems in delta loading maybe from 1st of December. So, In this case we need to delete data from 1st of Decmber till data in HANA table and apply this mechanism for corrective delta data.

        For this to happen we need to

          a. First empty the table and hence we will loose history data .

          b. And how to load data from specifically from 1st of December till Date

        On the other hand can;t we just Suspend replication and delete those data from 1st of December till Date and once data is corrected, Resume the replication.

        Would like to know your view on the same.

        Thanks & regards,

        Jomy

        (0) 
        1. Krishna Tangudu

          Hi Jomy,

          My views:

          1) We can suspend the replication from 1st december , only if you know or except the faulty delta before hand, or else you cannot suspend before hand .

          2) To load the data from 1st december till date, you can use filters right? or if the data is less, we can run a full load and then initialize delta in this way.

          Regards,

          Krishna Tangudu

          (0) 
    2. Raj K Post author

      Hi Jomy,

      For only delta loading all the three Insert statements required in order as defined.

      Regarding when to use only delta loading, Krishna explained those scenarios. Thanks Krishna.

      There might be other scenarios too which I too might be unaware.

      Regards

      Raj

      (0) 
  3. Krishna Tangudu

    Just a doubt about disclaimer:

    “Disclaimer: This is only work-around and I never implemented this in the Production environment. Before you implement, you understand and test this thoroughly as neither SAP nor me would be responsible for any abnormal behavior.”


    Tobias Koebler Can you share your thoughts if this is supported by SAP or it is a safe method to activate the “Delta” in the production system?


    Regards,

    Krishna Tangudu

    (0) 
    1. Tobias Koebler

      Hi,

      in general, the usual functions should be used. In some cases it is required to use the expert funcitons, e.g. for maintenance events like imports of SP’s. For this special events this is the only way to avoid a complete new initial load. These expert functions are planned to be part of transaction LTRC on the SLT server with SP06 (planned end of January). So you can directly execute it there.

      Best,

      Tobias

      (0) 
  4. Antony Jerald J

    Hi Raj Kumar,

    It’s really a pleasant document shared with us and thanks for the same, Really useful:-)

    We had recently upgraded our hana db to version 70 which supports real time replication for BW on hana too.  I would like to implement some real time scenario for BW models available in hana database.  Got stuck in with how to proceed with such!!! Would you be able to give/share some links or document for which provides sense of knowledge of Real time replication using SLT in BW with hana?  How does it exactly be modeled on tables?  Does it brought to hana db from ECC system(currently ECC is on oracle)?

    Regards,

    Antony Jerald.

    (0) 
  5. vamsi Kondapaneni

    Hi Raj,

    Had 2 Queries on the resume replication option. It states as below, Highlighted the statement in question.

    1) Replicate: It starts the initial load (if not done before) and also takes care of the delta changes. Database trigger and related logging table are created for each table in the source system.

    From the above statement its fine if the initial load is not done before. Whats the case if the Initial load has been done before.

    2) As per Tobias  blog, the sequence he has mentioned

    •   ACTION – M
    • ACTION – T
    • ACTION – Q


    But you have followed ACTION T–>ACTION M –> ACTION Q? Does it behave any differently though i know Action T is just creating a table? Just curious if it behaves any differently?


    Thanks for the helpful information. Helps understanding the tool much easier

    (0) 
    1. Raj K Post author

      Hi Vamsi,

      1. If the initial load has done before and if you click on Replicate option then only delta changes will be brought from source to HANA.

      2. It does not behave differently.

      Regards

      Raj

      (0) 
      1. Joydeep Gupta

        Hi Raj,

        How you are managing this in Production HANA environment?The Modelers may require the full data for a table,in that case how will we provide them?

        I want a process where I need to delete the SLT triggers because I need to carry out ECC Upgrade.Then after upgrade is completed I will start the replication of the tables without doing the initial load.But if i follow the above process I will not get the historical data which my modeler will not accept.Really cannot find a workaround…

        (0) 
        1. Raj K Post author

          Hi Joy,

          If you want full data then it is not the right choice for you.

          If you want to temporarily hold the triggers then please choose “Suspend” option from the Data provisioning screen(old data remains) and later you can replicate the data whenever you want by using “Resume” option. In this case your old data remains and by “Resume” option you can bring only data changes.

          Regards

          Raj

          (0) 
        2. Tobias Koebler

          Hey Joy,

          have you tried this approach:

          1.) SLT: Stop the master job: TX: LTR -> Your configuration -> Stop Master Job

          2.) Source System: Delete the relevant trigger: TX: IUUC_REMOTE -> Expert Functions -> Delete Trigger -> Select the relevant tables

          3.) Execute the ECC Upgrade

          4.) SLT: Reset Trigger Flags: TX: LTRC -> Your configuration -> Tab Expert Functions -> Button Reset Trigger and Logging Table Status -> Select your relevant tables -> Check Reset Trigger created -> execute

          5.) SLT: ActivateTrigger Again: TX: LTRC -> Your configuration -> Tab Processing Steps -> Button Activate DB Trigger -> Select your relevant table -> execute

          6.) SLT: Restart the master job: TX: LTR -> Your configuration -> Restart Master Job

          Best,

          Tobias

          (0) 
          1. Jomy Joy

            Hi Tobias,

            We need to do ECC Upgrade and hence this answer might be really useful to us.

            Will this avoid us to do Initial Load ?

            Hence do we need to do anything else on Data Provisioning UI such resume replication OR will it start automatically after the start of Master Job.

            Thanks & regards,

            Jomy

            (0) 
            1. Tobias Koebler

              You do not need a initial load if you can ensure that no record was changed during the upgrade. If you only stopped the amster jobs at tx: LTRC then you only need to restart it. If you have in addition supsend the table indiidually, you have to resume them afterwards.

              Best,
              Tobias

              (0) 

Leave a Reply