MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Instruccion Sql (foro/showthread.php?t=13948)

johava 04/06/08 15:31:42

Instruccion Sql
 
Hola tengo dos tablas FMIOI (tabla de rpc) y LFA1 (tabla de acreedores), necesito leer la tabla FMIOI y que con base en el campo CODIGO DEL ACREEDOR de esta tabla (LIFRN) lea la tabla LFA1 y extraiga su nombre (campo name1).

Actualmente tengo el siguiente codigo.


Select * from FMIOI
WHERE REFBN = NRPC AND GJAHR = VIGRPC.
Select single NAME1 LIFNR from LFA1 into (NOMBEN, CODBEN)
WHERE LIFNR = FMIOI-LIFNR.



COMO LO PUEDO HACER MAS EFICIENTE?
NOTA: la idea es no hcaer select * from tabla, dado que la tabla tiene muchos campos y realmente solo requiero algunos.

GRACIAS POR LA COLABORACION

pmarinab 04/06/08 15:38:58

Lo mas eficiente es una JOIN:

SELECT (los campos que quieras)
INTO (donde quieras)
FROM FMIOI
JOIN LFA1
ON FMIOI~LIFNR = LFA1~LIFNR
WHERE FMIOI~REFBN = NRPC
AND FMIOI~GJAHR = VIGRPC.

robert_milan 04/06/08 15:40:24

Correcto!!!!
 
la tabla interna itab
sera de la siguiente manera:
data: begin of itab occurs 0,
lifnr like fmioi-lifnr,
***aqui iran mas campoos,
end of itab.

data: begin of itab2 occurs 0,
lifnr like LFA!-lifnr,
name1 like lfa1-name1,
end of itab2.

Select lifnr into table itab from FMIOI
WHERE REFBN = NRPC AND GJAHR = VIGRPC.

Select lifnr name1 into table itab2
from LFA1 for all entries of itab " Aqui le digo que me traiga todas las coincidencias de ITAB"
WHERE LIFNR = itab-LIFNR.

con esto todo lo harias en memoria

loop at itab. " le haces el loop para recorrer la tabla 1
read table itab2 with key lifnr = itab-lifnr. " veo el nombre del acredor
endloop.

espero te sirva.


Husos Horarios son GMT. La hora en este momento es 15:31:57.

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