#1
|
|||
|
|||
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. |
#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. |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
¿ 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 |
#5
|
|||
|
|||
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|