#1
|
|||
|
|||
problema con loop anidado
hola compañeros como estan soy nuevo en abap y
estoy teniendo un problema con un loop anidado me gustaria que me dieran opciones de como solucionarlo puedo tener un loop dentro de otro.. mas no puedo tener un loop que tenga un loop dentro y estos dos esten dentro de otro loop como en el codigo que les pasare.. me gustaria que me ayudaran sin que perdiera la funcionalidad gracias =) LOOP AT I_INDX1. READ TABLE I_LIKP INTO WA_LIKP WITH KEY kunnr = i_indx1-zkunn2 kunag = i_indx1-zkunnr. IF SY-SUBRC EQ 0. LOOP AT I_LIKP INTO WA_LIKP FROM SY-TABIX. IF I_INDX1-ZKUNN2 = WA_LIKP-KUNNR AND I_INDX1-ZKUNNR = WA_LIKP-KUNAG. READ TABLE I_LIPS INTO wa_lips WITH KEY VBELN = WA_LIKP-VBELN. IF SY-SUBRC = 0. LOOP AT I_LIPS INTO wa_lips FROM SY-TABIX. IF WA_LIKP-VBELN = WA_LIPS-VBELN. READ TABLE i_vbap WITH KEY vbeln = wa_lips-vgbel posnr = wa_lips-vgpos BINARY SEARCH. IF sy-subrc EQ 0. ADD i_vbap-netwr TO i_indx1-zklimk. ADD i_vbap-mwsbp TO i_indx1-zklimk. ENDIF. ELSE. EXIT. ENDIF. ENDLOOP. "I_LIPS ELSE. EXIT. ENDIF. ELSE. EXIT. ENDIF. ENDLOOP. "I_LIKP ENDIF. ENDLOOP. |
#2
|
|||
|
|||
Buenas, no te entiendo muy bien, pero puedes tener 3 loops anidados perfectamente, que error te esta dando el compilador?
Saludos, LouieBoy |
#3
|
|||
|
|||
Podrias pasar el codigo incluyendo variables asi prueba hacer la verificacion en el editor. A la hora de anidad no deberias tener problema.
Saludos. Javier.
__________________
Lo importante no es saber sino saber quien es el que sabe |
#4
|
|||
|
|||
hola lo q estas haciendo esta bien, porque esta llendo al puntero directo de la tabla interna, lo que seria mejor y pueda avanzar el puntero correctamente es poner al sy-tabix a una variable ejmplo wsytabix.
y dentro del loop has un add 1 wsytabix para que el puntero pueda avanzar, logico declara wsytabix1, wsytabix2... para no confundir los punteros. saludos |
#5
|
|||
|
|||
Por tema de performance de vez en cuando aplico la logica q estas poniendo, te envio la posible correcion. ojo q la likp debera estar ordenado por
kunnr , kunag , vbeln data: wsytabix like sy-tabix, wsytabix2 like sy-tabix. LOOP AT I_INDX1. clear wsytabix1,wsytabix2. READ TABLE I_LIKP INTO WA_LIKP WITH KEY kunnr = i_indx1-zkunn2 kunag = i_indx1-zkunnr. IF SY-SUBRC EQ 0. wsytabix = SY-TABIX. --- 1ra correccion LOOP AT I_LIKP INTO WA_LIKP FROM wsytabix. IF I_INDX1-ZKUNN2 = WA_LIKP-KUNNR AND I_INDX1-ZKUNNR = WA_LIKP-KUNAG. READ TABLE I_LIPS INTO wa_lips WITH KEY VBELN = WA_LIKP-VBELN. IF SY-SUBRC = 0. LOOP AT I_LIPS INTO wa_lips FROM SY-TABIX. wsytabix2 = SY-TABIX. --- 3ra correccion IF WA_LIKP-VBELN = WA_LIPS-VBELN. READ TABLE i_vbap WITH KEY vbeln = wa_lips-vgbel posnr = wa_lips-vgpos BINARY SEARCH. IF sy-subrc EQ 0. ADD i_vbap-netwr TO i_indx1-zklimk. ADD i_vbap-mwsbp TO i_indx1-zklimk. ENDIF. ELSE. EXIT. ENDIF. add 1 to wsytabix2--->4ta correcion ENDLOOP. "I_LIPS ELSE. EXIT. ENDIF. ELSE. EXIT. ENDIF. add 1 to wsytabix. --->2da correcion ENDLOOP. "I_LIKP ENDIF. ENDLOOP. |
#6
|
|||
|
|||
Correcion
wsytabix2 = SY-TABIX. --- 3ra correccion LOOP AT I_LIPS INTO wa_lips FROM SY-TABIX. |
#7
|
|||
|
|||
muchas gracias ibecerra
me sirvio de mucho te debo una =) |
Herramientas | Buscar en Tema |
Desplegado | |
|
|