Determining Code Structure

Does anybody know if there is a way to determine the code structure (variables, statements, loops) of a pl/sql program unit (package, function, procedure, etc)?
There are some code editors (e.g. PL/SQL developer) that makes avaliable a code structure window and a conventional code editor window. These windows are usually connected, so when you cilck on an item of the code structure window, the matching lines on the code editor window are highlighted.
How does those kind of code editors determine the structure of a program unit? Do they have a client-side parser to read and analyze source code. Is there any Oracle API to get this information?
Edited by: user630459 on 12/05/2009 05:10
Edited by: user630459 on 12/05/2009 05:13
Edited by: user630459 on 12/05/2009 06:05
Edited by: user630459 on 12/05/2009 06:06

Thanks, but unfortunetaly we use Oracle 10g Release 2. Since there aren't other options, I think I'll have to parse source code. I'm going to use an automatic paser generator (e.g. ANTRL framework) to save me from language processing stuff. Do you kown where I could find the PL/SQL Grammar?
Edited by: user630459 on 12/05/2009 10:35
Edited by: user630459 on 12/05/2009 10:36
Edited by: user630459 on 12/05/2009 12:56
Edited by: fadc80 on 13/05/2009 04:38
Edited by: fadc80 on 13/05/2009 04:56

Similar Messages

  • Another tax determination code being picked up along with right tax determination code during creation of BBP

    Hi Experts,
    There is an issue I am facing while creating BBP, the slices in table DFKKMOP are having another tax determination code being picked up along with the right tax detemination code.
    E.g. -> In EK02 for the BBP I have configured tax determination code ZA for main 0051 and sub 0050 for all the company codes, but it is also picking ZX  which I have configured for main 100 - sub 202,203 , main - 200 sub 202,203 , main 300- sub 202,203.
    Strangely In the table DFKKMOP the tax determination code ZX is coming in the line which has main 0051 and sub 0050.
    I dont understand why ZX is being shown in the field BB grouping - Budget Billing: Grouping Key for Tax Determination Code.
    I have double checked the customizing in EK02 and I dont find this tax determination code being defined for main 0051/sub 0050, then why is it being picked up for BBP line item in table DFKKMOP.
    Any suggestions are appreciated.

    Well the issue was during creation of BBP items in DFKKMOP the VAT corresponding to Main/Sub 100/ 3xx was being picked up and when I adapted the tax determination code there. The items was created without any split.
    For the second one PA issue, well in this case the tax determination in the standard during the creation of PA invoice via EA27 is happening on the date of execution and not on the selection date or posting date. This is because in SPRO the config. of invoicing <<Define Basic Settings for Invoicing>>
    has <<Date type for tax determination in Invoicing for Part. Bills.>> set to <<tax determination in invoicing based on entry date>> that is why it takes the execution date into  consideration.So even when we do a posting for SOLLDAT in future to take another tax code it doesnt take that SOLLDAT instead takes todays execution date for which the new tax code is not valid.
    To overcome this issue either we need to make the new tax code valid from date in past ie. before the date of execution or we need to change this parameter in customizing <<Define Basic Settings for Invoicing>> to <<tax determination in invoicing based on Posting date>>.
    Voilà!

  • How to determine the structure of parameter method in WebServiceDataControl

    Hi all ,
    I have a web Service Data Control ,this data control has web service method that take a parameter of type (java.lang.Object)
    how can I determine the structure of this object to send it to the web service method
    (how can create the object that satisfy the object parameter of web service data control)

    I can see the constructor of data control which contain (name,age)
    but I don't know how can I send these two parameter in one object that satisfy the type of object in the web service method
    "parameterObject" : contain (name and age) values . (I don't know the type of "parameterObject" in web service)
    Map params = operationBinding.getParamsMap();
    params.put("arg0", parameterObject);

  • DB Tab RFCDES: Could not determine code page

    Hello,
    I have a simple scenario File->XI->IDOC(orders05)
    The R/3 who receive the IDOC is an 46c system. When sending a file to the XI I receive the following error message in sxmb_moni on the last step "Call Adapter"
    DB Tab RFCDES: Could not determine code page with <myr3>
    Does anyone have an idea whats wrong ?
    Regards Bernd

    Hi Bernd,
    did you have a look at SAP notes for idoc adapter code page problems? : 747322, 804570
    Regards,
    michal

  • "Could not determine code page" inbound side error

    Guys,
    We are receiving a flat text file and sending an IDoc, but now I'm getting this error.
    Any idea what's wrong?
    And what is that "I::000" in the message?
    Any help is much appreciated.
    Thanks a lot,
    Viktor
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Call Adapter
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30"
    xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
    SOAP:mustUnderstand="">
      <SAP:Category>XIAdapter</SAP:Category>
      <SAP:Code area="IDOC_ADAPTER">ATTRIBUTE_IDOC_METADATA</SAP:Code>
      <SAP:P1>FM NLS_GET_LANGU_CP_TAB: Could not determine code page
    with TABWDV100 I::000 FM NLS_GET_LANGU_CP_TAB</SAP:P1>
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Error: FM NLS_GET_LANGU_CP_TAB: Could not
    determine code page with TABWDV100 I::000
    FM LS_GET_LANGU_CP_TAB</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    PS:By the way, super sorry if this is a duplicate, my first post didn't show up,
    not sure what I messed up...

    Hi All,
    I have a similar problem, But with a small variation in the Log.
    <SAP:Category>XIAdapter</SAP:Category>
      <SAP:Code area="IDOC_ADAPTER"><b>ATTRIBUTE_IDOC_RUNTIME</b></SAP:Code>
      <SAP:P1>FM NLS_GET_LANGU_CP_TAB: Could not determine code page with PSRCLNT310 I::000 FM NLS_GET_LANGU_CP_TAB</SAP:P1>
      <SAP:P2 />
      <SAP:P3 />
    It says the "ATTRIBUTE_IDOC_RUNTIME", And I have checked all possible related threads and made my settings in synch. Did anyone had a similar problem?

  • Could not determine code page Error in remote sys in XI

    Hi,
    When we try to send some IDOCS from ECC 5.0 sys to 4.6C sys via XI (M70) we are encountering below issue.
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>XIAdapter</SAP:Category>
      <SAP:Code area="IDOC_ADAPTER">ATTRIBUTE_IDOC_METADATA</SAP:Code>
      <SAP:P1>FM NLS_GET_LANGU_CP_TAB: Could not determine code page with XXXXX system I::000 FM NLS_GET_LANGU_CP_TAB</SAP:P1>
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Error: FM NLS_GET_LANGU_CP_TAB: Could not determine code page with XXXX I::000 FM NLS_GET_LANGU_CP_TAB</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    When i checked table TCPDB is empty in 4.6 C system. Does it ring any bells guyz....
    Regards
    Vish

    Hi,
    Check out this thread
    "Could not determine code page" inbound side error
    XI IDOC Error...
    Thanks,
    Prakash
    Message was edited by: Prakash Arunachalam

  • ATTRIBUTE_IDOC_RUNTIME: Could not determine code page ... I::000

    Hi guys,
    well we have strange problem with code page. Scenario is IDoc2IDoc.
    We receive IDoc from french-system and when IDoc comes in, we get following error:
    <SAP:Code area="IDOC_ADAPTER">ATTRIBUTE_IDOC_RUNTIME</SAP:Code>
      <SAP:P1>FM NLS_GET_LANGU_CP_TAB: Could not determine code page with E01CLNT100 I::000 FM NLS_GET_LANGU_CP_TAB</SAP:P1>
    Does someone has experience with this?!
    br

    Can somebody help me with this?! in RFC-Dest. we thought to use MDMP but with no success.
    Could it be that this depends on user-permissions of the RFC-User in target system?! What permissions are needed for this?!
    br

  • Compile class file, check for code structure quality

    now i am trying to develop a system for my college final year project..the main function is to help the lecturer to mark the student java assignment
    any way to compile the java file..just to check for the error? if got error then 0 mark..no error got mark..and then check for the code structure and so...base on that ..to decide the student mark..like if good structure 20 mark..bad? 5 mark and so.
    is it possible to do so?
    Junit?
    any sample?

    Checking for errors is easy, just write a script to check if javac completed successfully. You can use similar approaches (possibly needing to parse the output) for jlint/PMD/whatever to check code structure. If there's any custom checks you want to do, though, I suggest you grab a parser (possibly witgh semantic analysis; I've found the Eclipse one is rather easily extracted and is good for this stuff) and write manual checks. It might be easier to write PMD rules, but you won't have the flexibility.

  • GL code Structure

    Dear gurus
    We are going for upgradation from 4.7E to ECC 6.0, in this we would like to convert GL Code structure(6 digit) to 8 digit Structure.
    Is it possible in ECC 6.0, if so, what r the consequence generally face.
    Can we create new GL Structure and can be transferred from 6 digit structure to 8 digit GL Code strucutre
    regards

    Hi,
    I give below my views :
    The chart of Account will hold upto 10 digits.
    You have to change the interval in OBD4 if you have given only 6 digit for accounts groups.
    The transaction data with old GL account numbers cannot be changed.
    The financial statement version derived so will have two accounts with same description.
    All the automatic account assignment has to be changed with new numbers.
    All the primary cost element numbers and the relative assignments in CO area has to be changed.
    The cut off date can be fixed as 31.03.2010 to enable you to take the balance sheet with old gl
    account numbers and thereafter upload the balances in new version is preferred.
    Regards,
    Sadashivan

  • Determining Source Structure u0096 for LSMW to upload Purchasing Info records?

    I am trying to use program RM06IBI0 through LSMW to upload Purchasing Info records. While configuring LSMW, how do I determine the source structure? Can anybody please help me with an example?
    Thanks,
    Ketan

    hi dear
    first of all record all the fields which you require through shdb including your vendor code and esokz.
    now
    generate a structure for mapping the fields through table maintainence generator option.you can add any number of fields there.
    actully this must include all the fields which are being fetched from the your flat file.
    please revert back if u find problem.
    reward points if it find useful
    regards
    amit singla

  • Partner Determination/Organization Structure

    Hi,
    I wanted to understand how through partner determination procedure relevant Service Team can be assigned. You can use example of Standard Service Order Transaction SRVO, Standard Partner Determination Procedure 00006, Standard Access Sequence 011 Executing Service Organization, Standard Organization determination rule 1000278 and organization structure 50004983 to explain the connection.
    Thanks
    Deepak

    Hi Deepak,
    The description of rule 10000278 says,"
    This rule should be used for partner determination via the orgdata model.
    It delivers on the basis of orgattribute <H>executing
    service organizations</>
    It is intended
    - for partner determination at item level
    - for service items
    - when using products in the service item
    Executing service organizations are all
    in the orgdata model with the following characteristics:
    - Service Scenario
    - Indicator for executing service organization is set.
    These partners are filed as partners of the partner function
    category executing service organization in the
    transaction.
    For example, org data determination is set up in the container after
    the postal code and product.
    regards,
    Prashant
    <b>"please REWARD the points "</b> if it helps..!!

  • Best practice for code structure to control multiple devices in a 2 stage-sequ​ence

    I have a question about code architecture and getting multiple devices controlled and sychronized for one experiment. This is an "architecture"-type inquiry, so I am hoping for some suggestions on how to proceed.
    I run an experiment in which I control 2 NI PCI-6733. I am soon to add a Tektronix AFG 3022B, and have long been putting off an opportunity to rewrite my labview code from the ground up. I inherited it from an earlier research, and while functional, I would like to make it easier to modify and break up into subVi's and such. Link to the current program (labview 8.6.1) is here if you would like to see the code that is currently used, and the subvi's are in a zip file. The current version of the experiment consists of just one stage, all the writing of the data to the PCI cards is saved for the end. I need to change this in my new setup though. 
    The new experiment consists of 2 stages. The first will run (looping an output array to the PCI cards) until it hears a "true" from another computer (connected via TCP). At that point, it should switch to stage 2 and run a sequence (usually 10^5 timeunits in length, where the time unit is 0.1 ms) that outputs to the two PCI cards, the AFG 3022B, and with the flexibility to add more devices in the future.
    Most appreciated would be structural advice. How to arrange the VIs, if it's good to use a "master" VI that would control the two subVi's of stage 1 and 2, etc...  Feel free to ask for more details if it would help clarify my question. Thanks!
    Solved!
    Go to Solution.

    Programs of this type usually use a state machine of some sort.  You can find many tutorials on LabVIEW state machines in these forums or the LAVA forums.  If you are doing a rewrite, I would also recommend you consider LabVIEW classes.  They help modularize your code and make the subparts more reuseable.  You may end up with less to maintain, as a result.
    <shamelessPlug>You may also want to consider TestStand.  It was designed to run sequences of tests, so may make your life easier.  It could also be gross overkill.</shamelessPlug>
    Let us know if you run into issues with state machines or classes.
    This account is no longer active. Contact ShadesOfGray for current posts and information.

  • Best practices code structure for large projects?

    Hi, I come from the Java world where organizing your code is handled conveniently through packages. Is there an equivalent in XCode/Objective C? I'd rather not lump all my observers, entities, controllers, etc in one place under "Classes"...or maybe it doesn't matter...
    If anyone could point me to a document outlining recommended guidelines I'd appreciate it.
    Thanks! Jon

    If you have a small project, you can setup Groups in Xcode to logically organize your files. Those Groups do not necessarily have to correspond to any directory structure. I have all my source files in one directory but organize them into Groups in Xcode.
    If you have a larger project, you can do the same thing, but with code organized into actual directories. Groups can be defined to be relative to a particular directory.
    If really do have a large project, you should organize things the same was as in Java. Your "packages" would just be libraries - either static or dynamic.
    As far as official guidelines go, there really aren't any. It would be best to stick to the Cocoa Model-View-Controller architecture if that is the type of application you are working on. For other software, you can do it however you want, including following something like Sun's guidelines if you want.

  • Code structure

    Hi,
    In my applet code below the section between the two lines of //// in the paint method doesn't need to be re-done every time I redraw just once will do fine. But when I try to move it into the start method it wont complie because the variables are not public/can't be resolved.
    So how do I move this section of code to somewhere more efficent and not get the errors?
    Thanks for any suggestions.
    Ann
    (I trimed a lot of detail out to make it easyer to see the structure I hope)
    public class ArrayExpApplet extends Applet
                           implements ItemListener {
      public void init() {
          System.out.println("initiating...");
          setBackground(new Color(224, 238, 238));;
      public void start() {
          System.out.println("starting...");
              Panel canvasPanel = new Panel();
              Canvas graph = new Canvas();
              JPanel cbp = CheckBoxPanel();
              setLayout(new BorderLayout());
              canvasPanel.setLayout(new BoxLayout(canvasPanel, BoxLayout.LINE_AXIS));
              canvasPanel.add(graph);
              canvasPanel.add(cbp);
              add("East", canvasPanel); 
         public JPanel CheckBoxPanel() {
              //Create the check boxes.
              return (p);
    // add a checkbox listener
         public void itemStateChanged(ItemEvent event) {
              repaint();
         public void paint(Graphics g) {
              System.out.println("Paint");
              double[][] expLevels = new double[4][5];
              String array_str = this.getParameter("array_string");
              System.out.println("array_string "+array_str);
              String[] rows = array_str.split (";");
              for (int k = 0; k < rows.length; k++) {
                   System.out.println("row "+k+" = "+rows[k]);
                   String[] cols = rows[k].split (",");
                   for (int l = 0; l < cols.length; l++) {
                        System.out.println("col "+l+" = "+cols[l]);
                        expLevels[k][l]= Double.parseDouble(cols[l]);
              //find max expression to scale y axis
              double max=0;
              for (int i=0; i<4; i++) {
                   for (int j=0; j<5; j++){
                        if (expLevels[i][j]>max) {max=expLevels[i][j];}
              int originX=100;
              int step=100;  //distance between exposures on x axis
              int height=200;
              int originY=height+(originX/2);
              double scale=height/(double)max;
              //scale=0.5;
              //set up an array of 5 colours
              Color[] EColor = new Color[5];
              EColor[0]= new Color(200,0,255); //magenta
              EColor[1]= new Color(0,0,255);      //green
              EColor[2]= new Color(0,255,0);      //blue
              EColor[3]= new Color(254,190,0); //yellow
              //Draw the data
              int x=originX; int y;
              for (int i=0; i<4; i++) {
                   System.out.println("CheckBox "+i+" is "+checkBoxSetting);
                   if (checkBoxSetting[i]) {
                        g.setColor(EColor[i]);
                        for (int j=0; j<4; j++){
                             y=j+1;
                             g.drawLine(x,originY-(int)(expLevels[i][j]*scale), x+step, originY-(int)(expLevels[i][y]*scale));
                             x=x+step;
                        x=originX;
              //draw axis
              //lable x axis
              //lable y axis
         public Dimension getMinimumSize() {return new Dimension(550,300);}
         public Dimension getPreferredSize() {return getMinimumSize();}
    public void stop() {
    System.out.println("stopping...");
    public void destroy() {
    System.out.println("preparing to unload...");

    This is what init() is for.
    import java.applet.Applet;
    import java.awt.BorderLayout;
    import java.awt.Canvas;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Panel;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import javax.swing.BoxLayout;
    import javax.swing.JPanel;
    public class ArrayExpApplet extends Applet
                           implements ItemListener {
      private double[][] expLevels = new double[4][5];
      private Color[] EColor = new Color[5];
      private int originX=100;
      private int step=100;  //distance between exposures on x axis
      private int height=200;
      private int originY=height+(originX/2);
      private double scale=-1;
      public void init() {
          System.out.println("initiating...");
          setBackground(new Color(224, 238, 238));;
              String array_str = this.getParameter("array_string");
              System.out.println("array_string "+array_str);
              String[] rows = array_str.split (";");
              for (int k = 0; k < rows.length; k++) {
                   System.out.println("row "+k+" = "+rows[k]);
                   String[] cols = rows[k].split (",");
                   for (int l = 0; l < cols.length; l++) {
                        System.out.println("col "+l+" = "+cols[l]);
                        expLevels[k][l]= Double.parseDouble(cols[l]);
              //find max expression to scale y axis
              double max=0;
              for (int i=0; i<4; i++) {
                   for (int j=0; j<5; j++){
                        if (expLevels[i][j]>max) {max=expLevels[i][j];}
              scale=height/(double)max;
              //set up an array of 5 colours
              EColor[0]= new Color(200,0,255); //magenta
              EColor[1]= new Color(0,0,255);      //green
              EColor[2]= new Color(0,255,0);      //blue
              EColor[3]= new Color(254,190,0); //yellow
      public void start() {
          System.out.println("starting...");
              Panel canvasPanel = new Panel();
              Canvas graph = new Canvas();
              JPanel cbp = CheckBoxPanel();
              setLayout(new BorderLayout());
              canvasPanel.setLayout(new BoxLayout(canvasPanel, BoxLayout.LINE_AXIS));
              canvasPanel.add(graph);
              canvasPanel.add(cbp);
              add("East", canvasPanel); 
         public JPanel CheckBoxPanel() {
              //Create the check boxes.
              return (p);
    // add a checkbox listener
         public void itemStateChanged(ItemEvent event) {
              repaint();
         public void paint(Graphics g) {
              System.out.println("Paint");
              //Draw the data
              int x=originX; int y;
              for (int i=0; i<4; i++) {
                   System.out.println("CheckBox "+i+" is "+checkBoxSetting);
                   if (checkBoxSetting[i]) {
                        g.setColor(EColor[i]);
                        for (int j=0; j<4; j++){
                             y=j+1;
                             g.drawLine(x,originY-(int)(expLevels[i][j]*scale), x+step, originY-(int)(expLevels[i][y]*scale));
                             x=x+step;
                        x=originX;
              //draw axis
              //lable x axis
              //lable y axis
         public Dimension getMinimumSize() {return new Dimension(550,300);}
         public Dimension getPreferredSize() {return getMinimumSize();}
    public void stop() {
    System.out.println("stopping...");
    public void destroy() {
    System.out.println("preparing to unload...");

  • Is my code structure correct.

    This is a question about OOPs structure for an AIR
    application using flex 3 and actionscript3 without flex builder
    (IDE is eclipse with AXDT and ant). I am new to forums so redirect
    me if appropriate:
    The data maintenance will occur on an infrequent basis. Is
    this a good structure to using mxml and AS3?
    Note: I know that I can create the data maintenance Panel and
    other necessary controls in main.mxml, however I find that a large
    mxml file is hard for me to work with.
    Thanks in advance for your help and comments.
    Dick

    no this isn't a good structure. Keeping everything in one
    mxml is asking the code maintainer to be "punished".
    Do this:
    1. separate your states into "views", by creating custom
    components to represent each states.
    2. set up a blank "home view" state. All other states you
    have can then use it as reference.
    3. to manage states create a "model" (singleton) to handle
    the transition from state to state
    4. create as3 files specific to each "view" and reference
    them in their respective mxml files.
    take a look at this link:
    http://beingwicked.com/2008/07/flex-initialize-and-the-hassles-of-changing-state/

Maybe you are looking for