20240106

READ TABLE (inline)

  METHOD read_table_1.
   datat_kna1     type table of kna1.
**   expressão
*    itab[idx|key_comp = x]

** Forma Antiga
   READ TABLE t_kna1 into DATA(s_kna1_1)
     WITH KEY kunnr '10' .

** Nova Forma
   data(s_kna1_2t_kna1[ kunnr '10' ].


  ENDMETHOD.



  METHOD  read_table_2.

    typesBEGIN OF ty_kna1,
              kunnr     type kna1-kunnr,
              name1     type kna1-name1,
           END OF ty_kna1,

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

*   incluindo regisros na tabela interna
    data(t_kna1value y_t_kna1(
                 kunnr '10'  name1 'Cliente Dez' )
                 kunnr '11'  name1 'Cliente Vinte' )
    ).

    data(s_dez)   t_kna1[ kunnr '10' ].
    data(s_vintet_kna1[ ].

    TRY.
       data(s_nonet_kna1[ ].

    CATCH cx_sy_itab_line_not_found INTO data(ex).

    ENDTRY.



  ENDMETHOD.




  METHOD read_table_3.

    typesBEGIN OF ty_kna1,
              kunnr     type kna1-kunnr,
              name1     type kna1-name1,
           END OF ty_kna1,

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


    data(t_kna1VALUE y_t_kna1(
                     kunnr '10' name1 'Cliente Dez' )
                     kunnr '20' name1 'Cliente Vinte' )
    ).


*    data(s_10) = t_kna1[ kunnr = '10' ].
*    data(s_10_name1) = s_10-name1 .
*
*    ou

    data(s_10_name1t_kna1[ kunnr '10' ]-name1 .

  ENDMETHOD.



** Table expression como LHS (left hand expression)
**
**
  METHOD build_name.

  ENDMETHOD.




  METHOD read_table_4.
     typesbegin of y_order,
                vbeln        type vbak-vbeln,
                netwr        type vbak-netwr,
            end of y_order,

            begin of y_kna1,
              kunnr    type kna1-kunnr,
              name1    type kna1-name1,
              t_orders type STANDARD TABLE OF y_order
                 WITH DEFAULT KEY,
            end of y_kna1,

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



     data(t_kna1value y_t_kna1(
       kunnr '10'  name1 'Cliente dez'
         t_orders value #(
           vbeln '1001' netwr '43421432' )
           vbeln '1002' netwr '3713322' )
         )
       )

       kunnr '20'  name1 'Cliente vinte'
         t_orders value #(
           vbeln '2001' netwr '202001' )
           vbeln '2002' netwr '202002' )
           vbeln '2003' netwr '202003' )
         )
       )
     ).



     data(v_2002_netwrt_kna1[ kunnr '20' ]-t_orders[ vbeln '2002' ]-netwr.

*    ou

     t_kna1[ kunnr '20' ]-t_orders[ vbeln '2002' ]-netwr '202002'.

  ENDMETHOD.




  METHOD read_table_5.
     typesbegin of y_kna1,
              kunnr    type kna1-kunnr,
              name1    type kna1-name1,
            end of y_kna1,

            y_t_kna1    type STANDARD TABLE OF y_kna1
              WITH KEY PRIMARY_KEY COMPONENTS kunnr
              WITH NON-UNIQUE SORTED KEY k2
              COMPONENTS name1.



     data(t_kna1value y_t_kna1(
       kunnr '10'  name1 'Cliente dez' )
       kunnr '20'  name1 'Cliente vinte' )
       kunnr '30'  name1 'Cliente trinta' )
     ).



     data(s_trintat_kna1[ KEY k2 index ].

*    ou

     data(s_10)     t_kna1[ KEY k2 name1 'Cliente dez' ].

  ENDMETHOD.