Konditionen ändern
Konditionen können mit dem BAPI_SALESORDER_CHANGE geändert werden. Die Möglichkeiten sind jedoch sehr beschränkt. Bei jeder Änderung wird eine neue Kondition eingefügt und die vorhandene auf “inaktiv” gesetzt. Änderungen von Zu- und Abschlägen sind überhaupt nicht möglich. Mit dem folgenden Coding können die Konditionen angepasst werden.
Das Programm verwendet Standardfunktionsbausteine, die aber normalerweise nur intern genutzt werden.
Sollten Sie das folgende Coding also verwenden wollen, sollten Sie auf jeden Fall ausgiebig testen!
Denken Sie daran, dass es inaktive Konditionen geben kann oder eine Kondition als prozentualer Auf- oder Abschlag definiert als auch wertmäßig eingestellt sein kann…!
Das hier vorgestellte Coding ändert den Wert einer Kopfkondition. Diese wird auch ordnungsgemäß auf die Positionen heruntergebrochen.
*** DATA
DATA gs_xkomv TYPE komv.
DATA gt_xkomv TYPE STANDARD TABLE OF komv.
DATA gs_komk TYPE komk.
DATA gs_komp TYPE komp.
*** FIELD SYMBOLS
FIELD-SYMBOLS <komv> TYPE komv.
FIELD-SYMBOLS <dataloss> TYPE c.
FIELD-SYMBOLS <konvchanged> TYPE c.
*** SELECTION SCREEN
PARAMETERS p_vbeln TYPE vbeln DEFAULT ‘12345’.
START-OF-SELECTION.
*** READ DOCUMENT
CALL FUNCTION ‘SD_SALES_DOCUMENT_READ’
EXPORTING
document_number = p_vbeln.
*** GET PRICING INFORMATION
CALL FUNCTION ‘SD_SALES_PRICING_INFORMATION’
IMPORTING
e_komk = gs_komk
e_komp = gs_komp
TABLES
ftkomv = gt_xkomv.
*** CHANGE ONE HEADER CONDITION
READ TABLE gt_xkomv ASSIGNING <komv>
WITH KEY kschl = ‘ZZZZ’
kposn = 0.
IF sy-subrc = 0.
*** CHANGE CONDITIONS VALUE
SUBTRACT 3 FROM <komv>-kbetr.
*** CHECK IF CHANGES ARE OK:
CALL FUNCTION ‘PRICING_CHECK’
EXPORTING
comm_head_i = gs_komk
comm_item_i = gs_komp
komv_i = <komv>
preliminary = ‘X’
EXCEPTIONS
condition = 1
OTHERS = 2.
IF sy-subrc > 0.
“Do something to stop updating the wrong condition
ENDIF.
ENDIF.
*** ASSIGN DATA-LOSS-FLAG TO FORCE SAVING
ASSIGN (‘(SAPMV45A)R185D-DATALOSS’) TO <dataloss>.
<dataloss> = ‘X’.
*** ASSIGN CONDITIONS-CHANGED-FLAG TO FORCE SAVING CONDITIONS
ASSIGN (‘(SAPMV45A)KONV_GEAENDERT’) TO <konvchanged>.
<konvchanged> = ‘X’.
*** DO NOT UPDATE IF THERE ARE NO CONDITIONS
CHECK gt_xkomv IS NOT INITIAL.
*** SET NEW PRICING
CALL FUNCTION ‘SD_SALES_PRICING_PUT’
TABLES
fxkomv = gt_xkomv.
*** SAVE DOCUMENT
CALL FUNCTION ‘SD_SALES_DOCUMENT_SAVE’
EXPORTING
synchron = ‘X’.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024