Patrocinado por
Patrocinado por Inetum

Chama dinamicamente classes e métodos

images/thumbnail.jpg - Thumbnail

Ora aprende lá como invocar dinamicamente um método.

Vamos a isso.

Como invocar um método de uma instância:

CALL METHOD ref->(f)

Como invocar um método estático:

CALL METHOD classe=>(f)
CALL METHOD (c)=>metodo
CALL METHOD (c)=>(f)

E como invocar um método da própria classe:

CALL METHOD (f)
CALL METHOD ME->(f)

A variável f é alfanumérica e contém o nome do método. A variável c também é alfanumérica e contém o nome da classe.

O manual de instruções disto está aqui.

Como se não bastasse, podes passar os parâmetros dinamicamente assim:

CALL METHOD (class)=>(meth)
      PARAMETER-TABLE
        t_param.

em que t_param é uma tabela interna do tipo ABAP_PARMBIND_TAB.

O manual de instruções disto está aqui.

E encontras um exemplo da coisa aqui.

Muito útil. Claro que, além de mais confuso, como o código não pode ser compilado será necessariamente mais lento do que as chamadas estáticas normais. Mas é bom saber porque pode dar jeito.

Nota adicional: O Bruno Esperança sugere, e com razão, que estas chamadas dinâmicas só devem ser feitas quando mesmo necessário, visto perder-se a funcionalidade “where-used”.

Obrigado José Faria por me mostrares isto.

O Abapinho saúda-vos.