CALCULATING: PLEASE HELP!!!!!
If anyone can show me why I can't calculate I would be so happy. I do not know how to fix it.
Everything works fine. When I hit the calculate button I get 0.0. PLEASE SOMEONE HELP!!!!!!!!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Debug1Application
public static void main(String args[])
PropTax myCalc = new PropTax();
class PropTax extends JFrame implements ActionListener
// Computes property tax
// as 3.25% of property value
private JTextField propVal;
private JLabel title, countyName, prompt, taxBill;
private JButton calcButton;
public PropTax()
Container c = getContentPane();
c.setLayout(new FlowLayout());
title = new JLabel("Property Tax Calculator");
countyName = new JLabel("Opulent County");
calcButton = new JButton("Compute Tax");
prompt = new JLabel("Enter the value of your property");
taxBill = new JLabel("Your County Collector");
propVal = new JTextField(8);
c.add(title);
c.add(countyName);
c.add(prompt);
c.add(taxBill);
c.add(propVal);
c.add(calcButton);
propVal.setText("");
calcButton.addActionListener(this);
setSize(300,200);
setVisible(true);
public void actionPerformed(ActionEvent event)
CalcTax myCalcTax = new CalcTax ();
double value = Double.parseDouble(propVal.getText());
myCalcTax.calculate();
taxBill.setText("Property tax is $" + myCalcTax.getTax());
class CalcTax
final static double tax = 0.325;
static double pTax, value;
public static void calculate()
pTax = .325 * value;
public static double getTax()
return pTax;
}
You create a variable 'value' in action performed... nothing tells class CalcTax what that value is. Study my fixed snippet and you will see what went wrong. I have now passed 'value' to your calculate( double value ) method in class CalcTax.
public void actionPerformed(ActionEvent event) {
CalcTax myCalcTax = new CalcTax();
double value = Double.parseDouble(propVal.getText());
myCalcTax.calculate( value );
taxBill.setText("Property tax is $" + myCalcTax.getTax());
class CalcTax {
final static double tax = 0.325;
static double pTax;
public static void calculate( double value ) {
pTax = .325 * value;
public static double getTax() {
return pTax;
}
Similar Messages
-
How ix_sel is calculated? Jonathan Lewis please help
There is table TETRO, partitioned by column BSTATE, and subpartitioned by column C (not present below).
Also there is query:
SELECT *
FROM TETRO T
WHERE T.BOST = 'BB810'
and BSTATE = 'CLOSED'And there is global index IDX_1 on columns BOST, BSTATE.
The questions are following:
1. How in this case calculated ix_sel for the index above?
2. How calculated cardinality of index?
I think it is really one question.
Thie is excerpt from 10053:
QUERY BLOCK TEXT
SELECT *
FROM TETRO T
WHERE T.BOST = 'BB810'
and BSTATE = 'CLOSED'
QUERY BLOCK SIGNATURE
qb name was generated
signature (optimizer): qb_name=SEL$1 nbfros=1 flg=0
fro(0): flg=0 objn=789900 hint_alias="T"@"SEL$1"
SYSTEM STATISTICS INFORMATION
Using WORKLOAD Stats
CPUSPEED: 1033 millions instructions/sec
SREADTIM: 0 milliseconds
MREADTIM: 1 millisecons
MBRC: 12.000000 blocks
MAXTHR: -1 bytes/sec
SLAVETHR: -1 bytes/sec
BASE STATISTICAL INFORMATION
Table Stats::
Table: TETRO Alias: T Partition [7]
#Rows: 5689355 #Blks: 490747 AvgRowLen: 267.00
#Rows: 5689355 #Blks: 490747 AvgRowLen: 267.00
Index Stats::
Index: IDX_1 Col#: 7 9
LVLS: 3 #LB: 337246 #DK: 453 LB/K: 744.00 DB/K: 36878.00 CLUF: 16705760.00
Index: IDX_2 Col#: 7 PARTITION [7]
LVLS: 2 #LB: 28106 #DK: 2 LB/K: 14053.00 DB/K: 392101.00 CLUF: 784203.00
LVLS: 2 #LB: 28106 #DK: 2 LB/K: 14053.00 DB/K: 392101.00 CLUF: 784203.00
SINGLE TABLE ACCESS PATH
BEGIN Single Table Cardinality Estimation
Column (#7): BOST(VARCHAR2) Part#: 7
AvgLen: 7.00 NDV: 16 Nulls: 0 Density: 0.0625
Column (#7): BOST(VARCHAR2)
AvgLen: 7.00 NDV: 16 Nulls: 0 Density: 0.0625
Column (#9): BSTATE(VARCHAR2) Part#: 7
AvgLen: 6.00 NDV: 1 Nulls: 0 Density: 1
Column (#9): BSTATE(VARCHAR2)
AvgLen: 6.00 NDV: 1 Nulls: 0 Density: 1
Table: TETRO Alias: T
Card: Original: 5689355 Rounded: 355585 Computed: 355584.69 Non Adjusted: 355584.69
END Single Table Cardinality Estimation
Access Path: TableScan
Cost: 142335.78 Resp: 142335.78 Degree: 0
Cost_io: 122064.00 Cost_cpu: 5486476442
Resp_io: 122064.00 Resp_cpu: 5486476442
kkofmx: index filter:"T"."BSTATE"='CLOSED'
kkofmx: index filter:"T"."BSTATE"='CLOSED'
kkofmx: index filter:"T"."BOST"='BB810' AND "T"."BSTATE"='CLOSED'
kkofmx: index filter:"T"."BOST"='BB810' AND "T"."BSTATE"='CLOSED'
kkofmx: index filter:"T"."BSTATE"='CLOSED'
Access Path: index (AllEqRange)
Index: IDX_1
resc_io: 37627.00 resc_cpu: 351652199
ix_sel: 0.0022075 ix_sel_with_filters: 0.0022075
Cost: 38926.31 Resp: 38926.31 Degree: 1
Access Path: index (AllEqRange)
Index: IDX_2
resc_io: 50772.00 resc_cpu: 980748811
ix_sel: 0.0625 ix_sel_with_filters: 0.0625
Cost: 54395.73 Resp: 54395.73 Degree: 1
****** trying bitmap/domain indexes ******
****** finished trying bitmap/domain indexes ******
Best:: AccessPath: IndexRange Index: IDX_1
Cost: 38926.31 Degree: 1 Resp: 38926.31 Card: 355584.69 Bytes: 0
OPTIMIZER STATISTICS AND COMPUTATIONS
GENERAL PLANS
Considering cardinality-based initial join order.
Permutations for Starting Table :0
Join order[1]: TETRO[T]#0
Best so far: Table#: 0 cost: 38926.3068 card: 355584.6875 bytes: 94941195
(newjo-stop-1) k:0, spcnt:0, perm:1, maxperm:80000
Number of join permutations tried: 1
Final - First Rows Plan: Best join order: 1
Cost: 38926.3068 Degree: 1 Card: 355585.0000 Bytes: 94941195
Resc: 38926.3068 Resc_io: 37627.0000 Resc_cpu: 351652199
Resp: 38926.3068 Resp_io: 37627.0000 Resc_cpu: 351652199
kkoipt: Query block SEL$1 (#0)
Current SQL statement for this session:
explain plan for
SELECT *
FROM TETRO T
WHERE T.BOST = 'BB810'
and BSTATE = 'CLOSED'
============
Plan Table
============
------------------------------------------------------+-----------------------------------+---------------+
| Id | Operation | Name | Rows | Bytes | Cost | Time | Pstart| Pstop |
------------------------------------------------------+-----------------------------------+---------------+
| 0 | SELECT STATEMENT | | | | 38K | | | |
| 1 | TABLE ACCESS BY GLOBAL INDEX ROWID | TETRO | 347K | 91M | 38K | 00:00:11 | ROW LOCATION| ROW LOCATION|
| 2 | INDEX RANGE SCAN | IDX_1 | 12K | | 828 | 00:00:01 | | |
------------------------------------------------------+-----------------------------------+---------------+
Predicate Information:
2 - access("T"."BOST"='BB810' AND "BSTATE"='CLOSED')
I expected that ix_sel will equal density(BOST in parition 7) * density(BSTATE in parition 7) = 0.0625
And cardinality of index scan = ix_sal * num_rows(in parition 7) = 355K.
And I see this calculations in section Table
Table: TETRO Alias: T
Card: Original: 5689355 Rounded: 355585 Computed: 355584.69 Non Adjusted: 355584.69But why ix_sel(IDX_1) = 0.0022075 (instaed of 0.0625)?
And cardinality of index range scan is 12K instead of 355K ?Fathers, please help to understand following piece (10053 on the bottom of the page).
This similar case as above. The same tables and predicates.
But local index is used (forced by a hint).
select --+ index(t TETROBOSTMANAGEDBYCLOSEDSTATES)
from TETRO t
where BSTATE = 'CLOSED'
and BOST = 'BS277'Please notice, I force partition pruning using predicate BSTATE = 'CLOSED'.
And number of subpartitions is 13.
This index consists columns BOST(just a column), C (subpartition key), C1 (just a column)
So, in this case ix_sel and cardinality same as I expected to see w/o histograms.
Access Path: index (RangeScan)
Index: TETROBOSTMANAGEDBYCLOSEDSTATES
resc_io: 269487.00 resc_cpu: 1987916858
ix_sel: 0.0625 ix_sel_with_filters: 0.0625
Cost: 276832.08 Resp: 276832.08 Degree: 1
Best:: AccessPath: IndexRange Index: TETROBOSTMANAGEDBYCLOSEDSTATES
Cost: 276832.08 Degree: 1 Resp: 276832.08 Card: 355584.69 Bytes: 0But why final execution plan has another cardinality of index scan (31K)?
============
Plan Table
============
-----------------------------------------------------------------------------+-----------------------------------+---------------+
| Id | Operation | Name | Rows | Bytes | Cost | Time | Pstart| Pstop |
-----------------------------------------------------------------------------+-----------------------------------+---------------+
| 0 | SELECT STATEMENT | | | | 270K | | | |
| 1 | PARTITION RANGE SINGLE | | 347K | 91M | 270K | 00:01:13 | 8 | 8 |
| 2 | PARTITION LIST ALL | | 347K | 91M | 270K | 00:01:13 | 1 | 27 |
| 3 | TABLE ACCESS BY LOCAL INDEX ROWID | TETRO | 347K | 91M | 270K | 00:01:13 | 190 | 216 |
| 4 | INDEX RANGE SCAN | TETROBOSTMANAGEDBYCLOSEDSTATES| 31K | | 5844 | 00:00:02 | 190 | 216 |
-----------------------------------------------------------------------------+-----------------------------------+---------------+
Predicate Information:
3 - filter("BSTATE"='CLOSED')
4 - access("BOST"='BS277')
QUERY BLOCK TEXT
select --+ index(t TETROBOSTMANAGEDBYCLOSEDSTATES)
* from TETRO t where BSTATE = 'CLOSED' and BOST = 'BS277'
BASE STATISTICAL INFORMATION
Table Stats::
Table: TETRO Alias: T Partition [7]
#Rows: 5689355 #Blks: 490747 AvgRowLen: 267.00
#Rows: 5689355 #Blks: 490747 AvgRowLen: 267.00
Index Stats::
Index: TETROBOSTMANAGEDBYCLOSEDSTATES Col#: 7 11 25 PARTITION [7]
LVLS: 3 #LB: 87376 #DK: 3679167 LB/K: 1.00 DB/K: 1.00 CLUF: 4224354.00
LVLS: 3 #LB: 87376 #DK: 3679167 LB/K: 1.00 DB/K: 1.00 CLUF: 4224354.00
User hint to use this index
SINGLE TABLE ACCESS PATH
BEGIN Single Table Cardinality Estimation
Column (#9): BSTATE(VARCHAR2) Part#: 7
AvgLen: 6.00 NDV: 1 Nulls: 0 Density: 1
Column (#9): BSTATE(VARCHAR2)
AvgLen: 6.00 NDV: 1 Nulls: 0 Density: 1
Column (#7): BOST(VARCHAR2) Part#: 7
AvgLen: 7.00 NDV: 16 Nulls: 0 Density: 0.0625
Column (#7): BOST(VARCHAR2)
AvgLen: 7.00 NDV: 16 Nulls: 0 Density: 0.0625
Table: TETRO Alias: T
Card: Original: 5689355 Rounded: 355585 Computed: 355584.69 Non Adjusted: 355584.69
END Single Table Cardinality Estimation
Access Path: index (RangeScan)
Index: TETROBOSTMANAGEDBYCLOSEDSTATES
resc_io: 269487.00 resc_cpu: 1987916858
ix_sel: 0.0625 ix_sel_with_filters: 0.0625
Cost: 276832.08 Resp: 276832.08 Degree: 1
Best:: AccessPath: IndexRange Index: TETROBOSTMANAGEDBYCLOSEDSTATES
Cost: 276832.08 Degree: 1 Resp: 276832.08 Card: 355584.69 Bytes: 0
OPTIMIZER STATISTICS AND COMPUTATIONS
GENERAL PLANS
Considering cardinality-based initial join order.
Permutations for Starting Table :0
Join order[1]: TETRO[T]#0
Best so far: Table#: 0 cost: 276832.0812 card: 355584.6875 bytes: 94941195
(newjo-stop-1) k:0, spcnt:0, perm:1, maxperm:80000
============
Plan Table
============
-----------------------------------------------------------------------------+-----------------------------------+---------------+
| Id | Operation | Name | Rows | Bytes | Cost | Time | Pstart| Pstop |
-----------------------------------------------------------------------------+-----------------------------------+---------------+
| 0 | SELECT STATEMENT | | | | 270K | | | |
| 1 | PARTITION RANGE SINGLE | | 347K | 91M | 270K | 00:01:13 | 8 | 8 |
| 2 | PARTITION LIST ALL | | 347K | 91M | 270K | 00:01:13 | 1 | 27 |
| 3 | TABLE ACCESS BY LOCAL INDEX ROWID | TETRO | 347K | 91M | 270K | 00:01:13 | 190 | 216 |
| 4 | INDEX RANGE SCAN | TETROBOSTMANAGEDBYCLOSEDSTATES| 31K | | 5844 | 00:00:02 | 190 | 216 |
-----------------------------------------------------------------------------+-----------------------------------+---------------+
Predicate Information:
3 - filter("BSTATE"='CLOSED')
4 - access("BOST"='BS277') -
Please help me with this calculation script
Hello everyone.
I have 2 fields named A and B. FieldA is user-enter value and FieldB is calculated. I want to write a script that do the following:
If FieldA is more than or equal to $10000, then FieldB always is $1000, Else FieldB = FieldA * 10%.
I don't know about scripting; however, after hour of search through google, I wrote this one:
var tvar
If (tvar >= 10000)then deposit.value = 1000
else deposit.value = total.rawValue*0.01
endif
And when I try to run, it say "Invalid Property Set Operation, value doesn't have a default property."
I know my script is bad and over the place. Can anyone please help me with this problem ASAP. Thank you so much, I'm in your debt.
I used Adobe LiveCycle Designer to create a PDF file.Thank you for your response.
tvar = total
At first I wrote it like this:
If (total.rawValue >= 10000)then deposit.rawvalue = 1000
else deposit.rawvalue = total.rawValue*0.01
endif
then I get an error message "accessor 'Total.rawValue' is unknown"
Hic, I think my script is screwed. Can you help me start fresh :)
Thank again. -
Help with simple Javascript calculation please
Hello, I've created a form for my company that contains measurements in meters for shipping. I need to have the total of the measurement appear in the cube/M3 field. For example, 6.17*3.02*3.35 returns NaN - it should return 62.42. My fields are called Measure1Row and CubeM31Row. This field will also be calculated as a total which I had no problem setting up. Under simplified field notation I entered = Measure1Row and it didn't work. I also tried Measure1Row * 1. Can someone please help me out? Thanks so much!
Hi George,
I want the product of this measurement 6.17*3.02*3.35 (in meters) to appear in theCubeM31Row. There are only 2 fields that are affected by this calculation - Measurement and Cube/M3. The form fields are Qty, Commodity, Measurements, lbs, kgs and Cube/M31Row. The measurement appears in one field - the other fields contain calculations that match and produce the correct answer. Does that help? I'm stumped. -
Hello
I have a problem in calculating the apple id Can you help me please
I forgot answer security questions for your account How can knowledge
Please help
Please reply as soon as possible
I can not buy from camels Store
And the rest of the account balance $25
Message was edited by: lingo azamI think you mean App Store.
Rescue email address and how to reset Apple ID security questions -
Need help with date and time calculations please
Hello there.. Im stuck, and im hoping someone can help..
Working on a list to manage and track PTO. User completes PTO request form,
Fields
Name
Start Date (with time)
End Date (with time)
Total Number of Days/hours requested: (calculation)
Full Day: (Yes/No)
ok business need
user has the ability to request a certain number of hours as opposed to a full day.
After searching around on google. I found this calculation to help me figure out how many BUSINESS days being requested.
=IF(ISERROR(DATEDIF([Start Date],[End Date],"d")),"",(DATEDIF([Start Date],[End Date],"d"))+1-INT(DATEDIF([Start Date],[End Date],"d")/7)*2-IF((WEEKDAY([End Date])-WEEKDAY([Start Date]))<0,2,0)-IF(OR(AND(WEEKDAY([End
Date])=7,WEEKDAY([Start Date])=7),AND(WEEKDAY([End Date])=1,WEEKDAY([Start Date])=1)),1,0)-IF(AND(WEEKDAY([Start Date])=1,(WEEKDAY([End Date])-WEEKDAY([Start Date]))>0),1,0)-IF(AND(NOT(WEEKDAY([Start Date])=7),WEEKDAY([End Date])=7),1,0))
This works great as long as its a [Full Day]="YES", displays results in column labeled Number of days
now if [Full Day]="No", displays results in column labeled Number of Hours
BUT this is my issue (well part of it) it calcuate the correct number of hours.. but puts a "1" in "Number of Days" why.. dates have not changed.. I think Its something with the above calculation but I could be way off.
the end result is I need number of days to concat with number of hours
i.e 1 full day 4 hours 1.4
0 full day 5 hours 0.5
1 full day 0 hours 1.0
so that the total can be deducted via workflow.. from the remaining balance in a tracker. (seperate list)
Any angels out there??Posnera-
Try changing time zones and see if the travel itinerary times change.
Fred -
Please help in calculating average from random nos. generated
Actually i am new to LV and i don't understand e'thing pretty well. Can anyone please help me with this problem?
I have to construct a VI that displays a random no. once every sec., and then in the same VI, i am trying to compute the average of the last four nos. generated, i.e. the average is displayed only after 4 numbers have been generated, else the average displays zero.
Well, i was trying to get this, but so far what i have got is a VI that is generating average, but that is not what i need.
Thanks for any help.
CLEasiest would be to use "Mean PtByPt.vi" in the Analyze...Point by Point palette. It is most flexible, e.g. if you would want to change the averaging length in the future.
Alternatively, you could use shift registers initialized with NaN. I would prefer NaN over zero for incomplete samples, zero is not unique, it could be a legal value. See attached simple example (LabVIEW 7.1). Modify as needed.
LabVIEW Champion . Do more with less code and in less time .
Attachments:
Average4.vi 31 KB -
Ar aging report, need help urgent please help!
Hey All Gurus,
Im in a thick soup here. I am trying to do something like this -
if you see the selection screen i have rep and super rep, when a user enters a rep value --- it should use the same value to pull all open items for the super rep as well, since they are essentially the same. please help! this one needs to be done fast. i am pasting the code so that it will be easier ...
thanks a million!
*& Report ZFDOFW04_NEW
REPORT ZFDOFW04_NEW MESSAGE-ID FR
LINE-SIZE 132
LINE-COUNT 60.
*==================================================================
Program: ZFDOFW03 - Aged Trial Balance Report
This produces an Accounts Receivable Past Due Aging Report
in a more simplified/condensed format than the
SAP supplied aging report program - RFDOPR10.
This program is a modified copy of RFDOFW00, - a SAP
Future-Due Report.
This was a 'rush' job - program probably should be
rewritten someday not using logical databases as that
maybe why this runs so slowly!
Original: Feb 1997.
MAINTENANCE HISTORY:
NES071797 Copied from ZFDOFW03. Adding parameter for saeles rep.
JDEDERER - changed header text so it is differnet from ZFDORW03. 9/23
*TEXT SYMBOLS :
001 Open items per
002 O p e n
003 D u e o n
004 cc ba in total
005 until
006 Days until
007 Days over
008 Days
009 over
011 valid until........
012 Insurance limit.....
016 F u t u r e
017 + days
018 D u e
020 Last dunn.notice...
021 Dunning level....
030 S U M M A R Y S H E E T
031 =====================
050 Name Page
051 Burton Snowboard
SELECTION TEXTS:
SUMMEN Output totals only
TAGE1 Due date I until
TAGE2 Due date II until
TAGE3 Due date III until
TAGE4 Due date IV until
TABLES: T001, KNA1, KNB1, KNB5, BSID, BSEGA, RFPDO1, KNVP,
T014, "credit control areas JAM
KNVK, "cust master - contact partner JAM
T014T, "Credit control areas names
BKPF, "TONY ISSUE 4743
TVKO, "TONY ISSUE 4743
KNKK. "cust master - credit mgmt JAM
TYPES: BEGIN OF TOT_TYPE, "DEVK939546
BUKRS LIKE LFB1-BUKRS, "DEVK939546
GSBER LIKE BSIK-GSBER, "DEVK939546
KKBER LIKE BSID-KKBER,
RAST1 TYPE P, "DEVK939546
RAST2 TYPE P, "DEVK939546
RAST3 TYPE P, "DEVK939546
RAST4 TYPE P, "DEVK939546
RAST5 TYPE P, "DEVK939546
RAST6 TYPE P, "DEVK939546
RAST7 TYPE P, "DEVK939546
END OF TOT_TYPE, "DEVK939546
TOT_TAB TYPE TOT_TYPE OCCURS 0. "DEVK939546
CONSTANTS:
C_FALSE TYPE I VALUE 0, "JAM
C_TRUE TYPE I VALUE 1.
DATA: BEGIN OF GTAB OCCURS 1000,
SUPER(10) TYPE C, "TONYC
REP(10) TYPE C, "TONYC
FILKD(10), "tonyc show buying groups
LAND1 LIKE KNA1-LAND1,
GSBER LIKE BSIK-GSBER,
REGIO LIKE KNA1-REGIO,
NAME1 LIKE KNA1-NAME1,
NAME2 LIKE KNA1-NAME2,
ORT01 LIKE KNA1-ORT01,
TELF1 LIKE KNVK-TELF1, "telephone number JAM
CONT_NAME1 LIKE KNVK-NAME1, "contact name JAM
NAMEV LIKE KNVK-NAMEV, "contact name JAM
KUNNR LIKE KNA1-KUNNR, "TONYC
BUKRS LIKE LFB1-BUKRS, "TONYC
KKBER LIKE BSID-KKBER, "tonyc issue #2500
ZTERM LIKE KNB1-ZTERM, "tonyc issue #2500
KLIMK_TXT(22) TYPE C, "credit limit JAM
WAERS LIKE T014-WAERS, "currency JAM
SORT_GSB, "TONYC
RAST1 TYPE P,
RAST2 TYPE P,
RAST3 TYPE P,
RAST4 TYPE P,
RAST5 TYPE P,
RAST6 TYPE P,
RAST7 TYPE P,
T_IND,
END OF GTAB.
DATA HOLD_NAME(40).
DATA HOLD_BUKRS LIKE T001-BUKRS. "tonyc
DATA GOOD_SUPER_REP. "tonyc
DATA: HOLD_REP LIKE KNA1-KUNNR, "tonyc
SUPER_NAME LIKE KNA1-NAME1, "tonyc
REP_NAME LIKE KNA1-NAME1. "tonyc
DATA NAME_LENGTH(2) TYPE C. "tonyc
DATA BACKSLASH(3) VALUE ' / '. "tonyc
DATA REPS_INFO(70) TYPE C. "tonyc
DATA REPORT_TYPE(12) TYPE C.
DATA: C_CREDIT_ABTNR LIKE KNVK-ABTNR. "dept 003 = credit
DATA Z_HOLD_LIMIT(22) TYPE N. "tonyc issue#2216
DATA Z_DESCRIPTION(18). "tonyc issue#2216
DATA WRITE_TOTAL.
DATA HOLD_KLIMK LIKE KNKK-KLIMK.
DATA HOLD_KLIMK2(22) TYPE C.
DATA HOLD-CTLPC LIKE KNKK-CTLPC.
DATA HOLD-CTLPC-TEXT LIKE T691T-RTEXT.
DATA HOLD_ZTERM LIKE KNVV-ZTERM.
DATA TOTAL_RAST7 TYPE P.
DATA TOTAL_RAST2 TYPE P.
DATA TOTAL_RAST3 TYPE P.
DATA TOTAL_RAST4 TYPE P.
DATA TOTAL_RAST5 TYPE P.
DATA TOTAL_RAST6 TYPE P.
DATA TOTAL_RAST1 TYPE P.
DATA HOLD_BUKRS2 LIKE T001-BUKRS.
DATA HOLD_KKBER LIKE BSID-KKBER.
DATA HOLD_KKBER_DESC LIKE T014T-KKBTX.
DATA HOLD_KKBER_DESC2 LIKE T014T-KKBTX.
DATA HOLD_KUNNR2 LIKE KNA1-KUNNR.
DATA L_FIRST_DAY_OF_FISCAL LIKE SY-DATUM. "tonyc issue #3047
DATA: STAB TYPE TOT_TAB WITH HEADER LINE, "DEVK939546
RTOT TYPE TOT_TAB WITH HEADER LINE, "DEVK939546
STOT TYPE TOT_TAB WITH HEADER LINE, "DEVK939546
OP,
MAXMANDT LIKE DD_STIDA,
MAXMANST TYPE P,
SUMKLIMB TYPE P,
SUMVLIBB TYPE P,
VERZUG TYPE P,
OBAD TYPE P,
BLOCK_CNT TYPE P,
INTENS,
ONEBYTE(1) TYPE C,
TAGE1A LIKE RFPDO1-ALLGFAEL,
TAGE2A LIKE RFPDO1-ALLGFAEL,
TAGE3A LIKE RFPDO1-ALLGFAEL,
HOLD_KUNNR LIKE KNA1-KUNNR, "tonyc
HOLD_SUPER LIKE KNA1-KUNNR, "tonyc
HOLD_REP2 LIKE KNA1-KUNNR, "tonyc
SUPER_REP LIKE KNA1-KUNNR, "tonyc
TEMP_TELF1 LIKE KNA1-TELF1, "JAM
IT_T014 LIKE T014 OCCURS 0 WITH HEADER LINE, "JAM
G_KLIMK_TXT LIKE GTAB-KLIMK_TXT, "JAM
G_WAERS LIKE GTAB-WAERS, "JAM
G_CONT_NAME(50) TYPE C. "JA
DATA FILL_REP_INFO.
BC SUNILP 05/14/2007
DATA: BEGIN OF ITAB_VBRP OCCURS 0.
INCLUDE STRUCTURE VBRP.
DATA: END OF ITAB_VBRP.
DATA: T_PERC TYPE F,
SUM_NETWR LIKE VBRP-NETWR.
*DATA: GTAB_LINES LIKE GTAB OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF GTAB_LINES OCCURS 0.
INCLUDE STRUCTURE GTAB.
DATA: IND(1),
OBAD TYPE P.
DATA: END OF GTAB_LINES.
DATA: BEGIN OF ITAB_VBRP1 OCCURS 0,
VBELN LIKE VBRP-VBELN,
NETWR LIKE VBRP-NETWR,
ZZMREP LIKE VBRP-ZZMREP, "Super Rep
ZZLREP LIKE VBRP-ZZLREP, "Rep
PERC TYPE F,
END OF ITAB_VBRP1.
EC SUNILP 05/14/2007
BEGIN_OF_BLOCK 2.
PARAMETERS: REGIO LIKE KNA1-REGIO.
PARAMETERS: CONSOL AS CHECKBOX. "TONYC
PARAMETERS: P_KKBER AS CHECKBOX, "TONYC
P_CONV AS CHECKBOX. "tonyc issue #3047
PARAMETERS: SUMMEN LIKE RFPDO1-ALLGSUMM,
TAGE1 LIKE RFPDO1-ALLGFAEL DEFAULT '30',
TAGE2 LIKE RFPDO1-ALLGFAEL DEFAULT '60',
TAGE3 LIKE RFPDO1-ALLGFAEL DEFAULT '90',
TAGE4 LIKE RFPDO1-ALLGFAEL DEFAULT '120'.
END_OF_BLOCK 2.
BEGIN_OF_BLOCK 3.
SELECT-OPTIONS: P_SUPREP FOR KNVP-KUNNR, "Super REP "DEVK939546
P_REP FOR KNVP-KUNNR, "SALES REP "DEVK939546
P_VKORG FOR TVKO-VKORG, "TONYC ISSUE 4743
P_LOTKZ FOR BKPF-LOTKZ. "TONYC ISSUE 4743
END_OF_BLOCK 3.
INITIALIZATION. "JAM
PERFORM LOAD_T014. "JAM
refresh dd_augdt.
clear dd_augdt.
dd_augdt-option = 'EQ'.
dd_augdt-sign = 'I'.
dd_augdt-low = ' '.
append dd_augdt.
AT SELECTION-SCREEN.
IF CONSOL = 'X'.
IF NOT P_SUPREP[] IS INITIAL. "DEVK939546
MESSAGE E999 WITH 'Consolidated report not allowed w/ Super Rep'.
ENDIF.
ENDIF.
CHECK IF THE REP INFO IS ADDED OR NOT - VS
IF NOT P_SUPREP IS INITIAL OR"TONY ISSUE 4743
NOT P_REP IS INITIAL."TONY ISSUE 4743
FILL_REP_INFO = 'X'."TONY ISSUE 4743
ENDIF."TONY ISSUE 4743
START-OF-SELECTION.
get_frame_title 2.
add function module to track usage JD 10/13/98 *****
CALL FUNCTION 'Z_RUN_LOG'
EXCEPTIONS
OTHERS = 1.
*IF NOT P_SUPREP IS INITIAL AND NOT P_REP IS INITIAL.
P_SUPREP = ' '.
*ENDIF.
GET KNA1 FIELDS LAND1 REGIO KUNNR NAME1 NAME2 ORT01 TELF1. "JAM
new-page.
skip.
TEMP_TELF1 = KNA1-TELF1.
MAXMANDT = '19000101'.
MAXMANST = 0.
SUMVLIBB = 0.
PERFORM GET_CUST_CONTACT. "JAM
Check sales rep- NES071797
Get any valid record and exit.
IF NOT p_suprep[] IS INITIAL. "DEVK939546 "TONY ISSUE 4743 start
good_super_rep = ' '.
SELECT kunn2 INTO super_rep FROM knvp UP TO 1 ROWS
WHERE
kunnr = kna1-kunnr AND
parvw = 'ZS' AND
kunn2 IN p_suprep.
EXIT.
ENDSELECT.
IF sy-subrc = 0.
good_super_rep = 'X'.
gtab-super = super_rep.
super_rep = ' '.
ENDIF.
CHECK good_super_rep = 'X'.
SELECT kunn2 INTO gtab-rep FROM knvp UP TO 1 ROWS
WHERE
kunnr = kna1-kunnr AND
parvw = 'ZR' AND
kunn2 IN p_rep.
EXIT.
ENDSELECT.
CHECK sy-subrc = 0.
ELSEIF NOT p_rep[] IS INITIAL. "DEVK939546
SELECT kunn2 INTO gtab-rep FROM knvp UP TO 1 ROWS
WHERE
kunnr = kna1-kunnr AND
parvw = 'ZR' AND
kunn2 IN p_rep.
EXIT.
ENDSELECT.
CHECK sy-subrc = 0.
ENDIF. "TONY ISSUE 4743 end
GET KNB1 FIELDS BUKRS VLIBB ZTERM. "tonyc #2500
GTAB-BUKRS = KNB1-BUKRS.
GTAB-ZTERM = KNB1-ZTERM.
SUMVLIBB = SUMVLIBB + KNB1-VLIBB.
GET KNB5.
IF KNB5-MADAT > MAXMANDT.
MAXMANDT = KNB5-MADAT.
ENDIF.
IF KNB5-MAHNS > MAXMANST.
MAXMANST = KNB5-MAHNS.
ENDIF.
SUMKLIMB = SUMKLIMB + KLIMB.
GET BSID.
CHECK BSID-BSTAT = SPACE.
field was intended for Business Area, changed to use Currency
GTAB-GSBER = BSID-WAERS.
IF P_KKBER = 'X'. "TONYC ISSUE #2500
IF BSID-KKBER = ' '.
GTAB-KKBER = BSID-BUKRS.
ELSE.
GTAB-KKBER = BSID-KKBER. "TONYC ISSUE #2500
ENDIF.
ENDIF. "TONYC ISSUE #2500
SELECT SINGLE * FROM BKPF "TONY ISSUE 4743
WHERE BUKRS = BSID-BUKRS "TONY ISSUE 4743
AND BELNR = BSID-BELNR "TONY ISSUE 4743
AND GJAHR = BSID-GJAHR. "TONY ISSUE 4743
BC SUNILP 05/14/2007
IF BKPF-XREF2_HD IS NOT INITIAL.
CHECK BKPF-XREF2_HD IN P_SUPREP. "TONY ISSUE 4743
ELSE.
IF P_REP[] IS INITIAL.
REFRESH: ITAB_VBRP, ITAB_VBRP1.
IF NOT BKPF-XBLNR IS INITIAL.
SELECT * FROM VBRP INTO ITAB_VBRP WHERE VBELN = BKPF-XBLNR.
APPEND ITAB_VBRP. CLEAR ITAB_VBRP.
ENDSELECT.
CHECK ITAB_VBRP[] IS NOT INITIAL.
CLEAR: SUM_NETWR.
LOOP AT ITAB_VBRP.
CHECK ITAB_VBRP-ZZMREP IN P_SUPREP.
CHECK ITAB_VBRP-ZZLREP IN P_REP.
MOVE-CORRESPONDING ITAB_VBRP TO ITAB_VBRP1.
COLLECT: ITAB_VBRP1.
SUM_NETWR = SUM_NETWR + ITAB_VBRP-NETWR.
CLEAR ITAB_VBRP.
ENDLOOP.
CHECK ITAB_VBRP1[] IS NOT INITIAL.
LOOP AT ITAB_VBRP1.
CLEAR: T_PERC.
T_PERC = ( ITAB_VBRP1-NETWR / SUM_NETWR ).
ITAB_VBRP1-PERC = T_PERC.
MODIFY ITAB_VBRP1 INDEX SY-TABIX TRANSPORTING PERC.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
EC SUNILP 05/14/2007
IF FILL_REP_INFO = 'X'.
GTAB-SUPER = BKPF-XREF2_HD. "TONY ISSUE 4743 "MOVE THE CONTENTS OF XREF2_HD TO GTAB INTERNAL TABLE - VS
ENDIF.
BC SUNILP 05/14/2007
IF BKPF-XREF1_HD IS NOT INITIAL.
CHECK BKPF-XREF1_HD IN P_REP. "TONY ISSUE 4743 " ELSE MOVE THE CONTENTS OF - VS
ELSE.
REFRESH: ITAB_VBRP, ITAB_VBRP1.
IF NOT BKPF-XBLNR IS INITIAL.
SELECT * FROM VBRP INTO ITAB_VBRP WHERE VBELN = BKPF-XBLNR.
APPEND ITAB_VBRP. CLEAR ITAB_VBRP.
ENDSELECT.
CHECK ITAB_VBRP[] IS NOT INITIAL.
CLEAR: SUM_NETWR.
LOOP AT ITAB_VBRP.
CHECK ITAB_VBRP-ZZMREP IN P_SUPREP.
CHECK ITAB_VBRP-ZZLREP IN P_REP.
MOVE-CORRESPONDING ITAB_VBRP TO ITAB_VBRP1.
COLLECT: ITAB_VBRP1.
SUM_NETWR = SUM_NETWR + ITAB_VBRP-NETWR.
CLEAR ITAB_VBRP.
ENDLOOP.
CHECK ITAB_VBRP1[] IS NOT INITIAL.
LOOP AT ITAB_VBRP1.
CLEAR: T_PERC.
T_PERC = ( ITAB_VBRP1-NETWR / SUM_NETWR ).
ITAB_VBRP1-PERC = T_PERC.
MODIFY ITAB_VBRP1 INDEX SY-TABIX TRANSPORTING PERC.
ENDLOOP.
ENDIF.
ENDIF.
EC SUNILP 05/14/2007
IF FILL_REP_INFO = 'X'.
GTAB-REP = BKPF-XREF1_HD. "TONY ISSUE 4743
ENDIF.
CHECK BKPF-LOTKZ IN P_LOTKZ. "TONY ISSUE 4743
CHECK BKPF-BRNCH IN P_VKORG. "TONY ISSUE 4743
SELECT SINGLE FILKD INTO GTAB-FILKD FROM BSEG
WHERE BUKRS = BSID-BUKRS
AND BELNR = BSID-BELNR
AND GJAHR = BSID-GJAHR
AND BUZEI = BSID-BUZEI.
gtab-gsber = bsid-gsber.
get rep info for each bsid record
IF NOT P_SUPREP IS INITIAL. "tonyc
SELECT KUNNR FROM VBPA INTO HOLD_REP UP TO 1 ROWS "tonyc
WHERE VBELN = BSID-VBELN "tonyc
AND PARVW = 'ZR'. "tonyc
ENDSELECT. "tonyc
IF NOT P_REP IS INITIAL. "tonyc
CHECK HOLD_REP = P_REP. "tonyc
ENDIF. "tonyc
GTAB-REP = HOLD_REP. "tonyc
HOLD_REP = ' '. "tonyc
ENDIF. "tonyc
PERFORM GET_KNKK_INFO. "JAM
GTAB-KLIMK_TXT = G_KLIMK_TXT.
GTAB-WAERS = G_WAERS.
GTAB-LAND1 = KNA1-LAND1.
GTAB-REGIO = KNA1-REGIO.
GTAB-KUNNR = KNA1-KUNNR.
GTAB-NAME1 = KNA1-NAME1.
GTAB-NAME2 = KNA1-NAME2.
GTAB-ORT01 = KNA1-ORT01.
*if there is no phone number for the contact, pull the phone
*number from the sold-to
IF KNVK-TELF1 = ' '.
GTAB-TELF1 = TEMP_TELF1.
ELSE.
GTAB-TELF1 = KNVK-TELF1. "JAM
ENDIF.
GTAB-CONT_NAME1 = KNVK-NAME1.
GTAB-NAMEV = KNVK-NAMEV.
verzug = bsega-netdt - dd_stida.
VERZUG = DD_STIDA - BSEGA-NETDT. "days past due calculation
OP = 'X'.
GTAB-RAST2 = GTAB-RAST3 = GTAB-RAST4 = 0.
GTAB-RAST5 = GTAB-RAST6 = OBAD = GTAB-RAST7 = 0.
IF VERZUG LE 0. "future due
GTAB-RAST1 = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE1. "past due 1 to tage1 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST2 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE2. "past due tage1 to tage2 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST3 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE3. "past due tage2 to tage3 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST4 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG LE TAGE4. "past due tage3 to tage4 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST5 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ELSE.
IF VERZUG GT TAGE4. "past due > tage4 days
GTAB-RAST1 = BSEGA-WRSHB.
GTAB-RAST6 = BSEGA-WRSHB.
OBAD = BSEGA-WRSHB.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
GTAB-RAST7 = GTAB-RAST1 - OBAD.
stab = gtab.
MOVE-CORRESPONDING GTAB TO STAB.
BC SUNILP 05/15/2007
IF ITAB_VBRP1[] IS NOT INITIAL.
GTAB-T_IND = 'X'.
LOOP AT ITAB_VBRP1.
MOVE-CORRESPONDING GTAB TO GTAB_LINES.
GTAB_LINES-SORT_GSB = '1'.
GTAB_LINES-SUPER = ITAB_VBRP1-ZZMREP.
GTAB_LINES-REP = ITAB_VBRP1-ZZLREP.
GTAB_LINES-RAST1 = GTAB_LINES-RAST1 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST2 = GTAB_LINES-RAST2 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST3 = GTAB_LINES-RAST3 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST4 = GTAB_LINES-RAST4 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST5 = GTAB_LINES-RAST5 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST6 = GTAB_LINES-RAST6 * ITAB_VBRP1-PERC.
GTAB_LINES-RAST7 = GTAB_LINES-RAST7 * ITAB_VBRP1-PERC.
GTAB_LINES-OBAD = GTAB_LINES-OBAD * ITAB_VBRP1-PERC.
COLLECT: GTAB_LINES.
ENDLOOP.
ELSE.
MOVE-CORRESPONDING GTAB TO GTAB_LINES.
GTAB_LINES-T_IND = 'X'.
GTAB_LINES-SORT_GSB = '1'.
IF GTAB_LINES-SUPER IN P_SUPREP OR GTAB_LINES-REP IN P_REP.
COLLECT: GTAB_LINES.
ENDIF.
ENDIF.
EC SUNILP 05/15/2007
gtab-sort_gsb = stab-sort_gsb = '0'.
collect: gtab, stab.
gtab-gsber = stab-gsber = '****'.
GTAB-SORT_GSB = '1'.
IF REGIO = SPACE OR REGIO = GTAB-REGIO.
IF GTAB_LINES-SUPER IN P_SUPREP OR GTAB_LINES-REP IN P_REP.
COLLECT: GTAB, STAB.
ENDIF.
ENDIF.
END-OF-SELECTION.
TAGE1A = TAGE1 + 1.
TAGE2A = TAGE2 + 1.
TAGE3A = TAGE3 + 1.
IF SUMMEN = ' '.
sort gtab by bukrs land1 regio kunnr gsber sort_gsb.
sort gtab by bukrs land1 regio name1 kunnr gsber sort_gsb. "JAM
IF CONSOL = 'X'.
SORT GTAB BY LAND1 REGIO NAME1 KUNNR BUKRS KKBER GSBER SORT_GSB.
"TONYC
REPORT_TYPE = 'consolidated'.
ELSEIF NOT P_SUPREP[] IS INITIAL. "DEVK939546
SORT GTAB
BY SUPER REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
BC SUNILP 05/15/2007
SORT GTAB_LINES
BY SUPER REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
EC SUNILP 05/15/2007
REPORT_TYPE = 'super rep'.
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
ELSEIF NOT P_REP[] IS INITIAL. "DEVK939546
SORT GTAB "DEVK939546
BY REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
"DEVK939546
BC SUNILP 05/15/2007
SORT GTAB_LINES
BY REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
EC SUNILP 05/15/2007
REPORT_TYPE = 'rep'. "DEVK939546
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
ELSE.
SORT GTAB BY BUKRS KKBER LAND1 REGIO NAME1 KUNNR GSBER SORT_GSB.
BC SUNILP 05/15/2007
SORT GTAB_LINES BY BUKRS KKBER LAND1 REGIO NAME1 KUNNR GSBER SORT_GSB.
EC SUNILP 05/15/2007
REPORT_TYPE = 'regular'.
ENDIF.
BC SUNILP 05/15/2007
DELETE ADJACENT DUPLICATES FROM GTAB COMPARING BUKRS NAME1.
LOOP AT GTAB_LINES.
IF P_REP[] IS INITIAL.
IF GTAB_LINES-SUPER NOT IN P_SUPREP.
DELETE GTAB_LINES.
ENDIF.
ELSE.
IF GTAB_LINES-SUPER NOT IN P_SUPREP OR GTAB_LINES-REP NOT IN P_REP.
DELETE GTAB_LINES.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT GTAB.
READ TABLE GTAB_LINES WITH KEY BUKRS = GTAB-BUKRS
NAME1 = GTAB-NAME1.
IF SY-SUBRC NE '0'.
DELETE GTAB.
ENDIF.
ENDLOOP.
EC SUNILP 05/15/2007
LOOP AT GTAB.
MOVE GTAB-BUKRS TO T001-BUKRS. READ TABLE T001.
RESERVE 5 LINES.
CASE REPORT_TYPE.
WHEN 'regular'.
IF HOLD_BUKRS <> GTAB-BUKRS.
IF SY-TABIX > 1. "TONYC
NEW-PAGE. SKIP. "TONYC
ENDIF. "TONYC
ENDIF.
PERFORM WRITE_CUST_INFO. "TONYC
PERFORM WRITE_DETAIL.
hold_bukrs = gtab-bukrs. "tonyc
WHEN 'consolidated'.
IF HOLD_KUNNR <> GTAB-KUNNR. "TONYC
PERFORM WRITE_CUST_INFO. "TONYC
ENDIF. "TONYC
HOLD_KUNNR = GTAB-KUNNR. "TONYC
PERFORM WRITE_DETAIL.
WHEN 'super rep'.
IF GTAB-T_IND NE 'X'.
BC SUNILP 05/22/2007
READ TABLE GTAB_LINES WITH KEY BUKRS = GTAB-BUKRS
NAME1 = GTAB-NAME1.
EC SUNILP 05/22/2007
IF ( HOLD_SUPER <> GTAB_LINES-SUPER ) OR
( HOLD_REP2 <> GTAB_LINES-REP ).
NEW-PAGE.
PERFORM GET_AND_WRITE_SUPERINFO.
ENDIF.
HOLD_REP2 = GTAB_LINES-REP.
HOLD_SUPER = GTAB_LINES-SUPER.
IF HOLD_KUNNR <> GTAB-KUNNR. "TONYC
WRITE :/. "TONYC
ULINE. "TONYC
PERFORM WRITE_CUST_INFO. "TONYC
ENDIF. "TONYC
HOLD_KUNNR = GTAB-KUNNR. "TONYC
PERFORM WRITE_DETAIL. "TONYC
AT END OF REP. "DEVK939546
SKIP. "DEVK939546
RESERVE 7 LINES. "DEVK939546
FORMAT COLOR COL_TOTAL INTENSIFIED. "DEVK939546
WRITE: / 'Summary for Rep:', "DEVK939546
GTAB-REP, '/', REP_NAME, 132 ONEBYTE."DEVK939546
PERFORM WRITE_TOTS TABLES RTOT. "DEVK939546
REFRESH RTOT. "DEVK939546
ENDAT. "DEVK939546
AT END OF SUPER. "DEVK939546
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
NEW-PAGE. SKIP. "DEVK939546
FORMAT COLOR COL_TOTAL INTENSIFIED. "DEVK939546
WRITE: / 'Summary for Super Rep:', "DEVK939546
GTAB-SUPER, '/', SUPER_NAME, 132 ONEBYTE."DEVK939546
PERFORM WRITE_TOTS TABLES STOT. "DEVK939546
REFRESH STOT. "DEVK939546
ENDAT. "DEVK939546
ELSE.
LOOP AT GTAB_LINES WHERE BUKRS = GTAB-BUKRS
AND NAME1 = GTAB-NAME1.
IF ( HOLD_SUPER <> GTAB_LINES-SUPER ) OR
( HOLD_REP2 <> GTAB_LINES-REP ).
NEW-PAGE.
PERFORM GET_AND_WRITE_SUPERINFO.
ENDIF.
HOLD_REP2 = GTAB_LINES-REP.
HOLD_SUPER = GTAB_LINES-SUPER.
IF HOLD_KUNNR <> GTAB_LINES-KUNNR.
WRITE :/.
ULINE.
PERFORM WRITE_CUST_INFO.
ENDIF.
HOLD_KUNNR = GTAB_LINES-KUNNR.
PERFORM WRITE_DETAIL.
AT END OF REP.
SKIP.
RESERVE 7 LINES.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE: / 'Summary for Rep:',
GTAB_LINES-REP, '/', REP_NAME, 132 ONEBYTE.
PERFORM WRITE_TOTS TABLES RTOT.
REFRESH RTOT.
ENDAT.
AT END OF SUPER.
CLEAR STAB. "tonyc 03/06/2004
REFRESH STAB. "tonyc 03/06/2004
NEW-PAGE. SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE: / 'Summary for Super Rep:',
GTAB_LINES-SUPER, '/', SUPER_NAME, 132 ONEBYTE.
PERFORM WRITE_TOTS TABLES STOT.
REFRESH STOT.
ENDAT.
ENDLOOP.
ENDIF.
WHEN 'rep'. "DEVK939546
LOOP AT GTAB_LINES WHERE BUKRS = GTAB-BUKRS
AND NAME1 = GTAB-NAME1.
IF HOLD_REP2 <> GTAB_LINES-REP. "DEVK939546
NEW-PAGE. "DEVK939546
PERFORM GET_AND_WRITE_REPINFO. "DEVK939546
ENDIF. "DEVK939546
HOLD_REP2 = GTAB_LINES-REP. "DEVK939546
IF HOLD_KUNNR <> GTAB_LINES-KUNNR. "DEVK939546
WRITE :/. "DEVK939546
ULINE. "DEVK939546
PERFORM WRITE_CUST_INFO. "DEVK939546
ENDIF. "DEVK939546
HOLD_KUNNR = GTAB_LINES-KUNNR. "DEVK939546
PERFORM WRITE_DETAIL. "DEVK939546
AT END OF REP. "DEVK939546
SKIP. "DEVK939546
RESERVE 7 LINES. "DEVK939546
FORMAT COLOR COL_TOTAL INTENSIFIED. "DEVK939546
WRITE: / 'Summary for Rep:', "DEVK939546
GTAB_LINES-REP, '/', REP_NAME, 132 ONEBYTE."DEVK939546
PERFORM WRITE_TOTS TABLES RTOT. "DEVK939546
REFRESH RTOT. "DEVK939546
ENDAT. "DEVK939546
ENDLOOP.
ENDCASE.
ENDLOOP.
ENDIF.
OP = ' '.
REFRESH GTAB.
IF NOT REPORT_TYPE = 'super rep'.
ULINE.
ENDIF.
SKIP 1.
IF SUMMEN = ' '. "if 'output totals only' bypass new-page
NEW-PAGE. SKIP.
ENDIF.
WRITE: /25 TEXT-030, 132 ONEBYTE, /25 TEXT-031, 132 ONEBYTE.
PERFORM WRITE_TOTS TABLES STAB. "DEVK939546
TOP-OF-PAGE.
INTENS = SPACE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE: / SY-VLINE, 1 TEXT-001, DD_STIDA, 75 TEXT-051, 132 SY-VLINE.
ULINE.
WRITE: / SY-VLINE, 13 SY-VLINE, 30 SY-VLINE,
47 SY-VLINE, 58 TEXT-003, 81 SY-VLINE,
92 TEXT-003, 115 SY-VLINE, 118 TEXT-003, 132 SY-VLINE,
/ SY-VLINE, 02 TEXT-004, 13 SY-VLINE, TEXT-002,
30 SY-VLINE, 32 TEXT-018, 47 SY-VLINE,
50 '1', 54 TEXT-040, 57 TAGE1, 64 SY-VLINE, " 65 tage2,
67 TAGE1A, 72 TEXT-040, 75 TAGE2,
81 SY-VLINE, 83 TAGE2A, 89 TEXT-040, 91 TAGE3, 98 SY-VLINE,
101 TAGE3A, 107 TEXT-040, 110 TAGE4, 115 SY-VLINE,
117 TAGE4, 123 TEXT-017, 132 SY-VLINE.
ULINE.
SKIP 1.
SUMMARY.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
FORM write_tots *
--> PTAB *
FORM WRITE_TOTS TABLES PTAB TYPE TOT_TAB. "DEVK939546
CLEAR INTENS. "DEVK939546
FORMAT COLOR COL_HEADING INTENSIFIED OFF. "DEVK939546
IF P_CONV = 'X'. "tonyc issue #3047 begin
WRITE /4 TEXT-101.
WRITE: /4 TEXT-102,
50 TEXT-100.
ENDIF. "tonyc issue #3047 end
ULINE. "DEVK939546
SORT PTAB BY BUKRS GSBER. "DEVK939546
LOOP AT PTAB. "DEVK939546
IF SY-TABIX > 1.
WRITE_TOTAL = 'X'.
ENDIF.
MOVE PTAB-BUKRS TO T001-BUKRS. READ TABLE T001. "DEVK939546
MOVE PTAB-GSBER TO T001-WAERS. "DEVK939546
IF P_CONV = 'X'. "tonyc issue #3047 begin
PERFORM CONVERT_VALUES USING STAB-RAST1
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST2
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST3
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST4
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST5
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST6
STAB-GSBER.
PERFORM CONVERT_VALUES USING STAB-RAST7
STAB-GSBER.
ENDIF. "TOnyc issue #3047 end
MOVE-CORRESPONDING PTAB TO STAB.
COLLECT STAB.
IF P_KKBER = 'X'. "TONYC ISSUE #2500
CLEAR HOLD_KKBER_DESC2.
SELECT SINGLE KKBTX INTO HOLD_KKBER_DESC2 FROM T014T
WHERE KKBER = STAB-KKBER AND
SPRAS = 'E'.
IF SY-SUBRC <> '0'.
HOLD_KKBER_DESC2 = 'Undetermined'.
ENDIF.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 6 STAB-GSBER, HOLD_KKBER_DESC2, SY-VLINE.
ULINE.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
IF P_CONV = 'X'. "tonyc issue #3047 begin
T001-WAERS = 'USD'.
ENDIF. "tonyc issue #3047 end
WRITE: 13 STAB-RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) STAB-RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
HOLD_BUKRS2 = STAB-BUKRS. "TONYC ISSUE #2500
ULINE.
FORMAT COLOR OFF.
TOTAL_RAST1 = STAB-RAST1 + TOTAL_RAST1.
TOTAL_RAST2 = STAB-RAST2 + TOTAL_RAST2.
TOTAL_RAST3 = STAB-RAST3 + TOTAL_RAST3.
TOTAL_RAST4 = STAB-RAST4 + TOTAL_RAST4.
TOTAL_RAST5 = STAB-RAST5 + TOTAL_RAST5.
TOTAL_RAST6 = STAB-RAST6 + TOTAL_RAST6.
TOTAL_RAST7 = STAB-RAST7 + TOTAL_RAST7.
ELSE.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF. "DEVK939546
IF INTENS = SPACE. "DEVK939546
FORMAT COLOR COL_NORMAL INTENSIFIED OFF. "DEVK939546
INTENS = 'X'. "DEVK939546
ELSE. "DEVK939546
FORMAT COLOR COL_NORMAL INTENSIFIED ON. "DEVK939546
INTENS = SPACE. "DEVK939546
ENDIF. "DEVK939546
WRITE: / SY-VLINE, PTAB-BUKRS, PTAB-GSBER, SY-VLINE, "DEVK939546
(14) PTAB-RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
(14) PTAB-RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE."DEVK939546
TOTAL_RAST1 = STAB-RAST1 + TOTAL_RAST1.
TOTAL_RAST2 = STAB-RAST2 + TOTAL_RAST2.
TOTAL_RAST3 = STAB-RAST3 + TOTAL_RAST3.
TOTAL_RAST4 = STAB-RAST4 + TOTAL_RAST4.
TOTAL_RAST5 = STAB-RAST5 + TOTAL_RAST5.
TOTAL_RAST6 = STAB-RAST6 + TOTAL_RAST6.
TOTAL_RAST7 = STAB-RAST7 + TOTAL_RAST7.
ENDIF.
ENDLOOP. "DEVK939546
ULINE. "DEVK939546
IF P_KKBER = 'X'. "TONYC ISSUE #2500
IF P_CONV = 'X'. "tonyc issue #3047 begin
FORMAT COLOR OFF.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: SY-VLINE,
6 'TOTAL ', SY-VLINE.
ULINE.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 13 TOTAL_RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
ULINE.
ENDIF. "tonyc issue #3047 end
ELSE.
IF P_CONV = 'X'.
FORMAT COLOR OFF.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: SY-VLINE,
6 'TOTAL ', SY-VLINE.
ULINE.
FORMAT COLOR OFF.
WRITE: / SY-VLINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 13 TOTAL_RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
(14) TOTAL_RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
ULINE.
ENDIF.
ENDIF.
SKIP 1. "DEVK939546
ENDFORM. "DEVK939546
*& Form GET_KNKK_INFO
text
--> p1 text
<-- p2 text
FORM GET_KNKK_INFO.
CLEAR: G_WAERS,
G_KLIMK_TXT,
KNKK-KLIMK.
get credit control area (KKBER) for comp code (BUKRS)
SELECT SINGLE KLIMK
INTO KNKK-KLIMK
FROM KNKK
WHERE KUNNR = KNA1-KUNNR AND
KKBER = T001-KKBER.
IF SY-SUBRC = 0.
get currency for cred ctrl area
CLEAR IT_T014.
READ TABLE IT_T014 WITH KEY KKBER = T001-KKBER BINARY SEARCH.
G_WAERS = IT_T014-WAERS.
WRITE KNKK-KLIMK TO G_KLIMK_TXT CURRENCY G_WAERS.
ENDIF.
ENDFORM. " GET_KNKK_INFO
*& Form SELECT_KNKK
text
-->P_KKBER Credit Limit Controlling Area
<--P_FOUND_KNKK Indicates if record found
FORM SELECT_KNKK USING P_KKBER
CHANGING P_FOUND_KNKK.
CLEAR: G_WAERS,
G_KLIMK_TXT,
KNKK-KLIMK.
SELECT SINGLE KLIMK
INTO KNKK-KLIMK
FROM KNKK
WHERE KUNNR = KNA1-KUNNR AND
KKBER = P_KKBER.
IF SY-SUBRC = 0.
P_FOUND_KNKK = C_TRUE.
get currency for cred ctrl area
CLEAR IT_T014.
READ TABLE IT_T014 WITH KEY KKBER = P_KKBER BINARY SEARCH.
G_WAERS = IT_T014-WAERS.
WRITE KNKK-KLIMK TO G_KLIMK_TXT CURRENCY G_WAERS.
ELSE.
P_FOUND_KNKK = C_FALSE.
ENDIF.
ENDFORM. " SELECT_KNKK
*& Form GET_CUST_CONTACT & PHONE NUMBER
FORM GET_CUST_CONTACT.
CLEAR KNVK.
C_CREDIT_ABTNR = '0003'. "look for contact in credit dept
SELECT NAME1
NAMEV
TELF1
INTO (KNVK-NAME1,
KNVK-NAMEV,
KNVK-TELF1)
FROM KNVK
WHERE KUNNR = KNA1-KUNNR AND
ABTNR = C_CREDIT_ABTNR.
ENDSELECT.
If there wasn't a contact person for the credit dept, then just
pull up the first contact info we find regardless of dept
IF SY-SUBRC <> 0.
CLEAR KNVK.
SELECT NAME1
NAMEV
TELF1
INTO (KNVK-NAME1,
KNVK-NAMEV,
KNVK-TELF1)
FROM KNVK
WHERE KUNNR = KNA1-KUNNR.
IF SY-SUBRC = 0.
EXIT.
ENDIF.
ENDSELECT.
ELSE.
EXIT.
ENDIF. "not contact found in credit dept.
ENDFORM. " GET_CUST_CONTACT
*& Form LOAD_T014
FORM LOAD_T014.
SELECT *
INTO TABLE IT_T014
FROM T014.
SORT IT_T014.
ENDFORM. " LOAD_T014
*& Form WRITE_CUST_INFO "TONYC
text moved code and created a form. for cleaner code "TONYC
--> p1 text
<-- p2 text
FORM WRITE_CUST_INFO.
IF NOT REPORT_TYPE = 'super rep'.
IF SY-TABIX > 1.
ULINE.
ENDIF.
ENDIF.
CONCATENATE GTAB-NAMEV "JAM
GTAB-CONT_NAME1
INTO G_CONT_NAME
SEPARATED BY SPACE.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
IF REPORT_TYPE = 'super rep'.
IF GTAB-T_IND NE 'X'.
WRITE: / GTAB-KUNNR, GTAB-NAME1, GTAB-ORT01, GTAB-REGIO, GTAB-LAND1,
"g_cont_name,
132 ONEBYTE.
ELSE.
WRITE: / GTAB_LINES-KUNNR, GTAB_LINES-NAME1, GTAB_LINES-ORT01, GTAB_LINES-REGIO, GTAB_LINES-LAND1,
"g_cont_name,
132 ONEBYTE.
ENDIF.
WRITE: /21 onebyte, 12 gtab-name2, 45 gtab-ort01,
gtab-telf1, "gtab-klimk_txt, gtab-waers.
132 onebyte.
ELSE.
WRITE: / GTAB-KUNNR, GTAB-NAME1, GTAB-ORT01, GTAB-REGIO, GTAB-LAND1,
"g_cont_name, "JAM
132 ONEBYTE.
WRITE: /11 onebyte, 12 gtab-name2, 45 gtab-ort01,
gtab-telf1, "gtab-klimk_txt, gtab-waers, "JAM
132 onebyte.
ENDIF.
ENDFORM. " WRITE_CUST_INFO
*& Form GET_AND_WRITE_SUPERINFO
text
--> p1 text
<-- p2 text
FORM GET_AND_WRITE_SUPERINFO.
ULINE.
IF GTAB-T_IND NE 'X'.
SELECT SINGLE NAME1 FROM KNA1 INTO SUPER_NAME "TONYC
WHERE KUNNR = GTAB-SUPER. "TONYC
SELECT SINGLE NAME1 FROM KNA1 INTO REP_NAME "TONYC
WHERE KUNNR = GTAB-REP. "TONYC
CONCATENATE SUPER_NAME REP_NAME INTO REPS_INFO "TONYC
SEPARATED BY BACKSLASH. "TONYC
FORMAT COLOR COL_TOTAL INTENSIFIED. "TONYC
WRITE:/ GTAB-SUPER, '/', "TONYC
GTAB-REP, "TONYC
25 REPS_INFO, 132 ONEBYTE. "TONYC
ELSE.
SELECT SINGLE NAME1 FROM KNA1 INTO SUPER_NAME
WHERE KUNNR = GTAB_LINES-SUPER.
SELECT SINGLE NAME1 FROM KNA1 INTO REP_NAME
WHERE KUNNR = GTAB_LINES-REP.
CONCATENATE SUPER_NAME REP_NAME INTO REPS_INFO
SEPARATED BY BACKSLASH.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE:/ GTAB_LINES-SUPER, '/',
GTAB_LINES-REP,
25 REPS_INFO, 132 ONEBYTE.
ENDIF.
ENDFORM. " GET_AND_WRITE_SUPERINFO
*& Form GET_AND_WRITE_REPINFO
text
--> p1 text
<-- p2 text
FORM GET_AND_WRITE_REPINFO.
ULINE.
SELECT SINGLE NAME1 FROM KNA1 INTO REP_NAME
WHERE KUNNR = GTAB-REP.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE:/ GTAB-REP,
25 REP_NAME, 132 ONEBYTE.
ENDFORM. " GET_AND_WRITE_REPINFO
*& Form WRITE_DETAIL
text
--> p1 text
<-- p2 text
FORM WRITE_DETAIL.
clear z_description. "TONYC #2216
move GTAB-KLIMK_TXT to z_hold_limit.
IF z_hold_limit = 400.
z_description = 'COD/Check'.
elseif z_hold_limit = 500.
z_description = 'COD/Cash'.
elseif z_hold_limit = 600.
z_description = 'Need Dealer Agree'.
elseif z_hold_limit = 700.
z_description = 'Need PDCs'.
elseif z_hold_limit = 800.
z_description = 'Need Fin Statements'.
elseif z_hold_limit = 900.
z_description = 'Past Due Balance'.
elseif z_hold_limit = 1000.
z_description = 'Miracle?'.
endif. "TONYC #2216
MOVE GTAB-GSBER TO T001-WAERS.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
IF HOLD_KUNNR2 <> GTAB-KUNNR. "TONYC
IF REPORT_TYPE = 'super rep'.
WRITE: /3 ONEBYTE, GTAB-BUKRS.
WRITE: 92 gtab-klimk_txt, gtab-waers, 132 onebyte. "TONYC
WRITE: 92 gtab-klimk_txt, z_description,132 onebyte."TONYC #2500
ELSE.
WRITE: / ONEBYTE, GTAB-BUKRS.
WRITE: 92 gtab-klimk_txt, z_description,132 onebyte."TONYC #2500
WRITE: 92 gtab-klimk_txt, gtab-waers, 132 onebyte. "TONYC
ENDIF.
ENDIF.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
IF P_KKBER = 'X'. "TONYC ISSUE# 2500
CLEAR HOLD_KKBER_DESC.
SELECT SINGLE KKBTX INTO HOLD_KKBER_DESC FROM T014T
WHERE KKBER = GTAB-KKBER AND
SPRAS = 'E'.
IF SY-SUBRC <> '0'.
HOLD_KKBER_DESC = 'Undetermined'.
ENDIF.
SELECT SINGLE KLIMK CTLPC
INTO (HOLD_KLIMK, HOLD-CTLPC)
FROM KNKK
WHERE KUNNR = GTAB-KUNNR AND
KKBER = GTAB-KKBER.
SELECT SINGLE RTEXT INTO HOLD-CTLPC-TEXT FROM T691T
WHERE SPRAS = 'EN' AND
CTLPC = HOLD-CTLPC AND
KKBER = GTAB-KKBER.
WRITE HOLD_KLIMK TO HOLD_KLIMK2 CURRENCY GTAB-WAERS.
WRITE: /7 GTAB-KKBER,
12 HOLD_KKBER_DESC,
80 HOLD_KLIMK2,
103 GTAB-GSBER,
108 HOLD-CTLPC-TEXT.
ENDIF. "TONYC ISSUE# 2500
FORMAT COLOR COL_NORMAL INTENSIFIED ON. "TONYC
MOVE STAB-GSBER TO T001-WAERS.
CLEAR HOLD_NAME.
SELECT SINGLE NAME1 FROM KNA1 INTO HOLD_NAME
WHERE KUNNR = GTAB-FILKD.
WRITE: /15 GTAB-FILKD,
30 HOLD_NAME.
IF GTAB-T_IND NE 'X'.
WRITE: /15(14) GTAB-RAST1 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST7 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST2 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST3 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST4 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST5 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB-RAST6 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
132 ONEBYTE.
ELSE.
IF REPORT_TYPE NE 'super rep'.
LOOP AT GTAB_LINES WHERE KUNNR = GTAB-KUNNR.
WRITE: / GTAB_LINES-SUPER, ONEBYTE,
15(14) GTAB_LINES-RAST1 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST7 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST2 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST3 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST4 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST5 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST6 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
132 ONEBYTE.
ENDLOOP.
ELSE.
WRITE: / GTAB_LINES-SUPER, ONEBYTE,
15(14) GTAB_LINES-RAST1 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST7 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST2 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST3 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST4 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST5 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
(14) GTAB_LINES-RAST6 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
132 ONEBYTE.
ENDIF.
ENDIF.
HOLD_BUKRS = GTAB-BUKRS. "Tonyc
HOLD_KUNNR2 = GTAB-KUNNR. "TONYC
HOLD_KKBER = GTAB-KKBER. "TONYC ISSUE #2500
IF REPORT_TYPE = 'super rep' OR REPORT_TYPE = 'rep'. "DEVK939546
IF GTAB-T_IND NE 'X'.
MOVE-CORRESPONDING GTAB TO RTOT. "DEVK939546
COLLECT RTOT. "DEVK939546
ELSE.
MOVE-CORRESPONDING GTAB_LINES TO RTOT.
COLLECT RTOT.
ENDIF.
IF REPORT_TYPE = 'super rep'. "DEVK939546
IF GTAB-T_IND NE 'X'.
MOVE-CORRESPONDING GTAB TO STOT. "DEVK939546
COLLECT STOT. "DEVK939546
ELSE.
MOVE-CORRESPONDING GTAB_LINES TO STOT.
COLLECT STOT.
ENDIF.
ENDIF. "DEVK939546
ENDIF. "DEVK939546
ENDFORM. " WRITE_DETAIL
*& Form convert_values
text
-->P_STAB_RAST1 text
-->P_STAB_GSBER text
FORM CONVERT_VALUES USING P_STAB_RAST1 "tonyc issue #3047 begin
P_STAB-GSBER.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
DATE = SY-DATUM
FOREIGN_AMOUNT = P_STAB_RAST1
FOREIGN_CURRENCY = P_STAB-GSBER
LOCAL_CURRENCY = 'USD'
RATE = 0
TYPE_OF_RATE = 'M'
READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE =
FOREIGN_FACTOR =
LOCAL_AMOUNT = P_STAB_RAST1
LOCAL_FACTOR =
EXCHANGE_RATEX =
FIXED_RATE =
DERIVED_RATE_TYPE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " convert_valuessolved
-
Please Help me for creating BexReport.
HI Experts,
Please help me to create the below report.
< 5 days or less 6-10 days 11-15 days 16-20 days > 20 days
No of Orders 3 5 2 10 20
*** % 7.50% 20% 25% 50% 100%
where <5days or less is the count of age(present date - order on date) of the Orders which falls under respective bucket.
Thanks and regards
KPS Moorthy.space I< 5 days or less I 6-10 days I 11-15 days I 16-20 days I > 20 days
No of Orders I 3 I 5 I 2I 10 I 20
*** %I 7.50% I20% I25% I 50%I 100%I
i differenciated every column by "I".
Shanbhu: Thanks for Reply.
for AGE: if we do in backend start routine the time wen we execute the DTP that day date is taken for age calculation.But we want the age calculation as present date(time wen the report is executing)-Create on order date.
Thanks and regards\
KPS moorthy -
Please help me, i really need help.
Thanks a lot guys...
this is my error:
C:\Temp>java Lab2
Welcome!
This program computes the average, the
exams
The lowest acceptable score is 0 and th
Please enter the minimum allowable scor
Please enter the maximum allowable scor
Was Exam1taken?
Please Enter Y N or Q
y
Enter the Score for Exam1:
65
Was Exam2taken?
Please Enter Y N or Q
y
Enter the Score for Exam2:
32
Was Exam3taken?
Please Enter Y N or Q
y
Enter the Score for Exam3:
65
Was Exam4taken?
Please Enter Y N or Q
y
Enter the Score for Exam4:
32
Was Exam5taken?
Please Enter Y N or Q
y
Enter the Score for Exam5:
32
Score for Exam1 is:65
Score for Exam2 is:32
Score for Exam3 is:32
Score for Exam4 is:32
Score for Exam5 is:32
the Minimum is:0
the Maximum is:0
Can't compute the Average
Can't compute the Variance
Can't compute the Standard Deviation
this is my code:
// Lab2.java
// ICS 21 Fall 2002
// Read in scores for a student's exams, compute statistics on them, and print out
// the scores and statistics.
public class Lab2
// Create a manager for this task and put it to work
public static void main(String[] args)
ExamsManager taskManager = new ExamsManager();
taskManager.createResults();
// ExamsManager.java for Lab 2
// ICS 21 Fall 2002
// make these classes in the Java library available to this program.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.text.NumberFormat;
// ExamsManager creates managers and contains the tools (methods) they need to do their
// job: obtaining exam information, computing statistics and printing out that information
class ExamsManager
// INVALID_INT: special integer value to indicate that a non-integer
// was entered when an integer was requested. It's chosen so as not to
// conflict with other flags and valid integer values
public static final int INVALID_INT = -9999;
// valid user response constants:
public static final String YES = "Y"; // user responded "yes"
public static final String NO = "N"; // user responded "no"
public static final String EXIT_PROGRAM = "Q"; // user responded "leave the program NOW"
// INVALID_RESPONSE: special String value to indicate that something other than
// "Y", "N" or "X" was entered when said was required
public static final String INVALID_RESPONSE = "!";
// ABSOLUTE_MIN_SCORE and ABSOLUTE_MAX_SCORE represent the smallest
// minimum score and the largest maximum score allowed by the
// program. (The allowable minimum and maximum for one
// execution of the program may be different than these, but
// they must both lie within this range.)
public static final int ABSOLUTE_MIN_SCORE = 0;
public static final int ABSOLUTE_MAX_SCORE = 1000;
// The manager needs a place to store this student's exams
private OneStudentsWork thisWork;
// ...places to store the min and max scores allowed for these exams
private int minAllowedScore;
private int maxAllowedScore;
// ...and a place to hold input coming from the keyboard
BufferedReader console;
// -------------------- Constructor --------------------
// ExamsManager() make managers that delegate the major tasks of the program
public ExamsManager()
// -------------------- Processing methods --------------------
// createResults() is the "manager at work": it calls assistants to welcome the user,
// initializes things so we can read info from the keyboard,
// obtain the minimum and maximum allowed scores,
// obtain a student's work and comute the statistics on it and
// print out the scores and the statistics
public void createResults()
// *** YOUR CODE GOES HERE ***
printWelcomeMessage();
readyKeyboard();
obtainMinAndMaxAllowedScores();
obtainOneStudentsWork();
printResults();
// -------------------- User input methods --------------------
// readyKeyboard() sets up an input stream object 'console' connected to the keyboard
// so that what's typed can be read into the program and processed.
// Do not modify this code!
private void readyKeyboard()
console = new BufferedReader(new InputStreamReader(System.in));
// obtainMinAndMaxAllowedScores() asks the user to enter the minimum
// and maximum allowable scores for this execution of the program.
// Both the minimum and maximum allowable scores must be between
// ABSOLUTE_MIN_SCORE and ABSOLUTE_MAX_SCORE (inclusive). This
// method should continue to ask the user for a minimum until a
// valid one is entered (or EXIT_PROGRAM is entered), then continue
// to ask the user for a maximum until a valid one is entered. If
// the minimum entered is greater than the maximum entered, the
// whole thing should be done again.
public void obtainMinAndMaxAllowedScores()
// *** YOUR CODE GOES HERE ***
int response = INVALID_INT;
if (response >= minAllowedScore && response <= maxAllowedScore)
System.out.print("Please enter the minimum allowable score:");
response = getIntOrExit();
while (response > maxAllowedScore || response < minAllowedScore)
System.out.print("Please enter the minimum allowable score:");
response = getIntOrExit();
if (response <= ABSOLUTE_MAX_SCORE && response >= ABSOLUTE_MIN_SCORE)
System.out.print("Please enter the maximum allowable score:");
response = getIntOrExit();
while (response > ABSOLUTE_MAX_SCORE || response < ABSOLUTE_MIN_SCORE)
System.out.print("Please enter the maximum allowable score:");
response = getIntOrExit();
/*int response;
String allowedMin;
boolean done = true;
do
done = true;
System.out.print("Please enter the minimum allowable score:");
response = getIntOrExit();
allowedMin = getYNOrExit();
if(allowedMin == EXIT_PROGRAM)
System.exit(0);
else if (response >= ABSOLUTE_MIN_SCORE)
done = true;
else if (response >= ABSOLUTE_MAX_SCORE)
done = false;
System.out.println("INVALID: " + INVALID_INT);
System.out.print("Please enter the minimum allowable score:");
response = getIntOrExit();
}while (!done);
/* System.out.print("Please enter the maximum allowable score:");
response = getIntOrExit();
if (response <= ABSOLUTE_MAX_SCORE)
return response;
else if (response <= ABSOLUTE_MIN_SCORE)
response = INVALID_INT;
while (response == INVALID_INT)
System.out.print("Please enter the maximum allowable score:");
response = getIntOrExit();
do
done = true;
System.out.print("Please enter the minimum allowable score:");
response = getIntOrExit();
String allowedMax;
if(allowedMin == EXIT_PROGRAM)
System.exit(0);
if (response <= ABSOLUTE_MAX_SCORE)
done = true;
else if (response <= ABSOLUTE_MIN_SCORE)
done = false;
System.out.println("INVALID: " + INVALID_INT);
System.out.print("Please enter the maximum allowable score:");
response = getIntOrExit();
}while (!done);
// The overall strategy to building up a student work object is
// to have the student-bulding method call on the exam-building
// method, which calls upon user input methods to get exam info.
// Thus, user entered info is successively grouped together
// into bigger units to build the entire student information set.
// obtainOneStudentsWork() builds the five exams
// and constructs the student work object from them
private void obtainOneStudentsWork()
// *** YOUR CODE GOES HERE ***
int index = 1;
Exam exam1 = buildOneExam(index);
index = 2;
Exam exam2 = buildOneExam(index);
index = 3;
Exam exam3 = buildOneExam(index);
index = 4;
Exam exam4 = buildOneExam(index);
index = 5;
Exam exam5 = buildOneExam(index);
thisWork = new OneStudentsWork(exam1, exam2, exam3, exam4, exam5);
// buildOneExam(thisTest) reads the exam information for one exam and returns an
// Exam object constructed from this information. Uses obtainWasExamTaken() to
// determine if the exam was taken and obtainOneScore() to get the exam score, if needed.
private Exam buildOneExam(int thisTest)
// *** YOUR CODE GOES HERE ***
int score = 0;
if(obtainWasExamTaken(thisTest))
score = obtainOneScore(thisTest);
return new Exam(score);
else
return new Exam();
System.out.println("Enter score for exam1:");
Exam exam1 = new Exam(getIntOrExit());
System.out.println("Enter score for exam2:");
Exam exam2 = new Exam(getIntOrExit());
System.out.println("Enter score for exam3:");
Exam exam3 = new Exam(getIntOrExit());
System.out.println("Enter score for exam4:");
Exam exam4 = new Exam(getIntOrExit());
System.out.println("Enter score for exam5:");
Exam exam5 = new Exam(getIntOrExit());
// obtainWasExamTaken(thisTest) keeps asking the user whether 'thisTest' was taken
// (e.g., "Was exam 1 taken? Enter Y, N or Q", if thisTest equals 1)
// until s/he provides a valid response. If Q is entered, we leave the
// program immediately; if Y or N (yes or no), return true if yes, false if no
private boolean obtainWasExamTaken(int thisTest)
// *** YOUR CODE GOES HERE ***
String response = INVALID_RESPONSE;
System.out.println("Was Exam" + thisTest + "taken?");
while (response.equals(INVALID_RESPONSE))
System.out.println("Please Enter" + " " + YES + " " + NO + " " + "or" + " " + EXIT_PROGRAM);
response = getYNOrExit();
if (response.equals(YES))
return true;
else
return false;
// obtainOneScore(thisTest) keeps asking the user to enter a score for
// 'thisTest' (e.g., "Enter the score for exam 1", is thisTest equals 1)
// until s/he provides one within range or s/he tells us to exit the program.
private int obtainOneScore(int thisTest)
// *** YOUR CODE GOES HERE ***
int response = INVALID_INT;
if (response >= minAllowedScore && response <= maxAllowedScore);
System.out.println("Enter the Score for Exam" + thisTest + ":");
response = getIntOrExit();
while (response > ABSOLUTE_MAX_SCORE || response < ABSOLUTE_MIN_SCORE)
System.out.println("INVALID: " + INVALID_INT);
System.out.println("Please Enter again:");
response = getIntOrExit();
return response;
// scoreIsWithinRange() returns true if the given score is inside of
// the allowable range and false if it is out of range
private boolean scoreIsWithinRange(int score)
// *** YOUR CODE GOES HERE ***
if (score >= minAllowedScore && score <= maxAllowedScore)
return true;
else
return false;
// getYNQ() reads a String from the console and returns it
// if it is "Y" or "N" or exits the program if "Q" is entered;
// the method returns INVALID_RESPONSE if the response is other
// than"Y", "N" or "Q".
// Do not modify this code!
private String getYNOrExit()
String usersInput = INVALID_RESPONSE;
try
usersInput = console.readLine();
catch (IOException e)
// never happens with the keyboard...
usersInput = usersInput.toUpperCase();
if (usersInput.equals(EXIT_PROGRAM))
System.out.println("Leaving...");
System.exit(0);
if (usersInput.equals(YES) || usersInput.equals(NO))
return usersInput;
else
return INVALID_RESPONSE;
// getIntOrExit() reads an integer from the console and returns it.
// If the user types in "Q", the program exits. If an integer is entered,
// it is returned. If something that is not an integer (e.g. "Alex"), the
// program returns INVALID_INT
// Do not modify this code!
private int getIntOrExit()
String usersInput = "";
int theInteger = 0;
try
usersInput = console.readLine();
catch (IOException e)
// never happens with the keyboard...
// if the user wants to quit, bail out now!
if(usersInput.toUpperCase().equals(EXIT_PROGRAM))
System.out.println("Program halting at your request.");
System.exit(0);
// see if we have an integer
try
theInteger = Integer.parseInt(usersInput);
catch (NumberFormatException e)
// user's input was not an integer
return INVALID_INT;
return theInteger;
// -------------------- User output methods --------------------
// printWelcomeMessage() prints a welcome message to the user explaining
// what the program does and what it expects the user to do. In
// particular, it needs to tell the user the absolute lowest and
// highest acceptable exam scores
private void printWelcomeMessage()
// *** YOUR CODE GOES HERE ***
System.out.println("Welcome!");
System.out.println("This program computes the average, the variance, and the standard deviation of 5 exams");
System.out.println("The lowest acceptable score is 0 and the highest is 1000");
// printResults() prints all of the scores present, then prints the
// statistics about them. The statistics that can have factional parts
// -- average, variance and standard deviation -- should be printed with
// exactly three digits after the decimal point. If a statistic could not be
// computed, a message to that effect should print (NOT the "phony" value stored
// in the statistic to tell the program that the statistic could not be computed).
public void printResults()
// These statements create a NumberFormat object, which is part
// of the Java library. NumberFormat objects know how to take
// doubles and turn them into Strings, formatted in a particular
// way. First, you tell the NumberFormat object (nf) how you'd like
// the doubles to be formatted (in this case, with exactly 3
// digits after the decimal point). When printing a double you call
// format to format it -- e.g. nf.format(the-number-to-format)
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(3);
nf.setMaximumFractionDigits(3);
// *** YOUR CODE GOES HERE ***
System.out.println("Score for Exam1 is:" + thisWork.getExam1().getScore());
System.out.println("Score for Exam2 is:" + thisWork.getExam2().getScore());
System.out.println("Score for Exam3 is:" + thisWork.getExam3().getScore());
System.out.println("Score for Exam4 is:" + thisWork.getExam4().getScore());
System.out.println("Score for Exam5 is:" + thisWork.getExam5().getScore());
if (thisWork.getStatistics().getMinimum() == Statistics.CANT_COMPUTE_STATISTIC)
System.out.println("Can't compute the Minimum");
else
System.out.println("the Minimum is:" + thisWork.getStatistics().getMinimum());
if (thisWork.getStatistics().getMaximum() == Statistics.CANT_COMPUTE_STATISTIC)
System.out.println("Can't compute the Minimum");
else
System.out.println("the Maximum is:" + thisWork.getStatistics().getMaximum());
if (thisWork.getStatistics().getAverage() == Statistics.CANT_COMPUTE_STATISTIC)
System.out.println("Can't compute the Average");
else
System.out.println("the Average is:" + thisWork.getStatistics().getAverage());
if (thisWork.getStatistics().getVariance() == Statistics.CANT_COMPUTE_STATISTIC)
System.out.println("Can't compute the Variance");
else
System.out.println("the Variance is:" + thisWork.getStatistics().getVariance());
if (thisWork.getStatistics().getStandardDeviation() == Statistics.CANT_COMPUTE_STATISTIC)
System.out.println("Can't compute the Standard Deviation");
else
System.out.println("the Standard Deviation is:" + thisWork.getStatistics().getStandardDeviation());
// OneStudentsExams.java for Lab 2
// ICS 21 Fall 2002
// OneStudentsWork is the exams and the statistics computed from
// them that comprise one student's work
class OneStudentsWork
public static final int NUMBER_OF_EXAMS = 5;
// The student is offered five exams...
private Exam exam1;
private Exam exam2;
private Exam exam3;
private Exam exam4;
private Exam exam5;
// The statistics on those exams
Statistics studentStats;
// -------------------- Constructor --------------------
// Takes five constructed exam objects and store them for this student.
// Constructs a statistics object that holds the stats for these exams and
// store it in studentStats.
public OneStudentsWork(Exam test1, Exam test2, Exam test3, Exam test4, Exam test5)
// *** YOUR CODE GOES HERE ***
exam1 = test1;
exam2 = test2;
exam3 = test2;
exam4 = test4;
exam5 = test5;
studentStats = new Statistics(test1, test2, test3, test4, test5);
// -------------------- Accessor methods --------------------
// getExamX() methods make available ExamX
public Exam getExam1()
return exam1;
public Exam getExam2()
return exam2;
public Exam getExam3()
return exam3;
public Exam getExam4()
return exam4;
public Exam getExam5()
return exam5;
// getStatistics() makes available the Statistics object that is part of this student's work
public Statistics getStatistics()
return studentStats;
// Statistics.java for Lab 2
// ICS 21 Fall 2002
// A Statistics object stores the statistics for a group of Exams.
class Statistics
// This constant denotes a statistic that cannot be
// computed, such as an average of zero scores or a variance
// of one score.
public static final int CANT_COMPUTE_STATISTIC = -9999;
// The stats
private int minimum;
private int maximum;
private int numberOfExamsTaken;
private double average;
private double variance;
private double standardDeviation;
// -------------------- Constructor --------------------
// Calculates (initializes) the statistics, using passed-in exams.
// Note that the order of computing thst stats matters, as some
// stats use others; for instance, variance must be computed before
// standard deviation.
public Statistics(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
// *** YOUR CODE GOES HERE ***
calculateAverage(exam1,exam2,exam3,exam4,exam5);
calculateVariance(exam1,exam2,exam3,exam4,exam5);
calculateStandardDeviation(exam1,exam2,exam3,exam4,exam5);
// -------------------- Accessor methods --------------------
// getNumberOfExamsTaken() makes available the number of exams this student undertook
public int getNumberOfExamsTaken()
return numberOfExamsTaken;
// getMinimum() makes the minimum available
public int getMinimum()
return minimum;
// getMaximum() makes the maximum available
public int getMaximum()
return maximum;
// getAverage() makes the average available
public double getAverage()
return average;
// getVariance() make the variance available
public double getVariance()
return variance;
// getStandardDeviation() make the standard deviation available
public double getStandardDeviation()
return standardDeviation;
// -------------------- Statistics methods --------------------
// ---> Note: all statistics are to be computed using the number of exams taken
// calculateNumberOfExamsTaken() computes the number of tests the student took
// and stores the result in 'numberOfExamsTaken'
// (Note this statistic can always be computed.)
private void calculateNumberOfExamsTaken(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
// *** YOUR CODE GOES HERE ***
numberOfExamsTaken = OneStudentsWork.NUMBER_OF_EXAMS;
// calculateMinimum() sets 'minimum' to the minimum score of exams taken, or
// to CANT_COMPUTE_STATISTIC if a minimum can't be computed.
private void calculateMinimum(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
// *** YOUR CODE GOES HERE ***
/*min = exam1.getScore();
if (min > exam2.getScore())
min = exam2.getScore();
if (min > exam3.getScore())
min = exam3.getScore();
if (min > exam4.getScore())
min = exam4.getScore();
if (min > exam5.getScore())
min = exam5.getScore();
if(numberOfExamsTaken == 0)
minimum = CANT_COMPUTE_STATISTIC;
else if(numberOfExamsTaken == 1)
minimum = exam1.getScore();
else
minimum = exam1.getScore();
if(numberOfExamsTaken >= 2 && numberOfExamsTaken <= minimum)
minimum = exam2.getScore();
if(numberOfExamsTaken >= 3 && numberOfExamsTaken <= minimum)
minimum = exam3.getScore();
if(numberOfExamsTaken >= 4 && numberOfExamsTaken <= minimum)
minimum = exam4.getScore();
if(numberOfExamsTaken >= 5 && numberOfExamsTaken <= minimum)
minimum = exam5.getScore();
if (getMinimum() == ExamsManager.ABSOLUTE_MIN_SCORE)
minimum = exam1.getScore();
//exam1.getScore() = getMinimum();
else
exam1.getScore() = CANT_COMPUTE_STATISTIC;
// calculateMaximum() sets 'maximum' to the maximum score of exams taken, or
// to CANT_COMPUTE_STATISTIC if a maximum can't be computed.
private void calculateMaximum(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
// *** YOUR CODE GOES HERE ***
/*if (maximum == ExamsManager.ABSOLUTE_MAX_SCORE)
return true;
else
return CANT_COMPUTE_STATISTIC;*/
max = exam1.getScore();
if (max < exam2.getScore())
max = exam2.getScore();
if (max < exam3.getScore())
max = exam3.getScore();
if (max < exam4.getScore())
max = exam4.getScore();
if (max < exam5.getScore())
max = exam5.getScore();
if(numberOfExamsTaken == 0)
maximum = CANT_COMPUTE_STATISTIC;
else if(numberOfExamsTaken == 1)
maximum = exam1.getScore();
else
maximum = exam1.getScore();
if(numberOfExamsTaken >= 2 && numberOfExamsTaken >= maximum)
maximum = exam2.getScore();
if(numberOfExamsTaken >= 3 && numberOfExamsTaken >= maximum)
maximum = exam3.getScore();
if(numberOfExamsTaken >= 4 && numberOfExamsTaken >= maximum)
maximum = exam4.getScore();
if(numberOfExamsTaken >= 5 && numberOfExamsTaken >= maximum)
maximum = exam5.getScore();
// calculateAverage() computes the average of the scores for exams taken and
// stores the result in 'average'. Set to CANT_COMPUTE_STATISTIC if there
// are no tests taken.
private void calculateAverage(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
// *** YOUR CODE GOES HERE ***
if (numberOfExamsTaken == 5)
average = (exam1.getScore()+exam2.getScore()+exam3.getScore()+exam4.getScore()+exam5.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
else if (numberOfExamsTaken == 4)
average = (exam1.getScore()+exam2.getScore()+exam3.getScore()+exam4.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
else if (numberOfExamsTaken == 3)
average = (exam1.getScore()+exam2.getScore()+exam3.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
else if (numberOfExamsTaken == 2)
average = (exam1.getScore()+exam2.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
else if (numberOfExamsTaken == 1)
average = (exam1.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
else if (numberOfExamsTaken == 0)
average = CANT_COMPUTE_STATISTIC;
// calculateVariance() calculates the returns the variance of the
// scores for exams taken and stores it in 'variance'
// For a small set of data (such as this one), the formula for calculating variance is
// the sum of ((exam score - average) squared) for scores of exams taken
// divided by (the number of scores - 1)
// Set to CANT_COMPUTE_STATISTIC if there are fewer than two tests taken.
private void calculateVariance(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
// *** YOUR CODE GOES HERE ***
if (numberOfExamsTaken == 5)
variance = ((exam1.getScore()-average)*(exam1.getScore()-average)+(exam2.getScore()-average)*(exam2.getScore()-average)+(exam3.getScore()-average)*(exam3.getScore()-average)+(exam4.getScore()-average)*(exam4.getScore()-average)+(exam5.getScore()-average)*(exam5.getScore()-average))/4;
else if (numberOfExamsTaken == 4)
variance = ((exam1.getScore()-average)*(exam1.getScore()-average)+(exam2.getScore()-average)*(exam2.getScore()-average)+(exam3.getScore()-average)*(exam3.getScore()-average)+(exam4.getScore()-average)*(exam4.getScore()-average))/4;
else if (numberOfExamsTaken == 3)
variance = ((exam1.getScore()-average)*(exam1.getScore()-average)+(exam2.getScore()-average)*(exam2.getScore()-average)+(exam3.getScore()-average)*(exam3.getScore()-average))/4;
else if (numberOfExamsTaken == 2)
variance = ((exam1.getScore()-average)*(exam1.getScore()-average)+(exam2.getScore()-average)*(exam2.getScore()-average))/4;
else if (numberOfExamsTaken < 2)
variance = CANT_COMPUTE_STATISTIC;
// calculateStandardDeviation() calculates the standard
// deviation of the scores of taken exams and stores
// it in 'standardDeviation'
// The formula for calculating standard deviation is just
// the square root of the variance
private void calculateStandardDeviation(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
// *** YOUR CODE GOES HERE ***
if (variance == CANT_COMPUTE_STATISTIC)
standardDeviation = CANT_COMPUTE_STATISTIC;
else
standardDeviation = (Math.sqrt(variance));
// Exam.java for Lab 2
// ICS 21 Fall 2002
// An Exam object stores information about one exam
class Exam
private boolean examTaken; //was the exam taken? true for yes, false for no
private int score; //the exam's score; = 0 if test not taken
// -------------------- Constructors --------------------
// Construct a taken exam; it has score 's'
public Exam(int s)
score = s;
examTaken = true;
// Construct an exam not taken; it has a score of 0
public Exam()
score = 0;
examTaken = false;
// -------------------- Accessor methods --------------------
// Make the score of an exam available
public int getScore()
return score;
// Make available whether an exam was taken
public boolean wasTaken()
return examTaken;Your code is absolutely unreadable - even if someone was willing to
help, it's simply impossible. I do give you a few tips, though: If you
understand your code (i.e. if it really is YOUR code), you should be
able to realize that your minimum and maximum never get set (thus they
are both 0) and your exam 3 is set with the wrong value. SEE where
those should get set and figure out why they're not. Chances are you
are doing something to them that makes one 'if' fail or you just
erroneously assign a wrong variable! -
Error 500--Internal Server Error.PLEASE HELP .
hi,
I am using BEA weblogic server 9.0.i created a new domain named myproject.I have created directory mywebapp under applications dir.
i.e C:\bea\user_projects\domains\myproject\applications\mywebapp
I have placed my servlet class in :
C:\bea\user_projects\domains\myproject\applications\mywebapp\WEB-INF\classes\Mypackage
I deployed my apllication mywebapp using admin console.
when i run the program in the browser,i get this error:
Error 500--Internal Server Error
javax.servlet.ServletException: [HTTP:101249][weblogic.servlet.internal.WebAppServletContext@17e5fde - name: 'mywebapp', context-path: '/mywebapp']: Servlet class HelloServlet for servlet myHello could not be loaded because the requested class was not found in the classpath C:\bea\user_projects\domains\myproject\applications\mywebapp\WEB-INF\classes.
java.lang.ClassNotFoundException: HelloServlet.
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:497)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:234)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:2970)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1888)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1810)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1274)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:167)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:139)
what should i do?please help me.
byeyou are reason our error is slightly different is
Error 500--Internal Server Error
javax.servlet.ServletException: [HTTP:101249][ServletContext(id=21255917,name=BonusRoot,context-path=/BonusRoot)]: Servlet class Beans.BonusServlet for servlet BonusServlet could not be loaded because the requested class was not found in the classpath C:\bea\weblogic81\samples\domains\workshop\cgServer\.wlnotdelete\essai\war-ic.war.
java.lang.ClassNotFoundException: Beans.BonusServlet.
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:799)
at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:518)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:362)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6350)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
We have try with your proposition but we find the same error
we must request servlet??? because i've one
package Beans;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
public class BonusServlet extends HttpServlet {
CalcHome homecalc;
public void init(ServletConfig config) throws ServletException{
//Look up home interface
try {
InitialContext ctx = new InitialContext();
Object objref = ctx.lookup("calcs");
homecalc = (CalcHome)PortableRemoteObject.narrow(objref, CalcHome.class);
} catch (Exception NamingException) {
NamingException.printStackTrace();
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
String socsec = null;
int multiplier = 0;
double calc = 0.0;
PrintWriter out;
response.setContentType("text/html");
String title = "EJB Example";
out = response.getWriter();
out.println("<HTML><HEAD><TITLE>");
out.println(title);
out.println("</TITLE></HEAD><BODY>");
try{
Calc theCalculation;
//Retrieve Bonus and Social Security Information
String strMult =
request.getParameter("MULTIPLIER");
Integer integerMult = new Integer(strMult);
multiplier = integerMult.intValue();
socsec = request.getParameter("SOCSEC");
//Calculate bonus
double bonus = 100.00;
theCalculation = homecalc.create();
calc = theCalculation.calcBonus(multiplier, bonus);
}catch(Exception CreateException){
CreateException.printStackTrace();
//Display Data
out.println("<H1>Bonus Calculation</H1>");
out.println("<P>Soc Sec: " + socsec + "<P>");
out.println("<P>Multiplier: " + multiplier + "<P>");
out.println("<P>Bonus Amount: " + calc + "<P>");
out.println("</BODY></HTML>");
out.close();
public void destroy() {
System.out.println("Destroy");
}Help us please
Thanks -
Calling a method ---please help
Hi everyone, I'm new to the forums, and completely new to java,. I've been searching for hours (online and in books) on how to call a method while passing parameters. I still haven't figured it out. I'm sure it's really easy, but I need some help.
This program is for evaluating the quadratic formula. I can't seem to return x1 and x2 from lines 73 and 78 (labeled in code) from method quad to lines 39, 40, and 46. It will compile and run, but it will not display x1 and/or x2.
Please help, and thanks in advance.
Am I even close?
import java.util.*;
import java.lang.*;
import javax.swing.JOptionPane;
public class test
static Scanner console = new Scanner(System.in);
public static void main(String[] args)
//Declare variables
double a = 0;
double b = 0;
double c = 0;
double d = 0;
//Asking the user for input
inputA = JOptionPane.showInputDialog(null, "enter number for x^2");
inputB = JOptionPane.showInputDialog(null, "enter number for x";
inputC = JOptionPane.showInputDialog(null, "enter number for constant");
//Parsing string to double
a = Double.parseDouble(inputA);
b = Double.parseDouble(inputB);
c = Double.parseDouble(inputC);
//calculating discriminant
d = (Math.pow(b,2) - (4 * a * c));
//Checking to see if the discriminant is less than zero - has two imaginary roots
if (d < 0)
JOptionPane.showMessageDialog(null, "There are two imaginary roots.");
}//end checking to see if the discriminant is less than zero - has two imaginary roots
//calling method quad
if (d > 0)
quad(a, b, c, 1); //line 39
quad(a, b, c, 2); //line 40
JOptionPane.showMessageDialog(null, "There are two real roots. They are root 1 = "
+ x1 + " , and root 2 = " + x2 + ".");
else if (d == 0)
quad(a, b, c, 1); //line 46
JOptionPane.showMessageDialog(null, "There is a single (repeated) root. It is " + x1);
//starting method quad
public static double quad (double a, double b, double c, int n)
double d = 0; //value for d - discriminant
double x1 = 0; //value for x - solving for x
double x2 = 0; //value for -x - solving for negative x
//Checking if discriminant equals zero or is larger than zero
if (d == 0)
n = 1;
else
n = 2;
//Checking if n equals zero
if (n == 1)
x1 = ((-b) + (Math.sqrt((Math.pow(b,2))-(4 * a* c))) / (2 * a));
return x1; //line 73
else
x2 = ((-b) - (Math.sqrt((Math.pow(b,2))-(4 * a* c))) / (2 * a));
return x2; //line 78
}//end method quadMan, you guys/gals are great! You notice everything...I sure appreciate all the help so far. I've updated a few things, but I still can't get x1 in the method to pass the right input to line 39. For instance, if I set a=2, b=4, and c=-30, then x1 should = 3 and x2 should =-5, but both keep showing -5. They are always equal for some reason, even when they are not supposed to be.
I see what you were saying with d always equalling zero. I was looking in the main where it doesn't always = zero, but in the method it was always set to zero. Thanks...good eye!
num1 = quad(a, b, c, 1); //line 39
num2 = quad(a, b, c, 2); //line 40
JOptionPane.showMessageDialog(null, "There are two real roots. They are root 1 = "+ num1 + " , and root 2 = " + num2 + ".");I also added this to the method so d won't always = zero
d = (Math.pow(b,2) - (4 * a * c));I also have all of the variables declared at the top, but I forgot to copy and paste all of them and I updated the System.exit(0) to close the JOptionPane along with extra } 's to close the program correctly.
Again, thanks a bunch. -
ALV not showing all the rows! Please help!
Hi Experts,
I have webdynpro ALV report and I am using SALV_WD_TABLE as the reusable component. In component controller's WDDOINIT I have written the code for pulling teh data from R/3 table and binding it to ALV table.
In the view's WDDOMODIFYVIEW event I have written the following code to get subtotal and grand total of Qty column based on product column.
I have coded like this:
lr_field_settings ?= l_value.
lr_field = lr_field_settings->get_field( 'PRODUCT' ).
lr_field->if_salv_wd_sort~set_group_aggregation_allowed( ABAP_TRUE ).
lr_field->if_salv_wd_sort~create_sort_rule( ).
l_sortrule = lr_field->if_salv_wd_sort~GET_SORT_RULE( ).
l_sortrule->set_sort_order( if_salv_wd_c_sort=>sort_order_ascending ).
l_sortrule->set_group_aggregation( ABAP_TRUE ).
*...Aggregate Field PRODUCT
lr_field = lr_field_settings->get_field( 'QTY' ).
lr_field->if_salv_wd_aggr~create_aggr_rule( ).
lr_aggr_rule = lr_field->if_salv_wd_aggr~get_aggr_rule( ).
lr_aggr_rule->set_aggregation_type( if_salv_wd_c_aggregation=>aggrtype_total ).
It is working now but my ALV table is not showing all the rows. I have 6 products and it is showing from product 2. But it is calculating grand total and subtotal correctly. I am not able to see the first product row and subtotal for that. Even if I click on the ^ icon in the ALV table below it is not showing all the rows.
What could be the problem?
Please help
Thanks
Gopaldid you somehow manage to set the "first visible row" property on table object
to 2. Only thing I can think of that could cause this effect.
Cheers
Phil -
The Internet (firefox, safari) are loading VERY slow. At first I thought it was just my school's website acting up, but after talking to their technical support they had me delete cache and cookies, make sure all programs are updated including plug ins like adobe, flash plug in etc. All of these things didn't help when I did them. On my school's website the videos do not load completely so they are choppy when viewed. After finishing an activity it won't load my score, during activities the page constantly has errors. It was just this website that was slow to load but now it seems like any website I go to is very slow. I am wondering if the loading problem is contributed to the computers memory, or lack of. However, I am not expert when it comes to computers so I don't know how to figure out how much free disc space I have/memory etc. I'm wondering if this is the problem. I have increased my activity on this computer for school, including more documents, downloading etc. So do you think the slowness of the internet is contributed to the memory or disc space? I believe I have snow leopard. it is MAC OS X 10.6.8 with Memory: 2GB 1067 MHz DDR3. Please help! Thank you!
To find out how much space you have & what is left, open up Disk Utility/Machintosh HD/First Aid. The info will be at the bottom of the window.
Sluggish Finder - Bunch of icons on your desktop? An overcrowded desktop slows down your Mac.
Get rid of needless Finder calculations - Open a window in Finder/View/Show View Options: ensure "Calculate All Sizes" option is unchecked.
Internet related - It's likely that your broadband connection is the bottleneck. You can check your speed on http://www.speedtest.net to see how fast your connection is. If your web browser specifically performs slowly, quit and relaunch it.
If browser remains sluggish, empty its cache.
Safari/Empty Cache
Firefox/Preferences - select the Network tab of the Advanced preferences and click the "Clear Now" button in the "Offline Storage" area.
Application related - Launch "Activity Monitor" - Applications/Utilities - click the CPU heading and see what float to the top. If an application takes up a large chunk of CPU and won't let it go, it could be dragging down your Mac's performance. Quit it by clicking the Quit Process button at the top of the Activity Monitor window.
Too little ram - max out your ram.
Solution may be found if you search in the "More Like This" section over in the right column. -
Please help with File input!
This is my first time dealing with file I/O and need help figuring out the best way to read in data and store it for further manipulation. I have a file that contains an individual's salary, and 3 product ratings on each line, such as: 75000 01 05 09
What is the best way to store this data? I know how to use BufferedReader and how to tokenize each integer. I must write this program to deal with any number of lines in a file. There are three income brackets, and I must also be able to perform the following calculations:
a) For each income bracket, the average rating for each product
b) The number of persons in Income Bracket $50000-74000 that rates all three products with a score of 5 or higher.
c) The average rating for Product 2 by persons who rated Product 1 lower than Prodcut 3.
Thus far, I've written the following code to open the file and perform 2 reads to get the total number of lines (individuals) and the total number of inidividuals in each income bracket. It compiles, but I get a null pointed exception at StringTokenizer, for some reason.
Please help! Do I need to take lines in as arrays? (tried this, but don't understand how to get at individual data) Do I need to somehow create objects for each person (if so, how?). My reference text covers this area poorly. Thanks for all help.
import java.io.*;
import java.util.*;
public class Product_Survey
public static void main(String [] args)
int lineCount = 0;
int inc1total = 0;
int inc2total = 0;
int inc3total = 0;
String name = null;
System.out.println("Please enter income and product info file name: ");
Scanner keyboard = new Scanner(System.in);
name = keyboard.next();
File fileObject = new File(name);
while ((! fileObject.exists()) || ( ! fileObject.canRead()))
if( ! fileObject.exists())
System.out.println("No such file");
else
System.out.println("That file is not readable.");
System.out.println("Enter file name again:");
name = keyboard.next();
fileObject = new File(name);
try
BufferedReader inputStream = new BufferedReader(new FileReader(name));
String trash = "No trash yet";
while (trash != null)
trash = inputStream.readLine();
lineCount++;
inputStream.close();
catch(IOException e)
System.out.println("Problem reading from file.");
try
BufferedReader inputStream = new BufferedReader(new FileReader(name));
String trash = "No trash yet";
while (trash != null)
trash = inputStream.readLine();
StringTokenizer st = new StringTokenizer(trash);
int income = Integer.parseInt(st.nextToken());
if(income<50000)
inc1total++;
else if(income<75000)
inc2total++;
else if(income<100000)
inc3total++;
inputStream.close();
catch(IOException e)
System.out.println("Problem reading from file.");
}Try adding a print statement to see what is happening in your second read loop:
while (trash != null)
trash = inputStream.readLine();
System.out.println("trash = " + trash);
StringTokenizer st = new StringTokenizer(trash);Another way to read in a while loop:
while ((trash = inputStream.readLine()) != null)
Maybe you are looking for
-
How do i keep certain songs from being uploaded from my library to my ipod
how do i keep certain songs form being uploaded from itunes to my ipod the check button does nothing 30gig ipod Windows 98
-
Two Inventories on One Target (OUIinventories.add)
Hi everyone, i think i ran myself into a little setup problem doing this for the first time and could use some help. Here a brief overview of my configuration: - Oracle 10.2.0.3 (64Bit) installed on c:\oracle\product\10.2.0 (OraHome102) - Inventory D
-
Multiple Keynotes play at once???
Here is the situation. I support an art department. One of the profs wants to be able to play two keynotes at the same time on one computer through two projections systems at the same time. He wants to do compare/contrast of two images. Putting both
-
Updating the date column in oracle databse
hi, iam having date column called applicationdate in my oracle database. i will update this column by jsp.. when user enter the date value he clicks update then after that iam doing following things. String d = (String)req.getParamter("appdate"); ex:
-
Dreamweaver CS6 - New Feature - Fluid Grid Layouts
For those interested in what is coming in CS6, John Nack just posted a video on his blog to see about Fluid Grid Layouts: http://blogs.adobe.com/jnack/2012/04/sneak-peek-of-fluid-grid-layouts-in-dreamweaver-cs6.h tml