Ich hatte auch schon mal ein System, in dem die Joins total langsam waren, da die DB trotz vollem Schlüssel einen Fulltablescan gemacht hat...
Ich würde probieren, den Join in zwei Selects aufzulösen.
1. Select MPKF; auf BUDAT sitzt auf "meinem" aktuellen System ein Index.
2. Select MSEG for all entries.
Auch wenn's eigentlich nicht schneller sein sollte, manchmal gibt's Überraschungen...
Du könntest übrigens das Belegjahr noch mitgeben.
Manchmal wird ein Select sogar einfach nur dadurch schneller, dass man ein Feld mittels WHERE-Bedingung einschränkt, obwohl man mit der Bedingung eigentlich alle Daten einschliesst. Soll heissen WHERE MJAR BETWEEN 1800 AND 3000 oder WHERE vgart BETWEEN AA AND ZZ...
Aber da der Zusatz INTO CORRESPONDING-FIELDS anscheinend auch nicht mehr so ein Zeitfresser ist, sind meine Infos evtl. auch schon veraltet...
Einfach ausprobieren.