Boas prácticas
Usarás o comando TABLES só quando inevitável
2014-07-31

Uma das únicas situações onde é inevitável é com SELECT-OPTIONS. Em todos os outros casos, declara explicitamente uma variável local com uma estrutura equivalente. Basicamente o comando TABLES cria variáveis globais obscuras que aumentam a ambiguidade do código. E variáveis globais devem ser evitadas na maior parte dos casos.
1 de Agosto de 2014 às 10:18
Eu já o faço assim ehehe..
E tenho uma vaga ideia que, mesmo para usar SELECT-OPTIONS, existe uma forma de os fazer sem o TABLES..
Vou ver se encontro onde li isso e depois partilho :)
1 de Agosto de 2014 às 10:22
Cá está…encontrei. Basta fazerem assim:
DATA: v_kunnr TYPE kunnr.
SELECT-OPTIONS: s_kunnr FOR v_kunnr.
Et voilá :)
1 de Agosto de 2014 às 11:45
Also, for screen fields in screen painter, it brings info from ddic automatically when we use tables
1 de Agosto de 2014 às 17:55
Boa tarde Abapinho,
Antes de mais nada, quero agradecer por este grande site, tem sido uma grande referência.
Vinha só dizer que mesmo para os SELECT-OPTIONS é evitável o comando TABLES.
Por exemplo, para datas, pode ser criada uma variável gv_date TYPE dats e declarar o SO como so_date FOR gv_date.
E mesmo para campos da tabela, pode ser declarada uma estrutura gs_sflight TYPE sflight (para não cair fora dos exemplos da SAP!), e declarar os SO utilizando a estrutura e não a tabela. Porque, na realidade, o FOR do SO é feito para a linha de cabeçalho e não para a tabela.
Assim, evita-se esta instrução obsoleta e as assombrosas linhas de cabeçalho! Não se evita é a declaração de uma variável global, mas nem sempre dá para ter tudo…
Fica um abraço
1 de Agosto de 2014 às 20:18
O comando TABLES também pode ser evitado na criação de SELECT-OPTIONS.
É possível você criar um SELECT-OPTIONS a partir de uma variável com o tipo desejado:
DATA: v_mara TYPE mara-matnr.
SELECT-OPTIONS: s_mara FOR v_mara.
Obviamente, teremos uma variável que servirá apenas para a criação do SELECT-OPTIONS e não será utilizada em nenhum outro ponto do programa, mas o ABAP considera isso uma boa prática. Se formos na verificação ampliada do código fonte, não veremos nenhuma ocorrência da não utilização da variável no programa.
4 de Agosto de 2014 às 10:32
Para o SELECT-OPTIONS o TABLES *não* é inevitável, pode ser usada outra variável do programa (que já exista ou declarada especificamente para isso).
DATA: lv_werks TYPE t001w-werks.
SELECT-OPTIONS so_werks FOR lv_werks.