[Home] [Help]
PACKAGE BODY: APPS.POS_BULKLOAD_ENTITIES
Source
1 PACKAGE BODY POS_BULKLOAD_ENTITIES
2 /* $Header: POSSBLKB.pls 120.6.12020000.2 2013/04/11 02:49:23 liawei ship $ */
3 AS
4 ----------------------------------------------------------------------------
5 -- Global constants
6 ----------------------------------------------------------------------------
7 G_PKG_NAME CONSTANT VARCHAR2(30) := 'EGO_USER_ATTRS_BULK_PVT';
8 G_REQUEST_ID NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
9 G_PROGAM_APPLICATION_ID NUMBER := FND_GLOBAL.PROG_APPL_ID;
10 G_PROGAM_ID NUMBER := FND_GLOBAL.CONC_PROGRAM_ID;
11 G_USER_NAME FND_USER.USER_NAME%TYPE := FND_GLOBAL.USER_NAME;
12 G_USER_ID NUMBER := FND_GLOBAL.USER_ID;
13 G_LOGIN_ID NUMBER := FND_GLOBAL.LOGIN_ID;
14 G_CURRENT_USER_ID NUMBER;
15 G_CURRENT_LOGIN_ID NUMBER;
16 G_API_VERSION NUMBER := 1.0;
17 G_HZ_PARTY_ID VARCHAR2(30);
18 G_NO_USER_NAME_TO_VALIDATE EXCEPTION;
19 -- used for error handling.
20 G_ADD_ERRORS_TO_FND_STACK VARCHAR2(1);
21 G_APPLICATION_CONTEXT VARCHAR2(30);
22 G_ENTITY_ID NUMBER ;
23 G_ENTITY_CODE VARCHAR2(30) := 'HZ_PARTIES';
24 -- G_PK_COLS_TABLE PK_COL_TABLE;
25 -- G_SITE_NUMBER_EBI_COL VARCHAR2(50) := 'C_INTF_ATTR240';
26 G_DATE_FORMAT CONSTANT VARCHAR2(30) := 'SYYYY-MM-DD HH24:MI:SS';
27
28 G_APPLICATION_ID NUMBER(3) := 177;
29 G_DATA_ROWS_UPLOADED_NEW CONSTANT NUMBER := 0;
30 G_PS_TO_BE_PROCESSED CONSTANT NUMBER := 1;
31 G_PS_IN_PROCESS CONSTANT NUMBER := 2;
32 G_PS_GENERIC_ERROR CONSTANT NUMBER := 3;
33 G_PS_SUCCESS CONSTANT NUMBER := 4;
34 G_RETCODE_SUCCESS_WITH_WARNING CONSTANT VARCHAR(1) := 'W';
35
36 G_ERROR_TABLE_NAME VARCHAR2(99) := 'EGO_BULKLOAD_INTF';
37 G_ERROR_ENTITY_CODE VARCHAR2(99) := 'HZ_PARTIES';
38 G_ERROR_FILE_NAME VARCHAR2(99);
39 G_BO_IDENTIFIER VARCHAR2(99) := 'HZ_PARTIES';
40 G_DEBUG CONSTANT VARCHAR2(10) := NVL(FND_PROFILE.VALUE('POS_DEBUG_TRACE'),0);
41
42 ---------------------------------------------------------------
43 -- Java Conc Program can continue writing to the same Error Log File.
44 -- using the below variable
45 ---------------------------------------------------------------
46 G_ERRFILE_PATH_AND_NAME VARCHAR2(10000);
47
48 ---------------------------------------------------------------
49 -- API Return statuses. --
50 ---------------------------------------------------------------
51 G_STATUS_SUCCESS CONSTANT VARCHAR2(1) := 'S';
52 G_STATUS_ERROR CONSTANT VARCHAR2(1) := 'E';
53
54
55 ---------------------------------------------------------------
56 -- UDA EGO WEBADI uptake
57 -- The following data level constants to be inserted into INTF tables
58 ---------------------------------------------------------------
59 G_POS_SUPP_LEVEL_ID NUMBER(5) := 17701;
60 G_POS_SUPP_ADDR_LEVEL_ID NUMBER(5) := 17702;
61 G_POS_SUPP_ADDR_SITE_LEVEL_ID NUMBER(5) := 17703;
62
63
64 G_POS_SUPP_LEVEL VARCHAR2(100) := 'SUPP_LEVEL';
65 G_POS_SUPP_ADDR_LEVEL VARCHAR2(100) := 'SUPP_ADDR_LEVEL';
66 G_POS_SUPP_ADDR_SITE_LEVEL VARCHAR2(100) := 'SUPP_ADDR_SITE_LEVEL';
67
68
69
70
71 PROCEDURE SETUP_BULKLOAD_INTF(ERRBUF OUT NOCOPY VARCHAR2,
72 RETCODE OUT NOCOPY VARCHAR2,
73 ERROR_FILE OUT NOCOPY VARCHAR2,
74 p_result_format_usage_id IN Number) Is
75 l_process_status char(100);
76 BEGIN
77 DELETE FROM EGO_BULKLOAD_INTF
78 WHERE RESULTFMT_USAGE_ID = p_result_format_usage_id
79 AND PROCESS_STATUS <> G_DATA_ROWS_UPLOADED_NEW;
80 Open_Debug_Session;
81 ERROR_FILE := G_ERRFILE_PATH_AND_NAME;
82 Write_Conclog('Cleanup and Debug Session Setup Activities Completed');
83 RETCODE := 'S';
84 EXCEPTION
85 WHEN OTHERS THEN
86 ERRBUF := SUBSTRB(SQLERRM, 1,240);
87 RETCODE := 'E';
88 Write_Conclog(' Error in SETUP_BULKLOAD_INTF Error API'||ERRBUF);
89 End SETUP_BULKLOAD_INTF;
90
91
92 PROCEDURE Open_Debug_Session IS
93 BEGIN
94 ----------------------------------------------------------------
95 -- Open the Debug Log Session, only if Profile is set to TRUE --
96 ----------------------------------------------------------------
97 IF (G_DEBUG = 1) THEN
98
99 ----------------------------------------------------------------------------------
100 -- Opens Error_Handler debug session, only if Debug session is not already open.
101 ----------------------------------------------------------------------------------
102 IF (Error_Handler.Get_Debug <> 'Y') THEN
103 Open_Debug_Session_Internal;
104 END IF;
105 END IF;
106 END Open_Debug_Session;
107
108 ----------------------------------------------------------
109 -- Internal procedure to open Debug Session. --
110 ----------------------------------------------------------
111 PROCEDURE open_debug_session_internal IS
112 CURSOR c_get_utl_file_dir IS
113 SELECT VALUE
114 FROM V$PARAMETER
115 WHERE NAME = 'utl_file_dir';
116
117 l_log_output_dir VARCHAR2(512);
118 l_log_return_status VARCHAR2(99);
119 l_errbuff VARCHAR2(999);
120 BEGIN
121 Error_Handler.initialize();
122 Error_Handler.set_bo_identifier(G_BO_IDENTIFIER);
123
124 OPEN c_get_utl_file_dir;
125 FETCH c_get_utl_file_dir INTO l_log_output_dir;
126 IF c_get_utl_file_dir%FOUND THEN
127 ------------------------------------------------------
128 -- Trim to get only the first directory in the list --
129 ------------------------------------------------------
130 IF INSTR(l_log_output_dir,',') <> 0 THEN
131 l_log_output_dir := SUBSTR(l_log_output_dir, 1, INSTR(l_log_output_dir, ',') - 1);
132 END IF;
133
134 G_ERROR_FILE_NAME := G_ERROR_TABLE_NAME||'_'||to_char(sysdate, 'DDMONYYYY_HH24MISS')||'.err';
135
136 -----------------------------------------------------------------------
137 -- To open the Debug Session to write the Debug Log. --
138 -- This sets Debug value so that Error_Handler.Get_Debug returns 'Y' --
139 -----------------------------------------------------------------------
140 Error_Handler.Open_Debug_Session(
141 p_debug_filename => G_ERROR_FILE_NAME
142 ,p_output_dir => l_log_output_dir
143 ,x_return_status => l_log_return_status
144 ,x_error_mesg => l_errbuff
145 );
146
147 ---------------------------------------------------------------
148 -- The Java Conc Program Should be writing to the same Error Log File.
149 ---------------------------------------------------------------
150 G_ERRFILE_PATH_AND_NAME := l_log_output_dir||'/'||G_ERROR_FILE_NAME;
151
152 Write_Conclog('Debug File name is => ' || G_ERRFILE_PATH_AND_NAME);
153
154 IF (l_log_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
155 Write_Conclog('Unable to open error log file. Error => '||l_errbuff);
156 END IF;
157
158 END IF; --IF c_get_utl_file_dir%FOUND THEN
159 CLOSE c_get_utl_file_dir;
160 END open_debug_session_internal;
161
162 PROCEDURE Developer_Debug(p_msg IN VARCHAR2) IS
163 l_err_msg VARCHAR2(240);
164 BEGIN
165 Error_Handler.Write_debug(p_msg);
166 EXCEPTION
167 WHEN OTHERS THEN
168 l_err_msg := SUBSTRB(SQLERRM, 1,240);
169 FND_FILE.put_line(FND_FILE.LOG, 'LOGGING SQL ERROR => '||l_err_msg);
170 END;
171
172 -----------------------------------------------------------------
173 -- Close the Debug Session, only if Debug is already Turned ON --
174 -----------------------------------------------------------------
175 PROCEDURE Close_Debug_Session IS
176
177 BEGIN
178 -----------------------------------------------------------------------------
179 -- Close Error_Handler debug session, only if Debug session is already open.
180 -----------------------------------------------------------------------------
181 IF (Error_Handler.Get_Debug = 'Y') THEN
182 Error_Handler.Close_Debug_Session;
183 END IF;
184
185 END Close_Debug_Session;
186 -----------------------------------------------
187 -- Write Debug statements to Concurrent Log --
188 -----------------------------------------------
189 PROCEDURE Write_Conclog (p_msg IN VARCHAR2) IS
190 l_err_msg VARCHAR2(240);
191 BEGIN
192 FND_FILE.put_line(FND_FILE.LOG, p_msg);
193 END Write_Conclog;
194
195 -- Bug 16384042 Helper Function to resolve PK values for data level supplier site and party site
196 -- since ego_bulkload_intf already got AddressName and VendorSiteCode populated use them to find Ids
197 -- PKs in EBI table, PK1 -- PartyID PK2 -- IS_PROSPECT PK3 -- PARTY_SITE_ID PK4 -- VENDOR_SITE_ID
198
199 PROCEDURE RESOLVE_PK_VALUES(
200 RETCODE OUT NOCOPY VARCHAR2,
201 p_result_format_usage_id IN NUMBER
202 ) Is
203 CURSOR c_ebi_col_mapping_addr(c_fmt_usage_id in number) is
204 SELECT INTF_COLUMN_NAME
205 FROM ego_results_fmt_usages
206 WHERE attribute_code = 'PS_PARTY_SITE_NAME'
207 AND resultfmt_usage_id = c_fmt_usage_id
208 AND CUSTOMIZATION_APPLICATION_ID = G_APPLICATION_ID
209 AND rownum < 2;
210
211 CURSOR c_ebi_col_mapping_site(c_fmt_usage_id in number) is
212 SELECT INTF_COLUMN_NAME
213 FROM ego_results_fmt_usages
214 WHERE attribute_code = 'SS_VENDOR_SITE_CODE'
215 AND resultfmt_usage_id = c_fmt_usage_id
216 AND CUSTOMIZATION_APPLICATION_ID = G_APPLICATION_ID
217 AND rownum < 2;
218
219 CURSOR c_resolve_PKs(c_fmt_usage_id in number) is
220 SELECT *
221 FROM ego_bulkload_intf
222 WHERE resultfmt_usage_id = c_fmt_usage_id;
223 --AND process_status = G_PS_TO_BE_PROCESSED;
224
225 CURSOR c_party_site (c_party_id IN NUMBER, c_address_name iN VARCHAR) IS
226 SELECT PS.Party_Site_ID
227 FROM AP_Suppliers AP,
228 HZ_PARTY_SITES PS
229 WHERE AP.Party_ID = PS.Party_ID
230 AND AP.Party_ID = c_Party_ID
231 AND PS.STATUS = 'A'
232 AND PS.PARTY_SITE_NAME = c_address_name
233 AND rownum < 2;
234
235 CURSOR c_supplier_site (c_party_id IN NUMBER, c_party_site_id IN NUMBER, c_vendor_site_code IN VARCHAR) IS
236 SELECT SS.Vendor_Site_ID
237 FROM AP_Suppliers AP,
238 AP_SUPPLIER_SITES_ALL SS,
239 HZ_PARTY_SITES PS
240 WHERE AP.Party_ID = PS.Party_ID
241 AND AP.Party_ID = c_Party_ID
242 AND PS.STATUS = 'A'
243 AND PS.Party_Site_ID = c_party_site_id
244 AND PS.Party_Site_ID = SS.Party_Site_ID
245 AND SS.VENDOR_SITE_CODE = c_vendor_site_code
246 AND SS.INACTIVE_DATE IS NULL
247 AND rownum < 2;
248
249 l_addr_col_name VARCHAR2(20);
250 l_site_col_name VARCHAR2(20);
251 --l_has_site_col BOOLEAN;
252 l_address_name VARCHAR2(150);
253 l_vendor_site_code VARCHAR2(150);
254 l_pk3_value NUMBER;
255 l_pk4_value NUMBER;
256 l_dyn_sql VARCHAR2(100);
257
258 Current_Error_Code VARCHAR2(20) := NULL;
259 conc_status BOOLEAN ;
260 BEGIN
261 Write_Conclog('Executing RESOLVE_PK_VALUES API ');
262 --first get mapped column names from ego_result_fmt_usages
263 OPEN c_ebi_col_mapping_addr(p_result_format_usage_id);
264 FETCH c_ebi_col_mapping_addr INTO l_addr_col_name;
265 IF c_ebi_col_mapping_addr%NOTFOUND OR l_addr_col_name = NULL THEN -- no need to do anything in this case
266 CLOSE c_ebi_col_mapping_addr;
267 RETURN;
268 END IF;
269 CLOSE c_ebi_col_mapping_addr;
270 Write_Conclog('Executing RESOLVE_PK_VALUES -- get Address Column mapping colname = '||l_addr_col_name );
271
272 OPEN c_ebi_col_mapping_site(p_result_format_usage_id);
273 FETCH c_ebi_col_mapping_site INTO l_site_col_name;
274 IF c_ebi_col_mapping_site %NOTFOUND THEN
275 l_site_col_name := NULL;
276 END IF;
277 CLOSE c_ebi_col_mapping_site;
278 Write_Conclog('Executing RESOLVE_PK_VALUES -- get Site Column mapping colname = '||l_site_col_name );
279
280 Write_Conclog('Executing RESOLVE_PK_VALUES -- before cursor c_ebi_rec');
281 FOR c_ebi_rec IN c_resolve_PKs(p_result_format_usage_id)
282 LOOP
283 l_dyn_sql := 'SELECT '||l_addr_col_name
284 ||' FROM ego_bulkload_intf '
285 ||' WHERE resultfmt_usage_id = :1 '
286 ||' AND transaction_id = :2 ';
287 execute immediate l_dyn_sql into l_address_name using c_ebi_rec.resultfmt_usage_id, c_ebi_rec.transaction_id;
288 Write_Conclog('Executing RESOLVE_PK_VALUES --after 1st dyn sql l_address_name = '|| l_address_name);
289
290 IF (l_site_col_name IS NOT NULL) THEN
291 l_dyn_sql := 'SELECT '||l_site_col_name
292 ||' FROM ego_bulkload_intf '
293 ||' WHERE resultfmt_usage_id = :1 '
294 ||' AND transaction_id = :2 ';
295 execute immediate l_dyn_sql into l_vendor_site_code using c_ebi_rec.resultfmt_usage_id, c_ebi_rec.transaction_id;
296 Write_Conclog('Executing RESOLVE_PK_VALUES --after 2nd dyn sql l_vendor_site_code = '|| l_vendor_site_code);
297 END IF;
298 --setting PK3
299 IF l_address_name IS NOT NULL THEN
300 --getting PK3 value
301 OPEN c_party_site( c_ebi_rec.INSTANCE_PK1_VALUE, l_address_name);
302 FETCH c_party_site INTO l_pk3_value;
303 CLOSE c_party_site;
304 Write_Conclog('Executing RESOLVE_PK_VALUES 1st -- l_pk3_value = '||l_pk3_value);
305 END IF;
306 --setting PK4
307 IF l_vendor_site_code IS NOT NULL AND NVL(l_pk3_value, 0) <> 0 THEN
308 OPEN c_supplier_site( c_ebi_rec.INSTANCE_PK1_VALUE, l_pk3_value, l_vendor_site_code);
309 FETCH c_supplier_site INTO l_pk4_value;
310 CLOSE c_supplier_site;
311 Write_Conclog('Executing RESOLVE_PK_VALUES 2nd -- l_pk4_value = '||l_pk4_value);
312 END IF;
313 Write_Conclog('Executing RESOLVE_PK_VALUES --Before final update');
314 --finally set PKs to EBI
315 UPDATE EGO_BULKLOAD_INTF
316 SET INSTANCE_PK3_VALUE = l_pk3_value,
317 INSTANCE_PK4_VALUE = l_pk4_value
318 WHERE resultfmt_usage_id = c_ebi_rec.resultfmt_usage_id
319 AND transaction_id = c_ebi_rec.transaction_id;
320
321 END LOOP; -- FOR c_ebi_rec IN c_resolve_PKs(c_fmt_usage_id)
322 Write_Conclog('Executing RESOLVE_PK_VALUES -- All done successfully');
323 EXCEPTION
324 WHEN OTHERS THEN
325 Write_Conclog('Error while calling Resolve_PK_values API '||SQLCODE || ':'||SQLERRM);
326 RETCODE := 'E';
327 Current_Error_Code := To_Char(SQLCODE);
328 conc_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR', Current_Error_Code);
329 END RESOLVE_PK_VALUES;
330
331 /*
332 PROCEDURE RESOLVE_PK_VALUES(
333 p_Party_ID IN NUMBER,
334 p_Data_Level_ID IN NUMBER,
335 p_Attr_Group_ID IN NUMBER,
336 x_PK1_Value OUT NOCOPY NUMBER,
337 x_PK2_Value OUT NOCOPY NUMBER
338 ) Is
339 --Only existing UDAs have rows in extb
340 CURSOR c_existing_rows_in_extb(c_party_id IN NUMBER, c_data_level_id IN NUMBER, c_attr_group_id IN NUMBER) IS
341 SELECT PK1_Value, PK2_Value
342 FROM pos_supp_prof_ext_b
343 WHERE party_id = c_party_id
344 AND data_level_id = c_data_level_id
345 AND attr_group_id = c_attr_group_id
346 AND rownum < 2;
347
348 CURSOR c_party_site (c_party_id IN NUMBER) IS
349 SELECT PS.Party_Site_ID
350 FROM AP_Suppliers AP,
351 HZ_PARTY_SITES PS
352 WHERE AP.Party_ID = PS.Party_ID
353 AND AP.Party_ID = p_Party_ID
354 AND PS.STATUS = 'A'
355 AND rownum < 2;
356
357 CURSOR c_supplier_site (c_party_id IN NUMBER) IS
358 SELECT SS.Party_Site_ID,
359 SS.Vendor_Site_ID
360 FROM AP_Suppliers AP,
361 AP_SUPPLIER_SITES_ALL SS,
362 HZ_PARTY_SITES PS
363 WHERE AP.Party_ID = PS.Party_ID
364 AND AP.Party_ID = p_Party_ID
365 AND PS.STATUS = 'A'
366 AND PS.Party_Site_ID = SS.Party_Site_ID
367 AND SS.INACTIVE_DATE IS NULL
368 AND rownum < 2;
369
370 BEGIN
371 Write_Conclog('Entering RESOLVE_PK_VALUES p_Party_ID = '||p_Party_ID);
372 Write_Conclog(' p_Data_Level_ID = '||p_Data_Level_ID);
373 Write_Conclog(' p_Attr_Group_ID = '||p_Attr_Group_ID);
374
375 --shouldn't call this API when data level is Supplier Party still check in case
376 IF p_Data_Level_ID = G_POS_SUPP_LEVEL_ID THEN
377 Return;
378
379 ELSIF p_Data_Level_ID = G_POS_SUPP_ADDR_LEVEL_ID THEN
380 OPEN c_existing_rows_in_extb(p_Party_ID, p_Data_Level_ID, p_Attr_Group_ID);
381 FETCH c_existing_rows_in_extb INTO x_PK1_Value, x_PK2_Value;
382
383 IF c_existing_rows_in_extb%NOTFOUND THEN
384 Write_Conclog('Cannot find rows in extb table use HZ_Party to resolve');
385 OPEN c_party_site(p_Party_ID);
386 FETCH c_party_site INTO x_PK1_Value;
387 CLOSE c_party_site;
388 END IF;
389 ClOSE c_existing_rows_in_extb;
390
391 ELSIF p_Data_Level_ID = G_POS_SUPP_ADDR_SITE_LEVEL_ID THEN
392 OPEN c_existing_rows_in_extb(p_Party_ID, p_Data_Level_ID, p_Attr_Group_ID);
393 FETCH c_existing_rows_in_extb INTO x_PK1_Value, x_PK2_Value;
394
395 IF c_existing_rows_in_extb%NOTFOUND THEN
396 Write_Conclog('Cannot find rows in extb table use HZ_Party to resolve');
397 OPEN c_supplier_site(p_Party_ID);
398 FETCH c_supplier_site INTO x_PK1_Value, x_PK2_Value;
399 CLOSE c_supplier_site;
400 END IF;
401 ClOSE c_existing_rows_in_extb;
402
403 END IF;
404 END RESOLVE_PK_VALUES;
405 */
406 ---------------------------------------------------------------------------------
407 --LOAD SUPPLIER USER DEFINED ATTRIBUTES
408 --------------------------------------------------------------------------------
409 PROCEDURE LOAD_USERATTR_INTF(
410 p_resultfmt_usage_id IN NUMBER,
411 p_data_set_id IN NUMBER,
412 x_errbuff OUT NOCOPY VARCHAR2,
413 x_retcode OUT NOCOPY VARCHAR2,
414 p_entity_name IN VARCHAR2,
415 p_batch_id IN NUMBER
416 ) Is
417 --Bug 16384042 modified cursor to include data_level_id column
418 CURSOR c_user_attr_group_codes (c_resultfmt_usage_id IN NUMBER,c_attr_group_type IN VARCHAR2) IS
419 SELECT DISTINCT To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) attr_group_id,classification_code, data_level_id
420 FROM ego_results_fmt_usages
421 WHERE resultfmt_usage_id = c_resultfmt_usage_id
422 AND attribute_code LIKE '%$$%'
423 AND To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) IN
424 (
425 SELECT attr_group_id
426 FROM ego_attr_groups_v
427 WHERE attr_group_type = c_attr_group_type
428 AND application_id = G_APPLICATION_ID
429 );
430
431 CURSOR c_attr_grp_n_attr_int_names(p_attr_id IN NUMBER,c_attr_group_type IN VARCHAR2) IS
432 SELECT attr_group_name, attr_name
433 FROM ego_attrs_v
434 WHERE attr_id = p_attr_id
435 AND attr_group_type = c_attr_group_type
436 AND application_id = G_APPLICATION_ID;
437 TYPE L_USER_ATTR_REC_TYPE IS RECORD
438 (
439 DATA_SET_ID NUMBER(15),
440 TRANSACTION_ID NUMBER(15),
441 PK1_ID VARCHAR2(256),
442 PK2_ID VARCHAR2(256),
443 PK3_ID VARCHAR2(256),
444 PK4_ID VARCHAR2(256),
445 PK5_ID VARCHAR2(256),
446 CLASSIFICATION_CODE VARCHAR2(30),
447 ROW_IDENTIFIER NUMBER(15),
448 ATTR_GROUP_NAME VARCHAR2(30),
449 ATTR_NAME VARCHAR2(30),
450 ATTR_DATATYPE_CODE VARCHAR2(1), --Valid Vals: C / N / D
451 ATTR_VALUE_STR VARCHAR2(10000),
452 ATTR_VALUE_NUM NUMBER,
453 ATTR_VALUE_DATE DATE,
454 INTF_COLUMN_NAME VARCHAR2(30),
455 ATTR_GROUP_ID NUMBER(15),
456 BATCH_ID NUMBER(15)
457 );
458 TYPE L_USER_ATTR_TBL_TYPE IS TABLE OF L_USER_ATTR_REC_TYPE
459 INDEX BY BINARY_INTEGER;
460 TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(256)
461 INDEX BY BINARY_INTEGER;
462 l_prod_col_name_tbl VARCHAR_TBL_TYPE;
463 l_intf_col_name_tbl VARCHAR_TBL_TYPE;
464 l_attr_id_table DBMS_SQL.NUMBER_TABLE;
465 l_intf_col_name_table DBMS_SQL.VARCHAR2_TABLE;
466 l_usr_attr_data_tbl L_USER_ATTR_TBL_TYPE;
467 l_pk_id_char VARCHAR(15);
468 l_pk1_id_char VARCHAR(15);
469 l_pk2_id_char VARCHAR(15);
470 l_pk3_id_char VARCHAR(15);
471 l_pk4_id_char VARCHAR(15);
472 l_pk5_id_char VARCHAR(15);
473
474 l_site_num_char VARCHAR(1000);
475 l_trade_area_num_char VARCHAR(10);
476 l_count NUMBER(5);
477 l_data_type_code VARCHAR2(2);
478 l_transaction_id NUMBER(15);
479 l_attr_group_int_name EGO_ATTRS_V.ATTR_GROUP_NAME%TYPE;
480 l_attr_int_name EGO_ATTRS_V.ATTR_NAME%TYPE;
481
482 l_attr_group_id NUMBER(15);
483 l_party_id NUMBER(15);
484 l_attr_group_id_table DBMS_SQL.NUMBER_TABLE;
485 ---------------------------------------------------------
486 -- Example Data Types to be used in Bind Variable.
487 ---------------------------------------------------------
488 l_varchar_example VARCHAR2(10000);
489 l_number_example NUMBER;
490 l_date_example DATE;
491 --------------------------------------------------------------------
492 -- Actual Data to store corresponding data type value.
493 --------------------------------------------------------------------
494 l_varchar_data VARCHAR2(10000);
495 l_number_data NUMBER;
496 l_date_data DATE;
497 ---------------------------------------------------------
498 -- DBMS_SQL Open Cursor integers.
499 ---------------------------------------------------------
500 l_cursor_select INTEGER;
501 l_cursor_execute INTEGER;
502 l_cursor_attr_id_val INTEGER;
503 ---------------------------------------------------------
504 -- Used for indexes.
505 ---------------------------------------------------------
506 l_temp NUMBER(10) := 1;
507 l_actual_userattr_indx NUMBER(15);
508 l_indx NUMBER(15);
509 l_rows_per_attr_grp_indx NUMBER(15);
510 l_save_indx NUMBER(15);
511 l_attr_grp_has_data BOOLEAN;
512 l_attr_group_data_level VARCHAR2(30);
513 ---------------------------------------------------------
514 -- Long Dynamic SQL Strings
515 ---------------------------------------------------------
516 l_dyn_sql VARCHAR2(10000);
517 l_dyn_attr_id_val_sql VARCHAR2(10000);
518 ---------------------------------------------------------
519 -- To Number the Attribute Group Data Rows Uniquely.
520 ---------------------------------------------------------
521 L_ATTR_GRP_ROW_IDENT NUMBER(5) ;
522 ---------------------------------------------------------
523 -- Token tables to log errors, through Error_Handler
524 ---------------------------------------------------------
525 l_token_tbl_two Error_Handler.Token_Tbl_Type;
526 l_token_tbl_one Error_Handler.Token_Tbl_Type;
527 l_attr_group_type VARCHAR2(30);
528
529 l_userattr_indx_adj NUMBER(15); -- To adjust the index according to Data_levels
530 BEGIN
531 Write_Conclog('Loading the User Defined Attributes for Entity '||p_entity_name);
532
533 IF (G_HZ_PARTY_ID IS NULL) THEN
534 IF (G_USER_NAME IS NOT NULL) THEN
535 SELECT 'HZ_PARTY:'||TO_CHAR(PERSON_ID)
536 INTO G_HZ_PARTY_ID
537 FROM EGO_PEOPLE_V
538 WHERE USER_NAME = G_USER_NAME;
539 ELSE
540 RAISE G_NO_USER_NAME_TO_VALIDATE;
541 END IF;
542 END IF;
543
544
545 l_attr_group_type := 'POS_SUPP_PROFMGMT_GROUP';
546 --Bug 16384042 added data_level_id for outerloop cursor
547 FOR c_attr_grp_rec IN c_user_attr_group_codes
548 (
549 p_resultfmt_usage_id,l_attr_group_type
550 )
551 LOOP
552 l_dyn_sql := '';
553 l_dyn_sql := ' SELECT To_Number(SUBSTR(attribute_code, INSTR(attribute_code, ''$$'')+2)) attr_id, intf_column_name, To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, ''$$'') - 1)) attr_group_id ';
554 l_dyn_sql := l_dyn_sql || ' FROM ego_results_fmt_usages ';
555 l_dyn_sql := l_dyn_sql || ' WHERE resultfmt_usage_id = :RESULTFMT_USAGE_ID';
556 l_dyn_sql := l_dyn_sql || ' AND attribute_code LIKE :ATTRIBUTE_CODE ';
557 l_cursor_select := DBMS_SQL.OPEN_CURSOR;
558 DBMS_SQL.PARSE(l_cursor_select, l_dyn_sql, DBMS_SQL.NATIVE);
559 DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 1,l_attr_id_table,2500, l_temp);
560 DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 2,l_intf_col_name_table,2500, l_temp);
561 DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 3,l_attr_group_id_table,2500, l_temp);
562
563
564 DBMS_SQL.BIND_VARIABLE(l_cursor_select,':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
565 DBMS_SQL.BIND_VARIABLE(l_cursor_select,':ATTRIBUTE_CODE', c_attr_grp_rec.attr_group_id||'$$%');
566 l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_select);
567
568 l_count := DBMS_SQL.FETCH_ROWS(l_cursor_select);
569 DBMS_SQL.COLUMN_VALUE(l_cursor_select, 1, l_attr_id_table);
570 DBMS_SQL.COLUMN_VALUE(l_cursor_select, 2, l_intf_col_name_table);
571 DBMS_SQL.COLUMN_VALUE(l_cursor_select, 3, l_attr_group_id_table);
572
573
574
575 DBMS_SQL.CLOSE_CURSOR(l_cursor_select);
576 --------------------------------------------------------------------
577 -- New DBMS_SQL Cursor for Select Attr Values.
578 --------------------------------------------------------------------
579 l_cursor_attr_id_val := DBMS_SQL.OPEN_CURSOR;
580 l_dyn_attr_id_val_sql := '';
581 l_dyn_attr_id_val_sql := ' SELECT ';
582 l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' TRANSACTION_ID , ';
583 --Bug 16384042 since always pass SUPP_ADDR_SITE as p_entity_name parameter, always get the most number of PKs whether used or not determined by datalevel
584 IF p_entity_name = 'SUPP' THEN
585 l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE, ';
586 ELSIF p_entity_name = 'SUPP_ADDR' THEN
587 l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE , INSTANCE_PK3_VALUE , ';
588 ELSIF p_entity_name = 'SUPP_ADDR_SITE' THEN
589 l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE, INSTANCE_PK3_VALUE, INSTANCE_PK4_VALUE , ';
590 END IF;
591 --------------------------------------------------------------------
592 -- To fetch these cols also, as in case of New Item
593 -- Instance PK1 Value might not have been retrieved.
594 --------------------------------------------------------------------
595
596 Write_Conclog('*l_attr_id_table.COUNT*'||l_attr_id_table.COUNT);
597 FOR i IN 1..l_attr_id_table.COUNT LOOP
598 IF (i <> l_attr_id_table.COUNT) THEN
599 l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || l_intf_col_name_table(i) || ', ';
600 ELSE
601 l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || l_intf_col_name_table(i) ;
602 END IF;
603 END LOOP; --end: FOR i IN 1..l_attr_id_table.COUNT LOOP
604 l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' FROM EGO_BULKLOAD_INTF ' ;
605 l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
606 l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' AND PROCESS_STATUS = :PROCESS_STATUS ';
607 DBMS_SQL.PARSE(l_cursor_attr_id_val, l_dyn_attr_id_val_sql, DBMS_SQL.NATIVE);
608 --------------------------------------------------------------------
609 --Setting Data Type for Trasaction ID
610 --------------------------------------------------------------------
611 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 1, l_number_example);
612 --------------------------------------------------------------------
613 --Setting Data Type for INSTANCE_PKx_VALUE
614 -- Also since TRANSACTION_ID, INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE,
615 -- INSTANCE_PK3_VALUE,INSTANCE_PK4_VALUE are added to the SELECT before the User-Defined
616 -- Attrs, we need to adjust the index as follows.
617 ------------------------------------------------------------------------
618
619 IF p_entity_name = 'SUPP' THEN
620 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 2, l_varchar_example, 1000);
621 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 3, l_varchar_example, 1000);
622 l_userattr_indx_adj := 3;
623 ELSIF p_entity_name = 'SUPP_ADDR' THEN
624 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 2, l_varchar_example, 1000);
625 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 3, l_varchar_example, 1000);
626 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 4, l_varchar_example, 1000);
627 l_userattr_indx_adj := 4;
628 ELSIF p_entity_name = 'SUPP_ADDR_SITE' THEN
629 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 2, l_varchar_example, 1000);
630 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 3, l_varchar_example, 1000);
631 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 4, l_varchar_example, 1000);
632 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 5, l_varchar_example, 1000);
633 l_userattr_indx_adj := 5;
634 END IF; -- p_entity_name
635
636
637 --------------------------------------------------------------------
638 Write_Conclog('Executing the l_attr_id table looping');
639 --------------------------------------------------------------------
640 -- Loop to Bind the Data Types for the SELECT Columns.
641 --------------------------------------------------------------------
642 FOR i IN 1..l_attr_id_table.COUNT LOOP
643
644 l_actual_userattr_indx := i + l_userattr_indx_adj;
645
646 l_data_type_code := SUBSTR (l_intf_col_name_table(i), 1, 1);
647 ------------------------------------------------------------------------
648 -- Based on the Data Type of the attribute, define the column
649 ------------------------------------------------------------------------
650 IF (l_data_type_code = 'C') THEN
651 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_varchar_example, 1000);
652 ELSIF (l_data_type_code = 'N') THEN
653 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_number_example);
654 ELSE --IF (l_data_type_code = 'D') THEN
655 DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_date_example);
656 END IF; --IF (l_data_type_code = 'C') THEN
657 END LOOP; --FOR i IN 1..l_attr_id_table.COUNT LOOP
658 DBMS_SQL.BIND_VARIABLE(l_cursor_attr_id_val,':RESULTFMT_USAGE_ID',p_resultfmt_usage_id);
659 DBMS_SQL.BIND_VARIABLE(l_cursor_attr_id_val,':PROCESS_STATUS',G_PS_IN_PROCESS); -- 2
660
661 ------------------------------------------------------------------------
662 -- Execute to get the Item User-Defined Attr values.
663 ------------------------------------------------------------------------
664 l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_attr_id_val);
665 l_rows_per_attr_grp_indx := 0;
666 L_ATTR_GRP_ROW_IDENT := 0;
667 ------------------------------------------------------------------------
668 -- Loop for each row found in EBI
669 ------------------------------------------------------------------------
670 Write_Conclog('Executing LOOP FOR CURSOR_ATTR_ID_VAL ');
671 LOOP --LOOP FOR CURSOR_ATTR_ID_VAL
672 IF DBMS_SQL.FETCH_ROWS(l_cursor_attr_id_val)>0 THEN
673 ------------------------------------------------------------------------
674 --Increment Row Identifier per (Attribute Group + Row) Combination.
675 ------------------------------------------------------------------------
676 L_ATTR_GRP_ROW_IDENT := L_ATTR_GRP_ROW_IDENT + 1;
677 ------------------------------------------------------------------------
678 -- First column is Transaction ID.
679 ------------------------------------------------------------------------
680
681 IF p_entity_name = 'SUPP' THEN
682 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 1, l_transaction_id);
683 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 2, l_pk1_id_char);
684 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 3, l_pk2_id_char);
685
686
687 ELSIF p_entity_name = 'SUPP_ADDR' THEN
688 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 1, l_transaction_id);
689 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 2, l_pk1_id_char);
690 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 3, l_pk2_id_char);
691 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 4, l_pk3_id_char);
692 ELSIF p_entity_name = 'SUPP_ADDR_SITE' THEN
693 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 1, l_transaction_id);
694 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 2, l_pk1_id_char);
695 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 3, l_pk2_id_char);
696 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 4, l_pk3_id_char);
697 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 5, l_pk4_id_char);
698
699 END IF; -- p_entity_name
700
701
702 FOR i IN 1..l_attr_id_table.COUNT LOOP
703 OPEN c_attr_grp_n_attr_int_names(l_attr_id_table(i),l_attr_group_type);
704 FETCH c_attr_grp_n_attr_int_names INTO
705 l_attr_group_int_name, l_attr_int_name;
706 Write_Conclog('Attribute group Internal Name '||l_attr_group_int_name);
707 Write_Conclog('Attribute Internal Name '||l_attr_int_name);
708 l_attr_grp_has_data := FALSE;
709 ------------------------------------------------------------------------
710 -- If one more Attribute found for the Attribute Group.
711 ------------------------------------------------------------------------
712 IF c_attr_grp_n_attr_int_names%FOUND THEN
713 l_rows_per_attr_grp_indx := l_rows_per_attr_grp_indx + 1;
714 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).DATA_SET_ID := p_data_set_id;
715 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).BATCH_ID := p_batch_id;
716 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).TRANSACTION_ID := l_transaction_id;
717 Write_Conclog('after TRANSACTION_ID ');
718 --Bug 16384042 here we use actual data_level from outer cursor
719 IF c_attr_grp_rec.data_level_id = G_POS_SUPP_LEVEL_ID THEN
720 --IF p_entity_name = 'SUPP' THEN
721 if (l_pk1_id_char is NULL) THEN
722
723 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_ID := null;
724 Write_Conclog('after PK1_ID null');
725 else
726 Write_Conclog('Before PK1_ID, PK1 = '||l_pk1_id_char);
727 --FND_NUMBER.CANONICAL_TO_NUMBER
728 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_ID := l_pk1_id_char;
729 Write_Conclog('after PK1_ID');
730 end if;
731 if (l_pk2_id_char is NULL) THEN
732 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_ID := null;
733 Write_Conclog('after PK2_ID null');
734 else
735 Write_Conclog('Before PK2_ID, PK2 = '||l_pk2_id_char);
736 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_ID := l_pk2_id_char;
737 Write_Conclog('after PK2_ID');
738 end if;
739 ELSIF c_attr_grp_rec.data_level_id = G_POS_SUPP_ADDR_LEVEL_ID THEN
740 --ELSIF p_entity_name = 'SUPP_ADDR' THEN
741
742 if (l_pk1_id_char is NULL) THEN
743 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_ID := null;
744 else
745 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_ID := l_pk1_id_char;
746 end if;
747 if (l_pk2_id_char is NULL) THEN
748 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_ID := null;
749 else
750 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_ID := l_pk2_id_char;
751 end if;
752 if (l_pk3_id_char is NULL) THEN
753 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK3_ID := null;
754 else
755 Write_Conclog('Before PK3_ID, PK3 = '||l_pk3_id_char);
756 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK3_ID := l_pk3_id_char;
757 Write_Conclog('after PK3_ID');
758 end if;
759 ELSIF c_attr_grp_rec.data_level_id = G_POS_SUPP_ADDR_SITE_LEVEL_ID THEN
760 --ELSIF p_entity_name = 'SUPP_ADDR_SITE' THEN
761 if (l_pk1_id_char is NULL) THEN
762 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_ID := null;
763 else
764 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_ID := l_pk1_id_char;
765 end if;
766 if (l_pk2_id_char is NULL) THEN
767 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_ID := null;
768 else
769 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_ID := l_pk2_id_char;
770 end if;
771 if (l_pk3_id_char is NULL) THEN
772 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK3_ID := null;
773 else
774 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK3_ID := l_pk3_id_char;
775 end if;
776 if (l_pk4_id_char is NULL) THEN
777 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK4_ID := null;
778 else
779 Write_Conclog('Before PK4_ID, PK4 = '||l_pk4_id_char);
780 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK4_ID := l_pk4_id_char;
781 Write_Conclog('After PK4_ID ');
782 end if;
783 END IF;
784 Write_Conclog('before CLASSIFICATION_CODE ');
785 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).CLASSIFICATION_CODE := c_attr_grp_rec.classification_code;
786 Write_Conclog('before ROW_IDENTIFIER ');
787 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ROW_IDENTIFIER := L_ATTR_GRP_ROW_IDENT;
788
789 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE := SUBSTR (l_intf_col_name_table(i), 1, 1);
790 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_GROUP_NAME := l_attr_group_int_name;
791 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_NAME := l_attr_int_name;
792 Write_Conclog('before attr_group_id ');
793 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_GROUP_ID := l_attr_group_id_table(i);
794
795 l_actual_userattr_indx := i + l_userattr_indx_adj;
796 ------------------------------------------------------------------------
797 -- Depending upon the Data Type, populate corresponding field in the
798 -- User-Defined Attribute Data record.
799 ------------------------------------------------------------------------
800 IF (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE = 'C') THEN
801 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_varchar_data);
802 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR := l_varchar_data;
803 ELSIF (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE = 'N') THEN
804 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_number_data);
805 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_NUM := l_number_data;
806 ELSE --IF (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE = 'D') THEN
807 DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_date_data);
808 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_DATE := l_date_data;
809 END IF; --end: IF (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE = 'C') THEN
810 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).INTF_COLUMN_NAME := l_intf_col_name_table(i);
811 ------------------------------------------------------------------------
812 -- Donot populate NULL Attribute value in the User-Defined Attrs
813 -- Interface table.
814 ------------------------------------------------------------------------
815 IF ((l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR IS NULL) AND
816 (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_NUM IS NULL) AND
817 (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_DATE IS NULL)
818 ) THEN
819 ------------------------------------------------------------------------
820 -- If all attribute values are NULL value, then delete
821 -- the row from PLSQL table.
822 ------------------------------------------------------------------------
823 Write_Conclog('All the Attribute values are Null');
824 l_usr_attr_data_tbl.DELETE(l_rows_per_attr_grp_indx);
825 l_rows_per_attr_grp_indx := l_rows_per_attr_grp_indx - 1;
826 END IF; --end: IF ((l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR...
827 END IF; --end: IF c_attr_grp_n_attr_int_names%FOUND THEN
828 CLOSE c_attr_grp_n_attr_int_names;
829 END LOOP; --end: FOR i IN 1..l_attr_id_table.COUNT LOOP
830 ELSE --end: IF DBMS_SQL.FETCH_ROWS(l_cursor_attr_id_val)>0 THEN
831 Write_Conclog('No Rows Found (or) All rows are Done.');
832 EXIT;
833 END IF; --IF DBMS_SQL.FETCH_ROWS(l_cursor_attr_id_val)>0 THEN
834 END LOOP; --END: LOOP FOR CURSOR_ATTR_ID_VAL
835 l_attr_id_table.DELETE;
836 l_intf_col_name_table.DELETE;
837 ------------------------------------------------------------------------
838 DBMS_SQL.CLOSE_CURSOR(l_cursor_attr_id_val);
839 -------------------------------------------------------------------
840 -- Loop for all the rows to be inserted per Attribute Group.
841 -------------------------------------------------------------------
842 FOR i IN 1..l_rows_per_attr_grp_indx LOOP
843 -------------------------------------------------------------------------
844 -- Fix for Bug# 3808455. To avoid the following error:
845 -- ORA-01401: inserted value too large for column
846 -- [This is done because ATTR_DISP_VALUE size is 1000 Chars]
847 -------------------------------------------------------------------------
848 IF ( LENGTH(l_usr_attr_data_tbl(i).ATTR_VALUE_STR) > 1000 ) THEN
849 l_token_tbl_one(1).token_name := 'VALUE';
850 l_token_tbl_one(1).token_value := l_usr_attr_data_tbl(i).ATTR_VALUE_STR;
851 Write_Conclog('Inserted Attribute value too large....');
852 ELSE
853 l_varchar_data := NULL;
854 IF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'C') THEN
855 l_varchar_data := l_usr_attr_data_tbl(i).ATTR_VALUE_STR;
856 ELSIF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'N') THEN
857 IF (l_usr_attr_data_tbl(i).ATTR_VALUE_NUM IS NOT NULL) THEN
858 l_varchar_data := To_char(l_usr_attr_data_tbl(i).ATTR_VALUE_NUM);
859 END IF;
860 ELSE
861 IF (l_usr_attr_data_tbl(i).ATTR_VALUE_DATE IS NOT NULL) THEN
862 l_varchar_data := To_Char(l_usr_attr_data_tbl(i).ATTR_VALUE_DATE , G_DATE_FORMAT);
863 END IF;
864 END IF; --end: IF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'C') THEN
865 Write_Conclog('DATA SET ID ' || l_usr_attr_data_tbl(i).DATA_SET_ID);
866 Write_Conclog('BATCH ID ' || l_usr_attr_data_tbl(i).BATCH_ID);
867 Write_Conclog('TRANSACTION_ID ' || l_usr_attr_data_tbl(i).TRANSACTION_ID);
868 Write_Conclog('PK1_ID ' || l_usr_attr_data_tbl(i).PK1_ID);
869 Write_Conclog('PK2_ID ' || l_usr_attr_data_tbl(i).PK2_ID);
870 Write_Conclog('PK3_ID ' || l_usr_attr_data_tbl(i).PK3_ID);
871 Write_Conclog('PK4_ID ' || l_usr_attr_data_tbl(i).PK4_ID);
872 Write_Conclog('PK5_ID ' || l_usr_attr_data_tbl(i).PK5_ID);
873
874 Write_Conclog('ROW_IDENT ' || l_usr_attr_data_tbl(i).ROW_IDENTIFIER);
875 Write_Conclog('CLASS ' || l_usr_attr_data_tbl(i).CLASSIFICATION_CODE);
876 Write_Conclog('ATTR_GROUP_INT_NAME ' || l_usr_attr_data_tbl(i).ATTR_GROUP_NAME);
877 Write_Conclog('ATTR_INT_NAME ' || l_usr_attr_data_tbl(i).ATTR_NAME);
878 Write_Conclog('ATTR_DISP_VALUE ' || l_varchar_data);
879
880 ---------------------------------------------------------------
881 -- UDA EGO WEBADI
882 ----------------------------------------------------------------
883 --Bug 16384042 Here also need to use DataLevel from outer cursor
884 -- Here we call Resolve_PK_VALUES to get PK for party site and Supplier Site level
885 IF c_attr_grp_rec.data_level_id = G_POS_SUPP_LEVEL_ID THEN
886 --IF p_entity_name = 'SUPP' THEN
887 INSERT INTO POS_SUPP_PROF_EXT_INTF
888 (
889 DATA_SET_ID ,
890 TRANSACTION_ID ,
891 PARTY_ID ,
892 --PK1_VALUE ,
893 ROW_IDENTIFIER ,
894 PROCESS_STATUS ,
895 CLASSIFICATION_CODE ,
896 ATTR_GROUP_INT_NAME ,
897 ATTR_INT_NAME ,
898 ATTR_DISP_VALUE ,
899 DATA_LEVEL_ID ,
900 DATA_LEVEL_NAME,
901 BATCH_ID
902 )
903 VALUES
904 (
905 l_usr_attr_data_tbl(i).DATA_SET_ID,
906 l_usr_attr_data_tbl(i).TRANSACTION_ID,
907 to_number(l_usr_attr_data_tbl(i).PK1_ID),
908 --l_usr_attr_data_tbl(i).PK2_ID,
909 l_usr_attr_data_tbl(i).ROW_IDENTIFIER,
910 G_PS_TO_BE_PROCESSED,
911 l_usr_attr_data_tbl(i).CLASSIFICATION_CODE,
912 l_usr_attr_data_tbl(i).ATTR_GROUP_NAME,
913 l_usr_attr_data_tbl(i).ATTR_NAME,
914 l_varchar_data,
915 G_POS_SUPP_LEVEL_ID,
916 G_POS_SUPP_LEVEL,
917 l_usr_attr_data_tbl(i).BATCH_ID
918 );
919
920 Write_conclog('ATTR_ID: '||l_usr_attr_data_tbl(i).ATTR_GROUP_ID);
921 Write_conclog('PARTY_ID: '||l_usr_attr_data_tbl(i).PK1_ID);
922 -- Write_conclog('PK1_VALUE: '||l_usr_attr_data_tbl(i).PK2_ID);
923 ELSIF c_attr_grp_rec.data_level_id = G_POS_SUPP_ADDR_LEVEL_ID THEN
924 Write_Conclog('Before Inserting into Ext intf for Party Site level');
925
926 INSERT INTO POS_SUPP_PROF_EXT_INTF
927 (
928 DATA_SET_ID ,
929 TRANSACTION_ID ,
930 PARTY_ID ,
931 PK1_VALUE , --Party_Site_ID
932 --PK2_VALUE ,
933 ROW_IDENTIFIER ,
934 PROCESS_STATUS ,
935 CLASSIFICATION_CODE ,
936 ATTR_GROUP_INT_NAME ,
937 ATTR_INT_NAME ,
938 ATTR_DISP_VALUE ,
939 DATA_LEVEL_ID ,
940 DATA_LEVEL_NAME,
941 BATCH_ID
942 )
943 VALUES
944 (
945 l_usr_attr_data_tbl(i).DATA_SET_ID,
946 l_usr_attr_data_tbl(i).TRANSACTION_ID,
947 to_number(l_usr_attr_data_tbl(i).PK1_ID),
948 --l_PK1_Value, -- Party_Site_ID
949 l_usr_attr_data_tbl(i).PK3_ID, -- PK3 is Party_Site_ID
950 l_usr_attr_data_tbl(i).ROW_IDENTIFIER,
951 G_PS_TO_BE_PROCESSED,
952 l_usr_attr_data_tbl(i).CLASSIFICATION_CODE,
953 l_usr_attr_data_tbl(i).ATTR_GROUP_NAME,
954 l_usr_attr_data_tbl(i).ATTR_NAME,
955 l_varchar_data,
956 G_POS_SUPP_ADDR_LEVEL_ID,
957 G_POS_SUPP_ADDR_LEVEL,
958 l_usr_attr_data_tbl(i).BATCH_ID
959 );
960 ELSIF c_attr_grp_rec.data_level_id = G_POS_SUPP_ADDR_SITE_LEVEL_ID THEN
961
962 Write_Conclog('Before Insreting into Ext Intf for Supplier Site level' );
963
964 INSERT INTO POS_SUPP_PROF_EXT_INTF
965 (
966 DATA_SET_ID ,
967 TRANSACTION_ID ,
968 PARTY_ID ,
969 PK1_VALUE , --Party_Site_ID
970 PK2_VALUE , --Vendor_Site_ID
971 --PK3_VALUE ,
972 ROW_IDENTIFIER ,
973 PROCESS_STATUS ,
974 CLASSIFICATION_CODE ,
975 ATTR_GROUP_INT_NAME ,
976 ATTR_INT_NAME ,
977 ATTR_DISP_VALUE ,
978 DATA_LEVEL_ID ,
979 DATA_LEVEL_NAME,
980 BATCH_ID
981 )
982 VALUES
983 (
984 l_usr_attr_data_tbl(i).DATA_SET_ID,
985 l_usr_attr_data_tbl(i).TRANSACTION_ID,
986 to_number(l_usr_attr_data_tbl(i).PK1_ID),
987 --l_PK1_Value, -- Party_Site_ID
988 --l_PK2_Value, -- _Site_ID
989 --l_usr_attr_data_tbl(i).PK2_ID,
990 l_usr_attr_data_tbl(i).PK3_ID, -- Party_Site_ID
991 l_usr_attr_data_tbl(i).PK4_ID, -- Vendor_Site_ID
992 l_usr_attr_data_tbl(i).ROW_IDENTIFIER,
993 G_PS_TO_BE_PROCESSED,
994 l_usr_attr_data_tbl(i).CLASSIFICATION_CODE,
995 l_usr_attr_data_tbl(i).ATTR_GROUP_NAME,
996 l_usr_attr_data_tbl(i).ATTR_NAME,
997 l_varchar_data,
998 G_POS_SUPP_ADDR_SITE_LEVEL_ID,
999 G_POS_SUPP_ADDR_SITE_LEVEL,
1000 l_usr_attr_data_tbl(i).BATCH_ID
1001 );
1002 END IF;
1003 END IF; --end: IF ( LENGTH(l_usr_attr_data_tbl(i)..
1004 END LOOP; --FOR i IN 1..l_usr_attr_data_tbl.COUNT LOOP
1005 Write_Conclog('Populated the User-Defined Attr Values for Attribute Group : '||l_attr_group_int_name);
1006 END LOOP; --FOR c_attr_grp_rec IN c_user_attr_group_codes
1007
1008 x_retcode := G_STATUS_SUCCESS;
1009 x_errbuff := null;
1010 EXCEPTION
1011 WHEN OTHERS THEN
1012 x_retcode := G_STATUS_ERROR;
1013 x_errbuff := SUBSTRB(SQLERRM, 1,240);
1014 Write_Conclog('Error! While Loading User Defined Attributes into Interface tables' ) ;
1015 Write_Conclog('Error while processing Load User Attributes data API '||SQLCODE || ':'||SQLERRM);
1016 END LOAD_USERATTR_INTF;
1017 -----------------------end of load_userattr_intf---------------------------
1018 -------------------------------------------------------------------------------
1019 --processing of Site Attributes from POS_SUPP_PROF_EXT_INTF
1020 --------------------------------------------------------------------------------
1021 PROCEDURE PROCESS_USER_ATTRS_DATA(
1022 ERRBUF OUT NOCOPY VARCHAR2
1023 ,RETCODE OUT NOCOPY VARCHAR2
1024 ,p_data_set_id IN NUMBER
1025 ,p_purge_successful_lines IN VARCHAR2 DEFAULT FND_API.G_FALSE) is
1026 l_entity_index_counter NUMBER := 0;
1027 l_debug_level NUMBER := 0;
1028 l_user_attrs_return_status VARCHAR2(100);
1029 l_return_status VARCHAR2(1);
1030 l_errorcode NUMBER;
1031 l_msg_count NUMBER;
1032 l_msg_data VARCHAR2(1000);
1033 l_rel_sql VARCHAR2(100);
1034 l_cnt NUMBER := 0;
1035 CURSOR c_pos_supp_prof_ext_intf is
1036 select count(*) from POS_SUPP_PROF_EXT_INTF
1037 WHERE PROCESS_STATUS = G_PS_TO_BE_PROCESSED
1038 AND DATA_SET_ID = p_data_set_id;
1039 BEGIN
1040
1041 Write_Conclog('Processing the User Defined Attributes ' );
1042
1043 IF (Error_Handler.Get_Debug = 'Y') THEN
1044 l_debug_level := 3; --continue writing to the Debug Log opened.
1045 ELSE
1046 l_debug_level := 0; --Since Debug log is not opened, donot open Debug log for User-Attrs also.
1047 END IF;
1048
1049 l_user_attrs_return_status := FND_API.G_RET_STS_SUCCESS;
1050 Open c_pos_supp_prof_ext_intf;
1051 fetch c_pos_supp_prof_ext_intf into l_cnt;
1052 Close c_pos_supp_prof_ext_intf;
1053 IF l_cnt > 0 THEN
1054 UPDATE POS_SUPP_PROF_EXT_INTF
1055 SET PROCESS_STATUS = G_PS_IN_PROCESS
1056 ,REQUEST_ID = G_REQUEST_ID
1057 ,PROGRAM_APPLICATION_ID = G_PROGAM_APPLICATION_ID
1058 ,PROGRAM_ID = G_PROGAM_ID
1059 ,PROGRAM_UPDATE_DATE = SYSDATE
1060 ,CREATED_BY = DECODE(CREATED_BY, NULL, G_USER_ID, CREATED_BY)
1061 ,CREATION_DATE = DECODE(CREATION_DATE, NULL, SYSDATE, CREATION_DATE)
1062 ,LAST_UPDATED_BY = G_USER_ID
1063 ,LAST_UPDATE_DATE = SYSDATE
1064 ,LAST_UPDATE_LOGIN = G_LOGIN_ID
1065 ,TRANSACTION_TYPE = UPPER(NVL(TRANSACTION_TYPE,EGO_USER_ATTRS_DATA_PVT.G_SYNC_MODE))
1066 ,IS_PROSPECT = 'N'
1067 -- Bug16384042 We cannot set PK1_value to null irrespective of what DataLevel AG is using
1068 --,PK1_VALUE = null
1069 ,CLASSIFICATION_CODE = 'BS:BASE'
1070 WHERE DATA_SET_ID = p_data_set_id
1071 AND (PROCESS_STATUS IS NULL OR
1072 PROCESS_STATUS = G_PS_TO_BE_PROCESSED);
1073 l_rel_sql := 'SELECT CODE FROM POS_SUPP_PROF_EXT_OCV';
1074
1075 -- Bug 12747017 Adding gather stats to improve performance, only doing it when volume are large. Ref Implementation:RRSIMINB.pls
1076 IF l_cnt > 1000 THEN --hard-code threshold value 1000 here may need to use profile option in future
1077 Write_Conclog('Before Gathering Stats... l_cnt = '||l_cnt);
1078 fnd_stats.gather_table_stats('POS','POS_SUPP_PROF_EXT_INTF',cascade=>true,percent=>30);
1079 fnd_stats.gather_table_stats('POS','POS_SUPP_PROF_EXT_B',cascade=>true,percent=>30);
1080 fnd_stats.gather_table_stats('POS','POS_SUPP_PROF_EXT_TL',cascade=>true,percent=>30);
1081 Write_Conclog('Done Gathering Stats....');
1082 END IF;
1083
1084 Write_Conclog('Executing EGO_USER_ATTRS_BULK_PVT.Bulk_Load_User_Attrs_Data -'||'HZ_PARTIES: Supplier Hub' );
1085
1086 EGO_USER_ATTRS_BULK_PVT.Bulk_Load_User_Attrs_Data (
1087 p_api_version => G_API_VERSION --IN NUMBER
1088 ,p_application_id => 177 --IN NUMBER
1089 ,p_attr_group_type => 'POS_SUPP_PROFMGMT_GROUP' --IN VARCHAR2
1090 ,p_object_name => 'HZ_PARTIES' --IN VARCHAR2
1091 ,p_hz_party_id => G_HZ_PARTY_ID
1092 ,p_interface_table_name => 'POS_SUPP_PROF_EXT_INTF' --IN VARCHAR2
1093 ,p_data_set_id => p_data_set_id --IN NUMBER
1094 ,p_entity_id => 0 --G_ENTITY_ID --IN NUMBER
1095 ,p_entity_index => 0 --l_entity_index_counter --IN NUMBER
1096 ,p_entity_code => 'HZ_PARTIES' --IN VARCHAR2
1097 ,p_debug_level => l_debug_level --IN NUMBER
1098 ,p_init_error_handler => FND_API.G_FALSE --IN VARCHAR2
1099 ,p_init_fnd_msg_list => FND_API.G_FALSE --IN VARCHAR2
1100 ,p_log_errors => FND_API.G_TRUE --IN VARCHAR2
1101 ,p_add_errors_to_fnd_stack => FND_API.G_TRUE --IN VARCHAR2
1102 ,p_commit => FND_API.G_FALSE --IN VARCHAR2
1103 ,p_default_view_privilege => NULL --IN VARCHAR2
1104 ,p_default_edit_privilege => NULL
1105 ,p_privilege_predicate_api_name => NULL
1106 ,p_related_class_codes_query => l_rel_sql --IN VARCHAR2
1107 ,p_validate => TRUE
1108 ,p_do_dml => TRUE
1109 ,x_return_status => l_user_attrs_return_status --OUT NOCOPY VARCHAR2
1110 ,x_errorcode => l_errorcode --OUT NOCOPY NUMBER
1111 ,x_msg_count => l_msg_count --OUT NOCOPY NUMBER
1112 ,x_msg_data => l_msg_data --OUT NOCOPY VARCHAR2
1113 );
1114
1115 Write_Conclog('Executed User Defined Attributes Upload API');
1116 Write_Conclog('G_API_VERSION ' || G_API_VERSION);
1117 Write_Conclog('G_HZ_PARTY_ID ' || G_HZ_PARTY_ID);
1118 Write_Conclog('p_data_set_id ' || p_data_set_id);
1119 Write_Conclog('G_ENTITY_ID ' || G_ENTITY_ID);
1120 Write_Conclog('l_entity_index_counter ' || l_entity_index_counter);
1121 Write_Conclog(' G_ENTITY_CODE ' || G_ENTITY_CODE );
1122 Write_Conclog('l_debug_level ' || l_debug_level );
1123 Write_Conclog('l_rel_sql ' || l_rel_sql );
1124 Write_Conclog('Return Status '||l_user_attrs_return_status);
1125 Write_Conclog('Error Code '||l_errorcode);
1126 Write_Conclog('msg count '||l_msg_count);
1127 Write_Conclog('msg data '||l_msg_data);
1128
1129
1130 IF (FND_API.To_Boolean(p_purge_successful_lines)) THEN
1131 -----------------------------------------------
1132 -- Delete all successful rows from the table --
1133 -- (they're the only rows still in process) --
1134 -----------------------------------------------
1135 DELETE FROM POS_SUPP_PROF_EXT_INTF
1136 WHERE DATA_SET_ID = p_data_set_id
1137 AND PROCESS_STATUS = G_PS_IN_PROCESS;
1138 ELSE
1139 ----------------------------------------------
1140 -- Mark all rows we've processed as success --
1141 -- if they weren't marked as failure above --
1142 ----------------------------------------------
1143 UPDATE POS_SUPP_PROF_EXT_INTF
1144 SET PROCESS_STATUS = G_PS_SUCCESS
1145 WHERE DATA_SET_ID = p_data_set_id
1146 AND PROCESS_STATUS = G_PS_IN_PROCESS;
1147 END IF; -- p_purge_successful_lines
1148 END IF; -- IF l_cnt > 0
1149
1150
1151
1152
1153 -------------------------------------------------------------------
1154 -- Finally, we log any errors that we've accumulated throughout --
1155 -- our conversions and looping (including all errors encountered --
1156 -- within our Business Object's processing) --
1157 -------------------------------------------------------------------
1158 Write_Conclog('****Dumping the List of Error messages into the Concurrent Log***');
1159
1160 ERROR_HANDLER.Log_Error(
1161 p_write_err_to_inttable => 'N'
1162 ,p_write_err_to_conclog => 'Y'
1163 ,p_write_err_to_debugfile => 'Y'
1164 );
1165 Write_Conclog('****End of All Error messages***');
1166 -----------------------------------------------------------
1167 -- Let caller know whether any rows failed in processing --
1168 -----------------------------------------------------------
1169 IF ( l_user_attrs_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
1170 RETCODE := G_RETCODE_SUCCESS_WITH_WARNING;
1171 ELSE
1172 RETCODE := FND_API.G_RET_STS_SUCCESS;
1173 END IF;
1174 EXCEPTION
1175 WHEN OTHERS THEN
1176 ----------------------------------------
1177 -- Mark all rows in process as errors --
1178 ----------------------------------------
1179 l_cnt := 0;
1180 Open c_pos_supp_prof_ext_intf;
1181 fetch c_pos_supp_prof_ext_intf into l_cnt;
1182 Close c_pos_supp_prof_ext_intf;
1183 IF l_cnt > 0 THEN
1184 UPDATE POS_SUPP_PROF_EXT_INTF
1185 SET PROCESS_STATUS = G_PS_GENERIC_ERROR
1186 WHERE DATA_SET_ID = p_data_set_id
1187 AND PROCESS_STATUS = G_PS_IN_PROCESS;
1188 END IF;
1189
1190 Write_Conclog('Error! While Processing User Defined Attributes ' ) ;
1191 Write_Conclog('Error while processing Process User Attrs data API '||SQLCODE || ':'||SQLERRM);
1192 RETCODE := FND_API.G_RET_STS_UNEXP_ERROR;
1193 END Process_User_Attrs_Data;
1194 ---------------------------------------------------------------------
1195 -- Main API called by Java Concurrent program
1196 ---------------------------------------------------------------------
1197 PROCEDURE BULKLOADENTITIES(
1198 ERRBUF OUT NOCOPY VARCHAR2,
1199 RETCODE OUT NOCOPY VARCHAR2,
1200 result_format_usage_id IN NUMBER,
1201 user_id IN NUMBER,
1202 LANGAUGE IN VARCHAR2,
1203 resp_id IN NUMBER,
1204 appl_id IN NUMBER,
1205 batch_id IN NUMBER )
1206 IS
1207 l_region_application_id NUMBER := 0 ;
1208 l_customization_application_id NUMBER := 0 ;
1209 l_region_code VARCHAR2(30);
1210 Current_Error_Code VARCHAR2(20) := NULL;
1211 conc_status BOOLEAN ;
1212 l_target_api_call NUMBER :=0;
1213 l_debug VARCHAR2(80);
1214 l_errbuf varchar2(2000);
1215 l_retcode varchar2(2000);
1216 --l_rrs_set_process_id NUMBER;
1217 l_process_status char(100);
1218 BEGIN
1219 Write_Conclog('Executing the BulkLoadEntities API ');
1220 Write_Conclog('User Defined Attributes Import Program *STARTED*');
1221 UPDATE EGO_BULKLOAD_INTF
1222 SET
1223 PROCESS_STATUS = G_PS_IN_PROCESS,
1224 LAST_UPDATE_LOGIN = FND_GLOBAL.login_id,
1225 REQUEST_ID = FND_GLOBAL.conc_request_id,
1226 PROGRAM_APPLICATION_ID = FND_GLOBAL.prog_appl_id,
1227 PROGRAM_ID = FND_GLOBAL.conc_program_id
1228 WHERE RESULTFMT_USAGE_ID = result_format_usage_id
1229 AND process_status = G_PS_TO_BE_PROCESSED;
1230
1231 --Bug 16384042 Calling Resolve PK Values to set PK3 and PK4 in EBI table
1232 Write_Conclog('Before calling Resolve_PK_values');
1233 RESOLVE_PK_VALUES(
1234 RETCODE => l_retcode,
1235 p_result_format_usage_id => result_format_usage_id
1236 );
1237
1238 LOAD_USERATTR_INTF(
1239 p_resultfmt_usage_id => result_format_usage_id,
1240 p_data_set_id => batch_id,
1241 x_errbuff => l_errbuf,
1242 x_retcode => l_retcode,
1243 --Bug16384042 No need to call the same API three times,
1244 --always pass SUPP_ADDR_SITE as this returns the most PKs, whether PK will be used is determined later
1245 p_entity_name => 'SUPP_ADDR_SITE',
1246 p_batch_id => batch_id
1247 );
1248 --LOAD_USERATTR_INTF(
1249 -- p_resultfmt_usage_id => result_format_usage_id,
1250 -- p_data_set_id => batch_id,
1251 -- x_errbuff => l_errbuf,
1252 -- x_retcode => l_retcode,
1253 -- p_entity_name => 'SUPP_ADDR',
1254 -- p_batch_id => batch_id
1255 -- );
1256 --LOAD_USERATTR_INTF(
1257 -- p_resultfmt_usage_id => result_format_usage_id,
1258 -- p_data_set_id => batch_id,
1259 -- x_errbuff => l_errbuf,
1260 --x_retcode => l_retcode,
1261 --p_entity_name => 'SUPP_ADDR_SITE',
1262 --p_batch_id => batch_id
1263 -- );
1264 --PROCESS_USER_ATTRS_DATA(
1265 -- ERRBUF => l_errbuf,
1266 -- RETCODE => l_retcode,
1267 -- p_data_set_id => batch_id,
1268 -- p_purge_successful_lines => FND_API.G_FALSE);
1269
1270 Write_Conclog('Return Code After Executing LOAD and PROCESS APIs '||l_retcode);
1271 Write_Conclog('Error Code After Executing LOAD and PROCESS APIs '||l_errbuf);
1272
1273 IF l_retcode = 'S' THEN
1274 UPDATE EGO_BULKLOAD_INTF
1275 SET PROCESS_STATUS = G_PS_SUCCESS,
1276 LAST_UPDATE_LOGIN = FND_GLOBAL.login_id,
1277 REQUEST_ID = FND_GLOBAL.conc_request_id,
1278 PROGRAM_APPLICATION_ID = FND_GLOBAL.prog_appl_id,
1279 PROGRAM_ID = FND_GLOBAL.conc_program_id
1280 WHERE RESULTFMT_USAGE_ID = result_format_usage_id
1281 AND process_status = G_PS_IN_PROCESS;
1282 END IF ;
1283 ERRBUF := l_errbuf;
1284 RETCODE := l_retcode;
1285 Write_Conclog('User Defined Attributes Import Program *COMPLETED* ');
1286 EXCEPTION
1287 WHEN OTHERS THEN
1288 Write_Conclog('Error while processing BulkloadEntities API '||SQLCODE || ':'||SQLERRM);
1289 Write_Conclog('Error! While Running User Defined Attributes Import Program ');
1290 RETCODE := 'E';
1291 Current_Error_Code := To_Char(SQLCODE);
1292 conc_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR', Current_Error_Code);
1293 END BULKLOADENTITIES;
1294
1295
1296
1297 PROCEDURE LOAD_PARTY_INTF(
1298 ERRBUF OUT NOCOPY VARCHAR2,
1299 RETCODE OUT NOCOPY VARCHAR2,
1300 p_batch_id IN NUMBER,
1301 P_PARTY_ORIG_SYSTEM IN VARCHAR2,
1302 P_PARTY_ORIG_SYSTEM_REFERENCE IN VARCHAR2,
1303 P_INSERT_UPDATE_FLAG IN VARCHAR2,
1304 P_PARTY_TYPE IN VARCHAR2,
1305 P_ORGANIZATION_NAME IN VARCHAR2,
1306 P_PERSON_FIRST_NAME IN VARCHAR2,
1307 P_PERSON_LAST_NAME IN VARCHAR2
1308 )
1309
1310 IS
1311
1312 l_debug VARCHAR2(80);
1313 l_errbuf varchar2(2000);
1314 l_retcode varchar2(2000);
1315
1316 BEGIN
1317
1318 DELETE FROM HZ_IMP_PARTIES_INT
1319 WHERE batch_id = p_batch_id;
1320 Write_Conclog('HZ_IMP_PARTIES_INT Completed');
1321
1322 DELETE FROM Ap_Suppliers_Int
1323 WHERE sdh_BATCH_ID = P_BATCH_ID;
1324 Write_Conclog('Ap_Suppliers_Int Completed');
1325
1326 INSERT
1327 INTO HZ_IMP_PARTIES_INT
1328 (
1329 BATCH_ID,
1330 PARTY_ORIG_SYSTEM,
1331 PARTY_ORIG_SYSTEM_REFERENCE,
1332 INSERT_UPDATE_FLAG,
1333 PARTY_TYPE,
1334 ORGANIZATION_NAME,
1335 PERSON_FIRST_NAME,
1336 PERSON_LAST_NAME,
1337 creation_date
1338 )
1339 VALUES
1340 (p_batch_id,
1341 P_PARTY_ORIG_SYSTEM,
1342 P_PARTY_ORIG_SYSTEM_REFERENCE,
1343 P_INSERT_UPDATE_FLAG,
1344 P_PARTY_TYPE,
1345 P_ORGANIZATION_NAME,
1346 P_PERSON_FIRST_NAME,
1347 P_PERSON_LAST_NAME,
1348 sysdate
1349 );
1350
1351 INSERT INTO AP_SUPPLIERS_INT
1352 (VENDOR_INTERFACE_ID,
1353 VENDOR_NAME,
1354 SDH_BATCH_ID ,
1355 PARTY_ORIG_SYSTEM ,
1356 PARTY_ORIG_SYSTEM_REFERENCE
1357 )
1358 VALUES
1359 (P_BATCH_ID,
1360 P_ORGANIZATION_NAME,
1361 P_BATCH_ID,
1362 P_PARTY_ORIG_SYSTEM,
1363 P_PARTY_ORIG_SYSTEM_REFERENCE
1364 );
1365
1366 DELETE FROM HZ_IMP_PARTIES_INT
1367 WHERE batch_id = p_batch_id;
1368 Write_Conclog('HZ_IMP_PARTIES_INT Completed');
1369
1370 DELETE FROM Ap_Suppliers_Int
1371 WHERE SDH_BATCH_ID = P_BATCH_ID;
1372 WRITE_CONCLOG('Ap_Suppliers_Int Completed');
1373
1374 ERRBUF := l_errbuf;
1375 RETCODE := 'S';
1376 Write_Conclog('INSERT PARTY CHANGES ');
1377 EXCEPTION
1378 WHEN OTHERS THEN
1379 Write_Conclog('Error while processing LOAD_PARTY_INTF API '||SQLCODE || ':'||SQLERRM);
1380 Write_Conclog('Error! While Running LOAD_PARTY_INTF ');
1381 RETCODE := 'E';
1382
1383
1384 END LOAD_PARTY_INTF;
1385
1386 END;