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 21/02/09, 07:56:09
romario2 romario2 is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 233
bucle loop q no funciona

Hola,

En mi código vamos a tabla de cabecera con vbeln y obtenemos el kunmv, vamos a la de posiciones y obtenemos los posnr y sincronizamos


** comentarios
*Type KONV si KSCHL = SHIM o DHIM o MHIM,entonces "IVA" y MWSK1 <> *RB, RX o RY, si MWSK1 = RB, RX o RY entonces "IGIC" VBRK KNUMV

LOOP AT it_konv
WHERE kposn = vbrp-posnr AND knumv = vbrk-knumv.
IF kposn_aux <> it_konv-kposn.
kposn_aux = it_konv-kposn.

Debugando he comprobado que en la tabla interna it_konv
tenemos por ej:

KNUMV KPOSN
4567777 01
4567777 01
4567777 02
4567777 02

Debido a que Kposn no es único, no corre bien el loop por todos los registros
Alguien me puede dar una solución?

Saludos
Responder Con Cita
  #2  
Viejo 22/02/09, 18:13:46
Avatar de Jonathan Barrio Rodriguez
Jonathan Barrio Rodriguez Jonathan Barrio Rodriguez is offline
Senior Member
 
Fecha de Ingreso: oct 2007
Localización: MADRID
Mensajes: 199
Justo antes del LOOP:

*Borramos los registros duplicados.
ORDER it_konv BY knumv kpon ASCENDING.
DELETE ADJACENT DUPLICATES FROM it_konv.

El tema de las Condiciones es un pelín complicado, si tienes incidencias no dudes en escribir.

Saludos.
Responder Con Cita
  #3  
Viejo 23/02/09, 06:43:50
bisonye bisonye is offline
Senior Member
 
Fecha de Ingreso: ago 2006
Mensajes: 635
¿que es lo que tienes que hacer? Si lo que quieres es ver las posiciones para el registro de condición es lo que comenta yoni si lo que quieres es ver las condiciones aplicadas a las líneas tienes que recorrer sin poner el if.

Saludos
Responder Con Cita
  #4  
Viejo 23/02/09, 08:28:33
romario2 romario2 is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 233
loop

Hola,

quiero recorrer registro a registro la tabla interna y verificar el valor de los campos kschl y mwsk1.
Entonces meter estas condiciones en el LOOP.

( ( kschl = 'SHIM' ) OR ( kschl = 'DHIM' ) OR ( kschl = 'MHIM' ) ) AND
( ( mwsk1 <> 'RB') OR ( mwsk1 <> 'RX' ) OR ( mwsk1 <> 'RY' ) ).
v_taxtype = 'IVA'.
v_taxtypeli = 'IVA'.
v_supclient = 'IVA'.

*si KONV-KSCHL = SHIM o DHIM o MHIM,MWSK1 = RB, RX o RY ----> entonces "IGIC"
IF ( ( it_konv-kschl = 'SHIM' ) OR ( it_konv-kschl = 'DHIM' ) OR ( it_konv-kschl = 'MHIM' ) ) AND
( ( it_konv-mwsk1 = 'RB') OR ( it_konv-mwsk1 = 'RX' ) OR ( it_konv-mwsk1 = 'RY' ) ).
v_taxtype = 'IGIC'.
v_taxtypeli = 'IGIC'.
v_supclient = 'IGIC'.
ELSE.
v_taxtype = ''.
v_taxtypeli = ''.
v_supclient = ''.

ENDIF.

IF ( ( it_konv-kschl = 'SHIM' ) OR ( it_konv-kschl = 'DHIM' ) OR ( it_konv-kschl = 'MHIM' ) ) .
CLEAR v_impli.
v_impli = 10.
IF it_konv-kbetr <> 0 AND v_impli <> 0.
v_ratetaxli = it_konv-kbetr / v_impli.
ENDIF.
*IU
ELSE.
v_ratetaxli = ''.
ENDIF.

IF it_konv-kbetr <> 0 AND v_imp <> 0.
CLEAR v_imp.
v_imp = 10.
v_ratetax = it_konv-kbetr / v_imp.
*IU
ELSE.
v_ratetax = ''.
ENDIF.

OJO, porque konv no es unico, y quiero recorrer registro a registro
Responder Con Cita
  #5  
Viejo 23/02/09, 08:49:17
bisonye bisonye is offline
Senior Member
 
Fecha de Ingreso: ago 2006
Mensajes: 635
Los registros normalmente son únicos para knumv posición y KSCHL. Para cada condición línea hay una línea por registro de condición. Lo que puedes hacer es recorrer todas las condiciones y cuando hayas encontrado la que te sirve poner la condición para que no siga recorriendo ese knumv.

Saludos
Responder Con Cita
  #6  
Viejo 23/02/09, 18:45:14
Avatar de Jonathan Barrio Rodriguez
Jonathan Barrio Rodriguez Jonathan Barrio Rodriguez is offline
Senior Member
 
Fecha de Ingreso: oct 2007
Localización: MADRID
Mensajes: 199
Mira este código:

SELECT *
INTO CORRESPONDING FIELDS OF TABLE konv_h
FROM konv AS v
FOR ALL ENTRIES IN tabla_alv
WHERE v~knumv = tabla_alv-knumv
AND kinak <> flag_x
AND kntyp <> 'D'. "IVA
* AND KSCHL(2) = 'ZX'.

Cuando he recuperado los datos me he fijado solo en el
KNTYP
para verificar que no fuera IVA. Osea en tu caso KNTYP = 'D'.
Pero esto es variable según la casuistica de la empresa. Hablalo con tu consultor o analista.

Por otro lado, te recomendaría crear una tabla Z customaizing con vista de actualización (se11, se30) para evitar los literales como 'D' o en tu caso KSCHL = 'SHIM'.

DE todos modos hay un campo uniquivoco para cada registro de la condición, osea, por cada KNUMV, encuentras varios KNUMH en la KONV. Todos los KNUMH están recogidos en la tabal KONH.

Suelo trabajar haciendome una tabla interna que contenga como mínimo

VBELN | KNUMV | KNUMH | KSCHL |

De todos modos como te comentaba, consultalo con tu superior.
Comenta si quieres cual es el fin de este rporte a ver si se puede dar una orientación ´más concreta.

Saludos
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 22:12:14.


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