"
Supported by

SELECT comparing 2 fields of the same table

This tip is simple and quick, but I bet 200.482 Portuguese escudos that few know it.

How to use fields of the table being selected to filter the selection results:


DATA: cnt TYPE i.

SELECT COUNT( * )
       FROM kna1
       INTO cnt
       WHERE telf1 = kna1~telfx.

WRITE cnt.

In this SELECT we obtain all the customers whose fax number is the same as their phone number.

Did you know this? Had you already done this?

Thanks to Rui Pina for the tip.

And thanks to Kendra for the photo .

Greetings from Abapinho.

6 comentários a “SELECT comparing 2 fields of the same table”

  1. Ricardo Franco Diz:

    Muito bom!

    Com 8 anos de ABAP nunca vi isso e perguntei pra galera e ninguém tinha visto.

    Abraço.

    Eterno aprendiz!

  2. Nuno Godinho Diz:

    Pois e eu também não! Mas já tinha precisado várias vezes e até há pouco tempo não sabia que dava.

  3. Filipe Diz:

    Olá,

    Demais, obrigado pela partilha…

  4. Felipe Diz:

    Bacana! Me poupou algum esforço buscando fluxo de documentos na tabela VBFA!

    Como sempre, uma boa dica!
    Obrigado!

  5. Sérgio Serra Diz:

    Já usei bastantes vezes. É bom explorar as outras funções como o MAX, MIN, AVG, SUM, como está aqui: http://help.sap.com/abapdocu_702/en/abapselect_aggregate.htm

    O MAX é bom para programaticamente calcular o próximo número de um campo, por exemplo, para inserts.

    Alternativamente, se já tivermos uma tabela interna, a melhor forma de obter o count com condições é a seguinte:

    it_tab -> tabela interna
    it_tab2 -> cópia dessa tabela.
    lv_count -> número de registos
    VALOR -> condição do que queremos obter

    it_tab2 = it_tab.
    DELETE it_tab2 WHERE NOT campo = ‘VALOR’.
    lv_count = LINES( it_tab2 ).

  6. Adriano Ferrari Diz:

    Ótima dica.
    Não havia conhecimento deste comando…
    Apenas um comentário com relação ao comentário do Sergio Serra….. Por favor, select MAX para definir id de tabela não…… já vi diversos programas fazendo isso e sempre da pau… principalmente quando muitos usuários utilizam a mesma transação. Usem Objetos de Numeração (transação SNUM)….. apenas tenham atenção na hora de transportar a request, pois os intervalos não são inseridos na request automáticamente, sendo necessária inclusão manual em request customizing.

Deixe um comentário


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