Application to visualize program flow

I'm looking for an easier way to "visualize" what is going on in the source code of a large project, in regards to function calls, method calls, and classes.
For example, a source directory of a project will have a bunch of files, like this:
anim.c
character.c
direction.c
game.c
input.c
main.c
player.c
resources.c
room.c
screen.c
If I didn't know anything about this project, if I wanted to try to understand how it works it would be difficult to start.
Does anyone know of an application that will read source code and display a tree-like output of the program flow? For example, maybe like this:
main() [main.c]
-> create_game() [game.c]
-> reset_timer() [timer.c]
-> update_game() [game.c]
---> update_world() [world.c]
---> is_game_over() [game.c]
---> ...
-> draw_game() [game.c]
---> draw_world() [world.c
---> ...
-> destroy_game() [game.c]
How about for classes and method calls?
I don't care if it's GUI or CLI, or what programming language it's for. I think a program like this would be incredibly useful, especially in the FOSS community, and would be surprised if something doesn't already exist.

cflow - For C programs. Nice and simple.
KCacheGrind - Uses the "callgrind" application. I couldn't find callgrind in the Arch repositories or the AUR, so I gave up.
codeviz - For C and C++ programs. I got it to produce a beautiful PNG tree of all of my function calls. I probably won't use it. A graphical tree output isn't so useful to me, and it was a bit tricky to actually setup and use. (for example, it requires a patched version of GCC)
egypt - For C programs. Super duper simple concept, but requires some setup to use. I couldn't figure out how to configure and run it.
gprof - Part of the GNU Binary Utilities. A little too low level for what I was looking for.
pycallgraph - For Python programs. I didn't try it.
doxygen - Is able to create documentation for anything in the world, including your car. I wish someone could tell me, "Type this doxygen command to create a call graph", but until that happens, I just can't seem to figure it out.
cflow is definitely my favorite. I will do some post processing to the output to remove any functions that I didn't write.
EDIT: Someone did a similar "review" to mine here, along with mentioning more programs to try out: http://grok2.tripod.com/code_comprehension.html
Last edited by drcouzelis (2010-10-07 13:13:45)

Similar Messages

  • Dialog Box simulation without interrupting program flow

    I'm developing data acquisition/control software and need to give the end
    user flexibility to change the file to which the acquired data is being
    saved during operations. In the past, users have been confused with a
    simple string control that specifies the data file path, so I would prefer
    to move to the popup/dialog box standard to windows. Unfortunately, calling
    a dialog box results in the stoppage of program flow for the caller until
    the dialog box is closed (even though there may be no apparent data flow
    from the popup VI.) and stopping the program flow is not an option for this
    control system (the computer is controlling pressure, temperature, flow
    rates, etc of a very expensive and sensitive bit of hardware, so halting the
    control function for an unknown length of time is unacceptable).
    I am looking for the best way to accomplish this under LabVIEW 6i.
    Using a VI class reference through VI Server, I can essentially detach the
    popup window from the base program execution, spawning a separate
    application and passing the relevant parameters through judicious use of
    global variables. If I call the subroutine via VI server with "Wait until
    done" attribute set to false, the appropriate VI appears, functions
    correctly, and terminates as expected. Unfortunately, it remains visible on
    the screen, an inactive application. I have the VI Properties -> Window
    Appearance -> Customize -> Show Front Panel When Called and the Close
    Afterwards if Originally Closed checkboxes checked on this popup VI. It
    seems that calls through VI Server trigger the "Originally Open" flag, so
    the window does not close as I had expected.
    The way I have found to get around this problem is to use VI Server to call
    an intermediate subroutine whose front panel is not displayed and whose sole
    purpose it to call the subroutine that calls the dialog box. This does what
    I wanted, essentially. When the user wants to change directories, they
    press a button that triggers a call to VI Server to open a separate
    application. This application's front panel is never displayed and only
    calls a sub-VI that performs all the actual work and ends when it is
    completed. As this sub-VI terminates, all visible traces of the subroutines
    disappear and I'm left with just the primary program executing, continuing
    to take and send control signals through this whole process.
    This seems a rather cumbersome way to get a custom dialog box on the screen
    without stopping the program flow of the caller, however. Is there a more
    efficient way to accomplish this?
    Wade C. Eckhoff
    [email protected]

    Wouldn't it be easier to use two parallel independent while loops in the
    main vi, with one taking care of acquisition and the other of user
    interaction.
    When the UI loop is temporarily 'halted' because of the dialogue box poping
    up, the acquiring loop continues without delay.
    Regards
    Harrie Boonen
    www.novonordisk.com
    "Default User" wrote in message
    news:[email protected]...
    > I'm developing data acquisition/control software and need to give the end
    > user flexibility to change the file to which the acquired data is being
    > saved during operations. In the past, users have been confused with a
    > simple string control that specifies the data file path, so I would prefer
    > to move to the popup/dialog box standard to windows. Unfortunately,
    calling
    > a dialog box results in the stoppage of program flow for the caller until
    > the dialog box is closed (even though there may be no apparent data flow
    > from the popup VI.) and stopping the program flow is not an option for
    this
    > control system (the computer is controlling pressure, temperature, flow
    > rates, etc of a very expensive and sensitive bit of hardware, so halting
    the
    > control function for an unknown length of time is unacceptable).
    >
    > I am looking for the best way to accomplish this under LabVIEW 6i.
    >
    > Using a VI class reference through VI Server, I can essentially detach the
    > popup window from the base program execution, spawning a separate
    > application and passing the relevant parameters through judicious use of
    > global variables. If I call the subroutine via VI server with "Wait until
    > done" attribute set to false, the appropriate VI appears, functions
    > correctly, and terminates as expected. Unfortunately, it remains visible
    on
    > the screen, an inactive application. I have the VI Properties -> Window
    > Appearance -> Customize -> Show Front Panel When Called and the Close
    > Afterwards if Originally Closed checkboxes checked on this popup VI. It
    > seems that calls through VI Server trigger the "Originally Open" flag, so
    > the window does not close as I had expected.
    >
    > The way I have found to get around this problem is to use VI Server to
    call
    > an intermediate subroutine whose front panel is not displayed and whose
    sole
    > purpose it to call the subroutine that calls the dialog box. This does
    what
    > I wanted, essentially. When the user wants to change directories, they
    > press a button that triggers a call to VI Server to open a separate
    > application. This application's front panel is never displayed and only
    > calls a sub-VI that performs all the actual work and ends when it is
    > completed. As this sub-VI terminates, all visible traces of the
    subroutines
    > disappear and I'm left with just the primary program executing, continuing
    > to take and send control signals through this whole process.
    >
    > This seems a rather cumbersome way to get a custom dialog box on the
    screen
    > without stopping the program flow of the caller, however. Is there a more
    > efficient way to accomplish this?
    >
    >
    > Wade C. Eckhoff
    > [email protected]
    >
    >
    >

  • Help with program flow and timing a loop please

    I'm working on an application that will display vibration data on several tabs.  1 tab displays the time waveform, another a running RMS value, another an FFT etc.
    On another tab I want the user to have the option of streaming the data to disk for 'x' number of seconds.
    I created a sub-vi with a flat sequence structure.
    The first frame open/creates a file.  The second frame gets the current time in seconds and adds 'x' seconds to it.  The third frame  contains a while loop with a "Get Current Time in Seconds" and a  "Write to Binary File" which executes while the current time is less than the "previous current time plus 'x'".
    This sub-vi is in a while loop that is called when a "capture data" button is pressed.
    My problem is that the rest of the program (waveform, RMS, FFT displays) stops executing when the while loop / sub-vi is executing.
    This can be seen via the "TEST" indicator that doesn't update.
    When the program flow goes back to the rest of the program I get an error 'cause the buffer has over-flown (ed)
    I'm really new at this so any help is greatly appreciated.
    I've attached images of the main vi (Project3.pdf) and the sub-vi containing the Flat Sequence (WriteToDisk.pdf)
    I can attach the actual vis if it helps.
    Thanks,
    Erik
    Attachments:
    Project3.pdf ‏189 KB
    WriteToDisk.pdf ‏85 KB

    The behavior you're seeing is by design. There are two solutions to your problem:
    Place the write to file in a separate loop that runs in parallel to your main loop. Thus, your "Project3" VI would have two loops. One is the data acquisition, the other is the streaming to file. You should not create data dependencies between the loops that would cause one loop to wait until the other is done. You want both running in parallel. You can stop both loops with the same stop button. With this method you can use local variables to get the Time Waveform data as you're doing now.
    Launch the stream to file VI dynamically. This basically uses the VI Server to start a subVI and then immediately return to the caller. The subVI is then running on its own. There are examples that ship with LabVIEW that show you how to do this. You would have to have the subVI monitor something to determine if it should stop should the main program stop.
    The first option would be the easiest to implement in your case. The second is more complex, but leaves you with one loop.

  • Staying in a frame, not returning to main program flow

    I'm creating a Java-program (Swing) that records results of a chess tournament and calculates a new ranking each time a new round is entered, i.e. when the user enters results like
    Kasparov - Fisher 0-1
    Karpov - Kortchnoi remise
    etc.
    Therefore I open a panel+frame with two identical listboxes (with the playernames) and some buttons ("1-0", "0-1", "draw" and "done").
    It should go like this: select a player in box 1, select the opponent in box 2, assign a result to the game, and repeat this procedure until all games are entered, then press "done" to return to the main program (to calculate the new ranking).
    Problem is that the progam-flow returns to the main program as soon as the new panel is displayed. I don't want that!!! I do want that nothing happens in the main program until the user presses "done" in the panel. The current code looks like
    // in the main program:
    public void addGame ()
    // GameDetails is a class that displays the playerlists and resultbuttons
    GameDetails gd = new GameDetails (rnk);
    ----------------- I want that my main program halts here until this GameDetails-thing is closed by the user
    // calculate new ranking, based on newest results
    How must I do that? It's not a matter of setting a focus (the first playerlist gets the focus, that's OK). I'm an experienced C-programmer but sometimes I don't seem to grasp this OO-stuff... anyone can give me a hint?

    If separate dialog window is ok, then the JDialog in modal mode is propably an answer. If shown in modal mode, no other windows for application will receive any user events and the show() method won't return until dialog is closed.
    If however, you like to have one panel active and second not active until first is filled by user, you have to understand how the event-driven UI works.
    In first stage, the UI elements are constructed an collected together in containers - you create JFrame, put there one or more JPanel, JButton and etc. There is nothing displayed nor actuall user interaction code executed. You decide here how things will look like
    In the second stage, you have to construct event listening mechanism - each of UI components may have own ActionListener (or/and others) installed. You have to install them on all elements you need to react on - in your case it will be "done" button. You decide here how active elements will behave.
    Third stage is an actuall application run - it starts from the moment the frame is shown. The UI engine takes over all user actions and distributes it to all UI components, which in reaction redraws themselfs and/or broadcasts proper events to own listeners. This process repeates forever.
    As you can see the clasic "program flow" approach does not have a big use in here. Instead of beeing a "boss" you have to be a "servant" - listen to what user does and behave correctly opening and closing new dors in front of him/her depending on weher he/she appears to want to go.
    So, in your case the proper way will be:
    0. Create whole UI, by adding apropiate containers and components. Make your game panel "disabled" (there are methods for that - setEnabled(false)). The disabled components do not produce events to listeners and have limited reactions on user input. Do not run any user interaction code here!
    1. Create action listener on "Done" button, in which you check input data and enable game panel;
    2. Install apropiate listeners on all active game panel components and do there what is necessary.
    P.S.
    Remember, a class is a rubber stamp which you use to produce class instances - OO beginners often misunderstood that.

  • Description Faulting Application Path:     C:\Program Files\Safari\Safari.exe  Problem signature Problem Event Name:     APPCRASH Application Name:     Safari.exe Application Version:     5.34.57.2 Application Timestamp:     4f982b5e Fault Module Name:   

    Description
    Faulting Application Path:    C:\Program Files\Safari\Safari.exe
    Problem signature
    Problem Event Name:    APPCRASH
    Application Name:    Safari.exe
    Application Version:    5.34.57.2
    Application Timestamp:    4f982b5e
    Fault Module Name:    KERNELBASE.dll
    Fault Module Version:    6.1.7601.18015
    Fault Module Timestamp:    50b83b16
    Exception Code:    80000003
    Exception Offset:    0003491e
    OS Version:    6.1.7601.2.1.0.256.1
    Locale ID:    1033
    Additional Information 1:    0a9e
    Additional Information 2:    0a9e372d3b4ad19135b953a78882e789
    Additional Information 3:    0a9e
    Additional Information 4:    0a9e372d3b4ad19135b953a78882e789
    Extra information about the problem
    Bucket ID:    3349202712

    im having this problem to ive uninstalled and installed but this still comes up!!
    Problem signature:
      Problem Event Name:    BEX
      Application Name:    iTunes.exe
      Application Version:    10.7.0.21
      Application Timestamp:    504d85d9
      Fault Module Name:    StackHash_0a9e
      Fault Module Version:    0.0.0.0
      Fault Module Timestamp:    00000000
      Exception Offset:    00000000
      Exception Code:    c0000005
      Exception Data:    00000008
      OS Version:    6.1.7601.2.1.0.768.3
      Locale ID:    5129
      Additional Information 1:    0a9e
      Additional Information 2:    0a9e372d3b4ad19135b953a78882e789
      Additional Information 3:    0a9e
      Additional Information 4:    0a9e372d3b4ad19135b953a78882e789

  • How to pass table data to brf plus application through abap program

    Dear All,
    i have a question related to BRF Plus management through abap program.
    In brf plus application end, Field1,field2,field3 these 3 are importing parameters.
                                           Table1->structure1->field4,field5 this is the table,with in one structure is there and 2 fields.
    in my abap program, i am getting values of fields let us take field1,field2,field3,field4,field5.
    And my question is
    1) How to pass fields to BRF Plus application from abap program.
    2)How to pass Table data to BRF Plus application from abap program.
    3)How to pass Structure data to BRF Plus application from abap program.
    4)How to get the result data from BRF Plus application to my abap program.
    And finally , how to run FDT_TEMPLATE_FUNCTION_PROCESS.
    How do i get the code automatically when calling the function in brf plus application.
    Regards
    venkata.

    Hi Prabhu,
    Since it is a Custom Fm i cant see it in my system.
    Look if u want to bring data in internal table then there could be two ways::
    1) your FM should contain itab in CHANGING option , so that u can have internal table of same type and pass through FM,
    2) read values one by one and append to internal table.
    Thanks
    Rohit G

  • Composite Application with a Task Flow and form created manually

    Hi,
    I'm using Oracle SOA Suite 11G and i'm trying to create a task form for a human task without using the auto generate wizards and i'm having trouble getting the form to show in BPM worklist.
    I have followed instructions in the developers guide to create the form against the human task including the following
    27 Designing Task Forms for Human Tasks
    27.4.3 How To Create a Task Form Using the Complete Task with Payload Drop Handler
    27.8 Deploying a Composite Application with a Task Flow
    After i deploy and test, the task appears and works correctly in BPM worklist, but the form does not show. This is when i have the task form within a composite application or in a separate project. When i generate the form automatically using the wizards, this all works fine.
    Updated: Noticed that when i create the task form manually and deploy it does not create entries as per instructions
    20.3 Managing the URI of the Human Task Service Component Task Details Application
    I have the details in hwtaskflow.xml, but for some reason, they are not automatically created... It is annoying to have this created each time...
    Am i missing something? I don't see any errors in BPM worklist or on the server. Any advice would be appreciated.
    Thanks
    Edited by: user5535771 on Mar 12, 2010 5:01 PM

    Hi Duncan,
    Thanks for your reply.
    The later option of not using Query_Only would involve massive custmizations, as there are so many forms apart from the absence forms.
    There is just one taskflow that contains the person, assignment, Absence and SIT screen, how can we do like an standalone absence screen does not have tehe query only as Yes.
    Please let me know in case you dint get me i will mention my development steps in points.
    Many Thanks,
    Vineet

  • Using a LabVIEW application as default program for opening files

    Google has returned nothing useful on this.  I want to use a built LabVIEW application to open data files from the Windows desktop. It is easy to edit the Windows registry to set the application as default program - but I'm not sure how to set the event in LabVIEW to open the file.  Any suggested reading?
    Solved!
    Go to Solution.

    I have done this before...I have a small LabVIEW .exe which looks at the version of a VI and selects the appropriate version of LabVIEW to open it with if available. It also adds explorer context menu items for allowing you pick a specific version of LabVIEW to open the file with.
    This is a rough idea of the registry keys for adding a program to handle specific file types and to add items to the shell menu in the installer:
    Add your own 'LabVIEWOpenWithVersion' key and then add the key name to the OpenWithProgids for the file extensions you want to be able to open with your application. The command part looks like this:
    Look at the Windows/MSDN help for what the different keys mean and how they are used, I think you can also set a key to make one of your handlers (e.g. Open, openWithLV) the default for the file type.
    For getting the file that was opened 'with' your application, use the App.Args property, ignoring the first item (which is always LabVIEW) in the array.
    Certified LabVIEW Architect, Certified TestStand Developer
    NI Days (and A&DF): 2010, 2011, 2013, 2014
    NI Week: 2012, 2014
    Knowledgeable in all things Giant Tetris and WebSockets

  • Error message - A breakpoint in an application indicates a program error.

    Hi All,
    We are getting an error message when we run the Mobile Client Application saying that 'A breakpoint in an application indicates a program error. After this dialog is dismissed, the application will continue running, but it may be in an unstable state'. Anyways, on clicking the Close button of that SAP UIFramework MobileClient executable component .Net error window, it doesnot help us to continue with the application and it closes the application.
    There is no breakpoint set in the source code when this error occurs and some times, this error occurs even when there is no source code kept opened too, while running the application exe.
    Please can you help me in it as its a high priority one and i couldnt find any other worthful e-stuffs related to it too. This issue seems to be strange and I have never come across before. So couldnt proceed with this task. Please help me in it.
    Thanks in Advance!
    Priya

    Shankar,
    Thanks for your immediate response. Its very true that its a generic problem.
    Along with it, if they have used some internal breakpoints like 'Stop' command in the code, this error message occurs. Have controlled it by adding an error handler instead of using this stop command which appears to be like an application stopper. Thanks for your valuable suggestion regarding it.
    Thanks,
    Priya

  • Booleans to control programming flow

    Is it ok to use booleans within an object to control program flow in an Object Oriented approach?
    For eg: I have 2 tables in the database which are related. Some times both the tables need to be updated, other times, just 1 table.
    One approach would be to have 2 separate methods in the Data Acces object which handle these situtions, as this seems to be cleaner. However, another approach would be to send all the data along with a boolean to the Data Access Object and let the Data Access object make the decision of which tables to update by checking the boolean.
    Please tell me which approach is better and more Object oriented.

    1. How often will the Two tables be updated together.(Not a major factor)
    2. Keep both methods you mentioned.
    3. Create a new method that takes the boolean and the data to update.
    and use this in it:
        (boolean)?FirstMethod:SecondMethod;
       If boolean is true then it calls FirstMethod else SecondMethod.
    Anyone else think of anything?

  • Execute bsp application from abap program

    How can I do to execute a bsp application from abp program ?
    I have two parameter in enter : text and language.
    And i have one paramenter in exit : translated text.
    Thanks for you help.

    but how to retrieve the result of the bsp ?
    Here is my source code :
    data: url type string,
             l_appl type string,
            l_page type string,
            l_params type line of TIHTTPNVP,
            params type TIHTTPNVP.
      l_appl = 'ZAPI_TRADUCTION'.
      l_page = 'appel.htm'.
      l_params-NAME = 'text'.
      l_params-value = 'pour le moment test'.
      append l_params to params.
      call method cl_http_ext_webapp=>create_url_for_bsp_application
        exporting
          bsp_application      = l_appl
          bsp_start_page       = l_page
          bsp_start_parameters = params
        importing
          abs_url              = url.
    DATA: http_client TYPE REF TO if_http_client .
    DATA: w_string TYPE string ,
          w_result TYPE string ,
          r_str    TYPE string .
    DATA: result_tab TYPE TABLE OF string.
      CLEAR w_string .
      w_string = url.
      CALL METHOD cl_http_client=>create_by_url
        EXPORTING
          url                = w_string
        IMPORTING
          client             = http_client
        EXCEPTIONS
          argument_not_found = 1
          plugin_not_active  = 2
          internal_error     = 3
          OTHERS             = 4.
          CALL METHOD http_client->send
        EXCEPTIONS
          http_communication_failure = 1
          http_invalid_state         = 2.
          CALL METHOD http_client->receive
        EXCEPTIONS
          http_communication_failure = 1
          http_invalid_state         = 2
          http_processing_failed     = 3.
      CLEAR w_result .
      w_result = http_client->response->get_cdata( ).
      REFRESH result_tab .
    In the variable it brings me back the html source code of the BSP rather than run and bring me the result of the BPS.
    Thank you for your help.

  • ABAP program flow.

    Hi,
    whenever i write abap program, i usually maintain following program flow.  is it right from performance tuning point of view?
    1) include statements
    2) DATABASE TABLES
    3)  VARIABLE DECLARATIONS
    4) SELECTION-SCREEN
    5) FIELD SYMBOLS
    6) INITIALIZATION
    7) AT SELECTION SCREEN
    8) TOP OF PAGE
    9) END OF PAGE
    10) START OF SELECTION
    11) END OF SELECTION
    Please advise
    Regards,
    Santosh

    Hello,
    Just to add to Kathick's explanation. ABAP is an event-driven programming language. The general flow of an ABAP program is controlled by events.
    It is a good -practice to code event processing blocks in the order in which they will be triggered during execution.  However, they do not have to be coded in a sequential order. 
    This is the first thing i learnt in ABAP basics class )
    BR,
    Suhas

  • How to stop the program flow

    Hi all,
    i need to stop the program flow control without entering into the start-of-selection.
    i am using some manual conditions for validating some parameter fields...
    i used Leave list-processing--->but it dosint works
    call selection-screen 1000--->it works but when i click the back button the control goes inside the start-of-selection can any one help me with this....

    If you want to stop the program flow in case one condition is satisfied, you can use STOP or EXIT command. Else, if you want to stop the program and debug it just but BREAK command where ever you want to stop the program. Also, if you want to validate the program selection at the time of entering the selection before the start of selection, you need to add AT SELECTION-SCREEN event block before the start of selection.

  • Don't know how to halt program flow

    I posted a message on the Event Handling forum. Since no one responded, I am refering it to this forum.
    The initial message is at
    http://forum.java.sun.com/thread.jsp?forum=424&thread=543756&tstart=0&trange=15
    I am new to Thread programming.
    I want to pause the current thread from an event handler (from mousePressed(), to be specific), then do some animation that accesses the GUI and then resume program flow.
    I tried various things, but no luck.
    SOMEONE PLEASE GUIDE ME.
    When the animation code is called and the thread is paused (by Thread.sleep()), the animation also pauses.
    When I try using SwingUtilities.invokeAndWait , the following runtime error occurs:
    "Cannot call invokeAndWait from the event dispatcher thread"

    But the problem is that when the computer makes move, it does it so fast that sometimes the user
    doesn't see which part of the panel is changing, wondering whether the program is making a legal
    move. So, after calculating the move but just before implementing it , I want to halt the program's flow,
    then animate (blink) the small region in the JPanel where the moves are going to be made (to draw
    user's attention) and then resume the program to make moveYou're not allowed to pause the event dispatch thread (EDT) - otherwise your program will freeze.
    I would suggest to use an event based solution:
      public void actionPerformed(ActionEvent ev) {
        // move holds information about what happened on the scene
        Move move = logic.calculateMove();
        new MoveClue(move).start();
      public class MoveClue implements ActionListener {
        private Move move;
        private Timer timer;
        private int count;
        public MoveClue(Move move) {
          this.move = move;
        public void start() {
          timer = new Timer(1000, this);
          timer.start();
          // perhaps you should block input to your panel, e.g. utilizing a glasspane
        public void actionPerformed(ActionEvent ev) {
          // display a clue using the information from the move object,
          // e.g change background color of a region
          if (counter++ > 5) {
            timer.stop();
            // unblock your panel
      }

  • ABAP Object program flow

    Hi all,
    I'm starting to play with ABAP Object, and am very comfortable with OO features (coming from Java).
    Currently, I am hesitating on the way to code my program flow. Let me explain:
    Is it common practice to manage the screens flow within methods (with SET SCREEN etc.)?
    I would think that this is kind of bad, since it requires local classes, and is simply kind of weird (to someone coming from Java anyway). Is continuing to handle this via MODULES and such still a good way to go?
    Thanks for any enlightenment you can bring me.

    Hello,
    First, I din't mentioned that you said JAVA is better. I just said the things what u can do in JAVA u can achieve and there is a way in ABAP also. I tihnk u misunderstood my statements. :)..no hard feelings...
    Ok.
    BADI's are kind of Exits. To make it in a simple statement SAP has provided us with a way to enhance the business process.
    For example, assume that a business process goes thru step 1, step 2 and so on. Inbetween step1 and step2 you want to do something. For this SAP has provided some standard interface, which will get the information about the business process in step1 in to it. You can make use of that and customize according to your requirement.
    Send me you mail ID I will forward good document on BADI's.
    Regs,
    Venkat Ramanan N

Maybe you are looking for

  • Locked out of my mac. Please help

    Hi I was experiencing something strange on my mac that meant every time I clicked a link from a google search it was always adding the link to my Reading List but never opening the link. After trying many things I also found that siem of my key funct

  • Report Builder Question - OA AR Aging - and a general question

    I'm sure this is the wrong forum for this question, but I thought there might be someone here who might be using Oracle Applications and Report Builder who'd be kind enough to help me out. We've recently implemented Oracle Applications 11.5.10 and I

  • [CS3] [JS] add XML  Element to Insertion Points

    hi list, i'll do some text parsing in indesign cs3 intended to add some xml elements to my document. i just wonder why i can't markup an insertion point. is the following approach correct? The code works fine, only the return value (stored in the _xm

  • DOUBLE Quantity from CUBE to APO

    Hello All, I am trying to load the data from the cube to APO - DP interactive planning via transaction /SAPAPO/TSCUBE. I loaded once and then reloaded second time. The quantity for the cube for a product is 70. When I loaded first time and saw in the

  • Invoice for builder working on BT customers house.

    It am a builder working on a BT customers home..while we where having some deliveries the lorry driver managed to snap the phone line cable..... This has now been repaired and very quickly to be fair..problem is the lorry driver is going to pay for t