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 08/04/15, 14:56:10
coloso coloso is offline
Senior Member
 
Fecha de Ingreso: feb 2006
Mensajes: 110
Hola compañero para empezar el error que te daba al principio es por la declaración del tipo de tabla

gt_det_cliente TYPE SORTED TABLE OF zsd_det_cliente WITH UNIQUE KEY kunnr,

Al ser una tabla con unique key, si se repite el mismo nº de kunnr te debe de dar el error por eso, has probado con

gt_det_cliente like standard table of zsd_det_client with header line, si te salen luego algún kunnr repetido ?????

Haz lo que te dice oskymoreok, pero declara la tabla como te digo yo.

Salu2.
Responder Con Cita
  #2  
Viejo 08/04/15, 18:00:17
oskymoreok oskymoreok is offline
Junior Member
 
Fecha de Ingreso: jul 2014
Mensajes: 25
Primero declara la tabla como te dice coloso, es importante que mantegas un orden poner los campos en el select

si Z es la primera tabla y el que mas campos en el select lleva, primero van esos ordenados dependiendo como estan declarados en la tabla zsd_det_cliente

SELECT

Z~mandt Z~kunnr Z~zsd_fecha_nac Z~zsd_doc_ident Z~zsd_dom_parti Z~zsd_dom_comer Z~zsd_est_civil Z~zsd_nacional Z~zsd_ruc Z~zsd_telefono Z~zsd_celular Z~zsd_email Z~zsd_localidad

"Despues irian todos los correspondiente a la segunda tabla kna1, en tu caso es uno solo

K~name1

INTO CORRESPONDING FIELDS OF gt_det_cliente
FROM zsd_det_cliente AS Z
JOIN KNA1 AS K
ON Z~name1 = K~name1




En el codigo que me dijiste pusiste K~name1 primero y va ultimo, te explico, cuando pones into corresponding field va a buscar por cada campo de select en tu tabla donde se encuentra pra guardarla, pero si pones into to buscaria de a uno y no seria optimo, es importante que respetes siempre el orden
Responder Con Cita
  #3  
Viejo 08/04/15, 19:17:49
Avatar de zayas555@gmail.com
zayas555@gmail.com zayas555@gmail.com is offline
Junior Member
 
Fecha de Ingreso: ene 2011
Localización: Paraguay
Mensajes: 13
__________________
Zayas
Responder Con Cita
  #4  
Viejo 04/06/15, 17:36:33
ayaxrojo ayaxrojo is offline
Junior Member
 
Fecha de Ingreso: feb 2009
Mensajes: 14
Ya lo solucionaste pero me parece que el error que te mandaba es por que estas intentando metesr una WA en una tabla.

INTO CORRESPONDING FIELDS OF gt_det_cliente

Tendrias que usar :
INTO CORRESPONDING FIELDS OF TABLE gt_det_cliente
Responder Con Cita
  #5  
Viejo 05/06/15, 14:49:52
sconoredhot sconoredhot is offline
Senior Member
 
Fecha de Ingreso: feb 2008
Localización: Argentina, Rosario
Mensajes: 341
Smile hola

para que no te sobreescriba, deberias guardar el segundo select en otra tabla interna. y tambien tener declarada una tabla interna final

entonces luego recorres la primera,
dentro del loop, haces un read table a la segunda, entonces tienes disponibles
todos los datos, y vas pasando todos los campos que necesitas
a la tabla final y le haces un append.
__________________
Sebas

Desarrollador ABAP.
Responder Con Cita
  #6  
Viejo 07/09/15, 21:42:05
FFARRO FFARRO is offline
Junior Member
 
Fecha de Ingreso: nov 2013
Mensajes: 11
La forma correcta de hacerlo es:

Primero: Haces tu select para traer todos tus registros con casi todos los campos que necesitas.

SELECT mandt kunnr name1 zsd_fecha_nac zsd_doc_ident zsd_dom_parti
zsd_dom_comer zsd_est_civil zsd_nacional zsd_ruc
zsd_telefono zsd_celular zsd_email zsd_localidad
FROM zsd_det_cliente
INTO TABLE gt_det_cliente
WHERE kunnr IN p_kunnr
AND name1 IN so_name1
AND zsd_fecha_nac IN so_fnaci
AND zsd_doc_ident IN so_dni
AND zsd_dom_parti IN so_dompa
AND zsd_dom_comer IN so_domco
AND zsd_est_civil IN so_estci
AND zsd_nacional IN so_nacio
AND zsd_ruc IN so_ruc
AND zsd_telefono IN so_telef
AND zsd_celular IN so_celul
AND zsd_email IN so_email
AND zsd_localidad IN so_local.

Segundo: Llenas otra tabla con el codigo de cliente y el nombre.

if gt_det_cliente is not initial.

SELECT mandt kunnr name1
FROM kna1
INTO TABLE t_kna1
FOR ALL ENTRIES gt_det_cliente
WHERE kunnr EQ gt_det_cliente-kunnr.

endif.

Finalmente: recorres tu tabla colocandole el valor correcto en name1.

LOOP AT gt_det_cliente ASSIGNING <fs_det>.

read table t_kna1 into wa_kna1 with key kunnr = <fs_det>-kunnr.
if sy-subrc = 0.
<fs_det>-name1 = wa_kna1-name1.
endif.

ENDLOOP.

Espero te ayude.

Freddy Farro
Programador ABAP
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 06:05:04.


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