Mostrando postagens com marcador Inline. Mostrar todas as postagens
Mostrando postagens com marcador Inline. Mostrar todas as postagens

20240106

LINE_INDEX (inline)

  METHOD line_index_1.

**     retorna o index de uma linha na tabela interna

*     line_index( itab[...condition...] ).

  ENDMETHOD.






  METHOD line_index_2.

    data: t_kna1         type table of kna1.


***  Sem table function
    READ TABLE t_kna1
       TRANSPORTING NO FIELDS
       WITH KEY kunnr = '20'.

    DATA(v_tabix) = sy-tabix.

***  Com table function
    data(v_tabix2) = line_index( t_kna1[ kunnr = '20' ] ).


  ENDMETHOD.




  METHOD line_index_3.

     types: begin 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.



     data(t_kna1) = value y_t_kna1(
       ( kunnr = '10'  name1 = 'Cliente dez'   )
       ( kunnr = '20'  name1 = 'Cliente vinte' )
     ).


*** Sem table function
    READ TABLE t_kna1
      TRANSPORTING NO FIELDS
      WITH KEY kunnr = '20' .

    data(v_tabix) = sy-tabix.


*** Com table function
    DATA(v_existe2) = line_index( t_kna1[ kunnr = '20' ] ).

  ENDMETHOD.




LINE_EXISTS (inline)

  METHOD line_exists_1.

**     retorna true se uma linha existe na tabela interna

*     line_exists( itab[] ).




  ENDMETHOD.




  METHOD line_exists_2.

*    data: t_kna1     TYPE TABLE OF kna1.
    types: begin 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 .


    data(t_kna1) = value y_t_kna1(
      ( kunnr = '10'  name1 = 'Cliente dez' )
      ( kunnr = '20'  name1 = 'Cliente vinte' )
      ( kunnr = '30'  name1 = 'Cliente trinta' )
    ).

***     Sem table function
    READ TABLE t_kna1
      TRANSPORTING NO FIELDS
      WITH KEY kunnr = '20' .



***     Com table function
    data(v_tabix) = line_index( t_kna1[ kunnr = '20' ] ).


  ENDMETHOD.




  METHOD line_exists_3.

     types: begin 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.



     data(t_kna1) = value y_t_kna1(
       ( kunnr = '10'  name1 = 'Cliente dez'   )
       ( kunnr = '20'  name1 = 'Cliente vinte' )
     ).


*** Sem table function
    READ TABLE t_kna1
      TRANSPORTING NO FIELDS
      WITH KEY kunnr = '20' .

    IF ( sy-subrc IS INITIAL ).

    ENDIF.



*** Com table function
*    if line_exists( t_kna1[ kunnr = '20' ] ).
*
*    endif.

  ENDMETHOD.







  METHOD line_exists_4.

     types: begin 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.



     data(t_kna1) = value y_t_kna1(
       ( kunnr = '10'  name1 = 'Cliente dez'   )
       ( kunnr = '20'  name1 = 'Cliente vinte' )
     ).


*** Sem table function
    READ TABLE t_kna1
      TRANSPORTING NO FIELDS
      WITH KEY kunnr = '20' .

    IF ( sy-subrc IS INITIAL ).
       data(v_existe) = 'Sim'.
    ELSE.
      v_existe = 'Não'.
    ENDIF.



*** Com table function
    DATA(v_existe2) = COND #(
      WHEN line_exists( t_kna1[ kunnr = '20' ]  )
      THEN 'Sim'
      ELSE 'Não'
    ).


  ENDMETHOD.



READ TABLE (inline)

  METHOD read_table_1.
   data: t_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_2) = t_kna1[ kunnr = '10' ].


  ENDMETHOD.



  METHOD  read_table_2.

    types: BEGIN 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_kna1) = value y_t_kna1(
                 ( kunnr = '10'  name1 = 'Cliente Dez' )
                 ( kunnr = '11'  name1 = 'Cliente Vinte' )
    ).

    data(s_dez)   = t_kna1[ kunnr = '10' ].
    data(s_vinte) = t_kna1[ 2 ].

    TRY.
       data(s_none) = t_kna1[ 3 ].

    CATCH cx_sy_itab_line_not_found INTO data(ex).

    ENDTRY.



  ENDMETHOD.




  METHOD read_table_3.

    types: BEGIN 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_kna1) = VALUE 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_name1) = t_kna1[ kunnr = '10' ]-name1 .

  ENDMETHOD.



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

  ENDMETHOD.




  METHOD read_table_4.
     types: begin 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_kna1) = value 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_netwr) = t_kna1[ kunnr = '20' ]-t_orders[ vbeln = '2002' ]-netwr.

*    ou

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

  ENDMETHOD.




  METHOD read_table_5.
     types: begin 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_kna1) = value y_t_kna1(
       ( kunnr = '10'  name1 = 'Cliente dez' )
       ( kunnr = '20'  name1 = 'Cliente vinte' )
       ( kunnr = '30'  name1 = 'Cliente trinta' )
     ).



     data(s_trinta) = t_kna1[ KEY k2 index 2 ].

*    ou

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

  ENDMETHOD.