JDAPI documentation

Hi all,
a quick question...
Where can I find the JDAPI documentation online?
I've been looking for it, but I can't find it...
I had also a link to the Oracle Forms 10g documentation, but this one is gone too.
(http://www.oracle.com/webapps/online-help/forms/10g/state?navSetId=_&navId=0)
Thanks.
Gert

<p>Actually, I've found the documentation here</p>
Francois

Similar Messages

  • Availability of JDAPI documentation

    Team,
    I am trying to locate the documentation available for JDAPI (Java Development API) for Oracle forms 9i. Does anyone has information about it?
    Would appreciate any help.
    Thank you,
    Rajesh Gupta
    [email protected]

    Matt,
    there is a zip-file on OTN under the Forms6i section about openness and integration called launchpad. It contains a PDF explaining the basics and some C++ examples.
    You also might want to checkout www.orcl-toolbox.com - FormsAPI Master also gives you access to the API, but in a PL/SQL style scripting language , instead of C++. The example scripts that come with it are quite useful to learn more about using the API (even if you use the oracle C++ API).
    Cheers,
    Stefan

  • 9i Forms JDAPI documentation

    Team,
    I am designing an application using Java Development APIs available in Oracle 9i forms. Does anyone has information on the availability of documentation on JDAPI?
    Appreciate your help,
    Rajesh Gupta
    [email protected]

    Did you check the online help there is a whole chapter there.
    Also install the Oracle9i Forms demos and have a look at:
    forms90/demos/jdapi
    Forms90/demos/metadatabrowser

  • JDAPI and XMLTOOLS javadoc

    Hi,
    Where can I find a javadoc description of the JDAPI and XMLTOOLS framework for Forms10g? I need it to change some properties in forms in batch. Some usage examples are welcome too.
    Regards,
    Roel

    Hello,
    <p>JDAPI documentation, and the list of JDAPI integer constants.</p>
    Francois

  • JDAPI DETACH()

    My purpose is to convert "windows-developed" .fmb files to run on an AIX box (ie case-sensitive issues).
    I was advised (by Oracle) to avoid using DETACH() with the iterator current, so I copied the details and then re-visted them. Although I am able to attach libraries, I am unable to detach some.
    I'm no C expert, but I was also lead to believe that this problem exist in the C API too. Nevertheless, a working API to workaround case-sensitive issues remains my gaol.
    I have documented out -> detachId.detach();
    With detach() put back in, I get the error :-
    Connecting to un/pwd@dbase_aliasConnected to un/pwd@dbase_alias
    Processing form form1.fmbForm Name module is FORM1
    Examining menuAttached Menu needs changing=FO_MENU
    Examining librariesAttached Library requires no change=d2kwutil
    Attached Library name to be changed=allpack
    Attached Library requires no change=allproc
    Attached Library name to be changed=allshare
    Attached Library requires no change=webutil
    Detachingd2kwutil
    ALLPACK
    allproc
    ALLSHARE
    Exception in thread main
    webutil
    Attachingoracle.forms.jdapi.JdapiIllegalStateException: Null d2fob pointer at oracle.forms.jdapi.BaseFormsObject.getStringProperty(Unknown Source)
         at oracle.forms.jdapi.AttachedLibrary.getName(Unknown Source)
         at fixForm.main(fixForm.java:146)
    Process exited with exit code 1.
    import java.io.*;
    import oracle.forms.jdapi.*;
    public class fixForm
    static FormModule fmb;
    public static void main(String[] args)
    String debug="";
    String formName="";
    String menuName="";
    String libName="";
    String connString="";
    String pad=" ";
    String line="------------------------------------------------------------------------------";
    boolean menuIsChanged = false;
    boolean libIsChanged = false;
    AttachedLibrary[] arrayOfLibs = new AttachedLibrary[15];
    AttachedLibrary attachId;
    AttachedLibrary detachId;
    int noOfLibs = 0;
    if (args.length != 3)
    System.out.println("");
    System.out.println(line);
    System.out.println("Usage: java fixForm <module name> <user/password@connectString> <Debug>");
    System.out.println(" eg java fixForm form1.fmb un/pwd@dbase_alias Y");
    System.out.println(line);
    //System.exit(0);
    formName = "form1.fmb";
    connString = "un/pwd@dbase_alias";
    debug = "Y";
    else
    formName = args[0];
    connString = args[1];
    debug = args[2];
    // Connect to the database
    if (debug.equals("Y")) {System.out.println(">>> Connecting to " + connString);}
    Jdapi.connectToDatabase(connString);
    if (debug.equals("Y")) {System.out.println(pad+"Connected to " + connString);}
    // Identify the form.
    if (debug.equals("Y")) {System.out.println(">>> Processing form " + formName);}
    fmb = FormModule.open(formName);
    if (debug.equals("Y")) {System.out.println(pad+"Form Name module is " + fmb.getName());}
    // Identify the menu, if applicable.
    if (debug.equals("Y")) {System.out.println(">>> Examining menu");}
    menuName = fmb.getMenuModule();
    // See if set.
    if ( (menuName.length() == 0) | (menuName.toUpperCase() == "DEFAULT") )
    if (debug.equals("Y")) {System.out.println(pad+"Menu is blank, or default");}
    else
    // Check case sensitivity is lower case.
    if (menuName == menuName.toLowerCase())
    if (debug.equals("Y")) {System.out.println(pad+"Attached Menu is fine=" + menuName);}
    // Otherwise, re-attach with correct case sensitivity.
    else
    if (debug.equals("Y")) {System.out.println(pad+"Attached Menu needs changing=" + menuName);}
    menuIsChanged = true;
    try
    fmb.setMenuModule(menuName.toLowerCase());
    catch(Exception e1)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not re-attach menu "
    + menuName.toLowerCase());
    System.out.println(line);
    System.exit(0);
    // Identify all associated libraries.
    JdapiIterator all_libs = fmb.getAttachedLibraries();
    // Process the above list of attached libraries
    if (debug.equals("Y")) {System.out.println(">>> Examining libraries");}
    while (all_libs.hasNext())
    noOfLibs++;
    // Identify each library name.
    AttachedLibrary lib = (AttachedLibrary)all_libs.next();
    arrayOfLibs[noOfLibs] = lib;
    libName = lib.getLibraryLocation();
    // See if it's not all lower case
    if (libName == libName.toLowerCase())
    if (debug.equals("Y")) {System.out.println(pad+"Attached Library requires no change=" + libName);}
    else
    libIsChanged = true;
    libName = libName.toLowerCase();
    if (debug.equals("Y")) {System.out.println(pad+"Attached Library name to be changed=" + libName);}
    // If their are case-sensitive libs, then re-build the attachments accordingly.
    if (libIsChanged = true)
    // Now we have the list, de-attach all libraries.
    if (debug.equals("Y")) {System.out.println(">>> Detaching");}
    for (int j = 1; j <= noOfLibs; j++)
    detachId = arrayOfLibs[j];
    libName = detachId.getLibraryLocation();
    if (debug.equals("Y")) {System.out.println(pad+libName);}
    try
    //detachId.detach();
    catch(Exception e2)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not detach library "
    + libName);
    System.out.println(line);
    System.exit(0);
    // Now that no libs are attached, re-attach, based on list.
    if (debug.equals("Y")) {System.out.println(">>> Attaching");}
    for (int k = 1; k <= noOfLibs; k++)
    attachId = arrayOfLibs[k];
    libName = attachId.getName().toLowerCase();
    if (debug.equals("Y")) {System.out.println(pad+libName);}
    try
    AttachedLibrary new_lib = new AttachedLibrary(fmb,libName);
    catch(Exception e3)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not attach library "
    + libName);
    System.out.println(line);
    System.exit(0);
    // If the form has been changed, then compile and save.
    if (menuIsChanged | libIsChanged)
    // Compile the form to create a fmx.
    if (debug.equals("Y")) {System.out.println(">>> Compiling");}
    try
    fmb.compile();
    catch(Exception e4)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not recompile");
    System.out.println(line);
    System.exit(0);
    // Save the form.
    if (debug.equals("Y")) {System.out.println(">>> Saving");}
    try
    fmb.save(formName);
    catch(Exception e5)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not save");
    System.out.println(line);
    // Free the underlying native object
    fmb.destroy();
    // Shutsdown the Jdapi instance
    Jdapi.shutdown();
    if (debug.equals("Y")) {System.out.println(">>> Quiting");}
    I would be very grateful if you are able to offer me some advice here.
    Rgds,
    Mark . Spooner @ Investmaster . Com

    My purpose is to convert "windows-developed" .fmb files to run on an AIX box (ie case-sensitive issues).
    I was advised (by Oracle) to avoid using DETACH() with the iterator current, so I copied the details and then re-visted them. Although I am able to attach libraries, I am unable to detach some.
    I'm no C expert, but I was also lead to believe that this problem exist in the C API too. Nevertheless, a working API to workaround case-sensitive issues remains my gaol.
    I have documented out -> detachId.detach();
    With detach() put back in, I get the error :-
    Connecting to un/pwd@dbase_aliasConnected to un/pwd@dbase_alias
    Processing form form1.fmbForm Name module is FORM1
    Examining menuAttached Menu needs changing=FO_MENU
    Examining librariesAttached Library requires no change=d2kwutil
    Attached Library name to be changed=allpack
    Attached Library requires no change=allproc
    Attached Library name to be changed=allshare
    Attached Library requires no change=webutil
    Detachingd2kwutil
    ALLPACK
    allproc
    ALLSHARE
    Exception in thread main
    webutil
    Attachingoracle.forms.jdapi.JdapiIllegalStateException: Null d2fob pointer at oracle.forms.jdapi.BaseFormsObject.getStringProperty(Unknown Source)
         at oracle.forms.jdapi.AttachedLibrary.getName(Unknown Source)
         at fixForm.main(fixForm.java:146)
    Process exited with exit code 1.
    import java.io.*;
    import oracle.forms.jdapi.*;
    public class fixForm
    static FormModule fmb;
    public static void main(String[] args)
    String debug="";
    String formName="";
    String menuName="";
    String libName="";
    String connString="";
    String pad=" ";
    String line="------------------------------------------------------------------------------";
    boolean menuIsChanged = false;
    boolean libIsChanged = false;
    AttachedLibrary[] arrayOfLibs = new AttachedLibrary[15];
    AttachedLibrary attachId;
    AttachedLibrary detachId;
    int noOfLibs = 0;
    if (args.length != 3)
    System.out.println("");
    System.out.println(line);
    System.out.println("Usage: java fixForm <module name> <user/password@connectString> <Debug>");
    System.out.println(" eg java fixForm form1.fmb un/pwd@dbase_alias Y");
    System.out.println(line);
    //System.exit(0);
    formName = "form1.fmb";
    connString = "un/pwd@dbase_alias";
    debug = "Y";
    else
    formName = args[0];
    connString = args[1];
    debug = args[2];
    // Connect to the database
    if (debug.equals("Y")) {System.out.println(">>> Connecting to " + connString);}
    Jdapi.connectToDatabase(connString);
    if (debug.equals("Y")) {System.out.println(pad+"Connected to " + connString);}
    // Identify the form.
    if (debug.equals("Y")) {System.out.println(">>> Processing form " + formName);}
    fmb = FormModule.open(formName);
    if (debug.equals("Y")) {System.out.println(pad+"Form Name module is " + fmb.getName());}
    // Identify the menu, if applicable.
    if (debug.equals("Y")) {System.out.println(">>> Examining menu");}
    menuName = fmb.getMenuModule();
    // See if set.
    if ( (menuName.length() == 0) | (menuName.toUpperCase() == "DEFAULT") )
    if (debug.equals("Y")) {System.out.println(pad+"Menu is blank, or default");}
    else
    // Check case sensitivity is lower case.
    if (menuName == menuName.toLowerCase())
    if (debug.equals("Y")) {System.out.println(pad+"Attached Menu is fine=" + menuName);}
    // Otherwise, re-attach with correct case sensitivity.
    else
    if (debug.equals("Y")) {System.out.println(pad+"Attached Menu needs changing=" + menuName);}
    menuIsChanged = true;
    try
    fmb.setMenuModule(menuName.toLowerCase());
    catch(Exception e1)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not re-attach menu "
    + menuName.toLowerCase());
    System.out.println(line);
    System.exit(0);
    // Identify all associated libraries.
    JdapiIterator all_libs = fmb.getAttachedLibraries();
    // Process the above list of attached libraries
    if (debug.equals("Y")) {System.out.println(">>> Examining libraries");}
    while (all_libs.hasNext())
    noOfLibs++;
    // Identify each library name.
    AttachedLibrary lib = (AttachedLibrary)all_libs.next();
    arrayOfLibs[noOfLibs] = lib;
    libName = lib.getLibraryLocation();
    // See if it's not all lower case
    if (libName == libName.toLowerCase())
    if (debug.equals("Y")) {System.out.println(pad+"Attached Library requires no change=" + libName);}
    else
    libIsChanged = true;
    libName = libName.toLowerCase();
    if (debug.equals("Y")) {System.out.println(pad+"Attached Library name to be changed=" + libName);}
    // If their are case-sensitive libs, then re-build the attachments accordingly.
    if (libIsChanged = true)
    // Now we have the list, de-attach all libraries.
    if (debug.equals("Y")) {System.out.println(">>> Detaching");}
    for (int j = 1; j <= noOfLibs; j++)
    detachId = arrayOfLibs[j];
    libName = detachId.getLibraryLocation();
    if (debug.equals("Y")) {System.out.println(pad+libName);}
    try
    //detachId.detach();
    catch(Exception e2)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not detach library "
    + libName);
    System.out.println(line);
    System.exit(0);
    // Now that no libs are attached, re-attach, based on list.
    if (debug.equals("Y")) {System.out.println(">>> Attaching");}
    for (int k = 1; k <= noOfLibs; k++)
    attachId = arrayOfLibs[k];
    libName = attachId.getName().toLowerCase();
    if (debug.equals("Y")) {System.out.println(pad+libName);}
    try
    AttachedLibrary new_lib = new AttachedLibrary(fmb,libName);
    catch(Exception e3)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not attach library "
    + libName);
    System.out.println(line);
    System.exit(0);
    // If the form has been changed, then compile and save.
    if (menuIsChanged | libIsChanged)
    // Compile the form to create a fmx.
    if (debug.equals("Y")) {System.out.println(">>> Compiling");}
    try
    fmb.compile();
    catch(Exception e4)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not recompile");
    System.out.println(line);
    System.exit(0);
    // Save the form.
    if (debug.equals("Y")) {System.out.println(">>> Saving");}
    try
    fmb.save(formName);
    catch(Exception e5)
    System.out.println(line);
    System.out.println("Error: "
    + formName
    + " could not save");
    System.out.println(line);
    // Free the underlying native object
    fmb.destroy();
    // Shutsdown the Jdapi instance
    Jdapi.shutdown();
    if (debug.equals("Y")) {System.out.println(">>> Quiting");}
    I would be very grateful if you are able to offer me some advice here.
    Rgds,
    Mark . Spooner @ Investmaster . Com

  • JDAPI with multi canvas form and LAF questions

    I'm trying to use jdapi to apply LAF project on my forms, it works great with simple forms, but with multi canvases and blocks form it doesn't apply LAF for all of them. I can follow the code of the done one for the rest, but i have questions:
    do i have to set a different bean for each block?
    who overrides, the bean or the property set for the item?
    and sorry i have another questions concerning LAF:
    can i define a new scheme, and if yes, how?
    if i want to show an image for a button, the path should be relative to what? as till now i failed to set an image for a button.
    Thanks

    Hello,
    I have just tested and the result is OK.
    I have built a Forms module with 2 content canvases, each one containing a block.
    After running the JDAPI_LAF tool, the new module contains a LAF_BLOCK with two Bean area, each one one a different canvas.
    <p>Concerning the image on the button, the syntax is explained in the documentation</p>
    See the SET_IMAGE method.
    Francois

  • Forms 9i: Documentation, Samples

    Are there any documentation or samples on how to use the JDAPI and XMLTOOLS packages for Forms 9i that can be downloaded? Draft versions of books would be very nice (or are there published books already?) Thanks.

    The Demo Set for Forms 9i comes with a bunch of JDAPI samples. You should see this downloadable from the Forms Pages in the next day or so,
    There is fairly extensive documentation on the JDAPI and the XML tools in the online help. We don't have any specific papers published yet.

  • Oracle9iDS Forms Developer JDAPI and XMLTOOLS Javadoc Missing

    Oracle9iDS Forms Developer JDAPI and XMLTOOLS Javadoc ZIP file is missing. When you click on http://otn.oracle.com/documentation/9i_forms.html and scroll down to to Javadoc section, click on zip link moves you to http://otn.oracle.com/documentation/index.html which is wrong. Please take action and fix it!
    Cheers,
    Andrej Zabkar

    Hi Andrej,
    Thankyou for the feedback.
    I have fixed the link, please try once again.
    Regards,
    Les

  • Where's the Oracle Forms Java API documentation for 11g?

    Hi,
    Can anyone point me in the direction of the Oracle Forms Java API documentation?
    The only thing I can find is this: http://www.oratransplant.nl/1012jdapiDoc/oracle/forms/jdapi/JdapiModule.html but this seems to be for 10.1.2 and it doesn’t correspond to the version I’m using (11.1.1.3).
    Help appreciated,
    Donal.

    i couldn't find the api either however if you implement the class you will simply get compiler errors explaining what you left out.

  • Documentation generator for Forms 6i

    Does a tool exists to document the code on triggers and procedures in Forms 6i files? For every single form , a program unit called p_documents is created, with no code to write the documentation in comments .. something like this ..
    Procedure p_documents is
    begin
    null;
    /* sequence DATe Block/proced/lov item trigger description
    1 03-17-08 b1 date1 when-validate-item the date can't be older than sysdate
    2 03-25-02 b2 address key-next-item .... ......
    3 p_new_data(prog. uni.) -- --- the value of :b2.days is set in null
    end;
    And then, i copy the respective lines on the program unit/trigger changed ..
    procedure p_new_data is
    begin
    /* sequence DATe Block/proced/lov item trigger description
    3 p_new_data(prog. uni.) -- --- the value of :b2.days is set in null
    if :b1. date1 ...
    end;
    Everytime somebody changes the code in a form we just add another line to the program unit p_documents and we have to update the comments on the trigger/program unit. It takes a lot of time. Can anyone suggest any better ideas, solutions, tools?
    Thanks :D
    Edited by: user12422762 on 22-abr-2010 11:54
    Edited by: user12422762 on 22-abr-2010 11:57

    If you simply want to copy your comments code you could create a routine with the Open API for this which copies your comments of your source code
    http://www.oracle.com/webapps/online-help/forms/10g/topics/f1_help/openapi/f50abopena.html
    (in 6i you'll have to write C code; in 10g you could write this using JDAPI in Java).
    If I get you right there is a program unit called p_documents which only consists of the program unit headers and their comments?
    If so you could loop over your program units etc., take the comments from there and dynamically create your p_document procedure. After a change is made to a procedure just start your OpenAPI Program for your fmb and generate the p_document procedure using the information of the other program units (as you are using subversion you could do this in a PRE-COMMIT client hook script if you are using TortoiseSVN 1.6+ so you can't forget this).
    Why you want to do this? Do you want to have a documentation for your forms procedures available in one place? If so: you might give FoReDoclet a shot: http://foredoclet.sourceforge.net/
    cheers

  • Want to use JDAPI to change RPRROREPORTSERVER parameter (11g)

    Hi:
    I need to change the form-level, RPROREPORTSERVER parameter across many 11g forms. Is there any way to use JDAPI to accomplish this?  Right now, if I want to change blocks or items I start with getBlocks or getItems and iterate thru each block and item and set the new values. Is there an equivalent syntax for parameters?
    Thanks!

    You could get an iterator for all the Parameters using getModuleParameters like
    FormModule module = FormModule.open("my.fmb");
    JdapiIterator iter = module.getModuleParameters();
    You'd then could go through all the Parameters like you do it with your blocks or items; you'd get a module parameter which you could change like this
    ModuleParameter param = [...];
    if(param.getName().equalsIgnoreCase("your_parameter"))
      param.setStringProperty(JdapiTypes.PARAMETER_INITIALIZE_VALUE_PTID, "your_value");
    For further informations on the JDAPI check the javadoc:
    http://www.oracle.com/technetwork/developer-tools/forms/documentation/jdapi904019-131445.zip
    cheers

  • JDAPI startup with parameters

    Hi,
    the JDAPI doc describes the parameter of method Jdapi.startup() as follows:
    Parameters:
    clientData - use client data mode
    noDecode - Don't decode program units when loading modules
    transMode - Use the special translation services
    Please can someone explain, what these parameters do and what the default values are, if we do not use startup() explicitly?
    We found, that some special characters - e.g. (c) - will be translated if we set transMode to true.
    Best regards,
    Ralph

    Hi Francois,
    it seems to be important.
    If we set transMode to TRUE, the copyright sign in labels will be displayed correctly but the initial values of radiogroup items, checkboxes and other non-text items disappear.
    If it is set to FALSE, the initial values are correct, but some special characters are displayed as question marks (?).
    In my opinion it has something to do with NLS, but the documentation of JDAPI is so bad ...
    BR,
    Ralph

  • Where can I find the JAR-File of the JDAPI-demo FormDumper ?

    Hi,
    I would like to compile the JDAPI-demo FormDumper
    and cannot find the right jar-file of :
    import oracle.forms.util.Getopt.*; .
    Thanks,
    Friedhold

    Ok there is no place to find the getopt file. forms 10.1.2.2.0) One needs the corrected version of the formdumper program which elimates calling it.
    btw to compile this one would need to do:
    set CLASSPATH=c:\devsuite\forms\java\frmjdapi.jar;
    javac FormDumper.java
    to run it I found this necessary:
    set CLASSPATH=c:\FormDumper.class;c:\devsuite\forms\java\frmjdapi.jar;
    java FormDumper c:\\mydirectory\\myform.fmb >myform.out
    /* modified version of the corrected version */
    /* Subject:      How To Implement The Code From 'A JDAPI Programming Example' From Forms Online Help?
         Doc ID:      Note:428083.1      Type:      HOWTO
         Last Revision Date:      23-APR-2007      Status:      PUBLISHED
    Applies to:
    Oracle Forms - Version: 9.0.5.2 to 10.1.2.2
    Information in this document applies to any platform.
    Goal
    The goal of this document is to explain how to make the sample code provided in the java class FormDumper 'A JDAPI Programming Example' from Forms OnLine help work.
    When used as it is provided in the documentation it fails, because 'import oracle.forms.util.getopt.*; not found'.
    Solution
    The sample code provided in the 'A JDAPI Programming Example' Forms OnLine help has the following line:
    import oracle.forms.util.getopt.*;
    When trying to compile the FormDumper.java the compilation fails with 'import oracle.forms.util.getopt.*; import not found'. This import fails due to the fact that util.jar library is not available with the standard Forms iDS. The solution to have the FormDumper class is to use another code in which util.jar is not used.
    Sample code to be used:
    import java.io.File;
    import java.io.PrintWriter;
    import java.io.FileWriter;
    import java.text.MessageFormat;
    import oracle.forms.jdapi.*;
    * Dumps passed forms JdapiObjects to an output stream as text.
    * Set command line options for more output, else only the
    * basic form tree structure will be dumped.
    * See printUsage for command line options.
    public class FormDumper {
         * Need this to parse the command line options
         * The string represents valid command options as detailed in the
         * Getopt class
        /* changed following b */
        /* boolean m_dumpAllProps = false;
    boolean m_dumpBoolProps = false;
    boolean m_dumpNumProps = false;
    boolean m_dumpTextProps = false;
    boolean m_dumpPropNames = false;
        boolean m_dumpAllProps = true;
        boolean m_dumpBoolProps = true;
        boolean m_dumpNumProps = true;
        boolean m_dumpTextProps = true;
        boolean m_dumpPropNames = true;
        String m_dumpPath = null;
         * Output stream, default to STDOUT */
        private PrintWriter m_out = new PrintWriter(System.out, true);
         * Use this to indent children
        private String m_indentation = "";
         * Constructor
        public FormDumper() {
         * Special constructor that does not take command line arguments.
         * @param out The output writer where to send dump information.
        public FormDumper(PrintWriter out) {
            m_out = out;
            m_dumpAllProps = true;
            m_dumpBoolProps = true;
            m_dumpNumProps = true;
            m_dumpTextProps = true;
            m_dumpPropNames = true;
         * Set the dump path.
         * @param path The file where the dumper must send the information
        public void setDumpPath(String path) {
            m_dumpPath = path;
         * Indirect output
        public void println(String s) {
            m_out.println(s);
         * Dump a form to the output stream
        public void dumpForm(String filename) throws Exception {
            FormModule fmb = FormModule.open(filename);
            System.out.println("Dumping module " + fmb.getName());
            if (m_dumpPath != null) {
                // use this form's FILE name to name the dump file
                String thisFormName = new File(filename).getName();
                thisFormName =
                        thisFormName.substring(0, (thisFormName.length() - 4));
                StringBuffer dmpFilename = new StringBuffer();
                dmpFilename.append(m_dumpPath);
                if (!dmpFilename.toString().endsWith("/")) {
                    dmpFilename.append("/");
                dmpFilename.append(thisFormName);
                m_out =
                        new PrintWriter(new FileWriter(dmpFilename.toString()), true);
            // Call the actual 'dump' method
            dump(fmb);
            // Dump the coordinate system used by the module
            m_indentation = " ";
            dump(new Coordinate(fmb));
            m_indentation = "";
            println("Dumped " + fmb.getName());
            // Close the module
            fmb.destroy();
         * Recursively dump a forms JdapiObject and its children to the output stream
        protected void dump(JdapiObject jo) {
            String className = jo.getClassName();
            // print out a context line for the JdapiObject
            // If it is a coordinate system, it does not have a name
            if (className.equals("Coordinate")) {
                println(m_indentation + "Coordinate System ");
            } else {
                println(m_indentation + className + " " + jo.getName());
            // Property classes need special treatment
            if (className.equals("PropertyClass")) {
                dumpPropertyClass((PropertyClass)jo);
            } else // Generically dump the required property types only
                if (m_dumpTextProps) {
                    dumpTextProps(jo);
                if (m_dumpBoolProps) {
                    dumpBoolProps(jo);
                if (m_dumpNumProps) {
                    dumpNumProps(jo);
                // Additionally, dump any Item list elements
                if (className.equals("Item")) {
                    dumpListElements((Item)jo);
            // use Form's metadata to get a list of all the child JdapiObjects this
            // JdapiObject can have b commented this
            JdapiMetaObject meta = JdapiMetadata.getJdapiMetaObject(jo.getClass());
            JdapiIterator props = meta.getChildObjectMetaProperties();
            JdapiMetaProperty prop = null;
            JdapiIterator iter = null;
            JdapiObject child = null;
            // loop through every possible kind of child JdapiObject this JdapiObject
            // can have b commented this
            while (props.hasNext()) {
                prop = (JdapiMetaProperty)props.next();
                // only bother if we can access these JdapiObjects
                if (!prop.allowGet()) {
                    continue;
                // get the actual values for the current child JdapiObject type,
                // e.g. get the Items on a Block
                iter = jo.getChildObjectProperty(prop.getPropertyId());
                // null is returned if there are no property values
                if (iter != null) {
                    // loop over every child value
                    while (iter.hasNext()) {
                        child = (JdapiObject)iter.next();
                        // recursively navigate to it
                        m_indentation += " ";
                        dump(child);
                        if (m_indentation.length() > 2)
                            m_indentation =
                                    m_indentation.substring(0, m_indentation.length() -
                                                            2);
         * Dump list elements
         * The JdapiObject is an item; if it is a list item,
         * dump the list elements.
         * @param item
        private void dumpListElements(Item item) {
            if (item.getItemType() == JdapiTypes.ITTY_LS_CTID) {
                if (m_dumpPropNames) {
                    println(m_indentation + "dumping list elements");
                for (int i = 1; i <= item.getListElementCount(); i++) {
                    String label = item.getElementLabel(i);
                    String value = item.getElementValue(i);
                    println(m_indentation + " " + i + ": '" + label + "' '" +
                            value + "'");
         * Dump the property class properties
        private void dumpPropertyClass(PropertyClass pc) {
            String propertyVal = null;
            // test for every single possible property
            // this is a bit hacky :)
            for (int propertyId = 1; propertyId < JdapiTypes.MAXIMUM_PTID;
                 ++propertyId) {
                if (!pc.hasProperty(propertyId)) {
                    continue; // this property is not in the set
                if (pc.hasDefaultedProperty(propertyId) && !m_dumpAllProps) {
                    continue;
                Class pt = JdapiMetaProperty.getPropertyType(propertyId);
                if (pt == Boolean.class) {
                    if (m_dumpBoolProps) {
                        propertyVal =
                                String.valueOf(pc.getBooleanProperty(propertyId));
                } else if (pt == Integer.class) {
                    if (m_dumpNumProps) {
                        propertyVal =
                                String.valueOf(pc.getIntegerProperty(propertyId));
                } else if (pt == String.class) {
                    if (m_dumpTextProps) {
                        propertyVal = pc.getStringProperty(propertyId);
                if (null != propertyVal) {
                    if (m_dumpPropNames) {
                        println(m_indentation + " " +
                                JdapiMetaProperty.getPropertyName(propertyId) +
                                " " + // changed by b
                                propertyVal);
                    } else {
                        println(m_indentation + propertyVal);
                    propertyVal = null;
            } // End loop over every property
         * Dump the source JdapiObject text properties
        private void dumpTextProps(JdapiObject jo) {
            JdapiMetaObject meta = JdapiMetadata.getJdapiMetaObject(jo.getClass());
            JdapiIterator props = meta.getStringMetaProperties();
            // for each text property
            while (props.hasNext()) {
                JdapiMetaProperty prop = (JdapiMetaProperty)props.next();
                int propertyId = prop.getPropertyId();
                String propertyVal = null;
                try {
                    propertyVal = jo.getStringProperty(propertyId);
                } catch (Exception e) {
                    println(m_indentation + "Could_not_get_property " +
                            JdapiMetaProperty.getPropertyName(propertyId));
                    continue;
                if (jo.hasProperty(propertyId) &&
                    (m_dumpAllProps || !(jo.hasDefaultedProperty(propertyId)))) {
                    if (m_dumpPropNames) {
                        println(m_indentation + " " +
                                JdapiMetaProperty.getPropertyName(propertyId) +
                                " " + propertyVal);
                    } else {
                        println(m_indentation + propertyVal);
         * Dump the source JdapiObject boolean properties
        private void dumpBoolProps(JdapiObject jo) {
            JdapiMetaObject meta = JdapiMetadata.getJdapiMetaObject(jo.getClass());
            JdapiIterator props = meta.getBooleanMetaProperties();
            // for each boolean property
            while (props.hasNext()) {
                JdapiMetaProperty prop = (JdapiMetaProperty)props.next();
                int propertyId = prop.getPropertyId();
                boolean propertyVal = false;
                try {
                    propertyVal = jo.getBooleanProperty(propertyId);
                } catch (Exception e) {
                    println(m_indentation + "Could_not_get_property " +
                            JdapiMetaProperty.getPropertyName(propertyId));
                    continue;
                if (jo.hasProperty(propertyId) && (m_dumpAllProps)) {
                    if (m_dumpPropNames) {
                        println(m_indentation + " " +
                                JdapiMetaProperty.getPropertyName(propertyId) +
                                " " + propertyVal);
                    } else {
                        println(m_indentation + propertyVal);
         * Dump the source JdapiObject numeric properties
        private void dumpNumProps(JdapiObject jo) {
            JdapiMetaObject meta = JdapiMetadata.getJdapiMetaObject(jo.getClass());
            JdapiIterator props = meta.getIntegerMetaProperties();
            // for each numeric property
            while (props.hasNext()) {
                JdapiMetaProperty prop = (JdapiMetaProperty)props.next();
                int propertyId = prop.getPropertyId();
                int propertyVal = 0;
                try {
                    propertyVal = jo.getIntegerProperty(propertyId);
                } catch (Exception e) {
                    println(m_indentation + "Could_not_get_property " +
                            JdapiMetaProperty.getPropertyName(propertyId));
                    continue;
                if (jo.hasProperty(propertyId) &&
                    (m_dumpAllProps || !(jo.hasDefaultedProperty(propertyId)))) {
                    if (m_dumpPropNames) {
                        println(m_indentation + " " +
                                JdapiMetaProperty.getPropertyName(propertyId) +
                                " " + propertyVal); //changed by b
                    } else {
                        println(m_indentation + propertyVal);
         * Output usage info to STDOUT
        public void printUsage() {
            System.out.println("");
            System.out.println("Jdapi Form Dumper Utility");
            System.out.println("Valid arguments:");
            System.out.println("-a : dump all properties, not just overridden ones");
            System.out.println("-b : dump boolean properties");
            System.out.println("-n : dump numeric properties");
            System.out.println("-t : dump text properties");
            System.out.println("-p : dump property names, not just values");
            System.out.println("-o : file path to output to");
         * Main method
        public static void main(String[] args) throws Exception {
            FormDumper dmp = new FormDumper();
            for (int i = 0; i < args.length; i++) {
                dmp.dumpForm(args);
    System.out.println("");
    System.out.println("Dumps complete");
    System.out.println("");
    Message was edited by:
    Jan Carlin

  • Create Menu Modules dynamically with JDAPI

    Hi everyone:
    I'm trying to create and compile menu modules dynamically based on a table,and I find out that using the JDAPI this task may could be done.
    The problem is that we have a logon page and we need to load different menus depending on the user permissions and because our menus grow and change constantly, we would like acomplish this dynamically with out having to change the source code every time a change is made (we only change the table).
    Is it possible to call this programs from oracle form at run time to create the menu modules and then continue working as usual, and if it is possible where I can find documentation about this.
    Any idea will be very helpfull. Thanks

    I guess you could import the JDAPI class files into a forms module and call the java to create a menu file. Why don't you use the menu security instead? With that you can have a menu that has all the menus you'll ever use and based on the roles you assign each user the function will hide or shoe the menus and menu items that the role is allowed to see.

  • Issue with creation of custom layouts using SAP Help Documentation

    Hi Experts,
    My requirement is to create a home custom page layout (using web dynpro) in Composite Environment. The default options available in CE are not useful for me. I set out to make a custom layout using the following this SAP Help Documentation: [          Creating a Web Dynpro Page Layout (SAP Library - Using the Portal as a Frontend)|https://cw.sdn.sap.com/cw/docs/DOC-102846]
    I have followed the instructions and followed all the steps, yet I fail to see the application in CE. The custom page layout is not displayed neither in options and is not available any where.
    Please let me know if anybody followed these steps and have got any success.
    Thanks in advance
    Srikant

    Hi
    Can somebody let me know if they have implemented a customised solution of creation of page layouts using Web Dynpro - as per the steps suggested by SAP.
    Thanks in advance
    Srikant

Maybe you are looking for

  • BAPI_ACC_DOCUMENT_POST how to post a document relate with assets

    Hello all, I'm using this BAPI to replicate the financial accounting flow. I've achieved to post almost of document types but asset documents. I've got the following error: "Account 'Contra account: Acquisition value' could not be found for area 01"

  • Mail-Sender-Adapter, FetchReport

    Hello, can anyone explain me how to use the FetchReport option in the Mail-Sender-Adapter? In the Adapter-Audit-Protocol the Adapter I always get an error. The SAP-Help pages are not very helpful, an in SDN there are no articles about this. kind rega

  • Payment Details not showing up

    When I go to my supscription status it says my account will automatically renew. I want to cancel because I don't want to get charged again. My payment details will not show up and there is no cancel button anywhere.

  • Skype Manager account - No access

    Dear All! I am one of the administors of our Skype Manager account. Today all administors have got a message that we were removed from our Skype Manager. When we login with our usual user and password no details to our skype manager account is shown.

  • Getting hold of browsers document object, from an applet

    Well, at least that's how i think the problem will be solved. The purpose is to insert some text into a hidden field on a form in the html where the applet is embedded. so that this can be submitted along with the rest of the information that is ente