Position im Auftrag (VA01) automatisch anlegen

SAP R/3 Vertrieb: Auftragsverwaltung, Versand und Transport, Fakturierung, Kreditmanagement, Außenhandel/Zoll...
18 Beiträge • Seite 1 von 2 (current) Nächste
18 Beiträge Seite 1 von 2 (current) Nächste

Position im Auftrag (VA01) automatisch anlegen

Beitrag von Helgoland (ForumUser / 5 / 0 / 0 ) »
Hallo zusammen, vielleicht hat jemand eine Idee:

Ich suche eine Möglichkeit, beim Anlegen eines Verkaufsauftrags eine Position automatisch anzulegen. Es geht dabei z.B. um kostenlose Zugaben, Frachten, u.ä. Der Mitarbeiter soll diese Materialnummern aber nicht manuell eingeben, sondern sie sollen quasi schon da sein, wenn er den Auftrag beginnt.

Sortimente und Positionsvorschläge (VA51) sind nicht ganz das was ich suche, da der Mitarbeiter die Vorschläge ja bestätigen muss. Wenn er das nicht macht würde z.B. keine Fracht berechnet.

Mit den Userexits der SAPMV45A bin ich seit über 10 Jahren vertraut. Aber so richtig komme ich dabei nicht weiter. Ich scheue mich auch etwas davor, einfach neue Einträge in internen Tabellen wie der XVBAP u.ä. vorzunehmen. Notfalls könnte es auch eine Modifikation sein (ja, ich weiß, bei Supportpackages ist es erst mal wieder weg).

Gibt es hier einen richtigen "Spezi" dazu? Wo könnte man da noch sinnvoll einhaken?

LG Helge

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
Helgoland hat geschrieben:Es geht dabei z.B. um kostenlose Zugaben, Frachten,...
Hallo Helge,

das hört sich für mich ein bisschen komisch an.
Prinzipiell solltest Du Frachten über die entsprechenden Versandarten in Kombination mit einer Kondition kombinieren.
"Kostenlose Zugaben" definieren sich doch letztendlich über das zu verkaufende Material.
Diese würde ich über eine Vertriebsstückliste abbilden.

Wenn Du aber "unbedingt" die von Dir beschriebene Lösung benötigst würde ich eine Tabelle empfehlen, wo Du deine Artikel reinschreibst und dann mittels Userexit in Deinen Kundenauftrag übernimmst.
Schön ist das aber m.E. überhaupt nicht.

Grüße

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von Helgoland (ForumUser / 5 / 0 / 0 ) »
Hallo Thomas17,

erst mal vielen Dank für deine Rückmeldung.

Über eine Stückliste oder Positionsvorschlag möchte ich es nicht machen, da der Mitarbeiter dabei selbst aktiv werden muss und richtig entscheiden muss ( Was er aber leider nicht immer macht :-( ). Auch müsste der Positionsvorschlag ja in den Stammdaten jedes einzelnen Debitors hinterlegt sein.

Wir würden hier gerne bei bestimmten Auftragsarten sofort beim Start der VA01 eine Auftragsposition Fracht eintragen, die der Mitarbeiter aber nicht verändern kann. Den Preis kann ich dann im Kalkschema bestimmen, abhängig von einer Frachtfreigrenze, sperrige Güter mit teurerer Fracht oder Kunden die generell frachtfrei beliefert werden. Das geht aber nicht über eine einfache Preiskondition, sondern man muss den Wert über eine Basisformel bzw. Rechenformel selbst bestimmen und in den Konditionsbetrag stellen.

Du schreibst da etwas von einem Userexit. Genau das ist mein Problem. In der Auftragsbearbeitung ( SAPMV45A ) kenne ich keinen Userexit, der dazu in der Lage wäre ( das muss aber nichts bedeuten ;-) ). Ich habe es im Groben durch eine Modifikation des SAP-Standards zwar erreicht die Position automatisch anzulegen, aber die Modifikation gefällt mir ganz und gar nicht. Es muss für soetwas doch einen "legalen" Weg geben, den man nicht bei jedem Upgrade oder Supportpacke neu einbauen muss.

Auch wenn ich hier immer nur von Fracht gesprochen habe geht es auch um andere Dinge. Der Versand soll z.B. in bestimmten Sendungen einen aktuellen Katalog oder Werbeflyer beilegen, zu Weihnachten ein Präsent o.ä. Darüber möchten wir aber maschinell entscheiden und es nicht dem Mitarbeiter im CallCenter überlassen.

Hast du da an einen bestimmten Userexit gedacht?

LG Helge

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
Helgoland hat geschrieben:Hallo Thomas17,
......
Wir würden hier gerne bei bestimmten Auftragsarten sofort beim Start der VA01 eine Auftragsposition Fracht eintragen, die der Mitarbeiter aber nicht verändern kann. Den Preis kann ich dann im Kalkschema bestimmen, abhängig von einer Frachtfreigrenze, sperrige Güter mit teurerer Fracht oder Kunden die generell frachtfrei beliefert werden. Das geht aber nicht über eine einfache Preiskondition, sondern man muss den Wert über eine Basisformel bzw. Rechenformel selbst bestimmen und in den Konditionsbetrag stellen.
......
ähm warum soll das nicht gehen ? genau all das kann man doch mit Konditionen machen ?
du kannst doch zu der Kondition sagen wir FRACHT deine eigene Bedingung coden und all das berücksichtigen was du brauchst und den Konditionswert selber setzen.

wenn du zusätzlich verschiedene Kundenshema erstellst, die du dann wiederum verschiedenen Kalkulationsshemen zuordnen kannst, bist du wirklich sehr flexibel beim coden der Bedingung.

gruss
ratsnus
<:: XING-Gruppe Tricktresor::>

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
Hi Helge,

ich weiß nicht in wie weit Du Dich schon mit Transaktionsvarianten beschäftigt hast.
Das schreibt SAP:
Transaktionsvarianten

Mit Transaktionsvarianten können Transaktionsabläufe vereinfacht werden durch:

•Vorbelegung von Feldern mit Werten
•Ausblenden und Ändern der Eingabebereitschaft von Feldern
•Ausblenden und Ändern der Eigenschaften von Table-Control-Spalten
•Ausblenden von Menüfunktionen
•Ausblenden ganzer Bilder
Hört sich recht passend an.
Eine andere Idee:
Arbeitet Ihr mit der Variantenkonfiguration? Falls nein - könnte man sich überlegen ob man mit einer "Maximalen Vertriebsstückliste" arbeitet und diese dann je nach "Tabelle" entsprechend auflöst. Der MA muss übrigens bei einer Vertriebsstückliste bei der Auftragserfassung nichts machen - ausser die Hauptkomponente zu erfassen.
Übrigens kannst Du auch einstellen, dass er die Unterpositionen nicht ändern darf.

Bzgl. Userexit:
Ich habe es noch selber nicht versucht - kann mir aber jetzt nicht vorstellen, dass Du innerhalb der MV45AFZ* keinen passenden Exit findest
mit dem Du keine Position ergänzen kannst.
Eventuell hier MV45AFZB "USEREXIT_FILL_VBAP_FROM_HVBAP."

Hoffe das hilt Dir weiter.
Grüße

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von Helgoland (ForumUser / 5 / 0 / 0 ) »
Hallo Thomas17, hallo ratsnus,

im Kalkschema eine Frachtkondition einzufügen ist kein Problem. Das funktioniert prima. In den Rechenformeln zu dieser Kondition kann man seine eigene Logik auch beliegig einbauen. Im Belegdruck kann man die Fracht dann ähnlich wie die Steuer ausweisen. So weit, so gut. Mein Problem ist aber, dass eine Frachtposition bereits beim Anlegen des Auftrags da sein soll, also noch bevor der Mitarbeiter die erste Verkaufsposition erfasst. Diese Frachtposition soll dann mit einer Positionsnummer erscheinen, so wie alle anderen Artikel auch, und nicht einfach ein Frachtzuschlag auf die aktuelle Position. Der Preis in dieser Frachtposition ändert sich dann je nach den Umständen, z.B. beim Erreichen der Frachtfreigrenze oder wenn der Kunde generell frachtfrei beliefert wird.

Die Stückliste ist hier nicht die Lösung, da der Mitarbeiter dann ja erst mal die Nummer der Stückliste eingeben muss ( oder auch "vergessen" kann ). Außerdem würde diese Stückliste in der Regel nur eine Position enthalten, nämlich die Fracht. Dann könnte der Mitarbeiter auch gleich die Frachtnummer eingeben ( genau das ist das Problem ) und man spart den Aufwand mit der Stückliste.

Der Userexit "USEREXIT_FILL_VBAP_FROM_HVBAP" wird ja nur beim Auflösen einer Stückliste durchlaufen, wenn die Unterposition ( also die HVBAP ) übernommen wird. In diese Situation kommt das System aber gar nicht. Es müsste also ein Userexit sein, der beim Starten der VA01 durchlaufen wird und eine Funktion ala "Create_Position" zur Verfügung stellt. Soetwas gibt es aber nicht. Oder gibt es einen völlig anderen Lösungsansatz - aber welchen?

Wie bereits zu Beginn gesagt habe ich eine prinzipiell funktionierende "unsaubere Lösung" im Test, indem ich im PAI des Dynpros 4900 ( Erfassung der Auftragspositionen ) eingreife und dem System dort die Daten unterschiebe. Es ist quasi ein selbst gelegter Userexit an geeigneter Stelle. Ich mag solche verbogenen Systeme aber nicht und suche nach einer legalen und releasefähigen Lösung.

LG Helge

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
Helgoland hat geschrieben:Hallo Thomas17, hallo ratsnus,
......
im Kalkschema eine Frachtkondition einzufügen ist kein Problem. Das funktioniert prima. In den Rechenformeln zu dieser Kondition kann man seine eigene Logik auch beliegig einbauen. Im Belegdruck kann man die Fracht dann ähnlich wie die Steuer ausweisen. So weit, so gut. Mein Problem ist aber, dass eine Frachtposition bereits beim Anlegen des Auftrags da sein soll, also noch bevor der Mitarbeiter die erste Verkaufsposition erfasst. Diese Frachtposition soll dann mit einer Positionsnummer erscheinen, so wie alle anderen Artikel auch, und nicht einfach ein Frachtzuschlag auf die aktuelle Position. Der Preis in dieser Frachtposition ändert sich dann je nach den Umständen, z.B. beim Erreichen der Frachtfreigrenze oder wenn der Kunde generell frachtfrei beliefert wird.
.......
Hallo Helge,

du bist so versteift auf deine "Position soll am Anfang da sein" , das du anderes garnicht in Betracht ziehst.
Wenn ich dich richtig verstehe, willst du eine Position "10 - Fracht" die sich dynamisch am Wert aller folgenden Positionen orientiert und anpasst ?
mal ehrlich, das ist doch eine Kopfkondition mit einer eigenen Bedingung. wie soll denn die Position am Anfang wissen ob sie überhaupt da ist oder welchen Wert sie hat ? das du dafür das System verbiegen musst, ist mir klar :wink:
mit a bissl Formularanpassen, kannst du doch eine Kopfkondition als Positon am Anfang "erscheinen" lassen. Wer macht denn solche Anforderungen ? was sagt denn eure controlling & Finanz Abteilung dazu ? wie wird das denn im Rechnungswesen und in der Ergebnissrechnung gesehen ?

sorry ich glaube nicht das du da auf einem guten Weg bist. aber falls du was findest, poste es mal, es interessiert mich.

gruss
ratsnus
<:: XING-Gruppe Tricktresor::>

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
Helgoland hat geschrieben:Hallo Thomas17, hallo ratsnus,
Die Stückliste ist hier nicht die Lösung, da der Mitarbeiter dann ja erst mal die Nummer der Stückliste eingeben muss ( oder auch "vergessen" kann ). Außerdem würde diese Stückliste in der Regel nur eine Position enthalten, nämlich die Fracht. Dann könnte der Mitarbeiter auch gleich die Frachtnummer eingeben ( genau das ist das Problem ) und man spart den Aufwand mit der Stückliste.
LG Helge
Hallo Helge,

ähmm... hast Du schon mit Vertriebsstücklisten gearbeitet?
Du erfasst eine Stücli zu dem Endprodukt: In der Stüli ist dann Deine Fracht, Dein Katalog oder sonstwas.
Die Kollegen erfassen den "Bürostuhl" und schwupps steht da dann auch die Fracht und der Winterkatalog mit Weihnachstgeschenk drin...

Grüße

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von Helgoland (ForumUser / 5 / 0 / 0 ) »
Hallo ihr beiden,

ich danke euch erst mal für eure Geduld mit meinen "komischen" Vorstellungen.

Mit der Stückliste haben wir hier auch schon mal rumexperimentiert. Da wir aber weit über eine Million Materialnummern haben und lagermäßig über 30.000 Artikel führen ist das nicht die Lösung. Wir wissen ja nicht, was der Mitarbeiter gerade verkauft. Und gerade Fracht ist so ein Ding, welches "sehr gerne" einfach vergessen wird um preislich besser da zu stehen. Natürlich kann man über eine Kopfkondition eine Fracht definieren und im Belegdruck an geeigneter Stelle aufführen. Soetwas machen wir in ähnlichen Fällen an anderer Stelle auch. Aber das bekommt der Mitarbeiter dann nicht mehr mit, weil es quasi im Hintergrund abläuft. Ich bin hier ja auch mit verantwortlich für die Definition der Prozessabläufe. Ich möchte dem Mitarbeitern z.B. die Fracht einfach ungefragt vorblenden, wo er sich dann auch nicht gegen wehren kann. Er soll während des Verkaufs auch erkennen ob die Frachtfreigrenze bereits erreicht ist und dann verkäuferisch entsprechend reagieren. Er soll dem Kunden ja nach Möglichkeit zusätzliche Artikel verkaufen und ihn so über diese Grenze bringen. Diese Grenzen sind auch nicht bei allen Kunden und bei allen Auftragsarten gleich. Dazu muss er die Information aber permanent auf dem Bildschim sehen können. Das Thema ist ja nicht nur ein programmtechnisches Problem sondern mindestens genauso eine organisatorische Frage. Soviel nur mal informativ zu den Hintergründen, warum ich diese Lösung anstrebe.

Aber wie schon gesagt, Lösungsansätze habe ich, aber das läuft auf eine Modifikation des Standards hinaus. Modifikationen habe ich hier schon genug. Viel lieber hätte ich diese nach und nach alle weg anstatt neue zu bekommen. Man kann im SAP zwar sehr viel machen, aber man läuft auch immer mal wieder gegen Grenzen, wo es nicht machbar ist.

LG Helge

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
OK verstanden. mal als Idee, wie wäre es wenn du ein Progrämmchen schreibst mit eigenen Dynpro's etc. wo du zum einen ja deinen Eintrag vorgeben kannst, der Mitarbeiter seine Materialien eingeben kann etc. und du gemütlich im Hintergrund mitrechnen kannst etc. danach alles in die VA01 übertragen oder grad selber mit FUBA BAPI_SALESORDER_CREATEFROMDAT2 als Vertriebsauftrag anlegen.


gruss
ratsnus
Zuletzt geändert von ratsnus am 26.09.2012 16:43, insgesamt 2-mal geändert.
<:: XING-Gruppe Tricktresor::>

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
Hi,
so wie ich dich verstehe willst du die Fracht immer einfügen. Hast Du Dich schon mit meinem anderen Vorschlag auseinander gesetzt?
Thomas17 hat geschrieben:ich weiß nicht in wie weit Du Dich schon mit Transaktionsvarianten beschäftigt hast. Das schreibt SAP:Transaktionsvarianten Mit Transaktionsvarianten können Transaktionsabläufe vereinfacht werden durch:•Vorbelegung von Feldern mit Werten•Ausblenden und Ändern der Eingabebereitschaft von Feldern•Ausblenden und Ändern der Eigenschaften von Table-Control-Spalten•Ausblenden von Menüfunktionen•Ausblenden ganzer BilderHört sich recht passend an. Eine andere Idee:


Wie hast Du denn modifiziert? Per Enhancement oder einfach so?
Kann Dir nur empfehlen die Modi in ein Enhancement zu packen und selber als Fuba verpacken.
Dann kannst Du am Fuba weiterarbeiten ohne gleich immer alles kompilieren zu müssen, sofern Du halt nichts am Aufruf machst.
Dahinter noch Steuerungstabellen, wo z.B. auftragsart, vkorg,etc. die Ergänzung steuern.
Die zu ergänzenden Materialien dann in eine Tabelle packen oder in eine Stückliste... ( ;) ) und diese dann entsprechend "ergänzen".

Ich verstehe zwar schon Deinen Ansatz. Aber printzipiell finde ich ihn auch nicht gut. Die Position kann doch genauso gelöscht werden...
Ich würde es wahrscheinlich so machen, dass Ganze wie von ratsnus beschrieben über die Konditionabzuwickeln. Und Vor dem Speichern eine Prüfung einzubauen ala: Wenn Fracht Zuschlag = ja, dann popup "achtung: kunde noch ein anderen Artikel anbieten um über die Frachtfreigrenze zu kommen"... so oder so ähnlich...
Den Katalog bzw. das Weihnachtsgeschenk würde ich nicht in den Auftrag mit aufnehmen sondern nur über die Lieferung abwickeln.
Den könntest Du dann z.B. über das Verpacken generieren. Oder bei der Lieferungsanlage halt dann zusteuern...
Nur so ein Paar ergänzende Gedanken.

Gruss

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von Helgoland (ForumUser / 5 / 0 / 0 ) »
Hallo ihr beiden,

mit euch kann man ja wenigstens diskutieren und ihr lasst auch Argumente gelten die außerhalb der ABAP-Brille liegen :-) . In der Realität ist es ja immer ein Kompromiss aus Idealvorstellung und Realisierbarkeit.

Modifikationen über ein Enhancement sind natürlich eleganter. Bei mir läuft es ganz einfach so ab, dass an geeigneter Stelle in einen "Rucksack" mit dem eigenen Code verzweigt wird, der wiederum in einem eigenen Include liegt. Damit hat man dann aber schon zwei Modifikationen, nämlich den Aussprung und den Include des eigenen Quellcodes. Da sich die Modifikation dadurch auf einen einzelnen Perform, Call oder Module beschränkt ist sie relativ leicht zu beherrschen und auch bei einem Releasewechsel meist leicht wieder einzubauen. Ich mache das inzwischen ja bereits seit weit, weit über 10 Jahren so, aber vielleicht muss ich die moderneren Techniken auch irgendwann annehmen ;-) .

Die Anregung es über eine eigene Transaktion zu machen wäre auch möglich. Dazu müsste man nur ein eigenes Progämmchen ( ZVA01 ?? ) schaffen, was so aussieht wie das Einstiegsbild der VA01, also die paar Felder mit Auftragsart, VKORG, usw. Von dort könnte man mit einem Batch die VA01 aufrufen, die gewünschten Positionen füllen und dann den Batch einfach ins leere laufen lassen. Von da ab kann der Mitarbeiter dann normal weitermachen. Die Möglichkeit zum Löschen und Verändern der Position muss man dann in der SAPMV45A unterbinden, das geht schon. Dann noch die Berechtigung zum direkten Starten der VA01 weggenommen und fertig. Klingt ganz gut, ich werde mal versuchen, ob ich mit diesem Lösungsansatz vielleicht sauberer zum Ziel komme. Das dauert aber etwas, da ich die nächsten 3 bis 4 Wochen in anderen Ecken beschäftigt bin und mich nur nebenbei um dieses Thema kümmern kann.

Ich werde hier aber ganz sicher weiter berichten.

LG Helge

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von ewx (Top Expert / 4836 / 308 / 636 ) »
Helgoland hat geschrieben:Ich scheue mich auch etwas davor, einfach neue Einträge in internen Tabellen wie der XVBAP u.ä. vorzunehmen.
Warum?
Im USEREXIT_MOVE_FIELD_TO_VBAK oder ähnliche müsste man sich ein Kennzeichen setzen, dass die Positionen bereits drin sind und wenn nicht, dann füllst die entsprechenden Felder in XVBAP und XVBEP.
Dann muss man evtl. auf SVBAP-INDEX oder so ähnlich aufpassen, aber das dürfte eigentlich gehen. Zur Not im USEREXIT_SAVE_DOCUMENT_PREPARE. Allerdings sieht dann der Anwender ggfs. nicht, dass da noch Positionen hinzu gekommen sind. Das finde ich persönlich blöd.

Ich bin etwas irritiert, dass du ein Enhancement dafür bemühst... An welcher Stelle hast du den denn eingebaut?

andere Alternative wäre wie bereits geschrieben eine "Vorschalttransaktion" und dann den BAPI_SALESDOCU_CREATEWITHDIA aufrufen.
Da kann man bereits bequem AG, Kopfdaten als auch Positionen vor belegen und der Anwender kann den Auftrag weiter bearbeiten.

Über irgendein Kennzeichen wird dann im USEREXIT_FIELD_MODIFICATION gesteuert, dass diese Positionen nicht geändert werden dürfen.
Evtl. muss noch geprüft werden, dass die auch nicht gelöscht werden dürfen...

Re: Position im Auftrag (VA01) automatisch anlegen

Beitrag von Ede (ForumUser / 2 / 0 / 0 ) »
Guten Morgen zusammen,

eventuell liest das hier ja noch mal jemand, daher meine Frage:

Hast du es lösen können und wenn ja, wie?

Beste Grüße
Ede


Vergleichbare Themen

3
Antw.
3141
Views
Neue Position in Vertriebsbeleg aus alter Position anlegen
von shapoc » 18.07.2014 10:54 • Verfasst in Sales and Distribution
4
Antw.
1923
Views
Artikel automatisch in va01
von Batman » 25.04.2024 13:36 • Verfasst in Sales and Distribution
9
Antw.
7678
Views
SD-Auftrag (VA01/02/03): Nachrichtenfindung starten
von ralf.wenzel » 25.07.2016 07:05 • Verfasst in ABAP® Core
2
Antw.
482
Views
GuiXT VA01 Auftrag erfassen Anzahl Positionen scrollen
von dagmard » 09.12.2020 11:12 • Verfasst in ABAP® für Anfänger
6
Antw.
2249
Views
Sonderbestansnummer aus Auftrag und Position erzeugen
von John08 » 02.09.2016 10:36 • Verfasst in ABAP® für Anfänger

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.