关于生产订单修改记录

关于生产订单修改,相信大家网上一搜,一大堆,最后发现,差不多都是一样,我们公司也是自2020年3月10日,直接引用网络一字不改,使用了两年多,才发现有一些记录不正确,为什么没有开发人员或业务顾问仔细研究一下,明显的错误都没有发现吗?无语。。。。。。。

言归正传,首先用SMOD,打开(或新增)增强,

找组件

 

然后,写代码(以下代码引用网络稍加调整,在S4 Hana SAP上验证,红色部分已经取消或替代替原网上代码):

*&---------------------------------------------------------------------*
*& 包含               ZXCO1U01
*&---------------------------------------------------------------------*

  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'.''取消。怕其他事务码也可能引起生产订单变更CO40、CO41等
** 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 INTO (caufv-gamng, caufv-gstrp)
  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 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'.
        SELECT SINGLE matnr bdmng INTO (resb-matnr, resb-bdmng)
        FROM resb

      WHERE

       'aufnr EQ component_table-aufnr
        'AND posnr EQ component_table-posnr
        'AND matnr EQ component_table-matnr
        'AND      ''RESB 表的主键就是预留单号、行号,没有必要这么多查询条件,条件多了有可能查不出来想要的值。

        rsnum EQ component_table-rsnum
        AND rspos EQ component_table-rspos.
        IF component_table-matnr NE resb-matnr.
          MOVE-CORRESPONDING i_temp TO i_zpco02.
          MOVE: '更改组件' TO i_zpco02-filed,
          'U' TO i_zpco02-chnid,
          resb-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.

        '*当组件变更,数量也变更时  "新加逻辑 可能当初没有考虑到
            IF component_table-bdmng NE resb-bdmng.
               MOVE: component_table-bdmng TO char1, resb-bdmng TO char2.
               MOVE-CORRESPONDING i_temp TO t_zpco02.
               MOVE: '需求数量' TO t_zpco02-filed,
               'U' TO t_zpco02-chnid,
               char2 TO t_zpco02-value_old,
               char1 TO t_zpco02-value_new,
               component_table-matnr TO t_zpco02-matnr,
               component_table-alpos TO t_zpco02-alpos,
               sy-tabix TO t_zpco02-loopid.
               APPEND t_zpco02.
            ENDIF.

          inst_flg = 'Y'.
        ELSEIF component_table-bdmng NE resb-bdmng.
          CHECK chan_had NE 'Y'.
          MOVE: component_table-bdmng TO char1, resb-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.
    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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
购销合同订单录入:合同订单的录入主要包括合同基本信息的录入和合同中客户所需产品的录入,包含合同签订内容和产品需求向详细数据的录入例如:纱支,尺寸,重量,产品图片附件等信息。 购销合同的审核:为了抱着购销合同订单的准确性,在该系统中在一个订单未进入生产负责人员之前需要相关人员对该订单的基本的数据进行审核确认,如果审核通过则进入生产人员处进行分配,否则该订单则别退回录入人员处进行重新编辑。 生产外协: 在实际生产过程中会出现本企业内部生产订单过多而导致客户交货期过于延后,此时需要将订单产品外协给其他同行来生产以满足客户需求,外协需要将相应的订单 产品和数量进行录入和统计以便于外协接受的核对,外协回来的产品在该生产管理系统中将直接由库存人员进行数量大包入库的操作,以等待发货。 订单产品生产分配: 该搞操作是在审核人员审核完成后才能执行的操作,该部操作主要内容是将下发的订单产品按照录入的人员录入的数量进行分配,同一个产品可以将产品数量分配到 不同的同类型的生产机器上面去。次可以查询对应机器的待生产量,并且可以灵活设置机器的日常量,为方便计算订单的交货期提供科学的依据。当确认订单产品分 配完毕之后该产品将进入到实际生产的环节。 生产录入: 该应用主要作用是每天的产品产量录入到已经分配的订单产品中去,方便相关人员查询订单的产品生产的实时流程和生产进度,为客户和内部相关人员提供准确的相 关数据,当录入的数据进行的确认的时候,相关的订单的产品的生产状态也会跟着变化,完成生产订单的则成为一个半成品,则需要进一步的加工处理。 产品漂染:应该的主要是为了方便企业对产品从漂染到漂染完的收录进行科学合理的统计和核算,方便相关人员能及时的了解企业内部所以漂染产品的信息实时情况。操作人员对产品从漂染到待漂染进行全程的管理。对于漂染完毕的产品则自动转到缝纫部门,进入待缝纫的状态。 产品缝纫:该出产品发货前的最后一步操作,当缝纫部门收到已经漂染完毕的产品则处于待缝纫状态,由于每一个产品对应了指定的订单合同,缝纫部门的录入则直接影响到整个订单的产品的流转和发货情况,缝纫部门的录入包括正品和次品的处理和统计,缝纫完毕后该产品则处于待入库的状态。 订单产品入库:在毛巾生产管理系统中,每一个已经生产完毕的订单产品进行入库保存的操作,入库后的操作系统记录下所有的入库记录并提供入库的统计汇总。 订单发货: 每一个购销合同订单从审核到产品的实际生产和最后的订单发货都详细的记录和统计,由于一个订单下可能有多种产品,因为必须等每一个产品的完成生产的每一个 操作之后才能进行发货的操作。发货之后的订单只能进行查询而不能修改订单订单产品中的任何数据,方便企业内部的统计和管理。 次品管理:在毛巾企业生产过程中产生的次品产品在系统中可以对其进行管理,系统次品管理可以对生产过程中的缝纫次品、漂染次品、织造次品以及偏差等进行管理,录入的次品信息都可以想相关的订单产品进行关联,方便统计查询。 订单生成记录:该应用记录下了一个订单下面的每一个产品的生成流程情况,包括生产过程的生产量的录入,漂染录入,缝纫录入的详情数据和操作人员等信息,方便相关人员对订单生产的监控和管理,为客户提供准备的交货日期和生产实时情况。 人员工资统计: 为了内部的生产能及时反应到工人的工资上面来该生产管理系统中添加了人员工资的录入和统计的应用,操作人员需要填入生产的产品,数量,单价。根据操作人员 录入的数据系统会自动进行数据的统计,计算。可以根据产品或者日期进行工资计算和统计,方便公司会计迅速详细地了解工人的工资信息。 订单/产品查询: 为了方便系统操作人员能及时方便的查询所属订单和产品的实时生产进度情况,该系统了向用户提供了强大完整的系统查询功能,可以根据订单中填入的每一个数据 进行查询,根据给填入的产品的每一个基础进行查询例如:日期,交货日期,订单编号等等,相关人员及时获取信息提供了方便准确的服务。 及时聊天:为方便人员的交流和记录,系统还添加了及时聊天的功能,并支持聊天的记录的永久性的保持和和查询,让企业内部人员不收外界影响的情况进行在线信息的交流。 管理员后台管理:管理员后台管理主要包括企业基本信息管理,部门信息管理,企业内部人员信息管理,系统基础信息管理,人员应用操作权限管理,客户信息管理,同类行业信息管理,生产车间,生产产品类型和机器的管理,系统登录日志,操作日志,操作错误日志,应用服务类型管理等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东莞寻香苑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值