MV45AFZZ Move_Field_to_VBAP

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

MV45AFZZ Move_Field_to_VBAP

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
Hallo zusammen,

wir haben ein kleines/größeres Problem. Wir möchten bei der Anlage von Vertriebsbelegen (Aufträge/Angebote) in bestimmten Fällen auf Positionsebene eine zusätzliche Partnerrolle in die VBPA schreiben. Funktioniert bei normal angelegten Belegen wunderbar über o.g. Userexit. Wir prüfen unsere Konstellation und schreiben einfach die zusätzliche Zeile in die XVBPA.

Lege wir aber den Vertriebsbeleg mit Bezug zu einem Vorgängerbeleg an funktioniert das nicht mehr so Reibungslos. Der Userexit wird dann nämlich 2x je Position aufgerufen. Dabei wird unter Umständen die Positionsnummerierung geändert (aus 10, 30, 40 wird 10, 20 und 30). Somit legen wir im ersten Durchlauf bereits die Partnerrollen für die Pos. 40 an. Die fällt dann aber aufgrund der Umnummerierung hinten runter und endet im Fehler V1 331 Position 40 ist nicht vorhanden..

Leider finde ich keine Möglichkeit zu unterscheiden, wann ich die Positionspartner hinzufügen soll. Der PREPARE_SAVE Exit ist leider zu spät, da ja die Anwender auf den zusätzlichen Partner reagieren sollen. Oder gibt es einen Exit explizit für die VBPA.

SAP konnte uns leider auch nicht erklären wie die Aufrufe in den Exit hinein genau funktionieren. Deswegen wende ich mich an einen praxisorientierte Zielgruppe, nämlich Euch.

Vielen Dank vorab für Eure Mühe.

Grüße
Jens

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


Re: MV45AFZZ Move_Field_to_VBAP

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Hallo Jens,

wenn ihr 2x aufgerufen werdet, dann doch sicher 1x mit der alten Positionsnummer und danach mit der neuen Positionsnummer - aber beide Aufrufe sollten den selben Wert für VGPOS haben. Und wenn ihr beim 1. Mal durchlaufen werdet merke dir doch einfach, was du für den alten VGPOS-Eintrag generiert hattest ( int. Tabelle: Key = VGPOS, Wert = XVBPA-Eintrag ). Wenn du beim 2. Mal aufgerufen wirst schaust du halt nach, ob sich die Positionsnummer verändert hat und wenn ja wirfst du den alten Eintrag aus der XVBPA raus und fügst den Eintrag dann mit dem Wert aus deiner Merktabelle wieder ein.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Prego

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: MV45AFZZ Move_Field_to_VBAP

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
Hallo Stefan,

vielen Dank für den Tipp. Ich glaube da sind wir auf dem richtigen Weg. Manchmal sieht man den Baum vor lauter Wäldern nicht ;-) hehe

Allerdings ärgert mich das ganze doch noch etwas mehr als ich zuerst nach Deinem Post gedacht habe.

Ich prüfe ob die POSNR (20) <> VGPOS (30) ist und lösche den entsprechenden Positionssatz (30) aus der XVBPA[]
Anschließend füge ich den Satz mit der neuen Positionsnummer (20) und Updatekennzeichen 'I' wieder ein. Soweit alles gut. Die XVBPA[] schaut zu diesem Zeitpunk aus wie gewünscht.
Springe ich aber zur nächsten Position taucht der soeben gelöschte 30er Datensatz in der XVBPA[] wieder auf.
Das Spielchen geht dann natürlich mit der Positionsnummer 30 (40 alt) weiter. Letztendlich habe ich dann 2 30er Positionssätze in der XVBPA[], was natürlich nicht gewünscht ist.

YVBPA[] ist während der kompletten Prozedur leer, da natürlich auf der DB noch nichts existiert.

Ich habe zu dem Thema auch bereits die SAP Standardhinweise zu den Userexits im SD gelesen und das gleiche ohne hartes Löschen sondern mit Modify der Datensätze und korrektem Setzen des Updatekennzeichens probiert.
Hat leider den gleichen Effekt.

Grüße
Jens

Re: MV45AFZZ Move_Field_to_VBAP

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Vielleicht ist ein anderer Userexit hier besser geeignet?
...CHECK_VBAP müsste später aufgerufen werden.
Vielleicht sogar ...MOVE_VBEP oder CHECK_VBEP.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Prego


Re: MV45AFZZ Move_Field_to_VBAP

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Hallo Jens,

habe mich gerade erinnert, dass auf dem System eines meiner Kunder sich mal eine SAP-Truppe ausgetobt hat, die auch was mit besonderen Partnerfunktionen gemacht hat. Und da ich mir damals angeschaut hatte, wo die ihre Enhancements eingebaut hatten kann ich dir vorschlagen mal einen Breakpoint auf das Ende des FuBa "KOPIERTE_PARTNER_PRUEFEN" zu setzen und zu schauen, ob das vor den ganzen Exits in der MV45AFZZ durchlaufen wird und ob du nicht dort schon deine Partnererweiterung einbauen kannst.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Prego

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: MV45AFZZ Move_Field_to_VBAP

Beitrag von wreichelt (Top Expert / 1031 / 29 / 188 ) »
Partnerfunktion hinzufügen :


Um dem Kundenauftrag eine Partnerfunktion hinzuzufügen, aktualisieren wir in der Regel die Tabelle XVBPA im User-Exit USEREXIT_MOVE_FIELD_TO_VBAP. Dies kann zu Problemen führen, wenn das Update-Kennzeichen nicht korrekt aktualisiert wird. Anstatt manuell den Eintrag in XVBPA [] einzufügen, können wir die von der Norm verwendete FM verwenden, um die Partnerfunktion im Kundenauftragsmanagement zu erstellen / zu aktualisieren.
Standard FM SD_PARTNER_SINGLE_MODIFY und SD_PARTNER_DATA_GET können aufgerufen werden, um die Details der Partnerfunktion zu aktualisieren / einzufügen.
FM SD_PARTNER_SINGLE_MODIFY fügt die Partnerdetails zum globalen Speicher hinzu / aktualisiert GVT_LOCAL_MEMORY-XVBPA.
FM SD_PARTNER_DATA_GET aktualisiert XVBPA aus GVT_LOCAL_MEMORY-XVBPA.

Gruß Wolfgang

Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag:
Prego


Re: MV45AFZZ Move_Field_to_VBAP

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
Hallole,

super Jungs, das sind ja so viele Anhaltspunkte die ihr mir hier gebt. Einer wird schon zum Ziel führen.
Sorry das ich erst jetzt schreibe aber bei uns lädt grad jeder seinen Müll ab und wir müssen uns um alles kümmern.

Sobald ich ein funktionierenden Stand habe gebe ich nochmal Bescheid. Andere interessiert das bestimmt auch.

Merci
Jens

Update:
Gleich der erste Versuch scheint zu passen. Danke Enno.
Wie haben das ganze jetzt in den USEREXIT_CHECK_VBAP (MV45AFZB) verlagert. Die Prozessverantwortlichen testen noch, aber bisher schaut es gut aus.
Vielen Dank. Aber auch der Ansatz mit dem globalen Speicher werde ich mal austesten. Da brauch ich aber etwas mehr Ruhe als hier im Moment herrscht.

Seite 1 von 1

Vergleichbare Themen

17
Antw.
11514
Views
MV45AFZZ UserExists
von the-FoX » 06.04.2005 11:40 • Verfasst in ABAP® Core
0
Antw.
4222
Views
MV45AFZZ USEREXIT_SAVE_DOCUMENT_PREPARE
von Marcoo » 13.05.2005 13:37 • Verfasst in Sales and Distribution
5
Antw.
3617
Views
At New <field> gibt immer field trotz gelichen fields
von mnd » 27.04.2012 15:42 • Verfasst in ABAP® für Anfänger
2
Antw.
7660
Views
Userexit MV45AFZZ - Kopftexte setzen
von waldner » 16.10.2006 14:03 • Verfasst in Sales and Distribution
4
Antw.
628
Views
Konditionswert in VBAP übergeben
von LD57 » 30.07.2020 11:20 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141