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
|