1 PACKAGE rcv_error_pkg AUTHID CURRENT_USER AS
2 /* $Header: RCVERRS.pls 120.0 2005/06/02 01:17:19 appldev noship $*/
3
4 /* rcv_error_pkg has two major functions.
5 log_interface_error and
6 log_interface_warning.
7 these procedure are nearly identical.
8 Before you call these procedures, the setup is to first call
9 set_error_msg with the error or warning message tag
10 and then call set_token for each token in that string.
11 Build an exception handler for this block for RCV_ERROR_PKG.e_fatal_error
12 calling log_interface_error will raise this exception
13 For warnings it will not raise an exception,
14
15 The overall flow should be:
16
17 begin transaction loop
18 rcv_error_pkg.initialize(int_type,g_id,h_id,l_id); -- to reset the error stack
19 derive_record is
20 begin
21 derive_field is
22 begin
23 if field_error
24 rcv_error_pkg.set_error_message('RCV_FIELD_ERROR');
25 rcv_error_pkg.log_interface_error('TABLE','FIELDNAME');
26 elsif field_warning
27 rcv_error_pkg.set_error_message('RCV_FIELD_WARNING');
28 rcv_error_pkg.set_token('TKN','VALUE');
29 rcv_error_pkg.log_interface_warning('TABLE','FIELDNAME');
30 x_cascaded_table(n).error_status:=rcv_error_pkg.g_ret_sts_warning;
31 end if;
32 exception
33 when rcv_error_pkg.e_fatal_error then
34 x_cascaded_table(n).error_status:=rcv_error_pkg.g_ret_sts_error;
35 end;
36 if (rcv_error_pkg.check_and_reset_result()=true) then --to stop processing on child error
37 raise;
38 end if;
39 end;
40
41 error_count := rcv_error_pkg.get_error_count();
42 last_error := rcv_error_pkg.get_last_error();
43 error_msgs := rcv_error_pkg.get_all_errors();
44 end transaction loop;
45 */
46
47 /* E_FATAL_ERROR is the exception that should be raised when a terminal
48 condition has been discovered
49 */
50 e_fatal_error EXCEPTION;
51 /* The following status are similar to the fnd_api status, but include the
52 addition of G_RET_STS_WARNING as 'W'
53 */
54 g_ret_sts_success CONSTANT VARCHAR2(1) := 'S';
55 g_ret_sts_error CONSTANT VARCHAR2(1) := 'E';
56 g_ret_sts_warning CONSTANT VARCHAR2(1) := 'W';
57 g_ret_sts_unexp_error CONSTANT VARCHAR2(1) := 'U';
58
59 /* log_interface_error should only be called inside the
60 WHEN RCV_ERROR_PKG.e_fatal_error THEN
61 exception handler.
62 Inside the body first call set_error_message, then call set_token for
63 each token, then call log_interface_error.
64 This procedure does these things:
65 1) add a row into po_interace_errors
66 2) adds the parsed message to the error stack
67 3) increases the error counter
68 4) resets the token stack
69 5) sets the result flag to 'E'
70 */
71 PROCEDURE log_interface_error(
72 p_table IN VARCHAR2,
73 p_column IN VARCHAR2,
74 p_raise_error IN BOOLEAN DEFAULT TRUE
75 );
76
77 PROCEDURE log_interface_error(
78 p_table IN VARCHAR2,
79 p_column IN VARCHAR2,
80 p_batch_id IN NUMBER,
81 p_header_id IN NUMBER,
82 p_line_id IN NUMBER,
83 p_raise_error IN BOOLEAN DEFAULT TRUE
84 );
85
86 /* This log_interface_error call assumes p_table = 'RCV_TRANSACTIONS_INTERFACE' */
87 PROCEDURE log_interface_error(
88 p_column IN VARCHAR2,
89 p_raise_error IN BOOLEAN DEFAULT TRUE
90 );
91
92 /* log_interface_error_message is for .lpc file style calls */
93 PROCEDURE log_interface_error_message(
94 p_error_message IN VARCHAR2
95 );
96
97 PROCEDURE log_interface_warning(
98 p_table IN VARCHAR2,
99 p_column IN VARCHAR2
100 );
101
102 /* This log_interface_warning call assumes p_table = 'RCV_TRANSACTIONS_INTERFACE' */
103 PROCEDURE log_interface_warning(
104 p_column IN VARCHAR2
105 );
106
107 /* log_interface_message takes an indicator variable and logs error/warning/ignore as appropriate*/
108 PROCEDURE log_interface_message(
109 p_error_status IN VARCHAR2,
110 p_table IN VARCHAR2,
111 p_column IN VARCHAR2,
112 p_raise_error IN BOOLEAN DEFAULT TRUE
113 );
114
115 /* This log_interface_message call assumes p_table = 'RCV_TRANSACTIONS_INTERFACE' */
116 PROCEDURE log_interface_message(
117 p_error_status IN VARCHAR2,
118 p_column IN VARCHAR2,
119 p_raise_error IN BOOLEAN DEFAULT TRUE
120 );
121
122 /* This log_interface_message call ues the internal error flag what kind of message to log */
123 PROCEDURE log_interface_message(
124 p_column IN VARCHAR2,
125 p_raise_error IN BOOLEAN DEFAULT TRUE
126 );
127
128 PROCEDURE set_error_message(
129 p_message IN VARCHAR2
130 );
131
132 PROCEDURE set_error_message(
133 p_message IN VARCHAR2,
134 p_variable IN OUT NOCOPY VARCHAR2
135 );
136
137 /* set_token is overloaded for varchar2, number and date */
138 PROCEDURE set_token(
139 p_token IN VARCHAR2,
140 p_value IN VARCHAR2
141 );
142
143 PROCEDURE set_token(
144 p_token IN VARCHAR2,
145 p_value IN NUMBER
146 );
147
148 PROCEDURE set_token(
149 p_token IN VARCHAR2,
150 p_value IN DATE
151 );
152
153 /* set_sql_error_message is a convenience function that sets the
154 error message and tokens as appropriate - equivalent to
155 calling set_error_message and set_tokens */
156 PROCEDURE set_sql_error_message(
157 p_procedure IN VARCHAR2,
158 p_progress IN VARCHAR2
159 );
160
161 /* test_is_null is a convenience function that tests if the value passed
162 is null, if so then it calls log_interface_error */
163 PROCEDURE test_is_null(
164 p_value IN VARCHAR2,
165 p_table IN VARCHAR2,
166 p_column IN VARCHAR2,
167 p_error_message IN VARCHAR2
168 );
169
170 PROCEDURE test_is_null(
171 p_value IN VARCHAR2,
172 p_column IN VARCHAR2,
173 p_error_message IN VARCHAR2 DEFAULT NULL
174 );
175
176 PROCEDURE test_is_null(
177 p_value IN NUMBER,
178 p_table IN VARCHAR2,
179 p_column IN VARCHAR2,
180 p_error_message IN VARCHAR2
181 );
182
183 PROCEDURE test_is_null(
184 p_value IN NUMBER,
185 p_column IN VARCHAR2,
186 p_error_message IN VARCHAR2 DEFAULT NULL
187 );
188
189 PROCEDURE test_is_null(
190 p_value IN DATE,
191 p_table IN VARCHAR2,
192 p_column IN VARCHAR2,
193 p_error_message IN VARCHAR2
194 );
195
196 PROCEDURE test_is_null(
197 p_value IN DATE,
198 p_column IN VARCHAR2,
199 p_error_message IN VARCHAR2 DEFAULT NULL
200 );
201
202 FUNCTION check_and_reset_result
203 RETURN VARCHAR2;
204
205 FUNCTION check_and_noreset_result
206 RETURN VARCHAR2;
207
208 FUNCTION has_errors
209 RETURN BOOLEAN;
210
211 PROCEDURE initialize(
212 p_interface_type IN VARCHAR2,
213 p_batch_id IN NUMBER,
214 p_header_id IN NUMBER,
215 p_line_id IN NUMBER
216 );
217
218 PROCEDURE initialize(
219 p_batch_id IN NUMBER,
220 p_header_id IN NUMBER,
221 p_line_id IN NUMBER
222 );
223
224 PROCEDURE clear_messages;
225
226 FUNCTION get_last_message
227 RETURN VARCHAR2;
228
229 PROCEDURE default_and_check(
230 p_src_value IN VARCHAR2,
231 p_dst_value IN OUT NOCOPY VARCHAR2,
232 p_column IN VARCHAR2
233 );
234
235 PROCEDURE default_and_check(
236 p_src_value IN NUMBER,
237 p_dst_value IN OUT NOCOPY NUMBER,
238 p_column IN VARCHAR2
239 );
240
241 PROCEDURE default_and_check(
242 p_src_value IN DATE,
243 p_dst_value IN OUT NOCOPY DATE,
244 p_column IN VARCHAR2
245 );
246 END rcv_error_pkg;