销售订单的一个直接修改源程序的地方 MV45AFZZ 可以控制销售订单上的价格显示不显示

***INCLUDE MV45AFZZ .

************************************************************************
*                                                                      *
* This include is reserved for user modifications                      *
*                                                                      *
* Forms for sales document processing                                  *
*                                                                      *
* The name of modification modules should begin with 'ZZ'.             *
*                                                                      *
************************************************************************

*---------------------------------------------------------------------*
*       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.
   DATA: ZSUBRC  LIKE SY -SUBRC.
* CASE SCREEN-GROUP3.
*   WHEN '900'.
*     IF VBAK-VBTYP NE 'A'.
*       SCREEN-ACTIVE = 0.
*     ENDIF.
* ENDCASE.
   AUTHORITY-CHECK OBJECT  'Z_SO_MONEY'
               ID  'VKORG'  FIELD VBAK -VKORG
               ID  'VTWEG'  FIELD VBAK -VTWEG
               ID  'SPART'  FIELD VBAK -SPART
               ID  'AUART'  FIELD VBAK -AUART
               ID  'ACTVT' DUMMY.
  ZSUBRC  SY -SUBRC.
   IF ZSUBRC  NE  AND  SCREEN -NAME  'VBAK-NETWR'
                       OR    SCREEN -NAME  'VBAK-WAERK'
                       OR    SCREEN -NAME  'VBAP-NETWR'
                       OR    SCREEN -NAME  'KOMV-KBETR'
                       OR    SCREEN -NAME  'RV45A-KOEIN'
                       OR    SCREEN -NAME  'VBAP-NETPR'
                       OR    SCREEN -NAME  'VBAP-NETWR'
                       OR    SCREEN -NAME  'VBAP-WAERK'  ).
     SCREEN -ACTIVE  0.
   ENDIF.
   MODIFY  SCREEN.
* CASE SCREEN-GROUP3.
*   WHEN '900'.
*     IF VBAK-VBTYP NE 'A'.
*       SCREEN-ACTIVE = 0.
*     ENDIF.
* ENDCASE.

* CASE SCREEN-NAME.
*   WHEN 'VBAK-VBELN'.
*     SCREEN-ACTIVE = 0.
* ENDCASE.

ENDFORM.                     "USEREXIT_FIELD_MODIFICATION
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_MOVE_FIELD_TO_VBAK                              *
*---------------------------------------------------------------------*
*       This userexit can be used to move some fields into the sales  *
*       dokument header workaerea VBAK.                               *
*                                                                     *
*       SVBAK-TABIX = 0:  Create header                               *
*       SVBAK-TABIX > 0:  Change header                               *
*                                                                     *
*       This form is called at the end of form VBAK_FUELLEN.          *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_VBAK.
   DATA: L_KTGRD  LIKE VBKD -KTGRD,
        L_PSTYV  LIKE VBAP -PSTYV.
   DATA: WA_VBKD  LIKE XVBKD.

   LOOP  AT XVBKD  INTO WA_VBKD.
    L_KTGRD  WA_VBKD -KTGRD.
   ENDLOOP.

   LOOP  AT XVBAP.
     SELECT  SINGLE PSTYV  INTO L_PSTYV  FROM ZTSD01
                 WHERE AUART  VBAK -AUART
                   AND KTGRD  L_KTGRD.

     IF SY -SUBRC  0.
      XVBAP -PSTYV  L_PSTYV.
       MODIFY XVBAP.
     ENDIF.
   ENDLOOP.
*  vbak-zzfield = xxxx-zzfield2.
ENDFORM.                     "USEREXIT_MOVE_FIELD_TO_VBAK
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_MOVE_FIELD_TO_VBAP                              *
*---------------------------------------------------------------------*
*       This userexit can be used to move some fields into the sales  *
*       dokument item workaerea VBAP                                  *
*                                                                     *
*       SVBAP-TABIX = 0:  Create item                                 *
*       SVBAP-TABIX > 0:  Change item                                 *
*                                                                     *
*       This form is called at the end of form VBAP_FUELLEN.          *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_VBAP.

*  VBAP-zzfield = xxxx-zzfield2.
*{   INSERT         DEVK900046                                        1
***VA01增强 add by panxinyi  2012.2.17
   DATA: L_KTGRD  LIKE VBKD -KTGRD,
        L_PSTYV  LIKE VBAP -PSTYV.
   DATA: WA_VBKD  LIKE XVBKD.

   LOOP  AT XVBKD  INTO WA_VBKD.
    L_KTGRD  WA_VBKD -KTGRD.
   ENDLOOP.
   SELECT  SINGLE PSTYV  INTO L_PSTYV  FROM ZTSD01
               WHERE AUART  VBAK -AUART
                 AND KTGRD  L_KTGRD.

   IF SY -SUBRC  0.
    VBAP -PSTYV  L_PSTYV.
   ENDIF.

***VA01增强
*}   INSERT

ENDFORM.                     "USEREXIT_MOVE_FIELD_TO_VBAP
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_MOVE_FIELD_TO_VBEP                              *
*---------------------------------------------------------------------*
*       This userexit can be used to move some fields into the sales  *
*       dokument schedule line workaerea VBEP                         *
*                                                                     *
*       SVBEP-TABIX = 0:  Create schedule line                        *
*       SVBEP-TABIX > 0:  Change schedule line                        *
*                                                                     *
*       This form is called at the end of form VBEP_FUELLEN.          *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_VBEP.

*  VBEP-zzfield = xxxx-zzfield2.

ENDFORM.                     "USEREXIT_MOVE_FIELD_TO_VBEP
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_MOVE_FIELD_TO_VBKD                              *
*---------------------------------------------------------------------*
*       This userexit can be used to move some fields into the sales  *
*       dokument business data workaerea VBKD                         *
*                                                                     *
*       SVBKD-TABIX = 0:  Create data                                 *
*       SVBKD-TABIX > 0:  Change data                                 *
*                                                                     *
*       This form is called at the end of form VBKD_FUELLEN.          *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_VBKD.

*  VBKD-zzfield = xxxx-zzfield2.

ENDFORM.                     "USEREXIT_MOVE_FIELD_TO_VBKD
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_NUMBER_RANGE                                    *
*---------------------------------------------------------------------*
*       This userexit can be used to determine the numberranges for   *
*       the internal document number.                                 *
*                                                                     *
*       US_RANGE_INTERN - internal number range                       *
*                                                                     *
*       This form is called from form BELEG_SICHERN                   *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_NUMBER_RANGE  USING US_RANGE_INTERN.

* Example: Numer range from TVAK like in standard
* US_RANGE_INTERN = TVAK-NUMKI.

* interne Nummernvergabe
   DATA: DA_RC  LIKE INRI -RETURNCODE.
   CALL  FUNCTION  'NUMBER_GET_NEXT'
     EXPORTING
      NR_RANGE_NR  US_RANGE_INTERN
      OBJECT       'RV_BELEG'
     IMPORTING
      RETURNCODE   DA_RC
       NUMBER       VBAK -VBELN.
   CASE DA_RC.
     WHEN  '1'.
       MESSAGE I532  WITH US_RANGE_INTERN  'RV_BELEG'.
     WHEN  '2'.
       MESSAGE I533  WITH US_RANGE_INTERN  'RV_BELEG'.
   ENDCASE.

**更改销售订单编码规则 2012.03.06
   DATA:L_NUMBE  LIKE ZTSD04 -NUMBE.
   DATA:L_VBELN  LIKE VBAK -VBELN.
   DATA:L_VBELN1  LIKE VBAK -VBELN.
   DATA:L_VBELN2  LIKE VBAK -VBELN.
   DATA: INTERVAL  LIKE NRIV.

   SELECT  SINGLE NUMBE  INTO L_NUMBE  FROM ZTSD04
                       WHERE VKORG  VBAK -VKORG.
   IF L_NUMBE  IS  INITIAL.
     MESSAGE  '该销售组织未维护号码段,请联系管理员'  TYPE  'E'.
     EXIT.
   ENDIF.

   CALL  FUNCTION  'NUMBER_GET_INFO'
     EXPORTING
      NR_RANGE_NR  US_RANGE_INTERN
      OBJECT       'RV_BELEG'
     IMPORTING
      INTERVAL     INTERVAL.

  L_VBELN1  INTERVAL -FROMNUMBER+2 ( 8 ).
   CONCATENATE  L_NUMBE L_VBELN1  INTO L_VBELN1.
   CONDENSE L_VBELN1  NO -GAPS.
  L_VBELN2  INTERVAL -TONUMBER+2 ( 8 ).
   CONCATENATE  L_NUMBE L_VBELN2  INTO L_VBELN2.
   CONDENSE L_VBELN2  NO -GAPS.

   SELECT  MAX VBELN  INTO L_VBELN  FROM VBAK
                       WHERE VBELN > L_VBELN1
                         AND VBELN < L_VBELN2.
   IF L_VBELN  IS  INITIAL.
*    vbak-vbeln = vbak-vbeln+2(8).
*    CONCATENATE  l_numbe vbak-vbeln INTO vbak-vbeln.
    VBAK -VBELN  =  L_VBELN1 +  1.
     CONDENSE VBAK -VBELN  NO -GAPS.
   ELSE.
    L_VBELN  L_VBELN +  1.
     IF L_VBELN+2 ( 8 > INTERVAL -TONUMBER+2 ( 8 ).
       MESSAGE  '该销售组织号码段已用完,请联系管理员'  TYPE  'E'.
       EXIT.
     ELSE.
      VBAK -VBELN  L_VBELN.
     ENDIF.

   ENDIF.
***

ENDFORM.                     "USEREXIT_NUMBER_RANGE
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_PRICING_PREPARE_TKOMK                           *
*---------------------------------------------------------------------*
*       This userexit can be used to move additional fields into the  *
*       communication table which is used for pricing:                *
*                                                                     *
*       TKOMK for header fields                                       *
*                                                                     *
*       This form is called from form PREISFINDUNG_VORBEREITEN.       *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_PRICING_PREPARE_TKOMK.

*  TKOMK-zzfield = xxxx-zzfield2.

ENDFORM.                     "USEREXIT_PRICING_PREPARE_TKOMK
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_PRICING_PREPARE_TKOMP                           *
*---------------------------------------------------------------------*
*       This userexit can be used to move additional fields into the  *
*       communication table which is used for pricing:                *
*                                                                     *
*       TKOMP for item fields                                         *
*                                                                     *
*       This form is called from form PREISFINDUNG_VORBEREITEN.       *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_PRICING_PREPARE_TKOMP.

*  TKOMP-zzfield = xxxx-zzfield2.

ENDFORM.                     "USEREXIT_PRICING_PREPARE_TKOMP
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_READ_DOCUMENT                                   *
*---------------------------------------------------------------------*
*       This userexit can be used to read data in additional tables   *
*       when the program reads a sales document.                      *
*                                                                     *
*       This form is called at the end of form BELEG_LESEN.           *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_READ_DOCUMENT.

ENDFORM.                     "USEREXIT_READ_DOCUMENT
*eject

*---------------------------------------------------------------------*
*       FORM USEREXIT_SAVE_DOCUMENT                                   *
*---------------------------------------------------------------------*
*       This userexit can be used to save data in additional tables   *
*       when a document is saved.                                     *
*                                                                     *
*       If field T180-TRTYP contents 'H', the document will be        *
*       created, else it will be changed.                             *
*                                                                     *
*       This form is called at from form BELEG_SICHERN, before COMMIT *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_SAVE_DOCUMENT.
* Example:
* CALL FUNCTION 'ZZ_EXAMPLE'
*      IN UPDATE TASK
*      EXPORTING
*           ZZTAB = ZZTAB.
ENDFORM.                     "USEREXIT_SAVE_DOCUMENT
*eject
*---------------------------------------------------------------------*
*       FORM USEREXIT_SAVE_DOCUMENT_PREPARE                           *
*---------------------------------------------------------------------*
*       This userexit can be used for changes or checks, before a     *
*       document is saved.                                            *
*                                                                     *
*       If field T180-TRTYP contents 'H', the document will be        *
*       created, else it will be changed.                             *
*                                                                     *
*       This form is called at the beginning of form BELEG_SICHERN    *
*                                                                     *
*---------------------------------------------------------------------*
FORM USEREXIT_SAVE_DOCUMENT_PREPARE.


ENDFORM.                     "USEREXIT_SAVE_DOCUMENT_PREPARE
*eject
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值