81: ( p_api_version IN NUMBER
82: , p_init_msg_list IN VARCHAR2
83: , p_commit IN VARCHAR2
84: , p_validation_level IN VARCHAR2
85: , p_spec IN GMD_SPECIFICATIONS%ROWTYPE
86: , p_spec_tests_tbl IN GMD_SPEC_PUB.spec_tests_tbl
87: , p_user_name IN VARCHAR2
88: , x_spec OUT NOCOPY GMD_SPECIFICATIONS%ROWTYPE
89: , x_spec_tests_tbl OUT NOCOPY GMD_SPEC_PUB.spec_tests_tbl
84: , p_validation_level IN VARCHAR2
85: , p_spec IN GMD_SPECIFICATIONS%ROWTYPE
86: , p_spec_tests_tbl IN GMD_SPEC_PUB.spec_tests_tbl
87: , p_user_name IN VARCHAR2
88: , x_spec OUT NOCOPY GMD_SPECIFICATIONS%ROWTYPE
89: , x_spec_tests_tbl OUT NOCOPY GMD_SPEC_PUB.spec_tests_tbl
90: , x_return_status OUT NOCOPY VARCHAR2
91: , x_msg_count OUT NOCOPY NUMBER
92: , x_msg_data OUT NOCOPY VARCHAR2
96: l_api_version CONSTANT NUMBER := 2.0;
97: l_msg_count NUMBER :=0;
98: l_msg_data VARCHAR2(2000);
99: l_return_status VARCHAR2(1):=FND_API.G_RET_STS_SUCCESS;
100: l_spec GMD_SPECIFICATIONS%ROWTYPE;
101: l_spec_out GMD_SPECIFICATIONS%ROWTYPE;
102: l_spec_tests GMD_SPEC_TESTS%ROWTYPE;
103: l_spec_tests_out GMD_SPEC_TESTS%ROWTYPE;
104: l_spec_tests_tbl GMD_SPEC_PUB.spec_tests_tbl;
97: l_msg_count NUMBER :=0;
98: l_msg_data VARCHAR2(2000);
99: l_return_status VARCHAR2(1):=FND_API.G_RET_STS_SUCCESS;
100: l_spec GMD_SPECIFICATIONS%ROWTYPE;
101: l_spec_out GMD_SPECIFICATIONS%ROWTYPE;
102: l_spec_tests GMD_SPEC_TESTS%ROWTYPE;
103: l_spec_tests_out GMD_SPEC_TESTS%ROWTYPE;
104: l_spec_tests_tbl GMD_SPEC_PUB.spec_tests_tbl;
105: l_spec_id NUMBER;
193: -- Ensure spec_id is null
194: -- ======================
195: l_spec.spec_id := NULL;
196:
197: -- Need to create the header (gmd_specifications) so validate the spec data
198: -- ========================================================================
199: GMD_SPEC_GRP.Validate_Spec_Header (
200: p_spec_header => l_spec
201: , p_called_from => 'API'
213: l_spec.last_updated_by := l_user_id;
214:
215: -- Insert SPEC
216: -- ===========
217: IF NOT GMD_Specifications_PVT.INSERT_ROW(p_spec => l_spec)
218: THEN
219: GMD_API_PUB.Log_Message('GMD_FAILED_TO_INSERT_ROW',
220: 'l_table_name', 'GMD_SPECIFICATIONS',
221: 'l_column_name', 'SPEC_ID',
216: -- ===========
217: IF NOT GMD_Specifications_PVT.INSERT_ROW(p_spec => l_spec)
218: THEN
219: GMD_API_PUB.Log_Message('GMD_FAILED_TO_INSERT_ROW',
220: 'l_table_name', 'GMD_SPECIFICATIONS',
221: 'l_column_name', 'SPEC_ID',
222: 'l_key_value', l_spec.spec_id);
223: RAISE FND_API.G_EXC_ERROR;
224: END IF;
353: -- Message detailing cause of validation failure is already on
354: -- the stack. But ensure the precise record is identified
355: -- ==========================================================
356: GMD_API_PUB.Log_Message('GMD_API_RECORD_IDENTIFIER',
357: 'l_table_name', 'GMD_SPECIFICATIONS',
358: 'l_column_name', 'SPEC_NAME',
359: 'l_key_value', l_spec.spec_name);
360: RAISE FND_API.G_EXC_ERROR;
361: END IF;
427: ( p_api_version IN NUMBER
428: , p_init_msg_list IN VARCHAR2
429: , p_commit IN VARCHAR2
430: , p_validation_level IN VARCHAR2
431: , p_spec IN GMD_SPECIFICATIONS%ROWTYPE
432: , p_user_name IN VARCHAR2
433: , x_deleted_rows OUT NOCOPY NUMBER
434: , x_return_status OUT NOCOPY VARCHAR2
435: , x_msg_count OUT NOCOPY NUMBER
440: l_api_version CONSTANT NUMBER := 1.0;
441: l_msg_count NUMBER :=0;
442: l_msg_data VARCHAR2(2000);
443: l_return_status VARCHAR2(1):=FND_API.G_RET_STS_SUCCESS;
444: l_spec GMD_SPECIFICATIONS%ROWTYPE;
445: l_deleted_rows NUMBER :=0;
446:
447: BEGIN
448:
503: END IF;
504:
505: -- Lock the row ahead of delete marking
506: -- ====================================
507: IF NOT GMD_Specifications_PVT.Lock_Row(p_spec.spec_id)
508: THEN
509: -- Report Failure to obtain locks
510: -- ==============================
511: GMD_API_PUB.Log_Message('GMD_LOCKING_FAILURE',
508: THEN
509: -- Report Failure to obtain locks
510: -- ==============================
511: GMD_API_PUB.Log_Message('GMD_LOCKING_FAILURE',
512: 'l_table_name', 'GMD_SPECIFICATIONS',
513: 'l_column_name', 'SPEC_ID',
514: 'l_key_value', p_spec.spec_id);
515: RAISE FND_API.G_EXC_ERROR;
516: END IF;
514: 'l_key_value', p_spec.spec_id);
515: RAISE FND_API.G_EXC_ERROR;
516: END IF;
517:
518: IF NOT GMD_Specifications_PVT.Mark_for_Delete ( p_spec_id => p_spec.spec_id
519: , p_last_update_date => sysdate
520: , p_last_updated_by => l_spec.last_updated_by
521: )
522: THEN
520: , p_last_updated_by => l_spec.last_updated_by
521: )
522: THEN
523: GMD_API_PUB.Log_Message('GMD_FAILED_TO_DELETE_ROW',
524: 'l_table_name', 'GMD_SPECIFICATIONS',
525: 'l_column_name', 'SPEC_ID',
526: 'l_key_value', p_spec.spec_id);
527: ELSE -- Report one row successfully delete marked
528: x_deleted_rows := 1;
671: l_spec_id := l_spec_tests.spec_id;
672:
673: -- Lock the SPEC ahead of manipulating SPEC_TESTS
674: -- ===============================================
675: IF NOT GMD_Specifications_PVT.Lock_Row(l_spec_tests.spec_id)
676: THEN
677: -- Report Failure to obtain locks
678: -- ==============================
679: GMD_API_PUB.Log_Message('GMD_LOCKING_FAILURE',
676: THEN
677: -- Report Failure to obtain locks
678: -- ==============================
679: GMD_API_PUB.Log_Message('GMD_LOCKING_FAILURE',
680: 'l_table_name', 'GMD_SPECIFICATIONS',
681: 'l_column_name', 'SPEC_ID',
682: 'l_key_value', l_spec_tests.spec_id);
683: RAISE FND_API.G_EXC_ERROR;
684: END IF;