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.

    data: s_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
    types: begin 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_kna1) = VALUE 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 1 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[ 1 ]-kunnr } - { t_kna1[ 1 ]-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=>display( v_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_natal) = conv 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=>display( v_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_natal) = conv 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.