1: PACKAGE BODY PA_TRANSACTIONS AS
2: /* $Header: PAXTRANB.pls 120.24.12020000.6 2013/04/03 10:48:50 utdas ship $ */
3:
4: P_DEBUG_MODE BOOLEAN := pa_cc_utils.g_debug_mode;
5:
6:
7: -- ========================================================================
8: -- PROCEDURE LoadEi
144:
145: ) IS
146: BEGIN
147: -- dbms_output.put_line('In Loadei:'||to_char(i));
148: pa_cc_utils.set_curr_function('LoadEi');
149: IF P_DEBUG_MODE THEN
150: pa_cc_utils.log_message('LoadEi: ' || 'Start ');
151: END IF;
152:
146: BEGIN
147: -- dbms_output.put_line('In Loadei:'||to_char(i));
148: pa_cc_utils.set_curr_function('LoadEi');
149: IF P_DEBUG_MODE THEN
150: pa_cc_utils.log_message('LoadEi: ' || 'Start ');
151: END IF;
152:
153: EiIdTab(i) := X_expenditure_item_id;
154: EIdTab(i) := X_expenditure_id;
338:
339: /* End changes for Bug#12606242 */
340:
341: IF P_DEBUG_MODE THEN
342: pa_cc_utils.log_message('LoadEi: ' || 'End ');
343: END IF;
344: pa_cc_utils.reset_curr_function ;
345: END LoadEi;
346:
340:
341: IF P_DEBUG_MODE THEN
342: pa_cc_utils.log_message('LoadEi: ' || 'End ');
343: END IF;
344: pa_cc_utils.reset_curr_function ;
345: END LoadEi;
346:
347:
348: -- ========================================================================
351:
352: PROCEDURE FlushEiTabs
353: IS
354: BEGIN
355: pa_cc_utils.set_curr_function('FlushEiTabs');
356: pa_cc_utils.log_message('Start ');
357:
358: EiIdTab := pa_utils.EmptyIdTab;
359: EIdTab := pa_utils.EmptyIdTab;
352: PROCEDURE FlushEiTabs
353: IS
354: BEGIN
355: pa_cc_utils.set_curr_function('FlushEiTabs');
356: pa_cc_utils.log_message('Start ');
357:
358: EiIdTab := pa_utils.EmptyIdTab;
359: EIdTab := pa_utils.EmptyIdTab;
360: TskIdTab := pa_utils.EmptyIdTab;
520: /* End changes for Bug#12606242 */
521:
522: cbs_element_idtab := PA_PLSQL_DATATYPES.EmptyNum15Tab; -- Added for CBS Enhancement Bug 16220146
523:
524: pa_cc_utils.log_message('End ');
525: pa_cc_utils.reset_curr_function ;
526:
527: END FlushEiTabs;
528:
521:
522: cbs_element_idtab := PA_PLSQL_DATATYPES.EmptyNum15Tab; -- Added for CBS Enhancement Bug 16220146
523:
524: pa_cc_utils.log_message('End ');
525: pa_cc_utils.reset_curr_function ;
526:
527: END FlushEiTabs;
528:
529:
538: , X_login IN NUMBER
539: , X_status OUT NOCOPY NUMBER )
540: IS
541: BEGIN
542: pa_cc_utils.set_curr_function('InsItemComment');
543: IF P_DEBUG_MODE THEN
544: pa_cc_utils.log_message('InsItemComment: ' || 'Start ');
545: END IF;
546:
540: IS
541: BEGIN
542: pa_cc_utils.set_curr_function('InsItemComment');
543: IF P_DEBUG_MODE THEN
544: pa_cc_utils.log_message('InsItemComment: ' || 'Start ');
545: END IF;
546:
547: INSERT INTO pa_expenditure_comments (
548: expenditure_item_id
564: , X_login ); -- last_update_login
565:
566: X_status := 0;
567: IF P_DEBUG_MODE THEN
568: pa_cc_utils.log_message('InsItemComment: ' || 'End ');
569: END IF;
570: pa_cc_utils.reset_curr_function ;
571:
572: EXCEPTION
566: X_status := 0;
567: IF P_DEBUG_MODE THEN
568: pa_cc_utils.log_message('InsItemComment: ' || 'End ');
569: END IF;
570: pa_cc_utils.reset_curr_function ;
571:
572: EXCEPTION
573: WHEN OTHERS THEN
574: X_status := SQLCODE;
622: BackoutItemID pa_utils.IdTabTyp; -- Bug 5501593
623: item_comment VARCHAR2(240); -- Bug 5501593
624:
625: BEGIN
626: pa_cc_utils.set_curr_function('InsItems');
627: IF P_DEBUG_MODE THEN
628: pa_cc_utils.log_message('InsItems: ' || 'Start ');
629: END IF;
630:
624:
625: BEGIN
626: pa_cc_utils.set_curr_function('InsItems');
627: IF P_DEBUG_MODE THEN
628: pa_cc_utils.log_message('InsItems: ' || 'Start ');
629: END IF;
630:
631: /* Bug Fix: 3258043 If the transaction import process calls insItems with gl_accounted_flag = 'Y'
632: * then donot override the GL period information
638: X_program_application_id := FND_GLOBAL.PROG_APPL_ID ;
639:
640: --PA-K Changes: Modified EI insert into bulk insert
641: IF P_DEBUG_MODE THEN
642: pa_cc_utils.log_message('InsItems: ' || 'Start of bulk insert for EI insertion');
643: END IF;
644: FORALL i IN 1..Rows ---{
645: INSERT INTO pa_expenditure_items_all (
646: expenditure_item_id
922: , cbs_element_idtab(i) -- Added for CBS Enhancement Bug 16220146
923: ); ---}
924:
925: IF P_DEBUG_MODE THEN
926: pa_cc_utils.log_message('InsItems: ' || 'End of bulk insert for EI insertion');
927: END IF;
928:
929: FOR i IN 1..Rows LOOP ---{
930: IF P_DEBUG_MODE THEN
927: END IF;
928:
929: FOR i IN 1..Rows LOOP ---{
930: IF P_DEBUG_MODE THEN
931: pa_cc_utils.log_message('InsItems: ' || 'Start of Loop for CDL insertion');
932: END IF;
933:
934: /* #1978887: In case of Supplier Invoices which are interfaced to Projects,
935: Cost_Burden_Distributed_Flag should be set to 'N' only if the corresponding project
954: --PA-K For GL Accoutned Txns, call CDL creation API row by row
955: IF nvl(X_gl_flag,'N') in ('Y', 'P') THEN ---{
956:
957: IF P_DEBUG_MODE THEN
958: pa_cc_utils.log_message('InsItems: ' || 'After Insert');
959: END IF;
960:
961: -- Added the following function call to calculate pa_date to Resolve Bug 1103257 base bug 967390
962:
1096: , p_cbs_element_id => cbs_element_idtab(i) -- Added for CBS Enhancement Bug 16220146
1097: );
1098:
1099: IF P_DEBUG_MODE THEN
1100: pa_cc_utils.log_message('InsItems: ' || 'After Creation of CDL');
1101: END IF;
1102:
1103: END IF ; ---}
1104:
1104:
1105: -- dbms_output.put_line( 'error code : ' || to_char( x_err_code)) ;
1106: IF X_err_code <> 0 THEN
1107: x_status := x_err_code ;
1108: pa_cc_utils.reset_curr_function ;
1109: RETURN ;
1110: END IF ;
1111:
1112: IF ( EiCommentTab(i) IS NOT NULL ) THEN
1121: END IF;
1122:
1123: IF ( X_calling_process = 'TRX_IMPORT' ) THEN
1124: IF P_DEBUG_MODE THEN
1125: pa_cc_utils.log_message('Trx Import call to InsItems');
1126: END IF;
1127:
1128: IF ( AdjEiTab(i) IS NOT NULL ) THEN ---{
1129:
1133: , X_user => X_user
1134: , X_login => X_login
1135: , X_status => temp_status );
1136: IF P_DEBUG_MODE THEN
1137: pa_cc_utils.log_message('InsItems: ' || 'After call to InsAuditRec');
1138: END IF;
1139:
1140: Pa_Adjustments.CheckStatus( status_indicator => temp_status );
1141:
1158: , X_user => X_user
1159: , X_login => X_login
1160: , X_status => temp_status );
1161: IF P_DEBUG_MODE THEN
1162: pa_cc_utils.log_message('InsItems: ' || 'After call to SetNetZero');
1163: END IF;
1164:
1165: -- R12 AP Lines uptake
1166: -- SLA need to have parent line_num populated with the latest cdl line
1188: , X_user => X_user
1189: , X_login => X_login
1190: , X_status => temp_status );
1191: IF P_DEBUG_MODE THEN
1192: pa_cc_utils.log_message('InsItems: ' || 'After call to ReverseRelatedItems');
1193: END IF;
1194:
1195: Pa_Adjustments.CheckStatus( status_indicator => temp_status );
1196:
1556: /* Bug 5501593 - End */
1557:
1558: X_status := 0;
1559: IF P_DEBUG_MODE THEN
1560: pa_cc_utils.log_message('InsItems: ' || 'End ');
1561: END IF;
1562: pa_cc_utils.reset_curr_function ;
1563:
1564: EXCEPTION
1558: X_status := 0;
1559: IF P_DEBUG_MODE THEN
1560: pa_cc_utils.log_message('InsItems: ' || 'End ');
1561: END IF;
1562: pa_cc_utils.reset_curr_function ;
1563:
1564: EXCEPTION
1565: WHEN OTHERS THEN
1566: X_status := SQLCODE;
1611: , P_Org_ID IN NUMBER -- 12i MOAC changes
1612: )
1613: IS
1614: BEGIN
1615: pa_cc_utils.set_curr_function('InsertExp');
1616: IF P_DEBUG_MODE THEN
1617: pa_cc_utils.log_message('InsertExp: ' || 'Start ');
1618: END IF;
1619: INSERT INTO pa_expenditures(
1613: IS
1614: BEGIN
1615: pa_cc_utils.set_curr_function('InsertExp');
1616: IF P_DEBUG_MODE THEN
1617: pa_cc_utils.log_message('InsertExp: ' || 'Start ');
1618: END IF;
1619: INSERT INTO pa_expenditures(
1620: expenditure_id
1621: , expenditure_status_code
1694: , X_orig_exp_txn_reference3
1695: , X_person_type
1696: , P_Org_Id); -- 12i MOAC changes
1697: IF P_DEBUG_MODE THEN
1698: pa_cc_utils.log_message('InsertExp: ' || 'End ');
1699: END IF;
1700: pa_cc_utils.reset_curr_function ;
1701:
1702: END InsertExp;
1696: , P_Org_Id); -- 12i MOAC changes
1697: IF P_DEBUG_MODE THEN
1698: pa_cc_utils.log_message('InsertExp: ' || 'End ');
1699: END IF;
1700: pa_cc_utils.reset_curr_function ;
1701:
1702: END InsertExp;
1703:
1704:
1712: , P_accrual_flag IN VARCHAR2
1713: , P_Org_Id IN NUMBER) -- 12i MOAC changes
1714: IS
1715: BEGIN
1716: pa_cc_utils.set_curr_function('InsertExpGroup');
1717: IF P_DEBUG_MODE THEN
1718: pa_cc_utils.log_message('InsertExp: ' || 'Start ');
1719: END IF;
1720:
1714: IS
1715: BEGIN
1716: pa_cc_utils.set_curr_function('InsertExpGroup');
1717: IF P_DEBUG_MODE THEN
1718: pa_cc_utils.log_message('InsertExp: ' || 'Start ');
1719: END IF;
1720:
1721: INSERT INTO pa_expenditure_groups(
1722: expenditure_group
1741: , X_transaction_source
1742: , P_accrual_flag
1743: , P_Org_Id); -- 12i MOAC changes
1744: IF P_DEBUG_MODE THEN
1745: pa_cc_utils.log_message('InsertExp: ' || 'End ');
1746: END IF;
1747: pa_cc_utils.reset_curr_function ;
1748:
1749: END InsertExpGroup;
1743: , P_Org_Id); -- 12i MOAC changes
1744: IF P_DEBUG_MODE THEN
1745: pa_cc_utils.log_message('InsertExp: ' || 'End ');
1746: END IF;
1747: pa_cc_utils.reset_curr_function ;
1748:
1749: END InsertExpGroup;
1750:
1751: --PA-K Changes
1763: l_Dummy NUMBER;
1764: l_Ending_Date DATE;
1765:
1766: BEGIN
1767: pa_cc_utils.set_curr_function('InsertExpGroupNew');
1768: IF P_DEBUG_MODE THEN
1769: pa_cc_utils.log_message('InsertExp: ' || 'Start ');
1770: END IF;
1771:
1765:
1766: BEGIN
1767: pa_cc_utils.set_curr_function('InsertExpGroupNew');
1768: IF P_DEBUG_MODE THEN
1769: pa_cc_utils.log_message('InsertExp: ' || 'Start ');
1770: END IF;
1771:
1772: Begin
1773:
1771:
1772: Begin
1773:
1774: IF P_DEBUG_MODE THEN
1775: pa_cc_utils.log_message('InsertExp: ' || 'Selecting if the group already exists');
1776: END IF;
1777:
1778: select 1, expenditure_ending_date
1779: into l_Dummy, l_Ending_Date
1782:
1783: Exception
1784: when no_data_found then
1785: IF P_DEBUG_MODE THEN
1786: pa_cc_utils.log_message('InsertExp: ' || 'no data found when selecting if group already exists');
1787: END IF;
1788: l_dummy := 0 ;
1789:
1790: End;
1790: End;
1791:
1792: If (l_dummy = 0) Then
1793: IF P_DEBUG_MODE THEN
1794: pa_cc_utils.log_message('InsertExp: ' || 'Exp Group does not exist, insert');
1795: END IF;
1796:
1797: INSERT INTO pa_expenditure_groups(
1798: expenditure_group
1820:
1821: Else
1822:
1823: IF P_DEBUG_MODE THEN
1824: pa_cc_utils.log_message('InsertExp: ' || 'Exp Group does exist, update if needed');
1825: END IF;
1826:
1827: If trunc(X_ending_date) > trunc(l_Ending_Date) Then
1828:
1826:
1827: If trunc(X_ending_date) > trunc(l_Ending_Date) Then
1828:
1829: IF P_DEBUG_MODE THEN
1830: pa_cc_utils.log_message('InsertExp: ' || 'Existing Exp Groups ending date is lesser, update');
1831: END IF;
1832:
1833: update pa_expenditure_groups
1834: set expenditure_ending_date = X_ending_date
1834: set expenditure_ending_date = X_ending_date
1835: where expenditure_group = X_expenditure_group;
1836:
1837: IF P_DEBUG_MODE THEN
1838: pa_cc_utils.log_message('InsertExp: ' || 'Updated Count = '||SQL%ROWCOUNT);
1839: END IF;
1840:
1841: End If;
1842:
1842:
1843: End If;
1844:
1845: IF P_DEBUG_MODE THEN
1846: pa_cc_utils.log_message('InsertExp: ' || 'End ');
1847: END IF;
1848: pa_cc_utils.reset_curr_function ;
1849:
1850: END InsertExpGroupNew;
1844:
1845: IF P_DEBUG_MODE THEN
1846: pa_cc_utils.log_message('InsertExp: ' || 'End ');
1847: END IF;
1848: pa_cc_utils.reset_curr_function ;
1849:
1850: END InsertExpGroupNew;
1851:
1852:
1929: l_cbs_element_id NUMBER ; -- Added for CBS Enhancement Bug 16220146
1930:
1931:
1932: BEGIN
1933: pa_cc_utils.set_curr_function('CreateRelatedItem');
1934: IF P_DEBUG_MODE THEN
1935: pa_cc_utils.log_message('CreateRelatedItem: ' || 'Start ');
1936: END IF;
1937:
1931:
1932: BEGIN
1933: pa_cc_utils.set_curr_function('CreateRelatedItem');
1934: IF P_DEBUG_MODE THEN
1935: pa_cc_utils.log_message('CreateRelatedItem: ' || 'Start ');
1936: END IF;
1937:
1938: l_gms_enabled := gms_pa_costing_pkg.grants_implemented;
1939:
1948: exception
1949: when no_data_found then
1950: X_status := 10;
1951: IF P_DEBUG_MODE THEN
1952: pa_cc_utils.log_message('CreateRelatedItem: ' || 'Invalid Work Type Name');
1953: END IF;
1954: pa_cc_utils.reset_curr_function ;
1955: X_outcome := 'INVALID_WORK_TYPE';
1956: return;
1950: X_status := 10;
1951: IF P_DEBUG_MODE THEN
1952: pa_cc_utils.log_message('CreateRelatedItem: ' || 'Invalid Work Type Name');
1953: END IF;
1954: pa_cc_utils.reset_curr_function ;
1955: X_outcome := 'INVALID_WORK_TYPE';
1956: return;
1957: end;
1958:
1957: end;
1958:
1959: else
1960: IF P_DEBUG_MODE THEN
1961: pa_cc_utils.log_message('CreateRelatedItem: ' || 'Work Type ID defaults from source EI');
1962: END IF;
1963: select work_type_id
1964: into l_work_type_id
1965: from pa_expenditure_items
2034: e.expenditure_id = ei.expenditure_id
2035: AND ei.expenditure_item_id = X_source_exp_item_id
2036: AND ei.task_id = t.task_id;
2037: IF P_DEBUG_MODE THEN
2038: pa_cc_utils.log_message('In pa_transactions.CreateRelatedItem: After select statement');
2039: END IF;
2040:
2041: IF ( X_project_id IS NULL
2042: OR X_task_id IS NULL ) THEN
2054: IF ( dummy IS NOT NULL ) THEN
2055:
2056: X_outcome := 'PA_TR_RELATED_ITEM';
2057: X_status := 1;
2058: pa_cc_utils.reset_curr_function ;
2059: RETURN;
2060:
2061: END IF;
2062: /*
2064: , X_expenditure_item_date ) ) THEN
2065:
2066: X_outcome := 'EXP_TYPE_INACTIVE';
2067: X_status := 1;
2068: pa_cc_utils.reset_curr_function ;
2069: RETURN;
2070:
2071: END IF;
2072: */
2084: IF ( dummy = 0 ) THEN
2085:
2086: X_outcome := 'INVALID_EXP_TYPE';
2087: X_status := 1;
2088: pa_cc_utils.reset_curr_function ;
2089: RETURN;
2090:
2091: END IF;
2092:
2092:
2093: IF ( X_etype_class NOT IN ('ST', 'OT' ) ) THEN
2094: X_outcome := 'INVALID_EXP_TYPE';
2095: X_status := 1;
2096: pa_cc_utils.reset_curr_function ;
2097: RETURN;
2098: END IF;
2099:
2100:
2116: IF ( dummy = 0 ) THEN
2117:
2118: X_outcome := 'INVALID_ORGANIZATION';
2119: X_status := 1;
2120: pa_cc_utils.reset_curr_function ;
2121: RETURN;
2122:
2123: END IF;
2124:
2137: -- for Bug # 519532.Since, Billable flag is an OUT parameter and was getting
2138: -- populated in get_status, it was seen that a null was getting passed. Hence
2139: -- added the call to get_status again.
2140: IF P_DEBUG_MODE THEN
2141: pa_cc_utils.log_message('CreateRelatedItem: ' || 'Before Call to PATC');
2142: END IF;
2143:
2144: pa_transactions_pub.validate_transaction(
2145: X_project_id => X_dest_proj_id
2196: , p_sys_link_function => X_etype_class);
2197: /* Added p_sys_link_function => X_etype_class for bug3557261 */
2198:
2199: IF P_DEBUG_MODE THEN
2200: pa_cc_utils.log_message('CreateRelatedItem: ' || 'After Call to PATC');
2201: END IF;
2202:
2203: /* Start of Bug 2648550 */
2204: l_assignment_id := PATC.G_OVERIDE_ASSIGNMENT_ID;
2209: -- Since this is a batch program, we handle only errors,no warnings
2210:
2211: X_outcome := temp_outcome;
2212: X_status := 1;
2213: pa_cc_utils.reset_curr_function ;
2214: RETURN;
2215:
2216: END IF;
2217:
2226: , 'CLIENT_EXTN'
2227: , temp_outcome ) ;
2228:
2229: IF P_DEBUG_MODE THEN
2230: pa_cc_utils.log_message('CreateRelatedItem: ' || 'After Call to gms_transactions_pub.validate_transaction');
2231: END IF;
2232:
2233: IF ( temp_outcome IS NOT NULL) THEN
2234:
2232:
2233: IF ( temp_outcome IS NOT NULL) THEN
2234:
2235: X_outcome := temp_outcome;
2236: pa_cc_utils.reset_curr_function ;
2237: RETURN;
2238:
2239: END IF;
2240: END IF;
2258: * Send the Recvr_Org_Id to LOADEI using the new API defined
2259: * in PA_UTILS2
2260: */
2261: IF P_DEBUG_MODE THEN
2262: pa_cc_utils.log_message('CreateRelatedItem: ' || 'Before Call to LoadEi');
2263: END IF;
2264:
2265: pa_transactions.LoadEi( X_expenditure_item_id => X_expenditure_item_id
2266: ,X_expenditure_id => X_expenditure_id
2337: , p_project_burdened_cost => l_PROJECT_BURDENED_COST
2338: , p_cbs_element_id => l_cbs_element_id -- Added for CBS Enhancement Bug 16220146
2339: );
2340: IF P_DEBUG_MODE THEN
2341: pa_cc_utils.log_message('CreateRelatedItem: ' || 'After call to LoadEi');
2342: END IF;
2343:
2344: pa_transactions.InsItems( X_user => X_userid
2345: , X_login => 0
2348: , Rows => 1
2349: , X_status => temp_status
2350: , X_gl_flag => 'N' );
2351: IF P_DEBUG_MODE THEN
2352: pa_cc_utils.log_message('CreateRelatedItem: ' || 'After call to InsItems');
2353: END IF;
2354:
2355: /*start of bug 5769510*/
2356: IF (l_gms_enabled = 'Y') THEN
2397:
2398: X_status := 0;
2399: X_outcome := NULL;
2400: IF P_DEBUG_MODE THEN
2401: pa_cc_utils.log_message('CreateRelatedItem: ' || 'End ');
2402: END IF;
2403: pa_cc_utils.reset_curr_function ;
2404:
2405: EXCEPTION
2399: X_outcome := NULL;
2400: IF P_DEBUG_MODE THEN
2401: pa_cc_utils.log_message('CreateRelatedItem: ' || 'End ');
2402: END IF;
2403: pa_cc_utils.reset_curr_function ;
2404:
2405: EXCEPTION
2406: WHEN NO_DATA_FOUND THEN
2407: X_status := -1403;
2427:
2428: l_work_type_id NUMBER; /* bug2482593 */
2429:
2430: BEGIN
2431: pa_cc_utils.set_curr_function('UpdateRelatedItem');
2432: IF P_DEBUG_MODE THEN
2433: pa_cc_utils.log_message('UpdateRelatedItem: ' || 'Start ');
2434: END IF;
2435:
2429:
2430: BEGIN
2431: pa_cc_utils.set_curr_function('UpdateRelatedItem');
2432: IF P_DEBUG_MODE THEN
2433: pa_cc_utils.log_message('UpdateRelatedItem: ' || 'Start ');
2434: END IF;
2435:
2436: /* changes for bug 2482593 start */
2437: if(X_work_type_name IS NOT NULL) then
2444: exception
2445: when no_data_found then
2446: X_status := 10;
2447: IF P_DEBUG_MODE THEN
2448: pa_cc_utils.log_message('UpdateRelatedItem: ' || 'Invalid Work Type Name');
2449: END IF;
2450: pa_cc_utils.reset_curr_function ;
2451: return;
2452: end;
2446: X_status := 10;
2447: IF P_DEBUG_MODE THEN
2448: pa_cc_utils.log_message('UpdateRelatedItem: ' || 'Invalid Work Type Name');
2449: END IF;
2450: pa_cc_utils.reset_curr_function ;
2451: return;
2452: end;
2453:
2454: /* else
2452: end;
2453:
2454: /* else
2455: {
2456: pa_cc_utils.log_message("Work Type ID defaults from source EI");
2457: select work_type_id
2458: into l_work_type_id
2459: from pa_expenditure_items
2460: where expenditure_item_id = X_Expenditure_item_id;
2486: ei.expenditure_item_id = X_expenditure_item_id;
2487: */
2488: X_status := 0;
2489: IF P_DEBUG_MODE THEN
2490: pa_cc_utils.log_message('UpdateRelatedItem: ' || 'End ');
2491: END IF;
2492: pa_cc_utils.reset_curr_function ;
2493:
2494: EXCEPTION
2488: X_status := 0;
2489: IF P_DEBUG_MODE THEN
2490: pa_cc_utils.log_message('UpdateRelatedItem: ' || 'End ');
2491: END IF;
2492: pa_cc_utils.reset_curr_function ;
2493:
2494: EXCEPTION
2495: WHEN NO_DATA_FOUND THEN
2496: X_status := -1403;