30:
31: BEGIN
32: JTF_DIAGNOSTIC_ADAPTUTIL.setUpVars;
33: JTF_DIAGNOSTIC_ADAPTUTIL.addStringToReport('@html');
34: JTF_DIAGNOSTIC_COREAPI.insert_style_sheet;
35:
36: /* Set Row Limit to 1000 (i.e.) Max Number of records to be fetched by each sql*/
37: row_limit :=1000;
38: l_org_exists :=0; /* Initialize to zero */
41: l_org_id := JTF_DIAGNOSTIC_ADAPTUTIL.getInputValue('OrgId',inputs);
42: l_script := nvl(upper(JTF_DIAGNOSTIC_ADAPTUTIL.getInputValue('Script',inputs)),'ALL');
43:
44: /*JTF_DIAGNOSTIC_ADAPTUTIL.addStringToReport('OrgID input :'||l_org_id||' Script: '||l_script);
45: JTF_DIAGNOSTIC_COREAPI.BRPrint;
46: */
47:
48: -- JTF_DIAGNOSTIC_COREAPI.Line_Out('script: '||l_script);
49:
44: /*JTF_DIAGNOSTIC_ADAPTUTIL.addStringToReport('OrgID input :'||l_org_id||' Script: '||l_script);
45: JTF_DIAGNOSTIC_COREAPI.BRPrint;
46: */
47:
48: -- JTF_DIAGNOSTIC_COREAPI.Line_Out('script: '||l_script);
49:
50: /* l_script is NOT a mandatory input. If it is not entered, then run all the scripts.
51: However if a script name is entered, then validate it for existence. */
52:
50: /* l_script is NOT a mandatory input. If it is not entered, then run all the scripts.
51: However if a script name is entered, then validate it for existence. */
52:
53: If l_script not in ('UNIT_EFF','IMPLDT_NULL','ALL') Then
54: JTF_DIAGNOSTIC_COREAPI.errorprint('Invalid Script Name');
55: JTF_DIAGNOSTIC_COREAPI.ActionErrorPrint('Please choose a Script Name from the Lov or leave the field blank.');
56: statusStr := 'FAILURE';
57: isFatal := 'TRUE';
58: fixInfo := ' Please review the error message below and take corrective action.';
51: However if a script name is entered, then validate it for existence. */
52:
53: If l_script not in ('UNIT_EFF','IMPLDT_NULL','ALL') Then
54: JTF_DIAGNOSTIC_COREAPI.errorprint('Invalid Script Name');
55: JTF_DIAGNOSTIC_COREAPI.ActionErrorPrint('Please choose a Script Name from the Lov or leave the field blank.');
56: statusStr := 'FAILURE';
57: isFatal := 'TRUE';
58: fixInfo := ' Please review the error message below and take corrective action.';
59: errStr := ' Invalid value for input field Script ';
75: where organization_id=l_org_id;
76: Exception
77: When others Then
78: l_org_exists :=0;
79: JTF_DIAGNOSTIC_COREAPI.errorprint('Invalid Organization Id');
80: JTF_DIAGNOSTIC_COREAPI.ActionErrorPrint(' Please either provide a valid value for the Organization Id or leave it blank.');
81: statusStr := 'FAILURE';
82: isFatal := 'TRUE';
83: fixInfo := ' Please review the error message below and take corrective action.';
76: Exception
77: When others Then
78: l_org_exists :=0;
79: JTF_DIAGNOSTIC_COREAPI.errorprint('Invalid Organization Id');
80: JTF_DIAGNOSTIC_COREAPI.ActionErrorPrint(' Please either provide a valid value for the Organization Id or leave it blank.');
81: statusStr := 'FAILURE';
82: isFatal := 'TRUE';
83: fixInfo := ' Please review the error message below and take corrective action.';
84: errStr := ' Invalid value for input field Organization Id ';
252: end if;
253:
254: sqltxt :=sqltxt||' and rownum< '||round(row_limit/3);
255:
256: num_rows:= JTF_DIAGNOSTIC_COREAPI.display_sql(sqltxt, ' Unit Effective Components with invalid ''From End Item Unit Number'' or ''To End Item Unit Number'' ');
257:
258: If (num_rows = 0) Then /* Corrupt Data Not Found for this case*/
259: JTF_DIAGNOSTIC_COREAPI.Line_Out('No corrupt data found for this case.
');
260: ElsIf (num_rows > 0) Then /* Show Impact and Action only if rows are returned */
255:
256: num_rows:= JTF_DIAGNOSTIC_COREAPI.display_sql(sqltxt, ' Unit Effective Components with invalid ''From End Item Unit Number'' or ''To End Item Unit Number'' ');
257:
258: If (num_rows = 0) Then /* Corrupt Data Not Found for this case*/
259: JTF_DIAGNOSTIC_COREAPI.Line_Out('No corrupt data found for this case.
');
260: ElsIf (num_rows > 0) Then /* Show Impact and Action only if rows are returned */
261: If (num_rows = row_limit -1 ) Then
262: JTF_DIAGNOSTIC_COREAPI.Line_Out('
Output of the above table is limited to the first '||(row_limit-1)||' rows
263:
to prevent an excessively big output file.
');
258: If (num_rows = 0) Then /* Corrupt Data Not Found for this case*/
259: JTF_DIAGNOSTIC_COREAPI.Line_Out('No corrupt data found for this case.
');
260: ElsIf (num_rows > 0) Then /* Show Impact and Action only if rows are returned */
261: If (num_rows = row_limit -1 ) Then
262: JTF_DIAGNOSTIC_COREAPI.Line_Out('
Output of the above table is limited to the first '||(row_limit-1)||' rows
263:
to prevent an excessively big output file.
');
264: End If;
265: JTF_DIAGNOSTIC_COREAPI.Line_Out('
Records of the below three types are fetched.
266:
(a) Missing from_end_item_unit_number (it is a mandatory column).
261: If (num_rows = row_limit -1 ) Then
262: JTF_DIAGNOSTIC_COREAPI.Line_Out('
Output of the above table is limited to the first '||(row_limit-1)||' rows
263:
to prevent an excessively big output file.
');
264: End If;
265: JTF_DIAGNOSTIC_COREAPI.Line_Out('
Records of the below three types are fetched.
266:
(a) Missing from_end_item_unit_number (it is a mandatory column).
267:
Indicated by word '' *MISSING''.
268:
(b) Invalid from_end_item_unit_number. Indicated by word ''Invalid''.
269:
(c) Invalid To_end_item_unit_number. Indicated by word ''Invalid''.
271:
in pjm_unit_numbers table.
272:
To_end_item_unit_number is not a mandatory column
273:
and hence can be null. ');
274:
275: JTF_DIAGNOSTIC_COREAPI.Line_Out('
IMPACT:
276:
Component records get created with corrupt data which
277:
generate error messages while querying the Bills.
');
278:
279: JTF_DIAGNOSTIC_COREAPI.ActionErrorLink('
For fixing the rootcause of this data corruption,
275: JTF_DIAGNOSTIC_COREAPI.Line_Out('
IMPACT:
276:
Component records get created with corrupt data which
277:
generate error messages while querying the Bills.
');
278:
279: JTF_DIAGNOSTIC_COREAPI.ActionErrorLink('
For fixing the rootcause of this data corruption,
280:
please apply appropriate patches suggested in metalink note : ' , '393085.1', '' );
281:
282: reportStr := '
If Rows are returned with missing/invalid ''From End Item Unit Number''
283:
or ''To End Item Unit Number'' ,
299:
300: statusStr := 'SUCCESS';
301: isFatal := 'FALSE';
302:
303: JTF_DIAGNOSTIC_COREAPI.BRPrint;
304: End If; /* End of l_script */
305: /* End of script identify components with invalid Unit numbers*/
306:
307: /* Script 2 - Fetch bills with Null Implementation Date */
329: sqltxt :=sqltxt||' and rownum< '||row_limit;
330: /* sqltxt := sqltxt || ' and rownum< 5'; -- temporarily limiting the records to 5 */
331: sqltxt :=sqltxt||' order by mp.organization_code, mif.padded_item_number,bsb.alternate_bom_designator';
332:
333: num_rows:= JTF_DIAGNOSTIC_COREAPI.display_sql(sqltxt, ' Bills with Null Implementation Date ');
334:
335: If (num_rows = 0) Then /* Corrupt Data Not Found for this case*/
336: JTF_DIAGNOSTIC_COREAPI.Line_Out('No corrupt data found for this case.
');
337: ElsIf (num_rows > 0) Then /* Show Impact and Action only if rows are returned */
332:
333: num_rows:= JTF_DIAGNOSTIC_COREAPI.display_sql(sqltxt, ' Bills with Null Implementation Date ');
334:
335: If (num_rows = 0) Then /* Corrupt Data Not Found for this case*/
336: JTF_DIAGNOSTIC_COREAPI.Line_Out('No corrupt data found for this case.
');
337: ElsIf (num_rows > 0) Then /* Show Impact and Action only if rows are returned */
338: If (num_rows = row_limit -1 ) Then
339: JTF_DIAGNOSTIC_COREAPI.Line_Out('
Output of the above table is limited to the first '||(row_limit-1)||' rows
340:
to prevent an excessively big output file.
');
335: If (num_rows = 0) Then /* Corrupt Data Not Found for this case*/
336: JTF_DIAGNOSTIC_COREAPI.Line_Out('No corrupt data found for this case.
');
337: ElsIf (num_rows > 0) Then /* Show Impact and Action only if rows are returned */
338: If (num_rows = row_limit -1 ) Then
339: JTF_DIAGNOSTIC_COREAPI.Line_Out('
Output of the above table is limited to the first '||(row_limit-1)||' rows
340:
to prevent an excessively big output file.
');
341: End If;
342:
343: JTF_DIAGNOSTIC_COREAPI.Line_Out('
IMPACT:
339: JTF_DIAGNOSTIC_COREAPI.Line_Out('
Output of the above table is limited to the first '||(row_limit-1)||' rows
340:
to prevent an excessively big output file.
');
341: End If;
342:
343: JTF_DIAGNOSTIC_COREAPI.Line_Out('
IMPACT:
344:
Components added to these bills will appear
345:
to be unimplemented when querying the bill.');
346:
347: reportStr := '
ACTION:
364:
365: statusStr := 'SUCCESS';
366: isFatal := 'FALSE';
367:
368: JTF_DIAGNOSTIC_COREAPI.BRPrint;
369: End If; /* End of l_script */
370: /* End of script 2- Bills with NULL Implementation Date */
371:
372: <
369: End If; /* End of l_script */
370: /* End of script 2- Bills with NULL Implementation Date */
371:
372: <
373: JTF_DIAGNOSTIC_COREAPI.Line_Out('
This Health Check test completed as expected
');
374: report := JTF_DIAGNOSTIC_ADAPTUTIL.constructReport(statusStr,errStr,fixInfo,isFatal);
375: reportClob := JTF_DIAGNOSTIC_ADAPTUTIL.getReportClob;
376: End If; /* End of l_org_id is null or l_org_exists=1 */
377:
376: End If; /* End of l_org_id is null or l_org_exists=1 */
377:
378: EXCEPTION
379: when others then
380: JTF_DIAGNOSTIC_COREAPI.errorprint('Error: '||sqlerrm);
381: JTF_DIAGNOSTIC_COREAPI.ActionErrorPrint('If this error repeats, please contact Oracle Support Services');
382: statusStr := 'FAILURE';
383: errStr := sqlerrm ||' occurred in script. ';
384: fixInfo := 'Unexpected Exception in BOMDGBIB.pls';
377:
378: EXCEPTION
379: when others then
380: JTF_DIAGNOSTIC_COREAPI.errorprint('Error: '||sqlerrm);
381: JTF_DIAGNOSTIC_COREAPI.ActionErrorPrint('If this error repeats, please contact Oracle Support Services');
382: statusStr := 'FAILURE';
383: errStr := sqlerrm ||' occurred in script. ';
384: fixInfo := 'Unexpected Exception in BOMDGBIB.pls';
385: isFatal := 'FALSE';