Are the KeyEvent VK_* constants stable?!

I've been looking everywhere for an answer to this. I'm newish to Java and I've found myself totally flummoxed by something in the documentation that I don't see how can physically make sense, and if it did it wouldn't be sensible design. I'd really appreciate insight from more knowledgeable folks.
My gripe is with the [java.awt.event.KeyEvent|http://java.sun.com/javase/6/docs/api/java/awt/event/KeyEvent.html] api. It defines lots of virtual key code constants for use with the getKeyCode() function. What I need is to have user-configurable key controls for a game, and store them in a config file, so the VK constants seemed perfect.
To my total horror, I saw this note in the documentation:
WARNING: Aside from those keys that are defined by the Java language (VK_ENTER, VK_BACK_SPACE, and VK_TAB), do not rely on the values of the VK_ constants. Sun reserves the right to change these values as needed to accomodate a wider range of keyboards in the future.This is totally useless for any sort of permanent key binding, which is needed to store keys into a file and have them not break in different/future VMs. So I made THIS monstrosity to define better constants: [http://pastebin.com/f73084f4f]
Once I'd updated the rest of my code to use that, it worked perfectly. Then, just to check something, I decided to open up the compiled .class file in Notepad. But the VK_* identifiers are nowhere to be found. They've apparently been inlined by the compiler. I got a disassembler and checked again, and yes, the enums are being initialized like this (with fricking ASCII codes, of all the unrelated things to number virtual key constants with):
A = new StableKey("A", 11, 65);
B = new StableKey("B", 12, 66);
C = new StableKey("C", 13, 67);
D = new StableKey("D", 14, 68);
E = new StableKey("E", 15, 69);
..etcetera..So what the heck is going on? It says the constants can change, but surely this will break all compiled code even if it isn't storing the key codes externally? Several books have the same ominous caution as the docs, but they all seem to be based on that original note. Is the note wrong? (Its spelling is -- it should be "accommodate".) Or is the VM able to update constants in a way I'm not grasping?
I'm using the ordinary javac that came with the Sun JDK. I've not run the code through any external optimizer.
Please help. This is important to my project. If I release it with the extra constants, I'll never be able to remove them later if they turn out to be completely unnecessary without breaking existing config files, and if I release it without them it might just randomly break anyway later.

If you're new to Java then you are probably unaware of the Swing classes which make it mostly unnecessary for you to look at the value of key codes.I'm not sure what classes you're referring to specifically. I'd welcome an alternate trick for this but I don't see one. It's not like I'm deliberately typing numbers into the code to be awkward. I made this nice dialog box: [http://img14.imageshack.us/i/inputz.png/]. Now when keys are pressed on the JKeyChoosers there, I get sent the KeyEvents. Looking at the members of the KeyEvent class (getKeyChar(), getKeyCode, getKeyLocation, and isActionKey), I don't see a better way to compare two KeyEvents to find out if they're from the same key than to compare the key codes. I need something that's stable across different runs of the application, different VMs, and even different computers.
Directly below the block of documentation that the OP posted in the JavaDocs is "since 1.1", which means that those values have existed for over 10 years and, based on the fact that I had a similar conversation with one of my colleagues when we moved for 1.0.2 to 1.1, I suspect that few, if any, of the underlying values for keys on a standard keyboard have actually changed in the intervening time. So, to answer the original question, the constants appear to have been stable for over a decade.This is interesting, and I agree with you. I'm inclined to think the constants are unlikely to ever change.
But the class file format specifies the Java version it was compiled against and designed to support. So here's what this question really boils down to:
Supposing you compile a file with a Java 1.5 compiler and run it on a 1.6 VM:
(A) Do you get the Java 1.6 classes? I.e., using reflection, could you access the extra methods and fields and such?
OR
(B) Do new VMs include copies of the old classes to support exactly what old programs expect them to support?
Does anyone know this? If it's (A), then Sun could not ever change the constants no matter what, without breaking old stuff. If it's (B), they could change them in future Java versions, and classes would still be consistent after compilation, even if being compiled to different versions of Java broke any values they'd saved externally.

Similar Messages

  • SQL Cluster 2014 installation error the following is the right solution ? if yes why ? if not what are the pros n const of this ?

    http://www.bradg.co.za/?p=12
    SQL 2008 R2 Install Permissions
    SQL 2008 R2 is a little tricky to install if you don’t have the right permissions.  If the account you are using does not have the correct permissions you will find yourself getting loads of strange errors such as below during the installation.
    not all privileges or groups referenced are assigned to the caller
    The process does not possess the ‘SeSecurityPrivilege’ privilege which is required for this operation
    The error will prompt you to retry or cancel.  If you cancel your SQL installation will fail and if you retry you will be prompted with the error again.
    The way to resolve this issue is to grant the account you are using the correct privileges.
    Local Administrator on the box you are installing SQL
    Goto > Local Security Policy > User Rights Management
    Back up files and directories
    Debug Programs
    Manage auditing and Security log
    Restore files and directories
    Take ownership of files or other objects
    Add your installation user account to the above User Rights Management
    Once this has taken affect you should be able to install SQL without any issues.

    I might render OK in browsers, but the code is riddled with errors.
    http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fwww.incredibleart.org%2Flinks%2Fa rtists_black.html
    This one looks like it could be your red herring.
      Line 111, Column 83: cannot generate system identifier for general entity "f.defaultView.getComputedStyle"
    Nancy O.

  • Excel allows array arithmetic (e.g. sum(a1:a5* b1:b5) where the contents of the cells are the results of formulae.  Numbers only allows constants in the array cells. Right?  Any work-arounds?

    Excel allows array arithmetic (e.g. sum{(a1:a5* b1:b5)} where the contents of the cells are the results of formulae.  Numbers only allows constants in the array cells. Right?  Any work-arounds?

    CJPerry wrote:
    Any work-arounds?
    There is a very simple one : use libreOffice.
    Yvan KOENIG (VALLAURIS, France) dimanche 1 janvier 2012
    iMac 21”5, i7, 2.8 GHz, 12 Gbytes, 1 Tbytes, mac OS X 10.6.8 and 10.7.2
    My iDisk is : http://public.me.com/koenigyvan
    Please : Search for questions similar to your own before submitting them to the community
    For iWork's applications dedicated to iOS, go to :
    https://discussions.apple.com/community/app_store/iwork_for_ios

  • What are the correct answers ?

    after doing one sample swing application, i assumed the exam will be easy. when i took the exam, i couldn't do anything...
    what are the correct answers ??/
      Which one of the following converts the Image i into the BufferedImage bi? 
    Choice 1  
    bi = new BufferedImage(0, 0, BufferedImage.TYPE_INT_RGB);
    Graphics2D g = (Graphics2D)bi.createGraphics();
    g.drawImage(i,i.getHeight(this),i.getWidth(this)); 
    Choice 2  
    bi = new BufferedImage(i.getWidth(this), i.getHeight(this), 1);
    bi.drawImage(i,0,0,this); 
    Choice 3  
    bi = new BufferedImage(i.getWidth(this), i.getHeight(this), 1);
    Graphics2D g = (Graphics2D)bi.createGraphics();
    g.drawImage(i,0,0,this); 
    Choice 4  
    bi = new BufferedImage(i, i.getWidth(this), i.getHeight(this), BufferedImage.TYPE_INT_RGB); 
    Choice 5  
    bi = new BufferedImage(i, i.getWidth(this), i.getHeight(this)); 
    CardLayout
    BorderLayout
    FlowLayout
    GridBagLayout
    GridLayout 
      Which one of the following indicates all of the layout managers (from the list above) that allow you to set the space between the components from an instance of the LayoutManager itself? 
    Choice 1  
    CardLayout, FlowLayout, GridBagLayout, GridLayout 
    Choice 2  
    GridBagLayout 
    Choice 3  
    BorderLayout, GridLayout 
    Choice 4  
    BorderLayout, FlowLayout, GridLayout 
    Choice 5  
    BorderLayout, CardLayout, FlowLayout, GridBagLayout, GridLayout 
    JFrame jf = new JFrame();
    jf.setSize(400,400);
    JTextField jtf = new JTextField("JTextField");
    JButton jb = new JButton("JButton");
    jf.getContentPane().setLayout(
                          new FlowLayout(FlowLayout.LEFT,1,2));
    jf.getContentPane().add(jtf);
    jf.getContentPane().add(jb); 
      Which one of the following indicates the positions of the JTextField jtf and JButton jb relative to the JFrame and each other? 
    Choice 1  
    jtf and jb are in the top-center of the Jframe; jtf is to the left of jb, 2 pixels apart. 
    Choice 2  
    jb is in the top-right corner of the JFrame with jtf 1 pixel to the left of it. 
    Choice 3  
    jtf is in the top-left corner of the JFrame with jb 1 pixel to the right of it. 
    Choice 4  
    jb is in the top-right corner of the JFrame with jtf 2 pixels to the left of it. 
    Choice 5  
    jtf is in the top-left corner of the JFrame with jb 2 pixels to the right of it
    public void drawText(Graphics2D g, String text){
      Font f = new Font("Century Gothic", Font.BOLD, 10);
      g.setFont(f);
      g.drawString(text, 20, 20);
      Given the above sample code, what happens if the "Century Gothic" font is NOT available? 
    Choice 1  
    The Font() constructor fails, causing "f" to be null, and the setFont() method throws a NullPointerException. 
    Choice 2  
    "Century Gothic" is a built in Java font, which always exists within the Java runtime environment. 
    Choice 3  
    The code does not compile because only the following "logical" font names are supported in Java: Dialog, DialogInput, Monospaced, Serif, SansSerif, and Symbol. 
    Choice 4  
    The Font() constructor throws an IllegalArgumentException. 
    Choice 5  
    A default Font object is returned and is used
    Sample Code 
    public void drawText(Graphics2D g, String text){
      Font f = new Font("Century Gothic", Font.BOLD, 10);
      g.setFont(f);
      g.drawString(text, 20, 20);
      Given the above sample code, what happens if the "Century Gothic" font is NOT available? 
    Choice 1  
    The Font() constructor fails, causing "f" to be null, and the setFont() method throws a NullPointerException. 
    Choice 2  
    "Century Gothic" is a built in Java font, which always exists within the Java runtime environment. 
    Choice 3  
    The code does not compile because only the following "logical" font names are supported in Java: Dialog, DialogInput, Monospaced, Serif, SansSerif, and Symbol. 
    Choice 4  
    The Font() constructor throws an IllegalArgumentException. 
    Choice 5  
    A default Font object is returned and is used. 
    How must do you interact with a JTextField in order to generate an ActionEvent? 
    Choice 1  
    Tab into the JTextField from another Component. 
    Choice 2  
    Type in the JTextField. 
    Choice 3  
    Activate the cursor in the JTextField. 
    Choice 4  
    Hit <RETURN> while the cursor is in the JTextField. 
    Choice 5  
    Hit the spacebar while typing in the JTextField. 
    double-buffering
    public class TimerTest implements ActionListener{
      public static void main(String[] args){
        TimerTest test = new TimerTest();
        javax.swing.Timer timer = new javax.swing.Timer(100,test);
      public void actionPerformed(ActionEvent ev){
        System.out.println("Timer ticked.");
      Given the above sample code, what is the result when the code is run? 
    Choice 1  
    The words "Timer ticked." are printed to the console once after 100 milliseconds. 
    Choice 2  
    The words "Timer ticked." are printed to the console every 100 microseconds. 
    Choice 3  
    The words "Timer ticked." are printed to the console every 100 seconds. 
    Choice 4  
    The words "Timer ticked." are printed to the console every 100 milliseconds. 
    Choice 5  
    Nothing, the Timer is not started. 
    1. JSlider slider1 = new JSlider (JSlider.VERTICAL, 0, 100, 50);
    2. slider1.setPaintTicks(false);
    3. slider1.setMajorTickSpacing(10);
    4. slider1.setMinorTickSpacing(2); 
      What changes do you have to make to the above Sample code so that there are six Major Ticks and four Minor ticks between each Major Tick? 
    Choice 1  
    Replace line 3 with slider1.setMajorTickSpacing(17); 
    Choice 2  
    Replace line 2 with slider1.setPaintTicks(true);
    Replace line 3 with slider1.setMajorTickSpacing(17);
    Replace line 4 with slider1.setMinorTickSpacing(5); 
    Choice 3  
    Replace line 3 with slider1.setMajorTickSpacing(5);
    Replace line 4 with slider1.setMinorTickSpacing(4); 
    Choice 4  
    Replace line 2 with slider1.setPaintTicks(true);
    Replace line 3 with slider1.setMajorTickSpacing(20);
    Replace line 4 with slider1.setMinorTickSpacing(4); 
    Choice 5  
    Replace line 4 with slider1.setMinorTickSpacing(6); 
       Which one of the following defines a set of three JRadioButtons (b1, b2, and b3) so that only one JRadioButton can be selected at a time? 
    Choice 1  
    ButtonGroup g = new ButtonGroup();
    g.add(b1); g.add(b2); g.add(b3); 
    Choice 2  
    b1.group(true); b2.group(true); b3.group(true); 
    Choice 3  
    JRadioButton jbs[] = {b1, b2, b3};
    ButtonGroup g = new ButtonGroup(jbs); 
    Choice 4  
    The default behavior of JRadioButtons is such that only one can be selected at a time as long as they are in the same Container. 
    Choice 5  
    ButtonGroup g = new ButtonGroup(b1, b2, b3); 
    Sample Code 
    public static void main(String args[]){
      What is the role of the method in the code above? 
    Choice 1  
    To provide a place for initialization code when instantiating the current class. 
    Choice 2  
    It is the first method run when a class is run with the Java Interpreter. 
    Choice 3  
    It serves no specific function. It is a residual method from Java 1.0. 
    Choice 4  
    It is the first method that the Java Compiler converts to bytecode when creating a .class file. 
    Choice 5  
    To process command-line parameters when running the Java Interpreter 
    How do you create a menu item, Save, with a shortcut key of Ctrl+S? 
    Choice 1  
    You have to override the KeyPressed event of the top level Frame and handle the Ctrl+S to call the menu item's actionPerformed. 
    Choice 2  
    JMenuItem save = new JMenuItem("Save");
    save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.CTRL_MASK)); 
    Choice 3  
    JMenuItem save = new JMenuItem("Save");
    save.enableShortcut(KeyEvent.CTRL_KEY + KeyEvent.S); 
    Choice 4  
    JMenuItem save = new JMenuItem("Save");
    save.setMnemonic("Ctrl+S"); 
    Choice 5  
    JMenuItem save = new JMenuItem("Save");
    save.addShortcutKey( new KeyStroke(KeyStroke.S | KeyStroke.CTRL_KEY) ); 
    GridBagConstraints gbc1 = new GridBagConstraints(1,1,2,1,1,3,10,1,new Insets(5,5,5,5),1,1);
    gbl.addLayoutComponent(jb,gbc1); 
      In regards to the above code, which one of the following indicates jb's grid position? 
    Choice 1  
    Grid position 2,1 
    Choice 2  
    Grid position 1,2 
    Choice 3  
    Grid position 1, 1 
    Choice 4  
    Grid position 10, 1 
    Choice 5  
    Grid position 1, 3 
    GridBagConstraints gbc1 = new GridBagConstraints(1,1,2,1,1,3,10,1,new Insets(5,5,5,5),1,1);
    gbl.addLayoutComponent(jb,gbc1); 
      In regards to the above code, which one of the following indicates jb's grid position? 
    Choice 1  
    Grid position 2,1 
    Choice 2  
    Grid position 1,2 
    Choice 3  
    Grid position 1, 1 
    Choice 4  
    Grid position 10, 1 
    Choice 5  
    Grid position 1, 3 
    Which one of the following is necessary when changing an Applet to a standalone application? 
    Choice 1  
    Add a no-argument constructor. 
    Choice 2  
    Remove the init(), start() and stop() methods. 
    Choice 3  
    Remove "extends JApplet" or "extends Applet". 
    Choice 4  
    Add a main() method. 
    Choice 5  
    Change the import statement so that it imports an Application container rather than Applet or JApplet. 
    Which one of the following adds the String "Java" to the JComboBox jcb? 
    Choice 1  
    ComboBoxModel cbm = jcb.getModel();
    cbm.addItem("Java"); 
    Choice 2  
    jcb.setText("Java"); 
    Choice 3  
    ComboBoxModel cbm = jcb.getModel();
    cbm.add("Java"); 
    Choice 4  
    jcb.add("Java"); 
    Choice 5  
    jcb.addItem("Java");

    I'll have a go but I am not saying they are all correct...
    Question 1.
    Which one of the following converts the Image i into the BufferedImage bi?
    Choice 3 (assuming this implements the imageobserver interface)
    bi = new BufferedImage(i.getWidth(this), i.getHeight(this), 1);  //1 is BufferedImage.TYPE_INT_RGB
    Graphics2D g = (Graphics2D)  
    bi.createGraphics();
    g.drawImage(i,0,0,this);Good luck with your homework...
    nes
    Question 2.
    CardLayout
    BorderLayout
    FlowLayout
    GridBagLayout
    GridLayout
    Which one of the following indicates all of the layout managers (from the list above) that allow you to set the space between the components from an instance of the LayoutManager itself?
    Choice 4
    BorderLayout,
    FlowLayout,
    GridLayout
    (GridBagLayout uses GridBagConstraints to decide component spacing, card layout does not provided component spacing due to the deck nature used)
    Question 3.
    JFrame jf = new JFrame();
    jf.setSize(400,400);
    JTextField jtf = new JTextField("JTextField");
    JButton jb = new JButton("JButton");
    jf.getContentPane().setLayout( new FlowLayout(FlowLayout.LEFT,1,2));
    jf.getContentPane().add(jtf);
    jf.getContentPane().add(jb);    Which one of the following indicates the positions of the JTextField jtf and JButton jb relative to the JFrame and each other?
    Choice 3 jtf is in the top-left corner of the JFrame with jb 1 pixel to the right of it.
    Question 4
    public void drawText(Graphics2D g, String text)
         Font f = new Font("Century Gothic", Font.BOLD, 10);  
         g.setFont(f);  
         g.drawString(text, 20, 20);
    }    Given the above sample code, what happens if the "Century Gothic" font is NOT available?
    Choice 5 A default Font object is returned and is used
    Question 5.
    How must do you interact with a JTextField in order to generate an ActionEvent?
    Choice 4 Hit <RETURN> while the cursor is in the JTextField.
    Question 6.
    public class TimerTest implements ActionListener
         public static void main(String[] args)
               TimerTest test = new TimerTest();    
               javax.swing.Timer timer = new javax.swing.Timer(100,test);  
         public void actionPerformed(ActionEvent ev)
              System.out.println("Timer ticked.");  
    }    Given the above sample code, what is the result when the code is run?
    Choice 5 Nothing, the Timer is not started.
    Question 7.
    1. JSlider slider1 = new JSlider (JSlider.VERTICAL, 0, 100, 50);
    2. slider1.setPaintTicks(false);
    3. slider1.setMajorTickSpacing(10);
    4. slider1.setMinorTickSpacing(2);    What changes do you have to make to the above Sample code so that there are six Major Ticks and four Minor ticks between each Major Tick?
    Choice 4 Replace line 2 with slider1.setPaintTicks(true); Replace line 3 with slider1.setMajorTickSpacing(20); Replace line 4 with slider1.setMinorTickSpacing(4);
    Question 8.
    Which one of the following defines a set of three JRadioButtons (b1, b2, and b3) so that only one JRadioButton can be selected at a time?
    Choice 1 ButtonGroup g = new ButtonGroup(); g.add(b1); g.add(b2); g.add(b3);
    Question 9.
    Sample Code
    public static void main(String args[]){ }
    TYPO - should be public static void main(String[] args){ }
    What is the role of the method in the code above?
    Choice 2 It is the first method run when a class is run with the Java Interpreter.
    Question 10.
    How do you create a menu item, Save, with a shortcut key of Ctrl+S?
    Choice 2 JMenuItem save = new JMenuItem("Save");
    save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.CTRL_MASK));
    Question 11.
    GridBagConstraints gbc1 = new GridBagConstraints(1,1,2,1,1,3,10,1,new Insets(5,5,5,5),1,1); gbl.addLayoutComponent(jb,gbc1);
    In regards to the above code, which one of the following indicates jb's grid position?
    Choice 3 Grid position 1, 1
    Question 12
    Which one of the following is necessary when changing an Applet to a standalone application?
    Choice 1 Add a no-argument constructor.
    Choice 2 Remove the init(), start() and stop() methods.
    Choice 3 Remove "extends JApplet" or "extends Applet".
    Choice 4 Add a main() method.
    Choice 5 Change the import statement so that it imports an Application container rather than Applet or JApplet.
    mmm. not a good choice of answers. look at the following link...
    http://forum.java.sun.com/thread.jsp?forum=57&thread=218096
    Question 13.
    Which one of the following adds the String "Java" to the JComboBox jcb?
    Choice 5 jcb.addItem("Java");

  • What are the Essentials for a Sap Security Consultant.

    Hi Gurus,
    I have completed a Implementation in which I alone handled the entire Security . It is a defense client .
    Now I am technically expert at security. But I have no functional knowledge.
    Implementing Security in SAP one needs to have knowledge of funtional process as well. The course that are purely technical stuff and I have good idea of techincal stuff.
    The Question is what is a Sap Security Consultant expected to know . And how to go about acquiring that knowledge?

    Hi Hussain,
    There is a little bit of release-dependent-everything in this thread: Authorization for VAP2 in conflict with VD02 for F_KNA1_GRP
    Try solve it and you will understand that you need the requirements (without that you are anyway doomed) and the knowledge and the appropriate access to create / test it.
    BAPI's are remote enabled stable interfaces to SAP standard functionality. They are the best examples of combining functional, technical and standard skills in a sustainable way without creating a mess (a mess, way beyond the bounds of your concerns...).
    If you learn to use the available tools and information sources, then you dont need to stress about the essentials, even if your customer makes a design error before or after your advice.
    Cheers,
    Julius

  • What are the possible values for the JOB status?

    What are the possible values for the JOB status in the table TBTCP and significance for each?

    Hi,
    Have a look at include LBTCHDEF.
    The standard include from SAP.
    -> Definitions and Constants for Function group BTCH
    Kind Regards
    Raymond

  • What is the difference between Constant Window, Variable Window,Main Window

    hello all
    what is the difference between 1) Constant Window
                                                2) Variable Window
                                                3) Main Window   in SAP SCRIPT

    Hi,
    Window Types
    When defining a form window, you must select a window type for the window.
    You can choose between three types:
    Constant Windows (CONST)
    Variable Windows (VAR)
    Main Windows (MAIN)
    Constant Windows (CONST)
    Starting with Release 4.0, the system internally processes windows of type CONST similar to windows of type VAR.
    Therefore, if you create a new window, always use type VAR.
    Variable Windows (VAR) 
    The contents of variable windows is processed again for each page, on which the window appears.
    The system outputs only as much text as fits into the window. Text exceeding the window size is truncated;
    the system does not trigger a page break. Unlike constant windows, the page windows declared as variable windows may have different sizes on different form pages.
    As far as the processing of the window contents is concerned, the system currently treats constant and variable windows alike.
    The only difference is that constant windows have the same size throughout the form.
    Main Windows (MAIN) 
    Each form must have one window of type MAIN. Such a window is called the main window of the form.
    For SAPscript forms, the main window has a central meaning:
    It controls the page break.
    It contains the text body that may cover several pages.
    It allows to fix text elements at the upper and lower margins of the allocated page window (for example, for column headings).
    As soon as a window of type MAIN is full, SAPscript automatically triggers a page break and continues to
    output the remaining text in the main window of the subsequent page. Page windows of type MAIN have the same width throughout the form.
    The SAPscript composer thus avoids reformatting of the text after each page break.
    If a page does not have a main window, the system implicitly processes all other windows of the page and continues with the subsequent page.
    This page must not call itself as subsequent page (recursive call), since this would produce an endless loop.
    In such a case, SAPscript terminates the output after three subsequent pages.
    For printing header lines or totals, the different output areas of the main window are of special importance.
    go through this links:
    In Scripts Variable window and constant wind difference?
    Main Window
    Re: Main Window in SAP Script
    What is the difference between Constant window and variable window?
    Regards
    Adil

  • Where can I find a method to return the number of constants in an enum?

    I'd like to get the number of constants in an enum, but can not find any documentation on the topic.
    The only method I find reference to is the values() method.
    Are there other methods?
    Is there a method to return the number of items in the values array?
    Thanks,
    Norm

    Encephalopathic wrote:
    A_Sailor wrote:
    I had a mental block there.In my field, we call this a "cerebral spasm".From what I know of your field, that's a strange place to keep your cerebrum ;-)

  • FM7.1 to FM10 : What are the advantages?

    Hello,
    I have to use FrameMaker on Solaris, in a networked environment.
    Currently I am using 7.1 and want to move to 10.
    7.1 already has serious issues with importing pdf files.(http://forums.adobe.com/thread/891661?tstart=30)
    You see I need to give some good reasons to my boss so as to convince him!
    So 1st I want to know if there is a stable 10 ver. that works on Solaris.
    2nd-ly it would be excellent if someone can say very briefly, what are the advantages/problems in ver 10 over 7.1 for Solaris environment.
    Particularly looking out answers from the user "Error7103 "!
    Thanks in advance,
    DP

    FrameMaker 8 supports Unicode too and is faster and more stable than FrameMaker 10.
    Another question that has to be considered is:
    SoLarry?
    Do you want to make any investments in the former Sun platforms now owned by Leisure Suit Larry Ellison?
    If you are running Frame native on Solaris, you are running on SPARC workstations. Sun discontinued those over a year prior to the Oracle Assimilation. Since then, even the Solaris x86 workstations are gone. Oracle is out of the desktop biz, except for thin clients. If a seriously nasty security exploit appears for SparcStations, ORCL may not patch it promptly. As your hardware ages and fails, you may find yourself getting parts from eBay.
    I suspect that the bottom line for this inquiry is that it's not likely to be a an FM7 to FM8 upgrade on Solaris, but a total platform migration to Windows. The label on that can reads: Worms: species, quantity and condition unknown.

  • What are the possible causes of following errors in MAX? Are there any references on how to use MAX?

    Hi, it's me again.
    I've checked the encoder response in MAX (-ve ccw, +ve cw) and it seems fine. But when the motor moves MAX will generate a following error message. Is my encoder causing the problem or have I made a mistake in the settings? I've checked the connections to the encoder and they are all correctly wired.Could there be other causes of following errors?
    The motor does stop earlier when I reduced the following error value, so I'm assuming that the motor stops only when it has reached the set number of following errors and NOT because the motor has reached the target position. Any help is greatly appreciated.
    Thank you.

    It may be that the 7344 is missing encoder values, or that the motor isn't tuned correctly. The first thing I'd like for you to check is that the Encoder Counts per Revolution input to the Axis Settings menu in MAX is set correctly (I believe it defaults to 2000 counts). To check this, you can rotate the motor by hand one revolution to see how many counts have accumulated. Most encoders are either 2000 counts per rev or 4000 counts per rev.
    Once you have that confirmed, autotune the motors and make sure the values for Kp, Kd, and Ki are resonable. (Kd is often around 10x Kp) Once these are set, start your motors moving slowly and observe the following error. This can be seen under the Advanced tab of the 1D Interactive menu. If it is slowly incrementing, t
    hen your're missing counts. If it is negative, then the encoder phases may be backward. If there is no following error, or the count stays constant, then try increasing the speed. It could just be that your encoder sends pulses too fast for the 7344 to read.
    Let me know how it goes.
    Kyle V

  • What are the various system variabels in ABAP

    What are the various system variabels in ABAP?

    u can view all the system variables in SYST TABLE Also   ...............
    ABAP System Fields
    ABAP system fields are always available in ABAP programs. The runtime system fills them according to context. They can then be used in programs to query the system status. System fields are variables but you should always treat them as though they were constants, and only read them. If you change their values, important information for the flow of the program may be lost. In exceptional circumstances, system fields may be overwritten in an ABAP program to control the system – for example, SY-LSIND (for navigating to a detail list).
    With one exception the names and data types of the system fields are stored in the ABAP Dictionary in the SYST structure and realized as components of the predefined structure SY in ABAP programs.
    The system field SY-REPID is not part of SYST or SY. Instead, every program contains the predefined constants SY-REPID and SYST-REPID, which both contain the name of the corresponding program. Furthermore, there are two predefined types of the same name, SY-REPID and SYST-REPID.
    All system fields are addressed using SY field name and their types using SYST field name.
                                                                                    Alphabetical Overview
    The following table lists the definitions of the structure SYST in the ABAP Dictionary alphabetically. The character in the first column indicates how you can use the corresponding system field in ABAP programs. Name is the name of the component, Type is the Dictionary data type, and Length is the field length defined in the Dictionary. The Use column shows in which environment the system fields are set. The Description indicates the content.
    Name
    Type
    Length
    Use
    Description
    ABCDE
    CHAR
    26
    Constants
    Alphabet (A,B,C,...)
    APPLI
    RAW
    2
    Obsolete
    BATCH
    CHAR
    1
    Background processing
    Program runs in the background
    BATZD
    CHAR
    1
    Obsolete
    BATZM
    CHAR
    1
    Obsolete
    BATZO
    CHAR
    1
    Obsolete
    BATZS
    CHAR
    1
    Obsolete
    BATZW
    CHAR
    1
    Obsolete
    BINPT
    CHAR
    1
    Batch input
    Program runs under batch input
    BREP4
    CHAR
    4
    Obsolete
    BSPLD
    CHAR
    1
    Obsolete
    CALLD
    CHAR
    1
    ABAP Program
    Call mode of ABAP program
    CALLR
    CHAR
    8
    Printing Lists
    ID for print dialog function
    CCURS
    DEC
    9
    Obsolete
    CCURT
    DEC
    9
    Obsolete
    CDATE
    DATS
    8
    Obsolete
    CFWAE
    CUKY
    5
    Internal
    CHWAE
    CUKY
    5
    Internal
    COLNO
    INT4
    10
    Creating Lists
    Current column in the list
    CPAGE
    INT4
    10
    List processing
    Current page number
    CPROG
    CHAR
    40
    ABAP Program
    External procedure call
    CTABL
    CHAR
    4
    Obsolete
    CTYPE
    CHAR
    1
    Obsolete
    CUCOL
    INT4
    10
    Screens
    Horizontal cursor position at PAI
    CUROW
    INT4
    10
    Screens
    Vertical cursor position at PAI
    DATAR
    CHAR
    1
    Screens
    Displays user input
    DATLO
    DATS
    8
    Date and time
    Local date of user
    DATUM
    DATS
    8
    Date and time
    Current (application server) date
    DAYST
    CHAR
    1
    Date and time
    Daylight saving time flag
    DBCNT
    INT4
    10
    Database accesses
    Number of processed table rows
    DBNAM
    CHAR
    20
    ABAP Program
    Linked logical database
    DBSYS
    CHAR
    10
    R/3 System
    Name of central database system
    DCSYS
    CHAR
    4
    Obsolete
    DEBUG
    CHAR
    1
    Internal
    DSNAM
    CHAR
    8
    Internal
    DYNGR
    CHAR
    4
    ABAP Program
    Screen group of current screen
    DYNNR
    CHAR
    4
    ABAP Program
    Number of current screen
    ENTRY
    CHAR
    72
    Internal
    FDAYW
    INT1
    3
    Date and time
    Factory calendar weekday
    FDPOS
    INT4
    10
    Character strings
    Offset in character strings
    FFILE
    CHAR
    8
    Internal
    FLENG
    INT4
    10
    Internal
    FMKEY
    CHAR
    3
    Obsolete
    FODEC
    INT4
    10
    Internal
    FOLEN
    INT4
    10
    Internal
    FTYPE
    CHAR
    1
    Internal
    GROUP
    CHAR
    1
    Internal
    HOST
    CHAR
    8
    R/3 System
    Name of application server
    INDEX
    INT4
    10
    Loops
    Current loop pass
    INPUT
    CHAR
    1
    Internal
    LANGU
    LANG
    1
    R/3 System
    Current language
    LDBPG
    CHAR
    40
    ABAP Program
    Program of logical database
    LILLI
    INT4
    10
    List processing
    Selected list row
    LINCT
    INT4
    10
    Creating Lists
    Page length of list
    LINNO
    INT4
    10
    Creating Lists
    Current row
    LINSZ
    INT4
    10
    Creating Lists
    Column width of list
    LISEL
    CHAR
    255
    List processing
    Content of selected row
    LISTI
    INT4
    10
    List processing
    Index of selected list
    LOCDB
    CHAR
    1
    Obsolete
    LOCOP
    CHAR
    1
    Obsolete
    LOOPC
    INT4
    10
    Screens
    Number of rows visible in table
    LPASS
    CHAR
    4
    Internal
    LSIND
    INT4
    10
    List processing
    Index of detail list
    LSTAT
    CHAR
    16
    List processing
    ID for list levels
    MACDB
    CHAR
    4
    Obsolete
    MACOL
    INT4
    10
    Printing Lists
    Columns from SET MARGIN statement
    MANDT
    CLNT
    3
    R/3 System
    Client number from logon
    MARKY
    CHAR
    1
    Obsolete
    MAROW
    INT4
    10
    Printing Lists
    Rows from SET MARGIN statement
    MODNO
    CHAR
    1
    R/3 System
    Index of external modes
    MSGID
    CHAR
    20
    Messages
    Message class
    MSGLI
    CHAR
    60
    Messages
    Message line
    MSGNO
    NUMC
    3
    Messages
    Message number
    MSGTY
    CHAR
    1
    Messages
    Message type
    MSGV1
    CHAR
    50
    Messages
    Message variable
    MSGV2
    CHAR
    50
    Messages
    Message variable
    MSGV3
    CHAR
    50
    Messages
    Message variable
    MSGV4
    CHAR
    50
    Messages
    Message variable
    NEWPA
    CHAR
    1
    Internal
    NRPAG
    CHAR
    1
    Internal
    ONCOM
    CHAR
    1
    Internal
    OPSYS
    CHAR
    10
    R/3 System
    Operating system of application server
    PAART
    CHAR
    16
    Print parameters
    Print formatting
    PAGCT
    INT4
    10
    Obsolete
    PAGNO
    INT4
    10
    Creating Lists
    Current page:
    PAUTH
    NUMC
    2
    Internal
    PDEST
    CHAR
    4
    Print parameters
    Output device
    PEXPI
    NUMC
    1
    Print parameters
    Retention period
    PFKEY
    CHAR
    20
    Screens
    Current GUI status
    PLAYO
    CHAR
    5
    Internal
    PLAYP
    CHAR
    1
    Internal
    PLIST
    CHAR
    12
    Print parameters
    Name of spool request
    PNWPA
    CHAR
    1
    Internal
    PRABT
    CHAR
    12
    Print parameters
    Part of cover sheet
    PRBIG
    CHAR
    1
    Print parameters
    Selection cover page
    PRCOP
    NUMC
    3
    Print parameters
    Number of copies
    PRDSN
    CHAR
    6
    Print parameters
    Name of spool dataset
    PREFX
    CHAR
    3
    Obsolete
    PRI40
    CHAR
    1
    Internal
    PRIMM
    CHAR
    1
    Print parameters
    Print immediately
    PRINI
    NUMC
    1
    Internal
    PRLOG
    CHAR
    1
    Internal
    PRNEW
    CHAR
    1
    Print parameters
    New spool request
    PRREC
    CHAR
    12
    Print parameters
    Recipient
    PRREL
    CHAR
    1
    Print parameters
    Delete after print
    PRTXT
    CHAR
    68
    Print parameters
    Text for cover sheet
    REPI2
    CHAR
    40
    Internal
    REPID
    CHAR
    40
    ABAP Program
    Current main program
    RSTRT
    CHAR
    1
    Internal
    RTITL
    CHAR
    70
    Print parameters
    Title of printing program
    SAPRL
    CHAR
    4
    R/3 System
    Release status R/3 System
    SCOLS
    INT4
    10
    Screens
    Number of columns
    SFNAM
    CHAR
    30
    Obsolete
    SFOFF
    INT4
    10
    Internal
    SLSET
    CHAR
    14
    Selection screens
    Name of variant
    SPONO
    NUMC
    10
    Printing Lists
    Spool number
    SPONR
    NUMC
    10
    Obsolete
    SROWS
    INT4
    10
    Screens
    Number of rows
    STACO
    INT4
    10
    List processing
    First displayed column
    STARO
    INT4
    10
    List processing
    Uppermost displayed row
    STEPL
    INT4
    10
    Screens
    Index of current table row
    SUBCS
    CHAR
    1
    Internal
    SUBRC
    INT4
    10
    Return value
    Return value after ABAP statement
    SUBTY
    RAW
    1
    Internal
    SYSID
    CHAR
    8
    R/3 System
    Name of R/3 System
    TABID
    CHAR
    8
    Internal
    TABIX
    INT4
    10
    Internal Tables
    Current row index
    TCODE
    CHAR
    20
    ABAP Program
    Current transaction code
    TFDSN
    CHAR
    8
    Obsolete
    TFILL
    INT4
    10
    Internal Tables
    Current number of rows
    TIMLO
    TIMS
    6
    Date and time
    Local time of user
    TITLE
    CHAR
    70
    Screens
    Text in header line
    TLENG
    INT4
    10
    Internal Tables
    Row size
    TLOPC
    INT4
    10
    Internal
    TMAXL
    INT4
    10
    Obsolete
    TNAME
    CHAR
    30
    Obsolete
    TOCCU
    INT4
    10
    Obsolete
    TPAGI
    INT4
    10
    Obsolete
    TSTIS
    INT4
    10
    Internal
    TTABC
    INT4
    10
    Obsolete
    TTABI
    INT4
    10
    Obsolete
    TVAR0
    CHAR
    20
    Creating Lists
    Text variable for headers
    TVAR1
    CHAR
    20
    Creating Lists
    Text variable for headers
    TVAR2
    CHAR
    20
    Creating Lists
    Text variable for headers
    TVAR3
    CHAR
    20
    Creating Lists
    Text variable for headers
    TVAR4
    CHAR
    20
    Creating Lists
    Text variable for headers
    TVAR5
    CHAR
    20
    Creating Lists
    Text variable for headers
    TVAR6
    CHAR
    20
    Creating Lists
    Text variable for headers
    TVAR7
    CHAR
    20
    Creating Lists
    Text variable for headers
    TVAR8
    CHAR
    20
    Creating Lists
    Text variable for headers
    TVAR9
    CHAR
    20
    Creating Lists
    Text variable for headers
    TZONE
    INT4
    10
    Date and time
    Time difference to Greenwich Mean Time
    UCOMM
    CHAR
    70
    Screens
    Function code that triggered PAI
    ULINE
    CHAR
    255
    Constants
    Horizontal line with length 255
    UNAME
    CHAR
    12
    R/3 System
    Logon name of user
    UZEIT
    TIMS
    6
    Date and time
    Current (application server) time
    VLINE
    CHAR
    1
    Constants
    Vertical line
    WAERS
    CUKY
    5
    Obsolete
    WILLI
    INT4
    10
    Obsolete
    WINCO
    INT4
    10
    Obsolete
    WINDI
    INT4
    10
    Obsolete
    WINRO
    INT4
    10
    Obsolete
    WINSL
    CHAR
    79
    Obsolete
    WINX1
    INT4
    10
    Obsolete
    WINX2
    INT4
    10
    Obsolete
    WINY1
    INT4
    10
    Obsolete
    WINY2
    INT4
    10
    Obsolete
    WTITL
    CHAR
    1
    Creating Lists
    Flag for standard page header
    XCODE
    CHAR
    70
    Internal
    XFORM
    CHAR
    30
    Internal
    XPROG
    CHAR
    40
    Internal
    ZONLO
    CHAR
    6
    Date and time
    Time zone of user
    Key:
    The system field is set by the runtime environment. Its content can be evaluated in the ABAP program but not changed.
    The system field is set by the runtime environment. Its content can be changed in the ABAP program to influence the runtime environment.
    The system field must be set in the ABAP program. It can then be evaluated by the runtime environment or the program.
    The system field is only for internal use and must not be used in ABAP programs.
    The system field is obsolete and its content is not set. It cannot be used in ABAP programs.
                                                                                    Thematic Overview
    The following is a thematic summary of the system fields with notes on their use:
    System information
    ·        Information on the current R/3 System
    ·        Information on the user session
    ·        Date and time information
    ·        Information on the current ABAP program
    ·        Background processing
    ·        Batch input
    ABAP programming
    ·        Constants
    ·        Character strings
    ·        Loops
    ·        Internal Tables
    ·        Database accesses
    ·        Return value
    Screens
    ·        Screens
    ·        Selection screens
    ·        Lists
    ·        Messages
    Internal system fields
    Obsolete system fields
                                                                                    System Information
    Information on the Current R/3 System
    SY-DBSYS
    Central database system, for example INFORMIX, ORACLE
    SY-HOST
    Application server, for example HS0333, PAWDF087
    SY-OPSYS
    Operating system of application server, for example HP-UX, SINIX
    SY-SAPRL
    Release status of R/3 System, for example 30D, 46A
    SY-SYSID
    Name of R/3 System, for example B20, I47
    Information on the User Session
    SY-LANGU
    One-digit language key, for example D, E, F. Either logon language of user or set using the SET LOCALE LANGUAGE statement.
    SY-MANDT
    Client number the user logged on with, for example 000, 400.
    For database accesses with Open SQL, SY-MANDT is used as the first key field of the WHERE clause.
    SY-MODNO
    Indexes external modes. Zero in first mode. In new modes, opened using the Create Mode function or by calling a transaction using /o, it is raised by 1. If previous modes were deleted, the free numbers are used first. Modes opened using  CALL TRANSACTION … STARTING NEW TASK start back at 0.
    SY-UNAME
    Logon name of user, for example KELLERH, BC400-01.
    Date and Time Information
    The following system fields are always set automatically. If necessary, the GET TIME statement synchronizes the application server time with that of the database server and writes it to the system field SY-UZEIT. SY-DATUM and the system fields for the local time zone, that is SY-TIMLO, SY-DATLO, and SY-ZONLO are also reset.
    SY-DATLO
    Local date of user, for example 19981129, 19990628.
    SY-DATUM
    Current (application server) date, for example 19981130, 19990627.
    SY-DAYST
    During daylight saving time X, otherwise empty.
    SY-FDAYW
    Factory calendar weekday, Sunday 0 … Saturday 6.
    SY-TIMLO
    Local time of user, for example 154353, 225312.
    SY-TZONE
    Time difference to Greenwich Mean Time (UTC) in seconds, for example 3600, 10800.
    SY-UZEIT
    Current (application server) time, for example 164353, 215312.
    SY-ZONLO
    Time zone of user, for example CET, UTC.
    Information on the Current ABAP Program
    SY-CALLD
    SY-CALLD contains SPACE if the program is the first and only program in a call chain. SY_CALLD contains 'X' if the program is a called program in a call chain (see ABAP Calls Overview).
    ·        SY-CALLD is set to ‘X‘ in a program called using CALL TRANSACTION, CALL DIALOG, or SUBMIT … AND RETURN.
    ·        SY-CALLD is set to SPACE in a program called using LEAVE TO TRANSACTION, entering a transaction code on a screen, and processing batch input folders. 
    ·        With SUBMIT (without RETURN) SY-CALLD retains the previous value.
    SY-CPROG
    In externally called procedures, the name of the calling program, otherwise the name of the current program. If an externally called procedure calls another external procedure, SY-CPROG keeps the name of the first main program and is not given the name of the main program of the further caller.
    SY-DBNAM
    With executable programs this is the linked logical database.
    SY-DYNGR
    Screen group of current screen. You can assign several screens to a common screen group. You can use this, for example, to modify all of the screens in the group in a uniform way.
    SY-DYNNR
    Number of current screen During the selection screen processing, SY-DYNNR contains the screen number of the current selection screen. During list processing, SY-DYNNR contains the number of the container screen. While a subscreen is being processed, SY-DYNNR contains its screen number. This also applies to tabstrips.
    SY-LDBPG
    With executable programs, the database program of the linked logical database.
    SY-REPID
    Name of current ABAP program. With externally called procedures this is the name of the procedure’s main program.
    If SY-REPID was transferred to an external procedure as an actual parameter before Release 6.10, the formal parameter was not given the name of the caller, but the name of the procedure’s main program. SY-REID had to be transferred to an auxiliary variable before the call or you had to use SY-PROG.
    As of Release 6.10, SY-REPID is a separate constant that is no longer part of the structure SYST or SY. It can be transferred to external procedures directly.
    SY-TCODE
    Name of current transaction code.
    Background Processing
    SY-BATCH
    SY-BATCH is set to X in an ABAP program running in the background. Otherwise it is empty.
    Batch Input
    SY-BINPT
    SY-BINPT is set to X during processing of batch input folders and in ABAP programs called with CALL TRANSACTION USING. Otherwise it is empty.
    ·         OPTIONS FROM in the CALL TRANSACTION USING statement can set SY-BINPT to empty for the whole program execution, as well as at the end of the BDC data.
    ·         In CATT procedures, SY-BINPT is always empty.
                                                                                    ABAP Programming
    Constants
    SY-ABCDE
    Contains the Alphabet. Can be used to access individual letters independently of the codepage by specifying offset.
    SY-ULINE
    Contains a horizontal line with length 255. Can be used when creating the list.
    SY-VLINE
    Contains a vertical line (|). Can be used when creating the list
    Loops
    SY-INDEX
    SY-INDEX contains the number of loop passes in DO and WHILE loops, including the current loop pass.
    Character Strings
    SY-FDPOS
    Found location for operations with character-type fields.
    ·        If the operators CO, CN, CA, NA, CS, NS, CP, NP are used in comparisons, SY-FDPOS is assigned offset values depending on the comparison result.
    ·        SEARCH … FOR … sets SY-FDPOS to the offset of the found search string.
    Internal Tables
    SY-TABIX
    Current line in an internal table. With the following statements SY-TABIX is set for index tables. With hashed tables, SY-TABIX is not filled or it is set to 0.
    ·        APPEND sets SY-TABIX to the index of the last table row, that is the total number of entries in the target table.
    ·        COLLECT sets SY-TABIX to the index of the existing or appended table row. With hashed tables, SY-TABIX is set to 0.
    ·        LOOP AT sets SY-TABIX to the index of the current table row at the beginning of every loop pass. After leaving a loop, SY-TABIX is set to the value it had before entering the loop. With hashed tables, SY-TABIX is set to 0.
    ·        READ TABLE sets SY-TABIX to the index of the table row read. If no row is found with binary search while reading, SY-TABIX contains the index of the next-highest row or the total number of rows +1. If no row is found with linear search while reading, SY-TABIX is undefined.
    ·        SEARCH  0). Each time an interactive list event occurs, the system automatically increases SY-LSIND by 1. SY-LSIND can be changed in the ABAP program to navigate between detail lists. Changes to SY-LSIND are not taken into account until the end of the list event. Therefore, any manipulation of SY-LISND should be done using the last command of the processing block.
    SY-LSTAT
    ID for list levels within the program. SY-LSTAT can be filled with values during list creation in the ABAP program. The value valid when the list is completed is saved with the list. In the case of an interactive list event, SY-LSTAT is set to the value it was assigned during the creation of the list from which the event takes place. SY-LSTAT is no longer maintained and should therefore no longer be used.
    SY-STACO
    Number of the first displayed column of the list from which the event was triggered. Counting starts at 1.
    SY-STARO
    Number of the upper-most displayed row of the upper-most page of the list, from which the event was triggered. Counting begins at 1. This does not include the page header.
    Printing Lists
    When printing lists, the spool and runtime systems require certain internal information, which is available in the following system fields and is set during print activation.
    SY-CALLR
    Contains a value that displays where printing was started, for example NEW-PAGE for program-controlled printing or RSDBRUNT for printing from the selection screen.
    SY-PRDSN
    Contains the name of the spool file during printing.
    SY-SPONO
    Contains the name of the spool number during printing.
    SY-MAROW, SY-MACOL
    The SET MARGIN statement fills the system fields SY-MAROW and SY-MACOL, which determine the number of lines on the upper margin and the number of columns on the left margin when printing.
    Print Parameters
    The print parameters are transferred to the spool system by the runtime system in a structure of dictionary type PRI_PARAMS. Before this structure was used, its purpose was served by system fields. Today a subset of the PRI_PARAMS structure is still written to system fields with the same names when printing is activated. This information is redundant and should not be used.
    Messages
    If you execute the MESSAGE statement, the following system fields are set. If you execute the MESSAGE … RAISING statement in function modules and methods, these fields are also set in the calling program, if it handles the exception.
    SY-MSGID
    SY-MSGID contains the message ID.
    SY-MSGNO
    SY-MSGNO contains the message number.
    SY-MSGTY
    SY-MSGTY contains the message type.
    SY-MSGV1,…,SY-MSGV4
    SY-MSGV1 to SY-MSGV4 contain the field contents that are used for the message’s placeholders. 
    Special Actions that Fill Message Fields
    ·        If you request database locks using the ENQUEUE function module, the field SY-MSGV1 contains the name of the user who holds the lock, in the case of the FOREIGN_LOCK exception.
    ·        IN the case of CALL TRANSACTION or CALL DIALOG with the USING addition, a message displayed during the called screen sequence is returned in the fields SY-MSGID, SY-MSGTY, SY-MSGNO, SY-MSGV1, ... , SY-MSGV4.
    ·        During Remote Function Call (RFC), error messages are transferred from the remote system to the calling system and SY-MSGID, SY-MSGTY, SY-MSGNO,SY-MSGV1, SY-MSGV2, SY-MSGV3, SY-MSGV4 are set. If short dumps or type X messages occur, the system also sets the fields.
                                                                                    Internal System Fields
    Internal system fields are only for internal use in the ABAP runtime environment and are defined in the kernel. Under no circumstances must they be overwritten in ABAP programs and they should also not be read (processed).
    SY-CFWAE
    Undocumented
    SY-CHWAE
    Undocumented
    SY-DEBUG
    Undocumented
    SY-DSNAM
    Name of spool output file.

  • What are the Optimization Techniques?

    What are the Optimization Techniques? Can any one send the one sample program which is having Good Optimization Techniques.
    Phani

    Hi phani kumarDurusoju  ,
    ABAP/4 programs can take a very long time to execute, and can make other processes have to wait before executing. Here are
    some tips to speed up your programs and reduce the load your programs put on the system:
    Use the GET RUN TIME command to help evaluate performance. It's hard to know whether that optimization technique REALLY helps
    unless you test it out. Using this tool can help you know what is effective, under what kinds of conditions. The GET RUN TIME
    has problems under multiple CPUs, so you should use it to test small pieces of your program, rather than the whole program.
    Generally, try to reduce I/O first, then memory, then CPU activity. I/O operations that read/write to hard disk are always the
    most expensive operations. Memory, if not controlled, may have to be written to swap space on the hard disk, which therefore
    increases your I/O read/writes to disk. CPU activity can be reduced by careful program design, and by using commands such as
    SUM (SQL) and COLLECT (ABAP/4).
    Avoid 'SELECT *', especially in tables that have a lot of fields. Use SELECT A B C INTO instead, so that fields are only read
    if they are used. This can make a very big difference.
    Field-groups can be useful for multi-level sorting and displaying. However, they write their data to the system's paging
    space, rather than to memory (internal tables use memory). For this reason, field-groups are only appropriate for processing
    large lists (e.g. over 50,000 records). If you have large lists, you should work with the systems administrator to decide the
    maximum amount of RAM your program should use, and from that, calculate how much space your lists will use. Then you can
    decide whether to write the data to memory or swap space. See the Fieldgroups ABAP example.
    Use as many table keys as possible in the WHERE part of your select statements.
    Whenever possible, design the program to access a relatively constant number of records (for instance, if you only access the
    transactions for one month, then there probably will be a reasonable range, like 1200-1800, for the number of transactions
    inputted within that month). Then use a SELECT A B C INTO TABLE ITAB statement.
    Get a good idea of how many records you will be accessing. Log into your productive system, and use SE80 -> Dictionary Objects
    (press Edit), enter the table name you want to see, and press Display. Go To Utilities -> Table Contents to query the table
    contents and see the number of records. This is extremely useful in optimizing a program's memory allocation.
    Try to make the user interface such that the program gradually unfolds more information to the user, rather than giving a huge
    list of information all at once to the user.
    Declare your internal tables using OCCURS NUM_RECS, where NUM_RECS is the number of records you expect to be accessing. If the
    number of records exceeds NUM_RECS, the data will be kept in swap space (not memory).
    Use SELECT A B C INTO TABLE ITAB whenever possible. This will read all of the records into the itab in one operation, rather
    than repeated operations that result from a SELECT A B C INTO ITAB... ENDSELECT statement. Make sure that ITAB is declared
    with OCCURS NUM_RECS, where NUM_RECS is the number of records you expect to access.
    If the number of records you are reading is constantly growing, you may be able to break it into chunks of relatively constant
    size. For instance, if you have to read all records from 1991 to present, you can break it into quarters, and read all records
    one quarter at a time. This will reduce I/O operations. Test extensively with GET RUN TIME when using this method.
    Know how to use the 'collect' command. It can be very efficient.
    Use the SELECT SINGLE command whenever possible.
    Many tables contain totals fields (such as monthly expense totals). Use these avoid wasting resources by calculating a total
    that has already been calculated and stored.
    These r good websites which wil help u :
    Performance tuning
    http://www.sapbrainsonline.com/ARTICLES/TECHNICAL/optimization/optimization.html
    http://www.geocities.com/SiliconValley/Grid/4858/sap/ABAPCode/Optimize.htm
    http://www.abapmaster.com/cgi-bin/SAP-ABAP-performance-tuning.cgi
    http://abapcode.blogspot.com/2007/05/abap-performance-factor.html
    cheers!
    gyanaraj
    ****Pls reward points if u find this helpful

  • Where I can check and download the latest alpha/beta & stable release of Fennec/Nightly for my N900. Ovi Store has really outdated version...

    Everything from repositories to the FTP server is deleted. It's like Maemo is completely forgotten. Ovi Store hasnt been updated since Fennec 6. On the FTP servers there where v13,14 but now Maemo folders are deleted. Where I can obtain the latest alpha, beta & stable versions?

    There is a fellow by the name of Romaxa who has been supplying the recent Firefox builds for the OVI store.
    * http://store.ovi.com/content/257468
    * http://romaxa.bolshe.net/fennec/

  • What are the Steps to assign Public IP ?

    Hi,
    I want to assign Public IP address to my OEL. What are the steps for it.
    Regards,
    Ajay

    Ajay Sharma wrote:
    I want to assign Public IP address to my OEL. What are the steps for it.Do you have an IP address to assign? The public IPv4 address range is exhausted. So no ISP is simply going to give customers static public IPs to use.
    An ISP typically has a DHCP server and a pool of public IPs that are handed out to clients when connecting. With local hosting contracts/accounts, one may get a static IP allocated to you - but expect to pay extra for that.
    The usual configuration is to configure your router for making the ISP connection and getting an IP on the Internet. You then configure your LAN devices to use the router as default routing gateway.
    If you want to host a web server for example on a LAN device, you should consider using a NAT firewall on the router (supported by most in my experience). For example, your router has LAN IP 192.168.0.1. Your LAN web server has IP 192.168.0.20. The ISP address allocated to your router is 42.42.7.123.
    On the router you configure port 80 to be NAT'ed to 192.168.0.20 using port 80. This means an Internet connection to 42.42.7.123 will be passed by the router to your web server.
    Of course, as the public IP is leased by your router, it can expire, and a new public IP address given when the lease is refreshed. So you cannot exactly give out a DHCP IP to Internet users to connect to your web server. The solution is dynamic DNS. Again, many routers support this - automatically telling the dynamic DNS service what the current public IP address is for your web server's Internet hostname. This hostname you need to register with the dynamic DNS folk (and pay for) - and allows you to have an Internet presence via a dynamic public IP.
    Even if you are lucky enough to have your own dedicated public Internet IP - I suggest NOT using without very CAREFUL consideration. This IP will be attacked by hackers. Not might be. Will be. It will be probed for weaknesses. Weaknesses will be exploited. Fact.
    So if you want to assign a public Internet IP to your Linux server, you MUST harden the server. Latest patches. Service management. Solid iptables configuration. Consider running SELinux in fully active mode. Constant monitoring of server logs.
    Most of which a router will protect you against with a much easier and simplistic web admin interface - and by protecting your servers via NAT.

  • What are the objects that support variables?

    What are the objects that support variables?

    Using Variables: The Variable Wizard and the Variable Editor
    Definition
    Variables are parameters of a query that you defined in the Query Designer and that are filled with values when you execute the query or Web application. They serve as a store for characteristic values, hierarchies, hierarchy nodes, texts and formula elements, and can be processed in different ways.
    The processing type determines how a variable is filled with a value for the runtime of the query or Web application.
    There are different types of variables depending on the object for which you want to define variables. These types specify where you can use the variables.
    Variables are reusable objects. This means that when you define a variable for a query in the Query Designer, this variable can be used in all other queries. Variables are not dependent on the InfoProvider, only on the InfoObject. A variable that you define for an InfoObject is available in all InfoProviders that use this InfoObject.
    Use
    Variables enable you to customize queries flexibly (parameterize the query) possible. If you use variables in the Query Designer, do not select any fixed characteristic values, hierarchies, hierarchy nodes, texts, or formula elements. Instead, set up variables as place holders. These are then filled with values when the query is running (when you insert the query into a workbook, when you refresh the workbook or when you execute the query on the Web. You can use one query definition as the foundation for many different queries if you use variables.
    You want to create one query for all the people responsible for customer groups, who each only evaluate the data for one customer group. In the Query Designer, you insert a variable for the characteristic u2018customer groupu2019. Just before the query is executed, decide for which customer group(s) you want the query to apply to.
    There are two tools in the Query Designer for designing and changing variables.
    The variable wizard takes you step-by-step through the process of defining a variable. Each individual step is context-sensitive and is adjusted according to the combination of variable and processing types used. This means that the variable wizard only offers the selection options that are permitted for that combination of variable and processing types. For more information, see Defining Variables with the Variable Wizard.
    The variable editor dialog box offers all of the selection options for changing an existing variable. The individual fields in the dialog box show the settings affected in the variable. You can change these settings here. If you want to make the changes using a step-by-step process with explanatory texts, you can jump to the variable wizard using . For more information, see Changing Variables in the Variable Editor.
    Integration
    The variable wizard and the variable editor are functions in the Query Designer and are context-sensitive.
    In principle, the two dialog boxes appear wherever you can enter constants (that is, values) in input fields. One of these input fields is the Entry of Variables checkbox.  If you select this option, the following options for using a variable appear, instead of a fixed value:
    ·        The variables that are available appear in the dropdown box for the input field. You can select a variable from the dropdown box.
    ·        The symbol  Change Variable appears next to the Entry of Variables checkbox. You can change the variable using  . The Variable Editor dialog box appears.
    ·        The symbol  New Variable appears next to the Entry of Variables checkbox. Choose  if you want to create a new variable. The Variable Wizard dialog box appears.
    By way of an example, when defining conditions for the value limit of the condition, you can not only enter fixed values but also formula variables. Mark the Entry of Variables checkbox and you can then use the options described above. The settings are context-sensitive so that the formula variables that only those formula variables that are available appear in the dropdown box.  The variable wizard is set up automatically in the same way for entering formula variables.
    You can also get to the variable wizard and the variable editor from the context menu of those objects for whose values you can define variable placeholders. From the context menu, choose New Variable. The SAP BW Variables Wizard appears. In the context menu for variables that have already been defined, you can choose Edit. The SAP BW Variables Editor appears.
    In the InfoProvider objects dialog box, you select a characteristic (for example, Order) and from the context menu, choose New Variable. You reach the variable wizard, which is already set up for you to enter a characteristic value variable.
    In the InfoProvider objects dialog box, you select a characteristic value variable and from the context menu, choose Edit. You reach the variable editor where you see all of the settings for the variable. You can make changes to the variables here.
    Variable Types
    Definition
    The type of variable being used. This determines the object that the variable represents as a placeholder for a concrete value.
    Structure
    There are different types of variables depending on the object for which you want to define variables. These types specify where you can use the variables.
    ·        Characteristic Value Variables
    Characteristic value variables represent characteristic values and can be used wherever characteristic values are used.
    If you restrict characteristics to specific characteristic values, you can also use characteristic value variables. See, Restricting Characteristics.
    ·        Hierarchy Variables
    Hierarchy variables represent hierarchies and can be used wherever hierarchies can be selected.
    If you restrict characteristics to specific hierarchies or select presentation hierarchies, you can also use hierarchy variables. See Selecting Hierarchies
    ·        Hierarchy Node Variables
    Hierarchy node variables represent a node in a hierarchy and can be used wherever hierarchy nodes are used.
    If you restrict characteristics to specific hierarchy nodes, you can also use hierarchy node variables. See Restricting Characteristics: Hierarchies
    ·        Text Variables
    Text variables represent a text and can be used in descriptions of queries, calculated key figures and structural components.
    You can use text variables in the description of calculated key figures, restricted key figures, selections and formulas when you create them. See Defining Calculated Key Figures, Defining Restricted Key Figures, Defining Selections, and Defining Formulas.
    You can change the descriptions in the properties dialog box. See Query Properties Calculated Key Figure Properties Restricted Key Figure Properties, and Selection/Formula Properties.
    ·        Formula Variables
    Formula variables represent numerical values and can be used in formulas. See Defining Formulas.
    In addition, numerical values are used for selecting exceptions and conditions and you can also use formula variables here. See Defining Exceptions and Defining Conditions
    You can use a formula variable for the interest rate in order to process the current interest rate, after you have executed the query or Web application.
    http://help.sap.com/saphelpnw04/helpdata/en/e3/e60138fede083de10000009b38f8cf/frameset.htm_

Maybe you are looking for