20240106

STRING TEMPLATES

  METHOD string_tamplates_1 .

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

    write:'*** string_tamplates_1 - expression'.

*** Tradicional
    data v_cli        type string.

    datas_cli1      type kna1.

    CONCATENATE
      s_cli1-kunnr
      '-'
      s_cli1-name1
      INTO v_cli SEPARATED BY space.


*** Novo
    v_cli |{ s_cli1-kunnr } { s_cli1-name1 }|.


    write:/ v_cli.

    uline.

  ENDMETHOD.










***
***   Exemplo Simples
***
  METHOD string_tamplates_2 .

    write:'*** string_tamplates_2 - expression'.

**  Definições
    typesbegin of y_kna1,
             kunnr      type kunnr,
             name1      type name1,
           end of y_kna1,

           y_t_kna1    type STANDARD TABLE OF y_kna1
             WITH KEY PRIMARY_KEY COMPONENTS kunnr.


**  Preenchendo a tabela interna
    data(t_kna1VALUE y_t_kna1(
                     kunnr '10' name1 'Cliente Dez' )
                     kunnr '20' name1 'Cliente Vinte' )
                     kunnr '30' name1 'Cliente Trinta' )
    ).


*** Tradicinal
    write:'*** Tradicional'.
    data s_cli1     type line of y_t_kna1.
    READ TABLE t_kna1 INDEX into s_cli1.
    data v_cli type string.

    CONCATENATE
      s_cli1-kunnr
      '-'
      s_cli1-name1
      INTO v_cli SEPARATED BY space.

    write:/ v_cli.



*** Moderno
    write:'*** Moderno'.
    write:/ |{ t_kna1[ ]-kunnr } { t_kna1[ ]-name1  }|.

    uline.

  ENDMETHOD.







***
*** Literal + expression
***
  METHOD string_tamplates_3 .

    write:'*** string_tamplates_3 - expression'.


**  Definições
    data v_palavra     type string VALUE 'world'.
    data v_frase       type string .


*** Tradicional
    write:'*** Tradicional'.

    CONCATENATE
      'Hello'
      v_palavra
      INTO v_frase SEPARATED BY space.

    write:/ v_frase.



*** Moderno
    write:'*** Moderno'.


    write:/ |Hello { v_palavra }|.

    uline.


  ENDMETHOD.







***
***
***
  METHOD string_tamplates_4 .

    write:'*** string_tamplates_4 - cl_demo_output'.

    data v_texto type string.


    write:'*** Tradicional'.
    concatenate
      'First line.'
      cl_abap_char_utilities=>newline
      cl_abap_char_utilities=>horizontal_tab
      'tab'
      cl_abap_char_utilities=>horizontal_tab
      'tab'
      cl_abap_char_utilities=>horizontal_tab
      'tab'
      cl_abap_char_utilities=>newline
      cl_abap_char_utilities=>horizontal_tab
      'tab'
      cl_abap_char_utilities=>horizontal_tab
      'tab'
      cl_abap_char_utilities=>horizontal_tab
      'tab'
      cl_abap_char_utilities=>newline
      'Last line 22.'
      INTO v_texto.


    cl_demo_output=>displayv_texto ).


    write:'*** Moderno'.
    cl_demo_output=>display(
    |22 Firs line.\r\ttab\ttab\ttab\n\r\ttab\ttab\ttab\rLast line.|
    ).

    uline.


  ENDMETHOD.







***
***
***
  METHOD string_tamplates_5 .

    write:'*** string_tamplates_5 - Maiúculas, Minúsculas e Normal'.



*** Moderno
    write:'*** Moderno'.
    write:/ |{ 'Minúsculo ' CASE (cl_abap_format=>c_lower}|
         && |{ 'Maiúsculo ' CASE (cl_abap_format=>c_upper} e |
         && |{ 'Normal    ' CASE (cl_abap_format=>c_raw} | .

    uline.


  ENDMETHOD.







***
***
***
  METHOD string_tamplates_6 .

    write:'*** string_tamplates_6 - Rotina de conversão'.

*** Tradicional
    write:'*** Tradicional'.
    data v_matnr      type char40  value '123'.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input         v_matnr
      IMPORTING
        OUTPUT        v_matnr .

    write:/ v_matnr.

*** Moderno
    write:'*** Moderno'.
    v_matnr '456'.
    write:/ |{ v_matnr ALPHA IN }| .

    uline.



  ENDMETHOD.







***
***
***
  METHOD string_tamplates_7 .

    write:'*** string_tamplates_7 - Alinhamento'.

**** Tradicional
*    write:/ '*** Tradicional'.
*    data v_matnr      type char40  value '123'.
*
*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*      EXPORTING
*        input         = v_matnr
*      IMPORTING
*        OUTPUT        = v_matnr .
*
*    write:/ v_matnr.

*** Moderno
    write:'*** Moderno'.
    write:/ |{ 'Hello'   WIDTH 30 PAD '.' ALIGN LEFT } |,  /
            |{ 'Aligned' WIDTH 30 PAD '.' ALIGN CENTER } |/
            |{ 'World'   WIDTH 30 PAD '.' ALIGN RIGHT } | .

    uline.



  ENDMETHOD.







***
***
***
  METHOD string_tamplates_8.

    write:'*** string_tamplates_8 - Formato de data'.

    data(v_natalconv sydatum'20301225' ).
    data(v_br)    conv land1'BR' ).
    data(v_us)    conv land1'US' ).

*** Moderno
    write:'*** Moderno'.

    data(v_dates| { v_br }{ v_natal COUNTRY v_br } |
                    && |\n|
                    && | { v_us }{ v_natal COUNTRY v_us } |.

    cl_demo_output=>displayv_dates ).


    write:/ | { v_br }{ v_natal COUNTRY v_br } |
                    && |\n|
                    && | { v_us }{ v_natal COUNTRY v_us } |.

    uline.



  ENDMETHOD.







***
***
***
  METHOD string_tamplates_9 .

    write:'*** string_tamplates_9 - Formato de data (sem variáveis auxiliares)'.

    data(v_natalconv sydatum'20301225' ).
    data(v_br)    conv land1'BR' ).
    data(v_us)    conv land1'US' ).

*** Moderno
    write:'*** Moderno'.
    write:'(popup)'.

    cl_demo_output=>display(
                       CONV string(
                          LET v_natal2 CONV sydatum'20301225' IN
                          |{
                            CONV string(
                            LET v_br2 CONV land1'BR' in
                            |{ v_br2 }{ v_natal COUNTRY v_br }|
                            )
                           }|
                           && |\n| &&
                           |{
                             CONV string(
                             LET v_us2 CONV land1'US' IN
                             |{ v_us2 }{ v_natal2 COUNTRY v_us2 }|
                             )
                           }|
                       )
    ).

    uline.

  ENDMETHOD.