ABAP Blog Posts
cancel
Showing results for 
Search instead for 
Did you mean: 
Nihal__Raj
Explorer
648

Introduction: AMDP (ABAP Managed Database Procedures) is a framework in SAP that allows ABAP developers to write and execute database-specific SQL Script code (mainly for SAP HANA) directly from ABAP classes. It gives ABAP the ability to run complex, high-performance database operations on HANA using SQL Script, instead of pulling data into ABAP memory.

INSERT (Adding Data):
Use the INSERT statement to add new rows to a table. You can insert single rows or multiple
rows using INSERT INTO ... SELECT

METHOD insert_data
  BY DATABASE PROCEDURE FOR HDB
  LANGUAGE SQLSCRIPT
  USING ZPS_TEST.

    IF NOT EXISTS ( SELECT *
                      FROM ZPS_TEST
                     WHERE eno = :e_no )
    THEN
      INSERT INTO ZPS_TEST VALUES (
          session_context('CLIENT'),
          :e_no,
          :e_name,
          session_context('SAP_SYSTEM_DATE'),
          session_context('APPLICATIONUSER'),
          TO_VARCHAR(CURRENT_TIME, 'HH24MISS'),
          session_context('APPLICATIONUSER'),
          TO_VARCHAR(CURRENT_TIME, 'HH24MISS')
      );

      i_msg = 'Success';
    ELSE
      i_msg = 'Unsuccessful';
    END IF;

  ENDMETHOD.

UPDATE (Modifying Data):
Use the UPDATE statement to modify existing rows in a table. Use the WHERE clause to
specify which rows to update. Be careful not to omit the WHERE clause, as that would
update all rows in the table.

METHOD update_data
    BY DATABASE PROCEDURE FOR HDB
    LANGUAGE SQLSCRIPT
    USING ZPS_TEST.

    IF EXISTS ( SELECT * FROM ZPS_TEST WHERE eno = :e_no ) THEN

      UPDATE ZPS_TEST SET
          ename   = :e_name,
          euperson = session_context('APPLICATIONUSER'),
          eutime   = TO_VARCHAR(CURRENT_TIME, 'HH24MISS')
        WHERE eno = :e_no;

      i_msg = 'Success';
    ELSE
      i_msg = 'Unsuccessful';
    END IF;

  ENDMETHOD.

DELETE (Removing Data):
Use the DELETE statement to remove rows from a table. As with UPDATE, use the WHERE
clause carefully to avoid deleting unintended rows.

METHOD delete_data
    BY DATABASE PROCEDURE FOR HDB
    LANGUAGE SQLSCRIPT
    USING ZPS_TEST.

    IF EXISTS ( SELECT * FROM ZPS_TEST WHERE eno = :e_no ) THEN

      DELETE FROM ZPS_TEST
        WHERE eno = :e_no;

      i_msg = 'Success';
    ELSE
      i_msg = 'Unsuccessful';
    END IF;

  ENDMETHOD.

Program to Call Above Methods in ABAP:

REPORT zrj_amdp_emp_crud.
PARAMETERS : i_ono TYPE zde_ono OBLIGATORY.
PARAMETERS : i_name TYPE zde_ename MODIF ID a1.

PARAMETERS pr1 TYPE c RADIOBUTTON GROUP r1 DEFAULT 'X'.
PARAMETERS pr2 TYPE c RADIOBUTTON GROUP r1.
PARAMETERS pr3 TYPE c RADIOBUTTON GROUP r1.

DATA : lv_insert  TYPE string.
DATA : lv_update  TYPE string.
DATA : lv_delete  TYPE string.

START-OF-SELECTION.
  IF pr1 = 'X'.
    zps_c_emp=>insert_data(
        EXPORTING
            e_no = i_ono
            e_name = i_name
        IMPORTING
            i_msg = lv_insert
            ).

    IF lv_insert = 'Success' .
      WRITE : TEXT-001 , i_ono.
    ELSE.
      WRITE : TEXT-002 .
    ENDIF.
  ENDIF.

  IF pr2 = 'X'.
    zps_c_emp=>delete_data(
        EXPORTING
            e_no = i_ono
        IMPORTING
            i_msg = lv_update
            ).

    IF lv_update = 'Success' .
      WRITE : TEXT-003 , i_ono.
    ELSE.
      WRITE : TEXT-004 .
    ENDIF.
  ENDIF.

  IF pr3 = 'X'.
    zps_c_emp=>update_data(
        EXPORTING
            e_no = i_ono
            e_name = i_name
        IMPORTING
            i_msg = lv_delete
            ).

    IF lv_delete = 'Success' .
      WRITE : TEXT-005 , i_ono.
    ELSE.
      WRITE : TEXT-006 .
    ENDIF.
  ENDIF.

AT SELECTION-SCREEN OUTPUT.
  IF pr3 ='X'.
    LOOP AT SCREEN.
      IF screen-group1 = 'A1'.
        screen-active = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.

Conclusion:
AMDP allows ABAP developers to perform powerful database operations directly in SAP HANA using SQL Script. By embedding SQL Script inside ABAP classes, AMDP enables fast execution of SELECT, INSERT, UPDATE, and DELETE operations at the database level, avoiding data transfer to the ABAP layer.