MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   ¿Qué se os ocurre? (foro/showthread.php?t=77227)

vic3 20/06/17 07:21:56

¿Qué se os ocurre?
 
Hola, a ver que se os ocurre para esto. Imaginaos que tengo una serie de variables, todas de tipo STRING con estos valores recogidos (inventados para el ejemplo):

OPERADOR_1 = '10'
SIMBOLO_1 = '+'
OPERADOR_2 = '5'
SIMBOLO_2 = '-'
OPERADOR_3 = '2'
...

Si hiciese un CONCATENATE almacenandolo en una variable:
RESULTADO = '10+5-2...'

Mi pregunta es, ¿se os ocurre alguna forma de realizar esa operación RESULTADO? Tanto los números como los símbolos (+,-,*,/) pueden cambiar y no quiero un código extenso de IF...ENDIF y CASE...ENDCASE

Gracias de antemano.

joau_fedipe 20/06/17 21:49:37

otra forma
 
puedes hacer también así:

COMPUTE resultado = operador_1 + operador_2 - operador_3 .

o así:

COMPUTE resultado = 10 + 5 - 2 .

Saludos.

mialma 22/06/17 12:41:56

Creando un pool de rutinas
 
Por hacerlo de forma complicada:


REPORT suma.

DATA:
operador_1(10) VALUE '10',
simbolo_1(10) VALUE '+',
operador_2(10) VALUE '5',
simbolo_2(10) VALUE '-',
operador_3(10) VALUE '2'.

DATA:
t_source_tab TYPE TABLE OF char72,
g_program_name TYPE sy-repid,
g_syntax_message TYPE string,
g_line_no TYPE i
, linea(100), operacion(100),
resultado TYPE i.

CONCATENATE operador_1 simbolo_1
operador_2 simbolo_2
operador_3 INTO operacion SEPARATED BY space.


REFRESH t_source_tab.
APPEND 'REPORT' TO t_source_tab.
APPEND sy-repid TO t_source_tab.
APPEND '.' TO t_source_tab.
APPEND 'FORM MATH CHANGING RESULTADO.' TO t_source_tab.
CONCATENATE 'RESULTADO = ' operacion '.' INTO linea SEPARATED BY space.
APPEND linea TO t_source_tab.
APPEND 'ENDFORM.' TO t_source_tab.



GENERATE SUBROUTINE POOL t_source_tab NAME g_program_name
MESSAGE g_syntax_message LINE g_line_no.
IF sy-subrc <> 0.
MESSAGE g_syntax_message TYPE 'E'.
ENDIF.

START-OF-SELECTION.
PERFORM math IN PROGRAM (g_program_name) CHANGING resultado.
WRITE :/ resultado.


Husos Horarios son GMT. La hora en este momento es 01:40:51.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web