¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como calcular fórmulas dinámicas em ABAP de forma eficiente?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 11 Vistas
0
Cargando...

Caros todos,

O ABAP fornece algo semelhante a um analisador de fórmulas?

Gostaria de ter a capacidade de calcular corretamente algo como:

2*(A B) /(C D)

a fórmula é fornecida como uma string dinâmica, e os valores dos parâmetros são armazenados em algum lugar.

Existe algum analisador que me ajude a calcular corretamente?

Além de usar GENERATE SUBROUTINE POOL?

Atenciosamente,

Christoph Aschauer

A mensagem foi editada por:

Christoph Aschauer

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

3 Respuestas

0
Cargando...

Olá,

O seguinte exemplo de código utiliza JavaScript para avaliar a expressão, você deve substituir as variáveis na expressão pelos valores reais. Também é possível usar o método BIND do CL_JAVA_SCRIPT para vincular variáveis ABAP a variáveis JS.

===============================

REPORT evaluate_formula.

DATA source TYPE string.

DATA return_value TYPE string.

DATA js_processor TYPE REF TO cl_java_script.

js_processor = cl_java_script=>create( ).

CONCATENATE

'var result = '

' 2*(2 + 6)/4 '

';'

'result; '

INTO source SEPARATED BY cl_abap_char_utilities=>cr_lf.

return_value = js_processor->evaluate( source ).

WRITE return_value.

==================================

Cumprimentos,

Rao A

Mensagem editada por:

Rao Arimilli

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá a todos!

Resolvi os problemas da seguinte maneira:

- Limitação de 36 sub-rotinas: programa SUBMIT. (este programa gera conjuntos genéricos de sub-rotinas (comunicação via DB ou objetos compartilhados possíveis)

- Limitação de linha de conjunto de sub-rotinas (255 caracteres).

Também é um cálculo executável:

calc =

(

3

+

7

)

*

2

.

Portanto, não há mais restrição de linha ao ter uma fórmula muito longa a ser processada de forma genérica.

Christoph

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Resolvi o problema por conta própria. Por favor, veja o comentário anterior ou sinta-se à vontade para perguntar.

Christoph

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?