0% found this document useful (0 votes)
307 views23 pages

Use The Standard Program

This document contains code for customizing an SAP program for sales document processing. It includes modules for: 1. Preparing custom fields and default values before output 2. Setting the number of lines for a table control 3. Calculating grand totals after input 4. Enabling/disabling fields based on document type The modules modify screens, set field values, and perform calculations using data from various SAP tables. They are included in the standard SAP program to customize its processing of sales documents.

Uploaded by

sudhakp
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
307 views23 pages

Use The Standard Program

This document contains code for customizing an SAP program for sales document processing. It includes modules for: 1. Preparing custom fields and default values before output 2. Setting the number of lines for a table control 3. Calculating grand totals after input 4. Enabling/disabling fields based on document type The modules modify screens, set field values, and perform calculations using data from various SAP tables. They are included in the standard SAP program to customize its processing of sales documents.

Uploaded by

sudhakp
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 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

You might also like