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 14/11/17, 08:36:55
Raulalsan Raulalsan is offline
Junior Member
 
Fecha de Ingreso: sep 2016
Mensajes: 25
Smile

Acabo de empezar en ABAP y seguro que hay una forma mejor, pero yo haría una lógica propia.
Te dejo una lógica que he implementado y que creo que funcionaría tal como deseas.

CLEAR ls_cliente_aux.
SORT lt_cliente BY cliente date DESCENDING.
DATA(num_rows) = lines( lt_cliente ).
LOOP AT lt_cliente INTO ls_cliente.
IF ls_cliente_aux-cliente NE ls_cliente-cliente AND sy-tabix NE
'1'.
APPEND ls_cliente_aux TO lt_cliente_aux.
ls_cliente_aux-cliente = ls_cliente-cliente.
ls_cliente_aux-date = ls_cliente-date.
ls_cliente_aux-saldo = ls_cliente-saldo.
ELSE.
IF sy-tabix EQ '1'.
ls_cliente_aux-cliente = ls_cliente-cliente.
ls_cliente_aux-date = ls_cliente-date.
ls_cliente_aux-saldo = ls_cliente-saldo.
ELSE.
IF sy-tabix EQ num_rows.
ls_cliente_aux-saldo = ls_cliente-saldo +
ls_cliente_aux-saldo.
APPEND ls_cliente_aux TO lt_cliente_aux.
ELSE.
ls_cliente_aux-saldo = ls_cliente-saldo +
ls_cliente_aux-saldo.
ENDIF.
ENDIF.
ENDIF.

ENDLOOP.

Saludos
Responder Con Cita
  #2  
Viejo 14/11/17, 10:01:01
Avatar de vic3
vic3 vic3 is offline
Member
 
Fecha de Ingreso: mar 2017
Mensajes: 33
Yo haría lo siguiente:

* Definición de variables: Esto lo haces a tu gusto...
Supongamos que tu tabla interna donde tienes los datos se llama GT_TABLA
DATA: gt_tabla_suma LIKE gt_tabla,
..........gs_tabla_suma LIKE LINE OF gt_tabla_suma.

TYPES: BEGIN OF ty_clientes,
..cliente TYPE i,
END OF ty_clientes.
DATA: gt_clientes TYPE STANDARD TABLE OF ty_clientes,
..........gs_clientes LIKE LINE OF gt_clientes

DATA: lv_clientes TYPE i.
DATA: lv_suma_saldo TYPE i.

* Nº de clientes: Vamos a ver cuantos clientes diferentes hay
LOOP AT gt_tabla INTO gs_tabla.
..gs_clientes-cliente = gs_tabla-cliente.
..APPEND gs_clientes TO gt_clientes.
ENDLOOP.
SORT gt_clientes BY cliente ASCENDING.
DELETE ADJACENT DUPLICATES FROM gt_clientes COMPARING ALL FIELDS.

CLEAR lv_clientes.
DESCRIBE TABLE gt_clientes LINES lv_clientes.

* Hacemos la suma de los saldos: Para tu caso, entiendo que solo necesitas sumar los saldos y quedarte con el nº de cliente y con la última fecha (la más reciente)
SORT gt_tabla BY cliente fecha ASCENDING. (pon el nombre correcto de tus campos en GT_TABLA)
DO lv_clientes TIMES.
..READ TABLE gt_clientes INTO gs_clientes WITH KEY sy-index.

..CLEAR lv_suma_saldo.
..LOOP AT gt_tabla INTO gs_tabla WHERE cliente = gs_clientes-cliente.
....gs_tabla_suma-cliente = gs_tabla-cliente.
....gs_tabla_suma-fecha = gs_tabla-fecha.
....lv_suma_saldo = lv_suma_saldo + gs_tabla-saldo.
....gs_tabla_suma-saldo = lv_suma_saldo.
..ENDLOOP.

..APPEND gs_tabla_suma TO gt_tabla_suma.
ENDDO.
__________________
Consultor técnico SAP

Úlima edición por vic3 fecha: 14/11/17 a las 10:11:53.
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 08:55:55.


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