Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Processing External Data →  ABAP Database Accesses →  Native SQL →  AMDP - ABAP Managed Database Procedures →  AMDP - Examples 

AMDP, Implementation of a SQLScript Procedure

This example demonstrates how an SQLScript procedure is implemented using AMDP.

Other versions: 7.31 | 7.40 | 7.54

Source Code

    DATA incprice     TYPE sflight-price.
    DATA price_before TYPE sflight-price.
    DATA price_after  TYPE sflight-price.

    IF cl_db_sys=>is_in_memory_db = abap_false.
      cl_demo_output=>display(
        `Example can be executed on SAP HANA Database only` ).
      LEAVE PROGRAM.
    ENDIF.

    cl_demo_input=>request( CHANGING field = incprice ).
    IF incprice IS INITIAL.
      RETURN.
    ENDIF.

    SELECT SINGLE price FROM sflight INTO price_before.

    TRY.
        NEW cl_demo_amdp( )->increase_price( clnt = sy-mandt
                                            inc  = incprice ).
      CATCH cx_amdp_error INTO DATA(amdp_error).
        cl_demo_output=>display( amdp_error->get_text( ) ).
        RETURN.
    ENDTRY.

    SELECT SINGLE price FROM sflight INTO price_after.
    IF price_after - price_before = incprice.
      cl_demo_output=>display( `Price increased succesfully` ).
    ENDIF.

Description

A simple SQLScript procedure is implemented in the AMDP method INCREASE_PRICE of the AMDP class CL_DEMO_AMDP:

METHOD increase_price BY DATABASE PROCEDURE FOR HDB
                      LANGUAGE SQLSCRIPT
                      USING sflight.
  update sflight set price = price + :inc
                 where mandt = :clnt;
ENDMETHOD.

The database table SPFLI defined in ABAP Dictionary must be specified after USING. On a SAP HANA database, this program works in the same way as the examples for ADBC and for CALL DATABASE PROCEDURE. AMDP replaces these technologies when calling database procedures for an SAP HANA database that is the central database of an AS ABAP.


Note

This is a syntax example. The same function can be provided with the same efficiency in Open SQL. AMDP is not needed in simple cases like this.