Odi examples using flexfields, groovy scripting, jython scritping sample
Dear All,
I would like to know if there are any good websites, which will provide details exampls using flexfields effectively, groovy scripting , jytyon scripting , using API in odi etc.
Basically I would be intersted in learning advanced ODI programming.
Thanks and Regards
Santy
there is the other way: do it.
It's sad to do but ODI is quite wide as topic. Follow many blogs, read threads and understood them, ask and make many errors.
If you are not so distant from some guru guy of this forum it'd be an idea to take a cheaper training from them.
Similar Messages
-
How to test ODI Agent - using command line / scripts ?
We can test ODI scheduler Agent from Topology manager, is there a way to test it using command line options / scripts ?
Go to <ODI_HOME>/oracledi/bin in command prompt and invoke startscen command with teh below parameters.
Edited by: Guru Sankar on Feb 28, 2011 4:19 PM -
Looking for example for Analog Out to multiple channels using DMA and C++. Found reference to sample "GenMultVoltUpdates_SWTimed" which I do not have and cannot find.
Hello Gerry,
When you install DAQmx, there is an option to install
support for Measurement Studio. When you
select this option, it will install these examples onto your hard drive. All of the examples can be found at the
following location: (C:\Documents and Settings\All Users\Documents\National
Instruments\NI-DAQ\Examples\DotNET2.0\Analog Out\Generate Voltage)
Respectfully,
Rob F
Test Engineer
Condition Measurements
National Instruments -
Find application module instance using groovy script
Hi,
Can any one help me to find the instance of a specific application module using a groovy script.
I know the below is going to give me the current application module instance
adf.object.applicationModule.findViewObject("ViewObject").first().getAttribute("name")But I should be able to find a specific application module and then proceed with finding the viewObject in it.....
Edited by: vijai on Mar 6, 2012 7:21 AMHi john,
This is the summary of my issue.....
I have few Appmodules among which one is used for administration purpose. I have a particular ViewObject say V1 that is used in all the AppModules as instances from which values are used as bind variable values in viewObject query (So when these instances gets executed first time the bind variable are set). In one operation the user changes the value in the administration app module ViewObject V1 and commits it. So we face two issues here.....
1. I need to refresh all the ViewObjects in the other appmodules
2. and I need to refresh the Bind Variables values in the ViewObject query (or) Give the refreshed values in the page bindings Execute With Params.
In order to do this stuffs I thought I would make a groovy script and use the viewObject in the Administration ViewObject for values in Bind variables,ExecuteWithParams value etc......
Pls give me a better approach or a better groovy script to do this........... -
ODI Groovy Script to create an interface
Hi,
I'm working on ODI 11.1.16 and trying to create an interface using Groovy Scripts. It throws me an error "java.lang.IllegalArgumentException: DataStore shouldn't be null "
Below are my assumptions
Source datastore : Groovy_Source
Target datastore : Groovy_Trgt
Context : Global
Stndrd conn: localhost,1521,orcl
def file = new File('c:/interfaces.txt')
def s = 0
Interfaces.txt contains : TEST1,SOURCE,DUMMY_GROOVY_SOURCE,STAGING,DUMMY_GROOVY_TRGT
DataSet dataSet = odiInterface.getDataSets().get(0);
OdiDataStore odiDatastore1 = ((IOdiDataStoreFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiDataStore.class)).findByName(DUMMY_GROOVY_SOURCE,Oracle);
OdiDataStore targetDatastore = ((IOdiDataStoreFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiDataStore.class)).findByName(DUMMY_GROOVY_TRGT,Oracle);
It throws an error here any help is appreciated
Thanks
VIBHi Michael,
Below is my entire code.. Picked it up from one of the blogs just trying to fine tune it. Thanks for your reply.
//Created by ODI Studio
// Context operators:
import oracle.odi.domain.topology.OdiContext
import oracle.odi.domain.topology.finder.IOdiContextFinder
// Folder operators:
import oracle.odi.domain.project.OdiFolder
import oracle.odi.domain.project.finder.IOdiFolderFinder
// Interface operators:
import oracle.odi.domain.project.OdiInterface
// Interface helpers:
import oracle.odi.interfaces.interactive.support.InteractiveInterfaceHelperWithActions
import oracle.odi.interfaces.interactive.support.targetkeychoosers.TargetKeyChooserPrimaryKey
import oracle.odi.interfaces.interactive.support.mapping.automap.AutoMappingComputerLazy
import oracle.odi.interfaces.interactive.support.mapping.matchpolicy.MappingMatchPolicyLazy
import oracle.odi.interfaces.interactive.support.actions.InterfaceActionSetTargetDataStore
import oracle.odi.interfaces.interactive.support.aliascomputers.AliasComputerDoubleChecker
import oracle.odi.interfaces.interactive.support.clauseimporters.ClauseImporterLazy
import oracle.odi.interfaces.interactive.support.actions.InterfaceActionAddSourceDataStore
import oracle.odi.interfaces.interactive.support.actions.InterfaceActionOnTargetDataStoreComputeAutoMapping;
// Transaction operators:
import oracle.odi.core.persistence.transaction.support.DefaultTransactionDefinition;
import oracle.odi.core.persistence.transaction.ITransactionDefinition;
import oracle.odi.core.persistence.transaction.ITransactionManager;
import oracle.odi.core.persistence.transaction.ITransactionStatus;
// Data set:
import oracle.odi.domain.project.interfaces.DataSet;
// Data store:
import oracle.odi.domain.model.OdiDataStore;
import oracle.odi.domain.model.finder.IOdiDataStoreFinder;
// Define VARS:
def project = new String("Test") // What is the target project?
def folder = new String("Test Subfolder") // Which folder in target project?
def file = new File('c:/interfaces.txt')
def s = 0
// Get default context:
OdiContext context = ((IOdiContextFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiContext.class)).findDefaultContext();
// Get Folder:
Collection odiFolders = ((IOdiFolderFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiFolder.class)).findByName(folder);
if (odiFolders.size() == 0)
println("Error: cannot find folder "+folder+" in project "+project)
OdiFolder odiFolder = (OdiFolder) (odiFolders.toArray()[0]);
// Print default settings:
println ("Context used = " + context.getName())
println ("Folder for interface = " + odiFolder.getName())
file.eachLine { line ->
s++
toks = line.split(",")
if (toks.length != 5)
println("Error in input, line: "+s)
else
iname = toks[0]
Oracle = toks[1]
DUMMY_GROOVT_SOURCE = toks[2]
Oracle = toks[3]
DUMMY_GROOVY_TRGT = toks[4]
// Transactie:
ITransactionDefinition txnDef = new DefaultTransactionDefinition()
ITransactionManager tm = odiInstance.getTransactionManager()
ITransactionStatus txnStatus = tm.getTransaction(txnDef)
OdiInterface odiInterface = new OdiInterface(odiFolder, iname, context);
InteractiveInterfaceHelperWithActions interactiveHelper = new InteractiveInterfaceHelperWithActions(odiInterface, odiInstance, odiInstance.getTransactionalEntityManager());
DataSet dataSet = odiInterface.getDataSets().get(0);
OdiDataStore odiDatastore1 = ((IOdiDataStoreFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiDataStore.class)).findByName("DUMMY_GROOVY_SOURCE", Oracle);
OdiDataStore targetDatastore = ((IOdiDataStoreFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiDataStore.class)).findByName("DUMMY_GROOVY_TRGT", Oracle);
interactiveHelper.performAction(new InterfaceActionAddSourceDataStore(odiDatastore1, dataSet, new AliasComputerDoubleChecker(), new ClauseImporterLazy(), new AutoMappingComputerLazy()));
interactiveHelper.performAction(new InterfaceActionSetTargetDataStore(targetDatastore, new MappingMatchPolicyLazy(), new AutoMappingComputerLazy(), new AutoMappingComputerLazy(), new TargetKeyChooserPrimaryKey()));
interactiveHelper.performAction(new InterfaceActionOnTargetDataStoreComputeAutoMapping())
interactiveHelper.computeSourceSets()
interactiveHelper.preparePersist()
tm.commit(txnStatus)
Edited by: VIB on Feb 18, 2013 10:46 AM -
Configuring ODI to use Fusion Middleware OBIA 11.1.1.7.1 Installation
Hi,
I am trying to install OBIA 11.1.1.7.1 in Windows 2008.
All went well , upgraded weblogic to 10.3.6
When I run the following command create the wallet files,
The command used :
c:\Middleware\Oracle_BI1\common\bin\wlst.cmd
c:\Middleware\Oracle_BI1\bifoundation\install\createJPSArtifactsODI.py embedded --ADMIN_USER
_NAME weblogic --DOMAIN_HOSTNAME localhost --DOMAIN_PORT 7001 --DOMAIN_HOME_
PATH c:\Middleware\user_projects\domains\bifoundation_domain
The Error:
wls:/offline> C:\Middleware\Oracle_BI1\bifoundation\install\createJPSArtifactsOD
I.py embedded –ADMIN_USER_NAME weblogic –DOMAIN_HOSTNAME obia111171w64 –DOMAI
N_PORT 7001 –DOMAIN_HOME_PATH C:\Middleware\user_projects\domains\bifoundation_
domain
Traceback (innermost last):
(no code object) at line 0
File “”, line 1
C:\Middleware\Oracle_BI1\bifoundation\install\createJPSArtifactsODI.py e
mbedded –ADMIN_USER_NAME weblogic –DOMAIN_HOSTNAME obia111171w64 –DOMAIN_PORT
7001 –DOMAIN_HOME_PATH C:\Middleware\user_projects\domains\bifoundation_domain
^
SyntaxError: invalid syntax
wls:/offline>
I tried the following, still errors
java weblogic.WLST C:\Middleware\Oracle_BI1\bifoundation\install\createJPSArtifactsODI.py embedded -–ADMIN_USER_NAME weblogic -–DOMAIN_HOSTNAME obia111171w64 -–DOMAIN_PORT 7001 -–DOMAIN_HOME_PATH C:\Middleware\user_projects\domains\bifoundation_domain
from Command Prompt, I am getting this error
C:\Middleware\user_projects\domains\bifoundation_domain>java weblogic.WLST C:\Mi
ddleware\Oracle_BI1\bifoundation\install\createJPSArtifactsODI.py embedded –ADM
IN_USER_NAME weblogic –DOMAIN_HOSTNAME obia111171w64 –DOMAIN_PORT 7001 –DOMAI
N_HOME_PATH C:\Middleware\user_projects\domains\bifoundation_domain
Initializing WebLogic Scripting Tool (WLST) …
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
Problem invoking WLST – Traceback (innermost last):
File “C:\Middleware\Oracle_BI1\bifoundation\install\createJPSArtifactsODI.py”,
line 93, in ?
File “C:\Middleware\Oracle_BI1\bifoundation\install\apps_commonUtils.py”, line
107, in parseCommandlineArgs
File “C:\MIDDLE~1\WLSERV~1.3\common\wlst\modules\jython-modules.jar\Lib/getopt
$py.class”, line 74, in getopt
File “C:\MIDDLE~1\WLSERV~1.3\common\wlst\modules\jython-modules.jar\Lib/getopt
$py.class”, line 124, in do_shorts
File “C:\MIDDLE~1\WLSERV~1.3\common\wlst\modules\jython-modules.jar\Lib/getopt
$py.class”, line 139, in short_has_arg
UnicodeError: ascii encoding error: ordinal not in range(128)
Request:
Spent lot of time in trouble shooting, I rebuilt the image from scratch, reinstalled. Still the same error at this step. I am not able to go-forward with out completing this step.
If the issue is not resolvable, could you please give an alternate way of 'Configuring ODI to use Fusion Middleware'
Thank You in advance.
-Praveen Alamurugot the issue resolved
Change the contents of C:\Middleware\utils\config\10.3\setHomeDirs.cmd
from:
set MW_HOME = @ MW_HOME
FOR%% i in ("% MW_HOME%") DO SET MW_HOME =%% ~ FSI
set WL_HOME = @ WL_HOME
FOR%% i in ("% WL_HOME%") DO SET WL_HOME =%% ~ FSI
to
set MW_HOME =% MW_HOME%
FOR%% i in ("% MW_HOME%") DO SET MW_HOME =%% ~ FSI
set WL_HOME =% WL_HOME%
FOR%% i in ("% WL_HOME%") DO SET WL_HOME =%% ~ FSI
Rerun the patch script to set the variables properly
cd c:\Middleware\Oracle_BI1\biapps\tools\bin
perl APPLY_PATCHES.pl apply_patches_import.txt
Then Go to
c:\Middleware\Oracle_BI1\common\bin\
Run the following command
wlst.cmd c:\Middleware\Oracle_BI1\bifoundation\install\createJPSArtifactsODI.py embedded --ADMIN_USER_NAME weblogic --DOMAIN_HOSTNAME ibmdemo --DOMAIN_PORT 7001 --DOMAIN_HOME_PATH c:\Middleware\user_projects\domains\bifoundation_domain
Hope this helps
-Praveen -
Dear Experts
In process Reverse Engineering using RKM SAP ERP but error this result.
Reverse Engineering
View image: r e logalagent test
Error
View image: r e logalagent error
Error text
com.sunopsis.tools.core.exception.SnpsSimpleMessageException: ODI-17517: Error during task interpretation.
Task: 2
java.lang.Exception: The application script threw an exception: com.sunopsis.core.SnpsFlexFieldException: ODI-15068: Unknown flexfield code. BSF info: Initialize at line: 0 column: columnNo
at com.sunopsis.dwg.codeinterpretor.SnpCodeInterpretor.transform(SnpCodeInterpretor.java:489)
at com.sunopsis.dwg.dbobj.SnpSessStep.createTaskLogs(SnpSessStep.java:809)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:465)
at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:2128)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:366)
at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:216)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:300)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:292)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:855)
at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:126)
at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.Exception: The application script threw an exception: com.sunopsis.core.SnpsFlexFieldException: ODI-15068: Unknown flexfield code. BSF info: Initialize at line: 0 column: columnNo
at com.sunopsis.dwg.codeinterpretor.SnpCodeInterpretor.transform(SnpCodeInterpretor.java:476)
... 11 more
Caused by: org.apache.bsf.BSFException: The application script threw an exception: com.sunopsis.core.SnpsFlexFieldException: ODI-15068: Unknown flexfield code. BSF info: Initialize at line: 0 column: columnNo
at bsh.util.BeanShellBSFEngine.eval(Unknown Source)
at bsh.util.BeanShellBSFEngine.exec(Unknown Source)
at com.sunopsis.dwg.codeinterpretor.SnpCodeInterpretor.transform(SnpCodeInterpretor.java:471)
... 11 more
Texto: //Command Name: Initialize
import com.sap.mw.jco.*;
import java.sql.Connection;
import java.util.ResourceBundle;
import java.util.Date;
//Initializing resourceBundle
odiSapErpResourceBundle = new OdiSapErpResourceBundle();//resourceBundle object to initialize & load resources
odiSapErpResourceBundle.initializeResource();//initializing/loading resources
resourceBundle = odiSapErpResourceBundle.getResourceBundle();
//Check the ODI Release
//Initialize Open Tool log file name
//Initializing logger
String logFileName = "";
logFileName = <@=odiRef.getQuotedString("<?=new File(System.getProperty("java.io.tmpdir"),"sap_rkm_erp_"+odiRef.getSession("SESS_NO")+".log").toString()?> ") @>;
OdiSapLogger sapLogger = new OdiSapLogger(logFileName, resourceBundle);
sapLogger.fine("ODIKM-SAPERP-RKM-10000","",new Object[] {"SAP ERP RKM - Initialize step.."} );
//Check whether Table or View checkbox selected
typeOfObject = "T";
if ((";AT;Q;SY;ST;T;V;").indexOf(";V;") > -1)
typeOfObject = "V";
if ((";AT;Q;SY;ST;T;V;").indexOf(";T;") > -1)
typeOfObject = "T";
//Initializing SAP Connector
OdiSAPERPAdapter odiSapERPAdapter = new OdiSAPERPAdapter(sapLogger, odiSapErpResourceBundle);
odiSapERPAdapter.setObjectType(typeOfObject);
//Helper object
OdiSAPERPMetadataHelper odiSAPERPMetadataHelper = new OdiSAPERPMetadataHelper(odiSapERPAdapter, sapLogger);
<?
// SAP connection properties get from Topology Manager Defintions
String hostName = odiRef.getInfo("SRC_DSERV_NAME");//SRC_DSERV_NAME
String userName = odiRef.getInfo("SRC_USER_NAME");
String password = odiRef.getInfo("SRC_PASS");
String systemNo = odiRef.getFlexFieldValue( odiRef.getInfo("SRC_I_CONNECT"), "1400", "SAP_SYSTEM_NUMBER" );
String sapClient = odiRef.getFlexFieldValue( odiRef.getInfo("SRC_I_CONNECT"), "1400", "SAP_CLIENT" );
String language = odiRef.getFlexFieldValue( odiRef.getInfo("SRC_I_CONNECT"), "1400", "SAP_LANGUAGE" );
?>
//Setting the SAP Connection
odiSapERPAdapter.setSAPConnection("<?=hostName?>", "<?=systemNo?>", "<?=sapClient?>", "<?=language?>", "<?=userName?>", "<?=password?>", null, null);
//Get the repository connection
Connection repoConnection = odiRef.getJDBCConnection("DEST");
sapLogger.fine("ODIKM-SAPERP-RKM-10000","",new Object[] {"repoConnection: "+repoConnection});.
at com.sunopsis.dwg.dbobj.SnpSessStep.createTaskLogs(SnpSessStep.java:837)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:465)
at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:2128)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:366)
at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:216)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:300)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:292)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:855)
at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:126)
at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
at java.lang.Thread.run(Thread.java:744)
What I must correct?
What other tests can I perform?
Thanks for any lightDear Expert
Still facing this problem.
I did several tests, changing flexfields in physical topology and the parameters of RKM.
But the result is always the same.
What else could do.
The doubt remains.
Should be poss edit details.
>> >>> review history this post <<<<<
I can not enter values in JDBC because the JDBC option is not active.
Any light, suggestion or critics is welcome.
Also I have a SR open with serveridade 1 in orcl.
Thanks for All -
How to output the outline parent-child relationship using a report script?
I'd like to extract the outline's dimension members with it's parent-child relationship using a report script. Anybody can provide a sample script? Thanks.
Example:
DimensionX
-----MemberX
----------ChildX
Output:
Dimension X MemberX
MemberX ChildX
Edited by: obelisk on Jan 11, 2010 5:16 PMSorry a report script won't do it. You have two options
1. Use at Essbase Outline API to walk the outline and get it for you
2. Use the Outline extractor available from Applied Olap (it is a free download). It can be run interactively of as a bat file.
Frankly, I would rather use 2 since I don't have to code it myself -
Okay ...
So I used one of the Adobe examples except now it's part of a container and it's using a datasource instead of the flatfile the example uses. Also, for some reason I need to create a button instead of using the creationComplete to get it to work. My problem is if the button is clicked to fast while it's loading the data (since another part of the application has a dropdown menu so you can requery information) you get an error and for some reason, you'll still get the same error even if the data is fully loaded and even if you change the parameter to reload the data. My feeling is that the variables are not getting cleared out after it throws the error.
So my question is what is the best way to clear out the variables (and how) when it throws an error. The code for the page is below.
Joe
<?xml version="1.0" encoding="utf-8"?>
<v:MaxRestorePanel xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:v="views.*"
layout="vertical"
creationComplete="creationCompleteHandler3();">
<mx:Script>
<![CDATA[
import mx.collections.ICollectionView;
import mx.rpc.AsyncResponder;
import mx.rpc.AsyncToken;
import mx.olap.OLAPQuery;
import mx.olap.OLAPSet;
import mx.olap.IOLAPQuery;
import mx.olap.IOLAPQueryAxis;
import mx.olap.IOLAPCube;
import mx.olap.OLAPResult;
import mx.events.CubeEvent;
import mx.controls.Alert;
import mx.collections.ArrayCollection;
[Bindable]
public var dp:ICollectionView = null;
// Format of Objects in the ArrayCollection:
// data:Object = {
// customer:"AAA",
// product:"ColdFusion",
// quarter:"Q1"
// revenue: "100.00"
private function creationCompleteHandler3():void {
// You must initialize the cube before you
// can execute a query on it.
myMXMLCube3.refresh();
// Create the OLAP query.
private function getQuery(cube:IOLAPCube):IOLAPQuery {
// Create an instance of OLAPQuery to represent the query.
var query:OLAPQuery = new OLAPQuery;
// Get the row axis from the query instance.
var rowQueryAxis:IOLAPQueryAxis =
query.getAxis(OLAPQuery.ROW_AXIS);
// Create an OLAPSet instance to configure the axis.
var productSet:OLAPSet = new OLAPSet;
// Add the Product to the row to aggregate data
// by the Product dimension.
productSet.addElements(
cube.findDimension("ProductDim").findAttribute("Product").children);
// Add the OLAPSet instance to the axis.
rowQueryAxis.addSet(productSet);
// Get the column axis from the query instance, and configure it
// to aggregate the columns by the Quarter dimension.
var colQueryAxis:IOLAPQueryAxis =
query.getAxis(OLAPQuery.COLUMN_AXIS);
var quarterSet:OLAPSet= new OLAPSet;
quarterSet.addElements(
cube.findDimension("QuarterDim").findAttribute("HLMC").children);
colQueryAxis.addSet(quarterSet);
return query;
// Event handler to execute the OLAP query
// after the cube completes initialization.
private function runQuery(event:CubeEvent):void {
// Get cube.
var cube:IOLAPCube = IOLAPCube(event.currentTarget);
// Create a query instance.
var query:IOLAPQuery = getQuery(cube);
// Execute the query.
var token:AsyncToken = cube.execute(query);
// Setup handlers for the query results.
token.addResponder(new AsyncResponder(showResult, showFault));
// Handle a query fault.
private function showFault(result:Object, token:Object):void {
Alert.show("Error in query.");
// Handle a successful query by passing the query results to
// the OLAPDataGrid control..
private function showResult(result:Object, token:Object):void {
if (!result) {
Alert.show("No results from query.");
return;
myOLAPDG3.dataProvider= result as OLAPResult;
]]>
</mx:Script>
<mx:OLAPCube name="FlatSchemaCube" dataProvider="{dp}" id="myMXMLCube3" complete="runQuery(event);">
<mx:OLAPDimension name="CustomerDim">
<mx:OLAPAttribute name="Customer" dataField="TITLE_NAME"/>
<mx:OLAPHierarchy name="CustomerHier" hasAll="true">
<mx:OLAPLevel attributeName="Customer"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPDimension name="ProductDim">
<mx:OLAPAttribute name="Product" dataField="CORP_SITE"/>
<mx:OLAPHierarchy name="ProductHier" hasAll="true">
<mx:OLAPLevel attributeName="Product"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPDimension name="QuarterDim">
<mx:OLAPAttribute name="HLMC" dataField="HLMC"/>
<mx:OLAPHierarchy name="QuarterHier" hasAll="true">
<mx:OLAPLevel attributeName="HLMC"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPMeasure name="Revenue"
dataField="CUR_YR_1"
aggregator="SUM"/>
</mx:OLAPCube>
<mx:OLAPDataGrid id="myOLAPDG3" defaultCellString="-" textAlign="right" color="0x323232" width="100%" height="100%"/>
<mx:ControlBar id="controls">
<mx:Button label="Pull Details" click="creationCompleteHandler3();"/>
</mx:ControlBar>
</v:MaxRestorePanel>Okay ...
So I used one of the Adobe examples except now it's part of a container and it's using a datasource instead of the flatfile the example uses. Also, for some reason I need to create a button instead of using the creationComplete to get it to work. My problem is if the button is clicked to fast while it's loading the data (since another part of the application has a dropdown menu so you can requery information) you get an error and for some reason, you'll still get the same error even if the data is fully loaded and even if you change the parameter to reload the data. My feeling is that the variables are not getting cleared out after it throws the error.
So my question is what is the best way to clear out the variables (and how) when it throws an error. The code for the page is below.
Joe
<?xml version="1.0" encoding="utf-8"?>
<v:MaxRestorePanel xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:v="views.*"
layout="vertical"
creationComplete="creationCompleteHandler3();">
<mx:Script>
<![CDATA[
import mx.collections.ICollectionView;
import mx.rpc.AsyncResponder;
import mx.rpc.AsyncToken;
import mx.olap.OLAPQuery;
import mx.olap.OLAPSet;
import mx.olap.IOLAPQuery;
import mx.olap.IOLAPQueryAxis;
import mx.olap.IOLAPCube;
import mx.olap.OLAPResult;
import mx.events.CubeEvent;
import mx.controls.Alert;
import mx.collections.ArrayCollection;
[Bindable]
public var dp:ICollectionView = null;
// Format of Objects in the ArrayCollection:
// data:Object = {
// customer:"AAA",
// product:"ColdFusion",
// quarter:"Q1"
// revenue: "100.00"
private function creationCompleteHandler3():void {
// You must initialize the cube before you
// can execute a query on it.
myMXMLCube3.refresh();
// Create the OLAP query.
private function getQuery(cube:IOLAPCube):IOLAPQuery {
// Create an instance of OLAPQuery to represent the query.
var query:OLAPQuery = new OLAPQuery;
// Get the row axis from the query instance.
var rowQueryAxis:IOLAPQueryAxis =
query.getAxis(OLAPQuery.ROW_AXIS);
// Create an OLAPSet instance to configure the axis.
var productSet:OLAPSet = new OLAPSet;
// Add the Product to the row to aggregate data
// by the Product dimension.
productSet.addElements(
cube.findDimension("ProductDim").findAttribute("Product").children);
// Add the OLAPSet instance to the axis.
rowQueryAxis.addSet(productSet);
// Get the column axis from the query instance, and configure it
// to aggregate the columns by the Quarter dimension.
var colQueryAxis:IOLAPQueryAxis =
query.getAxis(OLAPQuery.COLUMN_AXIS);
var quarterSet:OLAPSet= new OLAPSet;
quarterSet.addElements(
cube.findDimension("QuarterDim").findAttribute("HLMC").children);
colQueryAxis.addSet(quarterSet);
return query;
// Event handler to execute the OLAP query
// after the cube completes initialization.
private function runQuery(event:CubeEvent):void {
// Get cube.
var cube:IOLAPCube = IOLAPCube(event.currentTarget);
// Create a query instance.
var query:IOLAPQuery = getQuery(cube);
// Execute the query.
var token:AsyncToken = cube.execute(query);
// Setup handlers for the query results.
token.addResponder(new AsyncResponder(showResult, showFault));
// Handle a query fault.
private function showFault(result:Object, token:Object):void {
Alert.show("Error in query.");
// Handle a successful query by passing the query results to
// the OLAPDataGrid control..
private function showResult(result:Object, token:Object):void {
if (!result) {
Alert.show("No results from query.");
return;
myOLAPDG3.dataProvider= result as OLAPResult;
]]>
</mx:Script>
<mx:OLAPCube name="FlatSchemaCube" dataProvider="{dp}" id="myMXMLCube3" complete="runQuery(event);">
<mx:OLAPDimension name="CustomerDim">
<mx:OLAPAttribute name="Customer" dataField="TITLE_NAME"/>
<mx:OLAPHierarchy name="CustomerHier" hasAll="true">
<mx:OLAPLevel attributeName="Customer"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPDimension name="ProductDim">
<mx:OLAPAttribute name="Product" dataField="CORP_SITE"/>
<mx:OLAPHierarchy name="ProductHier" hasAll="true">
<mx:OLAPLevel attributeName="Product"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPDimension name="QuarterDim">
<mx:OLAPAttribute name="HLMC" dataField="HLMC"/>
<mx:OLAPHierarchy name="QuarterHier" hasAll="true">
<mx:OLAPLevel attributeName="HLMC"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPMeasure name="Revenue"
dataField="CUR_YR_1"
aggregator="SUM"/>
</mx:OLAPCube>
<mx:OLAPDataGrid id="myOLAPDG3" defaultCellString="-" textAlign="right" color="0x323232" width="100%" height="100%"/>
<mx:ControlBar id="controls">
<mx:Button label="Pull Details" click="creationCompleteHandler3();"/>
</mx:ControlBar>
</v:MaxRestorePanel> -
Best method for timestamping? (for later use with perl script)
What is the best method that I can use to timestamp events in Linux for later use with perl script?
I am performing some energy measurements.. where I am running several tasks separated by 20 secs in between. Before I start any execution of tasks, I always place initial delay for me to start the script and start the measurement device.
My problem is that I don't know how long is that first delay exactly. So to solve this, I thought I could use date commands to time stamp all tasks.. or at least to timestamp first dela.
Here is example of what I am doing:
1st delay
task 1
20s
task 2
20s
task 3..... etc
What would be the best to use?logger.
It posts messages straight to the system log. You can see the message, in all its glory using tools like journalctl. You will see the message, the date, time, host name, user name, and the PID of logger when it ran. -
Using SQL Server Script to create Oracle DB Schema
Hi,
I have a SQL Server script which does a few things such as creating databases (after dropping), creating tables etc. Now I want to replicate the SQL Server databases and their tables etc in an Oracle9i DB. How would a SQL Server script compare to an Oracle script? i.e. what differences are there? and how would I have to alter the script to have it work on Oracle?
As an example, my SQL Server script would look something like this:
DROP DATABASE test1;
DROP DATABASE test2;
CREATE DATABASE test1;
CREATE DATABASE test2;
GO;
USE test1;
CREATE TABLE Table1 (
TableOneID INT IDENTITY PRIMARY KEY NOT NULL,
Name VARCHAR(255) NOT NULL,
PRIMARY KEY(TableOneID));
CREATE TABLE Table2 (
TableTwoID INT IDENTITY NOT NULL,
TableOneID INT NOT NULL,
PRIMARY KEY(TableTwoID, TableOneID),
FOREIGN KEY(TableOneID) REFERENCES Table1(TableOneID));
USE test2;
CREATE TABLE ....
etc...
thanks!Also I think
CREATE TABLE table1
( tableoneid INT PRIMARY KEY NOT NULL
, name VARCHAR(255) NOT NULL
, PRIMARY KEY(tableoneid) );should probably be
CREATE TABLE table1
( tableoneid INT CONSTRAINT table1_pk PRIMARY KEY
, name VARCHAR(255) NOT NULL );otherwise you specify the primary key twice (and PRIMARY KEY implies NOT NULL so the NOT NULL is redundant).
Then TABLE2 might need to be something like:
CREATE TABLE table2
( tabletwoid INT NOT NULL
, tableoneid NOT NULL CONSTRAINT table2_table1_fk REFERENCES table1
, CONSTRAINT table2_pk PRIMARY KEY(tabletwoid, tableoneid) );although the table-level constraint syntax could be used for the foreign keys if it meant less editing of your scripts. The "CONSTRAINT constraintname" clause of constraints is optional but recommended, as otherwise they will get system-generated names like "SYS_C005157". (Note that if you specify the FK inline as part of the column definition you do not need to include a datatype.)
If the IDENTITY clause causes a sequential value to be assigned as a default, there is no direct equivalent to that in Oracle. The nearest thing would be a row-level BEFORE INSERT trigger. -
How to use "do shell script" when Terminal replies with a prompt?
Hey all,
I'm wondering how to properly use "do shell script" when Terminal replies with a question? In this example, I'm building a small tool in AppleScript that will auto-update the Android SDK via command line prompts. The problem is when I tell it to update all ("update sdk --no-ui"), I need to accept licence agreements before it continues, and the amount of licence agreements brought up is different every time.
So, basically, I'm wondering how to handle a case where "do shell script" encounters a case where Terminal would normally need a user's response to?
Thanks,
BehnIf it is variable number of prompts that is a problem. Look around hd and figure out how many prompts there will be. Ask around android forum for a bash solution. There are some test case apps that will let you put conditionals on output from running programs.
# traditional way. Pipe output to command.
do script "echo 'ok' | update sdk --no-u"
Here is the preferred way of getting administrator privileges.
It is easier to diagnose problems with debug information. I suggest adding log statements to your script to see what is going on. Here is an example.
Author: rccharles
For testing, run in the Script Editor.
1) Click on the Event Log tab to see the output from the log statement
2) Click on Run
For running shell commands see:
http://developer.apple.com/mac/library/technotes/tn2002/tn2065.html
on run
-- Write a message into the event log.
log " --- Starting on " & ((current date) as string) & " --- "
-- debug lines
set unixDesktopPath to POSIX path of "/System/Library/User Template/"
log "unixDesktopPath = " & unixDesktopPath
set quotedUnixDesktopPath to quoted form of unixDesktopPath
log "quoted form is " & quotedUnixDesktopPath
try
set fromUnix to do shell script "sudo ls -l " & quotedUnixDesktopPath with administrator privileges
display dialog "ls -l of " & quotedUnixDesktopPath & return & fromUnix
on error errMsg
log "ls -l error..." & errMsg
end try
end run -
What are the different functions used in sap script?
Hi,
What are the different functions used in sap script? What are the parameters used in each Function?
Regards,
Maheshhe print program is used to print forms. The program retieves the necesary data from datbase tables, defines the order of in which text elements are printed, chooses a form for printing and selects an output device and print options.
Function modules in a printprogram:
When you print a form you must used the staments OPEN_FORM and CLOSE_FORM. To combine forms into a single spool request use START_FORM and END_FORM.
To print textelements in a form use WRITE_FORM. The order in which the textelements are printed, is determined by the order of the WRITE_FORM statements. Note: for printing lines in the body, you can also use the WRITE_FORM_LINES function module.
To transfer control command to a form use CONTROL_FORM.
Structure of a print program
Read data
Tables: xxx.
SELECT *
FROM xxx.
Open form printing - Must be called before working with any of the other form function modules.
Must be ended with function module CLOSE FORM
call function 'OPEN_FORM'.....
To begin several indentical forms containing different data within a single spool request, begin each form using START_FORM, and end it using END_FORM
call funtion 'START_FORM'.....
Write text elements to a window of the form
call function 'WRITE_FORM'.....
Ends spool request started with START_FORM
call funtion 'END_FORM'.....
Closes form printing
call function 'CLOSE_FORM'...
OPEN_FORM function
Syntax:
CALL FUNCTION 'OPEN_FORM'
EXPORTING
APPLICATION = 'TX'
ARCHIVE_INDEX =
ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
DIALOG = 'X'
FORM = ' '
LANGUAGE = SY-LANGU
OPTIONS =
MAIL_SENDER =
MAIL_RECIPIENT =
MAIL_APPL_OBJECT =
RAW_DATA_INTERFACE = '*'
IMPORTING
LANGUAGE =
NEW_ARCHIVE_PARAMS =
RESULT =
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
OTHERS = 11
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Some important parameters:
FORM Name of the form
DEVICE
PRINTER : Print output using spool
TELEFAX: Fax output
SCREEN: Output to screen
OPTIONS Used to control attrubutes for printing or faxing (Number of copies, immediate output....
The input for the parameter is structure ITCPO.
CLOSE_FORM function
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT =
RDI_RESULT =
TABLES
OTFDATA =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
OTHERS = 5
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Paramerters:
RESULT Returns status information and print/fax parameters after the form has been printed. RESULT is of structure ITCPP.
WRITE_FORM function
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = ' '
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
OTHERS = 9
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Some important parameters:
ELEMENT Specifies which textelement is printed
WINDOW Specifies which window is printed
TYPE Specifies the output area of the main window. This can be:
TOP - Used for headers
BODY
BOTTOM - Used for footers
FUNCTION Specifies whether text is to be appended, replaced or added
Example of how to use the WRITE_FORM function module together with a script.
Form layout of the MAIN window
/E INTRODUCTION
Dear Customer
/E ITEM_HEADER
IH Carrier, Departure
/E ITEM_LINE
IL &SBOOK-CARRID&, &SPFLI-DEPTIME&
/E CLOSING_REMARK
The print program
Writing INTRODUCTION
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'INTRODUCTION'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Writing ITEM_HEADER
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_HEADER'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Set ITEM_HEADER into TOP area of main window for subsequent pages
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_HEADER'
FUNCTION = 'SET'
TYPE = 'TOP'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Write ITEM_LINE
LOOP AT .....
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_LINE'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8.
ENDLOOP.
Delete ITEM_HEADER from TOP area of main window
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_HEADER'
FUNCTION = 'DELETE'
TYPE = 'TOP'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Print CLOSING_REMARK
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'CLOSING_REMARK'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
START_FORM function
CALL FUNCTION 'START_FORM'
EXPORTING
ARCHIVE_INDEX =
FORM = ' '
LANGUAGE = ' '
STARTPAGE = ' '
PROGRAM = ' '
MAIL_APPL_OBJECT =
IMPORTING
LANGUAGE =
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
SPOOL_ERROR = 6
OTHERS = 7
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
END_FORM function
CALL FUNCTION 'END_FORM'
IMPORTING
RESULT =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SPOOL_ERROR = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CONTROL_FORM function
The CONTROL_FORM function module alows you to create SapScript control statements from within an APAB program.
Syntax:
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command =
EXCEPTIONS
UNOPENED = 1
UNSTARTED = 2
OTHERS = 3
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Example:
Protecting the text element ITEM_LINE
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'PROTECT'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
TEXELEMENT = 'ITEM_LINE'.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'ENDPROTECT'. -
Example using command protect & endprotect
hii gem's
im unable to find the difference when using protect...endprotect
without tht bcoz im getting same output
ex:
/: protect
PH 'THIS IS TEST'
PH 'THIS IS TEST'
/: NEW-PAGE
PH 'THIS IS TEST'
ENDPROTECT
please give a example using command protect & endprotect
THANK U
REWARDS FOR GUD REPLY
REGARDS
JAIPALHi Jaipal,
It is mainly used to prevent the page break
menas whatever lines you wrote between these protect and endprotect they are always printed in a single page only and they won't split into two pages though there is no full space
go to SE71 see any scripts pagewindows
you will find a lot of examples
/E TOTAL_AMOUNT
/: PROTECT
UL &ULINE(71)&
TO
TO ,,Total net value excl. tax &EKKO-WAERS&,,
&KOMK- FKWRT&
/: IF &SUM-EURO-PRICE& NE ' 0,00'
/ ,, EURO,,&SUM-EURO-PRICE&
/: ENDIF
/: ENDPROTECT
Reward points for useful Answers
Regards
Anji -
Export all dimension using a report scripts
Does anybody has an idea on how to Export the dimensions from Essbase through a report script? Because i will use this to load the dimensions in odi.
any idea is highly appreciated.
Thanks in advance.
HansonIf you look at my blog, I talk about the <preview function. it brings back them members with zeros as the values. It's much quicker than actually returning the data.
There is a problem in general with your premise of using a report script to do this. For ODI, you will want the dimensions in a parent child format. The report script will not do that for you. I would suggest you look at the outline extractor housed on applied olap's web site. www.appliedolap.com it's free and you can run it in a batch mode.
I think you should also look at John Goodwin's blog http://john-goodwin.blogspot.com/ he has a series of articles on ODI. you whould be able to extract the dimensionality from a cube and load it into another cube directly from ODI
Maybe you are looking for
-
Kodo 4.1.2 in Weblogic 10 Problem
I was told by BEA that Kodo/openJPA is included in Weblogic 10. However, now I have Weblogic 10 but I could not located much Kodo classes from Weblogic libraries. I searched all the JARs under BEA_HOME\wlserver_10.0\server\lib. I also tried to migrat
-
How to do that with Automator?
Hi there, I've a certain difficulty using Automator for my problem: Let's say that I have a folder named "Movie" on my desktok, and in it I have a movie (.avi, mp4 or whatever) and I also have a subtitled file (.srt) for subtitles. How can i do to se
-
HP VirtualRooms seem to connect but the room content does not display.
When initially connecting to the HP Virtual Rooms system: http://rooms.hp.com, all looks well and I can enter a conference/meeting key and after hitting the 'go' button and I am greeted with a 'Thank you for joining us message'... but there is no act
-
Remaping the comma-key to be a dot-key (Apple Keyboard)
Hi there, I am working on an Apple Keyboard and need to remap the comma-key to be a dot-key. Do you know how to do it? Thank you.
-
MacBook with OS 10.6.2. Software Update asked me to install an OS update and something else when I got online again after a couple of months of not having internet at home. The download went fine, but the installation sticks after I restart and a pro