Professional Documents
Culture Documents
Reading Sample
As an ABAP developer you will want to use views and database
procedures you created in SAP HANA Studio in ABAP. In this samp-
le chapter, you will learn how to consistently transport native SAP
HANA development objects, via the Change and Transport System
Contents
Index
The Authors
www.sap-press.com/3973
ABAP developers want to use views and database procedures
Chapter 5
Chapter 4 illustrated how you can create analytical models (views) and
database procedures using SAP HANA Studio. Now we’ll explain how
you can call these native SAP HANA objects from ABAP.
We’ll also discuss how you can transport ABAP programs that use native
SAP HANA objects consistently in your system landscape.
This section describes how to access the views from ABAP. In this con- Access with
text, we have to differentiate between ABAP Release 7.4 and earlier ver- ABAP 7.4 and
earlier releases
sions. When working with earlier releases, only Native SQL can be used
for access; this will be described briefly in Section 5.1.1. As of ABAP 7.4,
you can import the views from the SAP HANA repository into the ABAP
Data Dictionary (DDIC) and then access them using Open SQL
(explained in detail in Section 5.1.2 and in Section 5.1.3). In the last sec-
tion, you’ll find some recommendations, tips, and tricks for SAP HANA
view modeling.
231
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Analytic Views 5.1
232 233
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Analytic Views 5.1
Check whether a When the view is created, the system checks whether it can be imported As you learned in Chapter 3, Section 3.1.3, SQL data types and DDIC Map data types
view can be into the DDIC. Note that not all SAP HANA data types are supported in types can’t always be mapped uniquely. However, the data type is deci-
imported
ABAP. When defining calculated attributes or accessing tables from sive for the correct handling of operations (e.g., the calculation of differ-
views that weren’t created using the DDIC, such potentially unsup- ences for a date). For this reason, the developer must manually map the
ported data types may appear. In this case, an error occurs when creat- correct ABAP data type.
ing the external view, and the view can’t be imported. The supported
Table 5.1 shows the possible data type mappings for some columns of
data types are listed in Table 5.1 later in this section and are described in
the AT_FLIGHT sample view.
Chapter 3, Section 3.1.3.
View structure and After successfully importing the SAP HANA view into the DDIC, the edi- Column SQL Data Type Possible Dictionary Types
synchronization tor displays the structure of the view together with the data type map- CARRID NVARCHAR(3) CHAR(3), NUMC(3), SSTR, CLNT, UNIT, CUKY
ping (Figure 5.2). In addition, you can use the Synchronize button to FLDATE NVARCHAR(8) CHAR(8), NUMC(8), SSTR, DATS
synchronize the view after changing the structure of the corresponding CARRNAME NVARCHAR(20) CHAR(20), NUMC(20), SSTR
view in SAP HANA Studio. Therefore, if you add attributes to the output
structure, delete attributes, or change data types, you need to synchro- Table 5.1 Possible Type Mappings
The procedure for defining external views based on an analytic or a cal- Requirements
culation view is identical to the procedure used for an attribute view.
Note that external views in the DDIC currently don’t have a reference to
the particular view type; that is, they are just pointing to an arbitrary
column view in SAP HANA. The only prerequisite is that the view is
defined via the SAP HANA repository. Column views, which solely exist
in the database catalog (e.g., generated programmatically), can’t be
imported into the DDIC.
Figure 5.2 External ABAP Data Dictionary View Based on an Attribute View
234 235
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Analytic Views 5.1
Access via Listing 5.2 shows how the access to the external view from Figure 5.2 is 5.1.4 Recommendations
Open SQL implemented. From a functional perspective, this corresponds to the
This section concludes with some recommendations for using SAP
ADBC access variant from Listing 5.1. As you can see, the ABAP code
HANA views. These are limited to functional recommendations. Tools
required for access is significantly shorter and corresponds to the access
and recommendations for performance analysis are discussed in Chap-
for a standard DDIC view.
ter 7 and Chapter 14, where we’ll also deal with design aspects such as
REPORT ZR_A4H_CHAPTER4_VIEW_OPEN. naming conventions.
DATA: wa TYPE zev_a4h_flights. If the scope of functions provided by standard DDIC views is sufficient Different view
" Read data from external view types
SELECT carrid connid fldate route
for your purposes and you’ve used these views in the past, there’s no
FROM zev_a4h_flights need to change your application using native SAP HANA views. The next
INTO CORRESPONDING FIELDS OF wa. chapter presents Core Data Services (CDS) views, which enable you to
WRITE: / wa-carrid, wa-connid, wa-fldate, wa-route.
ENDSELECT. define complex views with calculated fields directly in ABAP.
Listing 5.2 Accessing an External View via Open SQL The modeled SAP HANA views provide simple access for special analyt-
ical scenarios. The following questions can help to determine the best
Possible Runtime Errors When Accessing External Views view type in SAP HANA for your scenario:
When using Open SQL to access an external view, an SQL query is executed 왘 Are you dealing with master data views that might be extended by cal-
for the corresponding column view in SAP HANA. The same rules apply as culated attributes? In this case, you should start with an attribute
when accessing the view using Native SQL.
view.
As explained in Chapter 4, Section 4.4.4, you must consider certain limita-
tions when accessing analytic views via SQL. An unsupported query via 왘 Are you performing an analysis of transaction data based on a star
Open SQL leads to a runtime error. Because these errors rarely occur when schema? In this case, you should choose an analytic view and imple-
ment the dimensions as attribute views.
236 237
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Native Procedures with ABAP 5.2
왘 Do you have to combine or adapt the results from different tables and often an indication of a problem in the join modeling. For currency con-
SAP HANA views? In this case, you should use the modeled calcula- versions, a missing client context may result in an error.
tion view. If the modeled variant isn’t sufficient for some part of your
When accessing an SAP HANA view from ABAP using Native SQL, you
scenario, you can use a SQLScript-based implementation for that part.
should pass the name of the view (via the tab_name_for_trace parame-
Client When modeling views, you should make sure that the client field is han- ter as shown in Listing 5.1 or via the SET_TABLE_NAME_FOR_TRACE
handling dled correctly. In particular, it’s advisable to add the client field as the method). This facilitates the error analysis in a support scenario.
first field of the view and to make sure that the client is included in the
join definition. In most cases, the Session Client configuration value is
the correct setting for views based on ABAP tables from the same sys- 5.2 Integrating Native Procedures with ABAP
tem. If tables are replicated from a different system, it may be useful to
use a fixed value for the client. Cross-client access is useful only in rare In Chapter 4, you learned what SQLScript is and how you can use it for
cases. implementing database procedures. Now we want to explain how to call
database procedures from ABAP. You have two options:
Schema You should always choose the correct default schema for analytic views
mapping and calculation views. This schema is taken into account in particular for 왘 Native SQL and ADBC (see also Chapter 3)
the relevant Customizing for conversions, that is, if no special setting 왘 Database procedure proxies
was configured for the attribute. Specifying the correct default schema is
As of ABAP Release 7.0 and SAP Kernel 7.20, it’s possible to use ADBC Requirements
even more important when dealing with the implemented variant of cal-
to call database procedures in SAP HANA. Database procedure proxies
culation views.
are available as of Release 7.4 and require that SAP HANA be used as the
Define external External views should only be defined for SAP HANA views that will be primary database. Moreover, database procedure proxies only support
views used for access via ABAP because these views have to be synchronized the XML file format (.procedure), which is actually outdated.
manually after changing the corresponding structures. Moreover, you
should define a maximum of one external view for each SAP HANA
view. 5.2.1 Access via Native SQL
As already described in Chapter 4, Section 4.3, the system generates dif-
Troubleshooting If error messages are displayed when activating an SAP HANA view, the
ferent runtime objects in the _SYS_BIC schema when activating a data-
error text usually includes information on the root cause. In some cases,
base procedure. It also generates a public synonym. Here, you can use
however, you may need some experience to interpret the error message
Native SQL to access the database procedure from ABAP.
correctly. For this reason, we recommend following a heuristic
approach to error analysis. As a first step, you should make sure that you However, the use of Native SQL to call a database procedure is relatively Disadvantages of
mark at least one field of an attribute view as a key field and that you time-consuming and prone to errors. Later in this section, you’ll see Native SQL
define at least one key figure for an analytic view. If your view contains how you can only use temporary tables to exchange tabular input and
calculated attributes, you should check if you correctly defined the cor- output parameters with the database procedure. Furthermore, SAP Net-
responding expression. Weaver AS ABAP doesn’t detect syntax errors in Native SQL statements
until runtime. For more information, refer to the explanations provided
If you come to a dead end during error analysis, you can try to remove
in Chapter 3.
the corresponding attribute (e.g., in a copy of the view). If an error mes-
sage or unexpected data appears when calling the Data Preview, this is
238 239
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Native Procedures with ABAP 5.2
Examples We’ll now use several examples to provide a detailed description of how inout = cl_sql_statement=>c_param_out ).
to use Native SQL to access database procedures. First, we’ll consider a
" call procedure
database procedure that determines the name of an airline on the basis lo_sql_statement->execute_procedure(
of the ID. For the remaining examples, we’ll revert to the database pro- '"test.a4h.book.chapter04::DETERMINE_CARRNAME"' ).
cedures from Chapter 4.
CATCH cx_sql_exception INTO DATA(lo_ex).
" error handling
WRITE: | { lo_ex->get_text( ) } |.
Example 1: Calling a Database Procedure ENDTRY.
If you use ADBC to call a database procedure, the CL_SQL_STATEMENT
WRITE: / lv_carrname.
class makes the EXECUTE_PROCEDURE method available. You can use this
Listing 5.3 Using Native SQL to Call a Database Procedure
as long as a database procedure doesn’t have a tabular input/output
parameter.
First, the program generates an instance of the CL_SQL_STATEMENT class. Explanation of
Sample call Program ZR_A4H_CHAPTER5_CARRNAME_ADBC shows an example of Then, it calls the SET_PARAM method to bind the input and output param- the program
the EXECUTE_PROCEDURE method (see Listing 5.3). It calls the DETERMINE_ eters of the database procedures to the actual parameters. It then calls
CARRNAME database procedure, which has the following input and output the EXECUTE_PROCEDURE method.
parameters:
240 241
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Native Procedures with ABAP 5.2
242 243
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Native Procedures with ABAP 5.2
Usage in AS ABAP When using temporary tables to transfer data between AS ABAP and a The program now uses the EXECUTE_QUERY method to call the database
database procedure, note the following: procedure. It transfers SY-MANDT, P_CARRID, and 'P' to the input param-
eters, and it transfers temporary table #ET_CONNECTIONS to the output
왘 If you work with global temporary tables, you can create these once
parameter for the database procedure.
(because they can be used in different sessions). Organizationally,
however, you must ensure that the table name isn’t used for different After the database procedure has been called, the program reads the
use cases (that require a different table structure). contents of temporary table #ET_CONNECTIONS, which correspond to the
왘 You can create global temporary tables at design time. Then you must transferred airline’s top connections.
ensure that the tables are also available in the test and production sys-
tems after a transport. Example 3: Tabular Input Parameters
왘 If you decide to create global temporary tables at runtime, you must If a database procedure has tabular input parameters, you can proceed in
ensure that—before you call a database procedure—the table struc- the same way as for tabular output parameters. Program ZR_A4H_
ture is suitable for the interface of the database procedure called CHAPTER5_KPIS_ADBC in Listing 5.5 shows how to call the GET_KPIS_
(because this may have changed in the meantime). FOR_CONNECTIONS database procedure for a set of flight connections. The
왘 You must create local temporary tables at least once for each session database procedure determines some key performance indicators (KPIs)
(also note the following explanations in relation to the ABAP work for each connection transferred.
process and database connection). Consequently, you can only create The procedure has the following input and output parameters: Example of an
local temporary tables when an ABAP program is running. input parameter
왘 IV_MANDT: Client.
왘 Because each ABAP work process has only one connection with the
database, multiple ABAP programs processed by the same work pro- 왘 IT_CONNECTIONS: A table parameter that contains the airline’s ID CAR-
cess subsequently, are one session for the database. Therefore, after RID and connection code CONNID.
an ABAP program ends, neither the definition nor the contents of 왘 ET_KPIS: A table parameter that contains KPIs for connections.
local (and global) temporary tables are deleted automatically. ...
LOOP AT lt_connections INTO ls_connections.
왘 For global and local temporary tables, you should delete the contents
lv_statement = | INSERT INTO #IT_CONNECTIONS VALUES
(of the current session) before you call the database procedure. ( '{ ls_connections-carrid }', '{ ls_connections-
connid }' )|.
Explanation of Program ZR_A4H_CHAPTER5_TOP_ADBC in Listing 5.4 works with a cl_sql_connection=>get_connection(
the program local temporary table. First, it uses DROP TABLE #ET_CONNECTIONS to )->create_statement(
)->execute_update( lv_statement ).
delete local temporary table #ET_CONNECTIONS if it exists. It then uses the ENDLOOP.
CREATE LOCAL TEMPORARY ROW TABLE statement to create a (new) local tem- " Call database procedure
porary table with the name #ET_CONNECTIONS. Here, the program refers lv_statement = | CALL "test.a4h.bo|
&& |ok.chapter04::GET_KPIS_FOR_CONNECTIONS|
to the table type that the system automatically created for the ET_CON- && |"( '{ sy-mandt }' , #IT_CONNECTIONS, #ET_KPIS )
NECTIONS output parameter when the database procedure was activated. WITH OVERVIEW |.
lo_result_set = cl_sql_connection=>get_connection(
This approach enables the program to ensure that, before the database
)->create_statement( )->execute_query( lv_statement ).
procedure is called, the temporary table is empty and suitable for the lo_result_set->close( ).
current structure of the ET_CONNECTIONS output parameter. ...
Listing 5.5 Handling Table-Based Input Parameters
244 245
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Native Procedures with ABAP 5.2
Explanation of Before the database procedure is called, the program fills local tempo- Other. Then, choose Database Procedure Proxy, and click Next.
the program rary table #IT_CONNECTIONS with the relevant flight connections. EXE- Figure 5.3 shows the window that opens.
CUTE_QUERY is used to call the database procedure.
In this window, enter the following data for the database procedure Creation
Interface of the The system also automatically creates an interface for each database pro- parameters
proxy:
proxy object cedure proxy. You can use this interface to influence the parameter
names and data types used when calling the database procedure with 왘 Name
ABAP: Used to call the database procedure later in ABAP.
왘 You can change the names of the input and output parameters as soon 왘 Description
as they exceed 30 characters. In this case, the system initially abbrevi- Piece of explanatory text.
ates the parameter names. You can then overwrite these abbreviated 왘 SAP HANA Procedure
names, if necessary. Name of the existing database procedure in the SAP HANA repository.
왘 You can always overwrite the component names of table parameters. 왘 Parameter Types Interface
왘 You can assign the relevant data type to each parameter. This is Name of the interface that is automatically created when you create
important because SQL data types aren’t uniquely mapped to ABAP the proxy object (see Listing 5.6).
data types and DDIC types. Consequently, when creating a proxy After you choose Next and Finish, the system creates the database pro-
object, the system can’t (always) derive the correct ABAP data type cedure proxy and the corresponding interface.
and/or DDIC type.
The Project Explorer contains the database procedure proxy in the cor-
Create a database We’ll now explain how to create a proxy object for the DETERMINE_TOP_ responding package below the Dictionary 폷 DB Procedure Proxies
procedure proxy CONNECTIONS_XML database procedure. To do this, open the ABAP Devel- node. Just like the other interfaces, the parameter type interface is
opment Tools in Eclipse, and choose the menu option, File 폷 New 폷 located in the corresponding package below the Source Library node.
246 247
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Native Procedures with ABAP 5.2
Adjust the Figure 5.4 shows the database procedure proxy for the DETERMINE_TOP_ PARAMETERS: p_carrid TYPE s_carr_id.
interface CONNECTIONS_XML database procedure. If you want to adjust parameter
DATA: lt_connections TYPE TABLE OF
names or data types, you can do this in the ABAP Name, ABAP Type, and zif_determine_top_connections=>et_connections.
DDIC Type Override columns. For example, you can map the CONNID
column in the table-based ET_CONNECTIONS output parameter to the S_ TRY.
CALL DATABASE PROCEDURE
CONN_ID data element (and therefore to the ABAP data type N length 4). zdp_determine_top_connections
EXPORTING
iv_mandt = sy-mandt
iv_carrid = p_carrid
iv_algorithm = 'P'
IMPORTING
et_connections = lt_connections.
CATCH cx_sy_db_procedure_sql_error
cx_sy_db_procedure_call INTO DATA(lo_ex).
" Error handling
iv_algorithm = 'P'
WRITE: | { lo_ex->get_text( ) } |.
ENDTRY.
248 249
5 Integrating Native SAP HANA Development Objects with ABAP Transport of Native Development Objects 5.3
During the synchronization process, you can decide whether you want Within the repository, SAP delivers content below the sap root package. Namespace for
to retain or overwrite the adjustments made to the proxy object (compo- Thus, no customer developments can be created under this package customers
nent names or data types). because they might be accidentally overwritten. You can build a parallel
package hierarchy for customer developments instead. As a root pack-
Chapter 6 introduces you to ABAP Managed Database Procedures
age, for example, use your domain name.
(AMDP). When used within the scope of ABAP, they have several advan-
tages compared with procedures that you’ve created via SAP HANA Stu- The system-local package represents a special case. It’s similar to the Local developments
dio. For this reason, we generally recommend the usage of ABAP data- concept of local packages of AS ABAP. You can use it for development
base procedures if you want to use SQLScript within ABAP. objects that won’t be transported.
Transport
5.3 Transport of Native Development Objects
A transport usually takes place in SAP HANA on the basis of a delivery Delivery units
In this section, we discuss how you can transport ABAP programs that unit. A delivery unit combines packages that are to be transported or
use native SAP HANA objects consistently in your system landscape. For delivered together. Conceptually, it broadly corresponds to a software
this purpose, we’ll discuss SAP HANA transport containers. We won’t component in the sense of AS ABAP. While you usually work in AS
outline the advanced Change and Transport System (CTS+), which offers ABAP with the HOME software component, you must always create your
options too. own delivery units for customer developments in SAP HANA. To do so,
you or an administrator are required to have maintained, in advance,
For our descriptions, we assume that you’re already familiar with the the content_vendor system parameter in the indexserver.ini file using the
development organization and transport in AS ABAP. Administration Console of SAP HANA Studio.
Let's consider the assignment of a delivery unit and the subsequent Delivery unit
5.3.1 Digression: Development Organization and Transport transport using an AT_CUSTOMER attribute view. When you create the AT_ assignment
in SAP HANA CUSTOMER attribute view, you assign a package to it. You can maintain a
To understand the functioning of the SAP HANA transport container delivery unit in the package properties. To do so, use the context menu
better, this section provides some background information on the devel- entry Edit of the package. You see all existing delivery units in the sys-
opment organization and transport in SAP HANA. tem in the Quick View using the menu entry Delivery Units. You can
also create new delivery units there. Figure 5.5 shows the relationships
among the development object, package, and delivery unit using the
Development Organization
example of the AT_CUSTOMER attribute view (the ZA4H_BOOK_CHAPTER05
The development organization in SAP HANA is similar in many ways to delivery unit isn’t part of the examples provided with this book).
AS ABAP. However, it also differs in some essential aspects. As
described in Chapter 2, the SAP HANA repository is the central storage
of the SAP HANA database development objects.
250 251
5 Integrating Native SAP HANA Development Objects with ABAP Transport of Native Development Objects 5.3
Schema Mapping
Schema mapping is a special feature in transporting SAP HANA content.
Schema mapping is necessary when the database schemas differ in the
source system and target system of a transport. This involves mapping
an authoring schema to a physical schema.
You maintain a schema mapping in the Quick View via the menu option
Schema Mapping. Before we discuss more precisely when and how the
system evaluates the mapping, we need to explain the need for schema
mapping using the AT_CUSTOMER attribute view. Let’s consider Figure 5.6
for this purpose.
SAP HANA
Content
AT_CUSTOMER AT_CUSTOMER AT_CUSTOMER
SAPABD.SCUSTOM SAPABD.SCUSTOM SAPABD.SCUSTOM
Mapping
Schema
Development Physical Development Physical Development Physical
Schema Schema Schema Schema Schema Schema
SAPABD SAPABQ SAPABD SAPABP
Database
Catalog
Figure 5.5 Development Object, Package, and Delivery Unit System: HDD, System: HDQ, System: HDP,
Schema <SAPABD> Schema <SAPABQ> Schema <SAPABP>
Import and export In SAP HANA Studio, you have two options to transport development
objects, that is, you can export and import them in the target system: Quality
Development Production
Assurance
왘 Exporting/importing a delivery unit (optionally coupled with CTS+)
Figure 5.6 Principle of Schema Mapping
왘 Exporting/importing individual objects (the developer mode)
For a consistent transport of SAP HANA content (which isn’t closely cou- Remember that the AT_CUSTOMER attribute view reads customer data Schema mapping
pled with an ABAP development) in a production system landscape, we from database table SCUSTOM. This table is part of the flight data model of example
always recommend exporting/importing based on delivery units and AS ABAP and is located in the development system in the SAPABD data-
CTS+. base schema (because the system ID of the ABAP system is ABD). As a
result, the attribute view refers to SAPABD.SCUSTOM.
252 253
5 Integrating Native SAP HANA Development Objects with ABAP Transport of Native Development Objects 5.3
Table SAPABD.SCUSTOM doesn’t exist in the quality assurance system or we use Program ZR_A4H_CHAPTER5_LIST_CUSTOMER, which accesses
production system. Due to the different system IDs, the database table the AT_CUSTOMER attribute view of the SAP HANA repository via the ZEV_
resides in the SAPABQ schema in the quality assurance system and in the A4H_CUSTOMER external view of DDIC. The source text of the program is
SAPABP schema in the production system. available in Listing 5.8.
Schema mapping enables you to map the SAPABD schema to the SAPABQ REPORT zr_a4h_chapter5_list_customer.
schema in the quality assurance system and to the SAPABP schema in the
DATA: lt_customer TYPE STANDARD TABLE OF
production system. zpv_a4h_customer,
ls_customer TYPE zpv_a4h_customer.
Schema mapping When maintaining schema mapping, you must consider the following:
maintenance IF cl_db_sys=>dbsys_type = 'HDB'.
왘 Schema mapping ultimately controls where—that is, in which data- SELECT * FROM zev_a4h_customer
base schema—an SAP HANA repository development object searches INTO TABLE lt_customer.
for a database catalog object. ELSE.
SELECT * FROM zpv_a4h_customer
왘 If no schema mapping is maintained, the authoring schema and phys- INTO TABLE lt_customer.
ENDIF.
ical schema are identical.
LOOP AT lt_customer INTO ls_customer.
왘 You can map multiple authoring schemas to the same physical WRITE: / ls_customer-id, ls_customer-name.
ENDLOOP.
schema.
Listing 5.8 Sample Report to Be Transported
왘 You cannot assign multiple physical schemas to an authoring schema.
왘 The SAP HANA content stores references to database objects with the Both Program ZR_A4H_CHAPTER5_LIST_CUSTOMER and the ZEV_A4H_ Problems during
authoring schema. If this can’t be clearly determined (due to a multi- CUSTOMER external view can be transported readily using the change transport
ple assignment), the system stores the reference with the physical recording and the transport system of AS ABAP (in principle, this occurs
schema. automatically). The AT_CUSTOMER attribute view that forms the basis of
the external view, however, isn’t subject to the change recording and
Schema Mapping When Installing SAP NetWeaver AS ABAP 7.4 transport system of the application server. For this reason, it isn’t avail-
If you install AS ABAP 7.4 on a SAP HANA database, the installation program able in the target system after a transport (unless you take appropriate
creates the SAP<SID> ABAP schema. Furthermore, the installation program measures). Thus, a runtime error occurs in the target system when call-
also creates at least one schema mapping—that is, from the ABAP authoring ing the report. The SAP HANA transport container provides relief here.
schema to the SAP<SID> physical schema.
5.3.2 Using the SAP HANA Transport Container The SAP HANA transport container allows you to transport develop-
Let’s now discuss the transport of ABAP programs that use native SAP ment objects created via SAP HANA Studio using the mechanisms of the
HANA objects via the SAP HANA transport container. For this purpose,
254 255
5 Integrating Native SAP HANA Development Objects with ABAP Transport of Native Development Objects 5.3
CTS of the ABAP AS (and without the need for a Java stack, which is 5.3.1) before creating the transport container. To do so, you can fill data-
required for CTS+). base table SNHI_VENDOR_MAPP using the Table View Maintenance drop-
down.
From a technical perspective, the SAP HANA transport container is a
logical transport object that acts as a proxy object for exactly one deliv- If the transport properties of the package that is used—in the example, Change recording
ery unit. Figure 5.7 illustrates how the SAP HANA transport container TEST_A4H_BOOK_CHAPTER05—are maintained accordingly, the system
works. records the creation of the transport container in a transportable change
request.
Import
Snapshot (After-Import
Method)
SAP HANA
Database
Delivery Delivery
Unit Unit
Create the trans- You can only create a SAP HANA transport container using the ABAP chronizes the contents of this container (once) with the contents of the
port container Development Tools. In the ABAP perspective, for example, choose the delivery unit. This means that all objects of the delivery unit are loaded
menu path, File 폷 New 폷 Other 폷 ABAP 폷 SAP HANA Transport Contai- as a packed file on the ABAP AS and are stored there as a byte string in a
ner. Then enter the name of the delivery unit for which you want to cre- database table (i.e., table SNHI_DU_PROXY). Strictly speaking, the content
ate the transport container. The system automatically derives the name of the delivery unit then appears twice in the SAP HANA database:
of the transport container (see Figure 5.8; the SAP HANA transport con- 왘 In the SAP HANA repository
tainer ZA4H_BOOK_CHAPTER05 isn’t part of the examples provided with
왘 Via database table SNHI_DU_PROXY
this book).
If, after creating the transport container, you want to synchronize it with
Use a prefix If you want to use a prefix namespace in ABAP, you must assign the
namespace the delivery unit—because you’ve made changes to the AT_CUSTOMER
desired prefix name to the name of the content_vendor (refer to Section
256 257
5 Integrating Native SAP HANA Development Objects with ABAP Transport of Native Development Objects 5.3
attribute view, for example—you must do so manually. Use the Take company. In this case, a simplified system landscape might look like that
Snapshot and Save link in this case. You can view the current content shown in Figure 5.10.
of the transport container using the Contents tab (Figure 5.9).
Using a case distinction, you can—to stick with the example of Program
ZR_A4H_CHAPTER5_LIST_CUSTOMER—call the ZPV_A4H_CUSTOMER
projection view once and the ZEV_A4H_CUSTOMER external view once (see
Listing 5.8). As a result, you ensure that no errors occur at runtime.
Exporting and The transport from the development system to the quality assurance and
importing production systems takes place via the CTS mechanisms:
왘 When exporting (more precisely, during export release preprocessing), SAP HANA
Database ABAP System ABAP System
the system writes the content of the transport container in the data
file to the common transport directory of the systems involved in the
transport.
왘 When importing (more precisely, in an after-import method), the sys- Traditional Traditional
Database Database
tem reads the transport container’s content from the data file and
Development Quality Production
imports the delivery unit in the SAP HANA database of the target sys- Assurance
tem. Activation of content occurs only if you’ve activated this for the
software component of the transport container in table SNHI_DUP_ Figure 5.10 Mixed System Landscape
PREWORK (in the target system).
The implementation of the transport container ensures that no errors Systems without
You can reproduce the two steps at any time using the transport log.
occur during the transport, and the SAP HANA content is only imported a SAP HANA
database
if the target system of the import is a SAP HANA-based system.
Mixed System Landscapes
Mixed system landscapes represent a special case of the ABAP develop- Recommendations for Using the Transport Container
ment on SAP HANA. Imagine that as an ABAP developer, you want to
When using the transport container, you should note some restrictions: Limitations
optimize a program for SAP HANA and make use of specific SAP HANA
database options. At the same time, however, this program should also 왘 When using the transport container, you always transport the com-
be able to run on traditional databases, for example, because your plete delivery unit. You can’t transport only the contents of a delivery
employer uses SAP HANA as a database only in certain areas of the unit that were changed in a specific time interval.
258 259
5 Integrating Native SAP HANA Development Objects with ABAP
You don’t require the SAP HANA transport container if you use the
options described in Chapter 6.
260
Contents at a Glance
What does SAP HANA mean for you? From high-speed in-memory processing to Foreword ......................................................................................... 15
real-time calculation capabilities, SAP HANA is changing the world of SAP. For Preface ............................................................................................. 17
many developers it means new concepts to learn, and old concepts to apply to new Introduction ..................................................................................... 19
scenarios. For me, it means a wonderful book to work on and an inspiring author
team to collaborate with. PART I Basic Principles
Thorsten Schneider, Eric Westenberger, Hermann Gahm, and Christiaan Swanepoel 1 Overview of SAP HANA ............................................... 29
have made it their mission to make sure that, whatever SAP HANA means for you
1.1 Software Components of SAP HANA ............................. 30
as a developer, you are prepared to meet its challenges head-on. With thorough
1.1.1 SAP HANA Database ........................................ 30
examples, they introduce you to the intricacies of ABAP development for SAP
1.1.2 SAP HANA Studio ............................................ 32
HANA, and ensure that as you make your way through this book you will become 1.1.3 SAP HANA Client ............................................. 33
a more confident user of the SAP HANA development environment. 1.1.4 SAP HANA Extended Application Services ........ 35
1.1.5 Additional Options ........................................... 36
What did you think about ABAP Development for SAP HANA? Your comments and
1.2 Basic Principles of In-Memory Technology ..................... 39
suggestions are the most useful tools to help us make our books the best they can 1.2.1 Hardware Innovations ...................................... 40
be. Please feel free to contact me and share any praise or criticism you may have. 1.2.2 Software Innovations ........................................ 44
1.3 Architecture of the In-Memory Database ....................... 55
Thank you for purchasing a book from SAP PRESS!
1.4 Application Cases and Deployment Options for
SAP HANA .................................................................... 58
1.4.1 Application Cases ............................................. 58
Hareem Shafi
1.4.2 Deployment Options ........................................ 61
Editor, SAP PRESS 1.5 How SAP HANA Affects Application Development ........ 63
1.5.1 New Technical Options .................................... 63
1.5.2 Code Pushdown ............................................... 64
Rheinwerk Publishing 1.5.3 Database as White Box ..................................... 66
Boston, MA 1.5.4 Required Qualifications for Developers ............. 68
hareems@rheinwerk-publishing.com
2 Introducing the Development Environment ............... 71
www.sap-press.com
2.1 Overview of Eclipse ....................................................... 71
2.2 SAP’s Eclipse Strategy .................................................... 74
2.2.1 Unbundling of Eclipse and SAP Software .......... 75
2.2.2 Central Update Site .......................................... 76
2.3 Installing the Development Environment ....................... 77
2.3.1 Installing the Eclipse IDE for Java Developers ... 77
2.3.2 Installing SAP HANA Studio ............................. 78
7
Contents Contents
2.3.3 Installing the ABAP Development Tools for 4.4.2 Analytic Views .................................................. 210
SAP NetWeaver ................................................ 79 4.4.3 Calculation Views ............................................. 219
2.4 Getting Started in the Development System ................... 80 4.4.4 Runtime Objects and SQL Access ..................... 227
2.4.1 Basic Principles of Eclipse ................................. 80 4.4.5 Accessing Column Views via Microsoft Excel .... 229
2.4.2 ABAP Development Tools for SAP NetWeaver ... 83
2.4.3 SAP HANA Studio ............................................ 93 5 Integrating Native SAP HANA Development Objects
with ABAP ................................................................... 231
3 Database Programming Using SAP NetWeaver
Application Server ABAP ............................................. 109 5.1 Integrating Analytic Views ............................................. 231
5.1.1 Access via Native SQL ...................................... 232
3.1 SAP NetWeaver Application Server ABAP Architecture ... 111 5.1.2 External Views in the ABAP Data Dictionary ..... 233
3.1.1 Database Interface ............................................ 112 5.1.3 Options for Accessing External Views ............... 236
3.1.2 Role of the Database for the ABAP Application 5.1.4 Recommendations ............................................ 237
Server ............................................................... 115 5.2 Integrating Native Procedures with ABAP ...................... 239
3.1.3 Data Types ....................................................... 117 5.2.1 Access via Native SQL ...................................... 239
3.2 ABAP Database Access .................................................. 123 5.2.2 Defining Database Procedure Proxies ............... 246
3.2.1 ABAP Data Dictionary ...................................... 124 5.2.3 Calling Database Procedure Proxies .................. 248
3.2.2 Open SQL ........................................................ 128 5.2.4 Adjusting Database Procedure Proxies .............. 249
3.2.3 Database Views in the ABAP Data Dictionary ... 138 5.3 Transport of Native Development Objects ..................... 250
3.2.4 Database Access via Native SQL ....................... 139 5.3.1 Digression: Development Organization and
3.2.5 Secondary Database Connections ..................... 145 Transport in SAP HANA .................................... 250
3.3 Analyzing Database Accesses Using the SQL Trace ......... 149 5.3.2 Using the SAP HANA Transport Container ........ 254
3.3.1 Statement Transformations ............................... 149
3.3.2 Secondary Connections ..................................... 156 6 Advanced Database Programming with ABAP 7.4 ..... 261
3.3.3 Native SQL ....................................................... 157
3.3.4 Buffer ............................................................... 157 6.1 Introducing Core Data Services ...................................... 262
6.2 ABAP Core Data Services ............................................... 264
6.2.1 Core Data Services Views ................................. 265
PART II Introduction to ABAP Programming with SAP HANA 6.2.2 Code Pushdown ............................................... 285
6.2.3 View Extensions ............................................... 292
4 Native Database Development Using SAP HANA ...... 161
6.2.4 Annotations ..................................................... 294
4.1 Basic Principles of Native Database Development .......... 161 6.2.5 Using Core Data Services Views in ABAP and in
4.1.1 Objects in the SAP HANA Database Catalog ..... 162 SAP List Viewer with Integrated Data Access .... 298
4.1.2 SQL Standard and SAP HANA-specific 6.2.6 Tips for Using ABAP Core Data Services
Enhancements .................................................. 164 Views ............................................................... 300
4.2 SQLScript ....................................................................... 170 6.3 SAP HANA Core Data Services ....................................... 301
4.2.1 Basic Principles of SQLScript ............................. 170 6.4 Open SQL Enhancements .............................................. 303
4.2.2 SQLScript Programming .................................... 177 6.5 ABAP Database Procedures ........................................... 307
4.3 Database Procedures ..................................................... 188 6.5.1 Creating ABAP Managed Database
4.4 Analytical Models .......................................................... 194 Procedures ....................................................... 308
4.4.1 Attribute Views ................................................ 195 6.5.2 Troubleshooting ............................................... 311
8 9
Contents Contents
6.5.3 Enhancements .................................................. 314 8.3.2 Detailed Analysis of the ABAP Program Using
6.5.4 Practical Tips .................................................... 318 Transaction SAT ............................................... 399
8.3.3 Detailed Analysis of Database Accesses ............ 401
7 Runtime and Error Analysis with SAP HANA .............. 319 8.3.4 Analysis Result ................................................. 403
8.3.5 Optimization Using Open SQL ......................... 404
7.1 Overview of the Tools Available ..................................... 320 8.3.6 Analysis of the First Optimization ..................... 406
7.2 Troubleshooting ............................................................ 322 8.3.7 Analysis Result ................................................. 407
7.2.1 Unit Tests ......................................................... 323 8.3.8 Optimizing a Database Procedure .................... 408
7.2.2 Dump Analysis ................................................. 325 8.3.9 Analysis of the Second Optimization ................ 410
7.2.3 Debugging and Tracing in SQLScript ................. 327 8.3.10 Analysis Result ................................................. 413
7.3 ABAP Code Analysis ....................................................... 328
7.3.1 Checks and Check Variants ............................... 329
7.3.2 Checks in the Development Infrastructure ........ 333 PART III Advanced Techniques for ABAP Programming
7.3.3 Global Check Runs in the System ...................... 335 for SAP HANA
7.4 Runtime Statistics and Traces ......................................... 337
7.4.1 Runtime Statistics ............................................. 337
9 Integrating Analytical Functionality ........................... 417
7.4.2 ABAP Trace and ABAP Profiler .......................... 342 9.1 What Is Analytical Functionality? ................................... 417
7.4.3 SQL Trace ......................................................... 350 9.2 SAP BusinessObjects Portfolio ....................................... 421
7.4.4 Single Transaction Analysis ............................... 354 9.3 Digression: SAP Business Warehouse ............................. 425
7.4.5 Explain Plan ...................................................... 355 9.3.1 SAP HANA Versus SAP Business Warehouse ..... 425
7.4.6 SAP HANA Plan Visualizer ................................ 357 9.3.2 Overview of Terminology ................................. 427
7.5 System-Wide Analyses ................................................... 362 9.3.3 InfoProviders When Using SAP HANA .............. 428
7.5.1 Database Administration Cockpit ...................... 362 9.4 Overview of Possible Architectures ................................ 435
7.5.2 SQL Monitor .................................................... 367 9.4.1 Direct Access to Analytical Functionality in
7.5.3 Runtime Check Monitor ................................... 377 SAP HANA ....................................................... 435
7.6 SQL Performance Optimization ...................................... 379 9.4.2 Access via SAP NetWeaver AS ABAP ................ 437
8 Sample Scenario: Optimizing an Existing 10 Text Search and Analysis of Unstructured Data ......... 441
Application .................................................................. 385
10.1 Basic Principles of the Text Search in SAP HANA ........... 443
8.1 Optimization Procedure ................................................. 386 10.1.1 Technical Architecture ...................................... 444
8.1.1 Migrating to SAP HANA ................................... 386 10.1.2 Error-Tolerant Search ....................................... 445
8.1.2 System Optimization ........................................ 388 10.1.3 SAP Components and Products for Search ........ 447
8.1.3 Application Optimization .................................. 389 10.2 Types of Text Data and Full Text Indexes in
8.2 Scenario and Requirements ............................................ 392 SAP HANA .................................................................... 448
8.2.1 Initial Situation ................................................. 392 10.3 Using the Text Search via SQL ....................................... 454
8.2.2 Technical Implementation ................................ 393 10.3.1 Fuzzy Search .................................................... 455
8.2.3 Current Problems ............................................. 396 10.3.2 Synonyms and Noise Words ............................. 460
8.3 Meeting the Requirements ............................................ 397 10.3.3 Searching across Date Fields and
8.3.1 Narrowing Down the Problem Using Address Data .................................................... 463
Runtime Statistics ............................................. 397
10 11
Contents Contents
10.4 Using the Text Search in ABAP ....................................... 465 14.1.3 Checklist for Database-Specific
10.4.1 Direct SQL Access from ABAP .......................... 466 Implementations .............................................. 544
10.4.2 Embedding Input Helps .................................... 467 14.1.4 Recommendations for Migration ...................... 546
10.4.3 ABAP Source Code Search ................................ 474 14.1.5 Development in Landscapes ............................. 548
10.5 Text Analysis .................................................................. 476 14.1.6 Modifying Data in SQLScript or Native SQL ...... 549
10.6 Resource Consumption and Runtime Aspects of the 14.2 Conventions .................................................................. 551
Text Search .................................................................... 479 14.2.1 Naming Conventions ........................................ 551
14.2.2 Encapsulating SAP HANA Packages .................. 553
11 Decision Tables in SAP HANA ..................................... 483 14.3 Quality Aspects ............................................................. 554
14.3.1 Testing Views and Procedures .......................... 554
11.1 Basic Principles of Decision Tables ................................. 484 14.3.2 Robust Programming ........................................ 555
11.2 Creating Decision Tables in SAP HANA Studio ............... 487 14.3.3 Security Aspects ............................................... 556
11.3 Decision Tables Based on SAP HANA Views ................... 493 14.4 Performance Recommendations for Open SQL .............. 557
11.4 Runtime Objects and SQL Access for Decision Tables ..... 496 14.4.1 Rule 1: Keeping Result Sets Small ..................... 558
11.5 Access to Decision Tables from ABAP ............................ 497 14.4.2 Rule 2: Keeping Transferred Datasets Small ...... 561
14.4.3 Rule 3: Reducing the Number of Queries ......... 568
12 Function Libraries in SAP HANA ................................. 501 14.4.4 Rule 4: Minimizing Search Effort ...................... 574
14.4.5 Rule 5: Reducing the Load on the Database ..... 577
12.1 Basics of the Application Function Library ...................... 504 14.4.6 Summary of Rules ............................................. 582
12.2 Business Function Library ............................................... 506 14.5 Performance Recommendations for Native
12.3 Predictive Analysis Library .............................................. 510 Implementations in SAP HANA ..................................... 582
12.3.1 Generating the K-Means Function via the 14.5.1 Recommendations for Native SQL .................... 582
SQL Console ..................................................... 512 14.5.2 Recommendations for SAP HANA Views .......... 584
12.3.2 Using the Application Function Modeler .......... 515 14.5.3 Recommendations for SQLScript ...................... 587
14.6 Summary of Recommendations ..................................... 589
13 Processing Geoinformation ......................................... 523
13.1 Basic Principles of Geoinformation Systems .................... 524 Appendices ......................................................................... 593
13.2 Geodata Types and Geo-Spatial Functions in A Flight Data Model .................................................................... 595
SAP HANA ..................................................................... 526
B Enhancements to the ABAP Programming Language (as of
13.2.1 Data Types ....................................................... 527 SAP NetWeaver 7.4) ................................................................ 603
13.2.2 Creating Tables and Reading Data .................... 528
C Read and Write Access in the Column Store ............................. 609
13.2.3 Operations on Geographical Structures ............. 530
D SAP Business Application Accelerator Powered
13.2.4 Integration of External Maps ............................ 532
by SAP HANA .......................................................................... 621
13.3 Integrating Geoinformation with ABAP Applications ...... 534
E Installing the Sample Programs ................................................ 625
F The Authors ............................................................................. 627
14 Practical Tips ............................................................... 539
14.1 General Recommendations ............................................ 540 Index .............................................................................................. 629
14.1.1 Recommendations for Column Stores and
Row Stores ....................................................... 540
14.1.2 SAP HANA-Specific Implementations ............... 541
12 13
Index
629
Index Index
AMDP framework 씮 ABAP-Managed Authorization (Cont.) CDS view (Cont.) Control structure, 184
Database Procedure framework SAP HANA Studio, 94 usage with parameters, 284 Core Data Service, 35, 138, 262
Analytic Engine, 428 system authorization, 94 with parameters, 282 ABAP, 263
formula, 439 CE function, 408 element, 270
hierarchy processing, 439 B CE plan operator SAP HANA, 263, 301
report-report interface, 439 access operator, 187 CPU
Analytic functionality, 418 B tree index, 613 CE_VERTICAL_UNION, 188, 508 cache, 41, 42
Analytic privilege, 102 BAdI, 543 Change request, 257 core, 39
Analytic view, 102, 195, 210, 228, BFL, 502, 506 Class time, 390, 412
585, 600 Blocking factor, 154 CL_ABAP_DBFEATURES, 284 Currency conversion
create, 212 Breakpoint, 312 CL_SALV_GUI_TABLE, 299 Customizing, 168
Analytical index, 429 dynamic, 91 Client dependency, 272 parameterize, 218
Analytical query 씮 SAP BW Query external, 92 Client handling, 114, 238, 272, 548 Cursors, 135, 185, 588
Analytical search, 412 static, 91 attribute view, 200
Annotation, 263, 294 BRFplus, 484 Client/server, 21 D
post-annotation, 295 Buffer access, 404 Cloud deployment, 62
scope, 294 Buffer trace, 157 Cluster encoding, 50 Data aging, 38
Append view, 292 Business Function Library, 502, 506 Cluster table, 128, 547 Data analysis, 418, 421
Appliance, 29 Business logic, 176 COALESCE function, 271 Data class, 127
Application Business process, 483 Code Data control language (DCL), 123
layer, 64 Business rule management system, 483 completion, 88, 100, 236 Data declaration, 603
logic, 64 Business rule mining, 502 Inspector, 321, 328, 329, 387, 401 Data definition language (DDL), 123,
optimization, 385, 389 pattern, 69 265, 528
Application Function Library, 501, 504 C pushdown, 64, 580 Data Dictionary 씮 ABAP Dictionary
Application Function Modeler, 506, template, 267 Data exploration, 421
512, 515 Calculation engine, 177, 187 Code-to-data paradigm, 64, 66, 397 Data inconsistency, 551, 554
Array interface, 584 Calculation logic, 65 Collective search help, 467 Data layout, 44
Association, 274 Calculation view, 102, 171, 195, 219, Column store, 46, 98, 127, 165, 609 Data manipulation language (DML), 123
benefits, 279 429, 497, 585 composite index, 617 Data model
filter, 282 modeled, 219 data type, 448 enhancement, 264
local, 276 SQLScript, 219 INSERT ONLY, 613 syntax, 263
name, 280 Call hierarchy, 349, 402 inverted index, 616 virtual, 436
prefix, 280 Call stack, 349, 402 merge, 614 Data modeler, 596
usage, 278 Cardinality, 276, 281 read access, 610 Data preview, 99, 107
visible, 276 CASE statement, 285 recommendation, 540 Data Quality Library, 503
Attribute, 196 Cash flow, 506 write access, 612 Data replication, 37
calculated, 204, 215 Catalog object, 302 Column view, 97, 163, 227, 232 SAP Landscape Transformation
vector, 48, 609 CDS entity, 265, 298 Column-based data storage, 98 Replication Server, 37
view, 102, 195, 196, 585 CDS object, 265, 302 Commit SAP Replication Server, 37
virtual, 204 CDS 씮 Core Data Service implicit, 137 Data scientist, 501
Attribute view, 196, 588 CDS view, 264, 456 Compression Data source
Authoring schema, 253 activation log, 300 delta compression, 49 target data source, 276
Authorization create, 266 technique, 47, 49 Data type, 117, 125, 166, 246, 299
analytical, 94, 557 extend, 292 Constructor expression, 605 conversion, 493
check, 556 name, 298 CONTAINS, 454 geo-spatial, 526
package authorization, 94 outer join, 469 Content, 33, 101 integer, 47
630 631
Index Index
Data type (Cont.) DDL source, 265 Dynamic database view, 484 Entity name, 268
SHORTTEXT, 166, 448 create, 266 Dynamic Random Access Memory, 42 Entity-relationship model, 194
ST_GEOMETRY, 166, 527 DDL statement, 54 Enumeration value, 294
TEXT, 166, 448 Debugging, 327 E Equi-join, 202
user-defined, 263 Decision rule, 483, 493 Error handling, 555
Data warehouse, 60, 420 Decision table, 102, 483, 485, 487 Easy Query, 439 ESRI Shapefile, 529
DATA(), 604 actions, 485 Eclipse, 32 ETL processes, 37
Database conditions, 485 ABAP development environment, 32 Exception, CX_SY_SQL_UNSUPPORTED_
relational, 30, 44, 166 create, 487 composite release, 73 FEATURE, 284
type system, 120 transport, 499 editor, 82 Execution plan 씮 Explain plan
Database catalog, 96, 162, 232 Declarative programming, 175, 588 enhancement point, 72 Existence check, 331
Database connection Decoupling, 543, 554 framework, 71 Expensive SQL statement trace, 322
secondary, 145, 156 Delivery unit, 101, 553 menu bar, 82 Explain plan, 321, 355
Database independence, 264 Delta compression, 49 perspective, 81 call, 355
Database index, 574 Delta load, 37 platform, 32, 71, 73 output, 356
Database interface 씮 DBI Delta merge, 482 plug-in, 72 Export release preprocessing, 258
Database layer, 64 Delta store, 51, 481, 612 project, 73 Extended storage, 38
Database object, 97 Design pattern, 324 repository, 76 Extension index, 450
Database optimizer, 53, 173, 355 Design time, 244 SAP Release Train for Eclipse, 75
Database procedure, 56, 97, 102, Design time object, 106 update site, 76 F
171, 552 Development environment view, 82
ABAP-managed, 262 ABAP Development Tools, 79, 83 window, 81 Fact table, 210, 211
compilation, 176 installation, 77 Workbench, 80 Factory pattern, 542
control structure, 184 SAP HANA Studio, 78 workspace, 83 Field
execution, 176 Development landscape Eclipse Foundation, 32, 71, 73 calculated, 215
test, 554 mixed, 549 Eclipse Release Train, 73 reference, 292
type, 178 Development object, 88, 101, 102 Eclipse SDK, 72 Field list, 564
Database procedure proxy, 239, 261, ABAP, 552 Element info, 293 Field symbol, 604
549, 552 activate, 106 Elementary search help, 467 Filter, 197, 286, 299
synchronization, 249 naming convention, 551 Embedded Reporting, 426 Filter condition, 282
Database programming SAP HANA, 551 Embedded Search, 447 Filter value, 203
tool, 149 storage, 103 Encapsulation, 553 Fiscal year, 208
Database schema, 96, 104, 162 test, 107 Encoding Flash memory, 42
Database Shared Library 씮 DBSL validate, 104 cluster encoding, 50 Flight data model, 111, 595, 596
Database table, 98 Diagnostics Agent, 31 dictionary encoding, 47 Flowgraph, 515
Database trigger, 98 Dictionary encoding, 47 indirect, 50 FOR ALL ENTRIES, 131, 154, 571
Database view, 125, 138 Dictionary vector, 47, 609 parse encoding, 50 Foreign key, 278
DataSource, 428, 433 Dimension, 211 prefix encoding, 50 relationship, 125, 195, 278
Data-to-code paradigm, 64 Direct Extractor Connection, 38 run-length encoding, 50 Forward navigation, 90
DBA Cockpit, 146, 362 DISTINCT, 286 Engine, 56, 586 Full text index, 449, 453, 477
DBI, 112, 546, 549 Document Analysis Toolkit, 444 Enqueue server, 111 Function, 163
DBSL, 34, 114 Domain, 126 Enqueue service, 550 user-defined, 97
DCL 씮 data control language (DCL) DRAM, 42 Enqueue work process, 117 Function Library 씮 Application Function
DDIC, input help, 467 Drilldown, 206 Enterprise Information Library
DDL Editor, 267 Dump, 325, 556 Management, 518 Fuzzy search, 442, 443, 445, 459
DDL 씮 data definition language (DDL) Enterprise search, 448 stopwordListId, 460
632 633
Index Index
Fuzzy search (Cont.) Host variable, 284 Join, 100, 188, 271, 305, 407 LOOP loop, 572
stopwordTable, 460 Hybrid application, 64 complex, 587 LUW concept, 116
textsearch, 461 Hypernym, 462 equi-join, 202
threshold value, 445 Hyponym, 462 from association, 276 M
Fuzzy search index, 447, 480, 481 full outer join, 169
I inner join, 129, 169, 271 Main memory, 39, 42
G join type, 168 Main store, 51, 612
IDA 씮 Integrated Data Access left outer join, 129, 169 Mainframe, 21
Geo-coding, 534 Identical select, 353, 354 outer join, 169 MANDT, 273
Geodata type, 526 Imperative programming, 175, 588 referential join, 197, 201 Manifest, 72
convert, 530 IN list, 154 right outer join, 169, 282 Map
Geoinformation, 523 Inconsistency check, 290 self-join, 225 external, 532
in ABAP, 534 Index, 97, 162 text join, 197 Mass operation, 584
Geoinformation system, 523, 524 composite, 575, 617 type, 281 Master data, 211
GeoJSON, 529 exclusion list, 127 Join view 씮 Attribute view Materialization, 194
Geo-Spatial Engine, 523, 526 full text index, 449 MDX, 33, 56, 170
constructor, 528 inclusion list, 127 K Measure -> s. key figure, 211
create table, 528 inverted, 575, 616 Merge, 481
presentation format, 529 primary index, 574 Kerberos, 57 Message server, 111
ST_Contains, 532 Index server, 56 Kernel, 112 Metadata, 263
Geospatial index, 534 Indirect encoding, 50 Key, 289 Method
GIS 씮 Geoinformation system InfoObject, 428, 430 Key attribute, 196, 289 DB_CAPABILITIES, 299
Golden rules for database InfoProvider, 427, 428 Key figure, 211 Modeler perspective, 93
programming, 558 transient, 429, 432 calculated, 215 MODIFY statement, 153
GROUP BY, 286 virtual, 430 restricted, 212 Modularization, 554
Grouping, 299 InfoSet Keyword Modularization unit, 332
Grouping set, 169 classic, 433 $projection, 277 Monitoring view, 480
GUID, 600 Infrastructure-as-a-Service, 62 K-means, 511, 515 Multidimensional expressions 씮 MDX
Initial load, 37 Multitenant database container, 56
H Inline declaration, 603 L
In-memory database, 55 N
Hadoop, 38 In-memory technology, 39 L (programming language), 176, 179
Hard disk, 42 Input parameter, 219, 552 L node, 176 Name server, 57
Hardware innovation, 40 Insight to action, 418 Large object, 448, 481 Namespace, 552
Hardware trend, 39 Integer, 47 Latency, 19 Native SQL, 466, 582
Hash partitioning, 54 Integrated Data Access, 299 Lifecycle management, 31 ABAP table, 549
Hash value, 54 Integrity, 278 List, 299 NEW operator, 605
HAVING clause, 286, 289 Internal table, 580 List of synonyms, 446, 461 node.js, 34
Help view, 469 International Organization for Literal, 282, 285, 294 NUMA architecture, 42
Hierarchy, 197, 206, 212 Standardization (ISO), 527 Load distribution, 53
level, 206 Local temporary table, 328 O
parent-child, 206 J Lock, 550
High Performance Analytical Appliance Lock object, 117, 126 Object instance
씮 SAP HANA Java Runtime Environment (JRE), 78 Logical unit of work (LUW), 116 create, 605
Hint, 137, 546 JDBC, 33 Loop, 588 ODBC, 33
Hit list, 347 Job log, 105 ODBO, 33
634 635
Index Index
ODS objects, 427 Physical schema, 253 Redirected Database Access (RDA), SAP BusinessObjects Web
OLAP, 64, 211, 420 Planning engine, 56 146, 621 Intelligence, 422
OLAP Engine, 588 PlanViz, 321, 357, 390, 412 Referential join, 197, 201 SAP BW query, 428, 434
OLTP, 64, 420 analysis, 357 Relational operator, 187 SAP Crystal Reports, 421
on the fly, 420 Operator List tool, 358 Replacement object, 261 SAP HANA, 29
On-premise deployment, 62 recording, 357 Reporting, 418 advanced data processing, 36
Open Geospatial Consortium, 527 Tables Used tool, 358 Repository 씮 SAP HANA repository application cases, 58
Open SQL, 66, 109, 123, 170, 174, 404 Timeline tool, 358 Result view, 497 Application Lifecycle Manager, 31
array operation, 136 PMML, 510 Right outer join, 282 certified hardware, 40
cursor, 135 Pool table, 128, 547 Robust programming, 555 client, 30
dynamic, 134 Post-annotation, 295 Role administration, SAP HANA database, 30
enhancement, 303 Pragma Studio, 94 development organization, 250
existence check, 133 ##DB_FEATURE_MODE, 284 Rollback, 137 dynamic tiering, 38
hints, 137 Predictive analysis, 501 Round-robin partitioning, 54 engine, 36
package size, 135 Predictive Analysis Library, 36, 503, 510 Row store, 45, 127, 165 Enterprise Information Management, 37
strict mode, 305 Predictive Model Markup Language Row-based data storage, 45 Lifecycle Manager, 31
subquery, 133 (PMML), 510 Rule, 485 migration, 386, 546
use CDS views, 284 Prefix, 280 Run-length encoding, 50 options, 36
Operational Data Provisioning Prefix encoding, 50 Runtime, 244 predictive option, 36
(ODP), 433 Prefix namespace, 256 analysis, 319, 321, 406 real-time replication, 37
Optimizer 씮 Database optimizer Prepare phase, 583 check monitor, 322, 377 smart data streaming, 38
OR combination, 154 Prepared statement, 142, 557, 582 error, 325 spatial option, 36
Orchestration logic, 65 Preprocessor server, 57 object, 106 studio, 30
Outer join, 122 Presentation layer, 64 Runtime statistics, 337, 390, 397 transport container, 254
Output parameter, 552 Pretty Printer, 87, 89 evaluation, 338 SAP HANA Analytics Foundation, 436
Primary database, 239, 430 selection, 338 SAP HANA CDS, 263, 301
P Procedure, 162 object, 302
Projection view, 125 S syntax, 302
Package, 101, 102, 553 Proxy object, 246 SAP HANA Client, 33
SAP HANA, 551 Public synonym, 106 SAML, 57 HTTP, 35
Paging, 167, 299 SAP ASE (database), 38 JDBC, 33
PAL 씮 Predictive Analysis Library Q SAP BEx Query Designer, 434 ODBC, 33
Parallelization, 53, 183, 588 SAP Business Application ODBO, 33
Parameter, 282 QL 씮 Query Language (QL) Accelerator, 621 SQLDBC library, 33
Parameter marker, 583 Query language, 263 SAP Business Explorer (SAP BEx), SAP HANA Cloud Platform, 62
Partition pruning, 53 424, 428 SAP HANA Cockpit, 33
Partitioning, 51 R SAP Business Warehouse, 420 SAP HANA database, 30
explicit partition handling, 53 SAP BusinessObjects, 428 architecture, 55
hash partitioning, 54 R (programming language), 179, 521 SAP BusinessObjects Analysis, Edition SAP HANA Development, 93
range partitioning, 54 RAM, 39 for Microsoft Office, 423 SAP HANA development object, 261
round-robin partitioning, 54 Range, 131 SAP BusinessObjects Business SAP HANA Enterprise Cloud, 62
type, 54 Range partitioning, 54 Intelligence platform, 229 SAP HANA Extended Application
PBO module, 498 Real time, 19, 420 SAP BusinessObjects Dashboards, 422 Services, 30, 35
Performance, 557 near real time, 621 SAP BusinessObjects Design Studio, 422 SAP HANA Live, 59, 436
Phrase index, 480 Real-time quality, 19 SAP BusinessObjects tools, 421 SAP HANA MDX Provider, 229
ratio, 480 SAP HANA Plan Visualizer 씮 PlanViz
636 637
Index Index
SAP HANA Repository, 93, 101, 551 SAP Operational Process Shared memory, 580 SQL statement (Cont.)
SAP HANA repository, 250, 553 Intelligence, 487 Shared object, 580 ORDER BY, 547
SAP HANA repository view, 233, 235 SAP Predictive Analysis, 503 Side panel, 440 SELECT *, 404
SAP HANA software component, 30 SAP Replication Server, 37 Side-by-side scenario, 22 SELECT COUNT(*), 565
SAP HANA SQL command network SAP S/4HANA, 61 Simple case, 285 UP TO n ROWS, 562
protocol, 34 SAP Solution Manager, 31 Single transaction analysis, 321, 354 UPDATE, 566
SAP HANA Studio, 30, 32, 93 Scalar parameter, 180 Size category, 127 UPDATE … SET, 566
authorization, 93 Scale-out, 41, 111 Slice-and-dice operation, 211 SQL trace, 151, 321, 350, 390, 401, 407
database catalog, 96 Schema mapping, 238, 253, 548 Smart Data Access, 38 analyze, 351
perspective, 93 Schema 씮 Database schema Smart Data Access (SDA), 165 record, 151, 350
Program HDBINST, 78 Scope Software Development Kit, 503 SQL view, 166, 265, 280
Program HDBSETUP, 78 element, 294 Software innovation, 44 definition, 273
SQL console, 100, 178 extend view, 294 Sort behavior, 329, 547 SQL-92 (standard), 164
SQL statement, 412 view, 294 Sorting, 299 SQLDBC library, 33
system connection, 95 Scope operator, 283 Sparse encoding, 50 SQLScript, 67, 408
template, 100 Scorecard, 502 Spatial reference identifier, 524 ABAP tables, 549
user settings, 96 Script server, 505 Spatial reference system, 524 BREAK statement, 184
view modeling, 195 Scrolling, 299 SQL, 123 case distinction, 175, 184
workspace, 95 SDK 씮 Software Development Kit 1999 (standard), 164 CREATE PROCEDURE, 180
SAP HANA transport container, 255, 549 Search ADBC, 139 CREATE TYPE, 181
SAP HANA UI for Information exact, 454 dynamic, 185 Debugger, 312
Access, 448 freestyle, 443 enhancement, 263 dynamic, 556
SAP HANA view, 67, 232, 548 fuzzy, 442, 443 injection, 185 EXEC statement, 185
performance, 584 linguistic, 443, 446, 454 native, 67, 139, 239 EXECUTE IMMEDIATE statement, 185
selection, 237 synonym search, 443 open, 66 explicit typing, 182
test, 554 Search facets, 444 SQL cache, 322, 366, 583 implicit typing, 182
type, 584 Search help, 125, 442, 467 SQL console, 100, 178 input parameter, 245
SAP HANA Web Workbench, 35 elementary, 467 SQL injection, 557 loop, 184
SAP HANA XS Engine, 93, 557 search help exit, 469 SQL performance optimization tool, 387 optimization, 185
SAP HANA XS 씮 SAP HANA Extended Searched case, 285 SQL processor, 56 output parameter, 241
Application Services Secondary connection, 156 SQL profile, 401 qualities, 170
SAP Host Agent, 31 Secondary database, 145, 437 SQL analysis, system-wide, 362 reuse, 172
SAP InfiniteInsight, 503 Secondary index, 574 SQL dialect, 161 rules, 587
SAP IQ (database), 38 Segmentation, 511 SQL expression, in Open SQL, 304 scalar parameter, 180
SAP Landscape Transformation SELECT statement, 558 SQL Injection, 135 table parameter, 180
Replication Server, 37 SELECT* statement, 404 SQL Monitor, 322, 367, 386, 401 table type, 180
SAP List Viewer, 299, 498, 499 Selectivity, 447 activate, 367 table variable, 172
with Integrated Data Access, 299 Sentiment analysis, 442, 444, 477 analysis, 369 UDF, 179
SAP List Viewer with Integrated Data Sequence, 98, 163 entry point, 370 user-defined function, 179
Access, 289 Server component, 56 SQL Performance Tuning Worklist, 379 WITH RESULT VIEW, 181
SAP Lumira, 425 Session context, 200 SQL statement SRS 씮 Spatial reference system
SAP Management Console, 31 Session variable, 285 analysis, 389, 402 ST_GEOMETRY, 166
SAP memory, 580 Set operation, 568 CREATE FULLTEXT INDEX, 450 Stack trace, 352
SAP NetWeaver AS ABAP, 34 SFLIGHT, 595, 596 EXEC, 556 Standard database connection, 116
7.4, 284 Shadow column, 449 EXEC SQL, 546 Standard view, 166
7.5, 277, 284 Shared buffer, 580 FOR ALL ENTRIES, 571 Star schema, 194, 210, 211
638 639
Index Index
640 641
First-hand knowledge.