Da ich nicht ganz so technisch in open SQL drin bin die Frage, was passiert, wenn in folgendem Fall die interne Tabelle LT_MATNR leer ist.
Ich habe den Eindruck, dass dann alle Sätze gelesen werden.
Dh. nicht nur die Bedingung WHERE MATNR = lt_matnr-matnr ignoriert wird, sondern auch die anderen Bedingungen.
???
Ich habe das Problem, das obwohl im Selektionsbild für P_VKORG der Wert 1100 mitgegeben wird auch anderen VKORGs in der Ergebnismenge sind.
Falls das so ist, dann müsste ich das SQL so umbauen, dass anstatt von FOR ALL ENTRIES ein range (der schon gefüllt ist aus dem Selektionsbild) abgefragt wird. -> IN S_MATNR
SELECT mvke~matnr mvke~vkorg mvke~vtweg mvke~prodh mvke~dwerk
FROM mvke
INNER JOIN a610
ON kappl = 'V'
AND kschl = 'ZP1'
AND pltyp = gs_knvv-pltyp
AND waerk = gs_knvv-waers
AND zzmatwa = mvke~matnr
AND datbi >= p_dat_s
AND datab <= p_dat_s
INTO CORRESPONDING FIELDS OF TABLE pc_gt_order
FOR ALL ENTRIES IN lt_matnr
WHERE matnr = lt_matnr-matnr
AND vkorg = p_vkorg
AND vtweg = gc_vtweg
AND lvorm = ''.