此博客为原创博客,都是个人工作经历所得,转载请注明出处

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.

 

 

 

posted @ 2021-06-09 14:02  Rainystuday  阅读(235)  评论(0编辑  收藏  举报