Sunteți pe pagina 1din 23

Use the standard program SAPMV45A.

PROCESS BEFORE OUTPUT.


*
Verarbeitung vor der Ausgabe
*{
INSERT
EMDK902370
*
Module for calling Custom fields.
MODULE ZZPREPARE_CUSTOMFIELD. " For custom fields
MODULE ZZPREPARE_DISPLAYFIELD. " To get default values
* MODULE ZZMOD_SETLINES.
" To get scroll bar
MODULE ZZMOD_GRANDTOT.
" To display grand total

* LOOP AT GT_AMC_VARI INTO GS_AMC_VARI WITH CONTROL TABCON1


*
CURSOR TABCON1-TOP_LINE.
*
MODULE ZZMOD_TABVISIBLITY.
" To disable/enable in display/create
* ENDLOOP.
*}
INSERT
PROCESS AFTER INPUT.
*
Verarbeitung nach der Eingabe
*{
INSERT
EMDK902370
*
* LOOP AT GT_AMC_VARI.
*
CHAIN.
*
FIELD: GS_AMC_VARI-VARI_S,
*
GS_AMC_VARI-VARI_p.
*
MODULE ZZMODIFY_TABCON1.
*
ENDCHAIN.
* ENDLOOP.

* MODULE
ZZMOD_TOTVAL.
*}
INSERT

Include

MV45AOZZ

***INCLUDE MV45AOZZ .
************************************************************************
*
*
* This include is reserved for user modifications
*
*
*
* PBO Modules for sales document processing
*
*
*
* The name of modification modules should begin with 'ZZ'.
*
*
*
************************************************************************
*---------------------------------------------------------------------*
*
MODULE ZZEXAMPLE OUTPUT
*
*---------------------------------------------------------------------*
*
text......................................
*
*---------------------------------------------------------------------*

*MODULE ZZEXAMPLE OUTPUT.


*

...

*ENDMODULE.
*{

INSERT

EMDK902370

*** Type Declaration *********************


TYPES: BEGIN OF TY_AMC_VARI,
VBELN
TYPE
ZCET_AMC_VARI-VBELN,
POSNR
TYPE
ZCET_AMC_VARI-POSNR,
VARI_S
TYPE
ZCET_AMC_VARI-VARI_S,
VARI_P
TYPE
ZAMC_PRICE, "ZCET_AMC_VARI-VARI_P,
END OF TY_AMC_VARI.
DATA: GT_AMC_VARI
GS_AMC_VARI
GS_AMC_VARI2

TYPE STANDARD TABLE OF TY_AMC_VARI,


TYPE
TY_AMC_VARI,
TYPE
TY_AMC_VARI.

DATA: GT_CETAMC
GS_CETAMC

TYPE STANDARD TABLE OF ZCET_AMC_VARI,


TYPE
ZCET_AMC_VARI.

DATA: GV_TOTSPEC
GV_GRANDTOT

TYPE
TYPE

ZAMC_PRICE, "ZCET_AMC_VARI-VARI_P,
ZAMC_PRICE. "ZCET_AMC_VARI-VARI_P.

DATA: GV_SPEED
GV_CAPACITY
AMC_CAPACITY.

TYPE
TYPE

AUSP-ATWRT, "ZCET_AMC_SPEED-SPEED,
AUSP-ATWRT. "ZCET_AMC_CPTY-

DATA: GT_CABN
GS_CABN

TYPE STANDARD TABLE OF CABN,


TYPE
CABN,

GT_AUSP
GS_AUSP

TYPE STANDARD TABLE OF AUSP,


TYPE
AUSP.

DATA: GT_SPEED
GS_SPEED
GT_CAPACITY
GS_CAPACITY
DATA:

TYPE STANDARD TABLE OF ZCET_AMC_SPEED,


TYPE
ZCET_AMC_SPEED,
TYPE STANDARD TABLE OF ZCET_AMC_CPTY,
TYPE
ZCET_AMC_CPTY.

L_ANSWER, L_ANSWER2(10), L_VALUE TYPE SPOP-VARVALUE1.

CONTROLS: TABCON1

TYPE TABLEVIEW USING SCREEN '8459'.

*&---------------------------------------------------------------------*
*&
Module ZZPREPARE_CUSTOMFIELD OUTPUT
*&---------------------------------------------------------------------*

*
text
*----------------------------------------------------------------------*
module ZZPREPARE_CUSTOMFIELD output.
IF sy-tcode EQ 'VA21' OR
sy-tcode EQ 'VA22' OR
sy-tcode EQ 'VA23'.
LOOP AT SCREEN.
IF
SCREEN-group1
IF
vbak-auart =
vbak-auart =
vbak-auart =

= 'DSP'.
'ZQC' OR
'ZQR' OR
'ZQT'.

IF T180-TRTYP = 'H' OR
T180-TRTYP = 'V'.
SCREEN-INPUT = 1.
ELSEIF T180-TRTYP = 'A'.
SCREEN-INPUT = 0.
ENDIF.
ELSE.
SCREEN-INPUT = 0.
ENDIF.

"Create
"Change
"Display

MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'DSP'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
*
IF
*
OR
*
OR
endmodule.
*}

SCREEN-name
SCREEN-name
SCREEN-name
"

EQ 'VBAP-ZZAMC_DAT'
EQ 'VBAP-ZZSTOPS'
EQ 'VBAP-ZZEQUI_STOPS'.
ZZPREPARE_CUSTOMFIELD OUTPUT

INSERT

*{
INSERT
EMDK902370
2
*&---------------------------------------------------------------------*

*&
Module ZZPREPARE_DISPLAYFIELD OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module ZZPREPARE_DISPLAYFIELD output.
* Display of 'Segment factor' based on segment.
DATA : LV_SEGMENT
TYPE KDGRP,
LV_FACTOR
TYPE ZAMC_FAC,
LV_NONSTPCOST TYPE ZAMC_BASECOST,
LV_STPCOST
TYPE ZAMC_PRICE,
LV_FIXDCOST
TYPE ZAMC_PRICE,
LV_STOPS
TYPE ZAMC_STOPS,
LV_NONSTPS
TYPE ZAMC_NSTOPS.
DATA : LV_VGBEL
TYPE VBAK-VGBEL,
LV_QMNUM
TYPE VBAK-QMNUM,
LV_EQUNR
TYPE QMIH-EQUNR,
LV_SFACTOR
TYPE ZCET_AMC_SPEED-SFACTOR,
LV_CFACTOR
TYPE ZCET_AMC_CPTY-CFACTOR.
DATA : LV_BEGDA
TYPE SY-DATUM,
LV_SBEGIN
TYPE SY-DATUM,
LV_CBEGIN
TYPE SY-DATUM.
REFRESH : GT_CABN, GT_AUSP.
CLEAR : LV_QMNUM,LV_VGBEL,LV_EQUNR, GS_AUSP, GS_CABN.
CLEAR : LV_SEGMENT, LV_FACTOR, LV_NONSTPCOST,
LV_STPCOST,LV_FIXDCOST, LV_STOPS,
LV_NONSTPS,LV_BEGDA,GV_CAPACITY,GV_SPEED.
LV_SEGMENT = VBKD-KDGRP.
SELECT SINGLE

FACTOR
FROM ZCET_AMC_SGMT
INTO LV_FACTOR
WHERE KDGRP EQ LV_SEGMENT.

IF SY-SUBRC = 0 AND VBAP-ZZSGMT_F IS INITIAL.


VBAP-ZZSGMT_F = LV_FACTOR.
ENDIF.
* Display 'Fixed Cost' based on stops and non stops value in screen
*
& based on price as on date.
SELECT MAX( BEGDA )
INTO (LV_BEGDA)
FROM
ZCET_AMC_PRI
WHERE EQUI_STOPS = VBAP-ZZEQUI_STOPS
AND
BEGDA
<= VBAP-ZZAMC_DAT.
LV_STOPS

= VBAP-ZZEQUI_STOPS.

IF LV_STOPS IS NOT INITIAL.


SELECT SINGLE
PRICE
FROM ZCET_AMC_PRI " For stops costs
INTO LV_STPCOST
WHERE EQUI_STOPS EQ LV_STOPS
AND
BEGDA
EQ LV_BEGDA.
ENDIF.
LV_NONSTPS = VBAP-ZZSTOPS.
IF LV_NONSTPS IS NOT INITIAL.
SELECT SINGLE PRICE
FROM
ZCET_AMC_NSTP "For non stop costs
INTO
LV_NONSTPCOST
WHERE STOPS
EQ LV_NONSTPS
AND
BEGDA
EQ LV_BEGDA.
ENDIF.
LV_FIXDCOST

= ( LV_STPCOST + LV_NONSTPCOST ) * LV_SEGMENT.

VBAP-ZZNSTP_P = LV_FIXDCOST.
*** To display Speed and Capacity factors ********
SELECT SINGLE

VGBEL
FROM VBAK
INTO LV_VGBEL
WHERE VBELN EQ VBAK-VBELN.

IF LV_VGBEL IS NOT INITIAL.


SELECT SINGLE QMNUM
FROM VBAK
INTO LV_QMNUM
WHERE VBELN EQ LV_VGBEL.
IF LV_QMNUM IS NOT INITIAL.
SELECT SINGLE EQUNR
FROM QMIH
INTO LV_EQUNR
WHERE QMNUM EQ LV_QMNUM.
SELECT

*
FROM CABN
INTO TABLE GT_CABN
WHERE ATNAM IN ('SPEED','CAPACITY').

IF SY-SUBRC = 0 AND GT_CABN IS NOT INITIAL.


SELECT *

FROM AUSP
INTO TABLE GT_AUSP
FOR ALL ENTRIES IN GT_CABN
WHERE OBJEK EQ LV_EQUNR
AND
ATINN EQ GT_CABN-ATINN.
ENDIF.
ENDIF.
ENDIF.

READ TABLE GT_CABN INTO GS_CABN WITH KEY ATNAM = 'SPEED'.


IF SY-SUBRC = 0.
READ TABLE GT_AUSP INTO GS_AUSP WITH KEY ATINN = GS_CABN-ATINN.
IF SY-SUBRC = 0.
GV_SPEED = GS_AUSP-ATWRT.
ENDIF.
SELECT MAX( BEGDA )
INTO (LV_SBEGIN)
FROM
ZCET_AMC_SPEED
WHERE BEGDA
<= VBAP-ZZAMC_DAT.
SELECT SINGLE *
FROM
INTO
WHERE
AND

ZCET_AMC_SPEED
GS_SPEED
SPEED <= GV_SPEED
BEGDA EQ LV_SBEGIN.

VBAP-ZZSFACTOR = GS_SPEED-SFACTOR.
ENDIF.

READ TABLE GT_CABN INTO GS_CABN WITH KEY ATNAM = 'CAPACITY'.


IF SY-SUBRC = 0.
READ TABLE GT_AUSP INTO GS_AUSP WITH KEY ATINN = GS_CABN-ATINN.
IF SY-SUBRC = 0.
GV_CAPACITY = GS_AUSP-ATWRT.
ENDIF.
SELECT MAX( BEGDA )
INTO (LV_CBEGIN)
FROM
ZCET_AMC_CPTY
WHERE BEGDA
<= VBAP-ZZAMC_DAT.
SELECT SINGLE *
FROM ZCET_AMC_CPTY
INTO GS_CAPACITY
WHERE AMC_CAPACITY <= GV_CAPACITY

AND

BEGDA EQ LV_CBEGIN.

VBAP-ZZCFACTOR = GS_CAPACITY-CFACTOR.
ENDIF.

*
REFRESH: GT_CETAMC.
*
CLEAR : GS_AMC_VARI,GS_AMC_VARI2.
*
*
SELECT *
*
FROM ZCET_AMC_VARI
*
INTO TABLE GT_CETAMC
*
WHERE VBELN EQ VBAP-VBELN
*
AND
POSNR EQ VBAP-POSNR.
*
* IF GT_AMC_VARI[] IS INITIAL.
*
LOOP AT GT_CETAMC INTO GS_CETAMC.
*
READ TABLE GT_AMC_VARI INTO GS_AMC_VARI2 WITH KEY VARI_S = GS_CETAMCVARI_S.
*
IF sy-subrc = 0.
*
MOVE-CORRESPONDING GS_CETAMC TO GS_AMC_VARI2.
***
MODIFY GT_AMC_VARI FROM GS_AMC_VARI INDEX TABCON1CURRENT_LINE. "( if line items add)
*
MODIFY
GT_AMC_VARI FROM GS_AMC_VARI2
*
TRANSPORTING VARI_P
*
WHERE VARI_S = GS_CETAMC-VARI_S
*
AND
VBELN = GS_CETAMC-VBELN
*
AND
POSNR = GS_CETAMC-POSNR.
*
*
ELSE.
*
*
MOVE-CORRESPONDING GS_CETAMC TO GS_AMC_VARI.
*
APPEND GS_AMC_VARI TO GT_AMC_VARI.
*
CLEAR : GS_AMC_VARI.
*
*
ENDIF.
*
CLEAR : GS_CETAMC,GS_AMC_VARI2.
*
ENDLOOP.
* ENDIF.
endmodule.
" ZZPREPARE_DISPLAYFIELD OUTPUT
*}

INSERT

*{
INSERT
EMDK902370
3
*&---------------------------------------------------------------------*
*&
Module ZZMOD_SETLINES OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*

module ZZMOD_SETLINES output.


DATA LV_LIN TYPE I.
DESCRIBE TABLE GT_AMC_VARI LINES LV_LIN.
TABCON1-LINES = LV_LIN + 100.
endmodule.
" ZZMOD_SETLINES
*}

OUTPUT

INSERT

*{
INSERT
EMDK902370
4
*&---------------------------------------------------------------------*
*&
Module ZZMOD_GRANDTOT OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module ZZMOD_GRANDTOT output.
CLEAR : GV_TOTSPEC,
GV_GRANDTOT.
* LOOP AT GT_AMC_VARI INTO GS_AMC_VARI.
*
GV_TOTSPEC = GV_TOTSPEC + GS_AMC_VARI-VARI_P.
* ENDLOOP.
*
GV_GRANDTOT = GV_TOTSPEC + VBAP-ZZNSTP_P.
VBAP-ZZTOTAL
= GV_TOTSPEC.
VBAP-ZZGRANDTOT = GV_GRANDTOT.
endmodule.
" ZZMOD_GRANDTOT
*}

OUTPUT

INSERT

*{
INSERT
EMDK902370
5
*&---------------------------------------------------------------------*
*&
Module ZZMOD_TABVISIBLITY OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module ZZMOD_TABVISIBLITY output.
IF

T180-TRTYP = 'H'
OR T180-TRTYP = 'V'.
IF vbak-auart = 'ZQC' OR
vbak-auart = 'ZQR' OR
vbak-auart = 'ZQT'.
LOOP AT SCREEN.
IF SCREEN-group4 = '011'.
SCREEN-INPUT = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

ELSE.
LOOP AT SCREEN.
IF SCREEN-group4 = '011'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF T180-TRTYP = 'A'.
LOOP AT SCREEN.
IF SCREEN-group4 = '011'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
endmodule.
*}

" ZZMOD_TABVISIBLITY

OUTPUT

INSERT

Include

MV45AIZZ

***INCLUDE MV45AIZZ .
************************************************************************
*
*
* This include is reserved for user modifications
*
*
*
* PAI Modules for sales document processing
*
*
*
* The name of modification modules should begin with 'ZZ'.
*
*
*
************************************************************************
*---------------------------------------------------------------------*
*
MODULE ZZEXAMPLE_CHECK
*
*---------------------------------------------------------------------*
*
text......................................
*
*---------------------------------------------------------------------*
*MODULE ZZEXAMPLE_CHECK.
*

...

*ENDMODULE.
*{
INSERT
EMDK902370
1
*&---------------------------------------------------------------------*
*&
Module ZZMODIFY_TABCON1 INPUT

*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module ZZMODIFY_TABCON1 input.
*BREAK abap1.
CLEAR : GS_AMC_VARI-VBELN,
GS_AMC_VARI-POSNR,
GS_AMC_VARI2.
GS_AMC_VARI-VBELN = VBAP-VBELN.
GS_AMC_VARI-POSNR = VBAP-POSNR.
**
*

READ TABLE GT_AMC_VARI INTO GS_AMC_VARI2 INDEX TABCON1-CURRENT_LINE.

READ TABLE GT_AMC_VARI INTO GS_AMC_VARI2 WITH KEY VARI_S = GS_AMC_VARIVARI_S.


IF sy-subrc = 0.
**
MODIFY GT_AMC_VARI FROM GS_AMC_VARI INDEX TABCON1CURRENT_LINE. "( if line items add)
MODIFY
GT_AMC_VARI FROM GS_AMC_VARI
TRANSPORTING VARI_P
WHERE VARI_S = GS_AMC_VARI-VARI_S
AND
VBELN = GS_AMC_VARI-VBELN
AND
POSNR = GS_AMC_VARI-POSNR.
ELSE.
APPEND GS_AMC_VARI TO GT_AMC_VARI.
ENDIF.
endmodule.
*}

" ZZMODIFY_TABCON1

INPUT

INSERT

Include

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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(5) Form USEREXIT_DELETE_DOCUMENT, Start
A
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(6) Form USEREXIT_DELETE_DOCUMENT, End
A
ENDFORM.
*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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(7) Form USEREXIT_FIELD_MODIFICATION, Start
A
* 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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(1) Form USEREXIT_FIELD_MODIFICATION, End
A
*$*$-Start: (1)--------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZVBAKKALSM.
"active version
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(8) Form USEREXIT_FIELD_MODIFICATION, End, Enhancement
ZVBAKKALSM, Start
A
*IF sy-uname = 'COR020' and vbak-vtweg = '02' and vbak-vkbur = 'AP01'.
* IF vbak-auart <> 'ZWCY'.
* vbak-kalsm = 'ZPAP01'.
* ENDIF.
*ENDIF.
*
*IF sy-uname = 'COR052' and vbak-vtweg = '02' and vbakvkbur = 'WB01' and vbak-vkgrp = 'WB1'.
* IF vbak-auart <> 'ZWCY'.
* vbak-kalsm = 'ZPWB01'.

* ENDIF.
*ENDIF.
*
*IF sy-uname = 'COR052' and vbak-vtweg = '02' and vbakvkbur = 'WB01' and vbak-vkgrp = 'OR1'.
* IF vbak-auart <> 'ZWCY'.
* vbak-kalsm = 'ZPOR01'.
* ENDIF.
*ENDIF.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(9) Form USEREXIT_FIELD_MODIFICATION, End, Enhancement
ZVBAKKALSM, End
A
ENDENHANCEMENT.
*$*$-End:
(1)--------------------------------------------------------------------------------$*$*
ENDFORM.
*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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(10) Form USEREXIT_MOVE_FIELD_TO_VBAK, Start
A
*

vbak-zzfield = xxxx-zzfield2.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(11) Form USEREXIT_MOVE_FIELD_TO_VBAK, End
A
ENDFORM.
*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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(12) Form USEREXIT_MOVE_FIELD_TO_VBAP, Start
A
*

VBAP-zzfield = xxxx-zzfield2.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(13) Form USEREXIT_MOVE_FIELD_TO_VBAP, End
A
ENDFORM.
*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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(14) Form USEREXIT_MOVE_FIELD_TO_VBEP, Start
A
*

VBEP-zzfield = xxxx-zzfield2.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(15) Form USEREXIT_MOVE_FIELD_TO_VBEP, End
A

ENDFORM.
*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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(16) Form USEREXIT_MOVE_FIELD_TO_VBKD, Start
A
*

VBKD-zzfield = xxxx-zzfield2.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(2) Form USEREXIT_MOVE_FIELD_TO_VBKD, End
A
*$*$-Start: (2)--------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZVBKD.
"active version
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(17) Form USEREXIT_MOVE_FIELD_TO_VBKD, End, Enhancemen
t ZVBKD, Start
A
* TATA Consultancy Services - Starts Here
* break sudharsan.
* Based on the entries in ZSDDETERMINE, account assignment group will be dete
rmined
TABLES: ZSDACCTDETERMINE.
IF SY-TCODE = 'VA41' OR SY-TCODE = 'VA42'.
IF VBKD-KTGRD = '01' OR VBKD-KTGRD = '02'.
SELECT SINGLE * FROM ZSDACCTDETERMINE
WHERE AUART = VBAK-AUART
AND VKORG = VBAK-VKORG
AND VTWEG = VBAK-VTWEG
AND SPART = VBAK-SPART.

IF sy-subrc = 0.
VBKD-KTGRD = ZSDACCTDETERMINE-KTGRD.
ENDIF.
ENDIF.
ENDIF.
*
*
*

IF SY-TCODE = 'VA41' AND VBAK-AUART = 'ZSC1'.


VBKD-KTGRD = '06'.
ENDIF.

* TATA Consultancy Services - Ends here


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(18) Form USEREXIT_MOVE_FIELD_TO_VBKD, End, Enhancemen
t ZVBKD, End
A
ENDENHANCEMENT.
*$*$-End:
(2)--------------------------------------------------------------------------------$*$*
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 BELEG_SICHERN
*
*
*
*---------------------------------------------------------------------*
FORM USEREXIT_NUMBER_RANGE USING US_RANGE_INTERN.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(19) Form USEREXIT_NUMBER_RANGE, Start
A
* Example: Numer range from TVAK like in standard
* US_RANGE_INTERN = TVAK-NUMKI.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(20) Form USEREXIT_NUMBER_RANGE, End
A
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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(21) Form USEREXIT_PRICING_PREPARE_TKOMK, Start
A
*

TKOMK-zzfield = xxxx-zzfield2.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(22) Form USEREXIT_PRICING_PREPARE_TKOMK, End
A
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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(23) Form USEREXIT_PRICING_PREPARE_TKOMP, Start
A
*

TKOMP-zzfield = xxxx-zzfield2.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(24) Form USEREXIT_PRICING_PREPARE_TKOMP, End
A
ENDFORM.

*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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(25) Form USEREXIT_READ_DOCUMENT, Start
A
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(26) Form USEREXIT_READ_DOCUMENT, End
A
ENDFORM.
*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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(3) Form USEREXIT_SAVE_DOCUMENT, Start
A
*$*$-Start: (3)--------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZSDE_CETAMC1.
"active version
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(27) Form USEREXIT_SAVE_DOCUMENT, Start, Enhancement Z
SDE_CETAMC1, Start
A
BREAK abap1.

**** To Push Values of Specifications to ZCET_AMC_VARI table. ***************


*
**
REFRESH : GT_CETAMC.
**
SELECT *
**
FROM ZCET_AMC_VARI
**
INTO TABLE GT_CETAMC
**
WHERE VBELN EQ VBAP-VBELN.
**
IF SY-SUBRC = 0.
*
DELETE FROM ZCET_AMC_VARI WHERE VBELN EQ VBAP-VBELN
*
AND POSNR EQ VBAP-POSNR.
**
DELETE ZCET_AMC_VARI FROM TABLE GT_CETAMC.
**
ENDIF.
*
*
CLEAR : GS_AMC_VARI2,GS_CETAMC.
*
REFRESH : GT_CETAMC.
*
LOOP AT GT_AMC_VARI INTO GS_AMC_VARI2.
*
MOVE-CORRESPONDING GS_AMC_VARI2 TO GS_CETAMC.
*
APPEND GS_CETAMC TO GT_CETAMC.
*
CLEAR : GS_CETAMC.
*
ENDLOOP.
*
* INSERT ZCET_AMC_VARI FROM TABLE GT_CETAMC.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(28) Form USEREXIT_SAVE_DOCUMENT, Start, Enhancement Z
SDE_CETAMC1, End
A
ENDENHANCEMENT.
*$*$-End:
(3)--------------------------------------------------------------------------------$*$*
* Example:
* CALL FUNCTION 'ZZ_EXAMPLE'
*
IN UPDATE TASK
*
EXPORTING
*
ZZTAB = ZZTAB.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(29) Form USEREXIT_SAVE_DOCUMENT, End
A
ENDFORM.
*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.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(4) Form USEREXIT_SAVE_DOCUMENT_PREPARE, Start
A
*$*$-Start: (4)--------------------------------------------------------------------------------$*$*
ENHANCEMENT 2 ZSDE_CETAMC1.
"active version
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(30) Form USEREXIT_SAVE_DOCUMENT_PREPARE, Start, Enhan
cement ZSDE_CETAMC1, Start
A
DATA : LT_KOMV TYPE STANDARD TABLE OF KOMV,
LS_KOMV TYPE
KOMV,
LT_XVBAP TYPE STANDARD TABLE OF VBAP,
LS_XVBAP TYPE
VBAP.
REFRESH : LT_KOMV , LT_XVBAP.
CLEAR
: LS_KOMV,LS_XVBAP.
LT_XVBAP[] = XVBAP[].
LT_KOMV[] = XKOMV[].
BREAK abap1.
LOOP AT LT_XVBAP INTO LS_XVBAP.
*
*

LOOP AT LT_KOMV INTO LS_KOMV WHERE KSCHL = 'ZCCS'


AND
KPOSN = LS_XVBAP-POSNR.
READ TABLE LT_KOMV INTO LS_KOMV WITH KEY KSCHL = 'ZCCS'
KPOSN = LS_XVBAP-POSNR.
IF SY-SUBRC = 0.
LS_KOMV-KBETR = VBAP-ZZGRANDTOT.
LS_KOMV-KBETR = LS_XVBAP-ZZGRANDTOT.
MODIFY

XKOMV FROM LS_KOMV


TRANSPORTING KBETR
WHERE KSCHL = 'ZCCS'
AND
KPOSN = LS_XVBAP-POSNR.

ENDIF.
CLEAR : LS_XVBAP.
ENDLOOP.

ENDLOOP.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(31) Form USEREXIT_SAVE_DOCUMENT_PREPARE, Start, Enhan
cement ZSDE_CETAMC1, End
A
ENDENHANCEMENT.
*$*$-End:
(4)--------------------------------------------------------------------------------$*$*

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(32) Form USEREXIT_SAVE_DOCUMENT_PREPARE, End
A
ENDFORM.
*eject
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""$"$\SE:(33) Include MV45AFZZ, End

S-ar putea să vă placă și