Anda di halaman 1dari 30

First-hand knowledge.

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

“Integrating Native SAP HANA


Development Objects with ABAP”

Contents

Index

The Authors

Hermann Gahm, Thorsten Schneider, Christiaan Swanepoel, Eric Wes-


tenberger
ABAB Development for SAP HANA
625 Pages, 2016, $79.95
ISBN 978-1-4932-1304-7

www.sap-press.com/3973
ABAP developers want to use views and database procedures
Chapter 5

that they’ve created in SAP HANA Studio in ABAP. Developers


are also used to a high-performance transport system and expect
consistent transport of native SAP HANA development objects
via the Change and Transport System.

5 Integrating Native SAP HANA


Development Objects with ABAP

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.

5.1 Integrating Analytic Views


In the previous chapter, you learned how to model the different view
types in SAP HANA Studio and how to access the results of a view using
the Data Preview or Microsoft Excel. In Chapter 4, Section 4.4.4, we also
explained how to address the generated column views via SQL.

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

5.1.1 Access via Native SQL WRITE: / <l>-carrid , <l>-connid, <l>-fldate,


<l>-route .
When activating any of the presented view types in SAP HANA, a column ENDLOOP.
view is created in the database catalog in the _SYS_BIC schema with a Listing 5.1 Accessing an Attribute View via ADBC
public synonym, for example, 'test.a4h.book.chapter04::AT_FLIGHT'.
As you can see, this is a regular access using Native SQL. If an error
Using these names, you can access this view from ABAP. Listing 5.1
occurs during execution, the text of the SQL exception points to the
shows how the AT_FLIGHT attribute view created in Chapter 4, Section
cause. In addition to SQL coding errors, which are also visible when
4.4.1, is accessed via ABAP Database Connectivity (ADBC).
accessing views via the SQL console, there may also be errors related to
" Definition of the result structure mapping the result to the ABAP data type. Recommendations regarding
TYPES: BEGIN OF ty_data,
carrid TYPE s_carr_id,
this topic are given in Section 5.1.4.
connid TYPE s_conn_id,
fldate TYPE s_date,
route TYPE string, 5.1.2 External Views in the ABAP Data Dictionary
END OF ty_data.
In ABAP 7.4, external views are a new view type in the DDIC. Using such
CONSTANTS: gc_view TYPE string VALUE views, you can import column views defined in the SAP HANA reposi-
'test.a4h.book.chapter04::AT_FLIGHT'. tory into the DDIC. These views are called external views because they
DATA: lt_data TYPE TABLE OF ty_data.
aren’t fully defined in the DDIC but are used as a kind of proxy allowing
" Access to the attribute view the corresponding column view in the _SYS_BIC schema to be accessed
DATA(lv_statement) = from ABAP.
| SELECT carrid, connid, fldate, route |
&& | FROM "{ gc_view }"| External views can only be defined using the ABAP Development Tools Create external
&& | WHERE mandt = '{ sy-mandt }' ORDER BY fldate|. views in Eclipse
in Eclipse. To do so, you create a new development object of the Dictio-
TRY. nary View type. Figure 5.1 shows the New Dictionary View dialog for
" Prepare SQL connection and statement the AT_FLIGHT attribute view.
DATA(lo_result_set) =
cl_sql_connection=>get_connection(
)->create_statement(
tab_name_for_trace = conv #( gc_view )
)->execute_query( lv_statement ).

" Get result


lo_result_set->set_param_table( REF #( lt_data ) ).
lo_result_set->next_package( ).
lo_result_set->close( ).
CATCH cx_sql_exception INTO DATA(lo_ex).
" Error handling
&& | WHERE mandt = '{ sy-mandt }' ORDER BY fldate|.
WRITE: | { lo_ex->get_text( ) } |.
ENDTRY.

LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<l>).

Figure 5.1 Creating an External View in the ABAP Data Dictionary

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

nize the external view to avoid runtime errors. Recommendations on


synchronizing developments within a development team are provided For the external view shown in Figure 5.2, we manually mapped the
in Chapter 14. FLDATE column to the ABAP DATS data type. This may appear strange at
first glance because this information is already present in the underlying
DDIC table; however, the attributes of column views in SAP HANA
don’t have a reference to columns of existing tables that is recognizable
by the DDIC. For instance, the FLDATE column could also be a calculated
attribute.

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.

The transport of external views (and other SAP HANA-specific develop-


ments) is described in Section 5.3.

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

5.1.3 Options for Accessing External Views


accessing ABAP tables using Open SQL, ABAP developers should use cau-
Advantages The main advantage of external views is that you can use Open SQL to tion when following this approach. The troubleshooting tools and possible
access SAP HANA views. This allows you to benefit from the following runtime errors during SQL access are explained in more detail in Chapter 7,
advantages: Section 7.2.

왘 Syntax checking by the ABAP Compiler and content assist during


In addition to Open SQL, you can also address external views using Native Native access via
development (code completion) ADBC
SQL. This variant, which seems somewhat awkward at first glance, is
왘 Automatic client handling useful if you want to use an SQL query to access an SAP HANA view in
왘 Iterating through a result set within a SELECT loop a way that isn’t supported using Open SQL, such as a fuzzy search in an
attribute view (see Chapter 10, Section 10.4). Compared to accessing the
왘 Use of the INTO CORRESPONDING FIELDS expression for a matching
generated column view in the _SYS_BIC schema via Native SQL, the
selection in a target structure independent of the sequence in the pro-
external view has an advantage in that a suitable target structure for a
jection list
selection via ADBC already exists in the DDIC.
왘 Use of IN for the WHERE condition to transfer selection options

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:

왘 IV_MANDT: Client. Example 2: Tabular Output Parameters


왘 IV_CARRID: ID of an airline. Alternatively, you can use the EXECUTE_QUERY method (together with the
WITH OVERVIEW addition) to execute a database procedure. This also
왘 EV_CARRNAME: Name of an airline.
works for database procedures that have tabular input and output
PARAMETERS: p_carrid TYPE s_carr_id. parameters.
DATA: lo_sql_statement TYPE REF TO cl_sql_statement, Program ZR_A4H_CHAPTER5_TOP_ADBC in Listing 5.4 shows an Example of output
lv_carrname TYPE s_carrname. parameters
example of the EXECUTE_QUERY method, in which the DETERMINE_TOP_
TRY. CONNECTIONS database procedure is called. This database procedure
" create statement determines an airline’s top connections and has the following input and
lo_sql_statement =
cl_sql_connection=>get_connection( output parameters:
)->create_statement( ).
왘 IV_MANDT: Client.
" bind parameters 왘 IV_CARRID: ID of an airline.
lo_sql_statement->set_param( data_ref =
REF #( sy-mandt ) 왘 IV_ALGORITHM: Controls how the top connections are determined.
inout = cl_sql_statement=>c_param_in ).
왘 ET_CONNECTIONS: A table parameter that contains the airline’s ID CAR-
lo_sql_statement->set_param( data_ref = RID and connection code CONNID.
REF #( p_carrid )
inout = cl_sql_statement=>c_param_in ). PARAMETERS: p_carrid TYPE s_carr_id.

lo_sql_statement->set_param( data_ref = " Definition of the result structure


REF #( lv_carrname ) TYPES: BEGIN OF ty_connections,

240 241
5 Integrating Native SAP HANA Development Objects with ABAP Integrating Native Procedures with ABAP 5.2

carrid TYPE s_carr_id, lo_result_set->close( ).


connid TYPE s_conn_id, CATCH cx_sql_exception INTO DATA(lo_ex).
END OF ty_connections.
" Error handling
DATA: lt_connections TYPE TABLE OF ty_connections, WRITE: | { lo_ex->get_text( ) } |.
lv_statement TYPE string, ENDTRY.
lo_result_set TYPE REF TO cl_sql_result_set,
lo_connections TYPE REF TO data. LOOP AT lt_connections ASSIGNING
FIELD-SYMBOL(<ls_connections>).
TRY. WRITE: / <ls_connections>-carrid ,
" Delete local temporary table <ls_connections>-connid.
lv_statement = | DROP TABLE #ET_CONNECTIONS |. ENDLOOP.
cl_sql_connection=>get_connection( Listing 5.4 Handling Table-Based Output Parameters
)->create_statement( )->execute_ddl( lv_statement ).
CATCH cx_sql_exception.
" The local temporary table may not exist, We’ll now use the program to explain, in particular, how tabular input Temporary tables
" we ignore this error and output parameters are exchanged with a database procedure. Pro-
ENDTRY.
gram ZR_A4H_CHAPTER5_TOP_ADBC uses temporary table #ET_CON-
TRY. NECTIONS to transfer the ET_CONNECTIONS table parameter.
" Create local temporary table
lv_statement = | CREATE LOCAL TEMPORARY ROW|
Temporary Tables
&& | TABLE #ET_CONNECTIONS LIKE "_SYS_BIC".|
&& |"test.a4h.book.chapter04::GlobalTypes.t| Many databases, including the SAP HANA database, enable you to save tem-
&& |t_connections" |. porarily the interim and final results of calculations in temporary tables. For
cl_sql_connection=>get_connection(
this use case, temporary tables have many different advantages over conven-
)->create_statement( )->execute_ddl( lv_statement ).
tional tables:
" Call database procedure 왘 The table definition and table contents are deleted automatically from the
lv_statement = | CALL "test.a4h.bo| database if they are no longer required.
&& |ok.chapter04::DETERMINE_TOP_CONNECTIONS|
&& |"( '{ sy-mandt }' , '{ p_carrid }', 'P'| 왘 The database automatically isolates data in parallel sessions from one
&& |, #ET_CONNECTIONS ) WITH OVERVIEW |. another. It’s neither necessary nor possible to place locks on temporary
lo_result_set = cl_sql_connection=>get_connection( tables.
)->create_statement( )->execute_query( 왘 The database doesn’t write a transaction log for temporary tables.
lv_statement ).
lo_result_set->close( ). 왘 Generally, it’s more efficient to use temporary tables than conventional
tables.
" Read local temporary table
lv_statement = | SELECT * FROM #ET_CONNECTIONS |. SAP HANA supports global and local temporary tables:
lo_result_set = cl_sql_connection=>get_connection( 왘 Global temporary tables
)->create_statement( )->execute_query( The table definition can be used in different sessions. The table contents
lv_statement ).
can only be displayed for the current session. At the end of the session, the
table contents are deleted from the database automatically.
" Read result
GET REFERENCE OF lt_connections INTO 왘 Local temporary tables
lo_connections. Both the table definition and the table contents are only valid for the cur-
lo_result_set->set_param_table( lo_connections ). rent session. In other words, both are deleted from the database automat-
lo_result_set->next_package( ).
ically at the end of the session.

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.

5.2.2 Defining Database Procedure Proxies


As of ABAP Release 7.4, you can define a database procedure proxy to
access database procedures from ABAP. Note that only the XML file for-
mat (.procedure) is supported (see Chapter 4, Section 4.3).

A database procedure proxy is a proxy object that represents a database


procedure in the DDIC.

Multiple Proxy Objects for One Database Procedure

Technically, it’s possible to create multiple database procedure proxies for


one database procedure. However, we don’t recommend this. In the DDIC,
you should never create more than one proxy object for a database proce-
Figure 5.3 Creating a Database Procedure Proxy
dure.

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.

LOOP AT lt_connections ASSIGNING


Figure 5.4 Database Procedure Proxy and Interface
FIELD-SYMBOL(<ls_connections>).
WRITE: / <ls_connections>-carrid ,
Listing 5.6 shows the interface that the system automatically creates <ls_connections>-connid.
ENDLOOP.
after the data types have been adjusted.
Listing 5.7 Calling a Database Procedure Proxy
interface ZIF_DETERMINE_TOP_CONNECTIONS public.
types: iv_mandt type mandt.
types: iv_carrid type s_carr_id.
The program uses the CALL DATABASE PROCEDURE statement to call the Explanation of
types: iv_algorithm type c length 1. DETERMINE_TOP_CONNECTIONS_XML database procedure via the ZDP_ the program
types: begin of et_connections, DETERMINE_TOP_CONNECTIONS proxy. When defining internal table LT_
carrid type s_carr_id,
CONNECTIONS, the program refers to the ZIF_DETERMINE_TOP_CONNEC-
connid type s_conn_id,
end of et_connections. TIONS interface. The program catches any problems that may occur
endinterface. when calling the database procedure (exceptions of the type CX_SY_DB_
Listing 5.6 Interface of the Proxy Object PROCEDURE_SQL_ERROR and CX_SY_DB_PROCEDURE_CALL).

5.2.3 Calling Database Procedure Proxies


5.2.4 Adjusting Database Procedure Proxies
Now that you’ve activated the database procedure proxy, you can use
If you change a database procedure (or more accurately, the interface of
the proxy object to call the database procedure. Program ZR_A4H_
a database procedure) in SAP HANA Studio, you must synchronize the
CHAPTER5_TOP_PROXY in Listing 5.7 shows an example of this usage.
proxy object with the SAP HANA repository via the Synchronize button
(refer to Figure 5.4).

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

SAPABD.SCUSTOM SAPABQ.SCUSTOM SAPABP.SCUSTOM

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.

If you’re interested in further information on the development organi- Basic Functions


zation and transport in SAP HANA, please refer to the documentation of The SAP HANA transport container is available in SAP NetWeaver 7.31
the SAP HANA database. as of SP 5 and as of Release 7.4. It can be used if SAP HANA is the pri-
mary database.

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.

Shared Data File


Transport Control File
Export Directory
Import
AS ABAP

Transport Byte Transport- Byte


container String container String

Import
Snapshot (After-Import
Method)
SAP HANA
Database

Delivery Delivery
Unit Unit

Source System Target System


Figure 5.8 Creating a Transport Container

Figure 5.7 How the SAP HANA Transport Container Works


When you create a transport container, the system automatically syn- Synchronization

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.

ABAP System ABAP System

Figure 5.9 Synchronization and Content of a Transport Container


SAP HANA SAP HANA
ABAP System Database Database

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

왘 Unlike development objects that are managed in AS ABAP, the system


doesn’t automatically record changes to the content of a delivery unit,
and the objects of a delivery unit aren’t locked exclusively for a trans-
port request. It’s thus your responsibility to synchronize the transport
container with the delivery unit manually.
왘 When exporting the development objects from the source system, the
transport considers only the active objects.
왘 The transport system doesn’t recognize any dependencies between
multiple transport containers that are transported simultaneously.

Within the restrictions, the transport container allows you to transport


applications consistently that consist partly of ABAP objects and partly
of SAP HANA content. We recommend its use if the prerequisites that
are described at the start of Section 5.3.2 are fulfilled.

You don’t require the SAP HANA transport container if you use the
options described in Chapter 6.

260
Contents at a Glance

PART I Basic Principles

1 Overview of SAP HANA.................................................. 29

2 Introducing the Development Environment.................... 71

3 Database Programming Using SAP NetWeaver


Application Server ABAP ................................................ 109

PART II Introduction to ABAP Programming


with SAP HANA

4 Native Database Development Using SAP HANA............ 161

5 Integrating Native SAP HANA Development


Objects with ABAP ......................................................... 231

6 Advanced Database Programming with ABAP 7.4 .......... 261

7 Runtime and Error Analysis with SAP HANA................... 319

8 Sample Scenario: Optimizing an Existing Application...... 385

PART III Advanced Techniques for


ABAP Programming for SAP HANA

9 Integrating Analytical Functionality ................................ 417

10 Text Search and Analysis of Unstructured Data ............... 441

11 Decision Tables in SAP HANA ........................................ 483

12 Function Libraries in SAP HANA ..................................... 501

13 Processing Geoinformation ............................................. 523

14 Practical Tips .................................................................. 539


Dear Reader, Contents

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

@ (for annotations), 294 ABAP Development Tools for SAP Net-


$parameters, 283 Weaver (Cont.)
template, 89
A user settings, 86
ABAP Managed Database Procedure
ABAP (AMDP), 140, 164, 262, 307, 535
ABAP code analysis, 386 framework, 307
ABAP project, 84 ABAP memory, 580
ABAP runtime environment, 112 ABAP profiler, 321, 344
ABAP trace, 342, 406 ABAP program
ABAP Unit, 323 analysis, 399
code analysis, 321 runtime, 399
schema, 115 ABAP table buffer 씮 Table buffer
source code search, 474 ABAP Test Cockpit, 89, 321, 332, 335
type system, 119 Accelerator, 59
ABAP 7.4, 603 Access operator, 187
ABAP application Access time, 41
transport, 549 CPU cache, 42
ABAP buffer flash memory, 42
cross-user, 577 hard disk, 42
ABAP CDS, 263 main memory, 42
modeling, 300 ACID principle, 30
ABAP Core Development Tools, 78, 79 Activation log, 300
ABAP Data Dictionary (DDIC), 85, 110, ADBC, 139, 239, 452, 466, 546, 584
124, 450 Administration Console, 93
type system, 120 AFL, 501, 504
ABAP Database Connectivity 씮 ADBC Software Development Kit, 503
ABAP Development Tools for SAP After-import method, 258
NetWeaver, 32, 233 Aggregate function, 132, 289
ABAP resource URL, 86 Aggregation, 286, 299
authorizations, 84 Alias, 286
code analysis, 334 Alternative implementation, 542
components, 79 ALV 씮 SAP List Viewer
create program, 88 AMDP, 466, 508
debugger, 91 BAdI, 314
execute program, 91 call database procedure, 311
favorite packages, 85 class, 308
perspective, 83 database connection, 311
project, 84 enhance, 314
Project Explorer, 85 method, 307, 309
SAP GUI integration, 85 tips, 318
system library, 85 troubleshooting, 311

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

Statement Time zone, 544 U View (Cont.)


FOR ALL ENTRIES, 331 Token, 448, 476 SQL view, 166
Statement transformation, 149 Tools for performance analysis UNION, 286 View-on-view schema, 300
Statistic record, 321 runtime check monitor (Transaction UNION ALL, 286, 290
Statistics server, 57 SRTCM), 377 Unit conversion, 217 W
Stop word, 447, 460 Totals table, 194 Unit test, 322, 324, 391, 555
Stored procedure 씮 Database procedure Trace, 337 Update, 111 Web Dynpro ABAP, 472
String, 49 Tracing, 328 Update module, 137 context, 472
Structure, 298, 606 Transaction Eclipse, 473
Structure component, 298 ATC, 321 V Weighted average, 506, 507
Structured Query Language 씮 SQL DBACOCKPIT, 146, 322, 362 WHERE, 282, 286
Subquery, 133, 571 RSA1, 430 Validation, 105 clause, 558, 574
Subselect, 286 RSDD_HM_PUBLISH, 429 Value suggestion, 443 Where-used list, 90
Synonym, 98, 106, 163 SAT, 321, 342, 399, 406 Variable White list, 557
Syntax check, 89 SCI, 321, 329 global, 285 Wildcard, 441
Syntax warning SE11, 85 scope, 605 WITH PARAMETERS, 283
prevent, 284 SE80, 473 session, 285 Word dictionary, 479
System landscape, mixed, 258 SFW5, 475 Version history, 108 Work process, 111, 244
System optimization, 388 SQLM, 322, 367 View, 98, 162, 194, 265 Wrapper function
System schema, 96, 115 SRTCM, 377 analytic view, 195, 210 AFL, 506
ST04, 362 attribute view, 195
T ST05, 151, 156, 157, 321, 374, 407 calculation view, 195, 219 X
ST12, 321, 354 database view, 138
Table, 162 ST22, 325 dictionary view, 233 XS Engine, 35
internal, 606 STAD, 321, 337, 390, 397, 406 external, 238, 261, 549, 552 XS Server, 57
replicated, 621 STATS, 342
SFLIGHT, 111 SWLT, 322, 379, 380, 401
table buffer, 114, 331, 549, 573, 579 Transaction data, 211, 598
table definition, 98 Transaction SRTCM, check, 377
table parameter, 180 Transactional system, 420
table statistics, 398 Transport
table type, 180 change request, 257
table variable, 172 developer mode, 252
temporary table, 243 log, 258
Target cardinality, 281 logical transport object, 256
Target data source, 276 mixed system landscape, 258
cardinality, 276 recommendations, 259
Temporary table, 165 synchronization, 257
Term mapping, 461 transport container, 255
Test, 555 Transport container, 254
Text analysis, 442, 444, 476 TREX, 447
Text join, 197 Trigger, 163
Text mining, 36 Troubleshooting, 319, 321, 322
Text search, 444, 448 Truth value, 294
Time data
generate, 208

640 641
First-hand knowledge.

Hermann Gahm Hermann Gahm is an AGS support architect


at SAP working with ABAP and database performance. He
developed internal trainings relating to ABAP performance
and is the author/co-author of several SAP PRESS books in
English and German.

Thorsten Schneider is a product manager for SAP HANA


at SAP. He studied business information management and
worked as a PLM developer and solution architect. Before he
assumed his current position, he worked as a product mana-
ger for ABAP and HANA at SAP.

Christiaan Swanepoel Christiaan Swanepoel has worked for


SAP SE since 2003. He is currently Product Owner in the area
of ABAP development tools for Core Data Services (CDS) in
Eclipse. Prior to that, he worked in the area of ABAP pro-
gramming language development and was part of the ABAP
for SAP HANA integration team that deals with the software
development based on ABAP and SAP HANA. Another focus
of his work is agile software development. This includes agile
testing of CDS objects in ABAP.

Eric Westenberger works at SAP as a product expert in the


area of technology and innovation for the SAP HANA plat-
form. After having completed his research work, he worked
Hermann Gahm, Thorsten Schneider, Christiaan Swanepoel, Eric Wes- as a developer and architect for SAP NetWeaver (ABAP and
tenberger Java) before he assumed his current position.

ABAB Development for SAP HANA


625 Pages, 2016, $79.95 We hope you have enjoyed this reading sample. You may recommend
ISBN 978-1-4932-1304-7 or pass it on to others, but only in its entirety, including all pages. This
reading sample and all its parts are protected by copyright law. All usage
www.sap-press.com/3973 and exploitation rights are reserved by the author and the publisher.

Anda mungkin juga menyukai