cancel
Showing results for 
Search instead for 
Did you mean: 

I want total and subtotal in scripts

Former Member
0 Kudos

Hi,

I want to print total and sub total in scripts.

Plz give me some idea how to write coding for that.

Thanks,

Giri

Accepted Solutions (1)

Accepted Solutions (1)

former_member673464
Active Contributor
0 Kudos

hii..

The SUMMING command is used for accumulating a total value for a program symbol. The command should be specified just once. Then, each time the specified program symbol is formatted, its current value is added into the total symbol. Several program symbols may all be added into a single total symbol.

Syntax:

/: SUMMING program_symbol INTO total_symbol

SAPscript cannot create the field for the total dynamically. The summing symbol used for totalling and the accompanying program symbol(s) must be declared with TABLES in the ABAP program. Otherwise, only zero is added. Declaring the symbol with the DATA statement is not sufficient (global data).

Summing and Carrying Forward is Incorrect

Assume that for a multiple-page invoice, you want to print the current total as carry forward amount or subtotal on the current page and on the subsequent page. However, the carry forward amount is incorrect or missing.

The following causes are possible:

You do not use program symbols with Dictionary reference for totalling.

You place the carry forward amount into the BOTTOM area. SAPscript processes the BOTTOM area at the beginning of a page; therefore it is not suited for carry forward amounts.

If you place the carry forwards amount into the TOP area of the main window on the subsequent page, the carry forward amount may be higher than it should be: This happens if the last part of text of the previous page does not fit onto the page, but the text is held together, for example, by a PROTECT command. In this case, a local text symbol must receive the carry forward amount.

You must place the carry forward amount on the current page into a window of type VAR. On the subsequent page, use a local text symbol to print the amount in the TOP area of the main window:

At the beginning of the form main text (before printing the first text element), define the amount variable and the total variable (both must be program symbols or Dictionary amount fields).

In the example below, we use the SUMMING command to determine that for each output of &SUMTAB-AMOUNT& the system automatically sums up the amount in the total variable &SUMTAB-TOTAL&. At the end of the page, &SUMTAB-TOTAL& contains the carry forward amount of the current page or the grand total, respectively.

In this example, we also define a local symbol &LASTPAGE& to print the grand total on the last page.

/: SUMMING &SUMTAB-AMOUNT& INTO &SUMTAB-TOTAL&

/: DEFINE &LASTPAGE& = ‘ ‘

At the end of the form main text (when printing the last text element of the main window), set the local textsymbol &LASTPAGE& to a different value, such as ‘X’:

/: DEFINE &LASTPAGE& = ‘X’

To print the carry forward amount in the TOP area of the subsequent page including the pre-text 'Carry forward' and a tab, we use the local text symbol &CARRY. The corresponding text element is also defined in the main window:

/E CARRY

  • &’Carry forward:,,’CARRY&

(CALL FUNCTION WRITE_FORM EXPORTING ELEMENT = ‘CARRY’

TYPE = ‘TOP’)

Define the carry forward window on the current page as type VAR and position it at the end of the main window of the page. Print the carry forward amount there and define the local text symbol &CARRY& to print the amount again in the TOP area of the subsequent page. Use the local text symbol &LASTPAGE& to print the grand total on the last page. The carry forward window then contains the following text (define it as paragraph T1 with tab):

/: IF &LASTPAGE& = ‘X’

T1 <H>Grand total:,,&SUMTAB-TOTAL&</>

/: ELSE

T1 <H>Carry forward:,,&SUMTAB-TOTAL&</>

/: DEFINE &CARRY& = &SUMTAB-TOTAL&

/: ENDIF

regards,

veeresh

Answers (2)

Answers (2)

former_member533584
Contributor
0 Kudos

Hi,

if u want to grand total for a variable w_salary

then define

SUMMING &W_SALARY& INTO &W_TOTAL& before the top.

means summing statement should be executed only once .

if you want page totals

then define

SUMMING &W_SALARY& INTO &W_TOTAL& in the top.

then summig stmt executed once per every page and get reseted to 0 after every page.and we get page totals.

.

regards,

ananth

Former Member
0 Kudos

Hi giri,

SAP Printer commands in SAPScripts

The command line in the editor must be as follows:

/: PRINT-CONTROL xxxxx

or

/: PRINT-CONTROL 'xxxxx'

where xxxxx stands for the five-character name of the print control.

Example:

/: PRINT-CONTROL ZM100

The complete printer command normally resides in the print control.

If characters belonging to the print command follow after the print control in the text (only useful for the HPL2 printer driver for PCL-5 printers), the text line following after the PRINT-CONTROL command should begin with an equals sign (=) in the format column.

Example:

/: PRINT-CONTROL SESCP = *c5G

If you do not use the equals sign, a space character is inserted between the print control SESCP and the character *c5G.

Different font on the same line

You can have different font on the same line by defining a character format.

For example B for bold text and U for Underline.

In your SAPScript apply like this :

<U>Underline Text</> <B>Bold Text</>

Print Footer notes only on the last page

Command to used in your sapscripts :-

/: IF &NEXTPAGE& EQ 0

whatever footer you want.

/: ENDIF

SAPscripts How to calculate Totals and Subtotals

I have some doubs in BDC and SMART FORMS. I want to change the material number using the transaction code MM02 through BDC.

In scripts and smartforms how to calculate totals and subtotals?

To calculate totals and sub totals in sap scripts you have to use subroutines.

Say if you have to add the unit price (KOMVD-KBERT) then in the main window whereever tat value is picked write this routine

/: DEFINE &TOT_PRICE&

/: PERFORM F_GET_PRICE IN PROGRAM <subroutine prog name> /:USING &KOMVD-KBERT& /:CHANGING &TOT_PRICE& /:ENDPERFORM

Then write the variable where ever you want it to be printed (mostly it will be in footer window)

Then create subroutine pool program and you have to write the code.

FORM F_GET_PRICE tables int_cond structure itcsy

outt_cond structure itcsy.

data : value type kbert.

statics value1 type kbert.

Read int_cond table index 1.

value = int_cond-value.

value1 = value1 + value.

Read outt_cond table index 1.

outt_cond-value = value1.

Modify outt_cond index 1.

ENDFORM.

I have given a rough outline, please be aware of the variable conversions as Int_cond-value and outt_cond-value are characters.

Rgds,

P.Naganjana Reddy