MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 20/06/17, 08:21:56
Avatar de vic3
vic3 vic3 is offline
Member
 
Fecha de Ingreso: mar 2017
Mensajes: 33
¿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.
__________________
Consultor técnico SAP
Responder Con Cita
  #2  
Viejo 20/06/17, 22:49:37
joau_fedipe joau_fedipe is offline
Member
 
Fecha de Ingreso: oct 2006
Mensajes: 79
Thumbs up otra forma

puedes hacer también así:

COMPUTE resultado = operador_1 + operador_2 - operador_3 .

o así:

COMPUTE resultado = 10 + 5 - 2 .

Saludos.
Responder Con Cita
  #3  
Viejo 22/06/17, 13:41:56
mialma mialma is offline
Junior Member
 
Fecha de Ingreso: mar 2008
Mensajes: 19
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 11:32:37.


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