20240106

AMDP - ABAP Managed Database Procedures

  METHOD tamplates_1 .

    WRITE:'*** '.
    WRITE:'*** '.
    WRITE:'*** AMDP - ABAP Managed Database Proceures'.
    WRITE:'*** '.
    WRITE:'*** '.
    WRITE:'*** Agora é possível riar no ABAP procedures para'.
    WRITE:'*** serem executadas no HANA DB. Essas procedures'.
    WRITE:'*** podem ser consumidas diretamente no ABAP.'.
    WRITE:'*** '.
    WRITE:'*** '.
    WRITE:'*** (deve ser criado num método de uma classe)'.
    WRITE:'*** '.

    WRITE:'.'.
    WRITE:'.'.


    write/ | CLASS zcl_ampd DEFINITION.                            |.
    write/ | PUBLIC                                                |.
    write/ | FINAL                                                 |.
    write/ | CREATE PUBLIC.                                        |.
    write/ |                                         |.
    write/ | PUBLIC SECTION.                                        |.
    write/ |                                                       |.
    write/ |   INTERFACES if_amdp_marker_hdb.                      |.
    write/ |                                                       |.
    write/ |   TYPES:                                              |.
    write/ |     BEGIN OF y_kna1,                                  |.
    write/ |       kunnr     type kna1-kunnr,                      |.
    write/ |       name1     type kna1-name1,                      |.
    write/ |     END OF y_kna1,                                    |.
    write/ |                                                       |.
    write/ |     y_t_kna1    TYPE STANDARD TABLE OF y_kna1.        |.
    write/ |                                                       |.
    write/ |   CLASS-METHODS                                       |.
    write/ |     main.                                             |.
    write/ |                                                       |.
    write/ |   METHODS:                                            |.
    write/ |     get_kna1_name1                                    |.
    write/ |       IMPORTING  VALUE(iv_kunnr)   type kunnr         |.
    write/ |       EXPORTING  value(et_t_kna1)  type y_t_kna1,     |.
    write/ |     now.                                              |.
    write/ |.                    |.
    write/ |   PROTECTED SECTION.                  |.
    write/ |   PRIVATE SECTION.                             |.
    write/ |                     |.
    write/ | ENDCLASS.                    |.
    write/ |                     |.


    WRITE:' '.
    WRITE:/ |.|.

    write/ |  METHOD get_kna1_name1            |.
    write/ |    BY DATABASE PROCEDURE          |.
    write/ |    FOR HDB                        |.
    write/ |    LANGUAGE SQLSCRIPT             |.
    write/ |    OPTIONS READ-ONLY              |.
    write/ |    USING kna1.                    |.
    write/ |                                   |.
    write/ |    et_kna1 =                      |.
    write/ |      select                       |.
    write/ |        kunnr,                     |.
    write/ |        name1                      |.
    write/ |      from kna1                    |.
    write/ |      where mandt '100'          |.
    write/ |        and kunnr :iv_kunnr;     |.
    write/ |                                   |.
    write/ |  ENDMETHOD.                       |.
    write/ | .|.
    write/ | .|.
    write/ |  METHOD now .                           |.
    write/ |     get_kna1_name1(                     |.
    write/ |       EXPORTING                         |.
    write/ |         iv_kunnr ''                   |.
    write/ |       IMPORTING                         |.
    write/ |         et_kna1 DATA(t_kna1)          |.
    write/ |     ).                                  |.
    write/ |                                         |.
    write/ |     IF line_exists(t_kna1[ ).   |.
    write/ |       WRITE:/ t_kna1[ ]-name1.        |.
    write/ |     ENDIF.                              |.
    write/ |                                         |.
    write/ |                                         |.
    write/ |  ENDMETHOD.                             |.
    write/ | ENDCLASS.                    |.
    write/ |                     |.


    ULINE.

  ENDMETHOD.










***
***   Exemplo Simples
***
  METHOD tamplates_2 .

    WRITE:'*** tamplates_2 - ' .
    WRITE:'*** ' .
    WRITE:'*** AMDP - ABAP Managed Database Proceures'.
    WRITE:'*** '.
    WRITE:'*** SCALAR Function'.
    WRITE:'*** '.

    write/ | CLASS zcl_ampd DEFINITION.                            |.
    write/ | PUBLIC                                                |.
    write/ | FINAL                                                 |.
    write/ | CREATE PUBLIC.                                        |.
    write/ |                                         |.
    write/ | PUBLIC SECTION.                                        |.
    write/ |                                                       |.
    write/ |   INTERFACES if_amdp_marker_hdb.                      |.
    write/ |                                                       |.
    write/ |   TYPES:                                              |.
    write/ |     BEGIN OF y_kna1,                                  |.
    write/ |       kunnr     type kna1-kunnr,                      |.
    write/ |       name1     type kna1-name1,                      |.
    write/ |     END OF y_kna1,                                    |.
    write/ |                                                       |.
    write/ |     y_t_kna1    TYPE STANDARD TABLE OF y_kna1.        |.
    write/ |                                                       |.
    write/ |   CLASS-METHODS                                       |.
    write/ |     main.                                             |.
    write/ |                                                       |.
    write/ |   METHODS:                                            |.
    write/ |     get_kna1_name1                                    |.
    write/ |       IMPORTING  VALUE(iv_kunnr)   type kunnr         |.
    write/ |       EXPORTING  value(et_t_kna1)  type y_t_kna1,     |.
    write/ |     now.                                              |.
    write/ |.                    |.
    write/ |   PROTECTED SECTION.                  |.
    write/ |   PRIVATE SECTION.                             |.
    write/ |                     |.
    write/ | ENDCLASS.                    |.
    write/ |                     |.


    WRITE:' '.
    WRITE:/ |.|.

    write/ |  METHOD get_kna1_name1            |.
    write/ |    BY DATABASE FUNCTION          |.
    write/ |    FOR HDB                        |.
    write/ |    LANGUAGE SQLSCRIPT             |.
    write/ |    OPTIONS READ-ONLY              |.
    write/ |    USING kna1.                    |.
    write/ |                                   |.
    write/ |      select                       |.
    write/ |        name1                      |.
    write/ |      into ev_name1                |.
    write/ |      from kna1                    |.
    write/ |      where mandt '100'          |.
    write/ |        and kunnr :iv_kunnr;     |.
    write/ |                                   |.
    write/ |  ENDMETHOD.                       |.
    write/ | .|.
    write/ | .|.
    write/ |  METHOD now .                           |.
    write/ |     DATA(v_name1=                     |.
    write/ |       get_kna1_name1'0010100002' ).   |.
    write/ |                                         |.
    write/ |     WRITE:/ v_name1.                    |.
    write/ |                                         |.
    write/ |  ENDMETHOD.                             |.
    write/ | ENDCLASS.                    |.
    write/ |                     |.





    ULINE.

  ENDMETHOD.







***
*** Literal + expression
***
  METHOD tamplates_3 .

    WRITE:'*** tamplates_3 -' .
    WRITE:'*** ' .
    WRITE:'*** AMDP - ABAP Managed Database Proceures'.
    WRITE:'*** '.
    WRITE:'*** TABLE Function'.
    WRITE:'*** '.

    write/ | CLASS zcl_ampd DEFINITION.                            |.
    write/ | PUBLIC                                                |.
    write/ | FINAL                                                 |.
    write/ | CREATE PUBLIC.                                        |.
    write/ |                                         |.
    write/ | PUBLIC SECTION.                                        |.
    write/ |                                                       |.
    write/ |   INTERFACES if_amdp_marker_hdb.                      |.
    write/ |                                                       |.
    write/ |   TYPES:                                              |.
    write/ |     BEGIN OF y_kna1,                                  |.
    write/ |       kunnr     type kna1-kunnr,                      |.
    write/ |       name1     type kna1-name1,                      |.
    write/ |     END OF y_kna1,                                    |.
    write/ |                                                       |.
    write/ |     y_t_kna1    TYPE STANDARD TABLE OF y_kna1         |.
    write/ |                 WITH DEFAULT KEY             .        |.
    write/ |                                                       |.
    write/ |   CLASS-METHODS:                                      |.
    write/ |     get_kna1_name1                                    |.
    write/ |         FOR TABLE FUNCTION z_cds_amdp,                |.
    write/ |     now.                                              |.
    write/ |                                                       |.
    write/ |   PROTECTED SECTION.                  |.
    write/ |   PRIVATE SECTION.                             |.
    write/ |                     |.
    write/ | ENDCLASS.                    |.
    write/ |                     |.


    WRITE:' '.
    WRITE:/ |  @ClientDependentfalse |.
    WRITE:/ |  define table function z_cdss_amdp  |.
    WRITE:/ |  with parameters|.
    WRITE:/ |    iv_regio :regio|.
    WRITE:/ |  returns |.
    WRITE:/ |  "[" |.
    WRITE:/ | "name1: name1;" |.
    WRITE:/ |  "]" |.
    WRITE:/ |  implemented by method |.
    WRITE:/ |    zcl_amdp=>get_kna1_name1; |.
    WRITE:/ | |.
    WRITE:/ | |.

    write/ |  METHOD get_kna1_name1            |.
    write/ |    BY DATABASE FUNCTION           |.
    write/ |    FOR HDB                        |.
    write/ |    LANGUAGE SQLSCRIPT             |.
    write/ |    OPTIONS READ-ONLY              |.
    write/ |    USING kna1.                    |.
    write/ |                                   |.
    write/ |  RETURN                           |.
    write/ |      select                       |.
    write/ |        name1                      |.
    write/ |      from kna1                    |.
    write/ |      where mandt '100'          |.
    write/ |        and regio :iv_regio;     |.
    write/ |                                   |.
    write/ |  ENDMETHOD.                       |.
    write/ | .|.
    write/ | .|.
    write/ |  METHOD now .                           |.
    write/ |     SELECT *                            |.
    write/ |       FROM z_cds_amdpiv_regio 'PA ' |.
    write/ |       INTO TABLE @DATA(t_kna1).         |.
    write/ |                                         |.
    write/ |     LOOP AT t_kna1 into DATA(s_kna1).   |.
    write/ |       write / s_kna1-name1.             |.
    write/ |     ENDLOOP.                            |.
    write/ |                                         |.
    write/ |  ENDMETHOD.                             |.
    write/ | ENDCLASS.                    |.
    write/ |                     |.

    ULINE.

  ENDMETHOD.