SAP AMDP CLIENT HANDLING



Get Example source ABAP code based on a different SAP table
  



ABAP_AMDP - Client Handling
AMDP does not support implicit client handling. When accessing client-dependent 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 parameter must be used in a WHERE condition. Exceptions to this rule are explained in the note below.




Latest notes:

NON_V5_HINTS
In SQLScript implementations, the built-in function SESSION_CONTEXT can also be used to access the ABAP-specific session variables CLIENT and CDS_CLIENT of the SAP HANA database. 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
BEGIN_SECTION VERSION 5 OUT during the execution of an AB-SQL statement by the addition USING CLIENT and
END_SECTION VERSION 5 OUT in an AMDP method call from ABAP by the addition AMDP OPTIONS CDS SESSION CLIENT. Access of this type should be used only if it is guaranteed that an AMDP method is called only from ABAP and accesses exactly the data of this client ID. In other cases, the result is undefined. Therefore, it is usually recommended that an input parameter is used to pass the required client ID to AMDP functions and use it as an access condition.
An exception to this rule is when reading ABAP_CDS_MNG_VIEWS of client-dependent CDS views whose client handling is defined by the annotation @ClientHandling.algorithm:#SESSION_VARIABLE. A DDIC 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 result set is empty in this case. For this reason, when a ABAP_CDS_MNG_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 required value instead. The addition AMDP OPTIONS CDS SESSION CLIENT can be used for this purpose in the declaration of the method with METHODS or CLASS-METHODS. Without this addition, a syntax error occurs when a ABAP_CDS_MNG_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 AB-SQL statement SELECT, the session variable can be set with the addition USING CLIENT. See the example for the option SESSION CLIENT .
Using an input parameter for the client ID is particularly advisable for AMDP function implementations of client-dependent CDS table functions . In AB_SQL reads, only the data of the current client or clients specified using USING CLIENT in the result set is respected by default. Selecting exactly this data in the function implementation is recommended both for performance reasons and to ensure that the correct data is read.
ABAP_HINT_END

ABAP_EXAMPLE_VX5
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 .
ABAP_EXAMPLE_END