"
Apoiado por

Boas prácticas
Usarás o comando TABLES só quando inevitável

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.

6 comentários a “Usarás o comando TABLES só quando inevitável”

  1. Ricardo Monteiro Diz:

    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 :)

  2. Ricardo Monteiro Diz:

    Cá está…encontrei. Basta fazerem assim:

    DATA: v_kunnr TYPE kunnr.

    SELECT-OPTIONS: s_kunnr FOR v_kunnr.

    Et voilá :)

  3. gruber Diz:

    Also, for screen fields in screen painter, it brings info from ddic automatically when we use tables

  4. António P. Lacerda Diz:

    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

  5. Vinícius Diz:

    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.

  6. Rui Dantas Diz:

    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.

Deixe um comentário


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).