"
Supported by

Best practices
Thou shalt use command TABLES only when unavoidable

Using SELECT-OPTIONS is one of the very few reasons for using TABLES. For all other cases, explicitly declare a local variable for the equivalent structure. TABLES basically creates obscure global variables which increase ambiguity in the code. And global variables should be avoided anyway.

6 comentários a “Thou shalt use command TABLES only when unavoidable”

  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


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