[Home] [Help]
PACKAGE BODY: APPS.PSB_WS_POSITION_LINE_L_PVT
Source
1 PACKAGE BODY PSB_WS_POSITION_LINE_L_PVT AS
2 /* $Header: PSBVPLLB.pls 120.2 2005/07/13 11:28:32 shtripat ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30):= 'PSB_WS_POSITION_LINE_L_PVT';
5
6
7
8 /*==========================================================================+
9 | PROCEDURE Lock_Row |
10 +==========================================================================*/
11
12 PROCEDURE Lock_Row
13 (
14 p_api_version IN NUMBER,
15 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
16 p_commit IN VARCHAR2 := FND_API.G_FALSE,
17 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
18 p_return_status OUT NOCOPY VARCHAR2,
19 p_msg_count OUT NOCOPY NUMBER,
20 p_msg_data OUT NOCOPY VARCHAR2,
21 p_row_locked OUT NOCOPY VARCHAR2,
22 --
23 p_position_line_id IN NUMBER,
24 p_position_id IN NUMBER
25 --
26 )
27 IS
28 --
29 l_api_name CONSTANT VARCHAR2(30) := 'Lock_Row';
30 l_api_version CONSTANT NUMBER := 1.0;
31 --
32
33 Counter NUMBER;
34 CURSOR C IS
35 SELECT position_id, position_line_id
36 FROM psb_ws_position_lines
37 WHERE position_line_id = p_position_line_id
38 and position_id = p_position_id
39 FOR UPDATE of position_line_id NOWAIT;
40 Recinfo C%ROWTYPE;
41
42 BEGIN
43 --
44 SAVEPOINT Lock_Row_Pvt ;
45 --
46 IF NOT FND_API.Compatible_API_Call ( l_api_version,
47 p_api_version,
48 l_api_name,
49 G_PKG_NAME )
50 THEN
51 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
52 END IF;
53 --
54
55 IF FND_API.to_Boolean ( p_init_msg_list ) THEN
56 FND_MSG_PUB.initialize ;
57 END IF;
58 --
59 p_row_locked := FND_API.G_TRUE;
60 p_return_status := FND_API.G_RET_STS_SUCCESS ;
61 --
62
63 OPEN C;
64 --
65 FETCH C INTO Recinfo;
66 IF (C%NOTFOUND) then
67 CLOSE C;
68 FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
69 FND_MSG_PUB.Add;
70 RAISE FND_API.G_EXC_ERROR ;
71 END IF;
72 CLOSE C;
73 --
74 IF FND_API.To_Boolean ( p_commit ) THEN
75 COMMIT WORK;
76 END iF;
77 --
78 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
79 p_data => p_msg_data );
80 --
81 EXCEPTION
82 --
83 WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION THEN
84 ROLLBACK TO Lock_Row_Pvt ;
85 p_row_locked := FND_API.G_FALSE;
86 p_return_status := FND_API.G_RET_STS_ERROR;
87 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
88 p_data => p_msg_data );
89 WHEN FND_API.G_EXC_ERROR THEN
90 --
91 ROLLBACK TO Lock_Row_Pvt ;
92 p_return_status := FND_API.G_RET_STS_ERROR;
93 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
94 p_data => p_msg_data );
95 --
96 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
97 --
98 ROLLBACK TO Lock_Row_Pvt ;
99 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
100 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
101 p_data => p_msg_data );
102 --
103 WHEN OTHERS THEN
104 --
105 ROLLBACK TO Lock_Row_Pvt ;
106 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
107 --
108 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
109 FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
110 l_api_name);
111 END if;
112 --
113 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
114 p_data => p_msg_data );
115 --
116 END Lock_Row;
117 /* ----------------------------------------------------------------------- */
118
119
120 END PSB_WS_POSITION_LINE_L_PVT;