MB22更改预留增强
程序 ZMM07RFB0
ZMB21 增强屏幕增强自定义字段,新建可以保存数据,但是修改不能保存,重点在怎么更新数据库;
调试发现,标准代码里使用UPDATE RKPF更新字段数据,只会更新:
UPDATE rkpf
SET
xcale = xrkpf-xcale
rsdat = xrkpf-rsdat
wempf = xrkpf-wempf
serie = xrkpf-serie
WHERE rsnum = xrkpf-rsnum.
增强字段值无法更新
使用增强
增加新增字段 ZZLGORT
*ENHANCEMENT-POINT beleg_buchen_01 SPOTS es_sapmm07r.
*--------------------------------------------------------------------*
* 预留单日志 - RESERVATION LOG
*--------------------------------------------------------------------*
CALL FUNCTION 'ZMM_RESERVATION_LOG'
EXPORTING
rkpf = rkpf
t158 = t158
xloeb = xloeb
TABLES
xresb = xresb.
IF xloeb = x.
MESSAGE s510 WITH rkpf-rsnum.
ELSE.
MESSAGE s060 WITH rkpf-rsnum.
ENDIF.
IF t158-trtyp = h.
CALL FUNCTION 'MB_CREATE_RESERVATION' IN UPDATE TASK
TABLES
xrkpf = xrkpf
xresb = xresb
xreul = xreul
EXCEPTIONS
res_header_not_found = 1
res_item_not_found = 2
res_index_not_found = 3.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1.
MESSAGE a000 WITH 'XRKPF'.
WHEN 2.
MESSAGE a000 WITH 'XRESB'.
WHEN 3.
MESSAGE a000 WITH 'XREUL'.
WHEN OTHERS.
ENDCASE.
ENDIF.
READ TABLE dis INDEX 1.
IF sy-subrc IS INITIAL.
CALL FUNCTION 'MB_CREATE_MRPRECORD' IN UPDATE TASK
TABLES
dis = dis.
ENDIF.
SET PARAMETER ID 'RES' FIELD rkpf-rsnum.
READ TABLE xmard INDEX 1.
IF sy-subrc IS INITIAL.
CALL FUNCTION 'MB_CREATE_MARD' IN UPDATE TASK
TABLES
xmard = xmard.
ENDIF.
ELSE.
IF xloeb = x.
CALL FUNCTION 'MB_DELETE_RESERVATION' IN UPDATE TASK
TABLES
xrkpf = xrkpf
xreul = xreuld
xresb = xresb
zresb = zresb
EXCEPTIONS
not_found = 1.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1.
MESSAGE a000 WITH 'XRKPF'.
WHEN OTHERS.
ENDCASE.
ENDIF.
READ TABLE dis INDEX 1.
IF sy-subrc IS INITIAL.
CALL FUNCTION 'MB_CREATE_MRPRECORD' IN UPDATE TASK
TABLES
dis = dis.
ENDIF.
* Was the reservation related with kanban? "note422190
CALL FUNCTION 'PK_REPLENISHMENT_REVERSAL' "note422190
EXPORTING "note422190
rsnum = xrkpf-rsnum "note422190
EXCEPTIONS "note422190
no_kanban = 1. "note422190
IF NOT sy-subrc = 1. "note422190
CALL FUNCTION 'PK_REPLENISHMENT_REVERSAL_POST'. "note422190
ENDIF. "note422190
ELSE.
CALL FUNCTION 'MB_CHANGE_RESERVATION' IN UPDATE TASK
EXPORTING
change_rkpf = upd_rkpf
change_resb = upd_resb
new_resb = new_resb
TABLES
xrkpf = xrkpf
xresb = xresb
xresbn = xresbn
zresb = zresb
dis = dis
xreul = xreul
xreuln = xreuln
xreuld = xreuld.
READ TABLE xmard INDEX 1.
IF sy-subrc IS INITIAL.
CALL FUNCTION 'MB_CREATE_MARD' IN UPDATE TASK
TABLES
xmard = xmard.
ENDIF.
* check if xloek was set for an item with connection to kanban
READ TABLE xresb INDEX 1. "note422190
* Kanban reservations have just one item "note422190
IF sy-subrc = 0 AND NOT xresb-xloek IS INITIAL. "note422190
CALL FUNCTION 'PK_REPLENISHMENT_REVERSAL' "note422190
EXPORTING "note422190
rsnum = xrkpf-rsnum "note422190
EXCEPTIONS "note422190
no_kanban = 1. "note422190
IF NOT sy-subrc = 1. "note422190
CALL FUNCTION 'PK_REPLENISHMENT_REVERSAL_POST'. "note422190
ENDIF. "note422190
ENDIF. "note422190
ENDIF.
ENDIF.
*ENHANCEMENT-POINT beleg_buchen_02 SPOTS es_sapmm07r.
COMMIT WORK.
CALL CUSTOMER-FUNCTION '001'
TABLES
ti_rkpf = xrkpf
ti_resb_new = xresb
ti_resb_old = zresb
ti_dm07r = ydm07r
ti_resb_added = xresbn.