SAP Jobsuche bei DV-Treff
dolph
  • dolph
  • SAP Forum - Experte Thema Starter
vor 11 Jahre
Hallo,

ich habe das Problem dass wir in verschiedenen Verkaufsorganisationen die gleiche SD-Auftragart nutzen und die unterschiedliche Organisationseinheiten unterschiedliche Wunschliferdati haben möchten.

Im SAP berechnet sich aber das Wunschliefedatum auf Grund der Vorlaufzeit an Tagen in der Auftragsart die mit dem Tagesdatum zusammen das Wunschlieferdatum ergibt. Wo kann man dies am besten ändern ?

USER-EXIT ? oder Mofifikation ? beim Anlegen eines Auftrages (VA01).

Gruß Dolph


"Sich erheben, immer und immer wieder, bis die Lämmer zu Löwen werden!"

Förderer

anfaenger
vor 11 Jahre
Moin,

wenn Ihr unbedingt auf neue Belegarten verzichten wollt,

am besten einen Pflegeview erstellen mit den Feldern VKO und Tagen. Dann über Exit MV45AFZZ den View abfragen und das WL-Datum entsprechend setzen.

Gruß,

anfaenger


ECC 6.07, NW 7.4, SD, Logistik, C4C, EDI
dolph
  • dolph
  • SAP Forum - Experte Thema Starter
vor 11 Jahre
Moin Moin,

ja MV45AFZZ war auch mein erster Gedanke. Ich brauche den View bzw.EXIT aber während des Aufrufs des Auftrages und nicht im Auftrag. Diese Stelle hab ich leider nicht gefunden da soweit mit bekannt der MF45AFZZ nur im Auftrag nicht beim Aufruf agiert.Sollte ich mich irren kannst du mir bitte die Stelle(FORM) nennen ander ich das machen könnte?

Gruß Dolph


"Sich erheben, immer und immer wieder, bis die Lämmer zu Löwen werden!"

JARO
  • JARO
  • SAP Forum - User
vor 8 Jahre
Hi,

wurde hierzu eine Lösung gefunden? Ich habe die gleiche Anforderung, das Wunschdatum per Userexit vorzubelegen, wenn auch einen anderen Grund.

Die Vorlaufzeit, die man im Customizing einstellen kann, sind ja leider normale Kalendertage und keine Arbeitstage lt. Fabrikkalender. Daher wollte ich im Exit den entsprechenden Arbeitstag ermitteln. Ich mache das im Programm MV45AFZZ --> FORM USEREXIT_MOVE_FIELD_TO_VBAK. Ich sehe im Debugger, dass der korrekte Wert ermittelt wird, aber offenbar zieht das Customizing erst hinterher und überschreibt meinen ermittelten Wert wieder mit dem Wert lt. Customizing. Auch wenn ich die Vorbelegung im Customizing der Verkaufsbelegart deaktiviere, dann ist das Feld auf der Oberfläche leer.

Ich hab schon verschiedene Felder versucht zu ändern, aber esklappt einfach nicht:

vbak-vdatu

*vbak-vdatu

rv45a-ketdat

Hat noch jemand eine Idee? Oder kann man das Customizing dazu bewegen Arbeitstage zu verwenden?

Grüße

Jaqueline

wreichelt
vor 8 Jahre
Hallo,

habt ihr das mal geprüft:

Der Fabrikkalender, der die Basis für die Terminierung bildet, ist im Customizing von Versandstellen definiert SPRO->unternehmensstruktur->Definition->Logistics Execution->Versandstelle definieren.

Gruß

Wolfgang

SanduhrAnzeigeProgramm
vor 8 Jahre
Hi Jaro,

dann zeig doch mal dein Coding.

Die Stelle ist richtig, VBAK-VDATU auch und wenn durch das Customizing nichts gesetzt ist funktioniert das auch, bei allen Systemen die ich kenne.


*... who can do field replacements in the debugger can do anything in the system

*so this check can not stop (him) anyway.

JARO
  • JARO
  • SAP Forum - User
vor 8 Jahre
Zitat von: wreichelt 

Hallo,

habt ihr das mal geprüft:

Der Fabrikkalender, der die Basis für die Terminierung bildet, ist im Customizing von Versandstellen definiert SPRO->unternehmensstruktur->Definition->Logistics Execution->Versandstelle definieren.

Gruß

Wolfgang

Danke für den Tipp! In der Versandstelle ist der Fabrikkalender eingetragen, in der Verkaufsorganisation aber nicht. Wenn ich ihn dort hinterlege, dann wird die Vorlaufzeit der Verkaufsbelegart auch als Werktage interpretiert.

Zitat von: SanduhrAnzeigeProgramm 

Hi Jaro,

dann zeig doch mal dein Coding.

Die Stelle ist richtig, VBAK-VDATU auch und wenn durch das Customizing nichts gesetzt ist funktioniert das auch, bei allen Systemen die ich kenne.

Auch wenn ich das wie oben erwähnt lösen kann, interessiert mich dennoch, wieso bei mir das Datum immer wieder überschrieben wird. Ich habe wie gesagt mehrere Versionen gehabt, das ist die erste. Ich hab dann wie gesagt auch noch *VBAK-VDAT und RV45A-KETDAT.

DATA lv_vdatu LIKE vbak-vdatu.

lv_vdatu = vbak-vdatu.

CALL FUNCTION 'WDKAL_DATE_ADD_FKDAYS'

EXPORTING

i_date = sy-datum

i_fkday = 3

i_fabkl = '01'

IMPORTING

e_date = vbak-vdatu

EXCEPTIONS

error = 1

OTHERS = 2.

IF sy-subrc NE 0.

vbak-vdatu = lv_vdatu.

ENDIF.

Fabrikkalender und Arbeitstage sind noch fix im Baustein eingetragen. Wie gesagt, der Wert ist drin, aber nicht an der Oberfläche zu sehen. Auch wenn ich dann nochmal in den Debugger gehe (mit /h) sehe ich den Wert in der VBAK-VDATU.

Grüße

Jaqueline

SanduhrAnzeigeProgramm
vor 8 Jahre
Hi JARO,

habe das gerae eben nochmals gedebuggt, wenn ich den VBAK-VDATU auf ein Datum setze z.b. 10.06.

VBAK-VDATU -> 20160610

Dann schreibt er das in VBAK-VDATU und ich sehe das auch sofort im Auftrag auf rv45a-ketdat.

Also entweder kommt irgedwann später nochmals eine Programmierung bei euch die den VDATU manipuliert (muss ja keine Absicht sein) oder irgendetwas anderes verwirft deine Anweisung.

Eventuell im Save Document prepare oder Save Document?


*... who can do field replacements in the debugger can do anything in the system

*so this check can not stop (him) anyway.

JARO
  • JARO
  • SAP Forum - User
vor 8 Jahre
Danke, das ist interessant. RV45A-KETDAT bleibt bei mir leer. Ich werde dem mal auf den Grund gehen, selbst wenn ich für dieses Problem nun eine Lösung hab.

Save Document prepare oder Save Document wäre ja schon zu spät, es soll ja dann für die Erfassung der Positionen als Basis dienen.

invisitor
vor 7 Jahre
Hallo Zusammen,

falls das noch relevant sein sollte:

Ich habe das im Userexit MV45AFZZ - userexit_move_field_to_vbak

gemacht. Das ganze ist schon seit 5 Jahren produktiv im Einsatz und funktioniert.

Coding sieht so aus (Ausschnitt exemplarisch da eigentlich alles über Steuertabelle und dynamisch)

vbak-vprgr = 1. "Datumstyp z.B. 1 für Tagesdatum, 2 Woche, 3 Monat

vbak-vdatu = sy-datum. "Tagesdatum

lv_vlauf = 3 "z.B. 3 Tage

* Vorlaufzeit zum Tagesdatum addieren

CALL FUNCTION 'ISU_DATE_MODIFIKATION'

EXPORTING

m_art = ''

day = lv_vlauf

CHANGING

date = vbak-vdatu.