¿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. |
otra forma
puedes hacer también así:
COMPUTE resultado = operador_1 + operador_2 - operador_3 . o así: COMPUTE resultado = 10 + 5 - 2 . Saludos. |
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 22:29:25. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web