Nachweis der Lieferanten für Streckenaufträge Thema ist als GELÖST markiert

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Nachweis der Lieferanten für Streckenaufträge

Beitrag von itmeli ( / / 0 / 3 ) » 22.12.2004 08:24
Hallo,
mein Programm soll einen Nachweis der verschiedenen Lieferanten für Streckenaufträge erstellen. Ausgegeben werden soll die Sales Organization (, die immer gleich ist, da nur ein Land hierfür wichtig ist), das Land des Lieferanten und das Land des Kunden. Zusätzlich sollen jeweils Summenfelder gebildet werden, dass für jede Kombinationsmöglichkeit (Sales Org, Lief-Land, Ship-to Land) die Anzahl der gefunden Einträge ausgegeben wird.

Hab mit dem Quellcode bereits begonnen, funktioniert aber ncoh nicht richtig. Außerdem weiß ich nicht wo und wie die Summenbildungen eingefügt werden müssen.

Hier der Quellcode soweit:


tables: vbak, "sales header
vbap, "sales item info
vbep, "sales schedule lines
eban, "purchase requisition
lfa1, "vendor master
vbpa. "sales document partner


************************************************************************
* internal table *
************************************************************************

data: begin of intab occurs 100,
vkorg like vbak-vkorg, "sales organization
vbeln like vbap-vbeln, "SD document number
pstyv like vbap-pstyv, "sales document item category
posnr like vbap-posnr, "sales document item
ettyp like vbep-ettyp, "schedule line category
banfn like vbep-banfn, "purchase requisition number
bnfpo like vbep-bnfpo, "item nr of purchase requisition
lifnr like eban-flief, "account nr of vendor or creditor
landl like lfa1-land1, "land of vendor
landv like vbpa-land1, "ship-to land
end of intab.


************************************************************************
* selection screen *
************************************************************************

select-options: selvkorg for vbak-vkorg.
selection-screen uline.


select-options: selvbeln for vbak-vbeln.
selection-screen uline.


************************************************************************
* *
* start-of-selection *
* *
************************************************************************


start-of-selection.

select * from vbak
where vkorg = selvkorg.


select * from vbap
where vbeln = vbak-vbeln
and pstyv = 'TAS'.


select * from vbep
where vbeln = vbap-vbeln
and posnr = vbap-posnr
and ettyp = 'ZS'.


select single * from eban
where banfn = vbep-banfn
and bnfpo = vbep-bnfpo.


select single * from lfa1
where lifnr = eban-flief.



intab-vbeln = vbap-vbeln.
intab-pstyv = vbap-pstyv.
intab-posnr = vbap-posnr.
intab-ettyp = vbep-ettyp.
intab-banfn = vbep-banfn.
intab-bnfpo = vbep-bnfpo.
intab-lifnr = eban-flief.
intab-landl = lfa1-land1.
intab-landv = vbpa-land1.
append intab.

endselect.

endselect.

endselect.


write:/ intab-vkorg,
intab-landl,
intab-landv.


End-of-selection.


Strecke

Beitrag von Hans Gast ( / / 0 / 3 ) » 22.12.2004 11:00
Hi,
ehrlich gesagt stehen mir bei dem Programmentwurf die Haare zu Berge. Das Programm wird Stunden laufen. Es werden alle Daten gelesen, obwohl man nur sehr wenige braucht. Select * sollte man nur in Sonderfällen verwenden.
Also als erstes alle Daten, und zwargenau die, die man braucht, in interne Tabellen legen und dann einen Loop über die vbap machen und dabei die restlichen Daten aus den internen Tabelle dazulesen. Die vbak z.b. braucht überhaupt nicht gelesen werden.
Wichtige Dinge fehlen, z.B. die Abprüfung der Absagegründe in der vbap sowie die anderen Positionstypen wie TASN, TAB, TABN. Das kannst Du so machen:
select vbeln posnr matnr arktx pstyv abgru erdat from vbap
into table ivbap
where erdat in erdat
and abgru = ' '
and pstyv in ('TAS ','TASN','TAB','TABN').
sort ivbap by vbeln posnr.

select vbeln posnr edatu bmeng banfn bnfpo from vbep
into table ivbep
for all entries in ivbap
where vbeln = ivbap-vbeln
and posnr = ivbap-posnr.
sort ivbak by vbeln.

.
.
.
loop at muevbap.
read table ivbak with key
vbeln = ivbap-vbeln binary search.
read table ivbep with key
vbeln = ivbap-vbeln
posnr = ivbap-posnr binary search.
.
.
.
Ist jetzt nur ein Beispiel wie man es machen könnte. Probier es einfach mal aus.
Für die Summen würde ich einfach Felder anlegen und darauf addieren.

Hans

Fehler

Beitrag von Hans Gast ( / / 0 / 3 ) » 22.12.2004 11:03
Kleiner Fehler, muss natürlich heißen:
loop at ivbap.

Hans

Beitrag von itmeli ( / / 0 / 3 ) » 22.12.2004 11:31
Hi,
vielen Dank für die Antwort!Kann schon sein, dass mein Programm etwas umständlich ist, hab noch nicht so wirklich viel Programmierfahrung.
Durch die Eingrenzung der Selektionsmaske, dürfte die Abfrage auf die Tabellen, selbst bei select * doch gar nicht so lange dauern, oder?
Allerdings brauche ich einige Felder, die Du aufgelistet hast, gar nicht.
Mein Chef möchte "lediglich" eine Auflistung aller "TAS"-Aufträge (pstyv = "TAS")haben, nur derer, dessen Sales Organization England ist und die schedule line category = "ZS" und die partner function = "WE" ist. Rauskommen soll folgende Liste:

Sales Org. | lief-Land | ship-to land | Summe

Beitrag von Hans Gast ( / / 0 / 3 ) » 22.12.2004 16:38
Hi,
Die Belegnummer kann in der Selektion eingeschränkt werden. Das wiederum ist zwar schön, aber gar nicht sinnvoll, denn wie soll was verglichen werden? Sinnvoll wäre z.B. von Datum bis Datum.
Die von mir gelisteten Programmteile waren nur Beispiele, denn ich habe ein änliches Programm vor einiger Zeit geschrieben. Die Felder sind natürlich die, die ich damals brauchte.
Ich kann nur empfehlen, nach dieser Methode zu arbeiten, denn das Programm wäre mindestens 10mal so schnell.
Ich würde den Chef auch mal fragen, ob die anderen Streckenpositionstypen nicht verwendet werden.
Hans

Seite 1 von 1

Über diesen Beitrag

Anonymous
Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Vergleichbare Themen

LoA-Nachweis - Download von Ergebnissen
von HLRT67 » 04.12.2007 11:14
Solution Manager - Business Blueprints? Nachweis für Auditie
von Jorge » 16.12.2007 18:56
Termintreue Lieferanten
von Claudia A. » 10.08.2005 17:07
Liefertreuemessung externet Lieferanten
von gautschh » 17.06.2004 07:00
Fedwire Abwicklung mit USA Lieferanten - wie?
von dilbert » 29.05.2008 08:08