20240106

OPEN SQL

  METHOD tamplates_1 .

*   String template
*    x = |...literal...{expression}\...control characters...|

    WRITE:'*** Open SQL'.
    WRITE:'*** '.
    WRITE:'*** Comma separated lists'.
    WRITE:'*** Escape character for host variables'.
    WRITE:'*** SQL expressions'.

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

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

    ULINE.

  ENDMETHOD.










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

    WRITE:'*** tamplates_2 - Forma Básica' .
    WRITE:'*** Listas de campo separadas por vírgula (,) ' .
    WRITE:'*** quando utilizadas declarações inline' .

**  Forma Antiga
    write:/ |--> |.
    write:/ |--> Forma Antiga|.
    write:/ |.| && ||.

**  Definições
    typesbegin of y_mara,
             matnr      type matnr,
             meins      type meins,
             mtart      type mtart,
           end of y_mara.

    DATA t_mara TYPE STANDARD TABLE OF y_mara
             WITH EMPTY KEY.


    write:/ |    SELECT matnr  meins  mtart|.
    write:/ |      from mara|.
    write:/ |      into CORRESPONDING FIELDS OF TABLE t_mara.|.

**  Seleção de dados
    SELECT matnr  meins  mtart
      from mara
      into CORRESPONDING FIELDS OF TABLE t_mara.


*   LisTa dados
    LOOP AT t_mara INTO DATA(ls_mara).
       check sy-tabix < 6.
       write:/01 |MATNR{ ls_mara-matnr } |,
              25 |MEINS{ ls_mara-meins } |,
              45 |MTART{ ls_mara-mtart } | .
    ENDLOOP.
    WRITE:/ |.|.




**  Forma Nova
    write:/ |--> |.
    write:/ |--> Forma Nova|.
    write:/ |.| && ||.

**  Seleção de dados
       write:/ |    SELECT matnr,  meins,  mtart|.
       write:/ |      from mara|.
       write:/ |      into TABLE @DATA(t_mara2).|.

*   LisTa dados
    LOOP AT t_mara INTO DATA(ls_mara2).
       check sy-tabix < 6.
       write:/01 |MATNR{ ls_mara2-matnr } |,
              25 |MEINS{ ls_mara2-meins } |,
              45 |MTART{ ls_mara2-mtart } | .
    ENDLOOP.
    WRITE:/ |.|.

    ULINE.

  ENDMETHOD.







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

    WRITE:'*** tamplates_3 -' .
    WRITE:'*** ESCAPE character (@) for host variables ' .
    WRITE:'*** ' .

**  Forma Antiga
    write:/ |--> |.
    write:/ |--> Forma Antiga|.
    write:/ |.| && ||.

**  Definições
    typesbegin of y_mara,
             matnr      type matnr,
             meins      type meins,
             mtart      type mtart,
           end of y_mara.

    DATA t_mara TYPE STANDARD TABLE OF y_mara
             WITH EMPTY KEY.

    data v_mtart type mara-mtart VALUE 'HAWA'.

    write:/ |        DATA t_mara TYPE STANDARD TABLE OF y_mara|.
    write:/ |                 WITH EMPTY KEY.|.
    write:/ |    |.
    write:/ |        data v_mtart type mara-mtart VALUE 'HAWA'.|.
    write:/ |.    |.
    write:/ |    SELECT matnr  meins  mtart|.
    write:/ |      from mara|.
    write:/ |      into CORRESPONDING FIELDS OF TABLE t_mara |.
    write:/ |      WHERE mtart v_mtart|.

**  Seleção de dados
    SELECT matnr  meins  mtart
      from mara
      into CORRESPONDING FIELDS OF TABLE t_mara
      where mtart v_mtart.


*   LisTa dados
    LOOP AT t_mara INTO DATA(ls_mara).
       check sy-tabix < 6.
       write:/01 |MATNR{ ls_mara-matnr } |,
              25 |MEINS{ ls_mara-meins } |,
              45 |MTART{ ls_mara-mtart } | .
    ENDLOOP.
    WRITE:/ |.|.




**  Forma Nova
    write:/ |--> |.
    write:/ |--> Forma Nova|.
    write:/ |.| && ||.

**  Seleção de dados
      write:/ |    SELECT matnr,  meins,  mtart|.
      write:/ |      from mara|.
      write:/ |      into TABLE @DATA(t_mara2|.
      write:/ |      where mtart @v_mtart |.

    SELECT matnr,  meins,  mtart
      from mara
      into TABLE @DATA(t_mara2)
      where mtart @v_mtart .

*   LisTa dados
    LOOP AT t_mara2 INTO DATA(ls_mara2).
       check sy-tabix < 6.
       write:/01 |MATNR{ ls_mara2-matnr } |,
              25 |MEINS{ ls_mara2-meins } |,
              45 |MTART{ ls_mara2-mtart } | .
    ENDLOOP.
    WRITE:/ |.|.


    ULINE.


  ENDMETHOD.







***
***
***
  METHOD tamplates_4 .

    WRITE:'*** tamplates_4 - SQL expressions' .
    WRITE:'*** Concatenar campos' .


    WRITE:/ |--> SQL Expressions|.
    WRITE:/ |--> |.

    WRITE:/ |    SELECT SINGLE|.
    WRITE:/ |      name1 && '' && name2 as namefull|.
    WRITE:/ |      INTO @DATA(s_kunnr)|.
    WRITE:/ |      FROM kna1|.
    WRITE:/ |      where kunnr '0001000000'.|.

    SELECT SINGLE
      name1 && ' ' && name2 as namefull
      INTO @DATA(s_kunnr)
      FROM kna1
      where kunnr '0001000000'.

    WRITE:/ |--> |.
    WRITE:/ |S_KUNNR{ s_kunnr } |.
    WRITE:/ |--> |.


    ULINE.



  ENDMETHOD.







***
***
***
  METHOD tamplates_5 .

    WRITE:'*** tamplates_5 - SQL expressions'.
    WRITE:'*** Soma de campos' .


    WRITE:/ |--> SQL Expressions|.
    WRITE:/ |--> |.

    WRITE:/ |    SELECT SINGLE|.
    WRITE:/ |      kzwi1 + kzwi2 as kswi|.
    WRITE:/ |      INTO @DATA(s_soma)|.
    WRITE:/ |      FROM vbap|.
    WRITE:/ |      where vbeln '0000000010'.|.
    WRITE:/ |        and posnr  '00010'.|.

    SELECT SINGLE
      KZWI1 + KZWI1 as kswi
      INTO @DATA(s_soma)
      FROM vbap
      where vbeln  '0000000010'
        and posnr  '00010'.

    WRITE:/ |--> |.
    WRITE:/ |S_SOMA{ s_soma } |.
    WRITE:/ |--> |.

    ULINE.

  ENDMETHOD.