ABAP Keyword Documentation → ABAP − Reference → Processing External Data → ABAP Database Access → AMDP - ABAP Managed Database Procedures
AMDP - Client Handling
AMDP does not support implicit client handling. When accessing client-specific database tables or views in an AMDP method, the required client ID must be selected explicitly. Therefore, the parameter interface of an AMDP method must usually contain an input parameter for the client ID, and this must be used in a WHERE condition. Exceptions to this rule are explained in the note below.
Other versions:
7.31 | 7.40 | 7.54
Notes
- Using an input parameter for the client ID is particularly advisable for
AMDP function implementations of
client-specific CDS table functions. In
ABAP SQL reads, only the data of the current client or clients specified using
USING CLIENT
in the results set is respected by default. Selecting this precise data in the function implementation is recommended both for performance reasons and for making sure that the correct data is read.
- In SQLScript implementations, the built-in function SESSION_CONTEXT can be used to access the ABAP-specific session variables CLIENT and CDS_CLIENT of the SAP HANA database too. In a call from ABAP, these variables contain a client ID:
- CLIENT always contains the nominal value of the ABAP system field
sy-mandt
.
- CDS_CLIENT contains the same value as CLIENT
by default, but can be modified during the execution of an ABAP SQL statement by the addition
USING CLIENT
and in an AMDP method call from ABAP by the additionAMDP OPTIONS CDS SESSION CLIENT
.
- An exception to this rule is when reading CDS database views of
client-specific CDS views whose client handling is defined by the annotation @ClientHandling.algorithm:#SESSION_VARIABLE. A database view of this type usually evaluates the
session variable of
the database that is mapped to the CDS session variable
$session.client. In a SAP HANA database this is the HANA session variable
CDS_CLIENT. If, in the implementation of an AMDP method, a WHERE
condition selects a client ID other than that contained in the session variable CDS_CLIENT,
the results set is empty in this case. For this reason, when a CDS database view of this type is accessed
in the implementation of an AMDP method, no WHERE condition can be used
for the client ID and the session variable must be set to the value in question instead. The addition
AMDP OPTIONS CDS SESSION CLIENT
can be used for this purpose in the declaration of the method with METHODS ORCLASS-METHODS
. Without this addition, a syntax error occurs when a CDS database view of this type is accessed. However, this is only significant for general AMDP procedure implementations, which are called in the same way as normal methods in ABAP. In an AMDP function implementation that is used as a CDS table function in the ABAP SQL statementSELECT
, the session variable can be set with the addition USING CLIENT. See the example for the optionSESSION CLIENT
.
Example
The executable example of how to implement an SQLScript procedure demonstrates explicit client handling using an input parameter and using the ABAP-specific session variable CLIENT.