************************************************************************ * * * This include is reserved for user modifications * * * * Forms for sales document processing * * * * The name of modification modules should begin with 'ZZ'. * * * ************************************************************************
*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 0 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.
*---------------------------------------------------------------------* * 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.
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.