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 01/08/16, 08:34:23
Astaroth_SA Astaroth_SA is offline
Member
 
Fecha de Ingreso: jul 2016
Mensajes: 58
Sumar cadenas de caracteres?

Buenas. Acabo de empezar en esto y tengo una duda:

Además de otros campos, para lo ke me interesa, tengo un campo distribuidor (char4) y consumo (char16) en una trabla:
Y necesito que en otra me guarde las líneas que coincidan distribuidor con el campo consumo sumado:
¿Se pueden sumar las cadenas? He investigado algo del COLLECT pero no sé si el campo a sumar tiene que ser numérico o valen caracteres. Muchas gracias.
Responder Con Cita
  #2  
Viejo 01/08/16, 10:59:43
dantepx dantepx is offline
Junior Member
 
Fecha de Ingreso: oct 2015
Mensajes: 2
Sumar cadenas de caracteres?

Hola Astaroth_SA,

Viendo tu duda se me ha ocurrido una solución relativamente simple. En primer lugar te tendrías que crear una tabla de soporte para el distribuidor.

La idea es hacer dos LOOP's anidados. En la tabla de soporte haces un loop por distribuidor, y con este valor hacer otro LOOP a la tabla en la que tienes toda la información. Sumas el valor de los consumos y lo guardas en la tabla del sumatorio. A continuación te pongo como quedaría el código más o menos.

* Tabla que guarda la información. No se cual es su estructura
* pero al menos tiene los campos distribuidor y consumo

DATA: lt_normal TYPE TABLE OF " El que posea

* Tabla con la misma estructura que lt_normal en la que vamos
* a guardar los sumatorios por distribuidor

data: lt_sumada TYPE TABLE OF " El que posea

* Estructuras de carga

DATA: ls_normal TYPE TABLE OF " El que posea
ls_sumada TYPE TABLE OF " El que posea

* Tipo para la tabla de apollo de los distribuidores

TYPES: BEGIN OF ts_distribuidor,
distribuidor TYPE char4,
END OF ts_distribuidor.

DATA: lt_distribuidor TYPE TABLE OF ts_distribuidor.
DATA: ls_distribuidor TYPE ts_distribuidor.

CLEAR: ls_distribuidor,
ls_normal.

* Se carga la tabla de apollo con los distribuidores

LOOP AT lt_normal INTO ls_normal.

ls_distribuidor-distribuidor = ls_normal-distribuidor.

APPEND ls_distribuidor TO lt_distribuidor.

ENDLOOP.

* Se ordena

SORT lt_distribuidor.

* Se eliminan los duplicados

DELETE ADJACENT DUPLICATES FROM lt_distribuidor.

* Importante la limpieza de variables

CLEAR: ls_distribuidor,
ls_normal,
ls_sumada.

* LOOP por distribuidor

LOOP AT lt_distribuidor TO ls_distribuidor.

CLEAR: ls_normal,
ls_sumada.

LOOP AT lt_normal INTO ls_normal WHERE distribuidor = ls_distribuidor-distribuidor.

* Sumatorio del valor del consumo

ls_sumada-consumo = ls_normal-consumo + ls_sumada-consumo.

ENDLOOP.

ls_sumada-distribuidor = ls_distribuidor-distribuidor.

* Con el sumatorio del consumo y el distribuidor cargamos la tabla
* lt_sumada que es la contiene los valores sumados

APPEND ls_sumada TO lt_sumada.

ENDLOOP.

Espero que te sirva de ayuda,

Un cordial saludo.
Responder Con Cita
  #3  
Viejo 02/08/16, 07:29:25
Astaroth_SA Astaroth_SA is offline
Member
 
Fecha de Ingreso: jul 2016
Mensajes: 58
Voy a intentarlo así. Mi duda principal era esa que si creando una variable tipo char16 para el total podía hacer eso:

total (char16) = total (char16) + consumo (char16) y me diera el resultado numérico de la suma al ser cadenas de caracteres. Muchas gracias.
Responder Con Cita
  #4  
Viejo 02/08/16, 07:46:55
IPASCA02 IPASCA02 is offline
Junior Member
 
Fecha de Ingreso: jul 2016
Mensajes: 9
Question

¿ Se pueden sumar campos que sean definidos como tipo char? ¿Si son campos númericos que se van a sumar, no deberían ser de tipo númerico?

Un saludo
Responder Con Cita
  #5  
Viejo 02/08/16, 12:25:01
Astaroth_SA Astaroth_SA is offline
Member
 
Fecha de Ingreso: jul 2016
Mensajes: 58
Sí. Lo he probado con este programilla.

Captura.PNG
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 21:28:55.


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