销售订单增强MV45AFZZ

***INCLUDE MV45AFZZ .

************************************************************************
*                                                                      *
* This include is reserved for user modifications                      *
*                                                                      *
* Forms for sales document processing                                  *
*                                                                      *
* The name of modification modules should begin with 'ZZ'.             *
*                                                                      *
************************************************************************
*& 修改日期:2010.06.09
*& 修 改 人:zhouxu V1.0
*& 修改原因:1 ZGOR 广告物料发放订单项目类型与订单原因的判断
*            2 订单条件与客户组字段效验
*            3 Z001 成本中心发料项目类型与订单原因的判断
*& 修改日期:2010.06.23
*& 修 改 人:zhouxu V1.1
*& 修改原因: 暂时取消促销品的增强
*& 修改日期:2010.08.13
*& 修 改 人:zhouxu V1.2
*& 修改原因: 审批之后可以修改六个字段
*& 修改日期:2010.08.16
*& 修 改 人:zhouxu V1.3
*& 修改原因: 审批之后抬头金额小数点第二位不对无法修改
*& 修改日期:2010.08.16
*& 修 改 人:zhouxu V1.4
*& 修改原因: 审批之后项目金额小数点第二位不对无法修改
*& 修改日期:2010.08.17
*& 修 改 人:zhouxu V1.5
*& 修改原因: 审批之后项目税额MWSBP小数点第二位不对无法修改
*& 修改日期:2010.08.18
*& 修 改 人:zhouxu V1.6
*& 修改原因: 审批之后最后更改日期无法修改。
*& 修改日期:2010.08.18
*& 修 改 人:zhouxu V1.7
*& 修改原因: 审批之后净价格NETPR无法修改。NETPR
*& 修改日期:2010.08.20
*& 修 改 人:zhouxu V1.8
*& 修改原因:
*以下是免费样品订单(ZFD),广告物料订单(ZGOR)审核后不允许修改的字段内容:
*
*1,订单抬头:售达方,送达方,成本中心;
*2,订单明细:物料编码,数量,增删行项目.
*& 修改日期:2010.08.24
*& 修 改 人:zhouxu V1.9
*& 修改原因: 销售订单交货日期后移。
*
*& 修改日期:2010.10.27
*& 修改人:Susan
*& 修改原因:免费样品订单限制售达方只能是内部销售办事处,客户组:0002
*
*---------------------------------------------------------------------*
*       FORM ZZEXAMPLE                                                *
*---------------------------------------------------------------------*
*       text......................................                    *
*---------------------------------------------------------------------*
*FORM ZZEXAMPLE.

*  ...

*ENDFORM.

*eject
*---------------------------------------------------------------------*
*       FORM USEREXIT_DELETE_DOCUMENT                                 *
*---------------------------------------------------------------------*
*       This userexit can be used to delete data in additional tables *
*       when a sales document is deleted.                             *
*                                                                     *
*      This form is called in dialog at the end of form BELEG_LOESCHEN*
*      just before form BELEG_SICHERN is performed to delete the      *
*      datas on the database.                                         *
*                                                                     *
*---------------------------------------------------------------------*
FORM userexit_delete_document.

ENDFORM.                    "USEREXIT_DELETE_DOCUMENT
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_FIELD_MODIFICATION                              *
*---------------------------------------------------------------------*
*       This userexit can be used to modify the attributes of         *
*       screen fields.                                                *
*       This form is processed for each field in the screen.          *
*                                                                     *
*       The use of the fields screen-group1 to screen-group4 is:      *
*                                                                     *
*       Screen-group1: Automatic modification contolles by transaction*
*                      MFAW.                                          *
*       Screen-group2: Contents 'LOO' for steploop-fields.            *
*       Screen-group3: Used for modififaction, which are dependent on *
*                      control tables or other fix information.       *
*       Screen-group4: Unused                                         *
*                                                                     *
*       For field mofifications, which are dependent on the document  *
*       status, you can use the status field in the workareas         *
*       XVBAP for item status and XVBUK for header status.            *
*                                                                     *
*       This form is called from module FELDAUSWAHL.                  *
*                                                                     *
*---------------------------------------------------------------------*
FORM userexit_field_modification.

* CASE SCREEN-GROUP3.
*   WHEN '900'.
*     IF VBAK-VBTYP NE 'A'.
*       SCREEN-ACTIVE = 0.
*     ENDIF.
* ENDCASE.
*  CASE screen-group2.
*    WHEN 'LOO'.
*      IF screen-group3 = '001' AND  screen-group3 = '001'.
*       SCREEN-INPUT = '0'.
*      ENDIF.
*  ENDCASE.
* CASE SCREEN-NAME.
*   WHEN 'VBAK-VBELN'.
*     SCREEN-ACTIVE = 0.
* ENDCASE.
**    Begin v1.9
** 以下是免费样品订单(ZFD)对售达方的类型判断,限制售达方只能是内部办事处:账户组为:0002 Susan 2010.10.27
  IF sy-tcode = 'VA01'  OR sy-tcode = 'VA02' .
    DATA:zktokd LIKE kna1-ktokd,kunnr LIKE vbak-kunnr.
    IF xvbak-auart = 'ZFD' AND xvbak-kunnr  IS NOT INITIAL.
*         zktokd = kna1-ktokd while kunnr = xvbak-annr.
      SELECT SINGLE ktokd FROM kna1
        INTO zktokd
        WHERE kunnr = xvbak-kunnr.
      IF zktokd <> '0002'.
        MESSAGE i398(00) WITH '免费样品订单售达方必须是内部销售办事处'.
        EXIT.
      ENDIF.
    ENDIF.
  ENDIF.
**   End v1.9
  IF sy-tcode = 'VA01'  .


    DATA:jhzq LIKE ymara_sd-jhzq,jhzqmax LIKE ymara_sd-jhzq.
    DATA:matnr LIKE mara-matnr.
    LOOP AT xvbap WHERE matnr IS NOT INITIAL .
      CLEAR jhzq.
      SELECT SINGLE jhzq FROM ymara_sd
      INTO jhzq
      WHERE matnr = xvbap-matnr.
      IF jhzqmax < jhzq.
        jhzqmax = jhzq.
        matnr = xvbap-matnr.
      ENDIF.

    ENDLOOP.
    DATA:dat LIKE sy-datum.
    IF   matnr  IS NOT INITIAL AND jhzqmax IS NOT INITIAL.
      DATA: i TYPE i VALUE 1.
      dat = sy-datum .
      WHILE i <= jhzqmax.
        i = i + 1 .
        dat =   dat  +  1.
*--------------工厂日历的日期---------------------
        CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
          EXPORTING
            date                = dat
            factory_calendar_id = 'CN'
          IMPORTING
            date                = dat.
      ENDWHILE.
*------------------end ----------------------------
      vbak-vdatu  =  dat  .
      xvbep-edatu =  dat .
      MODIFY xvbep TRANSPORTING  edatu    WHERE   posnr IS NOT INITIAL .

      MESSAGE i398(00) WITH '该订单最长交货物料为' matnr '天数为:' jhzqmax.
    ENDIF.
  ENDIF.
ENDFORM.                    "USEREXIT_FIELD_MODIFICATION
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_MOVE_FIELD_TO_VBAK          

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值