20240106

MESHES

  METHOD tamplates_1 .

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

    WRITE:'*** MESHES'.
    WRITE:'*** Leva as tabelas internas as associações'.
    WRITE:'*** que já tínhamos nas CDS VIEWS'.

    WRITE:''.
    WRITE:''.

    WRITE:'    types:'.
    WRITE:'      BEGIN OF mesh m1,'.
    WRITE:'        node1   type ...','                 *** Tab int decl.antes' .
    WRITE:'          ASSOCIATION _node2 to node2'.
    WRITE:'            ON ...  =  ...'.
    WRITE:'        node2   type ...'.
    WRITE:'          ASSOCIATION _node1 to node1'.
    WRITE:'            ON ...  =  ...'.
    WRITE:'      END OF  MESH m1.'.



    ULINE.

  ENDMETHOD.










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

    WRITE:'*** tamplates_2 - Exemplo Simples' .


    TYPES:
      BEGIN OF y_cidade,
        cod    TYPE i,
        nome   TYPE char20,
        estado TYPE char2,
      END OF y_cidade,

      y_t_cidade TYPE STANDARD TABLE OF y_cidade
        WITH KEY primary_key COMPONENTS cod,

      BEGIN OF y_estado,
        cod  TYPE char2,
        nome TYPE char20,
      END OF y_estado,

      y_t_estado TYPE STANDARD TABLE OF y_estado
       WITH KEY primary_key COMPONENTS cod,



      BEGIN OF MESH y_uf,
        estados TYPE y_t_estado
         ASSOCIATION _cidades TO cidades
           ON estado cod,
        cidades TYPE y_t_cidade
         ASSOCIATION _estado TO estados
           ON cod estado,
      END OF MESH y_uf.



    data(t_ufVALUE y_uf(
      estados VALUE y_t_estado(
        cod 'SP'   nome 'Sao Paulo' )
        cod 'RJ'   nome 'Rio de Janeiro' )
      )
      cidades VALUE y_t_cidade(
        cod '01'  nome 'Santo Andre'            estado 'SP' )
        cod '02'  nome 'Sao Bernardo do Campo'  estado 'SP' )
        cod '03'  nome 'Sao Caetano do Sul'     estado 'SP' )
        cod '04'  nome 'Petropolis'             estado 'RJ' )
        cod '05'  nome 'Niteroi'                estado 'RJ' )
      )
    ).

    write:/ |Estado de Santo Andre:  |
      &&    |{ t_uf-cidades\_estado[ t_uf-cidades[ cod '01' ] ]-nome }|.



    ULINE.

  ENDMETHOD.







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

    WRITE:'*** tamplates_3 - Exemplo c/ LOOP' .
    WRITE:'*** Cidades do Rio' .


    TYPES:
      BEGIN OF y_cidade,
        cod    TYPE i,
        nome   TYPE char20,
        estado TYPE char2,
      END OF y_cidade,

      y_t_cidade TYPE STANDARD TABLE OF y_cidade
        WITH KEY primary_key COMPONENTS cod,

      BEGIN OF y_estado,
        cod  TYPE char2,
        nome TYPE char20,
      END OF y_estado,

      y_t_estado TYPE STANDARD TABLE OF y_estado
       WITH KEY primary_key COMPONENTS cod,



      BEGIN OF MESH y_uf,
        estados TYPE y_t_estado
         ASSOCIATION _cidades TO cidades
           ON estado cod,
        cidades TYPE y_t_cidade
         ASSOCIATION _estado TO estados
           ON cod estado,
      END OF MESH y_uf.



    data(t_ufVALUE y_uf(
      estados VALUE y_t_estado(
        cod 'SP'   nome 'Sao Paulo' )
        cod 'RJ'   nome 'Rio de Janeiro' )
      )
      cidades VALUE y_t_cidade(
        cod '01'  nome 'Santo Andre'            estado 'SP' )
        cod '02'  nome 'Sao Bernardo do Campo'  estado 'SP' )
        cod '03'  nome 'Sao Caetano do Sul'     estado 'SP' )
        cod '04'  nome 'Petropolis'             estado 'RJ' )
        cod '05'  nome 'Niteroi'                estado 'RJ' )
      )
    ).

    write:/ |Cidades do Rio de Janeiro:.

    LOOP AT t_uf-estados\_cidades[ t_uf-estados[ cod 'RJ' ] ] INTO DATA(s_cid_rj).
       write:
         / |   { s_cid_rj-nome } |.
    ENDLOOP.


    ULINE.


  ENDMETHOD.







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

    WRITE:'*** tamplates_4 - Exemplo c/ LOOP' .
    WRITE:'*** Cidades do Rio (com estado)' .


    TYPES:
      BEGIN OF y_cidade,
        cod    TYPE i,
        nome   TYPE char20,
        estado TYPE char2,
      END OF y_cidade,

      y_t_cidade TYPE STANDARD TABLE OF y_cidade
        WITH KEY primary_key COMPONENTS cod,

      BEGIN OF y_estado,
        cod  TYPE char2,
        nome TYPE char20,
      END OF y_estado,

      y_t_estado TYPE STANDARD TABLE OF y_estado
       WITH KEY primary_key COMPONENTS cod,



      BEGIN OF MESH y_uf,
        estados TYPE y_t_estado
         ASSOCIATION _cidades TO cidades
           ON estado cod,
        cidades TYPE y_t_cidade
         ASSOCIATION _estado TO estados
           ON cod estado,
      END OF MESH y_uf.



    data(t_ufVALUE y_uf(
      estados VALUE y_t_estado(
        cod 'SP'   nome 'Sao Paulo' )
        cod 'RJ'   nome 'Rio de Janeiro' )
      )
      cidades VALUE y_t_cidade(
        cod '01'  nome 'Santo Andre'            estado 'SP' )
        cod '02'  nome 'Sao Bernardo do Campo'  estado 'SP' )
        cod '03'  nome 'Sao Caetano do Sul'     estado 'SP' )
        cod '04'  nome 'Petropolis'             estado 'RJ' )
        cod '05'  nome 'Niteroi'                estado 'RJ' )
      )
    ).

    write:/ |Cidades do Rio de Janeiro (com estado):.

    LOOP AT t_uf-estados\_cidades[ t_uf-estados[ cod 'RJ' ] ] INTO DATA(s_cid_rj).
       write:
         /  |   { s_cid_rj-nome }|
         && | { t_uf-cidades\_estado[ s_cid_rj ]-nome } |.
    ENDLOOP.


    ULINE.



  ENDMETHOD.