SELECT comparando 2 campos da própria tabela
2013-11-04

Esta dica é simples e rápida mas aposto 200$482 em como poucos a sabem.
Como usar campos da própria tabela que está a ser seleccionada para filtrar os resultados da selecção:
DATA: cnt TYPE i.
SELECT COUNT( * )
FROM kna1
INTO cnt
WHERE telf1 = kna1~telfx.
WRITE cnt.
Neste SELECT obtemos todos os clientes cujo fax é igual ao telefone.
Sabias? Já tinhas feito isto?
Obrigado Rui Pina pela dica.
Obrigado a Kendra pela foto.
O Abapinho saúda-vos.
7 de Novembro de 2013 às 19:34
Muito bom!
Com 8 anos de ABAP nunca vi isso e perguntei pra galera e ninguém tinha visto.
Abraço.
Eterno aprendiz!
10 de Novembro de 2013 às 12:54
Pois e eu também não! Mas já tinha precisado várias vezes e até há pouco tempo não sabia que dava.
28 de Novembro de 2013 às 15:04
Olá,
Demais, obrigado pela partilha…
28 de Novembro de 2013 às 15:56
Bacana! Me poupou algum esforço buscando fluxo de documentos na tabela VBFA!
Como sempre, uma boa dica!
Obrigado!
4 de Dezembro de 2013 às 10:53
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 ).
18 de Junho de 2014 às 19:31
Ó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.