JExportTo CDF on Essbase 7.1

Has anyone been able to use the JExportTo custom defined function on 7.x? It worked fine for us on 6.5.4, but I get a syntax error when I try it on 7.1. We installed and registered as instructed (the same as we did on 6.5.4), and it indicated that the registration script ran successfuly.I'm just wondering if maybe this CDF does not work with 7.x?Thanks in advance for your suggestions!Andy

You have to uncomment the line from essbase.cfg with JvmModuleLocation.

Similar Messages

  • @JExportTo CDF

    Is it possible to include the value of an attribute dimension when using the @JExport CDF? I tried including the value of Pkg Type in an export to exportRDB.mdb. The field came across populated with a value of @_NULLMEM. Thank you.

    How are you passing the Attribute value? You will get @_NULLMEM if you are using @name(@currmbr("Pkg Type"))You should use:@ATTRIBUTESVAL("Pkg Type").You can also use @ATTRIBUTEVAL and @ATTRIBUTEBVAL for numerical and Boolean types respectively.

  • Steps to install Custom Defined Function in Essbase and Planning

    Hi,
    We want to write some CDF in Essbase which we can use in Calc Scripts in Essbase and Business Rule in Planning.
    Can someone plz share the steps describing which all files to update how to install and configure. Details will be helpful.
    Regards,
    GS

    By the name, with parameters you were defining :)
    For example,
    @JExportTo("file","c:/flat.txt",",","",
    @LIST(
    @NAME(@CURRMBR(Market)),
    @NAME(@CURRMBR(Product)),
    @NAME(@CURRMBR(measures)),
    @NAME(@CURRMBR(year))),
    @LIST(actual,budget,Variance))

  • Java cdf and @CURRMBR

    Hi cdf experts,
    I have a question regarding @CURRMBR when used in a cdf. (Essbase 9.3.1)
    To track down a problem I've written a simple cdf which just echos the number and accepts an additional array of strings, which do nothing:
    @JEchoNumber
         public static double EchoNumber(String[] strArgs, double dblArg) {
              System.out.println("EchoNumber");
              return dblArg;
    Then I have taken the Sample.Basic database, cleared all data and imported just two numbers to create two blocks
    imported data
    "Sales" "COGS" "Marketing" "Payroll" "Misc" "Opening Inventory" "Additions" "Ending Inventory"
    "100-10" "New York"
    "Jan" "Budget" #MI #MI #MI #MI #MI 10010 #MI #MI
    "100-20" "New York"
    "Jan" "Budget" #MI #MI #MI #MI #MI 10020 #MI #MI
    Now I've written the follwing calc script:
    FIX(
         "Jan",
         "Opening Inventory",
         "Budget",
         @RELATIVE("Product",0)
         "New York" (
              @JEchoNumber (@LIST(@NAME("Budget")),"New York");
         "New York" (
              @JEchoNumber (@LIST(@NAME(@CURRMBR (Scenario))),"New York");
    ENDFIX;
    the log shows me the following:
    [Wed Dec 01 13:40:57 2010]Local/Sample/Basic/hypuser/Info(1012668)
    Calculating [ Market(New York)] with fixed members [Year(Jan); Measures(Opening
    Inventory); Product(100-10, 100-20, 100-30, 200-10, 200-20, 200-30, 200-40, 300-
    10, 300-20, 300-30, 400-10, 400-20, 400-30, 100-20, 200-20, 300-30); Scenario(Bu
    dget)]
    [Wed Dec 01 13:40:57 2010]Local/Sample/Basic/hypuser/Info(1012677)
    Calculating in serial
    EchoNumber
    EchoNumber
    [Wed Dec 01 13:40:57 2010]Local/Sample/Basic/hypuser/Info(1012717)
    Remote bitmap cache is [Disabled]
    [Wed Dec 01 13:40:57 2010]Local/Sample/Basic/hypuser/Info(1012668)
    Calculating [ Market(New York)] with fixed members [Year(Jan); Measures(Opening
    Inventory); Product(100-10, 100-20, 100-30, 200-10, 200-20, 200-30, 200-40, 300-
    10, 300-20, 300-30, 400-10, 400-20, 400-30, 100-20, 200-20, 300-30); Scenario(Bu
    dget)]
    [Wed Dec 01 13:40:57 2010]Local/Sample/Basic/hypuser/Info(1012677)
    Calculating in serial
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    EchoNumber
    [Wed Dec 01 13:40:57 2010]Local/Sample/Basic/hypuser/Info(1012579)
    Total Calc Elapsed Time for [_test.csc] : [0.047] seconds
    And finally the question:
    The first @JEchoNumber is called twice, ie for each existing block, That is the expected behaviour.
    The second @JEchoNumber is apparently called for each Product, even though the blocks do not exist. Why is that? An how could I write a cdf, that gets the current member without having the calc script loop over the data range defined in the fix?
    Anbody a suggestion?

    I managed to fix this problem. The batch script which was being called from the Java class did not have an exit statement at the end. I included that and the problem with application crashing got resolved. It looks like maybe the script is locked in memory or something like that.
    The exact reason as to how this would affect .esm file in the database is still not clear to me. Any clarifications would be great.
    Thanks,
    Arun
    [email protected]

  • Unable to start Essbase app when activating JVM in Essbase.cfg

    Hi,
    I am using Essbase 6.5.3, one of my application that uses a CDF won't start when activating the JVM in Essbase.cfg. Please help. Thanks.

    I have successfully tested CDF in Essbase v6.5.7.
    Can you please answer below questions.
    1. Did you place the CDF file at respective location ?(Normally, there is a JAVA directory and you can place in that directory or create a new directory and place it in that directory under JAVA)
    2. Did you update udf.policy file? Updating this file is required if you are using a cdf function like JExport which will extract the data and store in a file or database.
    3. Did you set the JVM to the correct location? When you start an application are you getting a message like "JVM Initialization Failed". If the message appears, then the possible cause would be with your JVM setting.
    4. Did you register the function to that specific application? You can register it directly from Application manager or use a MAXL Script to register the function.
    Once you have successfully done the above steps, restart the application and check the log file
    If successfully registered, you will see a message as
    "Function "@JExport" registered [OK] (Similar kind of message.
    If you still get error message, please post the log file content of that application.

  • First CDF

    Hi,
    I haven't had the opportunity to develop a CDF but I was hoping to use them in one of my current assignments. Is there any reference / documentation that I can look up. The only thing I was able to come across was the Statistics example that is in the Oracle documentation.

    Try
    Developing Custom-Defined Calculation Functions
    And for sample code CDFs
    Oracle Essbase Sample Code
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Java or any other customization

    would like you ask some thing regarding change of member properties with out manual interaction...
    In my project iam using currecny conversation using BSO cube to make it more specific would like to ask.. is it possible to change member properties with out manual interaction
    Example:
    In my Account Dimension i have tagged currency category which is linked to a separate currecny database ..in the same application
    And in my currency database i have 3 type of category : opening closing and avg
    now it works fine when i change category to opening and run my calc script and same for closing but it take manual interaction to change ..
    So my question is isit possible to change member property thorough java so that when i run my calc java shall comes to play and change my member properties and the run my calc script
    Environment: Essbase~ EAS ~Shared services --->>>No planning
    Hope you all understand

    Hi KVC,
    There is a lot of great information here http://download.oracle.com/docs/cd/E17236_01/epm.1112/esb_dbag/frameset.htm?launch.html in the DBAG. This part of the documentation is quite detailed and thorough.
    The basic process for creating and using a CDF is
    - write the java class(es) that perform the intended work
    - compile the class(es) and expose 1 or more methods public
    - (preferrable) jar the classes into a java archive (jar file)
    - use Maxl to register the CDF with essbase:
    create function '@MYFUNC'
    as ' fully.qualified.package.to.MyClass.myFunc'
    spec '@JMyFunc(member, oldUDA, newUDA)'
    comment 'Changes the UDA of the supplied member';- test the CDF in a calc script.
    The docs above will explain this in much greater detail. Give it a try and let us know how it goes.
    Regards,
    Robb

  • Odi custom gmail procedure / Essbase cdf or udf

    I Just posted this in the Essbase forums read below.
    Send mail in ODI using Gmail CredentialsDW Team
    i created a custom odi email routine based on this forum.  My question is can I utilize pieces of the procedure to create or use the .java files to compile a jar file that I can use towards an Essbase CDF? Or can I call the mail.jar file used in the routine but copy to the Essbase location and register the cdf?

    I Just posted this in the Essbase forums read below.
    Send mail in ODI using Gmail CredentialsDW Team
    i created a custom odi email routine based on this forum.  My question is can I utilize pieces of the procedure to create or use the .java files to compile a jar file that I can use towards an Essbase CDF? Or can I call the mail.jar file used in the routine but copy to the Essbase location and register the cdf?

  • Custom ODI email procedure / Essbase CDF

    Send mail in ODI using Gmail CredentialsDW Team
    i created a custom odi email routine based on this forum.  My question is can I utilize pieces of the procedure to create or use the .java files to compile a jar file that I can use towards an Essbase CDF? Or can I call the mail.jar file used in the routine but copy to the Essbase location and register the cdf?

    John,
    Now I did some research. I don't think it's registering. This is the .java it's also in the jar.
    package com.oracle.essbase.cdf;
    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    public class SendMailNEW {
      public static void main(String[] args) {
      final String username = "[email protected]";
      final String password = "PASSWORD";
      Properties props = new Properties();
      props.put("mail.smtp.host", "smtp.gmail.com");
      props.put("mail.smtp.socketFactory.port", "465");
      props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
      props.put("mail.smtp.auth", "true");
      props.put("mail.smtp.port", "465");
      Session session = Session.getDefaultInstance(props,
      new javax.mail.Authenticator() {
      protected PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication(username,password);
      try {
      Message message = new MimeMessage(session);
      message.setFrom(new InternetAddress("[email protected]"));
      message.setRecipients(Message.RecipientType.TO,
      InternetAddress.parse("[email protected]"));
      message.setSubject("Mail From ODI");
      message.setText("Its a Mail from ODI Studio.\nThank You");
      Transport.send(message);
      System.out.println("Done");
      } catch (MessagingException e) {
      throw new RuntimeException(e);
    This the .mxl calling that .jar file:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Register function JSendMailNEW
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    CREATE OR REPLACE FUNCTION '@JsendMailNEW'
    AS 'com.oracle.essbase.cdf.SendMailNEW.main(String[])'
    SPEC '@JSendMailNEW(listOfStrings)'
    COMMENT '';
    I have added this into both udf.policy files:
    // SendMailNEW.jar.
    grant codeBase "file:${essbase.java.home}/..java/udf/SendMailNEW.jar" {
       permission java.security.AllPermission;
    Any ideas what I am missing or what I can correct?     

  • CDF function in essbase

    HI,
    I'm planning to use a cdf function in my essbase outline -
    '@JgetMonthNumberWorkDays(2009, 1, "aus")'
    Now my question is..can we pass other essbase functions within this cdf and make it work ?
    e.g. Will something like below work?
    '@JgetMonthNumberWorkDays(@CURRMBR (year), @CURRMBR (period), "aus")'
    where year dimension is 2010,2011 and so on
    and period dimension is jan,feb and so on.
    Any pointers will be appreciated!!
    Edited by: whirlpool on Aug 7, 2012 7:18 AM

    If you want to use the CDF in a FIX statement you need to make sure that it returns a member name rather than a number:<BR><i><BR>public class ChildAccess<BR>{<BR>    public static String GetFirstMember(String[] members)<BR>    {<BR>        return members[0];<BR>    }<BR>}<BR></i><BR>I prefer to define the function against a specific application rather than globally because you only need to restart the application in order to pick-up any modifications to the .jar file. So the MaxL function definition would be:<BR><i><BR>    create or replace function appname.'@_GETFIRSTMEMBER' as<BR>        'ChildAccess.GetFirstMember(String[])';<BR></i><BR>and in the calculation script the FIX statement would become:<BR><i><BR>    fix ( @member( @_GetFirstMember( @name( @children( "Abc" ) ) ) ) )<BR></i><BR>This looks a little messy so you can use a macro to simplify it:<BR><i><BR>    create or replace macro appname.'@GETFIRSTMEMBER'(single) <BR>        as '@member( @_GETFIRSTMEMBER( @name( @@1 ) ) )' <BR>        SPEC "@GETFIRSTMEMBER(memberRange)";<BR></i><BR>and then the FIX statement could be written:<BR><i><BR>    fix( @getfirstmember( @children( "PRODUCT" ) ) )<BR></i>

  • Essbase CDF- @CalcMgrExecuteMaxLScript

    Hi All,
    I am executing the maxl script from a calculation script in Essbase using @CalcMgrExecuteMaxLScript() function with the followng syntax,
    RUNJAVA com.oracle.essbase.cdf.@CalcMgrExecuteMaxLScript(user, Password, maxlScripts,"E:/TJ/OPHS1_Data_Export.msh", true);
    Trial 1
    Fix (Version,Scenario)
    RUNJAVA com.oracle.essbase.cdf.@CalcMgrExecuteMaxLScript((admin, Password, maxlScripts,"E:/TJ/OPHS1_Data_Export.msh", true);
    ENDFIX;
    Trial 2
    Enclosing as member formula:
    Fix ({Version},{Scenario})
    "Digital Share"(
    @CalcMgrExecuteMaxLScript (admin, Password, maxlScripts,"E:/TJ/OPHS1_Data_Export.mxls", true);
    ENDFIX;
    Trial 3
    Fix ({Version},{Scenario})
    RUNJAVA com.oracle.essbase.cdf.@CalcMgrExecuteMaxLScript((admin, Password, OPHS1_Data_Export,,true);
    ENDFIX;
    But, it doesnot gives the expected output. Please help me to understand the issue with the above syntax.
    Regards,
    Anusuya TJ

    Here is an example
    FIX("Jan","100-10","Florida")
    "Sales"(
    @CalcMgrExecuteMaxLFile("admin", "password", "E:/Demo/Maxl/Test.mxl", ("Sample","Basic"), "true");
    ENDFIX;
    Alternatively if you want to use the RUNJAVA method then have a look at the function in EAS and it provides an example.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • JExport cdf function working - but changing essbase files ?

    Hello,
    we finally managed to get CDF JEXPORT function running
    (Link http://www.jasonwjones.com/?p=68 was very helpful)
    now we scheduled daily exports to txtfiles and oracle database - it's running well - we scheduled to export every night from testdatabase and productiondatabase -
    but I noticed, that it's now changing the essbase *.pag and *.ind files last-accessed-datestamps (not all of our 100 GB -but obviously those we fix the export to)
    as we run daily incremental backups and essbase has to be offline during that time, this causes us several hours of offline time every night - because additional 50 GB of data have to be secured - the dataexport command does not change the files but jexport does
    -> did anymody notice something like this ? jexport changing datestamps of *.pag and *.ind files ?
    my common understanding is that an export is reading data and should not change files - as we want to export attributes we can not use dataexport command
    of course I am aware of workarounds like: use dataexport command, do not export every day, buy a faster backupserver, run restructure so that the relevant data is in fewer datafiles - but still hoping that there is a better solution.
    regards
    Rodian

    Hi,
    thank you for being interested into the issue
    we use the new essbase / hyperion planning / epm 11.1.2.1 64 bit on windows 2008 R2-
    maybe you or somebody else has an idea or we really didn't see the easy way
    what we need is a fast export of essbase data combined with alias member names and attribute member names
    dataexport command seems not to allow to export essbase data combined with/sorted/fixed by attribute dimensions - we realized already that dataexport is much faster (15 min instead of 24 hours for the major export part - so we ended up with a combined approach already (it was already tricky to get jexport running exporting to oracle tables):
    1 dataexport script (15 min runtime for all real essbase budget data using dataexport to file and 2 jexport scripts (5 min each), which we actually just use to derive the corresponding attribute dimension values for those of the 5000 members, which are used for budgeting in the selected planning scenario
    We managed jexport to export to oracle database directly, while dataexport we managed only to export to file (so it needs another script to import into oracle database again)
    Furthermore, we needed also the alias values of each member - which dataexport and jexport did not deliver - so we had to use sql statements to derive it from the hyperion planning application oracle tables hsp_object and hsp_alias
    at the end, the result of the 3 calcscripts and the alias names from the hyperion planning oracle table have to be written to 2 txt files, which get delivered to SAP on daily basis - the reason why we ended up with such a wild mix of scripts is obviously that SAP and the other involved planning system defined the data to be delivered
    as we have only 2 interfaces and 2 planning/essbase applications and limited financial budgets, it appeared too big effort to invest time into ODI (still open, what the cost of this would have been, if the scripts could be scheduled and would be fast)
    all scripts are scheduled and run daily and are very reliable - with the only disadvantage, that the queried *.pag and *.ind (not all files change) files tend to change datestamp every night now.
    I clearly identified jexport the root of it.
    we managed outline extractor utility 11.1.2.0 running as well on 11.1.2.1 - but looks like this can not scheduled and allows only to export the pure value lists of attributes and members
    the only thing i could test is placing the jexport script into a hyperion planning businessrule instead of an essbase calc script and exporting to textfile only (but I expect same result)
    so the only remaining alternative might be to extract also the attribute dimension values (hsp_member_to_attribute) for our members from the hyperion planning oracle tables and combine them with our essbase data
    so what we actually miss is an essbase dataexport command, which allows to export essbase data with attribute values and member names from alias tables directly into oracle tables (ok, to a flat file would be ok as well)
    regards
    Rodian

  • Java CDF hangs up Essbase application - Kindly help

    Hi!
    I compiled the below java code which i am using to run a batch script from a calculation script using RUNJAVA.
    import java.*;
    import java.io.*;
    import com.hyperion.essbase.calculator.*;
    public class IRUN {
    public IRUN() {
    public static void main(com.hyperion.essbase.calculator.Context ctx, String[] args)
         try{
              Runtime.getRuntime().exec ("cmd /c start E:\\Hyperion\\ISIS_Scr\\email_users.bat");
         catch(Exception e){
    *After I run the calculation script which simply says RUNJAVA IRUN; the batch script executes successfully and I get an email from the batch script. But after that if I stop my application and try starting it again I get an error saying "Unable to load database [Basic]". The application log gives the below error:*
    [Wed Mar 03 09:00:46 2010]Local/Demo///Error(1120006)
    Unable to lock file [E:\Hyperion\products\Essbase\EssbaseServer\APP\Demo\Basic\Basic.esm]. Essbase will try again after a short delay.
    [Wed Mar 03 09:00:47 2010]Local/Demo///Error(1120005)
    Unable to lock file [E:\Hyperion\products\Essbase\EssbaseServer\APP\Demo\Basic\Basic.esm]. Please make sure other processes do not access Essbase files while Essbase server is running.
    [Wed Mar 03 09:00:47 2010]Local/Demo///Warning(1007089)
    Unable to open [E:\Hyperion\products\Essbase\EssbaseServer\APP\Demo\Basic\Basic.esm] for database [Basic]
    [Wed Mar 03 09:00:47 2010]Local/Demo///Error(1002097)
    Unable to load database [Basic]
    [Wed Mar 03 09:00:47 2010]Local/Demo///Error(1002097)
    Unable to load database []
    [Wed Mar 03 09:00:47 2010]Local/Demo///Error(1002097)
    Unable to load database []
    *Please note that I registered the IRUN class's main function as a global function instead of local to an application. I consistently end up screwing applications once I try using this java function in multiple applications.*
    Thanks!
    Arun

    I managed to fix this problem. The batch script which was being called from the Java class did not have an exit statement at the end. I included that and the problem with application crashing got resolved. It looks like maybe the script is locked in memory or something like that.
    The exact reason as to how this would affect .esm file in the database is still not clear to me. Any clarifications would be great.
    Thanks,
    Arun
    [email protected]

  • CDF @JExportTo does not work in EAS Business Rules

    Hello,
    I have registered the custom defined function in 11.1.1.3 and it is registered properly in the application (log). @JExportTo works fine in a calc script but if I try to use the same code (without any variables in the first place of course) in an EAS Business Rule (not Calc Manager), HBR does not recognize it as a function and gives me code validation errors.
    Any help is very much appreciated!
    Many thanks,
    Michael

    renatew,
    did you try using "To or Cc" instead of the localized version? I think that Mail uses the actual header names for those rules, the localized names in the standard selection or UI-only.
    Andreas

  • Using JExportTo, JExtendedExportTo, JAdjustString functions in 7.1.3

    I trying to migrate some functions from an old EB 6.1.x environment to EB 7.1.3
    Using the same setup from 6.1, I created the new function (@JAdjustString) in EB 7.1.3 to use in conjunction with the @JExportTo and @JExtendedExportTo functions (both successfully created). This function basically reformats the string length or spaces. When I attempt to compile/validate the script, it errors out. Is there something I missed when I created the function?
    ***Existing Function
    Name: @JExtendedExportTo
    Java Class: com.hyperion.essbase.cdf.export.ExportTo
    Java Method: ExportToTarget(String,String,String,String,String,String[],double[],int[],String[])
    Spec: @JExtendedExportTo(targetType,targetName,delimiter,textQualifier,tableName,strArgs,dblArgs,intDecimalPoints,replaceMissing)
    Comment: Exports the data to a text file or relational database (using either
    JDBC or JDBC-ODBC bridge).
    ***New Function
    Name: @JAdjustString
    Java Class: com.hyperion.essbase.cdf.export.ExportTo
    Java Method: AdjustString(String,int)
    Spec: @JAdjustString(strText,intLength)
    Comment: Adjust a string by fixing the length by truncating or padding with blanks.

    Running the calc script with the function in it. Yep, I updated the udf.policy and restarted eb as well.
    Calc Script1 is a working calc script using the JExtendedExportTo function which outputs the budget accounts in the FIX. This one actually validates and exports successfully.
    Calc Script2 uses a combination of both the JExportTo and JAdjustString, where the data is captured and format gets adjusted with fixed spacing. The script does not validate in 7.1.3 which is the same error in 6.1 as well, however, it executes successfully in 6.1. When I try to run in 7.1.3, the same failed error message appears "Error: 1200324 Error compiling formula for [Jan] (line 88): operator expected after [@AdjustString]
    After digging around in both versions and their directory files, I found the "ExportCDF.jar" file is different in size between them. I tried to copy the 6.1 ExportCDF.jar file over to the 7.1.3 directory, restarted EB, but still no luck (restored original .jar file back afterwards). So does this mean I need to recompile a new *jar file or something? My java knowledge is minimal so any help would be appreciated. BTW, below is the Calc Script2 with the issue:
    /* Custom Functions Utilized:
    -- @JExportTo
              * Export to a text file
              * arg 1: specify "file" to export to a text file
              * arg 2: file name. This file name must be used to close the file after the calculation completes
              * arg 3: delimiter. Accepts "tab" for tab delimited (use "" for undelimited)
              * arg 4: leave blank when exporting to text files
              * arg 5: an array of member names
              * arg 6: an array of data
    -- @JAdjustString
              * Adjusts a string to a specified length by either truncating or right padding with spaces
              * arg 1: string
              * arg 2: desired length
    -- @JReplaceStringIf
              * If a string matches a criteria string, returns replacement string, else returns original string
              * arg 1: string
              * arg 2: criteria string
              * arg 3: replacement string
              * Used to replace certain Essbase placeholder names such as "DPT_No_Department", "AFF_No_Affiliate" and "NoEntities" with blanks.
         Script deals with special situations resolving differences between Essbase and PeopleSoft:
              case 1: Essbase placeholder names such as "DPT_No_Department", "AFF_No_Affiliate" and "NoEntities" must be replaced with blanks.
              case 2: Splitting out projects from the business unit dimension where applicable
              case 3: Splitting account/products where found on the Accounts dimension
              case 4: Splitting account/stat codes where found on the Accounts dimension (creates seperate files for $ and stats)
    FIX (FY06, "Budget","Current")
         CALC DIM ("Project Class","Departments","Affiliates" ,"Entities");
    FIX ("Total Project Class",@LEVMBRS("Departments",0),@LEVMBRS("Affiliates",0),@LEVMBRS("Entities",0),
         @RELATIVE("Net Income",0), @RELATIVE("COSTS_OF_REVENUES",0), @RELATIVE("PROJ_DEVLMNT_EXP",0), @RELATIVE("G&A",0))
    "Jan"(                
         IF ("Jan" + 0 <> 0 OR "Feb" + 0 <> 0 OR "Mar" + 0 <> 0 OR "Apr" + 0 <> 0 OR "May" + 0 <> 0 OR "Jun" + 0 <> 0 OR "Jul" + 0 <> 0
         OR "Aug" + 0 <> 0 OR "Sep" + 0 <> 0 OR "Oct" + 0 <> 0 OR "Nov" + 0 <> 0 OR "Dec" + 0 <> 0)
              IF (@ISMBR(@MATCH("Accounts","4?????")) OR @ISMBR(@MATCH("Accounts","5?????")) OR @ISMBR(@MATCH("Accounts","6?????"))
              OR @ISMBR(@MATCH("Accounts","7?????")) OR @ISMBR(@MATCH("Accounts","8?????")) OR @ISMBR(@MATCH("Accounts","9?????")))
                   @JExportTo(
                        "file","E:\Hyperion\Essbase\App\Finance\FinStmt\FinStmt$.txt","","",
                        @List(
                        "M",
                        @JAdjustString( @SUBSTRING(@JReplaceStringIf(@NAME(@CURRMBR("Entities")),@NAME("NoEntities"), " "),0),5),
                        @JAdjustString(@NAME(@CURRMBR("Accounts")),6),
                        @JAdjustString( @SUBSTRING(@JReplaceStringIf(@NAME(@CURRMBR("Departments")),@NAME("DPT_No_Department")," "), 4),10),
                        @JAdjustString( @SUBSTRING(@JReplaceStringIf(@SUBSTRING(@NAME(@CURRMBR("Entities")), 6),     @NAME("NO_PRJ"), " "),     0),15),
                        @JAdjustString( @SUBSTRING(@JReplaceStringIf(@NAME(@CURRMBR("Affiliates")),@NAME("AFF_No_Affiliate"), " "), 4),5),
                        @JAdjustString(@NAME("Final"),10), " "
                        @LIST ("Jan"*-1,"Feb"*-1,"Mar"*-1,"Apr"*-1,"May"*-1,"Jun"*-1,"Jul"*-1,"Aug"*-1,"Sep"*-1,"Oct"*-1,"Nov"*-1,"Dec"*-1),
                        @JReturnStringIf(@ISMBR(@MATCH("Accounts","4?????")),"+0000000000000.00;-0000000000000.00","-0000000000000.00;+000000000000.00" )
              ENDIF
         ENDIF
    ENDFIX
    ENDFIX
    /*Close the file*/
    RUNJAVA CloseTarget "file" "E:\Hyperion\Essbase\App\Finance\FinStmt\FinStmt$.txt" ;

Maybe you are looking for