FDMEE JythonScripting
-
Upload
umapathi-baskar -
Category
Documents
-
view
199 -
download
13
description
Transcript of FDMEE JythonScripting
![Page 1: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/1.jpg)
Jython Scripting in FDMEEIt's Not That Scary
Tony Scalese
Edgewater Ranzal
![Page 2: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/2.jpg)
Focus
Services
People
Methodology
Customers
Partnership
15 Years700+ clients
1000+ projects
About Edgewater Ranzal
![Page 3: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/3.jpg)
We offer a full spectrum of EPM/BI ServicesDashboards & Scorecards, Financial
Analytics & Reporting, Operational Analytics,
What-if Analysis, Query & Reporting, Visual
Exploration
Financial performance, Legal,
Segment & Mgmt Reporting, Financial
Close
HFM Optimization, Performance Lab
SOX Compliance Support
Strategic Finance, Planning,
Budgeting, Forecasting, Workforce
Planning, Capital Planning, Project
Financial Planning
Data Integration, Financial Data
Management, Data Warehousing,
Master Data Management &DRM,
ETL Services, Automation
Project/Program Mgmt, EPM
Road Maps, Application
Reviews, Business
Requirements, Process
Change, Documentation
Installation, Upgrades,
Migration, System
Monitoring, Backup and
Recovery, Disaster
Recovery, Load Testing,
Hardware Sizing, Exalytics
Benchmarking
Consolidation
BusinessIntelligence
EnterprisePlanning
Infrastructure
Training &Support Services
ProjectManagement
DataServices
Costing & Profitability
Mgmt
Support Services – Infrastructure &
Application Support Contracts
Key Teach Course Delivery: Planning, Essbase,
Financial Reporting, Smart View, HPCM, HFM,
FDM, DRM, OBIEE
Custom Training Delivery: Process & Reporting
HPCM Standard & Detailed
Models, Waterfall Allocations,
Activity Based Costing,
Customer, Product & LOB
Profitability
![Page 4: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/4.jpg)
� Jython Overview
� Configuring Eclipse
� FDMEE Scripting Configuration
Agenda
![Page 5: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/5.jpg)
� Why Jython and not
VBScript?
● Jython is the strategic direction
of Oracle development
● Jython is platform independent
● The API supporting Jython
scripting will continue to be
enhanced
● Jython error handling is more
elegant and robust
Let’s Get It Out of the Way
![Page 6: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/6.jpg)
� Python programming language written in JAVA
� Syntax is more sensitive than VBScript
� Variable data type is critical; declaration is implicit
� Comment characters: # or ‘’’<comment block>’’’
� import statement allows easy reuse of code
� Far more robust error handling
� Familiarize yourself with camelCase
� Not that different than VBScript
Jython Basics
![Page 7: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/7.jpg)
� Import JAVA classes
import java.sql as sql
� Utilize Try...Except
try:
Code to execute
except:
Error handling
Script Format
![Page 8: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/8.jpg)
� Sys, Traceback: Can be used to get detailed
error information including line in script
producing error
� Java.sql: Used to interact with remote
databases
� Smtplib: Used for email generation
Commonly Used JAVA Classes
![Page 9: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/9.jpg)
Method Functionality
count(Substring,[Start],[End]) Number of times substring occurs
endswith(Suffix,[Start],[End]) Boolean result; does string end with suffix
find(substring,[Start],[End]) Returns position where substring is found
isdigit() Boolean result; is string all numbers
isspace() Boolean result; is string all spaces
lower() Puts still in all lower case, similar to lcase
replace(old,new,[count]) Replaces text in string
split([separator],[max split]) Returns a list, string is divided by separator
startswith(prefix,[Start],[End]) Boolean result; does string start with prefix
strip([characters]) Removes specified character(s) from string
upper() Puts still in all upper case, similar to ucase
zfill(width) Returns numeric string filled left with zeros
Jython String Manipulation
![Page 10: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/10.jpg)
Jython VBScript
If Then if x == 100:
elif x == 200:
else:
If x = 100 then
Elseif x = 200 then
Else
End if
Case No native statement;
utilize dictionary or If
Then statements
Select Case x
Case 100
Case 200
Case Else
End Select
Jython Statements
![Page 11: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/11.jpg)
Jython VBScript
Do Loop while x<100:
Do something
x += 1
Do while x < 100
Do something
x = x+1
Loop
For Loop for x in range(100):
Do something
For x = 0 to 100
Do something
Next
Jython Iteration
![Page 12: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/12.jpg)
Jython VBScript
List lListName = [‘Elem1’,’Elem2’,’Elem3’]
for elem in lListName:
print elem
aArrayName =
Array(“Elem1”,”Elem2”,”Elem3”)
For each strElem in aArrayName
msgbox strElem
Next
Dictionary dictName = {}
dictName[‘Tony Scalese’] = 36
dictName[‘Opal Alapat’] = 39
for sKey,sItem in dictName.iteritems():
print sKey + ‘\’s age is ‘ + str(sItem)
Set dictName =
CreateObject(“Scripting.Dictionary”)
dictName.Add “Tony Scalese”, 36
dictName.Add “Opal Alapat”, 39
For each strKey in dictName.Keys
msgbox strKey & “’s age is “ &
dictName.Item(strKey)
Next
Jython Mapping Data Type
![Page 13: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/13.jpg)
� If a JRE is not installed, be sure to install the 64
bit JRE (install using defaults)
● http://www.oracle.com/technetwork/java/javase/dow
nloads/jre7-downloads-1880261.html
JAVA Runtime Environment (JRE)
![Page 14: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/14.jpg)
� Download Jython 2.5.1 from
http://www.jython.org/downloads.html
● Do not use a more up to date version!
Jython Download
![Page 15: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/15.jpg)
� Select English � Next
� Accept the EULA � Next
� Select Standard � Next
� Leave the default C:\Jython2.5.1 directory � Next
� May be prompted that the directory is created, click OK and Next again
� Leave Current as JAVA home directory � Next
� Click Next on the Summary tab, install will begin
� Click Next on the ReadMe and then Finish
Jython Install
![Page 16: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/16.jpg)
� Confirm the C:\jython2.5.1 directory exists
� Confirm jython.jar file exists
Jython Install Confirmation
![Page 17: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/17.jpg)
� Download Eclipse Standard from
http://www.eclipse.org/downloads/
Download Eclipse
![Page 18: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/18.jpg)
� Extract the download to the C:\ directory
� Open the C:\Eclipse folder and launch
eclipse.exe
Extract Eclipse
![Page 19: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/19.jpg)
� Specify a default workspace
Workspace
![Page 20: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/20.jpg)
� Expand General �Editors and click Text Editors
� Change the options:● Display tab width: 2
● Insert spaces for tabs: Checked
● Show Print Margin: Checked
● Show Line Numbers: Checked
Configure Eclipse General Options
![Page 21: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/21.jpg)
� Select Windows � Preferences
� Expand Install/Update
� Click Available Software Sites
� Click Add
� Name: PyDev
� Location: http://pydev.org/updates/
� Click OK
Install PyDev
![Page 22: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/22.jpg)
PyDev Install
![Page 23: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/23.jpg)
� Select Help � Install New Software� Click PyDev from the Work With drop down� Check PyDev� Click Next� Click Next� Accept the EULA and click Finish
PyDev Install
![Page 24: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/24.jpg)
� Put a check next to the
certificate
� Click OK
� Click Yes to restart Eclipse
after the install
PyDev Install
![Page 25: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/25.jpg)
� Windows � Preferences
� Expand PyDev and click Editor
� Change tab length to 2
Set PyDev Options
![Page 26: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/26.jpg)
� Interpreter – Jython
� Click New
● Interpreter Name: Jython2.5.1
● Browse and select Jython.jar from C: drive
� Click OK
Set PyDev Interpreter
![Page 27: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/27.jpg)
� When prompted, leave defaults and click OK
Set PyDev Interpreter
![Page 28: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/28.jpg)
� Close the Welcome Screen
� Right click the Package Explorer
� New � Project
Creating a Project
![Page 29: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/29.jpg)
� Expand PyDev and select PyDev Project
� Click Next
Creating a Project
![Page 30: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/30.jpg)
� Name the Project
� Change the project type to Jython
� Click Finish
� Click Yes when prompted
Creating a Project
![Page 31: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/31.jpg)
� Right click the Project
� Select New � Folder
● Name the folder src
● Repeat and create as lib
Organize Code
![Page 32: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/32.jpg)
� Right click lib folder and select Import
� Expand General and select File System
Import JAR Files
![Page 33: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/33.jpg)
� From Directory: lib directory of FDM
● %hyperion_home%\Products\FinancialDataQuality\li
b
� Check the aif-apis.jar
� Click Finish
Import FDMEE JAR
![Page 34: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/34.jpg)
� Right click the project (ER_FDMEE)
� Select Properties
� Click PyDev – PYTHONPATH
� Click Add jar/zip/egg
� Expand the project and click the lib folder
Update Python Path
![Page 35: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/35.jpg)
� Add new PyDev module
● Right click src folder
● New � PyDev module
Creating Modules
![Page 36: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/36.jpg)
� Specify a name
� Click Finish
� When prompted for a template, select Module
main and click OK
Creating Modules
![Page 37: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/37.jpg)
� Add print “hello”
� Run the script
● Run as Jython Run
� hello shows in the
console window when
successful
Testing Module
![Page 38: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/38.jpg)
� Add the following text to the module:● import com.hyperion.aif.scripting.API as API
� Save the module
� Type API(). on a new line.
� A list of available methods will display
Testing FDMEE API Usage
![Page 39: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/39.jpg)
� The equivalent of Import – Data Pump scripts in FDM Classic
� Import Integration scripts have been replaced by the Open Interface adaptor and the BefImport event script
� Import scripts are used to manipulate data during the import process
� Execute during an import process when assigned to the import format used by the location and data load rule
� Every line in the data file is evaluated
� Avoid the temptation to overuse import scripts● Parsing strings that cannot be parsed by an import format● Temporary variables storing header information● Mapping data should be done in maps, not import scripts
Import Scripts
![Page 40: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/40.jpg)
� Define the script name
● def ScriptName (strfield,strrecord):
� Write script actions
● aField = split(strrecord,”-”)
● sCostCenter = aField[1]
� Return result to function
● return sCostCenter
Import Script SyntaxNotice the
colon at the
end
![Page 41: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/41.jpg)
def EBS_CostCenter(strField, strRecord):
sCC = strField
if strField.count(“.”) > 0:
aSegments = strField.split(‘.’)
sCC = aSegments[2]
return sCC
Sample Import Script
Notice the
colon at the
end
![Page 42: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/42.jpg)
� No longer limited to 5
� Declare a variable before the function
� Designate the variable as global
strDept = “”
def Nvision_Entity(strfield,strrecord):
if strrecord[1:5] == “Dept:”:
global strDept
strDept = strrecord[6:9]
return strfield
Temporary Variables (RES.pVarTempx)
![Page 43: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/43.jpg)
� Simply return temporary variable in “assign”
script
def Nvision_C1(strfield,strrecord):
return strDept
Using Temporary Variables
![Page 44: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/44.jpg)
� Similar in concept to varValues
� Be careful of overuse due to performance
impacts
� Enter #SCRIPT to activate script section of
maps
� fdmRow.getString(“FieldName”)
� fdmResult = “Mapped_Result”
Mapping Scripts
![Page 45: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/45.jpg)
� Execute during defined events within the
application
� Fewer than FDM Classic, notably StartUp,
POVChanged
� Scope needs to be well defined to ensure
process only executes when needed
� No need to declare function
● def BefImport(): Not needed
Event Scripts
![Page 46: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/46.jpg)
Event Description FDM Classic Equivalent
Import Executes any time the import
process is executed
ImportAction, FileImport
Calculate Before & After Logic groups and
maps processing
Calculate
ProcLogicGrp When logic groups are assigned ProcLogicGroup
ProcMap Executes ONCE during mapping
application
ProcMap
Validate Validate workflow step Validate
ExportToDat Export workflow step ExportToDat
Load Export workflow step Load
Consolidate Export workflow step Consolidate
Check Check workflow step Check
Events – Before and After
![Page 47: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/47.jpg)
� Custom scripts are used to extend the functionality of FDMEE
� Custom script are organized in groups
● Scripts can be assigned to multiple groups
� Custom scripts are registered
● Similar to Menu Maker specifying a caption
● Parameters can be added to make a script more dynamic
� Custom scripts can executed from web UI
� No need to declare function
● def ER_OutputData(): Not needed
Custom Scripts
![Page 48: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/48.jpg)
� Create a group
● Logical grouping that a user can select
● By Region: North America, EMEA, Asia Pacific
● By Purpose: Data Exports, Budget, Actuals
� Register script to group
● Add parameters if applicable
Custom Script Registration
![Page 49: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/49.jpg)
� Select Group
� Select Script & click Execute
● Specify parameters if applicable
� Select Execution Mode and click OK
Executing Custom Scripts
![Page 50: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/50.jpg)
� Used to test code without actually impacting the
data in FDMEE
� 4 sections:
1. Initialize dev mode
2. Populate context
3. Custom code
4. Clean-up actions
� Once code is tested, sections 1, 2 & 4 can be
removed, handled natively by the application
Development Mode
![Page 51: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/51.jpg)
Commonly Used Occasionally Used Rarely Used
APPID
CATKEY
CATNAME
CHKSTATUS
EXPSTATUS
IMPSTATUS
INBOXDIR
LOADID
LOCKEY
LOCNAME
OUTBOXDIR
PERIODNAME
PERIODKEY
PROCESSSTATUS
SCRIPTSDIR
VALSTATUS
EXPORTFLAG
EXPORTMODE
FILEDIR
FILENAME
IMPORTFLAG
IMPORTFORMAT
IMPORTMODE
MULTIPERIODLOAD
RULEID
RULENAME
SOURCENAME
SOURCETYPE
TARGETAPPDB
TARGETAPPNAME
BATCHSCRIPTDIR
EPMORACLEHOME
EPMORACLEINSTANCEHOME
FDM Context
� Each execution includes a collection of information
![Page 52: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/52.jpg)
import java.math.BigDecimal as BigDecimalimport java.sql as sqlimport com.hyperion.aif.scripting.API as API
fdmAPI = API()
conn = sql.DriverManager.getConnection("jdbc:oracle:thin:@server:port:SID", "user", "password");conn.setAutoCommit(False)
fdmAPI.initializeDevMode(conn);
print “Connected”
Initialize Development Mode
![Page 53: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/53.jpg)
fdmContext = fdmAPI.initContext(BigDecimal(LoadID))
print “Location Name: “ + fdmContext[“LOCNAME”]
Populate Context
![Page 54: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/54.jpg)
� fdmAPI.closeConnection();
Clean-up Action
![Page 55: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/55.jpg)
� getPOVLocation(LoadID), Category, StartPeriod, EndPeriod: Returns key, not text
� executeDML(query,param_list)
� getCustomScriptParameterValue(loadID,param): Load ID is optional
� executeQuery(query,parameters): Returns recordset
� showCustomFile(FilePath): Display file
� showCustomMessage(message)
� logFatal(message), Error, Warn, Info, Debug
Useful FDM APIs
![Page 56: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/56.jpg)
� The BefImport event script is used in
conjunction with the Open Interface adaptor to
import data from relational source
� This approach replaces import integration
scripts from FDM Classic
� Check out Mike Casey’s presentation - Using
the Open Interface Adapter in FDM Enterprise
Edition 11.1.2.3 - on 6/25 from 2-3 for a deep
dive into the setup
Integrating Data from Relational Sources
![Page 57: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/57.jpg)
import java.text.SimpleDateFormat as SimpleDateFormat
import java.sql as sql
strPOVPer = fdmContext["PERIODKEY"]
strYear = SimpleDateFormat("yyyy").format(strPOVPer)
lngMonth = SimpleDateFormat("MM").format(strPOVPer)
strMonth = SimpleDateFormat("MMM").format(strPOVPer)
batchName = "MatchDataLoadRuleParam"
BefImport Script Sample - Setup
![Page 58: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/58.jpg)
insertStmt = """
INSERT INTO AIF_OPEN_INTERFACE (
BATCH_NAME
,YEAR
,PERIOD
,PERIOD_NUM
,CURRENCY
,COL01
,COL02
,AMOUNT
) VALUES (
?
,?
,?
,?
,?
,?
,?
)
"""
BefImport Script Sample – Build Query
![Page 59: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/59.jpg)
#Connect to source DB
sourceConn = sql.DriverManager.getConnection("jdbc:oracle:thin:@Server:Port:SID","User","Password");
#Build SELECT statement to get data to insert
selectStmt = "Select * from table \n"
selectStmt = selectStmt + "Where 1=1 \n"
#Run the query to get the data
stmt = sourceConn.prepareStatement(selectStmt)
RS = stmt.executeQuery()
BefImport Script Sample – Run Query
![Page 60: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/60.jpg)
#Loop through the data and import it into the Open Interface table
while(RS.next()):
params = [ batchName, strYear,strMonth,lngMonth, "USD", RS.getString("Account"), RS.getString("Entity"), RS.getBigDecimal("Amount") ]
fdmAPI.executeDML(insertStmt, params, False)
fdmAPI.commitTransaction()
#Close the connection
RS.close()
sourceConn.close()
BefImport Script Sample – Import Data
![Page 61: FDMEE JythonScripting](https://reader031.fdocuments.in/reader031/viewer/2022033007/563db94b550346aa9a9bf2f6/html5/thumbnails/61.jpg)
Questions