- Home
- SAP
- SAP Certified Development Associate
- C_HANADEV_18
- SAP Certified Development Associate - SAP HANA 2.0 SPS06 Questions and Answers
Free Practice Questions for the SAP Certified Development Associate C_HANADEV_18 Exam (2026 Updated)
At Marks4sure, we are dedicated to providing IT professionals with the most accurate and reliable preparation materials for the SAP C_HANADEV_18 exam. To support your certification journey, we have made a selection of our premium 2026 SAP Certified Development Associate practice questions and answers available completely free. You can take this practice test as many times as you need. Every question includes a detailed, expertly verified explanation to ensure you fully grasp the core security concepts before test day.
What characterizes the Node.js environment? There are 2 correct answers to this question.
Options:
It uses a synchronous programming model.
It is a client-side design-time environment for JavaScript.
It is single-threaded.
It is built on Google's V8 JavaScript engine.
Answer:
C, DExplanation:
According to the SAP Web IDE for SAP HANA Developer Guide, the Node.js environment is characterized by the following features:
- It is single-threaded: Node.js uses a single thread to handle multiple concurrent requests, instead of creating a new thread for each request. This reduces the memory and CPU overhead, and enables high scalability and performance. However, it also means that any blocking or long-running operation can affect the responsiveness of the entire application. Therefore, Node.js relies on asynchronous and non-blocking I/O operations, callbacks, promises, and events to handle concurrency and avoid blocking the main thread.
- It is built on Google’s V8 JavaScript engine: Node.js uses the V8 engine to execute JavaScript code. The V8 engine is a fast and powerful engine that compiles JavaScript code into native machine code, and supports the latest ECMAScript standards and features. The V8 engine also provides access to low-level system resources, such as files, network, and processes, through the Node.js API.
The other options are incorrect, because:
- Node.js does not use a synchronous programming model, but an asynchronous and event-driven programming model. A synchronous programming model means that each operation blocks the execution until it is completed, and the next operation can only start after the previous one is finished. An asynchronous programming model means that each operation can start without waiting for the previous one to finish, and the execution can continue with other tasks while the operation is in progress. An event-driven programming model means that each operation can trigger an event when it is completed, and the event can invoke a callback function that handles the result or the error of the operation.
- Node.js is not a client-side design-time environment for JavaScript, but a server-side run-time environment for JavaScript. A client-side design-time environment for JavaScript means that the JavaScript code is written and executed in the browser, and it can manipulate the HTML document and interact with the user interface. A server-side run-time environment for JavaScript means that the JavaScript code is written and executed on the server, and it can handle HTTP requests and responses, communicate with databases, and perform business logic.
References: SAP Web IDE for SAP HANA Developer Guide, Chapter 6, Section 6.4.2, page 2111.
To perform a specific task of an XS advanced application, what does a user need? Please choose the correct answer.
Options:
To have directly assigned a Role Collection
To have directly assigned a Scope
To be assigned to an Organization
To be assigned to a Space
Answer:
AExplanation:
According to the SAP HANA Developer Guide, to perform a specific task of an XS advanced application, a user needs to have directly assigned a role collection. A role collection is a set of roles that grant the user the necessary privileges and authorizations to access and use the application. A role collection can be assigned to a user either directly by an administrator, or indirectly by a workflow or a self-service. The other options are incorrect, because:
- To have directly assigned a scope is not a way to perform a specific task of an XS advanced application, but a way to limit the access of a user to a subset of resources within an application. A scope is a qualifier that can be added to a role to restrict the user’s access to a specific resource, such as a space, an organization, or a service instance. A scope does not grant any privileges or authorizations by itself, but only modifies the existing ones.
- To be assigned to an organization is not a way to perform a specific task of an XS advanced application, but a way to group users and resources in a logical unit. An organization is a container that holds spaces, users, applications, and services. An organization can have one or more spaces, which are isolated environments for developing, deploying, and running applications. A user can belong to one or more organizations, but can only perform tasks in the spaces that they are assigned to.
- To be assigned to a space is not a way to perform a specific task of an XS advanced application, but a way to access a specific environment for developing, deploying, and running applications. A space is a sub-container within an organization that holds applications and services. A space can have one or more users, who can have different roles and permissions depending on their tasks. A user can belong to one or more spaces within an organization, but can only perform tasks in the spaces that they are assigned to.
References: SAP HANA Developer Guide, Chapter 6, Section 6.4.2, page 2111.
Which of the following SQL Script elements do you use to transform a set of arrays into an intermediate table variable? Please choose the correct answer.
Options:
OSET
ARRAY
UNNEST
UNSET
Answer:
CExplanation:
The UNNEST operator is an SQL Script element that transforms a set of arrays into an intermediate table variable. The UNNEST operator takes one or more array expressions as input and returns a table variable with one or more columns, each corresponding to an array expression. The table variable has as many rows as the maximum length of the input arrays, and the values in each column are taken from the corresponding array elements. If an input array has fewer elements than the maximum length, the missing values are padded with NULLs. The UNNEST operator can be used in the FROM clause of a SELECT statement, or in the INTO clause of a SET statement.
For example, suppose you have two arrays A and B, where A = [1, 2, 3] and B = [4, 5]. You can use the UNNEST operator to transform them into a table variable T as follows:
SET T = UNNEST (A, B);
The result is:
Table
A
B
1
4
2
5
3
NULL
You can also use the UNNEST operator to transform an array of complex types, such as structs or tables, into a table variable with multiple columns. For example, suppose you have an array C of struct type, where C = [{x: 1, y: 2}, {x: 3, y: 4}]. You can use the UNNEST operator to transform it into a table variable U as follows:
SET U = UNNEST (C.x, C.y);
The result is:
Table
C.x
C.y
1
2
3
4
The following SQL Script elements are not used to transform a set of arrays into an intermediate table variable, but for other purposes:
- OSET: This is a data type that represents an ordered set, which is a collection of distinct values that preserves the order of insertion. OSETs can be used to store and manipulate ordered data, such as ranking or sorting results. OSETs can be created by using the OSET constructor or the OSET_AGG aggregate function.
- ARRAY: This is a data type that represents an array, which is a collection of values that can have duplicates and are accessed by their position. Arrays can be used to store and manipulate complex or multi-dimensional data, such as matrices or tensors. Arrays can be created by using the ARRAY constructor or the ARRAY_AGG aggregate function.
- UNSET: This is not a valid SQL Script element, but a possible typo for UNNEST.
References:
- [SAP HANA Platform Documentation], SAP HANA SQL and System Views Reference, Chapter 2: SQL Data Types and Literals, Section 2.2: Collection Types, Subsection 2.2.2: Array Type, pp. 36-38.
- [SAP HANA Platform Documentation], SAP HANA SQL and System Views Reference, Chapter 2: SQL Data Types and Literals, Section 2.2: Collection Types, Subsection 2.2.3: Ordered Set Type, pp. 38-40.
- [SAP HANA Platform Documentation], SAP HANA SQL and System Views Reference, Chapter 3: SQL Expressions, Section 3.6: Collection Expressions, Subsection 3.6.2: UNNEST Operator, pp. 69-70.
Which of the following are characteristics of database procedures?
Options:
Database procedures can have both input and output parameters; however, a parameter CANNOT be both input and output.
Database procedures can have several output parameters, and a mix of both scalar and table types is possible.
If, in the database procedure header, you use the READS SQL DATA option, then INSERT statements are prohibited; however, dynamic SQL is allowed.
If, in the database procedure header, you use the SQL SECURITY INVOKER option, then only the owner of the procedure can start it.
Answer:
A, BExplanation:
According to the SAP HANA SQLScript Reference1, database procedures are subroutines that can be called from SQL statements or other database procedures. Database procedures can have the following characteristics:
- Database procedures can have both input and output parameters; however, a parameter CANNOT be both input and output. Input parameters are used to pass values to the procedure, while output parameters are used to return values from the procedure. A parameter can be either scalar or table type, depending on the data type and cardinality. A parameter cannot be both input and output, because this would create ambiguity and inconsistency in the parameter passing mechanism. For example, you cannot declare a parameter as IN OUT, or assign a value to an input parameter, or read a value from an output parameter. For more information on database procedure parameters, see [Parameters of Database Procedures]2.
- Database procedures can have several output parameters, and a mix of both scalar and table types is possible. Output parameters are used to return values from the procedure to the caller. A procedure can have zero or more output parameters, depending on the purpose and logic of the procedure. Output parameters can be either scalar or table type, depending on the data type and cardinality. A procedure can have a mix of both scalar and table output parameters, as long as they are compatible with the caller’s expectations and syntax. For example, you can use a SELECT statement with INTO clause to assign values to scalar output parameters, or use a SELECT statement with RESULT clause to return a table output parameter. For more information on database procedure output parameters, see [Output Parameters of Database Procedures]3.
- If, in the database procedure header, you use the READS SQL DATA option, then INSERT statements are prohibited; however, dynamic SQL is allowed. The READS SQL DATA option is used to indicate that the procedure only reads data from the database, and does not modify or write any data. This option is useful for performance optimization and security enforcement, as it allows the database to apply certain optimizations and checks to the procedure. However, this option also imposes some restrictions on the procedure, such as prohibiting any INSERT, UPDATE, DELETE, or MERGE statements, or any other statements that modify the database state. Dynamic SQL, which is SQL code that is constructed and executed at run time, is still allowed, as long as it does not violate the READS SQL DATA option. For more information on the READS SQL DATA option, see [Procedure Header Options]4.
- If, in the database procedure header, you use the SQL SECURITY INVOKER option, then only the owner of the procedure can start it. The SQL SECURITY INVOKER option is used to indicate that the procedure is executed with the privileges of the user who invokes the procedure, rather than the privileges of the user who created the procedure. This option is useful for security enforcement and access control, as it allows the database to apply the appropriate authorization checks and restrictions to the procedure. However, this option does not affect who can start the procedure, as this is determined by the GRANT EXECUTE statement, which grants the execute privilege on the procedure to a specific user or role. The SQL SECURITY INVOKER option only affects how the procedure is executed, not who can execute it. For more information on the SQL SECURITY INVOKER option, see [Procedure Header Options]4.
References: 1: SAP HANA SQLScript Reference 2: Parameters of Database Procedures 3: Output Parameters of Database Procedures 4: Procedure Header Options
You developed a multi-target application that contains only a database module. Which environment are the runtime objects created in? Please choose the correct answer.
Options:
Java Runtime Environment (JRE)
SAP HANA Runtime Tools (HRTT)
SAP Web IDE for SAP HANA
HANA Deployment Infrastructure Container
Answer:
DExplanation:
A multi-target application (MTA) is a single application that consists of multiple modules that are developed using different technologies and designed to run on different target runtime environments. A database module is a module that contains database artifacts, such as tables, views, procedures, or functions, that are deployed to a SAP HANA database. A HANA Deployment Infrastructure (HDI) container is a logical grouping of database objects that are isolated from other containers and schemas in the same database. An HDI container has its own technical user, roles, and privileges, and can be accessed only through a service binding. When a database module is built, the SAP Web IDE for SAP HANA or the SAP Business Application Studio automatically creates an HDI container and binds it as a resource to the database module. It also creates the runtime objects, such as physical tables or views, in the schema associated with the HDI container. Therefore, the runtime objects of a database module are created in the HDI container, which is the correct answer. The other options are incorrect because they are not the environments where the runtime objects of a database module are created. The Java Runtime Environment (JRE) is a software environment that provides the minimum requirements for executing a Java application. The SAP HANA Runtime Tools (HRTT) are a set of tools that enable developers to create, run, and debug SAP HANA native applications in Eclipse. The SAP Web IDE for SAP HANA is a web-based development environment that supports the development of MTA projects and modules. References:
- SAP HANA Platform 2.0 SPS06: Developing Multitarget Applications, Section 1.1
- SAP HANA Platform 2.0 SPS06: SAP HANA Deployment Infrastructure, Section 1
- SAP HANA Platform 2.0 SPS06: SAP HANA Database Application Development, Section 2.1
- SAP HANA Platform 2.0 SPS06: SAP HANA Database Application Development, Section 2.2
- SAP HANA Platform 2.0 SPS06: SAP HANA Database Application Development, Section 2.3
- SAP Business Application Studio Multitarget Application (MTA) development toolkit, Section 2
Why do you use associations in your persistence model for SAP HANA extended application services, advanced model (XS advanced)? Please choose the correct answer.
Options:
To enforce database-level constraints
To define the relationships between contexts and views
To define multiplicity and key of an entity relation
To set relationships between multiple contexts
Answer:
CExplanation:
Associations are used in the persistence model for SAP HANA extended application services, advanced model (XS advanced) to define the multiplicity and key of an entity relation. An entity relation is a logical connection between two entities, such as one-to-one, one-to-many, or many-to-many. Multiplicity specifies how many instances of one entity can be related to one instance of another entity. Key specifies which attributes of the related entities are used to identify and join the instances. Associations are defined using the Core Data Services (CDS) language, which is a declarative language for modeling data structures and services. Associations are part of the CDS entity definition, and they can be used to navigate from one entity to another, and to filter, aggregate, or project data from the target entity12.
The other options are not correct because they are not the purposes of using associations in the persistence model for XS advanced. Associations do not enforce database-level constraints, such as primary keys, foreign keys, or check constraints. These constraints are defined separately using the CDS annotations or the SQL DDL statements. Associations do not define the relationships between contexts and views, which are different types of CDS artifacts. A context is a namespace for grouping related CDS artifacts, such as entities, views, types, or associations. A view is a CDS artifact that defines a data model based on one or more entities or other views, and applies filters, joins, aggregations, or other operations on the data. Associations do not set relationships between multiple contexts, which are independent from each other and do not have any logical connection. References:
- SAP HANA Platform, SAP HANA Modeling Guide for SAP HANA Web Workbench, Core Data Services
- SAP HANA Platform, SAP HANA Developer Guide for SAP HANA Web IDE, Developing Database Modules, Developing Core Data Services Models, Defining Associations
You need to edit a database procedure. You are concerned that the version of the database procedure file you have in your local Git repository may not be synchronized with the latest version in the remote Git repository, but at this time, you do NOT want to sync the file. You only want to see the commits applied to the file in the remote repository. Which command must you use?
Options:
Git stash
Git fetch
Git merge
Git pull
Answer:
BExplanation:
To see the commits applied to the file in the remote Git repository without syncing the file, you need to use the git fetch command. This command downloads the latest changes from the remote repository to your local repository, but does not merge them with your local branches. This way, you can inspect the differences between your local and remote files, and decide whether to merge them later or not. You can use the SAP Web IDE for SAP HANA or the command line to execute the git fetch command. The other options are incorrect because they either sync the file or do not download the changes from the remote repository. The git stash command saves your local changes to a temporary stash and reverts your working directory to the last commit. This command is useful when you want to switch branches or pull changes without committing your local changes, but it does not download the changes from the remote repository. The git merge command combines the changes from one branch into another branch. This command is useful when you want to sync your local branch with the remote branch, but it does not allow you to see the commits applied to the file before merging. The git pull command fetches and merges the changes from the remote repository into your local branch. This command is useful when you want to update your local branch with the latest changes from the remote branch, but it does not allow you to see the commits applied to the file before merging. References:
- Git Fetch - SAP Help Portal
- Git Merge - SAP Help Portal
- Git Pull - SAP Help Portal
- Git Stash - SAP Help Portal
- HA100 - SAP HANA 2.0 SPS06 Introduction - SAP Training
Which OData capacity do you use when you need to restrict the number or selection of exposed columns? Please choose the correct answer.
Options:
Parameter entity sets
Aggregation
Key specification
Property projection
Answer:
DExplanation:
Property projection is an OData capability that allows you to restrict the number or selection of exposed columns in an OData service. Property projection is achieved by using the $select query option, which specifies a subset of properties to be included in the response. The $select query option can be applied to a single entity, a collection of entities, or a complex type. Property projection can be used to reduce the payload size and improve the performance of the OData service.
For example, suppose you have an OData service that exposes a Products entity set with the following properties: ID, Name, Category, Price, and Description. If you want to restrict the number or selection of exposed columns to only ID and Name, you can use the $select query option as follows:
GET /Products?$select=ID,Name
The result is:
{ “@odata.context”: “$metadata#Products(ID,Name)”, “value”: [ { “ID”: 1, “Name”: “Laptop” }, { “ID”: 2, “Name”: “Mouse” }, { “ID”: 3, “Name”: “Keyboard” } ] }
The following OData capabilities are not used to restrict the number or selection of exposed columns, but for other purposes:
- Parameter entity sets: Parameter entity sets are a way to define entity sets that require one or more parameters to be specified in the request. Parameter entity sets can be used to implement function imports or actions that return a collection of entities. Parameter entity sets can also be used to filter or sort the results based on the parameters.
- Aggregation: Aggregation is a way to apply aggregate functions, such as sum, count, min, max, or average, to the properties of an entity set or a complex type. Aggregation can be used to perform calculations or analysis on the data. Aggregation is achieved by using the $apply query option, which specifies a transformation pipeline with various operators, such as groupby, aggregate, filter, or order by.
- Key specification: Key specification is a way to define the key properties of an entity type, which uniquely identify an entity instance within an entity set. Key specification is part of the entity type definition in the metadata document of the OData service. Key specification can be used to retrieve a single entity by its key values.
References:
- [OData Version 4.0 Part 2: URL Conventions], Section 5.1.1: System Query Option $select, pp. 10-11.
- [OData Version 4.0 Part 3: Common Schema Definition Language (CSDL)], Section 13: Entity Model, Subsection 13.2: Entity Sets, pp. 88-89.
A user is dropped with the "cascade" option. The user schema also contains objects owned by other users, or on which other users have privileges. What happens to the objects? There are 2 correct answers to this question.
Options:
The objects on which other users have privileges are NOT dropped.
The objects on which other users have privileges are dropped.
The objects owned by other users are NOT dropped.
The objects owned by other users are dropped.
Answer:
A, CExplanation:
When a user is dropped with the “cascade” option, the user and all the objects owned by the user are deleted from the database. However, the objects that are owned by other users, or on which other users have privileges, are not affected by the drop command. The privileges granted to or by the dropped user are also revoked automatically. Therefore, the objects on which other users have privileges are not dropped, and the objects owned by other users are not dropped12.
The other options are not correct because they are not the consequences of dropping a user with the “cascade” option. The objects on which other users have privileges are not dropped, because they are not owned by the dropped user, and they may still be needed by the other users. The objects owned by other users are not dropped, because they are not related to the dropped user, and they may have dependencies or references to other objects. References:
- SAP HANA Platform, SAP HANA SQL and System Views Reference, SQL Reference Manual, SQL Statements, DROP USER
- SAP HANA Platform, SAP HANA Administration Guide, Security, User Management, Dropping Users
What are the key characteristics of the calculation view's Input Parameter? There are 3 correct answers to this question.
Options:
It is passed using a WHERE clause.
It can NOT be used to filter measure values.
It can be used in a conditional expression.
It is passed via reserved word PLACEHOLDER.
It can be used to pass values to table functions.
Answer:
C, D, EExplanation:
A calculation view is a view that combines data from multiple sources, such as tables, views, or functions, using graphical or SQLScript logic. A calculation view can define input parameters, which are variables that allow the user to influence the query execution with values that are entered at runtime. Input parameters can be used for various purposes, such as filtering, currency conversion, or dynamic calculations.
Some of the key characteristics of the calculation view’s input parameter are:
- It can be used in a conditional expression. A conditional expression is an expression that evaluates to a value based on a condition. For example, an input parameter can be used to determine which column to use for aggregation, or which table function to call, based on the user’s input. A conditional expression can be written using the CASE or IF syntax in SQLScript, or using the graphical expression editor in the calculation view.
- It is passed via reserved word PLACEHOLDER. The reserved word PLACEHOLDER is used to pass the input parameter value to the calculation view when calling it from SQL. The syntax is PLACEHOLDER.“
inputparametername
” => ‘value’. For example, if the calculation view has an input parameter named CURRENCY, then the SQL statement to call the view with the value ‘USD’ would be SELECT * FROM “CALC_VIEW” (PLACEHOLDER.“
CURRENCY
” => ‘USD’).
- It can be used to pass values to table functions. A table function is a function that returns a table as its output. A table function can be used as a data source in a calculation view, and it can accept input parameters as arguments. For example, a table function can perform currency conversion based on the input parameter value, and return the converted data to the calculation view.
The other options are incorrect because they are not characteristics of the calculation view’s input parameter. It is not passed using a WHERE clause, as the WHERE clause is used to filter data based on a condition, not to pass values to a view. It can be used to filter measure values, as measure values are numeric values that can be aggregated, such as sales amount or quantity. An input parameter can be used to filter measure values based on a range, a comparison, or a calculation. References:
- SAP HANA Platform 2.0 SPS06: SAP HANA SQL and System Views Reference, Section 2.1.5.3
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.1
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.2
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.3
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.4
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.5
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.6
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.7
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.8
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.9
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.10
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.11
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.12
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.13
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.14
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.15
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.16
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.17
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.18
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.19
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.20
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.21
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.22
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.23
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.24
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.25
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.26
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.27
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.28
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.29
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.30
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.31
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.2.32
- SAP HANA Platform 2.0 SPS06: SAP HANA SQLScript Reference, Section 2.1.
Which SAP HANA extended application services, advanced model (XS advanced) tools can you use to retrieve the URL for the SAP
WeblDE for SAP HANA?
There are 2 correct answers to this question.
Options:
Runtime tool
XS advanced Controller Start Screen
XS Advanced command-line client tool
Organization and Space Management tool
Answer:
B, CExplanation:
The SAP Web IDE for SAP HANA is a web-based development tool that allows you to create and manage multi-target applications (MTAs) that use the SAP HANA Deployment Infrastructure (HDI). The SAP Web IDE for SAP HANA is itself an XS advanced application that runs on the XS advanced runtime and can be accessed via a URL. To retrieve the URL for the SAP Web IDE for SAP HANA, you can use the following XS advanced tools:
- XS advanced Controller Start Screen: This is a web-based tool that provides an overview of the XS advanced environment and the available applications and services. You can access the XS advanced Controller Start Screen by opening the URL https://
:3 30/ in a browser, where is the host name of your SAP HANA system and is the instance number of your SAP HANA system. From the XS advanced Controller Start Screen, you can see the list of applications and their URLs under the Applications tab. You can find the SAP Web IDE for SAP HANA application by its name (webide) and click on its URL to open it in a new tab. - XS Advanced command-line client tool: This is a command-line tool that allows you to perform various operations on the XS advanced environment and the applications and services. You can access the XS Advanced command-line client tool by opening a terminal and entering the command xs. To retrieve the URL for the SAP Web IDE for SAP HANA, you need to first log in to the XS advanced environment by entering the command xs login and providing your credentials. Then, you need to switch to the SAP space by entering the command xs target -s SAP, where the SAP Web IDE for SAP HANA application is deployed. Finally, you need to list the applications and their URLs by entering the command xs apps. You can find the SAP Web IDE for SAP HANA application by its name (webide) and copy its URL to open it in a browser.
The following tools are not used to retrieve the URL for the SAP Web IDE for SAP HANA, but for other purposes:
- Runtime tool: This is a web-based tool that allows you to monitor and manage the runtime components of the XS advanced environment, such as applications, services, processes, and logs. You can access the Runtime tool by opening the URL https://
:3 32/ in a browser, where is the host name of your SAP HANA system and is the instance number of your SAP HANA system. From the Runtime tool, you can see the status and details of the applications and services, but not their URLs. - Organization and Space Management tool: This is a web-based tool that allows you to create and manage the organizational units of the XS advanced environment, such as organizations and spaces. You can access the Organization and Space Management tool by opening the URL https://
:3 31/ in a browser, where is the host name of your SAP HANA system and is the instance number of your SAP HANA system. From the Organization and Space Management tool, you can see the list of organizations and spaces and their quotas and roles, but not the applications and their URLs.
References:
- [SAP HANA Deployment Infrastructure Reference], Chapter 5: HDI with XS Advanced, Section 5.1: Developing with the SAP Web IDE for SAP HANA, Subsection 5.1.1: Create a Project, p. 101.
- [SAP HANA Platform Documentation], SAP HANA Developer Guide for SAP HANA XS Advanced Model, Chapter 2: Getting Started with SAP Web IDE for SAP HANA, Section 2.1: Creating a Project, p. 17.
Which metadata declarations can you specify in a SQL Script procedure when you use the SAP HANA Deployment Infrastructure? There are 2 correct answers to this question.
Options:
Security
Language
Default schema
Authorization
Answer:
B, CExplanation:
You can specify the language and the default schema as metadata declarations in a SQL Script procedure when you use the SAP HANA Deployment Infrastructure (HDI). The language declaration defines the language mode of the procedure, which can be SQLSCRIPT or SQL. The default schema declaration defines the schema that is used to resolve unqualified object names in the procedure body. These declarations are optional and can be specified after the procedure name and before the parameter list. For example:
CREATE PROCEDURE MY_PROCEDURE LANGUAGE SQLSCRIPT DEFAULT SCHEMA MY_SCHEMA ( … )
The other options are incorrect because security and authorization are not valid metadata declarations for SQL Script procedures. Security and authorization are handled by the HDI framework, which automatically grants the necessary privileges to the technical users and roles that access the HDI container objects. You do not need to specify any security or authorization clauses in the SQL Script procedure definition. References:
- Procedure Metadata - SAP Help Portal
- CREATE PROCEDURE Statement (Procedural) - SAP Help Portal
- SAP HANA Deployment Infrastructure - SAP Help Portal
- HA150 - SAP HANA 2.0 SPS06 SQLScript for SAP HANA - SAP Training
Which rules apply to declarative logic in SQL Script? There are 2 correct answers to this question.
Options:
It supports the full set of SQL Script.
It defines how data is processed.
It is free of side effects.
lt declares the flow of data.
Answer:
C, DExplanation:
According to the SAP HANA Developer Guide, declarative logic in SQL Script is a way of expressing complex data transformations by means of classical relational operators, such as selection, projection, join, aggregation, etc. Declarative logic does not specify how data is processed, but rather what the desired result is. The SAP HANA database has the freedom to optimize the data flow and execution plan, which may result in better performance. Declarative logic is free of side effects, meaning that it does not modify any data or state outside the scope of the statement. Declarative logic declares the flow of data, meaning that it binds new variables that are referenced elsewhere in the body of the procedure or function. The other options are incorrect, because:
- Declarative logic does not support the full set of SQL Script, but only a subset of SQL features that are side-effect free and deterministic. For example, declarative logic does not support imperative constructs, such as loops, conditions, exceptions, etc.
- Declarative logic does not define how data is processed, but rather what the desired result is. How data is processed is determined by the SAP HANA database optimizer, which may choose different execution plans depending on the data characteristics, system resources, and other factors.
References: SAP HANA Developer Guide, Chapter 6, Section 6.4.2, page 2111.
Which new components can you use to develop native SAP HANA applications in SAP HANA extended application services, advanced model (XS advanced)?
There are 2 correct answers to this question.
Options:
SAP HANA repository
SAP HANA studio
Git repository
SAP Web IDE for SAP HANA
Answer:
C, DExplanation:
SAP HANA extended application services, advanced model (XS advanced) provides a comprehensive platform for the development and execution of micro-service oriented applications, taking advantage of SAP HANA’s in-memory architecture and parallel execution capabilities1. XS advanced supports several programming languages and execution environments, such as Java and Node.js, and also provides compatibility with XS classic model2. To develop native SAP HANA applications in XS advanced, you can use the following new components:
- Git repository: XS advanced integrates with Git, a distributed version control system, to manage the source code of your applications. You can use Git to clone, create, push, pull, merge, and branch your projects, and also to collaborate with other developers3.
- SAP Web IDE for SAP HANA: XS advanced provides a web-based integrated development environment (IDE) that allows you to create, edit, test, debug, and deploy your applications. SAP Web IDE for SAP HANA supports various development tools and features, such as editors, wizards, templates, code completion, syntax highlighting, code analysis, debugging, testing, and deployment3.
The other options are not correct because:
- SAP HANA repository: This is a component of XS classic model, not XS advanced. The SAP HANA repository stores the design-time artifacts of your applications, such as views, procedures, and scripts. In XS advanced, the design-time artifacts are stored in Git repositories instead4.
- SAP HANA studio: This is a desktop-based IDE that can be used to develop applications for XS classic model, but not for XS advanced. SAP HANA studio provides various perspectives and tools to access and manage the SAP HANA database, such as the administration console, the catalog, the content, and the security4.
References: 2: SAP HANA Extended Application Services, Advanced Model 4: SAP HANA Extended Application Services 1: SAP HANA extended application services, advanced model 3: SAP HANA Developer Guide for SAP HANA XS Advanced Model (SAP Web IDE)
What happens if you define a database object in the persistence model and deploying using the SAP HANA Deployment Infrastructure
(HDI)?
Please choose the correct answer.
Options:
A descriptive representation of the object is created in Hot during runtime.
The corresponding runtime object is created in the database module of the multi-target application during runtime.
The HDI container is created when the design-time object is saved.
The corresponding runtime object is created in the HDI container on deployment
Answer:
DExplanation:
According to the SAP HANA Developer Guide, the SAP HANA Deployment Infrastructure (HDI) uses so-called containers to store design-time artifacts and the corresponding deployed run-time (catalog) objects. The HDI makes a strict separation between design-time and run-time objects by introducing the following, distinct container types:
- Design-time container (DTC): A Git repository that stores the design-time artifacts, such as CDS files, SQL files, or HDB files, that define the database objects in the persistence model. The DTC is part of the database module of the multi-target application (MTA).
- Run-time container (RTC): A schema in the SAP HANA database that stores the run-time objects, such as tables, views, or procedures, that are created based on the design-time artifacts. The RTC is also known as the HDI container.
- Build container (BTC): A temporary schema in the SAP HANA database that is used to build the run-time objects from the design-time artifacts. The BTC is deleted after the build process is completed.
When you define a database object in the persistence model, you create a design-time artifact in the DTC. When you deploy the database module of the MTA, the HDI creates an RTC and a BTC, and builds the corresponding run-time object in the RTC based on the design-time artifact. The BTC is then dropped, and the RTC remains as the HDI container for the database module. References: SAP HANA Developer Guide, Chapter 6, Section 6.4.2, page 2111.
After reviewing the SQL Analyzer results, which of the following would you consider for optimizing the performance? There are 2 correct answers to this question.
Options:
Re-prioritize with Workload Management.
Use CE functions.
Modify SQL hints.
Change the data model.
Answer:
C, DExplanation:
According to the SAP HANA Performance Guide for Developers1, the SQL Analyzer tool can help you understand and analyze the execution plan of a SQL statement, and identify potential bottlenecks and optimizations. Some of the possible optimizations are:
- Modify SQL hints: SQL hints are directives that you can add to a SQL statement to influence the behavior of the SQL optimizer. For example, you can use hints to specify a join type, a join order, a join condition, a table distribution, or a parallel degree. SQL hints can help you improve the performance of a query by overriding the default choices of the optimizer, or by providing additional information that the optimizer cannot infer from the data or statistics. However, SQL hints should be used with caution, as they can also have negative effects if they are not compatible with the data characteristics or the system configuration. Therefore, you should always test the impact of SQL hints on the query execution time and resource consumption, and compare the results with the original query without hints. You can use the SQL Analyzer tool to view the effect of SQL hints on the execution plan, and modify them accordingly. For more information on SQL hints, see [SAP HANA SQL and System Views Reference].
- Change the data model: The data model is the logical representation of the data and the relationships among them. The data model can have a significant impact on the performance of a query, as it determines how the data is stored, accessed, and processed by the database. A well-designed data model can reduce the complexity and cost of a query, and enable the use of efficient operators and algorithms. On the other hand, a poorly-designed data model can lead to redundant or inconsistent data, unnecessary joins or aggregations, or suboptimal access paths. Therefore, you should always review the data model and consider changing it if it does not meet the requirements of the query or the application. For example, you can use different types of views, such as calculation views, analytical views, or attribute views, to model the data according to the business logic and the analytical needs. You can also use different types of tables, such as column tables, row tables, or partitioned tables, to store the data according to the access patterns and the distribution strategies. You can use the SQL Analyzer tool to view the data model of the query, and identify the possible changes that can improve the performance. For more information on data modeling, see [SAP HANA Modeling Guide].
References: 1: SAP HANA Performance Guide for Developers : SAP HANA SQL and System Views Reference : SAP HANA Modeling Guide
What types of user-defined functions are supported by SAP HANA? Note: There are 2 correct answers to this question.
Options:
Table
Scalar
Aggregate
Hierarchy
Answer:
A, BExplanation:
SAP HANA supports two types of user-defined functions: table and scalar. User-defined functions are functions that are created by users to perform specific tasks or calculations on data. User-defined functions can be used in SQL expressions, such as in the SELECT, WHERE, or GROUP BY clauses of SQL statements. User-defined functions can also be used in SQLScript, which is a scripting language for SAP HANA that extends SQL with procedural and analytical features.
Table functions are user-defined functions that return a table as the output. Table functions can be used to implement complex logic or transformations on data, such as pivoting, unpivoting, aggregation, or ranking. Table functions can also be used to create calculation views, which are virtual data models that expose data from SAP HANA tables or views. Table functions are created by using the CREATE FUNCTION statement with the RETURNS
Scalar functions are user-defined functions that return a scalar value as the output. Scalar functions can be used to perform simple calculations or validations on data, such as converting units, checking conditions, or generating IDs. Scalar functions are created by using the CREATE FUNCTION statement with the RETURNS
The following types of functions are not supported by SAP HANA as user-defined functions, but as built-in functions or features:
- Aggregate functions: Aggregate functions are functions that perform calculations on a set of values and return a single value. For example, SUM, COUNT, MIN, MAX, or AVG are aggregate functions. Aggregate functions are built-in functions that are provided by SAP HANA and can be used in SQL expressions, such as in the SELECT or GROUP BY clauses of SQL statements, or in the expression of aggregated columns. Aggregate functions cannot be created by users as user-defined functions.
- Hierarchy functions: Hierarchy functions are functions that operate on hierarchical data, such as parent-child or level-based hierarchies. For example, HIERARCHY_ANCESTORS, HIERARCHY_DESCENDANTS, or HIERARCHY_LEVEL are hierarchy functions. Hierarchy functions are built-in functions that are provided by SAP HANA and can be used in SQL expressions, such as in the SELECT or WHERE clauses of SQL statements, or in the expression of hierarchy columns. Hierarchy functions cannot be created by users as user-defined functions.
References:
- [SAP HANA Platform Documentation], SAP HANA SQL and System Views Reference, Chapter 3: SQL Expressions, Section 3.5: Function Expressions, pp. 59-60.
- [SAP HANA Platform Documentation], SAP HANA SQLScript Reference, Chapter 6: SQLScript Test Framework, Section 6.1: User-Defined Functions, pp. 153-154.
In an SQL Script procedure, which feature do you use to initialize IN/OUT table parameters? Please choose the correct answer.
Options:
IS_EMPTY
DEFAULT EMPTY
DEFAULT
SET
Answer:
BExplanation:
According to the SAP HANA Developer Guide, you can use the DEFAULT EMPTY clause to initialize IN/OUT table parameters in an SQL Script procedure. This clause specifies that the table parameter is initially empty when the procedure is called, and that the caller can pass an empty table or no table at all. This is useful when you want to use the table parameter as a temporary table inside the procedure, and return the result to the caller. For example, PROCEDURE proc1 (IN/OUT tab1 TABLE(col1 INT, col2 VARCHAR(10)) DEFAULT EMPTY) ... The other options are incorrect, because:
- IS_EMPTY is a function that returns a boolean value indicating whether a table is empty or not. It is not a clause that can be used to initialize table parameters.
- DEFAULT is a clause that can be used to assign a default value to scalar parameters, not table parameters.
- SET is a statement that can be used to assign values to variables or parameters, not a clause that can be used to initialize table parameters.
References: SAP HANA Developer Guide, Chapter 6, Section 6.4.2, page 2111.
You created several database tables in a multi-target application and need to keep their names as short as possible. Which parameter of the .hdinamespace file do you set to ignore? Please choose the correct answer.
Options:
name
hdbtable
mixinTypes
subfolder
Answer:
DExplanation:
According to the SAP HANA Performance Guide for Developers1, the .hdinamespace file is a JSON resource that defines the naming rules for the run-time objects in a multi-target application. The name parameter specifies the common name-space prefix for the objects, while the subfolder parameter determines whether the name of the sub-folder is added or ignored in the run-time name space. If you want to keep the names of the objects as short as possible, you should set the subfolder parameter to ignore, so that the name of the sub-folder is not appended to the name-space prefix and the object name. For example, if you have a table named CUSTOMERS in a sub-folder named SALES, and you set the subfolder parameter to ignore, the run-time name of the table will be com.sap.hana.example::CUSTOMERS, where com.sap.hana.example is the name-space prefix defined by the name parameter. If you set the subfolder parameter to append, the run-time name of the table will be com.sap.hana.example.SALES::CUSTOMERS, which is longer and more complex. For more information on the .hdinamespace file and the naming rules, see [The HDI Name-Space Configuration File]2 and [Run-Time Name Spaces in SAP HDI]3.
References: 2: The HDI Name-Space Configuration File 3: Run-Time Name Spaces in SAP HDI 1: SAP HANA Performance Guide for Developers
You create a multi-target application in SAP Web IDE for SAP HANA. Which source code management option do you use? Please choose the correct answer.
Options:
SVC-based repository
Git-based repository
SAP HANA repository workspace
SAP HANA repository
Answer:
BExplanation:
When you create a multi-target application in SAP Web IDE for SAP HANA, you use a Git-based repository as the source code management option. A Git-based repository allows you to store, manage, and synchronize your code across multiple branches and versions. You can also collaborate with other developers and integrate your changes with the SAP HANA Deployment Infrastructure (HDI). A Git-based repository is the recommended option for developing multi-target applications in SAP Web IDE for SAP HANA. References: Developing Multi-Target Applications, Git Integration, SAP HANA Deployment Infrastructure.
How do you specify the target currency for currency conversion in calculation views? There are 3 correct answers to this question.
Options:
In a column
In a table function
With an input parameter
With a fixed value
In a procedure
Answer:
A, C, DExplanation:
To specify the target currency for currency conversion in calculation views, you can use one of the following methods:
- In a column: You can associate the measure with an attribute column that contains the target currency code. For example, if you have a table that stores the sales amount and the currency code for each transaction, you can use the currency code column as the target currency for the sales amount measure.
- With an input parameter: You can create an input parameter that allows the user to select or enter the target currency code at runtime. For example, if you want to display the sales amount in different currencies based on the user’s preference, you can use an input parameter as the target currency for the sales amount measure.
- With a fixed value: You can associate the measure with a fixed currency code that is available in the currency table. For example, if you want to display the sales amount in a single currency, such as USD, you can use a fixed value as the target currency for the sales amount measure. References: Associate Measures with Currency, How to perform Currency Conversion in SAP HANA, Implementing Currency Conversion.
Which parameters does the APPLY_FILTER function support? There are 2 correct answers to this question.
Options:
Filter condition
Join condition
Entity set
Table variable
Answer:
A, DExplanation:
The APPLY_FILTER function is a SQLScript function that applies a filter condition to a table variable and returns a new table variable with the filtered rows. The APPLY_FILTER function supports the following parameters12:
- Filter condition: A mandatory parameter that specifies the filter condition as a string literal or a string expression. The filter condition must follow the syntax of the WHERE clause in SQL, and it can use column names, literals, operators, and functions. For example, APPLY_FILTER(:table_var, ‘price > 100 and category = ‘‘A’’’).
- Table variable: A mandatory parameter that specifies the table variable to which the filter condition is applied. The table variable must be a local or input parameter of the SQLScript procedure or function that calls the APPLY_FILTER function. For example, APPLY_FILTER(:table_var, :filter_cond).
The other options are not correct because they are not parameters of the APPLY_FILTER function. A join condition is a parameter of the APPLY_FILTER_JOIN function, which applies a filter condition to two table variables and returns a new table variable with the joined and filtered rows. An entity set is a parameter of the APPLY_FILTER_ENTITY function, which applies a filter condition to an entity set and returns a new entity set with the filtered rows. These functions are part of the SAP HANA Predictive Analysis Library (PAL), and they are not part of the SQLScript language3. References:
- SAP HANA Platform, SAP HANA SQL and System Views Reference, SQLScript Guide, SQLScript Functions, APPLY_FILTER
- SAP HANA Platform, SAP HANA Developer Guide for SAP HANA Web IDE, Developing Database Modules, Developing SQLScript Procedures and Functions, Using APPLY_FILTER
- SAP HANA Platform, SAP HANA Predictive Analysis Library (PAL), Reference Guide, PAL SQLScript Functions, APPLY_FILTER_JOIN, APPLY_FILTER_ENTITY
In which of the following objects can you use Commit and Rollback statements? Please choose the correct answer.
Options:
Scalar user-defined function
SQL Script procedure
Table user-defined function
Scripted calculation view
Answer:
BExplanation:
You can use Commit and Rollback statements in SQL Script procedures to control the transactional behavior of your code. Commit and Rollback statements allow you to commit or undo the changes made by the SQL statements within the procedure. You can also use them in exception handlers to handle errors and ensure data consistency. You cannot use Commit and Rollback statements in scalar user-defined functions, table user-defined functions, or scripted calculation views, as they are not allowed to have any side effects on the database. References: COMMIT and ROLLBACK, SQLScript Procedures, [SQLScript Functions].
You need to synchronize all unsynchronized changes of the remote Git branch with a local Git branch. Which operation do you use? Please choose the correct answer.
Options:
Push
Rebase
Pull
Reset
Answer:
CExplanation:
According to the SAP HANA Developer Guide, you use the pull operation to synchronize all unsynchronized changes of the remote Git branch with a local Git branch. The pull operation fetches the changes from the remote branch and merges them with the local branch. This way, you can update your local branch with the latest changes from the remote branch. The other options are incorrect, because:
- Push is the opposite of pull. It sends the changes from the local branch to the remote branch, not the other way around.
- Rebase is an alternative to merge. It rewrites the history of the local branch by applying the changes from the remote branch as new commits on top of the local branch. This creates a linear history, but it may cause conflicts or lose some information.
- Reset is a way to undo changes in the local branch. It moves the branch pointer to a different commit, and optionally discards the changes in the working directory or the staging area.
References: SAP HANA Developer Guide, Chapter 6, Section 6.4.2, page 2111.
Which services can you use in SAP HANA, express edition? There are 3 correct answers to this question.
Options:
Dynamic tiering
Text analytics
Multi-core and parallelization
System replication
Columnar OLTP and OLAP
Answer:
B, C, EExplanation:
SAP HANA, express edition is a streamlined version of SAP HANA that can run on laptops and other resource-constrained hosts, such as a cloud-hosted virtual machine. SAP HANA, express edition is free to use for in-memory databases up to 32 GB of RAM. SAP HANA, express edition supports the following services:
- Text analytics: This service allows you to analyze unstructured text data, such as documents, emails, tweets, and blogs, using natural language processing techniques. You can use text analytics to extract entities, facts, sentiments, and keywords from text data, and to perform linguistic analysis, such as tokenization, lemmatization, and part-of-speech tagging.
- Multi-core and parallelization: This service allows you to leverage the multi-core architecture and parallel processing capabilities of SAP HANA to optimize the performance of data-intensive operations, such as queries, calculations, and transformations. You can use multi-core and parallelization to distribute the workload across multiple CPU cores and threads, and to execute tasks in parallel or in batches.
- Columnar OLTP and OLAP: This service allows you to store and process data in a columnar format, which enables faster data compression, aggregation, and analysis. You can use columnar OLTP and OLAP to support both transactional and analytical workloads on the same data set, without requiring data duplication or pre-aggregation.
The other options are not correct because:
- A. Dynamic tiering: This service allows you to extend the SAP HANA in-memory database with disk-based tables that can store large volumes of warm or cold data. You can use dynamic tiering to reduce the memory footprint and cost of SAP HANA, while still maintaining query access to the disk-based data. However, dynamic tiering is not supported by SAP HANA, express edition, as it requires additional hardware and software components.
- D. System replication: This service allows you to create and maintain one or more secondary SAP HANA systems that are identical copies of a primary SAP HANA system. You can use system replication to ensure high availability and disaster recovery of SAP HANA, as the secondary systems can take over the role of the primary system in case of a failure. However, system replication is not supported by SAP HANA, express edition, as it requires additional licenses and configuration.
References:
- SAP HANA, express edition, Overview
- SAP HANA, express edition, Features
- SAP HANA, express edition, FAQ
