SAP生产订单更改记录

15 篇文章 1 订阅

 

 

*&---------------------------------------------------------------------*
*& 包含               ZXCO1U01
*&---------------------------------------------------------------------*
BREAK zhangs.

TABLES:caufv,resb.
DATA: BEGIN OF old_resb OCCURS 0, "更改后未保存之RESB.
        aufnr LIKE resb-aufnr,
        posnr LIKE resb-posnr,
        matnr LIKE resb-matnr,
        rsnum LIKE resb-rsnum,
        rspos LIKE resb-rspos,
        xloek LIKE resb-xloek,
        bdmng LIKE resb-bdmng,
        objnr LIKE resb-objnr,
      END OF old_resb.
DATA: BEGIN OF new_resb OCCURS 0. "数据库中的RESB.
    INCLUDE STRUCTURE old_resb.
DATA: END OF new_resb.
DATA: BEGIN OF obj_resb OCCURS 0. "插入的RESB
    INCLUDE STRUCTURE old_resb.
DATA: END OF obj_resb.
DATA: i_zpco02 LIKE zpco002 OCCURS 0 WITH HEADER LINE.
DATA: i_temp LIKE zpco002 OCCURS 0 WITH HEADER LINE.
DATA: iporg     LIKE msxxlist-hostadr,
      ipdec(16) TYPE c,
      host(18)  TYPE c.
DATA:char1(20) TYPE c,
     char2(20) TYPE c.
DATA: inst_flg TYPE c VALUE 'N',
      chan_had TYPE c VALUE  'N'.


CHECK sy-tcode EQ 'CO02'.
** Get user IP,hostname
CALL FUNCTION 'TH_USER_INFO'  " Get user IP,hostname
  EXPORTING
    client   = sy-mandt
    user     = sy-uname
  IMPORTING
    hostaddr = iporg
    terminal = host
  EXCEPTIONS
    OTHERS   = 1.
**"Conv.IP addr to format "xxx.xxx.xxx.xxx"
CALL FUNCTION 'GWY_IPADR2STRING'   "Conv.IP addr
  EXPORTING
    ipadr  = iporg
  IMPORTING
    string = ipdec.
***Common var.
MOVE: sy-mandt TO i_temp-mandt,
sy-uname TO i_temp-aenam,
sy-datum TO i_temp-laeda,
sy-uzeit TO i_temp-times,
sy-tcode TO i_temp-tcode,
ipdec TO i_temp-hostip,
host TO i_temp-host,
header_table-aufnr TO i_temp-aufnr.


SELECT SINGLE gamng gstrp gltrp gasmg INTO (caufv-gamng, caufv-gstrp , caufv-gltrp , caufv-gasmg)
FROM caufv WHERE aufnr EQ header_table-aufnr.

IF header_table-gamng NE caufv-gamng.
  MOVE: caufv-gamng TO char1, header_table-gamng TO char2.
  MOVE-CORRESPONDING i_temp TO i_zpco02.
  MOVE: '更改工单总数' TO i_zpco02-filed,
  'U' TO i_zpco02-chnid,
  char1 TO i_zpco02-value_old,
  char2 TO i_zpco02-value_new.
  APPEND i_zpco02.
  inst_flg = 'Y'.
  chan_had = 'Y'.
ENDIF.

IF header_table-gstrp NE caufv-gstrp.
  MOVE-CORRESPONDING i_temp TO i_zpco02.
  MOVE: '更改开工日期' TO i_zpco02-filed,
  'U' TO i_zpco02-chnid,
  caufv-gstrp TO i_zpco02-value_old,
  header_table-gstrp TO i_zpco02-value_new.
  APPEND i_zpco02.
  inst_flg = 'Y'.
ENDIF.

IF header_table-gltrp NE caufv-gltrp.
  MOVE-CORRESPONDING i_temp TO i_zpco02.
  MOVE: '更改完工日期' TO i_zpco02-filed,
  'U' TO i_zpco02-chnid,
  caufv-gltrp TO i_zpco02-value_old,
  header_table-gltrp TO i_zpco02-value_new.
  APPEND i_zpco02.
  inst_flg = 'Y'.
ENDIF.

IF header_table-gasmg NE caufv-gasmg.
  MOVE-CORRESPONDING i_temp TO i_zpco02.
  MOVE: '报废部分' TO i_zpco02-filed,
  'U' TO i_zpco02-chnid,
  caufv-gasmg TO i_zpco02-value_old,
  header_table-gasmg TO i_zpco02-value_new.
  APPEND i_zpco02.
  inst_flg = 'Y'.
ENDIF.

IF inst_flg = 'Y'.
  INSERT zpco002 FROM TABLE i_zpco02 ACCEPTING DUPLICATE KEYS.
  inst_flg = 'N'.
ENDIF.

LOOP AT component_table WHERE vbkz EQ 'U'
OR vbkz EQ 'I'
OR vbkz EQ 'D'.
  CASE component_table-vbkz.
    WHEN 'I'.
      MOVE-CORRESPONDING i_temp TO i_zpco02.
      MOVE: '新增组件' TO i_zpco02-filed,
      'I' TO i_zpco02-chnid,
      '' TO i_zpco02-value_old, "old_resb-matnr
      component_table-matnr TO i_zpco02-value_new,
      '新增的组件' TO i_zpco02-matnr,
      component_table-alpos TO i_zpco02-alpos,
      sy-tabix TO i_zpco02-loopid.
      APPEND i_zpco02.
      inst_flg = 'Y'.
    WHEN 'D'.
      MOVE-CORRESPONDING i_temp TO i_zpco02.
      MOVE: '删除组件' TO i_zpco02-filed,
      'D' TO i_zpco02-chnid,
      resb-xloek TO i_zpco02-value_old,
      component_table-xloek TO i_zpco02-value_new,
      component_table-matnr TO i_zpco02-matnr,
      component_table-alpos TO i_zpco02-alpos,
      sy-tabix TO i_zpco02-loopid.
      APPEND i_zpco02.
      inst_flg = 'Y'.
    WHEN 'U'.
      READ TABLE component_table_old
      WITH KEY rsnum = component_table-rsnum
               rspos = component_table-rspos.
      IF sy-subrc IS INITIAL.
        IF component_table-matnr NE component_table_old-matnr.
          MOVE-CORRESPONDING i_temp TO i_zpco02.
          MOVE: '更改组件' TO i_zpco02-filed,
          'U' TO i_zpco02-chnid,
          component_table_old-matnr TO i_zpco02-value_old,
          component_table-matnr TO i_zpco02-value_new,
          '更改的工单组件' TO i_zpco02-matnr,
          component_table-alpos TO i_zpco02-alpos,
          sy-tabix TO i_zpco02-loopid.
          APPEND i_zpco02.
          inst_flg = 'Y'.
        ENDIF.
        IF component_table-bdmng NE component_table_old-bdmng.
          CHECK chan_had NE 'Y'.
          MOVE: component_table-bdmng TO char1, component_table_old-bdmng TO char2.
          MOVE-CORRESPONDING i_temp TO i_zpco02.
          MOVE: '需求数量' TO i_zpco02-filed,
          'U' TO i_zpco02-chnid,
          char2 TO i_zpco02-value_old,
          char1 TO i_zpco02-value_new,
          component_table-matnr TO i_zpco02-matnr,
          component_table-alpos TO i_zpco02-alpos,
          sy-tabix TO i_zpco02-loopid.
          APPEND i_zpco02.
          inst_flg = 'Y'.
        ENDIF.
        IF component_table-sobkz NE component_table_old-sobkz.
          CHECK chan_had NE 'Y'.
          MOVE: component_table-sobkz TO char1, component_table_old-sobkz TO char2.
          MOVE-CORRESPONDING i_temp TO i_zpco02.
          MOVE: '特殊库存' TO i_zpco02-filed,
          'U' TO i_zpco02-chnid,
          char2 TO i_zpco02-value_old,
          char1 TO i_zpco02-value_new,
          component_table-matnr TO i_zpco02-matnr,
          component_table-alpos TO i_zpco02-alpos,
          sy-tabix TO i_zpco02-loopid.
          APPEND i_zpco02.
          inst_flg = 'Y'.
        ENDIF.
        IF component_table-lgort NE component_table_old-lgort.
          CHECK chan_had NE 'Y'.
          MOVE: component_table-lgort TO char1, component_table_old-lgort TO char2.
          MOVE-CORRESPONDING i_temp TO i_zpco02.
          MOVE: '库存地点' TO i_zpco02-filed,
          'U' TO i_zpco02-chnid,
          char2 TO i_zpco02-value_old,
          char1 TO i_zpco02-value_new,
          component_table-matnr TO i_zpco02-matnr,
          component_table-alpos TO i_zpco02-alpos,
          sy-tabix TO i_zpco02-loopid.
          APPEND i_zpco02.
          inst_flg = 'Y'.
        ENDIF.
        IF component_table-XLOEK NE component_table_old-XLOEK.
          CHECK chan_had NE 'Y'.
          MOVE: component_table-XLOEK TO char1, component_table_old-XLOEK TO char2.
          MOVE-CORRESPONDING i_temp TO i_zpco02.
          MOVE: '已删除' TO i_zpco02-filed,
          'U' TO i_zpco02-chnid,
          char2 TO i_zpco02-value_old,
          char1 TO i_zpco02-value_new,
          component_table-matnr TO i_zpco02-matnr,
          component_table-alpos TO i_zpco02-alpos,
          sy-tabix TO i_zpco02-loopid.
          APPEND i_zpco02.
          inst_flg = 'Y'.
        ENDIF.
      ENDIF.
  ENDCASE.
ENDLOOP.
IF inst_flg = 'Y'.
  INSERT zpco002 FROM TABLE i_zpco02 ACCEPTING DUPLICATE KEYS.
  IF sy-subrc EQ 0.
    inst_flg = 'N'.
    chan_had = 'N'.
* MESSAGE ID "ZX" TYPE "W"
* NUMBER "000" WITH "SAP系统已记录您的更改!".
  ENDIF.
ENDIF.

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值