Declare final
How can I declare a button as final?
I keep getting the following error:
local variable button is accessed from within inner class; needs to be declared final
Write "final JButton" instead of just "JButton"?
Similar Messages
-
Local variable needs to be declared final
This is the error code I am getting:
C:\javacode\Notepad>javac FinalProgram.java
FinalProgram.java:60: local variable textfield1 is accessed from within inner class; needs to be declared final
System.out.println("It is detected " + pressed +
textfield1);
^
1 error
Here is my code:
comments relevant to this topic are //ALL IN CAPS
import java.awt.*; //declare packages needed
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.JMenuBar;
public class FinalProgram extends JFrame
implements ActionListener {
static JFrame frame;
public void actionPerformed (ActionEvent e) {
String answer = (e.getActionCommand());
if (answer == "Get Data") {
JInternalFrame iFrame = new JInternalFrame("Get Data . ", false, true, false, false);
iFrame.setLayout(new GridLayout(8,2));
JLabel label1 = new JLabel("First Name");
JLabel label2 = new JLabel("Last Name");
JLabel label3 = new JLabel("Street");
JLabel label4 = new JLabel("City");
JLabel label5 = new JLabel("State");
JLabel label6 = new JLabel("Zip");
JLabel label7 = new JLabel("Phone");
JLabel label8 = new JLabel("Click Button to Submit Form -->");
JTextField textfield1 = new JTextField(10);
JTextField textfield2 = new JTextField(10);
JTextField textfield3 = new JTextField(10);
JTextField textfield4 = new JTextField(10);
JTextField textfield5 = new JTextField(10);
JTextField textfield6 = new JTextField(10);
JTextField textfield7 = new JTextField(10);
JButton button1 = new JButton("Submit Data");
//textfield1.addActionListener(this);
textfield1.addActionListener(this);
textfield2.addActionListener(this);
textfield3.addActionListener(this);
textfield4.addActionListener(this);
textfield5.addActionListener(this);
textfield6.addActionListener(this);
textfield7.addActionListener(this);
button1.addActionListener(new ActionListener() { //start button1.addActionListener
public void actionPerformed(ActionEvent a) { //start button1 actionPerformed
String pressed = ((JButton) a.getSource()).getText();
System.out.println("button press is detected " + pressed + textfield1); //THIS SYSTEM OUT PRINT IS A TEST, IT WORKS WHEN I DON'T HAVE THE "+ textfield1" PART, IT GIVES ME THE ERROR MESSAGE POSTED ABOVE ABOUT DECLARING IT FINAL.
I'M A BEGINNER, MY GOAL HERE, IN EASY ENGLISH, IS TO GRAB THE DATA FROM EACH TEXTFIELD AND STORE THEM IN VARIABLES, OR MORE IDEALLY IN AN ARRAY SO THAT THE REST OF MY CODE BELOW CAN WRITE THEM TO FILE, I'VE BEEN TRYING THE PAST FEW DAYS ON THIS EXPERIMENTING AND ANY SUGGESTIONS WOULD BE APPRECIATED
try {
String directoryName = "c:\\javacode\\Notepad";
String fileName = "program.txt";
File output = new File(directoryName,fileName);
output.createNewFile();
if (! output.isFile()) {
System.out.println("File creation of" + output.getPath() + "failed");
return;
BufferedWriter out = new BufferedWriter(new FileWriter(output.getPath(), true));
String[] text = {"This is the text that will be written. \r", //we pass an array, which holds the text to append to the file
"The text will be written to the file \r",
"in append mode. If the file does not \r",
"exist it will be created.\r"}; //WHAT YOU SEE HERE IS JUST A TEST, IN PLACE, I WOULD LIKE TO HAVE THE INFORMATION FOR MY TEXTFIELDS SO THAT I CAN PASS THEM THROUGH A FOR LOOP AS BELOW AND WRITE DATA FOR EACH OF THE TEXTFIELDS TO MY EXTERNAL TEXT FILE
for(int i = 0; i < text.length; i++) { //using the length of the text message we use out.Write() to write out the data. Notice that all of the code is placed into a try-catch block so we can check for any IOExceptions that occur
out.write(text[i] + "\n");
//Here I create the code to grab the actions(grab the text) from the textFields and store them into variables OR into an array
//after I have created my container to hold the information for my various textFields, then I want to create a for loop to go through each textField and write that information to a text file, separating each textField on its own line
out.close();
catch(IOException d) {
System.out.println("Error writing to file " + d);
} //end button1.addActionListener
} //end button1 actionPerformed
); //end actionListener statement
//textfield1.setSize(10, 10);
iFrame.add(label1);
iFrame.add(textfield1);
iFrame.add(label2);
iFrame.add(textfield2);
iFrame.add(label3);
iFrame.add(textfield3);
iFrame.add(label4);
iFrame.add(textfield4);
iFrame.add(label5);
iFrame.add(textfield5);
iFrame.add(label6);
iFrame.add(textfield6);
iFrame.add(label7);
iFrame.add(textfield7);
iFrame.add(label8);
iFrame.add(button1);
iFrame.setSize(200, 500);
iFrame.setVisible(true);
add(iFrame);
if (answer == "Display Data") {
JInternalFrame iFrame = new JInternalFrame("Display Data . ", false, true, false, false);
JTextArea text = new JTextArea();
JScrollPane scroller = new JScrollPane();
scroller.getViewport().add(text);
iFrame.getContentPane().add(scroller);
iFrame.setSize(200, 150);
iFrame.setVisible(true);
add(iFrame);
public FinalProgram() {
super ("Menu Example");
JMenuBar jmb = new JMenuBar();
JMenu file = new JMenu("Functions");
JMenuItem item;
file.add(item = new JMenuItem("Get Data"));
item.addActionListener (this);
file.add(item = new JMenuItem("Display Data"));
item.addActionListener (this);
jmb.add(file);
addWindowListener(new ExitListener());
setJMenuBar (jmb);
public static void main(String[] args) {
FinalProgram window = new FinalProgram();
window.setTitle("Final Program");
window.setSize(600, 600);
window.setVisible(true);
}hi,
Updated Code,
import java.awt.*; //declare packages needed
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.JMenuBar;
public class FinalProgram extends JFrame
implements ActionListener {
static JFrame frame;
JLabel label1 = new JLabel("First Name");
JLabel label2 = new JLabel("Last Name");
JLabel label3 = new JLabel("Street");
JLabel label4 = new JLabel("City");
JLabel label5 = new JLabel("State");
JLabel label6 = new JLabel("Zip");
JLabel label7 = new JLabel("Phone");
JLabel label8 = new JLabel("Click Button to Submit Form -->");
JTextField textfield1 = new JTextField(10);
JTextField textfield2 = new JTextField(10);
JTextField textfield3 = new JTextField(10);
JTextField textfield4 = new JTextField(10);
JTextField textfield5 = new JTextField(10);
JTextField textfield6 = new JTextField(10);
JTextField textfield7 = new JTextField(10);
JButton button1 = new JButton("Submit Data");
public void actionPerformed (ActionEvent e) {
String answer = (e.getActionCommand());
if (answer == "Get Data") {
JInternalFrame iFrame = new JInternalFrame("Get Data . ", false, true, false, false);
iFrame.setLayout(new GridLayout(8,2));
//textfield1.addActionListener(this);
textfield1.addActionListener(this);
textfield2.addActionListener(this);
textfield3.addActionListener(this);
textfield4.addActionListener(this);
textfield5.addActionListener(this);
textfield6.addActionListener(this);
textfield7.addActionListener(this);
button1.addActionListener(new ActionListener() { //start button1.addActionListener
public void actionPerformed(ActionEvent a) { //start button1 actionPerformed
String pressed = ((JButton) a.getSource()).getText();
System.out.println("button press is detected " + pressed + textfield1.getText());
try {
String directoryName = "c:\\javacode\\Notepad";
String fileName = "program.txt";
File output = new File(directoryName,fileName);
output.createNewFile();
if (! output.isFile()) {
System.out.println("File creation of" + output.getPath() + "failed");
return;
BufferedWriter out = new BufferedWriter(new FileWriter(output.getPath(), true));
String[] text = {"This is the text that will be written. \r", //we pass an array, which holds the text to append to the file
"The text will be written to the file \r",
"in append mode. If the file does not \r",
"exist it will be created.\r"}; //WHAT YOU SEE HERE IS JUST A TEST, IN PLACE, I WOULD LIKE TO HAVE THE INFORMATION FOR MY TEXTFIELDS SO THAT I CAN PASS THEM THROUGH A FOR LOOP AS BELOW AND WRITE DATA FOR EACH OF THE TEXTFIELDS TO MY EXTERNAL TEXT FILE
for(int i = 0; i < text.length; i++) { //using the length of the text message we use out.Write() to write out the data. Notice that all of the code is placed into a try-catch block so we can check for any IOExceptions that occur
out.write(text[i] + "\n");
//Here I create the code to grab the actions(grab the text) from the textFields and store them into variables OR into an array
//after I have created my container to hold the information for my various textFields, then I want to create a for loop to go through each textField and write that information to a text file, separating each textField on its own line
out.close();
catch(IOException d) {
System.out.println("Error writing to file " + d);
} //end button1.addActionListener
} //end button1 actionPerformed
); //end actionListener statement
//textfield1.setSize(10, 10);
iFrame.add(label1);
iFrame.add(textfield1);
iFrame.add(label2);
iFrame.add(textfield2);
iFrame.add(label3);
iFrame.add(textfield3);
iFrame.add(label4);
iFrame.add(textfield4);
iFrame.add(label5);
iFrame.add(textfield5);
iFrame.add(label6);
iFrame.add(textfield6);
iFrame.add(label7);
iFrame.add(textfield7);
iFrame.add(label8);
iFrame.add(button1);
iFrame.setSize(200, 500);
iFrame.setVisible(true);
add(iFrame);
if (answer == "Display Data") {
JInternalFrame iFrame = new JInternalFrame("Display Data . ", false, true, false, false);
JTextArea text = new JTextArea();
JScrollPane scroller = new JScrollPane();
scroller.getViewport().add(text);
iFrame.getContentPane().add(scroller);
iFrame.setSize(200, 150);
iFrame.setVisible(true);
add(iFrame);
public FinalProgram() {
super ("Menu Example");
JMenuBar jmb = new JMenuBar();
JMenu file = new JMenu("Functions");
JMenuItem item;
file.add(item = new JMenuItem("Get Data"));
item.addActionListener (this);
file.add(item = new JMenuItem("Display Data"));
item.addActionListener (this);
jmb.add(file);
addWindowListener(new ExitListener());
setJMenuBar (jmb);
public static void main(String[] args) {
FinalProgram window = new FinalProgram();
window.setTitle("Final Program");
window.setSize(600, 600);
window.setVisible(true);
class ExitListener extends WindowAdapter {
public void windowClosing(WindowEvent event) {
System.exit(0);
} -
JTextArea formatting when declared final
Hi all,
I have a JTextArea which is inside an infinte loop and has to be declared final for it to update on demand.
My quetion is how can I change the font and style of text when it is declared final? nothing seems to work.
Any ideas?
Thanks a lot,
DanThe fact that it is declared final shouldn't be important. You are probably either updating it on the event thread or trying to update it so much that the event thread is getting no CPU cycles.
Probably best to post some code. -
Why I should declare a final object!
import java.util.*;
public class Problem {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("Exiting.");
timer.cancel();
5000);
System.out.println("In 5 seconds this
application will exit. ");
When I complie the program there is one error as follow:
Problem.java:11: local variable timer is accessed from within inner class; needs
to be declared final
timer.cancel();
1 error
I don't kown why I must declare the timer as "final"!
Help me!What you have is an anonymous inner class. For this class to be able to access local variables in the containing class they must be final. When the compiler compiles the code it will create the inner class with a reference to the variable. If you were able to change the variable the inner class would lose the reference.
-
JComboBox bookmarkList;
String[] bookmarks = EmployeeEdit2.getBookmarks();
bookmarkList = new JComboBox(bookmarks);
bookmarkList.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String selection = bookmarkList.getSelectedItem();
actionGoToBookmark(selection);
});i am getting this error message when trying to compile this part:
"local variable bookmarkList is accessed from within inner class; needs to be declared final"
how do i declare it final?
thankshow do i declare it final?By declaring it final:String[] bookmarks = EmployeeEdit2.getBookmarks();
final JComboBox bookmarkList = new JComboBox(bookmarks);kind regards,
Jos -
Declaring method arguments as 'final'.
Hi all
Is it a good practice to declare method arguments as 'final' in java. Also please let me know how the performance would be effected.
Ex: private int xMethod(final int i){}
Thanks in advance.You are likely to find performance to be comparable whether you declare your argument as final or not.
All it means is you cannot change the reference for an object argument or the value of a primitive argument in the method for which it is an argument.
Note that you can still change the state of an object argument declared final! Final is not the same as const, which Java does not support. -
ALV grid is not displaying few fields of final internal table of type DMBTR
hello frnds,
i am displaying 10 fields in ALV grid using field catalog.
among them five fields are currency fields on which i doing some arithematic operations. but all these fields are not getting displayed in alv grid.
here is my code....
declaring final strucutre to generate report
TYPES:BEGIN OF ty_final,
gjahr TYPE gjahr, " Year
wwert TYPE wwert_d, " Traslation date
bukrs TYPE bukrs, " company code
hkont TYPE hkont, " General ledger account
txt20 TYPE txt20_skat, " Account name
belnr TYPE belnr_d, " Purchase order number
shkzg TYPE shkzg, " Dt/Cr indicator
dmbtr1 TYPE dmbtr, " Ammount in local currency
v_alc TYPE dmbtr, " Ammount in local currency
wrbtr TYPE wrbtr, " Ammount in foreign currency
ebeln TYPE ebeln, " Purchase order number
ebelp TYPE ebelp, " Item number
matnr TYPE matnr, " Material number
menge TYPE menge_d, " Qunatity
meins TYPE meins, " Unit of measure
stprs TYPE stprs, " Std material master
v_iv TYPE dmbtr, " Invoice value
pswsl TYPE pswsl, " Currency
v_erc TYPE dmbtr, " Exchange rate calculated
v_op TYPE dmbtr, " Order price
v_uos TYPE dmbtr, " Unit order to stock
v_io TYPE dmbtr, " Invoice to order
v_uv TYPE dmbtr, " Unit value
v_t TYPE dmbtr, " Total
v_d TYPE dmbtr, " Differecne
netpr TYPE bprei, " Net price in purchasing document
v_total TYPE dmbtr, " Total
v_os TYPE dmbtr, " Order to stock
v_ito TYPE dmbtr, " Invoice to order
saknr TYPE saknr, " G/L account number
END OF ty_final.
FORM move_data.
IF NOT i_bseg[] IS INITIAL.
LOOP AT i_bseg INTO wa_bseg.
wa_final-gjahr = wa_bseg-gjahr.
wa_final-bukrs = wa_bseg-bukrs.
wa_final-hkont = wa_bseg-hkont.
wa_final-belnr = wa_bseg-belnr.
wa_final-shkzg = wa_bseg-shkzg.
wa_final-wrbtr = wa_bseg-wrbtr.
wa_final-ebeln = wa_bseg-ebeln.
wa_final-ebelp = wa_bseg-ebelp.
wa_final-matnr = wa_bseg-matnr.
wa_final-menge = wa_bseg-menge.
wa_final-meins = wa_bseg-meins.
wa_final-pswsl = wa_bseg-pswsl.
wa_final-dmbtr1 = wa_bseg-dmbtr.
wa_final-saknr = wa_bseg-saknr.
wa_final-v_total = wa_bseg-dmbtr.
READ TABLE i_bkpf INTO wa_bkpf WITH KEY bukrs = wa_bseg-bukrs.
IF sy-subrc = 0.
wa_final-wwert = wa_bkpf-wwert.
ENDIF.
CLEAR wa_bkpf.
READ TABLE i_mbew INTO wa_mbew WITH KEY matnr = wa_bseg-matnr.
IF sy-subrc = 0.
wa_final-stprs = wa_mbew-stprs.
ENDIF.
CLEAR wa_mbew.
READ TABLE i_ekpo INTO wa_ekpo WITH KEY ebeln = wa_bseg-ebeln.
IF sy-subrc = 0.
wa_final-netpr = wa_ekpo-netpr.
ENDIF.
CLEAR wa_ekpo.
READ TABLE i_skat INTO wa_skat WITH KEY saknr = wa_bseg-saknr.
IF sy-subrc = 0.
wa_final-txt20 = wa_skat-txt20.
ENDIF.
calculating output values
IF wa_bseg-shkzg = 'H'.
wa_final-v_alc = -1 * wa_bseg-dmbtr.
ELSEIF wa_bseg-shkzg = 'S'.
wa_final-v_alc = 1 * wa_bseg-dmbtr.
ENDIF.
DATA : l_c_v_alc TYPE p DECIMALS 2,
l_c_v_iv TYPE p DECIMALS 2.
l_c_v_alc = wa_final-v_alc.
IF wa_bseg-menge NE 0.
wa_final-v_iv = wa_bseg-dmbtr / wa_bseg-menge.
ENDIF.
IF wa_bseg-dmbtr NE 0.
wa_final-v_erc = wa_bseg-wrbtr / wa_final-dmbtr1.
ENDIF.
IF wa_final-v_erc NE 0.
wa_final-v_op = wa_ekpo-netpr / wa_final-v_erc.
ENDIF.
wa_final-v_uos = wa_mbew-stprs - wa_final-v_op.
wa_final-v_io = wa_final-v_iv + wa_final-v_uos.
wa_final-v_uv = wa_final-v_uos + wa_final-v_io.
wa_final-v_t = wa_final-v_uv + wa_bseg-menge.
wa_final-v_d = wa_final-v_t - wa_final-v_alc.
wa_final-v_os = wa_final-v_uos * wa_bseg-menge.
wa_final-v_ito = wa_final-v_io * wa_bseg-menge.
CLEAR wa_bseg.
APPEND wa_final TO i_final.
CLEAR wa_final.
ENDLOOP.
ENDIF.
ENDFORM. "data_retrieval
*& Form build_fieldcat
text
--> p1 text
<-- p2 text
FORM build_fieldcat.
CLEAR wa_fieldcat.
* TYPES : v_alc TYPE dmbtr. "curr. " decimal 2.
DATA: l_c_v_alc TYPE p DECIMALS 2,
l_c_v_iv TYPE p DECIMALS 2 .
l_c_v_alc = v_alc.
l_c_v_iv = v_iv.
Constant Declarations.
CONSTANTS:
l_c_gjahr(5) TYPE c VALUE 'GJAHR', " Year
l_c_wwert(5) TYPE c VALUE 'WWERT', " Traslation date
l_c_bukrs(5) TYPE c VALUE 'BUKRS', " company code
l_c_hkont(5) TYPE c VALUE 'HKONT', " General ledger account
l_c_txt20(10) TYPE c VALUE 'TXT20', " Account name
l_c_belnr(5) TYPE c VALUE 'BELNR', " Doc number
l_c_shkzg(5) TYPE c VALUE 'SHKZG', " Dt/Cr indicator
l_c_dmbtr(5) TYPE c VALUE 'DMBTR1', " Ammount in local currency
" l_c_v_alc TYPE c VALUE 'V_ALC', " Ammount in local currency
l_c_wrbtr(5) TYPE c VALUE 'WRBTR', " Ammount in foreign currency
l_c_ebeln(5) TYPE c VALUE 'EBELN', " Purchase order number
l_c_ebelp(5) TYPE c VALUE 'EBELP', " Item number
l_c_matnr(5) TYPE c VALUE 'MATNR', " Material number
l_c_menge(7) TYPE c VALUE 'MENGE', " Qunatity
l_c_meins(5) TYPE c VALUE 'MEINS', " Unit of measure
l_c_stprs(5) TYPE c VALUE 'STPRS', " Std material master
" l_c_v_iv(4) TYPE c VALUE 'V_IV', " Invoice value
l_c_pswsl(5) TYPE c VALUE 'PSWSL', " Currency
l_c_v_erc(5) TYPE c VALUE 'V_ERC', " Exchange rate calculated
l_c_v_op(4) TYPE c VALUE 'V_OP', " Order price
l_c_v_uos(5) TYPE c VALUE 'V_UOS', " Unit order to stock
l_c_v_io(4) TYPE c VALUE 'V_IO', " Invoice to order
l_c_v_uv(4) TYPE c VALUE 'V_UV', " Unit value
l_c_v_t(3) TYPE c VALUE 'V_T', " Total
l_c_v_d(3) TYPE c VALUE 'V_D', " Differecne
l_c_netpr(5) TYPE c VALUE 'NETPR', " Net price in purchasing document
l_c_v_total(7) TYPE c VALUE 'V_TOTAL', " Total
l_c_v_os(4) TYPE c VALUE 'V_OS', " Order to stock
l_c_v_ito(5) TYPE c VALUE 'V_ITO', " Invoice to order
l_c_saknr(5) TYPE c VALUE 'SAKNR', " G/L account number
l_c_i_final(7) TYPE c VALUE 'I_FINAL'. " Final internal table
Fieldcat for fiscal year
wa_fieldcat-col_pos = 1.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_gjahr.
wa_fieldcat-seltext_m = text-007.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Translation date
wa_fieldcat-col_pos = 2.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_wwert.
wa_fieldcat-seltext_m = text-008.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Company code
wa_fieldcat-col_pos = 3.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_bukrs.
wa_fieldcat-seltext_m = text-009.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for General ledger account
wa_fieldcat-col_pos = 4.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_hkont.
wa_fieldcat-seltext_m = text-010.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Account name
wa_fieldcat-col_pos = 5.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_txt20.
wa_fieldcat-seltext_m = text-011.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Doc number
wa_fieldcat-col_pos = 6.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_belnr.
wa_fieldcat-seltext_m = text-012.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Dt/Cr indicator
wa_fieldcat-col_pos = 7.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_shkzg.
wa_fieldcat-seltext_m = text-013.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Ammount in local currency
wa_fieldcat-col_pos = 8.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = 'DMBTR1'.
wa_fieldcat-seltext_m = text-014.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Ammount in local currency
wa_fieldcat-col_pos = 9.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = 'V_ALC'.
wa_fieldcat-seltext_m = text-015.
wa_fieldcat-ref_fieldname = 'DMBTR'.
wa_fieldcat-no_sign = 'X'.
wa_fieldcat-do_sum = c_x.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Ammount in foreign currency
wa_fieldcat-col_pos = 10.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_wrbtr.
wa_fieldcat-seltext_m = text-016.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Purchse order number
wa_fieldcat-col_pos = 11.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_ebeln.
wa_fieldcat-seltext_m = text-017.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Item No
wa_fieldcat-col_pos = 12.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_ebelp.
wa_fieldcat-seltext_m = text-018.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Material number
wa_fieldcat-col_pos = 13.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_matnr.
wa_fieldcat-seltext_m = text-019.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Qunatity
wa_fieldcat-col_pos = 14.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_menge.
wa_fieldcat-seltext_m = text-020.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Unit of measure
wa_fieldcat-col_pos = 15.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_meins.
wa_fieldcat-seltext_m = text-021.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Std material master
wa_fieldcat-col_pos = 16.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_stprs.
wa_fieldcat-seltext_m = text-022.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Invoice value,
wa_fieldcat-col_pos = 17.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = 'V_IV'.
wa_fieldcat-seltext_m = text-023.
wa_fieldcat-ref_fieldname = 'DMBTR'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Currency
wa_fieldcat-col_pos = 18.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_pswsl.
wa_fieldcat-seltext_m = text-024.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Exchange rate calculated
wa_fieldcat-col_pos = 19.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = 'V_ERC'.
wa_fieldcat-seltext_m = text-025.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Order price
wa_fieldcat-col_pos = 20.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_v_op.
wa_fieldcat-seltext_m = text-026.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Unit order to stock
wa_fieldcat-col_pos = 21.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_v_uos.
wa_fieldcat-seltext_m = text-027.
wa_fieldcat-do_sum = c_x.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Invoice to order
wa_fieldcat-col_pos = 22.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_v_io.
wa_fieldcat-seltext_m = text-028.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Unit value
wa_fieldcat-col_pos = 23.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_v_uv.
wa_fieldcat-seltext_m = text-029.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Total
wa_fieldcat-col_pos = 24.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_v_t.
wa_fieldcat-seltext_m = text-030.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Difference
wa_fieldcat-col_pos = 25.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_v_d.
wa_fieldcat-seltext_m = text-031.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Net Price in Purchasing Document
wa_fieldcat-col_pos = 26.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_netpr.
wa_fieldcat-seltext_m = text-032.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Total
wa_fieldcat-col_pos = 27.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_v_total.
wa_fieldcat-seltext_m = text-033.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Order to stock
wa_fieldcat-col_pos = 28.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_v_os.
wa_fieldcat-seltext_m = text-034.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Fieldcat for Invoice to order
wa_fieldcat-col_pos = 29.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_v_ito.
wa_fieldcat-seltext_m = text-035.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
fieldcat for invoice to order
wa_fieldcat-col_pos = 30.
wa_fieldcat-tabname = l_c_i_final.
wa_fieldcat-fieldname = l_c_saknr.
wa_fieldcat-seltext_m = text-035.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. "build_fieldcatHi romanch,
defining the field catalog you must reference all currency fields to the respective currency key field (type CUKY).
<alv_fieldcat>-cfieldname = 'HWAER'.
This is sample for alv output of a currency field. The alv structure has a field HWAER which carries the currency key, e.g. USD or so.
Obviously you do not provide a cutrrency key for your values. If they are initial (zero), ALV will not display them as 0,00 but leave the field empty if the reference too currency key is not established.
If you define a DDIC structure for the ALV output this refernce is enforced. You can pass the DDIC structure name to the ALV and don not have to create the field catalog manually.
Regards,
Clemens -
Trying to understand the keywork "final" ...
I know of three cases where "final" isused: final member variable (whatever static or instance), final method, and final arguments as the parameters of a method.
I'm curious about the mechanism how final is implemented. Can I assume that these three cases share the similar mechanism?
For example, for the final member variable, I imagine that the compiler adds a lock to the variable after it's initialized. For the final methods, for example, a instance method, the compiler adds another lock to avoid overriding. But how about for the final arguments?Actually this question came to my mind when I read the spec of local inner class (classes declared inside the scope of a code block or statement). I quote it as below,
========
the introduction of local inner classes produced a problem for Java's designers. An object created in an inner class may live long after the code block has been exited and any local variables have been discarded. The inner class declaration can see these variables, but how can an inner class method refer to them? The solution was to provide a new meaning for the word "final". Wwhen the compiler finds a local variable declared "final", it creates a special hidden copy of the variable that the inner class can refer to ssafely. This also applies to parameters that are input to the method in which the inner class is declared.
As an example, consier the following code fragment:
public void someMethod(final String s){
int x = 0;
final float y =Float.parseFloat(s);
class Thingy{
void tMethod(){
double dd = 2*y;
int xx = 2*x;
String ss = s;
// other code
}========
Here, it seems like that a new meaning is assigned to the keywork "final". So, it seems like there is no a consistent approach to implement this "final" thing.
Edited by: 799160 on Oct 6, 2010 12:51 PM
Edited by: 799160 on Oct 6, 2010 12:55 PM
Edited by: 799160 on Oct 6, 2010 12:56 PM -
I am trying to manually make a drawing program similar to this one
http://javafx.com/samples/Draw/
However I am running into issues involving inner classes and finals.
"local variable size is accessed from within inner class; needs to be declared final"
It wants me to make either SIZE or size a final. However once final, I can't change the variable.
I have often used the variable in a for loop to assign a value(though maybe it was a bad practice?) however I am not sure the best way to handle this.
Any suggestions?
Thanks!
int SIZE = 1; //somewhere else
for( int size = 0 ; size < 5 ; size++){
Circle circle = new Circle(D/Padding);
circle.setOnMousePressed(new EventHandler<MouseEvent>(){
public void handle(MouseEvent me){
SIZE = size;
);edit:
I am well aware this isnt neccesarily a javafx specific thing, but more of a general java poor programming knowledge.
I also know that the mouseadapter is an anonymous class and can only access final.
I am just looking for any suggestions on how to best handle this.
Edited by: namrog on Jul 5, 2011 10:51 AM
Edited by: namrog on Jul 5, 2011 10:59 AMnamrog wrote:
I am trying to manually make a drawing program similar to this one
http://javafx.com/samples/Draw/
However I am running into issues involving inner classes and finals.
"local variable size is accessed from within inner class; needs to be declared final"
It wants me to make either SIZE or size a final. However once final, I can't change the variable.Yes, that's the point. If a local variable is to be used by an instance of a nested class, that nested instance can live on long after the local variable goes out of scope. So it needs its own, separate copy of the variable. However, since, as far as we are concerned, there is only one variable, that variable needs to be final, so that there will not be issues with keeping the two copies' values coherent.
I have often used the variable in a for loop to assign a value(though maybe it was a bad practice?) however I am not sure the best way to handle this.
Any suggestions?Create a final variable and copy the value of your non-final variable to it.
int nonFinal =...;
final int theFinalCopy = nonFinal;
new Whatever() {
void doStuff() {
doSomething(theFinalCopy);
} -
Static Methods with all Final Parameters
Gurus,
I know the synchronization and static method question has been hashed out ad infinitum here. However, I was thinking of a slight twist. (Did a search but could not find something related to this. If this has already been posted, my apologies).
Suppose you have a static method in which all of the parameters in the method signature are declared final. Let's assume also that you are not performing an operation with a high latency (say, database or network operations).
Would it be "safe" to leave the static method unsynchronized in a multi-threaded environment? Would the final keyword(s) ensure that, throughout method execution, there is no longer a race condition?
Would there be a difference between a primitive:
static final public void doSomething(final int param) {}
And an object that has mutator methods:
static final public void doSomething(final List param) {}
Basically, not having a formal CS background, I'm not sure how static methods are actually invoked on a low-level. It probably varies across JVM's, and maybe this question doesn't make much sense. However, I thought I would throw this out to see if anyone had implemented something similar.
I might be giving "final" too much credit., but what would actually happen in a multi-threaded environment?
Thanks much!
- Saish
"My karma ran over your dogma." - AnonI know the synchronization and static method question
has been hashed out ad infinitum here. What question's that then?
Suppose you have a static method in which all of the
parameters in the method signature are declared final.
Let's assume also that you are not performing an
operation with a high latency (say, database or
network operations).
Would it be "safe" to leave the static method
unsynchronized in a multi-threaded environment?Whether or not the parameters are final makes no difference - method parameters are local to the method and so are only visible to the current thread anyway. So making them final will have no effect on anything goning on in any other thread.
Whether or not you are performing operations has no effect on whether or not you can call a method thread-safe. It might mean there is less contention and it might make race conditions less likely, but it won't eliminate them.
So the answer is: If your would be thread safe with non-final parameters, then it will still be thread-safe when the parameters are all final. If it is not thread-safe with non-final parameters, then it will still not be thread safe with final parameters.
Would the final keyword(s) ensure that, throughout
t method execution, there is no longer a race
condition?No. Absoloutely not. -
Dear all,
I got this error:
"local variable threshold is accessed from within inner class; needs to be declared final"
Why does it have to be final and what's the effect of it?
KevinIf you are familiar with C++, you can think of final as being similar to the "const" keyword. Basically, "final" is a gurantee you make to the compiler that the object you are declaring to be final will not be changed later on at some point in your code. The compiler will hold you to that gurantee by generating an error if you to attempt to change the value of an Object that was declared final.
You can also declare methods to be final. That has two effects:
1. it means the method cannot be overridden.
2. It allows the compiler to inline the method, which can be useful for small methods that are called a lot since it can increase performance.
However, don't go overboard using final. Because it has a drawback. Since objects declared as final can be inlined, it also means that if you later make changes to the object implementation, you will have to recompile all of your classes that use that object. -
Why local class merely be final/abstract/package access?
The scenario is that while declaring a local class as final/abstract/package access only and why this access specifier is using?
could anyone plz express the reason for that?
With Regards,
Stalin.Gfinal String efg = "efg";
testCallback(new Callback()
public void execute(String str)
try
Thread.sleep(3000);
} catch (InterruptedException e)
System.err.println(str+efg);
System.err.println("finished " + System.currentTimeMillis());
//...Look at the local variable efg, it must be final, or the code does not compile,, Can anybody explain why efg has to be final?*explained by dcminter and Jardium in [an older thread|http://forums.sun.com/thread.jspa?messageID=10694240#10694240]:*
>
...Final variables are copied into inner classes - that's why they have to be declared final; to avoid the developer making an incorrect assumption that the local variable can be modified and have the change reflected in the copy.
When a local class uses a local variable, it doesn't actually use the variable. Instead, it takes a copy of the value which is contained in the variable at the moment the class is instantiated. It's like passing the variable to a constructor of the class, except that you do not actually declare any such constructor in your code.
To avoid messy execution flows to be present in a Java method, the Java language authors thought it was better to allow a single value to be present in such a variable throughout all its life. Thus, the variable has to be declared final. -
Inaccessible with local variable(non-final) via method local inner class
Hi All,
Usually local variables, including automatic final variable live on the stack and objects & instanace variables live on the heap.The contracts for using the method local inner class should allow merely method final variable, not non-final stack variable.
Can anyone please clarify me ,behind the scene what is actual fact why method inner class should not access the stack(method) variable and only allow final variable?
Is anything correlated with the stack and heap aspects?
Thanks,
Stalin.G[email protected] wrote:
...behind the scene what is actual fact why method inner class should not access the stack(method) variable and only allow final variable?...explained by dcminter and Jardium in [an older thread|http://forums.sun.com/thread.jspa?messageID=10694240#10694240|http://forums.sun.com/thread.jspa?messageID=10694240#10694240]:
...Final variables are copied into inner classes - that's why they have to be declared final; to avoid the developer making an incorrect assumption that the local variable can be modified and have the change reflected in the copy.
When a local class uses a local variable, it doesn't actually use the variable. Instead, it takes a copy of the value which is contained in the variable at the moment the class is instantiated. It's like passing the variable to a constructor of the class, except that you do not actually declare any such constructor in your code.
To avoid messy execution flows to be present in a Java method, the Java language authors thought it was better to allow a single value to be present in such a variable throughout all its life. Thus, the variable has to be declared final.
...HTH -
i have a field declared final, such as final File db; and i have a method of a class shell that initilize db,
but compiler wont let me, i guess this because that compiler cannt tell if db will be given values more than once during the execution of the program, are there any ways i can go around this? many thanks!i d like to make sure that only one database is open while the shell is running, and i need to record the pathname of this database, so i set this field final. and i want to initilize it in a method called openDatabase.
-
Are private methods inherently final?
You can�t override a private method, so is it inherently final? Will the compiler treat it like a final? I�ve heard that final methods may be inlined by the compiler but haven�t really been able to produce a test to show the advantage of inlining. I know in theory it trades speed for program size, but, if it does work, is it really that much faster? I�m guessing CPU local cache probably eliminates or at least reduces to negligible time the overhead of swapping out the instruction stack to perform a �jump.�
Thanks for your thoughts. Mostly trying to figure out when to use final methods.You can�t override a private method, so is it
inherently final? Given that that is exactly what the JLS says it would
suggest that the answer is yes.
http://java.sun.com/docs/books/jls/second_edition/html
/classes.doc.html#38958
I believe the invocation (byte code) is different as
well (but I didn't look it up) so the VM could
certainly easily do something with it.Actually, I don't think this is 100% accurate.
You can replace a private method in a subclass with the same signature (name, arg list) with the same return type. In fact, this is true even if the private method is declared final. It is only when the final method is public (maybe protected and package, I'm not sure) that the compiler complains when you try to extend it.
� {�
Maybe you are looking for
-
I have Find My iPhone app on the iPhone and iPad and PC. It will launch from PC and "finds" both devices. But clicking on icon on the device does not launch the app. All devices have same Apple ID and all have iOS-5. It all worked before I migrated t
-
Hi Experts, Please help me, it is urgent for me. can any one give information about the T-code RSRV and its usability. Thanks Sekhar
-
What is required to use OVS in Web Dynpro?
OVS in Webdynpro
-
Recompile with -deprecation for details.
when i am compiling my code i am getting error like this: abc.java uses or overrides a deprecated API. Recompile with -deprecation for details. pls anyone help me about this
-
I'm trying to get SSL setup for SQL Server. I'm assuming version doesn't matter. It's all about the same but I'm using 2014. I have an Enterprise CA so I've setup certs through it. I've tried using several templates but none seem to work. I thought