20240106

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.