|
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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 |
#3
|
||||
|
||||
__________________
Zayas
|
#4
|
|||
|
|||
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 |
#5
|
|||
|
|||
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. |
#6
|
|||
|
|||
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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|