***INCLUDE RV60AFZZ .
************************************************************************
* *
* This include is reserved for user modifications *
* Forms for invoicing *
* The name of modification modules should begin with 'ZZ'. *
* *
************************************************************************
* USEREXIT_ACCOUNT_PREP_KOMKCV *
* USEREXIT_ACCOUNT_PREP_KOMPCV *
* USEREXIT_NUMBER_RANGE *
* USEREXIT_PRICING_PREPARE_TKOMK *
* USEREXIT_PRICING_PREPARE_TKOMP *
************************************************************************
************************************************************************
* FORM ZZEXAMPLE *
*---------------------------------------------------------------------*
* text...................................... *
*---------------------------------------------------------------------*
*FORM ZZEXAMPLE.
* ...
*ENDFORM.
*eject
*---------------------------------------------------------------------*
* FORM USEREXIT_ACCOUNT_PREP_KOMKCV *
*---------------------------------------------------------------------*
* This userexit can be used to move additional fields into the *
* communication table which is used for account allocation: *
* KOMKCV for header fields *
* This form is called from form KONTENFINDUNG *
*---------------------------------------------------------------------*
FORM USEREXIT_ACCOUNT_PREP_KOMKCV.
* KOMKCV-zzfield = xxxx-zzfield2.
ENDFORM.
*eject
*---------------------------------------------------------------------*
* FORM USEREXIT_ACCOUNT_PREP_KOMPCV *
*---------------------------------------------------------------------*
* This userexit can be used to move additional fields into the *
* communication table which is used for account allocation: *
* KOMPCV for item fields *
* This form is called from form KONTENFINDUNG *
*---------------------------------------------------------------------*
FORM USEREXIT_ACCOUNT_PREP_KOMPCV.
* KOMPCV-zzfield = xxxx-zzfield2.
ENDFORM.
*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 LV60AU02 *
*---------------------------------------------------------------------*
FORM USEREXIT_NUMBER_RANGE USING US_RANGE_INTERN.
* Example: Number range from TVFK like in standard
* US_RANGE_INTERN = TVFK-NUMKI.
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 = xvbrk -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.
**更改SD开票编码规则 2012.03.06
DATA:L_NUMBE LIKE ZTSD04 -NUMBE.
DATA:G_VBELN LIKE VBRK -VBELN.
DATA:L_VBELN LIKE VBRK -VBELN.
DATA:L_VBELN1 LIKE VBRK -VBELN.
DATA:L_VBELN2 LIKE VBRK -VBELN.
DATA:L_LINE TYPE I.
SELECT SINGLE NUMBE INTO L_NUMBE FROM ZTSD04
WHERE VKORG = VBRK -VKORG.
IF L_NUMBE IS INITIAL.
MESSAGE '该销售组织未维护号码段,请联系管理员' TYPE 'E'.
EXIT.
ENDIF.
DATA: INTERVAL LIKE NRIV.
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 VBRK
WHERE VBELN > L_VBELN1
AND VBELN < L_VBELN2.
IF L_VBELN IS INITIAL.
* xvbrk-VBELN = xvbrk-VBELN+2(8).
* CONCATENATE L_NUMBE xvbrk-VBELN INTO xvbrk-VBELN.
xvbrk -VBELN = L_VBELN1 + 1.
CONDENSE xvbrk -VBELN NO -GAPS.
L_VBELN = xvbrk -VBELN.
ELSE.
L_VBELN = L_VBELN + 1.
IF L_VBELN+2 ( 8 ) > INTERVAL -TONUMBER+2 ( 8 ).
MESSAGE '该销售组织号码段已用完,请联系管理员' TYPE 'E'.
EXIT.
ENDIF.
ENDIF.
LOOP AT xvbrk.
IF xvbrk -VBELN+0 ( 1 ) = '$'.
xvbrk -VBELN = L_VBELN .
L_VBELN = L_VBELN + 1.
MODIFY xvbrk.
EXIT.
ENDIF.
ENDLOOP.
CLEAR: L_VBELN.
ENDFORM.
*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.
* TKOMK-KUNRE = XVBPA_RE-KUNNR.
* TKOMK-KUNWE = XVBPA_WE-KUNNR.
* TKOMK-KNRZE = XVBPA_RG-KUNNR.
* PERFORM XVBPA_SELECT USING 'VE'.
* TKOMK-VRTNR = XVBPA-PERNR.
* PERFORM XVBPA_SELECT USING 'SP'.
* TKOMK-SPDNR = XVBPA-LIFNR.
* PERFORM XVBPA_SELECT USING 'AP'.
* TKOMK-PARNR = XVBPA-PARNR.
ENDFORM.
*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.
*eject
************************************************************************
* *
* This include is reserved for user modifications *
* Forms for invoicing *
* The name of modification modules should begin with 'ZZ'. *
* *
************************************************************************
* USEREXIT_ACCOUNT_PREP_KOMKCV *
* USEREXIT_ACCOUNT_PREP_KOMPCV *
* USEREXIT_NUMBER_RANGE *
* USEREXIT_PRICING_PREPARE_TKOMK *
* USEREXIT_PRICING_PREPARE_TKOMP *
************************************************************************
************************************************************************
* FORM ZZEXAMPLE *
*---------------------------------------------------------------------*
* text...................................... *
*---------------------------------------------------------------------*
*FORM ZZEXAMPLE.
* ...
*ENDFORM.
*eject
*---------------------------------------------------------------------*
* FORM USEREXIT_ACCOUNT_PREP_KOMKCV *
*---------------------------------------------------------------------*
* This userexit can be used to move additional fields into the *
* communication table which is used for account allocation: *
* KOMKCV for header fields *
* This form is called from form KONTENFINDUNG *
*---------------------------------------------------------------------*
FORM USEREXIT_ACCOUNT_PREP_KOMKCV.
* KOMKCV-zzfield = xxxx-zzfield2.
ENDFORM.
*eject
*---------------------------------------------------------------------*
* FORM USEREXIT_ACCOUNT_PREP_KOMPCV *
*---------------------------------------------------------------------*
* This userexit can be used to move additional fields into the *
* communication table which is used for account allocation: *
* KOMPCV for item fields *
* This form is called from form KONTENFINDUNG *
*---------------------------------------------------------------------*
FORM USEREXIT_ACCOUNT_PREP_KOMPCV.
* KOMPCV-zzfield = xxxx-zzfield2.
ENDFORM.
*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 LV60AU02 *
*---------------------------------------------------------------------*
FORM USEREXIT_NUMBER_RANGE USING US_RANGE_INTERN.
* Example: Number range from TVFK like in standard
* US_RANGE_INTERN = TVFK-NUMKI.
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 = xvbrk -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.
**更改SD开票编码规则 2012.03.06
DATA:L_NUMBE LIKE ZTSD04 -NUMBE.
DATA:G_VBELN LIKE VBRK -VBELN.
DATA:L_VBELN LIKE VBRK -VBELN.
DATA:L_VBELN1 LIKE VBRK -VBELN.
DATA:L_VBELN2 LIKE VBRK -VBELN.
DATA:L_LINE TYPE I.
SELECT SINGLE NUMBE INTO L_NUMBE FROM ZTSD04
WHERE VKORG = VBRK -VKORG.
IF L_NUMBE IS INITIAL.
MESSAGE '该销售组织未维护号码段,请联系管理员' TYPE 'E'.
EXIT.
ENDIF.
DATA: INTERVAL LIKE NRIV.
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 VBRK
WHERE VBELN > L_VBELN1
AND VBELN < L_VBELN2.
IF L_VBELN IS INITIAL.
* xvbrk-VBELN = xvbrk-VBELN+2(8).
* CONCATENATE L_NUMBE xvbrk-VBELN INTO xvbrk-VBELN.
xvbrk -VBELN = L_VBELN1 + 1.
CONDENSE xvbrk -VBELN NO -GAPS.
L_VBELN = xvbrk -VBELN.
ELSE.
L_VBELN = L_VBELN + 1.
IF L_VBELN+2 ( 8 ) > INTERVAL -TONUMBER+2 ( 8 ).
MESSAGE '该销售组织号码段已用完,请联系管理员' TYPE 'E'.
EXIT.
ENDIF.
ENDIF.
LOOP AT xvbrk.
IF xvbrk -VBELN+0 ( 1 ) = '$'.
xvbrk -VBELN = L_VBELN .
L_VBELN = L_VBELN + 1.
MODIFY xvbrk.
EXIT.
ENDIF.
ENDLOOP.
CLEAR: L_VBELN.
ENDFORM.
*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.
* TKOMK-KUNRE = XVBPA_RE-KUNNR.
* TKOMK-KUNWE = XVBPA_WE-KUNNR.
* TKOMK-KNRZE = XVBPA_RG-KUNNR.
* PERFORM XVBPA_SELECT USING 'VE'.
* TKOMK-VRTNR = XVBPA-PERNR.
* PERFORM XVBPA_SELECT USING 'SP'.
* TKOMK-SPDNR = XVBPA-LIFNR.
* PERFORM XVBPA_SELECT USING 'AP'.
* TKOMK-PARNR = XVBPA-PARNR.
ENDFORM.
*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.
*eject