zoukankan      html  css  js  c++  java
  • 生产订单工艺路线修改

    一、生产订单修改工艺路线

    现有标准函数可以修改生产订单的工艺路线:CO_SE_PRODORD_CHANGE,但是该函数添加工艺路线时,不能传入采购信息记录和采购组织等字段,因此对标准函数进行改造

    二、复制和修改标准函数

    复制标准函数为ZCO_SE_PRODORD_CHANGE

    因为要添加的字段时在工艺路线上,因此修改工艺路线对应的结构

     添加上自定义的字段和更新标识

    修改程序中对应的创建和修改的结构

    创建结构中添加缺少的字段

     更新结构中添加缺少的字段和更新标识

    创建和修改时,赋值传入的数据

     

     复制更新和修改函数

    ZCO_SE_PRODORD_OPR_CREATE中新建子例程,维护传入的字段。修改函数ZCO_SE_PRODORD_OPR_CHANGE,同样位置调用同一个子例程

     

     复制原有的包含文件,模仿现有的字段赋值子例程,编写新的子例程赋值新增的字段

    *&---------------------------------------------------------------------*
    *&      Form  opr_set_external_wx
    *&---------------------------------------------------------------------*
    *       导入外协采购信息记录和采购组织等字段
    *----------------------------------------------------------------------*
    FORM opr_set_external_wx USING p_infnr TYPE infnr  p_infnr_x TYPE c
                                     p_ekorg TYPE ekorg  p_ekorg_x TYPE c
                                     p_meinh TYPE vorme  p_meinh_x TYPE c
                                     p_umren TYPE cp_umren  p_umren_x TYPE c
                                     p_zmerh TYPE dzmerh  p_zmerh_x TYPE c
                                     p_zeier TYPE dzeier  p_zeier_x TYPE c
                                     p_mgvrg TYPE mgvrg  p_mgvrg_x TYPE c
                                     p_esokz TYPE esokz  p_esokz_x TYPE c
                                     p_netpr TYPE iprei  p_netpr_x TYPE c
                                     p_peinh TYPE epein  p_peinh_x TYPE c
                                     p_waers TYPE waers  p_waers_x TYPE c
                                     p_sortl TYPE sorti  p_sortl_x TYPE c
                                     p_create TYPE c.
    
      DATA: ls_t024           TYPE t024.
      DATA: lv_msgv1        TYPE symsgv,
            lv_msgv2        TYPE symsgv,
            lv_msgv3        TYPE symsgv,
            lv_msg_vornr(9) TYPE c.
    
    *--> Take over material group
      IF NOT p_create IS INITIAL.         "create
        gs_afvgd-infnr = p_infnr.
        gs_afvgd-ekorg = p_ekorg.
        gs_afvgd-meinh = p_meinh.
        gs_afvgd-umren = p_umren.
        gs_afvgd-zmerh = p_zmerh.
        gs_afvgd-zeier = p_zeier.
        gs_afvgd-mgvrg = p_mgvrg.
        gs_afvgd-esokz = p_esokz.
        gs_afvgd-preis = p_netpr.
        gs_afvgd-preis = p_peinh.
        gs_afvgd-waers = p_waers.
        gs_afvgd-sortl = p_sortl.
      ELSE.                               "change
        IF NOT p_infnr_x IS INITIAL.
          gs_afvgd-infnr = p_infnr.
        ENDIF.
        IF NOT p_ekorg_x IS INITIAL.
          gs_afvgd-ekorg = p_ekorg.
        ENDIF.
        IF NOT p_meinh_x IS INITIAL.
          gs_afvgd-meinh = p_meinh.
        ENDIF.
        IF NOT p_umren_x IS INITIAL.
          gs_afvgd-umren = p_umren.
        ENDIF.
        IF NOT p_zmerh_x IS INITIAL.
          gs_afvgd-zmerh = p_zmerh.
        ENDIF.
        IF NOT p_zeier_x IS INITIAL.
          gs_afvgd-zeier = p_zeier.
        ENDIF.
        IF NOT p_mgvrg_x IS INITIAL.
          gs_afvgd-mgvrg = p_mgvrg.
        ENDIF.
        IF NOT p_esokz_x IS INITIAL.
          gs_afvgd-esokz = p_esokz.
        ENDIF.
        IF NOT p_netpr_x IS INITIAL.
          gs_afvgd-preis = p_netpr.
        ENDIF.
        IF NOT p_peinh_x IS INITIAL.
          gs_afvgd-peinh = p_peinh.
        ENDIF.
        IF NOT p_waers_x IS INITIAL.
          gs_afvgd-waers = p_waers.
        ENDIF.
        IF NOT p_sortl_x IS INITIAL.
          gs_afvgd-sortl = p_sortl.
        ENDIF.
      ENDIF.
    
    *--> Take over purchasing group
      IF NOT gs_afvgd-infnr IS INITIAL.
        SELECT SINGLE
          infnr,
          ekorg,
          esokz,
          werks
        FROM eine INTO @DATA(lt_eine) WHERE infnr = @gs_afvgd-infnr
                                          AND ekorg = @gs_afvgd-ekorg.
        IF sy-subrc NE 0.
          lv_msgv1 = gs_afvgd-ekorg.
          lv_msgv2 = gs_afvgd-infnr.
          PERFORM error_handling USING gs_caufvd-aufnr gc_error_msg
                                       gc_msgid_wx '010'
                                       lv_msgv1 lv_msgv2 space space
                                       CHANGING gs_return.
          EXIT.
        ENDIF.
      ENDIF.
    
      IF NOT gs_afvgd-ekorg IS INITIAL.
        SELECT SINGLE
          ekorg,
          ekotx
        FROM t024e INTO @DATA(lt_t024e) WHERE ekorg = @gs_afvgd-ekorg.
    
        IF sy-subrc NE 0.
          lv_msgv1 = gs_afvgd-ekorg.
          PERFORM error_handling USING gs_caufvd-aufnr gc_error_msg
                                       gc_msgid_wx '011'
                                       lv_msgv1 space space space
                                       CHANGING gs_return.
          EXIT.
        ENDIF.
      ENDIF.
    
      IF NOT gs_afvgd-meinh IS INITIAL.
        SELECT SINGLE
          *
        FROM t006 INTO @DATA(lt_t006) WHERE msehi = @gs_afvgd-meinh.
    
        IF sy-subrc NE 0.
          lv_msgv1 = gs_afvgd-meinh.
          PERFORM error_handling USING gs_caufvd-aufnr gc_error_msg
                                       gc_msgid_wx '012'
                                       lv_msgv1 space space space
                                       CHANGING gs_return.
          EXIT.
        ENDIF.
      ENDIF.
    ENDFORM.                    " opr_set_external_wx

    在外协传参时,最好将外协相关的字段都增强进去,这样赋值给采购申请不会缺少数据,之前缺少部分字段,导致采购申请数量、价格、类别、排序字符串等缺失,使用BAPI修改过工单后,在CO02中手动修改保存时将会宕机

     源码中通过工艺创建采购申请的赋值语句在SAPLCOZF->LCOZFU02->CO_ZF_FILL_EBAN_FROM_AFVGD中

  • 相关阅读:
    【OpenCV学习笔记5】读取图像中任意点的像素值
    【收藏】国企央企
    Visual Studio 进化史
    【图像算法】不变矩
    工控博客精华链接
    投了...
    【图像算法】常见的数字图像处理程序大全
    Google C++编码规范
    Google员工自述:在哈佛教书和在Google工作的差别
    国立华侨大学校长写给2010届毕业生的话:人生的二和三
  • 原文地址:https://www.cnblogs.com/BinGeneral/p/15529429.html
Copyright © 2011-2022 走看看