73: return l_vs_name;
74:
75: Exception
76: when others then
77: FII_UTIL.Write_Log (
78: 'Unexpected error when calling Get_Value_Set_Name...');
79: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,80));
80: FII_UTIL.Write_Log ('Value Set ID: ' || p_vs_id);
81: RAISE;
75: Exception
76: when others then
77: FII_UTIL.Write_Log (
78: 'Unexpected error when calling Get_Value_Set_Name...');
79: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,80));
80: FII_UTIL.Write_Log ('Value Set ID: ' || p_vs_id);
81: RAISE;
82:
83: End Get_Value_Set_Name;
76: when others then
77: FII_UTIL.Write_Log (
78: 'Unexpected error when calling Get_Value_Set_Name...');
79: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,80));
80: FII_UTIL.Write_Log ('Value Set ID: ' || p_vs_id);
81: RAISE;
82:
83: End Get_Value_Set_Name;
84:
105: return l_flex_value;
106:
107: Exception
108: when others then
109: FII_UTIL.Write_Log (
110: 'Unexpected error when calling Get_Flex_Value...');
111: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,80));
112: FII_UTIL.Write_Log ('Value ID: ' || p_flex_value_id);
113: RAISE;
107: Exception
108: when others then
109: FII_UTIL.Write_Log (
110: 'Unexpected error when calling Get_Flex_Value...');
111: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,80));
112: FII_UTIL.Write_Log ('Value ID: ' || p_flex_value_id);
113: RAISE;
114:
115: End Get_Flex_Value;
108: when others then
109: FII_UTIL.Write_Log (
110: 'Unexpected error when calling Get_Flex_Value...');
111: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,80));
112: FII_UTIL.Write_Log ('Value ID: ' || p_flex_value_id);
113: RAISE;
114:
115: End Get_Flex_Value;
116:
136: -- Set default directory in case if the profile option
137: -- BIS_DEBUG_LOG_DIRECTORY is not set up
138: ------------------------------------------------------
139: if l_dir is NULL then
140: l_dir := FII_UTIL.get_utl_file_dir;
141: end if;
142:
143: ----------------------------------------------------------------
144: -- FII_UTIL.initialize will get profile options FII_DEBUG_MODE
140: l_dir := FII_UTIL.get_utl_file_dir;
141: end if;
142:
143: ----------------------------------------------------------------
144: -- FII_UTIL.initialize will get profile options FII_DEBUG_MODE
145: -- and BIS_DEBUG_LOG_DIRECTORY and set up the directory where
146: -- the log files and output files are written to
147: ----------------------------------------------------------------
148: FII_UTIL.initialize('FII_LOB_MAINTAIN_PKG.log',
144: -- FII_UTIL.initialize will get profile options FII_DEBUG_MODE
145: -- and BIS_DEBUG_LOG_DIRECTORY and set up the directory where
146: -- the log files and output files are written to
147: ----------------------------------------------------------------
148: FII_UTIL.initialize('FII_LOB_MAINTAIN_PKG.log',
149: 'FII_LOB_MAINTAIN_PKG.out',l_dir, 'FII_LOB_MAINTAIN_PKG');
150:
151: -- --------------------------------------------------------
152: -- Check source ledger setup for DBI
155:
156: l_check := FII_EXCEPTION_CHECK_PKG.check_slg_setup;
157:
158: if l_check <> 0 then
159: FII_UTIL.write_log('>>> No source ledger setup for DBI');
160: RAISE LOBDIM_fatal_err;
161: end if;
162:
163: -- --------------------------------------------------------
178:
179: g_phase := 'Obtain FII schema name and other info';
180:
181: -- Obtain FII schema name
182: g_schema_name := FII_UTIL.get_schema_name ('FII');
183:
184: -- Obtain user ID, login ID and initialize package variables
185: FII_USER_ID := FND_GLOBAL.USER_ID;
186: FII_LOGIN_ID := FND_GLOBAL.LOGIN_ID;
186: FII_LOGIN_ID := FND_GLOBAL.LOGIN_ID;
187:
188: -- If any of the above values is not set, error out
189: IF (FII_User_Id is NULL OR FII_Login_Id is NULL) THEN
190: FII_UTIL.Write_Log ('>>> Failed Intialization');
191: RAISE LOBDIM_fatal_err;
192: END IF;
193:
194: -- Determine if process will be run in debug mode
193:
194: -- Determine if process will be run in debug mode
195: IF (NVL(G_Debug_Mode, 'N') <> 'N') THEN
196: FIIDIM_Debug := TRUE;
197: FII_UTIL.Write_Log ('Debug On');
198: ELSE
199: FIIDIM_Debug := FALSE;
200: FII_UTIL.Write_Log ('Debug Off');
201: END IF;
196: FIIDIM_Debug := TRUE;
197: FII_UTIL.Write_Log ('Debug On');
198: ELSE
199: FIIDIM_Debug := FALSE;
200: FII_UTIL.Write_Log ('Debug Off');
201: END IF;
202:
203: -- Turn trace on if process is run in debug mode
204: IF (FIIDIM_Debug) THEN
203: -- Turn trace on if process is run in debug mode
204: IF (FIIDIM_Debug) THEN
205: -- Program running in debug mode, turning trace on
206: EXECUTE IMMEDIATE 'ALTER SESSION SET SQL_TRACE TRUE';
207: FII_UTIL.Write_Log ('Initialize: Set Trace On');
208: END IF;
209:
210: IF (FIIDIM_Debug) THEN
211: FII_UTIL.Write_Log ('Initialize: Now start processing '|| 'LOB dimension');
207: FII_UTIL.Write_Log ('Initialize: Set Trace On');
208: END IF;
209:
210: IF (FIIDIM_Debug) THEN
211: FII_UTIL.Write_Log ('Initialize: Now start processing '|| 'LOB dimension');
212: End If;
213:
214: -- Check if we should use old DBI 5.0 LOB model
215: --changed by vkazhipu for bug 4992496 related to performance tuning
223: end;
224:
225: if l_count > 0 then
226: G_LOB_DBI50_SETUP := 'Y';
227: FII_UTIL.Write_Log ('Use DBI 5.0 LOB assignment: Master Value Set Only');
228: end if;
229: ------------------------------------------------
230:
231: -- --------------------------------------------------------
287: FII_MESSAGE.write_output (msg_name => 'FII_MSTR_VSET_NOT_FOUND',
288: token_num => 0);
289: RAISE LOBDIM_fatal_err;
290: When TOO_MANY_ROWS Then
291: FII_UTIL.Write_Log ('More than one master value set found for LOB Dimension');
292: RAISE LOBDIM_fatal_err;
293: When LOBDIM_NOT_ENABLED then
294: raise;
295: When LOBDIM_fatal_err then
294: raise;
295: When LOBDIM_fatal_err then
296: raise;
297: When OTHERS Then
298: FII_UTIL.Write_Log ('Unexpected error when getting master value set for LOB Dimension');
299: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
300: RAISE LOBDIM_fatal_err;
301: End;
302:
295: When LOBDIM_fatal_err then
296: raise;
297: When OTHERS Then
298: FII_UTIL.Write_Log ('Unexpected error when getting master value set for LOB Dimension');
299: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
300: RAISE LOBDIM_fatal_err;
301: End;
302:
303: IF (FIIDIM_Debug) THEN
300: RAISE LOBDIM_fatal_err;
301: End;
302:
303: IF (FIIDIM_Debug) THEN
304: FII_UTIL.Write_Log ('LOB Master Value Set ID: '|| G_MASTER_VALUE_SET_ID);
305: FII_UTIL.Write_Log ('LOB Master Value Set: '||
306: Get_Value_Set_Name (G_MASTER_VALUE_SET_ID));
307: FII_UTIL.Write_Log (' and LOB Top Node: '|| G_TOP_NODE_VALUE);
308: END IF;
301: End;
302:
303: IF (FIIDIM_Debug) THEN
304: FII_UTIL.Write_Log ('LOB Master Value Set ID: '|| G_MASTER_VALUE_SET_ID);
305: FII_UTIL.Write_Log ('LOB Master Value Set: '||
306: Get_Value_Set_Name (G_MASTER_VALUE_SET_ID));
307: FII_UTIL.Write_Log (' and LOB Top Node: '|| G_TOP_NODE_VALUE);
308: END IF;
309:
303: IF (FIIDIM_Debug) THEN
304: FII_UTIL.Write_Log ('LOB Master Value Set ID: '|| G_MASTER_VALUE_SET_ID);
305: FII_UTIL.Write_Log ('LOB Master Value Set: '||
306: Get_Value_Set_Name (G_MASTER_VALUE_SET_ID));
307: FII_UTIL.Write_Log (' and LOB Top Node: '|| G_TOP_NODE_VALUE);
308: END IF;
309:
310:
311: -- Check if the master value set is a table validated set.
329:
330: Exception
331:
332: When LOBDIM_NOT_ENABLED then
333: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
334: --Let the main program handle this
335: raise;
336:
337: When LOBDIM_fatal_err then
334: --Let the main program handle this
335: raise;
336:
337: When LOBDIM_fatal_err then
338: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Initialize : '|| 'User defined error');
339: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
340: FND_CONCURRENT.Af_Rollback;
341: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Initialize');
342: raise;
335: raise;
336:
337: When LOBDIM_fatal_err then
338: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Initialize : '|| 'User defined error');
339: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
340: FND_CONCURRENT.Af_Rollback;
341: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Initialize');
342: raise;
343:
341: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Initialize');
342: raise;
343:
344: When others then
345: FII_UTIL.Write_Log ('Unexpected error when calling Initialize...');
346: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
347: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
348: RAISE;
349:
342: raise;
343:
344: When others then
345: FII_UTIL.Write_Log ('Unexpected error when calling Initialize...');
346: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
347: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
348: RAISE;
349:
350: END Initialize;
343:
344: When others then
345: FII_UTIL.Write_Log ('Unexpected error when calling Initialize...');
346: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
347: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
348: RAISE;
349:
350: END Initialize;
351:
398: From FND_FLEX_VALUE_NORM_HIERARCHY
399: Where flex_value_set_id = G_MASTER_VALUE_SET_ID;
400:
401: IF (FIIDIM_Debug) THEN
402: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into FII_DIM_NORM_HIER_GT');
403: END IF;
404:
405: -- For DBI 5.0 customers, use the master value set only
406: -- For DBI 6.0, need to get all child value sets
436: and sts.source_ledger_group_id = slg.source_ledger_group_id
437: and slg.usage_code = 'DBI');
438:
439: IF (FIIDIM_Debug) THEN
440: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into FII_DIM_NORM_HIER_GT');
441: END IF;
442:
443: --Insert records for all local (child) value sets
444: g_phase := 'Insert records for all local (child) value sets';
489:
490: Exception
491:
492: When LOBDIM_fatal_err then
493: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Get_NORM_HIERARCHY_TMP: '||
494: 'User defined error');
495: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
496: FND_CONCURRENT.Af_Rollback;
497: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Get_NORM_HIERARCHY_TMP');
491:
492: When LOBDIM_fatal_err then
493: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Get_NORM_HIERARCHY_TMP: '||
494: 'User defined error');
495: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
496: FND_CONCURRENT.Af_Rollback;
497: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Get_NORM_HIERARCHY_TMP');
498: raise;
499:
497: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Get_NORM_HIERARCHY_TMP');
498: raise;
499:
500: When others then
501: FII_UTIL.Write_Log ('Unexpected error when calling Get_NORM_HIERARCHY_TMP.');
502: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
503: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
504: RAISE;
505:
498: raise;
499:
500: When others then
501: FII_UTIL.Write_Log ('Unexpected error when calling Get_NORM_HIERARCHY_TMP.');
502: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
503: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
504: RAISE;
505:
506: END Get_NORM_HIERARCHY_TMP;
499:
500: When others then
501: FII_UTIL.Write_Log ('Unexpected error when calling Get_NORM_HIERARCHY_TMP.');
502: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
503: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
504: RAISE;
505:
506: END Get_NORM_HIERARCHY_TMP;
507:
574: l_vset_name := Get_Value_Set_Name (dup_asg_par_rec.child_flex_value_set_id);
575: l_parent_flex_value:= Get_Flex_Value (dup_asg_par_rec.parent_lob_id);
576: l_parent_vset_name := Get_Value_Set_Name (dup_asg_par_rec.parent_flex_value_set_id);
577:
578: FII_UTIL.Write_Output (
579: l_flex_value || ' '||
580: l_vset_name || ' '||
581: l_parent_flex_value || ' '||
582: l_parent_vset_name);
595:
596: Exception
597:
598: When LOBDIM_MULT_PAR_err then
599: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Detect_Diamond_Shape: '||
600: 'diamond shape detected!');
601: RAISE;
602:
603: When others then
600: 'diamond shape detected!');
601: RAISE;
602:
603: When others then
604: FII_UTIL.Write_Log ('Unexpected error when calling Detect_Diamond_Shape.');
605: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
606: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
607: RAISE;
608:
601: RAISE;
602:
603: When others then
604: FII_UTIL.Write_Log ('Unexpected error when calling Detect_Diamond_Shape.');
605: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
606: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
607: RAISE;
608:
609: END Detect_Diamond_Shape;
602:
603: When others then
604: FII_UTIL.Write_Log ('Unexpected error when calling Detect_Diamond_Shape.');
605: FII_UTIL.Write_Log ('Error Message: '|| substr(sqlerrm,1,180));
606: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
607: RAISE;
608:
609: END Detect_Diamond_Shape;
610:
701: FND_CONCURRENT.Af_Commit; --commit
702:
703: EXCEPTION
704: WHEN NO_DATA_FOUND Then
705: FII_UTIL.Write_Log ('Insert Immediate child: No Data Found');
706: FII_MESSAGE.Func_Fail
707: (func_name => 'FII_LOB_MAINTAIN_PKG.Insert_Imm_Child_Nodes');
708: RAISE;
709:
707: (func_name => 'FII_LOB_MAINTAIN_PKG.Insert_Imm_Child_Nodes');
708: RAISE;
709:
710: WHEN OTHERS Then
711: FII_UTIL.Write_Log (substr(SQLERRM,1,180));
712: FII_MESSAGE.Func_Fail
713: (func_name => 'FII_LOB_MAINTAIN_PKG.INSERT_IMM_CHILD_NODES');
714: RAISE;
715:
732: 'Flatten_LOB_Dim_Hier');
733: END IF;
734:
735: g_phase := 'Truncate table FII_LOB_HIER_GT';
736: FII_UTIL.truncate_table ('FII_LOB_HIER_GT', 'FII', g_retcode);
737:
738: -----------------------------------------------------------------
739:
740: LOBDIM_parent_node := p_root_node;
785: child_flex_value_set_id
786: from fii_lob_hier_gt);
787:
788: IF (FIIDIM_Debug) THEN
789: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into fii_lob_hier_gt');
790: END IF;
791:
792: g_phase := 'Insert self node for the top node';
793:
814: 'N',
815: 'N');
816:
817: IF (FIIDIM_Debug) THEN
818: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into fii_LOB_hier_gt');
819: END IF;
820:
821: -- Insert a dummy super top node (-999) to the hierarchy table
822: -- (the dummy value set id is -998)
848: WHERE next_level_lob_id = parent_lob_id
849: AND next_level_lob_id = child_lob_id;
850:
851: IF (FIIDIM_Debug) THEN
852: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into fii_lob_hier_gt');
853: END IF;
854:
855: --Insert the UNASSIGNED to the hierarchy table.
856: --Use G_TOP_NODE_ID (rather than -999, see bug 3541141) as the parent
882: 'N',
883: 'N');
884:
885: IF (FIIDIM_Debug) THEN
886: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into fii_lob_hier_gt');
887: END IF;
888:
889: g_phase := 'Insert self node for UNASSIGNED to the hierarchy table';
890:
913: 'N',
914: 'N');
915:
916: IF (FIIDIM_Debug) THEN
917: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into fii_lob_hier_gt');
918: END IF;
919:
920: -- Added record (-999, TOP, UNASSIGNED) to the hierarchy
921: -- after the fix for bug 3541141
945: 'N',
946: 'N');
947:
948: IF (FIIDIM_Debug) THEN
949: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into fii_lob_hier_gt');
950: END IF;
951:
952: --====================================================================
953: --Before we proceed to populate the final hierarchy table, we should
1015:
1016: EXCEPTION
1017:
1018: WHEN NO_DATA_FOUND THEN
1019: FII_UTIL.Write_Log ('Flatten_LOB_Dim_Hier: No Data Found');
1020: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||
1021: 'Flatten_LOB_Dim_Hier');
1022: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
1023: raise;
1018: WHEN NO_DATA_FOUND THEN
1019: FII_UTIL.Write_Log ('Flatten_LOB_Dim_Hier: No Data Found');
1020: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||
1021: 'Flatten_LOB_Dim_Hier');
1022: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
1023: raise;
1024:
1025: WhEN LOBDIM_MULT_PAR_err THEN
1026: FII_UTIL.Write_Log ('Flatten_LOB_Dim_Hier: Diamond Shape Detected');
1022: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
1023: raise;
1024:
1025: WhEN LOBDIM_MULT_PAR_err THEN
1026: FII_UTIL.Write_Log ('Flatten_LOB_Dim_Hier: Diamond Shape Detected');
1027: FII_MESSAGE.Func_Fail (func_name =>
1028: 'FII_DIMENSION_MAINTAIN_PKG.Flatten_LOB_Dim_Hier');
1029: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
1030: raise;
1025: WhEN LOBDIM_MULT_PAR_err THEN
1026: FII_UTIL.Write_Log ('Flatten_LOB_Dim_Hier: Diamond Shape Detected');
1027: FII_MESSAGE.Func_Fail (func_name =>
1028: 'FII_DIMENSION_MAINTAIN_PKG.Flatten_LOB_Dim_Hier');
1029: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
1030: raise;
1031:
1032: WHEN OTHERS THEN
1033: FII_UTIL.Write_Log ('Flatten_LOB_Dim_Hier: '|| substr(sqlerrm,1,180));
1029: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
1030: raise;
1031:
1032: WHEN OTHERS THEN
1033: FII_UTIL.Write_Log ('Flatten_LOB_Dim_Hier: '|| substr(sqlerrm,1,180));
1034: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||
1035: 'Flatten_LOB_Dim_Hier');
1036: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
1037: raise;
1032: WHEN OTHERS THEN
1033: FII_UTIL.Write_Log ('Flatten_LOB_Dim_Hier: '|| substr(sqlerrm,1,180));
1034: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||
1035: 'Flatten_LOB_Dim_Hier');
1036: FII_UTIL.Write_Log ( 'G_PHASE: ' || G_PHASE);
1037: raise;
1038:
1039: END Flatten_LOB_Dim_Hier;
1040:
1062: where ffv.flex_value_set_id = G_MASTER_VALUE_SET_ID
1063: and ffv.flex_value_id = h.next_level_lob_id);
1064:
1065: IF (FIIDIM_Debug) THEN
1066: FII_UTIL.Write_Log('Updated ' || SQL%ROWCOUNT || ' rows in fii_lob_hier_gt');
1067: END IF;
1068:
1069: IF (FIIDIM_Debug) THEN
1070: FII_MESSAGE.Func_Succ(func_name=>'FII_LOB_MAINTAIN_PKG.'||'Get_Sort_Order');
1072:
1073: EXCEPTION
1074:
1075: WHEN OTHERS THEN
1076: FII_UTIL.Write_Log ('Get_Sort_Order -> phase: '|| g_phase);
1077: FII_UTIL.Write_Log ('Get_Sort_Order: '|| substr(sqlerrm,1,180));
1078: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||'Get_Sort_Order');
1079: raise;
1080:
1073: EXCEPTION
1074:
1075: WHEN OTHERS THEN
1076: FII_UTIL.Write_Log ('Get_Sort_Order -> phase: '|| g_phase);
1077: FII_UTIL.Write_Log ('Get_Sort_Order: '|| substr(sqlerrm,1,180));
1078: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||'Get_Sort_Order');
1079: raise;
1080:
1081: END Get_Sort_Order;
1102: Where child_flex_value_set_id <> G_MASTER_VALUE_SET_ID
1103: And child_flex_value_set_id <> G_FII_INT_VALUE_SET_ID;
1104:
1105: IF (FIIDIM_Debug) THEN
1106: FII_UTIL.Write_Log('Deleted ' || SQL%ROWCOUNT || ' rows from FII_LOB_HIER_GT');
1107: END IF;
1108:
1109: -- Bug 4299543. Leaf nodes will always be included in the pruned hierarchy from
1110: -- Expense Analysis onwards.
1136: group by tab3.next_level_lob_id
1137: having count(*) = 1);
1138:
1139: IF (FIIDIM_Debug) THEN
1140: FII_UTIL.Write_Log('Updated ' || SQL%ROWCOUNT || ' rows in fii_lob_hier_gt');
1141: END IF;
1142:
1143: g_phase := 'Update is_leaf_flag';
1144:
1150: and next_level_lob_id = child_lob_id
1151: and next_level_is_leaf = 'Y';
1152:
1153: IF (FIIDIM_Debug) THEN
1154: FII_UTIL.Write_Log('Updated ' || SQL%ROWCOUNT || ' rows in fii_lob_hier_gt');
1155: END IF;
1156:
1157: --------------------------------------------------------------
1158: --Populate column next_level_lob_sort_order (bug 3608355)
1169:
1170: EXCEPTION
1171:
1172: WHEN OTHERS THEN
1173: FII_UTIL.Write_Log ('Get_Pruned_LOB_GT -> phase: '|| g_phase);
1174: FII_UTIL.Write_Log ('Get_Pruned_LOB_GT: '|| substr(sqlerrm,1,180));
1175: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||
1176: 'Get_Pruned_LOB_GT');
1177: raise;
1170: EXCEPTION
1171:
1172: WHEN OTHERS THEN
1173: FII_UTIL.Write_Log ('Get_Pruned_LOB_GT -> phase: '|| g_phase);
1174: FII_UTIL.Write_Log ('Get_Pruned_LOB_GT: '|| substr(sqlerrm,1,180));
1175: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||
1176: 'Get_Pruned_LOB_GT');
1177: raise;
1178:
1192: END IF;
1193:
1194: g_phase := 'Truncate tables';
1195:
1196: FII_UTIL.truncate_table ('FII_FULL_LOB_HIERS', 'FII', g_retcode);
1197: FII_UTIL.truncate_table ('FII_LOB_HIERARCHIES', 'FII', g_retcode);
1198:
1199: g_phase := 'INSERT INTO FII_FULL_LOB_HIERS';
1200:
1193:
1194: g_phase := 'Truncate tables';
1195:
1196: FII_UTIL.truncate_table ('FII_FULL_LOB_HIERS', 'FII', g_retcode);
1197: FII_UTIL.truncate_table ('FII_LOB_HIERARCHIES', 'FII', g_retcode);
1198:
1199: g_phase := 'INSERT INTO FII_FULL_LOB_HIERS';
1200:
1201: INSERT INTO FII_FULL_LOB_HIERS
1231: FII_USER_ID,
1232: FII_LOGIN_ID);
1233:
1234: IF (FIIDIM_Debug) THEN
1235: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into FII_FULL_LOB_HIERS');
1236: END IF;
1237:
1238: g_phase := 'INSERT INTO FII_LOB_HIERARCHIES';
1239:
1270: FII_USER_ID,
1271: FII_LOGIN_ID);
1272:
1273: IF (FIIDIM_Debug) THEN
1274: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into FII_LOB_HIERARCHIES');
1275: END IF;
1276:
1277: commit;
1278:
1283:
1284: EXCEPTION
1285:
1286: WHEN OTHERS THEN
1287: FII_UTIL.Write_Log ('Handle_Unenabled_DIM -> phase: '|| g_phase);
1288: FII_UTIL.Write_Log ('Handle_Unenabled_DIM: '|| substr(sqlerrm,1,180));
1289: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||
1290: 'Handle_Unenabled_DIM');
1291: raise;
1284: EXCEPTION
1285:
1286: WHEN OTHERS THEN
1287: FII_UTIL.Write_Log ('Handle_Unenabled_DIM -> phase: '|| g_phase);
1288: FII_UTIL.Write_Log ('Handle_Unenabled_DIM: '|| substr(sqlerrm,1,180));
1289: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.'||
1290: 'Handle_Unenabled_DIM');
1291: raise;
1292:
1329:
1330: --Copy TMP hierarchy table to the final dimension table
1331: g_phase := 'Copy TMP hierarchy table to the final full dimension table';
1332:
1333: FII_UTIL.truncate_table ('FII_FULL_LOB_HIERS', 'FII', g_retcode);
1334:
1335: INSERT /*+ APPEND */ INTO FII_FULL_LOB_HIERS (
1336: parent_level,
1337: parent_lob_id,
1366: FII_LOGIN_ID
1367: FROM FII_LOB_HIER_GT;
1368:
1369: IF (FIIDIM_Debug) THEN
1370: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into FII_FULL_LOB_HIERS');
1371: END IF;
1372:
1373: --Call FND_STATS to collect statistics after re-populating the tables.
1374: --for the full dimension table since it will be used later
1388:
1389: --Copy FII_LOB_HIER_GT to the final (pruned) dimension table
1390: g_phase := 'Copy TMP hierarchy table to the final pruned dimension table';
1391:
1392: FII_UTIL.truncate_table ('FII_LOB_HIERARCHIES', 'FII', g_retcode);
1393:
1394: INSERT /*+ APPEND */ INTO FII_LOB_HIERARCHIES (
1395: parent_level,
1396: parent_lob_id,
1427: FII_LOGIN_ID
1428: FROM FII_LOB_HIER_GT;
1429:
1430: IF (FIIDIM_Debug) THEN
1431: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into FII_LOB_HIERARCHIES');
1432: END IF;
1433:
1434: --Call FND_STATS to collect statistics after re-populating the tables.
1435: --Will seed this in RSG
1452:
1453: EXCEPTION
1454:
1455: WHEN LOBDIM_fatal_err THEN
1456: FII_UTIL.Write_Log ('Init_Load -> phase: '|| g_phase);
1457: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Init_Load: '||
1458: 'User defined error');
1459: -- Rollback
1460: FND_CONCURRENT.Af_Rollback;
1453: EXCEPTION
1454:
1455: WHEN LOBDIM_fatal_err THEN
1456: FII_UTIL.Write_Log ('Init_Load -> phase: '|| g_phase);
1457: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Init_Load: '||
1458: 'User defined error');
1459: -- Rollback
1460: FND_CONCURRENT.Af_Rollback;
1461: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Init_Load');
1463: ret_val := FND_CONCURRENT.Set_Completion_Status
1464: (status => 'ERROR', message => substr(sqlerrm,1,180));
1465:
1466: WHEN LOBDIM_MULT_PAR_err THEN
1467: FII_UTIL.Write_Log ('Init_Load -> phase: '|| g_phase);
1468: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Init_Load: '||
1469: 'Diamond Shape Detected');
1470: -- Rollback
1471: FND_CONCURRENT.Af_Rollback;
1464: (status => 'ERROR', message => substr(sqlerrm,1,180));
1465:
1466: WHEN LOBDIM_MULT_PAR_err THEN
1467: FII_UTIL.Write_Log ('Init_Load -> phase: '|| g_phase);
1468: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Init_Load: '||
1469: 'Diamond Shape Detected');
1470: -- Rollback
1471: FND_CONCURRENT.Af_Rollback;
1472: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Init_Load');
1474: ret_val := FND_CONCURRENT.Set_Completion_Status
1475: (status => 'ERROR', message => substr(sqlerrm,1,180));
1476:
1477: WHEN LOBDIM_NOT_ENABLED THEN
1478: FII_UTIL.Write_Log ('Init_Load -> phase: '|| g_phase);
1479: FII_UTIL.Write_Log ('>>> LOB Dimension Not Enabled...');
1480:
1481: Handle_Unenabled_DIM;
1482:
1475: (status => 'ERROR', message => substr(sqlerrm,1,180));
1476:
1477: WHEN LOBDIM_NOT_ENABLED THEN
1478: FII_UTIL.Write_Log ('Init_Load -> phase: '|| g_phase);
1479: FII_UTIL.Write_Log ('>>> LOB Dimension Not Enabled...');
1480:
1481: Handle_Unenabled_DIM;
1482:
1483: retcode := sqlcode;
1484: -- ret_val := FND_CONCURRENT.Set_Completion_Status
1485: -- (status => 'NORMAL', message => NULL);
1486:
1487: WHEN OTHERS THEN
1488: FII_UTIL.Write_Log ('Init_Load -> phase: '|| g_phase);
1489: FII_UTIL.Write_Log (
1490: 'Other error in FII_LOB_MAINTAIN_PKG.Init_Load: ' || substr(sqlerrm,1,180));
1491:
1492: -- Rollback
1485: -- (status => 'NORMAL', message => NULL);
1486:
1487: WHEN OTHERS THEN
1488: FII_UTIL.Write_Log ('Init_Load -> phase: '|| g_phase);
1489: FII_UTIL.Write_Log (
1490: 'Other error in FII_LOB_MAINTAIN_PKG.Init_Load: ' || substr(sqlerrm,1,180));
1491:
1492: -- Rollback
1493: FND_CONCURRENT.Af_Rollback;
1548: -- The maintenance is done by 2 statements, one INSERT and one DELETE.
1549: g_phase := 'Copy TMP hierarchy table to the final full dimension table';
1550:
1551: --IF (FIIDIM_Debug) THEN
1552: -- FII_UTIL.Write_Log ('Starting to delete from the final table by diffing');
1553: -- End If;
1554:
1555: g_phase := 'DELETE FROM FII_FULL_LOB_HIERS';
1556:
1569: parent_flex_value_set_id, child_flex_value_set_id
1570: FROM FII_LOB_HIER_GT);
1571:
1572: IF (FIIDIM_Debug) THEN
1573: FII_UTIL.Write_Log('Deleted ' || SQL%ROWCOUNT || ' rows from FII_FULL_LOB_HIERS');
1574: END IF;
1575:
1576: --IF (FIIDIM_Debug) THEN
1577: -- FII_UTIL.Write_Log ('Starting to insert into the final table by diffing');
1573: FII_UTIL.Write_Log('Deleted ' || SQL%ROWCOUNT || ' rows from FII_FULL_LOB_HIERS');
1574: END IF;
1575:
1576: --IF (FIIDIM_Debug) THEN
1577: -- FII_UTIL.Write_Log ('Starting to insert into the final table by diffing');
1578: --End If;
1579:
1580: g_phase := 'Insert into FII_FULL_LOB_HIERS';
1581:
1629: FII_LOGIN_ID
1630: FROM FII_FULL_LOB_HIERS);
1631:
1632: IF (FIIDIM_Debug) THEN
1633: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into FII_FULL_LOB_HIERS');
1634: END IF;
1635:
1636: --Call FND_STATS to collect statistics after re-populating the tables.
1637: --for the full dimension table since it will be used later
1679: NVL(next_level_lob_sort_order, -92883)
1680: FROM FII_LOB_HIER_GT);
1681:
1682: IF (FIIDIM_Debug) THEN
1683: FII_UTIL.Write_Log('Deleted ' || SQL%ROWCOUNT || ' rows from FII_LOB_HIERARCHIES');
1684: END IF;
1685:
1686: g_phase := 'Insert into FII_LOB_HIERARCHIES';
1687:
1738: FII_LOGIN_ID
1739: FROM FII_LOB_HIERARCHIES);
1740:
1741: IF (FIIDIM_Debug) THEN
1742: FII_UTIL.Write_Log('Inserted ' || SQL%ROWCOUNT || ' rows into FII_LOB_HIERARCHIES');
1743: END IF;
1744:
1745: --Call FND_STATS to collect statistics after re-populating the tables.
1746: --Will seed this in RSG
1762: -- Exception handling
1763:
1764: EXCEPTION
1765: WHEN LOBDIM_fatal_err THEN
1766: FII_UTIL.Write_Log ('Incre_Update -> phase: '|| g_phase);
1767: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Incre_Update'||
1768: 'User defined error');
1769: -- Rollback
1770: FND_CONCURRENT.Af_Rollback;
1763:
1764: EXCEPTION
1765: WHEN LOBDIM_fatal_err THEN
1766: FII_UTIL.Write_Log ('Incre_Update -> phase: '|| g_phase);
1767: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Incre_Update'||
1768: 'User defined error');
1769: -- Rollback
1770: FND_CONCURRENT.Af_Rollback;
1771: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Incre_Update');
1773: ret_val := FND_CONCURRENT.Set_Completion_Status
1774: (status => 'ERROR', message => substr(sqlerrm,1,180));
1775:
1776: WHEN LOBDIM_MULT_PAR_err THEN
1777: FII_UTIL.Write_Log ('Incre_Update -> phase: '|| g_phase);
1778: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Incre_Update: '||
1779: 'Diamond Shape Detected');
1780: -- Rollback
1781: FND_CONCURRENT.Af_Rollback;
1774: (status => 'ERROR', message => substr(sqlerrm,1,180));
1775:
1776: WHEN LOBDIM_MULT_PAR_err THEN
1777: FII_UTIL.Write_Log ('Incre_Update -> phase: '|| g_phase);
1778: FII_UTIL.Write_Log ('FII_LOB_MAINTAIN_PKG.Incre_Update: '||
1779: 'Diamond Shape Detected');
1780: -- Rollback
1781: FND_CONCURRENT.Af_Rollback;
1782: FII_MESSAGE.Func_Fail(func_name => 'FII_LOB_MAINTAIN_PKG.Incre_Update');
1784: ret_val := FND_CONCURRENT.Set_Completion_Status
1785: (status => 'ERROR', message => substr(sqlerrm,1,180));
1786:
1787: WHEN LOBDIM_NOT_ENABLED THEN
1788: FII_UTIL.Write_Log ('Incre_Update -> phase: '|| g_phase);
1789: FII_UTIL.Write_Log ('>>> LOB Dimension Not Enabled...');
1790:
1791: Handle_Unenabled_DIM;
1792:
1785: (status => 'ERROR', message => substr(sqlerrm,1,180));
1786:
1787: WHEN LOBDIM_NOT_ENABLED THEN
1788: FII_UTIL.Write_Log ('Incre_Update -> phase: '|| g_phase);
1789: FII_UTIL.Write_Log ('>>> LOB Dimension Not Enabled...');
1790:
1791: Handle_Unenabled_DIM;
1792:
1793: retcode := sqlcode;
1794: -- ret_val := FND_CONCURRENT.Set_Completion_Status
1795: -- (status => 'NORMAL', message => NULL);
1796:
1797: WHEN OTHERS THEN
1798: FII_UTIL.Write_Log ('Incre_Update -> phase: '|| g_phase);
1799: FII_UTIL.Write_Log (
1800: 'Other error in FII_LOB_MAINTAIN_PKG.Incre_Update: ' || substr(sqlerrm,1,180));
1801:
1802: -- Rollback
1795: -- (status => 'NORMAL', message => NULL);
1796:
1797: WHEN OTHERS THEN
1798: FII_UTIL.Write_Log ('Incre_Update -> phase: '|| g_phase);
1799: FII_UTIL.Write_Log (
1800: 'Other error in FII_LOB_MAINTAIN_PKG.Incre_Update: ' || substr(sqlerrm,1,180));
1801:
1802: -- Rollback
1803: FND_CONCURRENT.Af_Rollback;