vf01 改值增强

发布时间 2024-01-04 17:42:07作者: ABAP-武汉

RV60AFZZ

 

***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.
*{   INSERT         DS4K900092                                        1
BREAK ITL_ZHANGY.
*}   INSERT

*  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.
*{   INSERT         DS4K900092                                        1
BREAK ITL_ZHANGY.
*}   INSERT

*  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.
*{   INSERT         DS4K900092                                        1
BREAK ITL_ZHANGY.
*}   INSERT

* Example: Number range from TVFK like in standard
* US_RANGE_INTERN = TVFK-NUMKI.

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.
*{   INSERT         DS4K900092                                        1
BREAK ITL_ZHANGY.
*IF SY-tcode EQ 'VF01'.
*IF VBRK-FKART EQ 'ZF2'  OR VBRK-FKART EQ 'ZF4'.
*IF VBRP-VGTYP EQ 'C' OR VBRP-VGTYP EQ 'G'.
*DATA:LV_VKORG  TYPE  VBAK-VKORG.
*DATA:LV_WERKS  TYPE  VBAP-WERKS.
*DATA:LV_KUNNR TYPE KNA1-KUNNR.
*DATA:LV_ADRNR TYPE VBPA-ADRNR.
*SELECT SINGLE VKORG INTO LV_VKORG FROM VBAK WHERE VBELN EQ VBRP-vgbel.
*  SELECT SINGLE WERKS INTO LV_WERKS FROM VBAP WHERE VBELN EQ VBRP-vgbel.
*  IF LV_VKORG EQ LV_WERKS.
*MESSAGE '开票已完成' TYPE 'E'.
*  ENDIF.
*  LV_KUNNR = LV_VKORG. LV_KUNNR = |{ LV_KUNNR ALPHA = IN  }|.
*IF LV_KUNNR IS NOT INITIAL.
*  VBRK-KUNRG =  LV_KUNNR.
*  VBRK-KUNAG =  LV_KUNNR.
*  VBRK-VKORG =  LV_WERKS.
*LOOP AT XVBRK ASSIGNING FIELD-SYMBOL(<FS1>)..
*  <FS1>-KUNRG =  LV_KUNNR.
*  <FS1>-KUNAG =  LV_KUNNR.
*   <FS1>-VKORG =  LV_WERKS.
*   SELECT SINGLE  ADDRNUMBER INTO <FS1>-ADRNR FROM BUT020 WHERE PARTNER EQ LV_KUNNR.
*  ENDLOOP.
*
*  XVBRP-VKORG_AUFT =  LV_WERKS.
*
*LOOP AT XVBPA ASSIGNING FIELD-SYMBOL(<FS>).
*<FS>-KUNNR =  LV_KUNNR.
*<FS>-ASSIGNED_BP =  LV_KUNNR.
*IF LV_KUNNR IS NOT INITIAL.
*SELECT SINGLE  ADDRNUMBER INTO <FS>-ADRNR FROM BUT020 WHERE PARTNER EQ LV_KUNNR.
*ENDIF.
*ENDLOOP.
*ENDIF.
*ENDIF.
*ENDIF.
*ENDIF.

*}   INSERT

* 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.
*{   INSERT         DS4K900092                                        1
BREAK ITL_ZHANGY.

IF SY-tcode EQ 'VF01'.
IF VBRK-FKART EQ 'ZF2'  OR VBRK-FKART EQ 'ZF4'.
IF VBRP-VGTYP EQ 'C' OR VBRP-VGTYP EQ 'G'.
DATA:LV_VKORG  TYPE  VBAK-VKORG.
DATA:LV_WERKS  TYPE  VBAP-WERKS.
DATA:LV_KUNNR TYPE KNA1-KUNNR.
DATA:LV_ADRNR TYPE VBPA-ADRNR.
SELECT SINGLE VKORG INTO LV_VKORG FROM VBAK WHERE VBELN EQ VBRP-vgbel.
  SELECT SINGLE WERKS INTO LV_WERKS FROM VBAP WHERE VBELN EQ VBRP-vgbel.
  IF LV_VKORG EQ LV_WERKS.
MESSAGE '开票已完成' TYPE 'E'.
  ENDIF.
  LV_KUNNR = LV_VKORG. LV_KUNNR = |{ LV_KUNNR ALPHA = IN  }|.
IF LV_KUNNR IS NOT INITIAL.
  VBRK-KUNRG =  LV_KUNNR.
  VBRK-KUNAG =  LV_KUNNR.
  VBRK-VKORG =  LV_WERKS.
LOOP AT XVBRK ASSIGNING FIELD-SYMBOL(<FS1>).
  <FS1>-KUNRG =  LV_KUNNR.
  <FS1>-KUNAG =  LV_KUNNR.
   <FS1>-VKORG =  LV_WERKS.
   SELECT SINGLE  ADDRNUMBER INTO <FS1>-ADRNR FROM BUT020 WHERE PARTNER EQ LV_KUNNR.
  ENDLOOP.

  XVBRP-VKORG_AUFT =  LV_WERKS.
  VBRP-VKORG_AUFT =  LV_WERKS.
LOOP AT XVBPA ASSIGNING FIELD-SYMBOL(<FS>).
<FS>-KUNNR =  LV_KUNNR.
<FS>-ASSIGNED_BP =  LV_KUNNR.
IF LV_KUNNR IS NOT INITIAL.
SELECT SINGLE  ADDRNUMBER INTO <FS>-ADRNR FROM BUT020 WHERE PARTNER EQ LV_KUNNR.
ENDIF.
ENDLOOP.

LOOP AT XVBPAk ASSIGNING FIELD-SYMBOL(<Fa>).
<Fa>-KUNNR =  LV_KUNNR.
<Fa>-ASSIGNED_BP =  LV_KUNNR.
IF LV_KUNNR IS NOT INITIAL.
SELECT SINGLE  ADDRNUMBER INTO <Fa>-ADRNR FROM BUT020 WHERE PARTNER EQ LV_KUNNR.
ENDIF.
ENDLOOP.

ENDIF.
ENDIF.
ENDIF.
ENDIF.

*}   INSERT

*  TKOMP-zzfield = xxxx-zzfield2.

ENDFORM.
*eject