"
Supported by

How to ask if the line exists without seeming fashioned

Long ago, you used the expression “groovy, man”. Later came “great, man”. Then there was “cool”. Today you say “awesome”. It’s important not to get confused and not make a fool of yourself. 

And how do you ask an internal table if a line exists exists?


DATA: t_kunnr TYPE STANDARD TABLE OF kunnr.

In the past you asked like this:


READ TABLE t_kunnr TRANSPORTING NO FIELDS WITH KEY TABLE_LINE = i_kunnr.
IF sy-subrc = 0.
* Porreiro pá!!!!!
ENDIF.

Now you asked like this:


IF line_exists( t_kunnr[ TABLE_LINE = i_kunnr ] ).
* Altamente!!!!!
ENDIF.

Get it right to avoid being embarrassed.

But please note that this only works from release 740 on.

Thank you Custódio Oliveira for the tip.

Thank you Simon Webster for the photo.

O Abapinho saúda-vos.

4 comentários a “How to ask if the line exists without seeming fashioned”

  1. Custodio Diz:

    Poxa, nem me deu credito :(

  2. Braulio Corea Diz:

    Lembrando que vale para release 740

  3. Nuno Godinho Diz:

    Verdade. Acrescentei nota sobre a 740. Obrigado.

  4. Lucas Tadeu Diz:

    Interessante, mas em questão de desempenho não compensa.

    Comparei o tempo de execução na ST12 (vou colocar o código no final da mensagem) entre o read table (com e sem table key) em relação ao line_exists. Resultado: o read table é muito mais rápido.

    Call Nbr Gross Net
    PERFORM LINE_EXISTS 1 321 307
    PERFORM READ_TABLE 1 30 22

    Código
    REPORT ztestelucas.

    TYPES: BEGIN OF teste
    , key TYPE n
    , data(10) TYPE c
    , END OF teste.

    DATA gt_teste TYPE HASHED TABLE OF teste WITH UNIQUE KEY key.

    START-OF-SELECTION.

    DATA: ls_teste LIKE LINE OF gt_teste.

    DO 1000000 TIMES.

    ADD 2 TO ls_teste-key.

    ls_teste-data = ‘asdfhasui’.

    INSERT ls_teste INTO TABLE gt_teste.

    ENDDO.

    PERFORM line_exists.

    PERFORM read_table.

    FORM line_exists.

    IF line_exists( gt_teste[ key = 1500000 ] ).

    WRITE ‘A’.

    ENDIF.

    ENDFORM.

    FORM read_table.

    READ TABLE gt_teste TRANSPORTING NO FIELDS WITH TABLE KEY key = 1500000.

    IF sy-subrc = 0.

    WRITE / ‘B’.

    ENDIF.

    ENDFORM.

Deixe um comentário


About Abapinho
Abapinho runs on WordPress
Articles (RSS) e Comments (RSS).