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[ 1 ] ) ).   |.
    write: / |       WRITE:/ t_kna1[ 1 ]-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:/ |  @ClientDependent: false |.
    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_amdp( iv_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.