What does it do? This statement calls adatabase procedure written in SQLScript on an SAP HANA database. If the addition CONNECTION is not specified, the statement can only be executed in a system on the SAP HANA database. If the addition CONNECTION is specified, the statement can be executed in every system with a secondary database connection to an SAP HANA database.
The database procedure is specified using a dedicateddatabase procedure proxy. This proxy can either be specified directly as proxy or dynamically as the uppercase content of a parenthesized character-like data object, proxy_name. The actual parameters for the input and output parameters of the procedure are either specified statically using parameter_list or dynamically using parameter_table.
Latest notes:The names of the database procedure proxy and database procedure interface can be chosen at will. Usually, the database procedure interface has the name of the database procedure proxy with the prefix IF_, and any additional namespace prefix. The attribute IS_IN_MEMORY_DB of the class CL_DB_SYS can be used to query whether the current system uses an SAP HANA database.
ABAP Addition
What does it do? The database procedure is not executed on the standard database but on the specified secondary database connection. The database connection can be specified statically with con or dynamically as the content of con_syntax, where the field con_syntax must belong to the type c or string. The database connection must be specified with a name that is in column CON_NAME in table DBCON.
Latest notes:The specified database procedure proxy for the database procedure of the secondary database connection must exist in the current system. Entries in the database table DBCON can only be created and modified using the DBA Cockpit tool.
Example ABAP Coding Database Procedure Take the following database procedure: /********* Begin Procedure Script ************/ BEGIN out_items = select items.pos, items.first_name, items.last_name, items.posting_date as date, items.currency, items.amount from zngd_items as items inner join :in_sel as sel on ( items.first_name = sel.first_name and items.last_name = sel.last_name ) where posting_date = :in_date; END; /********* End Procedure Script ************/
The input parameters are:ParameterDatabase Type in_selTable Data Type in_dateScalar
The components of in_sel are:ComponentDatabase Type FIRST_NAMENVARCHAR, Length 20 LAST_NAMENVARCHAR, Length 20
The output parameters are:ParameterDatabase Type out_itemsTable Data Type
The components of out_items are:ComponentDatabase Type POSINTEGER FIRST_NAMENVARCHAR, Length 20 LAST_NAMENVARCHAR,Length 20 DATEINTEGER CURRENCYNVARCHAR, Length 4 AMOUNTDECIMALS, Length 11, Scale 2
Database Procedure Proxy The following mapping is defined in the associated database procedure proxy ..._PROXY: Procedure ParameterABAP NameABAP Data Type IN_SELIN_SELInternal table IN_SEL, FIRST_NAMEIN_SEL, FIRST_NAME c, length 20 IN_SEL, LAST_NAMEIN_SEL, LAST_NAME c , length 20 IN_DATEIN_DATEd OUT_ITEMS, POSOUT_ITEMS, POS i OUT_ITEMS, FIRST_NAMEOUT_ITEMS, FIRST_NAME c, length 20 OUT_ITEMS, LAST_NAMEOUT_ITEMS, LAST_NAME c, length 20 OUT_ITEMS, DATAOUT_ITEMS, POSTING_DATE d OUT_ITEMS, CURRENCYOUT_ITEMS, CURRENCY c, length 4 OUT_ITEMS, AMOUNTOUT_ITEMS, AMOUNT p , length 6, 2 decimal places
Note the name and type changes in the date fields.Database Procedure Interface The database procedure interface IF_..._PROXY is generated with the following type declarations: INTERFACE if_..._proxy PUBLIC. TYPES: BEGIN OF in_sel, first_name TYPE c LENGTH 20, last_name TYPE c LENGTH 20, END OF in_sel. TYPES: in_date TYPE d. TYPES: BEGIN OF out_items, pos TYPE i, first_name TYPE c LENGTH 20, last_name TYPE c LENGTH 20, posting_date TYPE d, currency TYPE c LENGTH 4, amount TYPE p LENGTH 6 DECIMALS 2, END OF out_items. ENDINTERFACE.
Database Procedure Call The following ABAP program section calls the database procedure using the name of the database procedure proxy; actual parameters typed using the database procedure interface are used. DATA: in_date TYPE if_..._proxy=>in_date, in_sel TYPE STANDARD TABLE OF if_..._proxy=>in_sel WITH EMPTY KEY, out_items TYPE STANDARD TABLE OF if_..._proxy=>out_items WITH EMPTY KEY.
Example The example Database Procedure Call uses a database procedure proxy created in the program to call a database procedure created using ADBC.
Runtime Exceptions
Catchable Exceptions Except for CX_SY_DB_PROCEDURE_SQL_ERROR, all the following exception classes are subclasses of the abstract superclass CX_SY_DB_PROCEDURE_CALL.
CX_SY_DB_PROCEDURE_SQL_ERROR
Reason for error:
Error on the database when executing an SQLScript function.
Runtime error:
DBPROC_SQL_ERROR
CX_SY_DB_PROCEDURE_CONNECTION
Reason for error:
The specified secondary database connection was not found in the database table DBCON.
Runtime error:
DBPROC_CONNECTION
CX_SY_DB_PROCEDURE_NOT_FOUND
Reason for error:
The specified database procedure proxy does not exist.
Runtime error:
DBPROC_PROXY_NOT_FOUND
CX_SY_DB_PROCEDURE_NOT_SUPP
Reason for error:
The database does not support SQLScript.
Runtime error:
CALL_DATABASE_NOT_SUPPORTED
CX_SY_DB_PROCEDURE_OVERFLOW
Reason for error:
The value range of a parameter was exceeded.
Runtime error:
DBPROC_OVERFLOW
CX_SY_DB_PROCEDURE_PARAMETER
Reason for error:
One of the following exceptions was raised (abstract superclass). CX_SY_DB_PROCEDURE_DYN_IN_OUT
Reason for error:
Input and output parameters were switched in the dynamic call.