Skip to Content

Latest News

June 15, 2015:  Read about SAP HANA Transport for ABAP (HTA) which is the successor of HTC.

This document gives you a compact overview of the SAP HANA Transport Container (HTC) and demonstrates how to use it. You can also access a related video here.

What is the SAP HANA Transport Container all about?

With SAP NetWeaver 7.4 numerous SAP HANA related optimizations are provided which enable developers to easily leverage of the power of SAP HANA in ABAP-based applications. ABAP for SAP HANA applications – meaning applications containing ABAP and HANA development entities – can now be easily developed, updated, corrected and enhanced (Access to diverse ABAP for SAP HANA tutorials).
Well, this means that – as usually done for reasons of quality assurance – the different ABAP and HANA development entities have to be transported through the system landscape; typically from the development system to the consolidation/quality system, and then to the productive system.
Here comes the SAP HANA Transport Container (HTC) in action!
HTC is an ABAP development object which is required to integrate HANA repository content into the standard Change and Transport System (CTS). As of AS ABAP 7.4, HTC is seamlessly integrated into the Transport Organizer of AS ABAP and so integrating the HANA repository content into CTS. It ensures an efficient delivery process of applications built out of ABAP and HANA content by means of the proven ABAP transport mechanism.
In short, ABAP for SAP HANA applications are transported as normal as any classic ABAP-based application through the system landscape.

Let’s see how it works!

Prerequisites

  • SAP HANA Studio is installed and running
  • ABAP Development Tools for SAP NetWeaver is installed and running
  • AS ABAP 7.4 runs on SAP HANA database
  • The connection to the ABAP backend is configured in the ABAP perspective
  • The connection to the SAP HANA database is configured in the Modeler perspective

Assumption

A well-structured package hierarchy (main packages and sub-packages) has been defined for your project. The SAP HANA entities will be / are contained in those Packages.
Info 1: Package system-local is meant for local objects which are not intended to be transported. It means that all its sub-packages are also by definition not transportable and so cannot be attached to a delivery unit. It means that SAP HANA entities contained in a Package below system-local cannot be transported between SAP systems.

Procedure Overview

The picture below shows the main steps involved in the whole process. The development of a demo application – ABAP and HANA content – is not part of this demonstration in order to plainly focus on HTC. (Access diverse ABAP for SAP HANA tutorials here).
HTC_ProcedureOverview.png

Step-by-Step Procedure

Step 1: Create a Delivery Unit (DU) and Assign the relevant packages

Info 2: SAP HANA Delivery Units are application-specific and are used to group and transport repository content. Find more information about DUs in the Help under menu path Help > Help contents.
  1. Start the SAP HANA Studio and go to the Modeler perspective by selecting menu path Window > Open Perspective > Others … and choosing Modeler from the opened dialog.
    Step_1.1.png
  2. Open the Quick Launch view of the Modeler perspective – if not already opened – by selecting menu path Help > Quick Launch
  3. Select the relevant system – if not yet selected – by clicking on the Select System… button located in the upper area of the view.
    Note that the system connection must have been previously added to the Modeler perspective.
    Step_1.3.png
  4. Now, click on the link Delivery Units… under the Setup section area
    Click on the Create… button in the upper right area of the Delivery Units dialog.
    Maintain the required information in the New Delivery Unit dialog and press on OK.
    Detailed information about the different DU properties is available in the Help. You can for example open the integrated Help window by clicking on the Help icon located bottom left on the dialog.
    Step_1.4.png
  5. Assign the relevant package(s) to the DU.
    In case the packages to be assigned to the DU already exist and are not yet assigned to another DU, then just select the relevant DU and click on the Add button in the lower right area.
    You can now select the relevant packages (zdemo in my case) and confirm the action.
    If the sub-packages of the selected node have to be selected too, then make sure the appropriate checkbox is checked.
    Step_1.5.png

    Other ways to assign a package to a DU:

    • (a) The package is not yet created: In this case you just have to select the appropriate value in the Delivery Unit dropdown field in the New Package dialog.
      Step_1.5a.png
    • (b) The package already exists and is already assigned to another DU: The easiest way is to maintain the new DU name is to select the relevant package and change the DU value in its Properties pane.
    • (c) The package exists, but is not yet assigned to a DU (like in the present example): The previous handling is also applicable here
      Step_1.5b.png

Step 2: Create a HANA Transport Container (HTC)

  1. Now switch to the ABAP perspective by selecting menu path Window > Open Perspective > Others…, then ABAP and confirming the opened dialog.
  2. Select the package to which the DU belongs to, open its context menu (by right-clicking on it) and select New > Other ABAP Repository Objects and then select entry Others > HANA Transport Container (you can filter for ‘transport’) and press on Next.
    The New HANATransport Container dialog is now opened.
  3. Enter the name of the DU in the field HANA Delivery Unit Name and press on Next.
    The name of the delivery unit will automatically be assigned to the new HTC object (e.g. zepm_oia_demo in my case).
    Info 3: There is a one-to-one relationship between HANA Transport Container objects and Delivery Units.
    Tip 1: Whenever available, you can use the Content Assist functionality of a given field by setting the cursor in it and pressing Ctrl+Space
  4. Now select the appropriate Transport Request and press on Finish.
    Step_2.4.png
    The new HTC has now been successfully created and you can have a look at its content (so-called Snapshot) on the Content tab.
  5. Activate the new object
    Step_2.5.png
    Info 4: HANA Transport Container objects are not updated automatically. The update of the  snapshot (content) of a given HTC must be triggered manulay by developers anytime the content of the underlying delivery unit has been modified.
    This is done by executing the function Take a Snapshot and Save on the Overview pane of the relevant HANA Tranport Ccontainer object.
    It is strongly recommended to execute this function before releasing a transport request.

Step 3: Release the Transport Request in AS ABAP

Assumption: you are ready with your development tasks.
  1. Open a SAPGUI window for the relevant project (Ctrl+6)
  2. Go to Transport Organizer (SE09 or SE01) and display the transport request  and its tasks.
  3. Check the request consistency and release the tasks and then the transport request.
  4. Check the Export result in the Logs.
    Step_3.3.png
    You can later also check whether the import in the follow-on SAP HANA system was successful, by checking the transport logs under the step ‘Execution of programs after import (XPRA)’.

Step 4: Activate the HANA Repository Content in Target Systems

Info 5: About the automatic activation of imported HANA content
The automatic activation of imported HANA content is controlled in the AS ABAP via the entries in the table SNHI_DUP_PREWORK, which contains two fields SOFTWARE_COMPONENT and PREWORK_DONE. This table is used to switch on/off the automatic activation. It means a DU – its content more precisely – is automatically activated after its import, if the field PREWORK_DONE is set (‘X’) for the software component to which the corresponding HTC belongs to.

A maintenance view is available for table SNHI_DUP_PREWORK in transaction SM30.

E.g. Create an entry with ‘HOME’ as software component and ‘X’ as prework done if the HTC belongs to software component HOME and the DU should be activated in the SAP HANA repository during import.

The prework entries are required in all relevant systems in the landscape. Table SNHI_DUP_PREWORK is a customizing table and its customizing data can be maintained in each system manualy or transported through the system landscape using Customizing Request.

The PREWORK_DONE field should only be set in a given ABAP system if the schema mapping has been configured in the underlying SAP HANA database.
Tip 2: You can you find the software component for which you have to maintain an entry in the table SNHI_DUP_PREWORK for the automatic activation by clicking on the NHDU object in the transport request. From there you can get to the package and then find out the software component there. In most cases, customers shall maintain an enttry for the software component HOME. For partners or large customers, it may also be for the corresponding namespace prefix.
Info 6: About the manual activation of HANA objects
If the automatic activation is not switched on, then your database user must be granted with special privileges in order to perform the activation manually and even to be able to see the inactive objects on SAP HANA. For example the user <SID>ADM can always perform these tasks as it is the one writing the inactive objects in the database.
You need to trigger the activation manually if the PREWORK_DONE field is not set for the software component your HTC belongs to in your target system. How to proceed in this case is described below.
  1. Go to the Quick Launch view of the f the Modeler perspective and select the relevant target system. (Refer to Step1->1&2)
    The relevant target system connection must have previously been added to the Modeler perspective.
  2. Click on link Activate… located in the Content area of the view.
    A dialog will open showing the inactive objects available in the system.
  3. Now select the relevant repository objects and activate them.
    Step_4.png
Don’t be irritated not to see the objects that were used in steps 1 to 3. The process is the same as shown in the screenshot above.

Additional Step: Update HANA Content already transported into Target systems

Once a HANA Transport Container has been transported into target systems, it is usual that the content of the underlying Delivery Unit gets modified in the source system: New objects (e.g. packages and HANA entities) are added or existing ones are modified.
The main question here is: How to get these updates from the source system into the target systems?
In such a scenario, you do not have to create a new HANA Transport Container object – or delete and re-create one. You simply have to update the existing one and then transport it.
How do you do this?
Do as followed:
  1. Go to the ABAP perspective and open the relevant ABAP project
  2. Open the HANA Transport Container related to the modified Delivery Unit
    PS: Do not forget: Both have the same name.
  3. Execute the function Take a Snapshot and Save (press on the link) on the Overview pane (Refere to the screenshots in Step 2.5).  The HTC content (aka Snapshot) will be updated.
  4. Assign a transport request and confirm
  5. Activate the updated object

The updated HTC is now ready to be transported. You can check the update on the Content pane.

As already mentioned in Step 2.5, do not forget that a HANA Trasnport Container is not updated automatically. In order to avoid inconsistencies in the target systems, it is strongly recommended to take a Snapshot before releasing the transport request.

Summary

This was a short introduction on the HANA Transporter Container (HTC) showing how easy it is to transport applications built out of ABAP and HANA content – so-called ABAP for SAP HANA applications –  between SAP systems!

Related Content

To report this post you need to login first.

19 Comments

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

  1. John K

    Hi,

    Very useful information. Here i have one question, My company don’t have HANA, so can you tell me how to learn and connect the HANA with ecc.

    Note – I’m using HANA trail version

    Regards,

    John.

    (0) 
  2. Mickael COCQUEREL

    Hello,

    what is the behavior of HANA Transport Container when Change Recording is enabled ? I would expect that only objects that belong to released changes are included into the transport order.

    Second question, what exactly happens when clicking on button “Take a Snapshot and Save” ? I would expect that it is only refreshing the list of objects to be transported (depending on newly released changes) and then the real export is only happening when releasing the transport.

    (0) 
    1. Thomas Gauweiler

      Hi Michael,

      as the developement objects stored in an HTC get manipulated directly with the HANA studio on the HANA side, the HTC on the ABAP is not filled until the ABAP developer presses the “take a snapshot and save” (which gets the snapshot from the HANA and saves it into the HTC on the ABAP side). During this step the whole package is tranferred, not only the changed ones. The HTC must always be complete because during import the all develeopment objects in the HANA package that are not in the HTC would be deleted.

      So for an ABAP developer this is quite different to the change recording of other development objects und you have to take much more care that your transport is complete.

      Best Refards, Thomas

      (0) 
      1. Mickael COCQUEREL

        Hi Thomas,

        My question was referring to the “Change Recording” option on HANA side that was introduced in SPS07 (see https://www.youtube.com/watch?v=zWqZ2JHpQcQ&list=FLpbK10lB41vqFb4B659SAHA&index=1 ). Since HANA SPS08, it is also possible to transport change only and not the full DU when using non-ABAP CTS+ transport. I didn’t find any information about HTC behavior when HANA change recording is activated. I was wondering if it is possible to take advantage of HANA change recording together with HTC that allow to transport related ABAP objects at the same time.

        Regards,

        Michaël

        (0) 
        1. Carine Tchoutouo Djomo Post author

          Hi Michael,

          the “Change Recording” option has no impact on the HTC’s behaviour. With HTC, the complete content of the assigned active DU is transported.

          Just as additional  information:

          To avoid inconsistent state of the DU in your target systems, it is not recommended to transport the same DU mit HTC and then later mit CTS+ (with Change Recording).

          HTC should always be used in use cases where ABAP and SAP HANA are closely coupled.

          Starting with SP05, the recommended way for integrating HANA entities in ABAP is using  the Core Data Services (CDS) Views and the ABAP Managed Database Procedures (AMDP).

          When using CDS views and AMDPs, HTC is no longer needed and the ABAP server is solely responsible for the Lifecycle Mgmt of HANA entities (creation, update, …)

          Kind regards,

          Carine

          ABAP for SAP HANA Reference Scenario

          (0) 
  3. Ashwini Chaturvedi

    Hi Carine,

    Thanks for this nice blog. How do we transport HANA content if HANA DB is secondary DB ? I read somewhere in standard SAP material that says – After transporting data using HTC, data will be unpacked in target system only if HDB is primary DB.

    (0) 
    1. Daniel Kordes

      Hi Ashwini,

      general overview of HANA transport options can be found inOverview of SAP HANA Content Transport Management

      So in your case you can either use CTS+ to transport HANA objects, see http://scn.sap.com/docs/DOC-8576#HANA or you can use HALM if HANA is used independent of any AS ABAP and has different landscape. See Demonstration of Change Management in SAP HANA and SAP HANA Application Lifecycle Management (HALM) | SAP HANA

      Regards,
      Daniel

      (0) 
    2. Nicholas Chang

      Hi Ashwini & Daniel Kordes

      Do you mind to tell where you got this info “After transporting data using HTC, data will be unpacked in target system only if HDB is primary DB.” as i’m very much interested to know.

      Besides, where exactly the data is unpacked in target system? I couldn’t locate them in file system /content, /autocontent and etc….

      Thanks,

      Nicholas Chang

      (0) 
      1. Daniel Kordes

        Hi Nicholas,

        for the first question I can not answer it.

        With regards to the second question, unpacked might be the wrong wording. HTC is not about unpacking but about import and activation of the HANA content. If HTC is used, HANA content can only be imported and activated into HANA if HANA is primary DB. (ABAP on HANA).

        HTC is a transport object in AS ABAP containing HANA repository objects.

        Hope this helps.

        Best regards

        Daniel Kordes

        (0) 
        1. Nicholas Chang

          Hi Daniel Kordes

          Thanks! yeah, i knew how HTC works.. but i would like to dig further how exactly hana content *.tgz got imported to target system via STMS (tp & R3trans).

          eg: How *.tgz extracted and imported to HANA DB. I try to switch on traces but couldn;t find any. Which & what command it used to import and create HTC content (eg: package, procedures and etc) to target HDB?

          Lars Breddemann would you able to shed some light here?

          Thanks,

          Nicholas Chang

          (0) 
          1. Daniel Kordes

            Hi Nicholas,

            the import into HANA repository is done from AS ABAP using a stored procedure in HANA. Therefore it only works if HANA is primary DB. The tgz itself is handed over as binary object to the stored procedure. Then HANA repository is working on this data, but I do not know any details. As far as I know it is the same as if you import a DU(tgz) with HANA Studio.

            Regards,

            Daniel

            (0) 
  4. Kim Maren Ekrutt

    Hi Carine, hi all,

    thanks for your detailed “How to” this helped a lot. Let me just add that you really have to add HOME in table SNHI_DUP_PREWORK as Software component if you wish to have an automatic activation in next HANA system.

    This is where we struggled a bit before it worked with HTC.

    Best regards

    Kim

    (0) 

Leave a Reply