// Pull each year from Strategic Model 'Operations US East' and Push data into planning. def smPbcsYearMap = ['2017':'FY17', '2018':'FY18'] def pbcsAccountNames = ['OFS_Product Revenue', 'OFS_Services Revenue', 'OFS_Support Revenue', 'OFS_Discounts', 'OFS_Other Cost of Sales', 'OFS_Salaries', 'OFS_Selling Expense', 'OFS_Depreciation'] List smYears = smPbcsYearMap.collect {it.key} List pbcsYears = smPbcsYearMap.collect {it.value} operation.application.getStrategicModel("Operations US East").withCloseable { smModel-> DataGridDefinitionBuilder builder = smModel.dataGridDefinitionBuilder() builder.addPov(['Scenario'], [ ['Forecast'] ]) builder.addColumn(['Time'], [ ['2017', '2018'] ]) builder.addRow(['Account'], [ ['v1000:010', 'v1000:020', 'v1000:030', 'v1020', 'v1040', 'v1080:010', 'v1080:020', 'v1110'] ]) DataGridDefinition gridDefinition = builder.build() DataGrid smGrid = smModel.loadGrid(gridDefinition) //Create the Planning grid Cube cube = operation.application.getCube("OEP_FS") DataGridBuilder gridBuilder = cube.dataGridBuilder("MM/DD/YYYY") gridBuilder.addPov('Dec','OEP_Strategic Planning', 'USD', 'Target', 'Operations US East', 'OFS_Direct Input', 'Smart Phone 6 in', 'US Market') gridBuilder.addColumn(pbcsYears as String[]) int k = 0; int numColumns = 2; def rowdata = [] smGrid.dataCellIterator().each { rowdata << it.data * 0.000001 println("$it.memberNames, cell data:" + it.data * 0.000001) println("Period Name = " + it.periodName + "Account ," + pbcsAccountNames[k] + " cell data:" + it.data * 0.000001) if (rowdata.size() == numColumns) { println("Row Data = " + rowdata) gridBuilder.addRow([pbcsAccountNames[k]], rowdata) k++ rowdata = [] } } DataGridBuilder.Status status = new DataGridBuilder.Status() DataGrid planningGrid = gridBuilder.build(status) println("Size of the grid: " + planningGrid.size()) println("Total number of cells accepted: $status.numAcceptedCells") println("Total number of cells rejected: $status.numRejectedCells") println("First $status.numRejectedCells rejected cells: $status.cellsRejected") cube.saveGrid(planningGrid) } //close SM model.