DBA Data[Home] [Help]

PACKAGE BODY: APPS.EGO_ITEM_BULKLOAD_PKG

Source


1 PACKAGE BODY EGO_ITEM_BULKLOAD_PKG AS
2 /* $Header: EGOIBLKB.pls 120.90.12010000.3 2009/01/05 13:13:02 snandana ship $ */
3 
4 
5                    ------------------------------
6                    -- Private Global Variables --
7                    ------------------------------
8 
9    --------------------------------------------
10    -- This is Database Session Language.     --
11    --------------------------------------------
12    G_SESSION_LANG           CONSTANT VARCHAR2(99) := USERENV('LANG');
13 
14    --------------------------------------------
15    -- This is the UI language.               --
16    --------------------------------------------
17    G_LANGUAGE_CODE           VARCHAR2(3);
18 
19    --------------------------------------------------------------------------
20    --  Debug Profile option used to write Error_Handler.Write_Debug        --
21    --  Profile option name = INV_DEBUG_TRACE ;                             --
22    --  User Profile Option Name = INV: Debug Trace                         --
23    --  Values: 1 (True) ; 0 (False)                                        --
24    --  NOTE: This better than MRP_DEBUG which is used at many places.      --
25    --------------------------------------------------------------------------
26    G_DEBUG CONSTANT VARCHAR2(10) := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
27 
28    -----------------------------------------------------------------------
29    -- These are the Constants to generate a New Line Character.         --
30    -----------------------------------------------------------------------
31    G_CARRIAGE_RETURN VARCHAR2(1) :=  FND_GLOBAL.LOCAL_CHR(13);
32    G_LINE_FEED       VARCHAR2(1) :=  FND_GLOBAL.LOCAL_CHR(10);
33    -- Following prints ^M characters in the log file.
34    -- G_NEWLINE         VARCHAR2(2) :=  G_CARRIAGE_RETURN || G_LINE_FEED; --(carriage-return/line-feed)
35    G_NEWLINE         VARCHAR2(2) :=  G_LINE_FEED;
36 
37    -----------------------------------------------------------------------
38    -- This is the Result Format Usage ID for the Current Upload.        --
39    -----------------------------------------------------------------------
40    G_RESULTFMT_USAGE_ID      NUMBER;
41 
42    -------------------------------------------------------
43    -- The following two variables are for Error_Handler --
44    -------------------------------------------------------
45    G_ENTITY_ID               NUMBER := NULL;
46    G_ENTITY_CODE    CONSTANT VARCHAR2(30) := 'ITEM_OPER_ATTRS_ENTITY_CODE';
47 
48 
49    -------------------------------------------------------
50    -- Used for Item Operational Attribute bulkload SQLs --
51    -------------------------------------------------------
52    G_APPLICATION_ID          NUMBER(3)    := 431;
53    G_EGO_ITEM_OBJ_NAME       VARCHAR2(30) := 'EGO_ITEM';
54 
55    ---------------------------------------------------------------------------
56    -- User-Defined Attr Group Types currently handled by this Bulkload code --
57    ---------------------------------------------------------------------------
58    G_IUD_ATTR_GROUP_TYPE     VARCHAR2(30) := 'EGO_ITEMMGMT_GROUP';  -- Item User-Defined Attrs
59    G_GTN_SNG_ATTR_GROUP_TYPE VARCHAR2(30) := 'EGO_ITEM_GTIN_ATTRS'; -- GTIN Single Row Attrs
60    G_GTN_MUL_ATTR_GROUP_TYPE VARCHAR2(30) := 'EGO_ITEM_GTIN_MULTI_ATTRS'; -- GTIN Multi Row Attrs
61    G_ERP_ATTR_GROUP_TYPE     VARCHAR2(30) := 'EGO_MASTER_ITEMS';   -- Item Master Operational Attrs
62 
63    ----------------------------------------------------------------------------
64    -- The Date Format is chosen to be as close as possible to Timestamp format,
65    -- except that we support dates before zero A.D. (the "S" in the year part).
66    ----------------------------------------------------------------------------
67    G_DATE_FORMAT    CONSTANT VARCHAR2(30) := 'SYYYY-MM-DD HH24:MI:SS';
68    G_EXCEL_NULL_DATE         DATE  := TO_DATE('9999-12-31','YYYY-MM-DD');
69 
70    G_CONCREQ_VALID_FLAG      BOOLEAN;
71 
72    ---------------------------------------------------------------
73    -- Same dimension as classification1 in EGO_RESULTS_FORMAT_V --
74    ---------------------------------------------------------------
75    G_CATALOG_GROUP_ID        VARCHAR2(50);
76 
77    ---------------------------------------------------------------
78    -- To be used by Item and Item Rev interfaces.               --
79    ---------------------------------------------------------------
80    G_MSII_SET_PROCESS_ID     NUMBER;
81 
82 
83    ---------------------------------------------------------------
84    -- This flag will be set to TRUE for pdh batch and           --
85    -- FALSE for all non PDH batches                             --
86    ---------------------------------------------------------------
87    G_PDH_BATCH               BOOLEAN;
88 
89    ---------------------------------------------------------------
90    -- The process status to be set to the interface table is    --
91    -- 1 by default. But for non PDH batch, set status to 0      --
92    ---------------------------------------------------------------
93 
94    G_PROCESS_STATUS          NUMBER := 1;
95 
96    ---------------------------------------------------------------
97    -- Used for Error Reporting.                                 --
98    ---------------------------------------------------------------
99    G_ERROR_TABLE_NAME        VARCHAR2(99) := 'EGO_BULKLOAD_INTF';
100    G_ERROR_ENTITY_CODE       VARCHAR2(99) := 'EGO_ITEM';
101    G_ERROR_FILE_NAME         VARCHAR2(99);
102    G_BO_IDENTIFIER           VARCHAR2(99) := 'EGO_ITEM';
103    G_INV_STATUS_CODE_NAME    VARCHAR2(99) := 'INVENTORY_ITEM_STATUS_CODE';
104 
105    ---------------------------------------------------------------
106    -- Introduced for 11.5.10, so that Java Conc Program can     --
107    -- continue writing to the same Error Log File.              --
108    ---------------------------------------------------------------
109    G_ERRFILE_PATH_AND_NAME   VARCHAR2(10000);
110 
111    ---------------------------------------------------------------
112    -- API Return statuses.                                      --
113    ---------------------------------------------------------------
114    G_STATUS_SUCCESS    CONSTANT VARCHAR2(1)    := 'S';
115    G_STATUS_ERROR      CONSTANT VARCHAR2(1)    := 'E';
116 
117    ---------------------------------------------------------------
118    -- Interface line processing statuses.                       --
119    ---------------------------------------------------------------
120    G_INTF_STATUS_TOBE_PROCESS   CONSTANT NUMBER := 1;
121    G_INTF_STATUS_SUCCESS        CONSTANT NUMBER := 7;
122    G_INTF_STATUS_ERROR          CONSTANT NUMBER := 3;
123 
124    ---------------------------------------------------------------
125    -- Interface line Transaction Types.                         --
126    ---------------------------------------------------------------
127    G_CREATE             CONSTANT VARCHAR2(10) := 'CREATE';
128    G_UPDATE             CONSTANT VARCHAR2(10) := 'UPDATE';
129    G_SYNC               CONSTANT VARCHAR2(10) := 'SYNC';
130 
131 
132    ------------------------------------------------------------------------------
133    -- Generic Bulkload interface table: EGO_BULKLOAD_INTF segment number range --
134    -- as per data type.                                                        --
135    ------------------------------------------------------------------------------
136    G_VARCHAR_SEQ_MIN        NUMBER := 1;
137    G_VARCHAR_SEQ_MAX        NUMBER := 200;
138    G_NUMBER_SEQ_MIN         NUMBER := 201;
139    G_NUMBER_SEQ_MAX         NUMBER := 350;
140    G_DATE_SEQ_MIN           NUMBER := 351;
141    G_DATE_SEQ_MAX           NUMBER := 360;
142 
143    ---------------------------------------------------------------------------
144    -- Define the Base Attribute Names that require Value-to-ID Conversion.  --
145    ---------------------------------------------------------------------------
146    G_ITEM_NUMBER            VARCHAR2(50) := 'ITEM_NUMBER';
147    G_ITEM_TEMPLATE_NAME     VARCHAR2(50) := 'TEMPLATE_NAME';
148    G_ORG_CODE               VARCHAR2(50) := 'ORGANIZATION_CODE';
149    -- Following column values are Editable --
150    G_ITEM_CATALOG_GROUP1    VARCHAR2(50) := 'CATALOG_GROUP';
151    G_ITEM_CATALOG_GROUP     VARCHAR2(50) := 'ITEM_CATALOG_GROUP_NAME';
152    G_PRIMARY_UOM            VARCHAR2(50) := 'PRIMARY_UOM_CODE';
153    G_LIFECYCLE              VARCHAR2(50) := 'LIFECYCLE_ID'; --LIFECYCLE
154    G_LIFECYCLE_PHASE        VARCHAR2(50) := 'CURRENT_PHASE_ID'; -- LIFECYCLE_PHASE
155    G_USER_ITEM_TYPE         VARCHAR2(50) := 'ITEM_TYPE';
156    G_BOM_ITEM_TYPE          VARCHAR2(50) := 'BOM_ITEM_TYPE';
157    G_ENG_ITEM_FLAG          VARCHAR2(50) := 'ENG_ITEM_FLAG';
158    G_DESCRIPTION            VARCHAR2(50) := 'DESCRIPTION';  -- Bug: 3778006
159    G_CREATED_BY             VARCHAR2(50) := 'CREATED_BY'; -- Bug:  5439746
160    G_CREATION_DATE          VARCHAR2(50) := 'CREATION_DATE';
161    --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
162    G_CONVERSIONS            VARCHAR2(50) := 'ALLOWED_UNITS_LOOKUP_CODE';
163    G_SECONDARY_DEF_IND      VARCHAR2(50) := 'SECONDARY_DEFAULT_IND';
164    G_DUAL_UOM_DEV_LOW       VARCHAR2(50) := 'DUAL_UOM_DEVIATION_LOW';
165    G_DUAL_UOM_DEV_HIGH      VARCHAR2(50) := 'DUAL_UOM_DEVIATION_HIGH';
166    G_ONT_PRICING_QTY_SRC    VARCHAR2(50) := 'ONT_PRICING_QTY_SOURCE';
167    G_SECONDARY_UOM_CODE     VARCHAR2(50) := 'SECONDARY_UOM_CODE';
168    G_TRACKING_QTY_IND       VARCHAR2(50) := 'TRACKING_QUANTITY_IND';
169    --Bug: 3969593 End
170    G_INVENTORY_ITEM_STATUS  VARCHAR2(50) := 'INVENTORY_ITEM_STATUS_CODE';--Rathna MLS STatus
171    -- Trade Item Descriptor for Import Pack Hierarchies
172    G_TRADE_ITEM_DESCRIPTOR  VARCHAR2(50) := 'TRADE_ITEM_DESCRIPTOR';
173    ---------------------------------------------------------------
174    -- Item Result Format Data Levels.                           --
175    ---------------------------------------------------------------
176    G_ITEM_DATA_LEVEL        VARCHAR2(50) := 'ITEM_LEVEL';
177    G_ITEM_REV_DATA_LEVEL    VARCHAR2(50) := 'ITEM_REVISION_LEVEL';
178 
179    -----------------------------------------------------------------
180    -- Item Revision Attribute Codes and Corresponding DB Columns. --
181    -----------------------------------------------------------------
182 
183            ------------------------------------
184            -- Item Revision Attribute Codes  --
185            ------------------------------------
186    G_REV_ID_ATTR_CODE          VARCHAR2(50) := 'REVISION_ID';
187    G_REV_CODE_ATTR_CODE        VARCHAR2(50) := 'REVISION';
188    G_REV_LABEL_ATTR_CODE       VARCHAR2(50) := 'REVISION_LABEL';
189    G_REV_DESCRIPTION_ATTR_CODE VARCHAR2(50) := 'REVISION_DESCRIPTION';
190    G_REV_REASON_ATTR_CODE      VARCHAR2(50) := 'REVISION_REASON';
191    G_REV_LC_ID_ATTR_CODE       VARCHAR2(50) := 'REVISION_LIFECYCLE_ID';
192    G_REV_LC_PHASE_ID_ATTR_CODE VARCHAR2(50) := 'REVISION_CURRENT_PHASE_ID';
193    G_REV_IMPL_DATE_ATTR_CODE   VARCHAR2(50) := 'REVISION_IMPLEMENTATION_DATE';
194 
195    -- Revisions Import Format uses following Attribute Code. --
196    G_REV_EFF_DATE_ATTR_CODE    VARCHAR2(50) := 'REVISION_EFFECTIVE_DATE';
197    -- Item Result Format uses following Attribute Code. --
198    G_REV_EFF_DATE_ATTR_CODE_2  VARCHAR2(50) := 'REVISION_EFFECTIVITY_DATE';
199 
200            -------------------------------------
201            -- Item Revision Database Columns  --
202            -------------------------------------
203    G_REV_ID_DB_COL             VARCHAR2(50) := 'REVISION_ID';
204    G_REV_CODE_DB_COL           VARCHAR2(50) := 'REVISION';
205    G_REV_LABEL_DB_COL          VARCHAR2(50) := 'REVISION_LABEL';
206    G_REV_DESCRIPTION_DB_COL    VARCHAR2(50) := 'DESCRIPTION';
207    G_REV_REASON_DB_COL         VARCHAR2(50) := 'REVISION_REASON';
208    G_REV_LC_ID_DB_COL          VARCHAR2(50) := 'LIFECYCLE_ID';
209    G_REV_LC_PHASE_ID_DB_COL    VARCHAR2(50) := 'CURRENT_PHASE_ID';
210    G_REV_IMPL_DATE_DB_COL      VARCHAR2(50) := 'IMPLEMENTATION_DATE';
211    G_REV_EFF_DATE_DB_COL       VARCHAR2(50) := 'EFFECTIVITY_DATE';
212 
213    -----------------------------------------------------------------------
214    -- Using following Columns in EGO_BULKLOAD_INTF as buffer columns to --
215    -- store item attributes information, to be retrieved later :        --
216    -- 1. While inserting in MTL_SYSTEM_ITEMS_INTERFACE.                 --
217    -- 2. While querying the errors page.                                --
218    -----------------------------------------------------------------------
219    -- used for all value set conversions as the user enters the display
220    -- value which will be converted into internal value.
221    G_VAL_SET_CONV_ERR_COL           VARCHAR2(50) := 'C_INTF_ATTR231';
222    --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
223    G_CONVERSIONS_EBI_COL            VARCHAR2(50) := 'C_INTF_ATTR232';
224    G_SECONDARY_DEF_IND_EBI_COL      VARCHAR2(50) := 'C_INTF_ATTR233';
225    G_ONT_PRICING_QTY_SRC_EBI_COL    VARCHAR2(50) := 'C_INTF_ATTR236';
226    G_SECONDARY_UOM_CODE_EBI_COL     VARCHAR2(50) := 'C_INTF_ATTR237';
227    G_TRACKING_QTY_IND_EBI_COL       VARCHAR2(50) := 'C_INTF_ATTR238';
228    --Bug: 3969593 End
229    G_ITEM_NUMBER_EBI_COL            VARCHAR2(50) := 'C_INTF_ATTR240';
230    G_ORG_CODE_EBI_COL               VARCHAR2(50) := 'C_INTF_ATTR241';
231    G_REVISION_CODE_EBI_COL          VARCHAR2(50) := 'C_INTF_ATTR242';
232    G_ITEM_CATALOG_EBI_COL           VARCHAR2(50) := 'C_INTF_ATTR243';
233    G_ITEM_CATALOG_NAME_EBI_COL      VARCHAR2(50) := 'C_INTF_ATTR244';
234    G_PRIMARY_UOM_EBI_COL            VARCHAR2(50) := 'C_INTF_ATTR245';
235    G_LIFECYCLE_EBI_COL              VARCHAR2(50) := 'C_INTF_ATTR246';
236    G_LIFECYCLE_PHASE_EBI_COL        VARCHAR2(50) := 'C_INTF_ATTR247';
237    G_USER_ITEM_TYPE_EBI_COL         VARCHAR2(50) := 'C_INTF_ATTR248';
238    G_BOM_ITEM_TYPE_EBI_COL          VARCHAR2(50) := 'C_INTF_ATTR249';
239    G_ENG_ITEM_FLAG_EBI_COL          VARCHAR2(50) := 'C_INTF_ATTR250';
240    G_DESCRIPTION_EBI_COL            VARCHAR2(50) := 'DESCRIPTION1';  -- Bug: 3778006
241      ----------------------------
242      -- Introduced for 11.5.10 --
243      ----------------------------
244    G_ERR_LOGFILE_COL                VARCHAR2(50) := 'C_INTF_ATTR239';
245    l_inventory_item_status_col      VARCHAR2(50) := NULL;  --Rathna MLS Status
246    l_trade_item_descriptor_col      VARCHAR2(50) := NULL;  --R12C Pack Changes
247 
248    -----------------------------------------
249    -- R12 - GTIN needs to be populated
250    -- in MTL_SYSTEM_ITEMS_INTERFACE table
251    -----------------------------------------
252    G_GTIN_NUM_ATTR_CODE             VARCHAR2(50) := 'GTIN_NUM';
253    G_GTIN_DESC_ATTR_CODE            VARCHAR2(50) := 'GTIN_DESC';
254    G_GTIN_NUM_DB_COL                VARCHAR2(50) := 'GLOBAL_TRADE_ITEM_NUMBER';
255    G_GTIN_DESC_DB_COL               VARCHAR2(50) := 'GTIN_DESCRIPTION';
256 
257    --------------------------------------------------------------------------
258    -- Choosing Err Status for MSII that dont conflict with other statuses. --
259    -- These are intermediate error statuses, later on will be changed to   --
260    -- status '3' (Error status in MSII)                                    --
261    --------------------------------------------------------------------------
262    G_ITEM_CATALOG_NAME_ERR_STS      NUMBER := 1000001;
263    G_PRIMARY_UOM_ERR_STS            NUMBER := 1000002;
264    G_LIFECYCLE_ERR_STS              NUMBER := 1000003;
265    G_LIFECYCLE_PHASE_ERR_STS        NUMBER := 1000004;
266    G_USER_ITEM_TYPE_ERR_STS         NUMBER := 1000005;
267    G_BOM_ITEM_TYPE_ERR_STS          NUMBER := 1000006;
268    G_ENG_ITEM_FLAG_ERR_STS          NUMBER := 1000007;
269    G_DESCRIPTION_ERR_STS            NUMBER := 1000008;  -- Bug: 3778006
270    --Bug: 3969593 Adding new 11.5.10 Primary Attrs: bEGIN
271    G_CONVERSIONS_ERR_STS            NUMBER := 1000009;
272    G_SECONDARY_DEF_IND_ERR_STS      NUMBER := 1000010;
273    G_ONT_PRICING_QTY_SRC_ERR_STS    NUMBER := 1000011;
274    G_SECONDARY_UOM_CODE_ERR_STS     NUMBER := 1000012;
275    G_TRACKING_QTY_IND_ERR_STS       NUMBER := 1000013;
276    G_INV_ITEM_STATUS_ERR_STS        NUMBER := 1000014;--Rathna MLS STatus
277    --Bug: 3969593 End
278    G_VS_INVALID_ERR_STS             NUMBER := 1000015;
279    --R12C Packs changes for Trade Item Descriptor
280    G_TRADE_ITEM_DESC_ERR_STS        NUMBER := 1000016;
281 
282    -----------------------------------------------------
283    -- Global variables used in Concurrent Program.    --
284    -----------------------------------------------------
285    G_USER_ID         NUMBER  :=  -1;
286    G_LOGIN_ID        NUMBER  :=  -1;
287    G_PROG_APPID      NUMBER  :=  -1;
288    G_PROG_ID         NUMBER  :=  -1;
289    G_REQUEST_ID      NUMBER  :=  -1;
290 
291      ----------------------------------------------------------
292    -- Define Exceptions.  Error numbers are in the range   --
293    -- of negative integers  -20000 to -20999               --
294    ----------------------------------------------------------
298    PRAGMA EXCEPTION_INIT(G_SEGMENT_SEQ_INVALID, -20000);
295    G_SEGMENT_SEQ_INVALID    EXCEPTION;
296    G_DATA_TYPE_INVALID      EXCEPTION;
297 
299    PRAGMA EXCEPTION_INIT(G_DATA_TYPE_INVALID, -20001);
300  -----------------------------------------------------------------
301  -- Write Debug statements to Log using Error Handler procedure --
302  -----------------------------------------------------------------
303 PROCEDURE Write_Debug (p_msg  IN  VARCHAR2) IS
304 
305 BEGIN
306   IF FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
307     FND_FILE.put_line(which => FND_FILE.LOG
308                      ,buff  => 'EGO_ITEM_BULKLOAD_PKG: '||p_msg);
309 
310   END IF;
311   -- NOTE: No need to check for profile now, as Error_Handler checks
312   --       for Error_Handler.Get_Debug = 'Y' before writing to Debug Log.
313   -- If Profile set to TRUE --
314   -- IF (G_DEBUG = 1) THEN
315   -- Error_Handler.Write_Debug('['||TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS')||'] '|| p_msg);
316   -- END IF;
317 EXCEPTION
318   WHEN OTHERS THEN
319     NULL;
320 END Write_Debug;
321 
322  ----------------------------------------------------------
323  -- Write to Concurrent Log                              --
324  ----------------------------------------------------------
325 
326 PROCEDURE Developer_Debug (p_msg  IN  VARCHAR2) IS
327  l_err_msg VARCHAR2(240);
328 BEGIN
329 
330   IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
331     FND_FILE.put_line(which => FND_FILE.LOG
332                      ,buff  => 'EGO_ITEM_BULKLOAD_PKG: '||p_msg);
333   END IF;
334 
335 EXCEPTION
336   WHEN OTHERS THEN
337     NULL;
338 END Developer_Debug;
339 
340 PROCEDURE SetGobals IS
341 BEGIN
342   -----------------------------------------------------------------------
343   -- the values are chosen from the FND_GLOBALS
344   -----------------------------------------------------------------------
345   G_USER_ID    := NVL(FND_GLOBAL.user_id,-1);
346   G_LOGIN_ID   := NVL(FND_GLOBAL.login_id,-1);
347   G_PROG_APPID := NVL(FND_GLOBAL.prog_appl_id,-1);
348   G_PROG_ID    := NVL(FND_GLOBAL.conc_program_id,-1);
349   G_REQUEST_ID := NVL(FND_GLOBAL.conc_request_id,-1);
350 END;
351 
352  ----------------------------------------------------------
353  -- Internal procedure to open Debug Session.            --
354  ----------------------------------------------------------
355 PROCEDURE open_debug_session_internal IS
356 
357   CURSOR c_get_utl_file_dir IS
358      SELECT VALUE
359       FROM V$PARAMETER
360       WHERE NAME = 'utl_file_dir';
361 
362   --local variables
363   l_log_output_dir       VARCHAR2(512);
364   l_log_return_status    VARCHAR2(99);
365   l_errbuff              VARCHAR2(999);
366 BEGIN
367 
368   Error_Handler.initialize();
369   Error_Handler.set_bo_identifier(G_BO_IDENTIFIER);
370 
371   ---------------------------------------------------------------------------------
372   -- Commented on 12/17/2003 (PPEDDAMA). Open_Debug_Session should set the value
373   -- appropriately, so that when the Debug Session is successfully opened :
374   -- will return Error_Handler.Get_Debug = 'Y', else Error_Handler.Get_Debug = 'N'
375   ---------------------------------------------------------------------------------
376   -- Error_Handler.Set_Debug('Y');
377 
378   OPEN c_get_utl_file_dir;
379   FETCH c_get_utl_file_dir INTO l_log_output_dir;
380   --developer_debug('UTL_FILE_DIR : '||l_log_output_dir);
381   IF c_get_utl_file_dir%FOUND THEN
382     ------------------------------------------------------
383     -- Trim to get only the first directory in the list --
384     ------------------------------------------------------
385     IF INSTR(l_log_output_dir,',') <> 0 THEN
386       l_log_output_dir := SUBSTR(l_log_output_dir, 1, INSTR(l_log_output_dir, ',') - 1);
387       --developer_debug('Log Output Dir : '||l_log_output_dir);
388     END IF;
389 
390     G_ERROR_FILE_NAME := G_ERROR_TABLE_NAME||'_'||to_char(SYSDATE, 'DDMONYYYY_HH24MISS')||'.err';
391     --developer_debug('Trying to open the Error File => '||G_ERROR_FILE_NAME);
392 
393     -----------------------------------------------------------------------
394     -- To open the Debug Session to write the Debug Log.                 --
395     -- This sets Debug value so that Error_Handler.Get_Debug returns 'Y' --
396     -----------------------------------------------------------------------
397     Error_Handler.Open_Debug_Session(
398       p_debug_filename   => G_ERROR_FILE_NAME
399      ,p_output_dir       => l_log_output_dir
400      ,x_return_status    => l_log_return_status
401      ,x_error_mesg       => l_errbuff
402      );
403 
404     ---------------------------------------------------------------
405     -- Introduced for 11.5.10, so that Java Conc Program can     --
406     -- continue writing to the same Error Log File.              --
407     ---------------------------------------------------------------
408     G_ERRFILE_PATH_AND_NAME := l_log_output_dir||'/'||G_ERROR_FILE_NAME;
409 
410     developer_debug(' Log file location --> '||l_log_output_dir||'/'||G_ERROR_FILE_NAME ||' created with status '|| l_log_return_status);
411 
412     IF (l_log_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
413        developer_debug('Unable to open error log file. Error => '||l_errbuff);
414     END IF;
415 
416   END IF;--IF c_get_utl_file_dir%FOUND THEN
417   -- Bug : 4099546
421 
418   CLOSE c_get_utl_file_dir;
419 END open_debug_session_internal;
420 
422  -----------------------------------------------------------
423  -- Open the Debug Session, conditionally if the profile: --
424  -- INV Debug Trace is set to TRUE                        --
425  -----------------------------------------------------------
426 PROCEDURE Open_Debug_Session IS
427 
428 BEGIN
429   ----------------------------------------------------------------
430   -- Open the Debug Log Session, only if Profile is set to TRUE --
431   ----------------------------------------------------------------
432   IF (G_DEBUG = 1) THEN
433 
434    ----------------------------------------------------------------------------------
435    -- Opens Error_Handler debug session, only if Debug session is not already open.
436    -- Suggested by RFAROOK, so that multiple debug sessions are not open PER
437    -- Concurrent Request.
438    ----------------------------------------------------------------------------------
439    IF (Error_Handler.Get_Debug <> 'Y') THEN
440      Open_Debug_Session_Internal;
441    END IF;
442 
443   END IF;
444 
445 END Open_Debug_Session;
446 
447  -----------------------------------------------------------------
448  -- Close the Debug Session, only if Debug is already Turned ON --
449  -----------------------------------------------------------------
450 PROCEDURE Close_Debug_Session IS
451 
452 BEGIN
453    -----------------------------------------------------------------------------
454    -- Close Error_Handler debug session, only if Debug session is already open.
455    -----------------------------------------------------------------------------
456    IF (Error_Handler.Get_Debug = 'Y') THEN
457      Error_Handler.Close_Debug_Session;
458    END IF;
459 
460 END Close_Debug_Session;
461 
462  -----------------------------------------------------------------
463  -- Replace all Single Quote to TWO Single Quotes, for Escaping --
464  -- NOTE: Used while inserting Strings using Dynamic SQL.       --
465  -----------------------------------------------------------------
466 FUNCTION Escape_Single_Quote (p_String IN  VARCHAR2)
467   RETURN VARCHAR2 IS
468 
469 BEGIN
470 
471    IF (p_String IS NOT NULL) THEN
472      ---------------------------------------------------
473      -- Replace all Single Quotes to 2 Single Quotes  --
474      ---------------------------------------------------
475      RETURN REPLACE(p_String, '''', '''''');
476    ELSE
477      ----------------------------------------------
478      -- Return NULL, if the String is NULL or '' --
479      ----------------------------------------------
480      RETURN NULL;
481    END IF;
482 
483 END Escape_Single_Quote;
484 
485 PROCEDURE delete_records_from_MSII (p_set_process_id  IN NUMBER) IS
486 
487   TYPE char_tbl_type IS TABLE OF VARCHAR2(240);
488 
489   l_dyn_sql              VARCHAR2(32767) := '';
490   l_column_name     char_tbl_type;
491   l_rows_processed  NUMBER;
492   l_column_list         VARCHAR2(32767) := '';
493 
494 BEGIN
495    -----------------------------------------------------------------------
496    --Only in case of Import, and while importing Multi-Row attr group
497    --values : Item, Org, Catalog are NOT NULL, and rest of the base
498    --attributes are NULL. Hence can delete these rows off from MSII.
499    -----------------------------------------------------------------------
500 
501    SELECT COLUMN_NAME
502    BULK COLLECT INTO l_column_name
503    FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME = 'MTL_SYSTEM_ITEMS_INTERFACE'
504    AND COLUMN_NAME NOT IN ('SET_PROCESS_ID',
505                            'TRANSACTION_ID',
506                            'REQUEST_ID',
507                            'PROGRAM_APPLICATION_ID',
508                            'PROGRAM_ID',
509                            'TRANSACTION_TYPE',
510                            'ITEM_NUMBER',
511                            'ORGANIZATION_CODE',
512                            'PROCESS_FLAG',
513                            'SOURCE_SYSTEM_ID',
514                            'SOURCE_SYSTEM_REFERENCE',
515                            'ITEM_CATALOG_GROUP_ID',
516                            'INTERFACE_TABLE_UNIQUE_ID',
517                            'INVENTORY_ITEM_ID',
518                            'ORGANIZATION_ID',
519                            'LAST_UPDATE_DATE',
520                            'LAST_UPDATED_BY',
521                            'CREATION_DATE',
522                            'CREATED_BY',
523                            'LAST_UPDATE_LOGIN')
524    AND COLUMN_NAME NOT LIKE 'SEGMENT%'
525    AND COLUMN_NAME NOT LIKE 'GLOBAL_ATTRIBUTE%'
526    AND COLUMN_NAME NOT LIKE 'ATTRIBUTE%';
527 
528    l_rows_processed := SQL%ROWCOUNT;
529 
530    IF l_rows_processed > 0 THEN
531      FOR l_row_index IN 1..l_rows_processed LOOP
532        l_column_list := l_column_list || l_column_name(l_row_index) || ' IS NULL AND ';
533      END LOOP;
534      l_column_list := SUBSTR(l_column_list,1,length(l_column_list)-4);
535    END IF;
536 
537    l_dyn_sql := '';
538    l_dyn_sql := l_dyn_sql || ' DELETE MTL_SYSTEM_ITEMS_INTERFACE MSII ' ;
539    l_dyn_sql := l_dyn_sql || ' WHERE ';
540    l_dyn_sql := l_dyn_sql || ' ( ';
541    l_dyn_sql := l_dyn_sql ||    ' (ITEM_NUMBER IS NOT NULL AND ORGANIZATION_CODE     IS NOT NULL ) ';
542    l_dyn_sql := l_dyn_sql ||    ' OR ';
546    l_dyn_sql := l_dyn_sql || ' ) ';
543    l_dyn_sql := l_dyn_sql ||    ' ( SOURCE_SYSTEM_REFERENCE  IS NOT NULL AND SOURCE_SYSTEM_ID IS NOT NULL ) ';  --for non-PDH Batch
544    l_dyn_sql := l_dyn_sql ||    ' OR ';
545    l_dyn_sql := l_dyn_sql ||    ' (DESCRIPTION IS NULL AND SOURCE_SYSTEM_REFERENCE IS NULL AND SOURCE_SYSTEM_REFERENCE_DESC IS NULL ) ';
547    l_dyn_sql := l_dyn_sql || ' AND ';
548    l_dyn_sql := l_dyn_sql || ' ( ' ||  l_column_list  || ' ) ';
549    l_dyn_sql := l_dyn_sql || ' AND SET_PROCESS_ID = :SET_PROCESS_ID_1 ';
550 
551    ------------------------------------------------------------------------------------------------
552    -- Fix for 11.5.10: Including PROCESS_FLAG status during this DELETE operation.
553    --
554    -- When ERROR happens during PRIMARY_UOM_CODE processing (NOTE: This is the first
555    -- significant Value-to-ID conversion) then MSII.PROCESS_FLAG is set to something
556    -- other than 1. Because of this, the subsequent transfer of the Data from EBI to MSII
557    -- doesnot happen (as all SQLs check for EBI, MSII Process St atus to be 1 for transfer).
558    -- So, this DELETE will go through successfully, as all the columns are NULL (other than
559    -- ITEM_NUMBER, ORGANIZATION_CODE.)
560    -- Then EBI stays in PROCESS_STATUS = 1, which is later converted to 7 in Item_intf_completion.
561    --
562    -- Because of this User-Defined attrs for those rows are ERRONEOUSLY picked and processed.
563    ------------------------------------------------------------------------------------------------
564    l_dyn_sql := l_dyn_sql || ' AND PROCESS_FLAG = :PROCESS_STATUS_1 '; --Bug 3763665
565    l_dyn_sql := l_dyn_sql || ' AND ( ';
566    l_dyn_sql := l_dyn_sql || '  EXISTS ( ';   -- there exists a row where item is being Created or updated in the same request
567    l_dyn_sql := l_dyn_sql ||    ' SELECT ''X'' ';
568    l_dyn_sql := l_dyn_sql ||    ' FROM MTL_SYSTEM_ITEMS_INTERFACE MSI ';
569    l_dyn_sql := l_dyn_sql ||    ' WHERE MSI.DESCRIPTION IS NOT NULL ';
570    l_dyn_sql := l_dyn_sql ||    ' AND ((MSI.ITEM_NUMBER IS NULL AND MSII.ITEM_NUMBER IS NULL) OR (MSI.ITEM_NUMBER = MSII.ITEM_NUMBER))';
571    l_dyn_sql := l_dyn_sql ||    ' AND SET_PROCESS_ID = :SET_PROCESS_ID_2 ';
572    l_dyn_sql := l_dyn_sql ||    ' AND PROCESS_FLAG = :PROCESS_STATUS_2 ';
573    l_dyn_sql := l_dyn_sql ||    ' ) ';
574    l_dyn_sql := l_dyn_sql || ' OR EXISTS( ';
575    l_dyn_sql := l_dyn_sql ||    ' SELECT ''X'' ';
576    l_dyn_sql := l_dyn_sql ||    ' FROM MTL_SYSTEM_ITEMS_B MSI ';
577    l_dyn_sql := l_dyn_sql ||    ' WHERE  MSII.INVENTORY_ITEM_ID  = MSI.INVENTORY_ITEM_ID ';
578    l_dyn_sql := l_dyn_sql ||    ' AND MSII.ORGANIZATION_ID = MSI.ORGANIZATION_ID ';
579    l_dyn_sql := l_dyn_sql ||    ' ) ';-- End Bug 3763665
580    l_dyn_sql := l_dyn_sql || ' ) ';
581    Write_Debug(' DELETE MSII sql: '||l_dyn_sql);
582    IF (l_column_list IS NOT NULL) THEN
583      EXECUTE IMMEDIATE l_dyn_sql USING p_set_process_id,G_PROCESS_STATUS,p_set_process_id,G_PROCESS_STATUS;
584    END IF;
585    Write_Debug('delete_records_from_MSII : NEW Deleted redundant / unnecessary rows from MSII');
586 EXCEPTION
587   WHEN OTHERS THEN
588     RAISE;
589 END delete_records_from_MSII;
590  -----------------------------------------------------------------------
591  -- Fix for Bug# 3970069.
592  -- Insert into MTL_INTERFACE_ERRORS through autonomous transaction
593  -- commit. Earlier for any exception during Java Conc Program's
594  -- AM.commit(), the errors wouldnot get logged. By following Autonomous
595  -- Transaction block, that issue gets resolved.
596  -----------------------------------------------------------------------
597  PROCEDURE Insert_Mtl_Intf_Err(  p_transaction_id       IN  VARCHAR2
598                                , p_bo_identifier        IN  VARCHAR2
599                                , p_error_entity_code    IN  VARCHAR2
600                                , p_error_table_name     IN  VARCHAR2
601                                , p_error_msg            IN  VARCHAR2
602                                ) IS
603 
604  PRAGMA AUTONOMOUS_TRANSACTION;
605 
606  BEGIN
607    SetGobals();
608 
609    INSERT INTO MTL_INTERFACE_ERRORS
610    ( ORGANIZATION_ID
611      , UNIQUE_ID
612      , LAST_UPDATE_DATE
613      , LAST_UPDATED_BY
614      , CREATION_DATE
615      , CREATED_BY
616      , LAST_UPDATE_LOGIN
617      , TABLE_NAME
618      , MESSAGE_NAME
619      , COLUMN_NAME
620      , REQUEST_ID
621      , PROGRAM_APPLICATION_ID
622      , PROGRAM_ID
623      , PROGRAM_UPDATE_DATE
624      , ERROR_MESSAGE
625      , TRANSACTION_ID
626      , ENTITY_IDENTIFIER
627      , BO_IDENTIFIER)
628    VALUES
629    ( NULL
630      , NULL
631      , SYSDATE
632      , G_USER_ID
633      , SYSDATE
634      , G_USER_ID
635      , G_LOGIN_ID
636      , p_error_table_name
637      , NULL
638      , NULL
639      , G_REQUEST_ID
640      , G_PROG_APPID
641      , G_PROG_ID
642      , SYSDATE
643      , p_error_msg
644      , p_transaction_id
645      , p_error_entity_code
646      , p_bo_identifier
647    );
648 
649    COMMIT;
650 
651  END Insert_Mtl_Intf_Err;
652 
653  -----------------------------------------------------------------------
654  -- Fix for Bug# 3945885.
655  -- Generate Seq Item Numbers, for all Rows per ResultFmt_Usage_ID
656  -- where Item Number column are NULL.
657  -----------------------------------------------------------------------
658  PROCEDURE Log_ItemNums_ToBe_Processed(p_resultfmt_usage_id  IN  NUMBER,
662       ' SELECT '|| p_item_num_colname
659                                        p_item_num_colname    IN  VARCHAR2) IS
660 
661    l_item_num_sql    VARCHAR2(10000) :=
663    || ' FROM   EGO_BULKLOAD_INTF '
664    || ' WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
665    --|| '  AND   PROCESS_STATUS = 1';
666 
667    -----------------------------------------------------------------------
668    -- Variables used to query Item Number Generation Method
669    -----------------------------------------------------------------------
670    l_item_num_table                 DBMS_SQL.VARCHAR2_TABLE;
671    l_item_num_cursor                INTEGER;
672    l_item_num_exec                  INTEGER;
673    l_item_num_rows_cnt              NUMBER;
674 
675    l_msg                            fnd_new_messages.message_text%TYPE;
676    -----------------------------------------------------------------------
677 
678  BEGIN
679 
680    l_item_num_cursor := DBMS_SQL.OPEN_CURSOR;
681    --Developer_Debug('l_item_num_sql => '||l_item_num_sql);
682 
683    DBMS_SQL.PARSE(l_item_num_cursor, l_item_num_sql, DBMS_SQL.NATIVE);
684 
685    DBMS_SQL.DEFINE_ARRAY(
686                         c           => l_item_num_cursor  -- cursor --
687                       , position    => 1                  -- select position --
688                       , c_tab       => l_item_num_table   -- table of chars --
689                       , cnt         => 10000              -- rows requested --
690                       , lower_bound => 1                  -- start at --
691                        );
692 
693    DBMS_SQL.BIND_VARIABLE(l_item_num_cursor, ':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
694 
695    l_item_num_exec := DBMS_SQL.EXECUTE(l_item_num_cursor);
696    l_item_num_rows_cnt := DBMS_SQL.FETCH_ROWS(l_item_num_cursor);
697 
698    DBMS_SQL.COLUMN_VALUE(l_item_num_cursor, 1, l_item_num_table);
699    -- Bug : 4099546
700    DBMS_SQL.CLOSE_CURSOR(l_item_num_cursor);
701    FND_MESSAGE.SET_NAME('EGO','EGO_NUM_OF_ITEMS_PROCD');
702    l_msg := FND_MESSAGE.GET;
703 
704    Developer_Debug(l_msg||' '||To_char(l_item_num_rows_cnt));
705 
706    FND_MESSAGE.SET_NAME('EGO','EGO_ROW');
707    l_msg := FND_MESSAGE.GET;
708 
709    IF (l_item_num_rows_cnt > 0) THEN
710      FOR i IN 1..l_item_num_rows_cnt LOOP
711        Developer_Debug(l_msg||' ['||i||'] = '||l_item_num_table(i));
712      END LOOP; --end: FOR i IN 1..l_item_num_rows_cnt LOOP
713    END IF; --end: IF (l_item_num_rows_cnt > 0) THEN
714 
715  END Log_ItemNums_ToBe_Processed;
716 
717 -- 5653266 commenting out the code
718 -- this procedure must be shifted to fag end of item_open_interface_process
719 -- in the package EGO_ITEM_OPEN_INTERFACE_PVT and the logging to be changed
720 -- to concurrent log and message must have tokens for item number and org
721 -- discuss with PM before implenenting the above change
722 /***
723  -----------------------------------------------------------------------
724  -- API FOR BUG 4101754                                               --
725  -- THIS API WOULD LOG A MESSAGE IN FOR EVERY SUCCESSFUL ITEM         --
726  -- CREATED                                                           --
727  -----------------------------------------------------------------------
728  PROCEDURE Log_created_Items (REQUEST_ID IN NUMBER)
729  IS
730    l_item_num_sql                   VARCHAR2(10000);
731    l_item_num_table                 DBMS_SQL.VARCHAR2_TABLE;
732    l_transaction_id_table           DBMS_SQL.NUMBER_TABLE;
733    l_item_num_cursor                INTEGER;
734    l_item_num_exec                  INTEGER;
735    l_item_num_rows_cnt              NUMBER;
736    l_msg                            fnd_new_messages.message_text%TYPE;
737    l_token_tbl                      Error_Handler.Token_Tbl_Type;
738 
739  BEGIN
740 
741    l_item_num_sql :=
742       ' SELECT SEGMENT1 , TRANSACTION_ID '
743    || '   FROM MTL_SYSTEM_ITEMS_INTERFACE '
744    || '  WHERE REQUEST_ID = '||REQUEST_ID
745    || '    AND PROCESS_FLAG = '||G_INTF_STATUS_SUCCESS
746    || '    AND TRANSACTION_TYPE = '''||G_CREATE||'''';
747 
748    l_item_num_cursor := DBMS_SQL.OPEN_CURSOR;
749    DBMS_SQL.PARSE(l_item_num_cursor, l_item_num_sql, DBMS_SQL.NATIVE);
750    DBMS_SQL.DEFINE_ARRAY(
751                         c           => l_item_num_cursor
752                       , position    => 1
753                       , c_tab       => l_item_num_table
754                       , cnt         => 10000
755                       , lower_bound => 1
756                        );
757 
758    DBMS_SQL.DEFINE_ARRAY(
759                         c           => l_item_num_cursor
760                       , position    => 2
761                       , n_tab       => l_transaction_id_table
762                       , cnt         => 10000
763                       , lower_bound => 1
764                        );
765 
766    l_item_num_exec := DBMS_SQL.EXECUTE(l_item_num_cursor);
767    l_item_num_rows_cnt := DBMS_SQL.FETCH_ROWS(l_item_num_cursor);
768    DBMS_SQL.COLUMN_VALUE(l_item_num_cursor, 1, l_item_num_table);
769    DBMS_SQL.COLUMN_VALUE(l_item_num_cursor, 2, l_transaction_id_table);
770    DBMS_SQL.CLOSE_CURSOR(l_item_num_cursor);
771    IF (l_item_num_rows_cnt > 0) THEN
772      FOR i IN 1..l_item_num_rows_cnt LOOP
773        Developer_Debug(l_msg||' ['||i||'] = '||l_item_num_table(i));
774        Error_Handler.Add_Error_Message
775             ( p_message_name   => 'EGO_ITEM_CREATION_SUCC'
779             , p_message_type   => 'E'
776             , p_application_id => 'EGO'
777             , p_message_text   => NULL
778             , p_token_tbl      => l_token_tbl
780             , p_row_identifier => l_transaction_id_table(i)
781             , p_table_name     => 'MTL_SYSTEM_ITEMS_INTERFACE'
782             , p_entity_id      => NULL
783             , p_entity_index   => NULL
784             , p_entity_code    => G_ERROR_ENTITY_CODE
785             );
786      END LOOP;
787    END IF;
788 
789  END Log_created_Items;
790 ***/
791 
792 ------------------------------------------------------------------------------
793 --  Fix for Bug# 3945885.
794 --
795 --  API Name:       Get_Seq_Gen_Item_Nums
796 --
797 --  Description:
798 --    API to return a Sequence of Item Numbers, given the ResultFmt_Usage_ID
799 --    and Item Catalog Group ID. Row count returned will be number of Rows per
800 --    ResultFmt_Usage_ID where Item Number column are NULL.
801 ------------------------------------------------------------------------------
802  PROCEDURE Get_Seq_Gen_Item_Nums(p_resultfmt_usage_id       IN  NUMBER,
803                                  p_item_catalog_group_id    IN  NUMBER,
804                                  p_item_num_colname         IN  VARCHAR2,
805                                  x_item_num_tbl             IN OUT NOCOPY EGO_VARCHAR_TBL_TYPE) IS
806 
807 
808    --------------------------------------------------------------------
809    --Fetch the Org IDs in EBI, for which Item Number column is NULL
810    --------------------------------------------------------------------
811    l_org_id_sql    VARCHAR2(10000) :=
812       ' SELECT '
813    || ' INSTANCE_PK2_VALUE     '
814    || ' FROM   EGO_BULKLOAD_INTF '
815    || ' WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID'
816    || '  AND   '|| p_item_num_colname ||' IS NULL '
817    || '  AND   PROCESS_STATUS = 1';
818 
819 
820    -----------------------------------------------------------------------
821    -- Variables used to query Item Number Generation Method
822    -----------------------------------------------------------------------
823    l_org_id_table                 DBMS_SQL.VARCHAR2_TABLE;
824    l_org_id_cursor                INTEGER;
825    l_org_id_exec                  INTEGER;
826    l_org_id_rows_cnt              NUMBER;
827 
828    l_item_num_tbl                 EGO_VARCHAR_TBL_TYPE;
829    l_exists                       VARCHAR2(1);
830    l_can_itemnum_gen              BOOLEAN;
831    l_itemgen_rownum               NUMBER;
832    l_new_itemgen_sql              VARCHAR2(1000);
833    -----------------------------------------------------------------------
834 
835  BEGIN
836 
837    l_org_id_cursor := DBMS_SQL.OPEN_CURSOR;
838    --Write_Debug('l_org_id_sql => '||l_org_id_sql);
839 
840    DBMS_SQL.PARSE(l_org_id_cursor, l_org_id_sql, DBMS_SQL.NATIVE);
841 
842    DBMS_SQL.DEFINE_ARRAY(
843                         c           => l_org_id_cursor  -- cursor --
844                       , position    => 1                -- select position --
845                       , c_tab       => l_org_id_table   -- table of chars --
846                       , cnt         => 10000            -- rows requested --
847                       , lower_bound => 1                -- start at --
848                        );
849 
850    DBMS_SQL.BIND_VARIABLE(l_org_id_cursor, ':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
851 
852    l_org_id_exec := DBMS_SQL.EXECUTE(l_org_id_cursor);
853    l_org_id_rows_cnt := DBMS_SQL.FETCH_ROWS(l_org_id_cursor);
854 
855    DBMS_SQL.COLUMN_VALUE(l_org_id_cursor, 1, l_org_id_table);
856 
857    Write_Debug('Number of rows where ITEM_NUMBER is NULL => '||To_char(l_org_id_rows_cnt));
858 
859    IF (l_org_id_rows_cnt > 0) THEN
860 
861      EGO_ITEM_PVT.Get_Seq_Gen_Item_Nums
862                          (
863                            p_item_catalog_group_id  => p_item_catalog_group_id
864                           ,p_org_id_tbl             => l_org_id_table
865                           ,x_item_num_tbl           => x_item_num_tbl
866                           );
867    ELSE
868      x_item_num_tbl := NULL;
869    END IF; --end: IF (l_org_id_rows_cnt > 0) THEN
870    --  Bug : 4099546
871    DBMS_SQL.CLOSE_CURSOR(l_org_id_cursor);
872  END Get_Seq_Gen_Item_Nums;
873 
874 
875  ---------------------------------------------------------------------------
876  -- To return the Display value of Attribute, given the Attribute Code.   --
877  ---------------------------------------------------------------------------
878 FUNCTION  get_attr_display_name
879           (
880              p_attribute_code    IN  EGO_RESULTS_FORMAT_COLUMNS_V.ATTRIBUTE_CODE%TYPE
881           )
882           RETURN VARCHAR2 IS
883 
884   l_attr_group_id   NUMBER;
885   l_attr_id         NUMBER;
886   l_temp_str        VARCHAR2(30); --R12C UOM Changes
887   l_attr_group_disp_name   EGO_ATTR_GROUPS_V.ATTR_GROUP_DISP_NAME%TYPE;
888   l_attr_disp_name         EGO_ATTRS_V.ATTR_DISPLAY_NAME%TYPE;
889 
890    CURSOR c_attr_group_disp_name(p_attr_group_id  IN NUMBER) IS
891      SELECT  attr_group_disp_name
892      FROM    ego_attr_groups_v
893      WHERE   attr_group_id = p_attr_group_id;
894 
895    CURSOR c_attr_disp_name(p_attr_id  IN NUMBER) IS
896      SELECT  attr_display_name
897      FROM    ego_attrs_v
898      WHERE   attr_id = p_attr_id;
899 
900 BEGIN
904 
901 
902    l_attr_group_id := To_Number(SUBSTR(p_attribute_code, 1, INSTR(p_attribute_code, '$$') - 1));
903       l_temp_str := SUBSTR(p_attribute_code, INSTR(p_attribute_code, '$$')+2);
905    IF (INSTR(l_temp_str, '$$UOM') > 0) THEN
906         l_temp_str:= SUBSTR(l_temp_str, 1, INSTR(l_temp_str, '$$')-1); --R12C UOM Changes
907    END IF;
908 
909    l_attr_id := To_Number(l_temp_str);
910 
911     OPEN c_attr_group_disp_name(l_attr_group_id);
912     FETCH c_attr_group_disp_name INTO l_attr_group_disp_name;
913     IF c_attr_group_disp_name%NOTFOUND THEN
914       l_attr_group_disp_name := NULL;
915     END IF;
916     CLOSE c_attr_group_disp_name;
917 
918     OPEN c_attr_disp_name(l_attr_id);
919     FETCH c_attr_disp_name INTO l_attr_disp_name;
920     IF c_attr_disp_name%NOTFOUND THEN
921       l_attr_disp_name := NULL;
922     END IF;
923     CLOSE c_attr_disp_name;
924 
925     IF (l_attr_group_disp_name IS NULL OR
926         l_attr_disp_name IS NULL) THEN
927        RETURN NULL;
928      ELSE
929        RETURN l_attr_group_disp_name||'.'||l_attr_disp_name;
930     END IF;
931 
932 END;
933 
934 
935  -------------------------------------------------------------
936  -- Delete all the earlier loads from the same spreadsheet. --
937  -------------------------------------------------------------
938 
939 PROCEDURE setup_buffer_intf_table(
940           p_resultfmt_usage_id IN NUMBER
941           ) IS
942 
943   --------------------------------------------
944   -- Long Dynamic SQL String
945   --------------------------------------------
946   l_dyn_sql                VARCHAR2(10000);
947 
948 BEGIN
949 
950    --Delete all the earlier loads from the same spreadsheet.
951    DELETE EGO_BULKLOAD_INTF
952      WHERE RESULTFMT_USAGE_ID = p_resultfmt_usage_id
953      AND   PROCESS_STATUS <> 1;
954 
955 
956    Write_Debug('Setting up the Error Debug File, so that Java Conc Program can use it.');
957    ---------------------------------------------------------------
958    -- Introduced for 11.5.10, so that Java Conc Program can     --
959    -- continue writing to the same Error Log File.              --
960    ---------------------------------------------------------------
961    l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF EBI';
962    l_dyn_sql := l_dyn_sql || '  SET '||G_ERR_LOGFILE_COL ||' = ''' || G_ERRFILE_PATH_AND_NAME ||'''';
963    l_dyn_sql := l_dyn_sql || ' WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
964    l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1                     ';
965      --------------------------------------------------------------
966      -- Updates only 1 row that matches the criterion, for       --
967      -- performance reasons.                                     --
968      --------------------------------------------------------------
969    l_dyn_sql := l_dyn_sql || ' AND    ROWNUM < 2                            ';
970 
971 
972    Write_Debug(l_dyn_sql);
973 
974    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
975 
976 END setup_buffer_intf_table;
977 
978 
979  -------------------------------------------------------------
980  -- Sets if the Batch that is being processed in PDH or Not --
981  -------------------------------------------------------------
982 
983 PROCEDURE setup_batch_info  IS
984   l_source_system_id          NUMBER;
985 BEGIN
986 
987    Write_Debug('Setting up the batch info for : ' || G_MSII_SET_PROCESS_ID);
988 
989    ---------------------------------------------------------------
990    -- Introduced for R12, so that the rest of the api call can  --
991    -- set the process status/flag accordingly.                  --
992    ---------------------------------------------------------------
993     SELECT source_system_id into l_source_system_id
994     FROM EGO_IMPORT_BATCHES_B
995     WHERE batch_id = G_MSII_SET_PROCESS_ID;
996 
997    IF l_source_system_id = EGO_IMPORT_PVT.Get_PDH_Source_System_Id  THEN
998      G_PDH_BATCH := TRUE;
999      G_PROCESS_STATUS := 1;
1000    ELSE
1001      G_PDH_BATCH := FALSE;
1002      G_PROCESS_STATUS := 0;
1003    END IF;
1004 
1005    Write_Debug('Setting process status to ' || G_PROCESS_STATUS);
1006 
1007   EXCEPTION
1008     WHEN NO_DATA_FOUND THEN
1009      G_PDH_BATCH := TRUE;
1010      G_PROCESS_STATUS := 1;
1011 
1012 END setup_batch_info;
1013 
1014 
1015 -- Bug: 3778006
1016 -------------------------------------------------------------------------
1017 -- Function to get description generation method  for catalog category --
1018 -------------------------------------------------------------------------
1019 FUNCTION get_desc_gen_method(p_catalog_group_id NUMBER) RETURN VARCHAR2
1020 IS
1021   CURSOR c_cat_grp(c_catalog_group_id NUMBER) IS
1022     SELECT ITEM_DESC_GEN_METHOD, ITEM_CATALOG_GROUP_ID, LEVEL
1023     FROM MTL_ITEM_CATALOG_GROUPS_B
1024     WHERE LEVEL > 1
1025     CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID
1026     START WITH ITEM_CATALOG_GROUP_ID = c_catalog_group_id
1027     ORDER BY LEVEL;
1028 
1029   l_desc_gen_method  VARCHAR2(10) := 'U';
1030 BEGIN
1031   IF p_catalog_group_id IS NOT NULL THEN
1032     -----------------------------------------------------------------------
1033     -- Get the description generation method for catalog category itself --
1034     -----------------------------------------------------------------------
1035     SELECT ITEM_DESC_GEN_METHOD into l_desc_gen_method
1039     ------------------------------------------------------------------------
1036     FROM MTL_ITEM_CATALOG_GROUPS_B
1037     WHERE ITEM_CATALOG_GROUP_ID = p_catalog_group_id;
1038 
1040     -- If the generation method is I i.e. inherit from parent, then check --
1041     -- parents till we get something other than I                         --
1042     ------------------------------------------------------------------------
1043     IF NVL(l_desc_gen_method, 'U') = 'I' THEN
1044       FOR i IN c_cat_grp(p_catalog_group_id) LOOP
1045         l_desc_gen_method := i.ITEM_DESC_GEN_METHOD;
1046         IF NVL(l_desc_gen_method, 'U') <> 'I' THEN
1047           EXIT;
1048         END IF;
1049       END LOOP;
1050     END IF;
1051 
1052     ------------------------------------------------------------------------
1053     -- If the generation method is I even for the topmost parent, then    --
1054     -- treat it as U (user entered)                                       --
1055     ------------------------------------------------------------------------
1056     IF  NVL(l_desc_gen_method, 'U') = 'I' THEN
1057       l_desc_gen_method := 'U';
1058     END IF;
1059 
1060   END IF; -- end if p_catalog_group_id is not null
1061 
1062   RETURN l_desc_gen_method;
1063 
1064 EXCEPTION WHEN OTHERS THEN
1065   RETURN 'U';
1066 END get_desc_gen_method;
1067 
1068  ----------------------------------------------------------
1069  --  Populate Item Interface Lines                       --
1070  ----------------------------------------------------------
1071 
1072 PROCEDURE load_item_interface
1073                (
1074                  p_resultfmt_usage_id    IN         NUMBER,
1075                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
1076                  p_set_process_id        IN         NUMBER,
1077                  x_set_process_id        OUT NOCOPY NUMBER,
1078                  x_errbuff               OUT NOCOPY VARCHAR2,
1079                  x_retcode               OUT NOCOPY VARCHAR2
1080                 ) IS
1081 
1082     -- Start OF comments
1083     -- API name  : Populate MSII Item Interface Lines
1084     -- TYPE      : Public (called by Concurrent Program Wrapper API)
1085     -- Pre-reqs  : None
1086     -- FUNCTION  : Populate and Load Item interfance lines in MSII
1087     --
1088 
1089 
1090   ---------------------------------------------------------------
1091   -- To get the Item Base attr columns in the Result Format.
1092   ---------------------------------------------------------------
1093   CURSOR c_item_base_attr_intf_cols (c_resultfmt_usage_id  IN  NUMBER) IS
1094     SELECT attribute_code, intf_column_name
1095     FROM   ego_results_fmt_usages
1096     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
1097      AND attribute_code NOT LIKE '%$$%'
1098      AND attribute_code <> 'APPROVAL_STATUS' -- bug: 3433942
1099      AND attribute_code NOT IN ('SUPPLIER_NAME','SUPPLIER_SITE','SUPPLIER_PRIMARY','SUPPLIER_STATUS','SUPPLIERSITE_STATUS'
1100                                 ,'SUPPLIERSITE_PRIMARY','SUPPLIERSITE_STORE_STATUS','SUPPLIER_NUMBER')
1101      AND attribute_code NOT IN --Segregating Item Base Attributes using this clause
1102      (
1103         select LOOKUP_CODE CODE
1104         from   FND_LOOKUP_VALUES
1105         where  LOOKUP_TYPE = 'EGO_ITEM_REV_HDR_ATTR_GRP'
1106         AND    LANGUAGE = USERENV('LANG')
1107         AND    ENABLED_FLAG = 'Y'
1108      )
1109      AND attribute_code <> G_REV_EFF_DATE_ATTR_CODE --Bug 6139409
1110      ORDER BY intf_column_name;-- Bug: 3340808
1111 
1112   --------------------------------------------------------------------------
1113   -- To check if the given attribute code is a valid BOM Component Column.
1114   --------------------------------------------------------------------------
1115    CURSOR c_bom_comp_col_exists(c_attribute_code  IN  VARCHAR2) IS
1116      SELECT 'x'
1117      FROM   bom_component_columns
1118      WHERE  attribute_code = c_attribute_code
1119       AND   parent_entity = 'ITEM';
1120       --  AND   whereclause IS NOT NULL;
1121 
1122   --------------------------------------------------------------------------
1123   -- To check if the given Set Process ID already exists in MSII.
1124   --------------------------------------------------------------------------
1125   CURSOR c_msii_set_id_exists(c_set_process_id IN NUMBER) IS
1126     SELECT 'x'
1127     FROM mtl_system_items_interface
1128     WHERE set_process_id = c_set_process_id;
1129 
1130 
1131   ---------------------------------------------------------------------
1132   -- Type Declarations
1133   ---------------------------------------------------------------------
1134   TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(256)
1135    INDEX BY BINARY_INTEGER;
1136 
1137                -------------------------
1138                --   local variables   --
1139                -------------------------
1140   l_prod_col_name_tbl         VARCHAR_TBL_TYPE;
1141   l_intf_col_name_tbl         VARCHAR_TBL_TYPE;
1142 
1143   l_prod_col_name             VARCHAR2(256);
1144   l_intf_col_name             VARCHAR2(256);
1145 
1146   ---------------------------------------------------------------------
1147   -- Assuming that the column name will not be more than 30 chars.
1148   ---------------------------------------------------------------------
1149   l_item_number_col        VARCHAR2(50);
1150   l_org_code_col           VARCHAR2(50);
1151   l_item_catalog_name_col  VARCHAR2(50);
1152   l_primary_uom_col        VARCHAR2(50);
1153   l_lifecycle_col          VARCHAR2(50);
1154   l_lifecycle_phase_col    VARCHAR2(50);
1158   l_lifecycle_col_val        VARCHAR2(50);
1155   l_user_item_type_col     VARCHAR2(50);
1156   l_bom_item_type_col      VARCHAR2(50);
1157   l_eng_item_flag_col      VARCHAR2(50);
1159   l_lifecycle_phase_col_val  VARCHAR2(50);
1160   --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
1161   l_conversions_col          VARCHAR2(50);
1162   l_secondary_def_col        VARCHAR2(50);
1163   l_dual_uom_dev_low_col     VARCHAR2(50);
1164   l_dual_uom_dev_high_col    VARCHAR2(50);
1165   l_ont_pricing_qty_src_col  VARCHAR2(50);
1166   l_secondary_uom_code_col   VARCHAR2(50);
1167   l_tracking_qty_ind_col     VARCHAR2(50);
1168   --Bug: 3969593 End
1169 
1170   l_catalog_group_id       VARCHAR2(50);
1171   l_inventory_item_id      MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID%TYPE;
1172 
1173   l_msii_set_process_id    NUMBER;
1174   i                        NUMBER;
1175   l_cursor_select     INTEGER;
1176   l_cursor_execute    INTEGER;
1177 
1178   l_item_number_table   DBMS_SQL.VARCHAR2_TABLE;
1179   l_org_id_table        DBMS_SQL.NUMBER_TABLE;
1180   l_trans_type_table    DBMS_SQL.VARCHAR2_TABLE;
1181   l_trans_id_table      DBMS_SQL.NUMBER_TABLE;
1182 
1183   ---------------------------------------------------------------------
1184   -- This is to store the Sequence Generated Item Numbers.
1185   ---------------------------------------------------------------------
1186 --  l_gen_item_num_tbl    EGO_VARCHAR_TBL_TYPE;
1187 --  l_gen_itemnum_indx    NUMBER;
1188 
1189   l_temp                NUMBER(10) := 1;
1190   l_count               NUMBER := 0;
1191   l_exists              VARCHAR2(2);
1192   l_itemgen_count       NUMBER;
1193 
1194   l_value_to_id_col_exists BOOLEAN := FALSE;
1195   l_bom_col_exists      BOOLEAN := FALSE;
1196   l_bom_prod_col_name   VARCHAR2(50);
1197 
1198   --------------------------------------------
1199   -- Long Dynamic SQL String
1200   --------------------------------------------
1201   l_dyn_sql             VARCHAR2(10000);
1202   l_desc_gen_method     VARCHAR2(10) := 'U'; -- Bug: 3778006
1203   --Bug 4713312
1204   l_col_name            VARCHAR2(40);
1205 
1206 BEGIN
1207 
1208    Write_Debug('About to populate the EBI with Trans IDs');
1209    --------------------------------------------------------------------
1210    --Populate the Transaction IDs for current Result fmt usage ID
1211    --------------------------------------------------------------------
1212    UPDATE ego_bulkload_intf
1213      --The Transaction ID sequence that is used in INVPOPIF package to
1214      --auto-populate Transaction ID in MSII.
1215      SET  transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL
1216    WHERE  resultfmt_usage_id = p_resultfmt_usage_id;
1217 
1218    Write_Debug('Retrieving the Display and INTF cols');
1219    i := 0;
1220    --------------------------------------------------------------------
1221    -- Saving the column names in local table for easy retrieval later.
1222    -- Also save important columns such as Item ID, Org ID etc.,
1223    --------------------------------------------------------------------
1224    FOR c_item_base_attr_intf_rec IN c_item_base_attr_intf_cols
1225      (
1226        p_resultfmt_usage_id
1227       )
1228    LOOP
1229 
1230      l_prod_col_name := c_item_base_attr_intf_rec.attribute_code;
1231      l_intf_col_name := c_item_base_attr_intf_rec.intf_column_name;
1232 
1233      IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_BOM) THEN
1234       OPEN c_bom_comp_col_exists(l_prod_col_name);
1235       FETCH c_bom_comp_col_exists INTO l_exists;
1236        IF c_bom_comp_col_exists%FOUND THEN
1237           l_bom_col_exists := TRUE;
1238        ELSE
1239           l_bom_col_exists := FALSE;
1240        END IF;
1241        CLOSE c_bom_comp_col_exists;
1242      END IF;
1243 
1244 
1245      IF (l_bom_col_exists = TRUE) THEN
1246       Write_Debug('The column: ' || l_prod_col_name || ' and BOM_COL_EXISTS value IS TRUE');
1247      ELSE
1248       Write_Debug('The column: ' || l_prod_col_name || ' and BOM_COL_EXISTS value IS FALSE');
1249      END IF;
1250 
1251      Write_Debug('The caller identity is : '|| p_caller_identifier);
1252 
1253       --------------------------------------------------------------------
1254       -- If the Caller Identifer is G_BOM and the column exists in
1255       -- BOM_COMPONENT_COLUMNS then fetch the Correct prod column
1256       -- name from BOM_COMPONENT_COLUMNS.
1257       --------------------------------------------------------------------
1258      IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_BOM AND
1259          l_bom_col_exists = TRUE AND l_prod_col_name <> G_ITEM_NUMBER)
1260      THEN
1261        SELECT BOM_INTF_COLUMN_NAME INTO l_bom_prod_col_name
1262         FROM BOM_COMPONENT_COLUMNS
1263        WHERE Attribute_Code = l_prod_col_name AND Parent_Entity = 'ITEM';
1264        Write_Debug('The column value from BCC: ' || l_bom_prod_col_name);
1265        IF l_bom_prod_col_name IS NOT NULL THEN
1266          l_prod_col_name := l_bom_prod_col_name;
1267        END IF;
1268        Write_Debug('The column value after getting from BCC: ' || l_prod_col_name);
1269      END IF;
1270 
1271       --------------------------------------------------------------------
1272       -- If the Caller Identifer is G_ITEM, then save the column info.
1273       -- If the Caller Identifer is G_BOM, and the column exists in
1274       -- BOM_COMPONENT_COLUMNS, then save the column info.
1275       --------------------------------------------------------------------
1276      IF (
1280          )
1277          (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM) OR
1278          (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_BOM AND
1279          l_bom_col_exists = TRUE
1281         ) THEN
1282       --------------------------------------------------------------------
1283       --Store the Item Number column name in the Generic Interface
1284       --------------------------------------------------------------------
1285       IF (l_prod_col_name = G_ITEM_NUMBER) THEN
1286         l_item_number_col := l_intf_col_name;
1287         Write_Debug('Item Number : '||l_item_number_col);
1288       --------------------------------------------------------------------
1289       --Store the Organization Code column name in the Generic Interface
1290       --------------------------------------------------------------------
1291       ELSIF (l_prod_col_name = G_ORG_CODE) THEN
1292         l_org_code_col := l_intf_col_name;
1293         Write_Debug('Organization Code : '||l_org_code_col);
1294       ELSE
1295       --------------------------------------------------------------------
1296       --Saving the Rest of column names.
1297       --------------------------------------------------------------------
1298         IF (l_prod_col_name = G_ITEM_CATALOG_GROUP) THEN
1299           l_item_catalog_name_col := l_intf_col_name;
1300         ELSIF (l_prod_col_name = G_PRIMARY_UOM) THEN
1301           l_primary_uom_col := l_intf_col_name;
1302         ELSIF (l_prod_col_name = G_LIFECYCLE) THEN
1303           l_lifecycle_col := l_intf_col_name;
1304         ELSIF (l_prod_col_name = G_LIFECYCLE_PHASE) THEN
1305           l_lifecycle_phase_col := l_intf_col_name;
1306         ELSIF (l_prod_col_name = G_USER_ITEM_TYPE) THEN
1307           l_user_item_type_col := l_intf_col_name;
1308         ELSIF (l_prod_col_name = G_BOM_ITEM_TYPE) THEN
1309           l_bom_item_type_col := l_intf_col_name;
1310         ELSIF (l_prod_col_name = G_ENG_ITEM_FLAG) THEN
1311           l_eng_item_flag_col := l_intf_col_name;
1312         --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
1313         ELSIF (l_prod_col_name = G_CONVERSIONS) THEN
1314           l_conversions_col := l_intf_col_name;
1315         ELSIF (l_prod_col_name = G_SECONDARY_DEF_IND) THEN
1316           l_secondary_def_col := l_intf_col_name;
1317         ELSIF (l_prod_col_name = G_DUAL_UOM_DEV_LOW) THEN
1318           l_dual_uom_dev_low_col := l_intf_col_name;
1319         ELSIF (l_prod_col_name = G_DUAL_UOM_DEV_HIGH) THEN
1320           l_dual_uom_dev_high_col := l_intf_col_name;
1321         ELSIF (l_prod_col_name = G_ONT_PRICING_QTY_SRC) THEN
1322           l_ont_pricing_qty_src_col := l_intf_col_name;
1323         ELSIF (l_prod_col_name = G_SECONDARY_UOM_CODE) THEN
1324           l_secondary_uom_code_col := l_intf_col_name;
1325         ELSIF (l_prod_col_name = G_TRACKING_QTY_IND) THEN
1326           l_tracking_qty_ind_col := l_intf_col_name;
1327         --Bug: 3969593 End
1328         ELSIF (l_prod_col_name = G_INVENTORY_ITEM_STATUS) THEN-- required in error handler
1329           l_inventory_item_status_col := l_intf_col_name;
1330         ELSIF (l_prod_col_name = G_TRADE_ITEM_DESCRIPTOR) THEN
1331         -- R12C Pack Hierarchy Changes for Trade Item Descriptor --
1332           l_trade_item_descriptor_col := l_intf_col_name;
1333         END IF;
1334 
1335         -- R12 - to update GTIN and GTIN description in MTL_SYSTEM_ITEMS_INTERFACE table
1336         IF (l_prod_col_name = G_GTIN_NUM_ATTR_CODE) THEN
1337           l_prod_col_name_tbl(i) := G_GTIN_NUM_DB_COL;
1338         ELSIF (l_prod_col_name = G_GTIN_DESC_ATTR_CODE) THEN
1339           l_prod_col_name_tbl(i) := G_GTIN_DESC_DB_COL;
1340         ELSE
1341           l_prod_col_name_tbl(i) := l_prod_col_name;
1342         END IF;
1343 
1344         l_intf_col_name_tbl(i) := l_intf_col_name;
1345 
1346         Write_Debug('l_prod_col_name_tbl('||i||') : '||l_prod_col_name_tbl(i));
1347         Write_Debug('l_intf_col_name_tbl('||i||') : '||l_intf_col_name_tbl(i));
1348         i := i+1;
1349       END IF; --end: IF (l_prod_col_name = G_ITEM_NUMBER) THEN
1350     END IF; --end: IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM)...
1351    END LOOP;--end: FOR c_item_base_attr_intf_rec..
1352 
1353 
1354    l_value_to_id_col_exists := FALSE;
1355 
1356    -----------------------------------------------------------------------
1357    -- Save all Value-to-ID conversion columns in designated places in EBI.
1358    -----------------------------------------------------------------------
1359    l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1360    l_dyn_sql := l_dyn_sql || ' SET  ';
1361    IF l_item_catalog_name_col IS NOT NULL THEN
1362      l_dyn_sql := l_dyn_sql || G_ITEM_CATALOG_NAME_EBI_COL||' = '||l_item_catalog_name_col|| ' ,';
1363      l_value_to_id_col_exists := TRUE;
1364    END IF;
1365    IF l_primary_uom_col IS NOT NULL THEN
1366      l_dyn_sql := l_dyn_sql || G_PRIMARY_UOM_EBI_COL||' = '||l_primary_uom_col|| ' ,';
1367      l_value_to_id_col_exists := TRUE;
1368    END IF;
1369    IF l_lifecycle_col IS NOT NULL THEN
1370      l_dyn_sql := l_dyn_sql ||G_LIFECYCLE_EBI_COL||' = '||l_lifecycle_col|| ' ,';
1371      l_value_to_id_col_exists := TRUE;
1372    END IF;
1373    IF l_lifecycle_phase_col IS NOT NULL THEN
1374      l_dyn_sql := l_dyn_sql ||G_LIFECYCLE_PHASE_EBI_COL||' = '||l_lifecycle_phase_col|| ' ,';
1375      l_value_to_id_col_exists := TRUE;
1376    END IF;
1377    IF l_user_item_type_col IS NOT NULL THEN
1378      l_dyn_sql := l_dyn_sql ||G_USER_ITEM_TYPE_EBI_COL||' = '||l_user_item_type_col|| ' ,';
1379      l_value_to_id_col_exists := TRUE;
1380    END IF;
1384    END IF;
1381    IF l_bom_item_type_col IS NOT NULL THEN
1382      l_dyn_sql := l_dyn_sql ||G_BOM_ITEM_TYPE_EBI_COL||' = '||l_bom_item_type_col|| ' ,';
1383      l_value_to_id_col_exists := TRUE;
1385    IF l_eng_item_flag_col IS NOT NULL THEN
1386      l_dyn_sql := l_dyn_sql ||G_ENG_ITEM_FLAG_EBI_COL||' = '||l_eng_item_flag_col|| ' ,';
1387      l_value_to_id_col_exists := TRUE;
1388    END IF;
1389    --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
1390    IF l_conversions_col IS NOT NULL THEN
1391      l_dyn_sql := l_dyn_sql ||G_CONVERSIONS_EBI_COL||' = '||l_conversions_col|| ' ,';
1392      l_value_to_id_col_exists := TRUE;
1393    END IF;
1394    IF l_secondary_def_col IS NOT NULL THEN
1395      l_dyn_sql := l_dyn_sql ||G_SECONDARY_DEF_IND_EBI_COL||' = '||l_secondary_def_col|| ' ,';
1396      l_value_to_id_col_exists := TRUE;
1397    END IF;
1398    IF l_ont_pricing_qty_src_col IS NOT NULL THEN
1399      l_dyn_sql := l_dyn_sql ||G_ONT_PRICING_QTY_SRC_EBI_COL||' = '||l_ont_pricing_qty_src_col|| ' ,';
1400      l_value_to_id_col_exists := TRUE;
1401    END IF;
1402    IF l_secondary_uom_code_col IS NOT NULL THEN
1403      l_dyn_sql := l_dyn_sql ||G_SECONDARY_UOM_CODE_EBI_COL||' = '||l_secondary_uom_code_col|| ' ,';
1404      l_value_to_id_col_exists := TRUE;
1405    END IF;
1406    IF l_tracking_qty_ind_col IS NOT NULL THEN
1407      l_dyn_sql := l_dyn_sql ||G_TRACKING_QTY_IND_EBI_COL||' = '||l_tracking_qty_ind_col|| ' ,';
1408      l_value_to_id_col_exists := TRUE;
1409    END IF;
1410    --Bug: 3969593 End
1411    --------------------------------
1412    --Remove the comma at the end.
1413    --------------------------------
1414    l_dyn_sql := Substr(l_dyn_sql, 1, Length(l_dyn_sql)-1);
1415    l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1416    l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
1417    Write_Debug(l_dyn_sql);
1418 
1419    IF l_value_to_id_col_exists = TRUE THEN
1420      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1421      Write_Debug('Updated EBI with Value-to-ID Conversion Cols');
1422    END IF;
1423 
1424    Write_Debug('Updating EBI with Org IDs');
1425    -----------------------------------------------------
1426    -- Update Instance PK2 Value with ORG ID.
1427    -----------------------------------------------------
1428    l_dyn_sql :=              'UPDATE EGO_BULKLOAD_INTF EBI';
1429    l_dyn_sql := l_dyn_sql || '  SET INSTANCE_PK2_VALUE = ';
1430    l_dyn_sql := l_dyn_sql || '  (                                           ';
1431    l_dyn_sql := l_dyn_sql || '    SELECT ORGANIZATION_ID                    ';
1432    l_dyn_sql := l_dyn_sql || '    FROM   MTL_PARAMETERS                     ';
1433    l_dyn_sql := l_dyn_sql || '    WHERE  ORGANIZATION_CODE =EBI.'||l_org_code_col;
1434    l_dyn_sql := l_dyn_sql || '  )                                           ';
1435    l_dyn_sql := l_dyn_sql || 'WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1436    l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1                     ';
1437 
1438    Write_Debug(l_dyn_sql);
1439 
1440    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1441    --------------------------------------------------------------------
1442    -- Fix for Bug# 3945885.
1443    -- Fetch Item Numbers for rows where Item Number is NULL
1444    --------------------------------------------------------------------
1445 -- commenting as a part of 6118945
1446 --
1447 --   IF(G_PDH_BATCH) THEN
1448 --   Get_Seq_Gen_Item_Nums(
1449 --          p_resultfmt_usage_id     => p_resultfmt_usage_id
1450 --         ,p_item_catalog_group_id  => G_CATALOG_GROUP_ID
1451 --         ,p_item_num_colname       => l_item_number_col
1452 --         ,x_item_num_tbl           => l_gen_item_num_tbl
1453 --         );
1454 --   END IF;
1455 --
1456 --   IF (l_gen_item_num_tbl IS NULL) THEN
1457 --     Write_Debug('Item Number *could not* be Generated !!!');
1458 --   ELSE
1459 ----     Write_Debug('Item Numbers *were* be Generated !!! Count => '||l_gen_item_num_tbl.LAST);
1460 --     Write_Debug('Item Numbers *were* be Generated !!! Count => '||l_gen_item_num_tbl.COUNT);
1461 --     --FOR i IN 1..l_gen_item_num_tbl.LAST LOOP
1462 --     --  Write_Debug('Item Number ['||i||'] => '||l_gen_item_num_tbl(i));
1463 --     --END LOOP;
1464 --   END IF;
1465 --
1466 --   Write_Debug('Selecting Org IDs, Item Numbers');
1467 --
1468    -------------------------------------------------------------
1469    --Fetch Organization ID, Item Number in Temp PLSQL tables.
1470    -------------------------------------------------------------
1471     l_dyn_sql :=              'SELECT ';
1472     l_dyn_sql := l_dyn_sql || ' INSTANCE_PK2_VALUE       , ';
1473     l_dyn_sql := l_dyn_sql || l_item_number_col ||'      , ';
1474       ----------------------------------------------------------------------
1475       -- Upcasing the Transaction Type, for fixing Trans Type related bugs
1476       ----------------------------------------------------------------------
1477     l_dyn_sql := l_dyn_sql || ' UPPER(TRANSACTION_TYPE)  , ';
1478     l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID           ';
1479     l_dyn_sql := l_dyn_sql || ' FROM EGO_BULKLOAD_INTF ';
1480     l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1481     l_dyn_sql := l_dyn_sql || ' AND PROCESS_STATUS = 1';
1482 --    l_dyn_sql := l_dyn_sql || '  AND '|| l_item_number_col ||' IS NOT NULL';
1483 
1484     Write_Debug(l_dyn_sql);
1485 
1486     l_cursor_select := DBMS_SQL.OPEN_CURSOR;
1487     DBMS_SQL.PARSE(l_cursor_select, l_dyn_sql, DBMS_SQL.NATIVE);
1488     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 1,l_org_id_table,2500, l_temp);
1492 
1489     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 2,l_item_number_table,2500, l_temp);
1490     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 3,l_trans_type_table,2500, l_temp);
1491     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 4,l_trans_id_table,2500, l_temp);
1493     DBMS_SQL.BIND_VARIABLE(l_cursor_select,':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
1494     l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_select);
1495     Write_Debug('About to start the Loop to fetch Rows');
1496 
1497     -------------------------------------------------------------
1498     -- Separate Index to keep track of Generated Item Numbers.
1499     -------------------------------------------------------------
1500 -- commenting as a part of 6118945
1501 --    IF (l_gen_item_num_tbl IS NOT NULL AND
1502 --        l_gen_item_num_tbl.LAST > 0
1503 --        ) THEN
1504 --      l_gen_itemnum_indx := l_gen_item_num_tbl.FIRST;
1505 --    END IF;
1506 
1507     LOOP
1508       l_count := DBMS_SQL.FETCH_ROWS(l_cursor_select);
1509       DBMS_SQL.COLUMN_VALUE(l_cursor_select, 1, l_org_id_table);
1510       DBMS_SQL.COLUMN_VALUE(l_cursor_select, 2, l_item_number_table);
1511       DBMS_SQL.COLUMN_VALUE(l_cursor_select, 3, l_trans_type_table);
1512       DBMS_SQL.COLUMN_VALUE(l_cursor_select, 4, l_trans_id_table);
1513 
1514       Write_Debug('Retrieved rows => '||To_char(l_count));
1515 
1516       -------------------------------------------------------------
1517       -- Loop to Update the Inventory Item IDs.
1518       -------------------------------------------------------------
1519       FOR i IN l_temp..l_org_id_table.COUNT LOOP --Bug: 4211498 Modified initialize cnter
1520 
1521         Write_Debug('Org ID : '||To_char(l_org_id_table(i)));
1522         Write_Debug('Inv Item Num : '||l_item_number_table(i));
1523         Write_Debug('Transaction Type : '||l_trans_type_table(i));
1524         l_temp := l_org_id_table.COUNT; --Bug:4211498
1525         -------------------------------------------------------------
1526         -- If Inventory Item ID found, then update in EBI.
1527         -------------------------------------------------------------
1528         IF FND_FLEX_KEYVAL.Validate_Segs
1529         (  operation         =>  'FIND_COMBINATION'
1530         ,  appl_short_name   =>  'INV'
1531         ,  key_flex_code     =>  'MSTK'
1532         ,  structure_number  =>  101
1533         ,  concat_segments   =>  l_item_number_table(i)
1534         ,  data_set          =>  l_org_id_table(i)
1535         )
1536         THEN
1537           l_inventory_item_id := FND_FLEX_KEYVAL.combination_id;
1538 
1539           Write_Debug('Inv Item ID : '||To_char(l_inventory_item_id));
1540 
1541           l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1542           l_dyn_sql := l_dyn_sql || ' SET INSTANCE_PK1_VALUE  = '||l_inventory_item_id;
1543           l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = '||l_org_id_table(i);
1544           l_dyn_sql := l_dyn_sql || ' AND '|| l_item_number_col|| ' = :ITEM_NUMBER';
1545           l_dyn_sql := l_dyn_sql || ' AND RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1546           l_dyn_sql := l_dyn_sql || ' AND PROCESS_STATUS = 1  ';
1547 
1548           Write_Debug(l_dyn_sql);
1549           EXECUTE IMMEDIATE l_dyn_sql USING l_item_number_table(i), p_resultfmt_usage_id;
1550         END IF;
1551 
1552 
1553           --l_inventory_item_id := FND_FLEX_KEYVAL.combination_id;
1554 
1555           -------------------------------------------------------------
1556           --Determining if Item Creation.
1557           -------------------------------------------------------------
1558           /**IF (
1559              (l_trans_type_table(i) = G_CREATE) OR
1560              (l_trans_type_table(i) = G_SYNC)
1561              ) THEN**/
1562 
1563             Write_Debug('G_CATALOG_GROUP_ID => '||G_CATALOG_GROUP_ID);
1564             -----------------------------------------------------------------
1565             -- Setting Category ID in case where User enters the Catalog Name
1566             -- from Excel
1567             -- Bug #4652582(RSOUNDAR)
1568             -----------------------------------------------------------------
1569             IF G_CATALOG_GROUP_ID IS NULL THEN
1570               IF l_item_catalog_name_col IS NOT NULL THEN
1571                 l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF EBI';
1572                 l_dyn_sql := l_dyn_sql || ' SET '||G_ITEM_CATALOG_EBI_COL||' = ';
1573                 l_dyn_sql := l_dyn_sql || '( ';
1574                 l_dyn_sql := l_dyn_sql || '    SELECT TO_CHAR(MICG.ITEM_CATALOG_GROUP_ID) ';
1575                 l_dyn_sql := l_dyn_sql || '    FROM   MTL_ITEM_CATALOG_GROUPS_B_KFV MICG  ';
1576                 l_dyn_sql := l_dyn_sql || '    WHERE  MICG.CONCATENATED_SEGMENTS = EBI.'||l_item_catalog_name_col;
1577                 l_dyn_sql := l_dyn_sql || ') ';
1578                 l_dyn_sql := l_dyn_sql || ' WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1579                 l_dyn_sql := l_dyn_sql || ' AND EBI.'||l_item_catalog_name_col||' IS NOT NULL';
1580                 l_dyn_sql := l_dyn_sql || ' AND EBI.PROCESS_STATUS = 1  ';
1581                 Write_Debug(l_dyn_sql);
1582                 EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1583               ELSE -- l_item_catalog_name_col IS NULL
1584                 -- no need to do anything here
1585                 NULL;
1586               END IF; -- l_item_catalog_name_col IS NOT NULL
1587             ELSE  -- G_CATALOG_GROUP_ID IS NOT NULL
1588 /*            Since Item Number can be NULL, removing its reference from the WHERE Clause.
1589 
1590               l_dyn_sql := '';
1591               l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1595               l_dyn_sql := l_dyn_sql || ' SET  '||G_ITEM_CATALOG_EBI_COL||' = '||G_CATALOG_GROUP_ID;
1592               -------------------------------------------------------------
1593               --Storing Catalog Group ID and other imp data in buffer cols
1594               -------------------------------------------------------------
1596               l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = '||l_org_id_table(i);
1597               l_dyn_sql := l_dyn_sql || ' AND '|| l_item_number_col|| ' = :ITEM_NUMBER';
1598               l_dyn_sql := l_dyn_sql || ' AND  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1599               l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
1600 
1601               EXECUTE IMMEDIATE l_dyn_sql USING l_item_number_table(i), p_resultfmt_usage_id;
1602 */
1603               l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1604               -------------------------------------------------------------
1605               --Storing Catalog Group ID and other imp data in buffer cols
1606               -------------------------------------------------------------
1607               l_dyn_sql := l_dyn_sql || ' SET  '||G_ITEM_CATALOG_EBI_COL||' = '||G_CATALOG_GROUP_ID;
1608               -----------------------------------------------------------------
1609               -- Fix for Bug# 3945885.
1610               -- When Item Number in EXCEL is NULL, populate with the Sequence
1611               -- generated Item Number.
1612               -----------------------------------------------------------------
1613 -- commenting as a part of 6118945
1614 --              IF (l_item_number_table(i) IS NULL AND
1615 --                  (l_gen_item_num_tbl IS NOT NULL AND
1616 --                   l_gen_item_num_tbl(l_gen_itemnum_indx) IS NOT NULL)
1617 --                  ) THEN
1618 --
1619 --                l_dyn_sql := l_dyn_sql || ' ,  '||l_item_number_col||' = '''||Escape_Single_Quote(l_gen_item_num_tbl(l_gen_itemnum_indx))||'''';
1620 --                ---------------------------------------------------------------------------
1621 --                -- Increment only if Item Number is used.
1622 --                -- NOTE: If l_gen_itemnum_indx = l_gen_item_num_tbl.LAST and still the loop
1623 --                --       is continuing, then need to fetch few more Seq Gen Item Numbers.
1624 --                ---------------------------------------------------------------------------
1625 --                l_gen_itemnum_indx := l_gen_itemnum_indx + 1;
1626 --
1627 --              END IF;
1628               l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = :ORGANIZATION_ID ';
1629               l_dyn_sql := l_dyn_sql || ' AND  TRANSACTION_ID = :TRANSACTION_ID ';
1630               l_dyn_sql := l_dyn_sql || ' AND  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1631               l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
1632 
1633               Write_Debug(l_dyn_sql);
1634               EXECUTE IMMEDIATE l_dyn_sql USING l_org_id_table(i), l_trans_id_table(i), p_resultfmt_usage_id;
1635 
1636             END IF;--end: IF (l_catalog_group_id IS NOT NULL)
1637 
1638           --END IF; --end: IF (l_trans_type_table(i) = G_CREATE) ..
1639 
1640          --end: IF FND_FLEX_KEVAL..
1641 
1642       END LOOP; --FOR i IN 1..l_org_id_table.COUNT LOOP
1643 
1644       -----------------------------------------------------------------
1645       -- Clear all the tables after use.
1646       -----------------------------------------------------------------
1647  /*Bug:4211498
1648       l_org_id_table.DELETE;
1649       l_item_number_table.DELETE;
1650       l_trans_type_table.DELETE;
1651       l_trans_id_table.DELETE;
1652 */
1653       -----------------------------------------------------------------
1654       -- For the final batch of records, either it will be 0 or < 2500
1655       -----------------------------------------------------------------
1656       EXIT WHEN l_count <> 2500;
1657 
1658     END LOOP;
1659 
1660     DBMS_SQL.CLOSE_CURSOR(l_cursor_select);
1661 
1662     Write_Debug('Done with Item IDs population.');
1663 
1664     Write_Debug('Populating item number into ego_bulkload_intf for function generated items');
1665     IF G_PDH_BATCH THEN
1666 /***
1667       l_dyn_sql := ' UPDATE ego_bulkload_intf ebi' ||
1668                    ' SET '||l_item_number_col||' = ''$$FG-''||TO_CHAR(transaction_id)'||
1669                    ' ,c_fix_column12 = TO_CHAR(transaction_id)'||
1670                    ' WHERE resultfmt_usage_id = :RESULTFMT_USAGE_ID'||
1671                    ' AND '||G_ITEM_CATALOG_EBI_COL||' IS NOT NULL'||
1672                    ' AND process_status = 1'||
1673                    ' AND 10 < '||
1674                    ' ( SELECT LENGTH ( MIN ('||
1675                          ' CASE WHEN ITEM_NUM_GEN_METHOD = ''F'' '||
1676                                    ' AND (PRIOR ITEM_NUM_GEN_METHOD IS NULL OR PRIOR ITEM_NUM_GEN_METHOD = ''I'') ' ||
1677                               ' THEN LPAD(LEVEL, 8, ''0'')||''XX''||TO_CHAR(item_num_action_id) '||
1678                               ' WHEN item_num_gen_method IN (''U'', ''S'') '||
1679                               ' THEN LPAD(LEVEL, 8, ''0'')||''XX'' '||
1680                               ' ELSE NULL ' ||
1681                               ' END        )'||
1682                                    ' )'||
1683                       ' FROM MTL_ITEM_CATALOG_GROUPS_B '||
1684                       ' CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID ';
1685 ***/
1686       --
1687       -- R12C changes Tag_Function_Gen_Item_Nums with item_num as $$FG-transaction_id
1688       -- populate item number col if null but always set the source system reference
1689       --
1690       l_dyn_sql := ' UPDATE ego_bulkload_intf ebi' ||
1694                    ' AND '||G_ITEM_CATALOG_EBI_COL||' IS NOT NULL'||
1691                    ' SET '||l_item_number_col||' = NVL( '||l_item_number_col||', ''$$FG-''||TO_CHAR(transaction_id) )'||
1692                    ' ,c_fix_column12 = TO_CHAR(transaction_id)'||
1693                    ' WHERE resultfmt_usage_id = :RESULTFMT_USAGE_ID'||
1695                    ' AND UPPER(ebi.transaction_type) IN (''CREATE'',''SYNC'') '||
1696                    ' AND process_status = 1'||
1697                    ' AND ''F'' = '||
1698                    ' ( SELECT item_num_gen_method'||
1699                       ' FROM mtl_item_catalog_groups_b '||
1700                       ' WHERE NVL(item_num_gen_method,''I'') IN (''U'',''S'', ''F'') '||
1701                       ' AND ROWNUM = 1 '||
1702                       ' CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID';
1703       IF G_CATALOG_GROUP_ID IS NULL THEN
1704         l_dyn_sql := l_dyn_sql || ' START WITH ITEM_CATALOG_GROUP_ID = ebi.'||G_ITEM_CATALOG_EBI_COL;
1705       ELSE
1706         l_dyn_sql := l_dyn_sql || ' START WITH ITEM_CATALOG_GROUP_ID = :CATALOG_GROUP_ID';
1707       END IF;
1708       l_dyn_sql := l_dyn_sql ||' )';
1709       Write_Debug(' SQL to generate function generated item numbers: '||l_dyn_sql);
1710       IF G_CATALOG_GROUP_ID IS NULL THEN
1711         EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1712       ELSE
1713         EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, G_CATALOG_GROUP_ID;
1714       END IF;
1715       Write_Debug(' SQL to generate function generated item numbers DONE ');
1716 
1717       --
1718       -- R12C changes Tag_Sequence_Gen_Item_Nums with item_num as $$SG-transaction_id
1719       -- populate item number col if null but always set the source system reference
1720       --
1721       l_dyn_sql := ' UPDATE ego_bulkload_intf ebi' ||
1722                    ' SET '||l_item_number_col||' = NVL( '||l_item_number_col||', ''$$SG-''||TO_CHAR(transaction_id) )'||
1723                    ' ,c_fix_column12 = TO_CHAR(transaction_id)'||
1724                    ' WHERE resultfmt_usage_id = :RESULTFMT_USAGE_ID'||
1725                    ' AND '||G_ITEM_CATALOG_EBI_COL||' IS NOT NULL'||
1726                    ' AND UPPER(ebi.transaction_type) IN (''CREATE'',''SYNC'') '||
1727                    ' AND process_status = 1'||
1728                    ' AND ''S'' = '||
1729                    ' ( SELECT item_num_gen_method'||
1730                       ' FROM mtl_item_catalog_groups_b '||
1731                       ' WHERE NVL(item_num_gen_method,''I'') IN (''U'',''S'', ''F'') '||
1732                       ' AND ROWNUM = 1 '||
1733                       ' CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID';
1734       IF G_CATALOG_GROUP_ID IS NULL THEN
1735         l_dyn_sql := l_dyn_sql || ' START WITH ITEM_CATALOG_GROUP_ID = ebi.'||G_ITEM_CATALOG_EBI_COL;
1736       ELSE
1737         l_dyn_sql := l_dyn_sql || ' START WITH ITEM_CATALOG_GROUP_ID = :CATALOG_GROUP_ID';
1738       END IF;
1739       l_dyn_sql := l_dyn_sql ||' )';
1740       Write_Debug(' SQL to generate  sequence generated item numbers: '||l_dyn_sql);
1741       IF G_CATALOG_GROUP_ID IS NULL THEN
1742         EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1743       ELSE
1744         EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, G_CATALOG_GROUP_ID;
1745       END IF;
1746       Write_Debug(' SQL to generate sequence generated item numbers DONE ');
1747     END IF;
1748 
1749     -----------------------------------------------------------------
1750     -- Determine the Set Process ID, that is unique for MSII
1751     -----------------------------------------------------------------
1752     IF p_set_process_id IS NULL THEN
1753       SELECT mtl_system_items_intf_sets_s.NEXTVAL
1754         INTO l_msii_set_process_id
1755       FROM dual;
1756     ELSE
1757       l_msii_set_process_id := p_set_process_id;
1758     END IF;
1759 
1760     Write_Debug('l_msii_set_process_id : '||To_char(l_msii_set_process_id));
1761     Write_Debug('PROCESS_FLAG : '||To_char(G_PROCESS_STATUS));
1762 
1763      -----------------------------------------------------------------
1764      -- Insert rows from EBI into MSII
1765      -----------------------------------------------------------------
1766     l_dyn_sql :=              'INSERT INTO MTL_SYSTEM_ITEMS_INTERFACE MSII';
1767     l_dyn_sql := l_dyn_sql || ' ( ';
1768     l_dyn_sql := l_dyn_sql || ' SET_PROCESS_ID       ,   ';
1769     l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID       ,   ';
1770     l_dyn_sql := l_dyn_sql || ' REQUEST_ID           ,   ';
1771     l_dyn_sql := l_dyn_sql || ' PROGRAM_APPLICATION_ID,  ';
1772     l_dyn_sql := l_dyn_sql || ' PROGRAM_ID           ,   ';
1773     l_dyn_sql := l_dyn_sql || ' TRANSACTION_TYPE     ,   ';
1774     l_dyn_sql := l_dyn_sql || ' INVENTORY_ITEM_ID    ,   ';
1775     l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID      ,   ';
1776     l_dyn_sql := l_dyn_sql || ' ITEM_NUMBER          ,   ';
1777     l_dyn_sql := l_dyn_sql || ' ORGANIZATION_CODE    ,   ';
1778     l_dyn_sql := l_dyn_sql || ' ITEM_CATALOG_GROUP_ID,   ';
1779     l_dyn_sql := l_dyn_sql || ' ITEM_CATALOG_GROUP_NAME, ';
1780     l_dyn_sql := l_dyn_sql || ' PROCESS_FLAG,            ';
1781     l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_ID,        ';
1782     l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE, ';
1783     l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE_DESC ';
1784     l_dyn_sql := l_dyn_sql || ') ';
1785     l_dyn_sql := l_dyn_sql || ' SELECT ';
1786     l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
1787     l_dyn_sql := l_dyn_sql || ' EBI.TRANSACTION_ID       , ';
1788     l_dyn_sql := l_dyn_sql || G_REQUEST_ID||' , ';
1792     l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
1789     l_dyn_sql := l_dyn_sql || G_PROG_APPID||' , ';
1790     l_dyn_sql := l_dyn_sql || G_PROG_ID||' , ';
1791     l_dyn_sql := l_dyn_sql || ' UPPER(EBI.TRANSACTION_TYPE) , ';
1793     l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
1794     /*  FP base bug 7047035: Replace user entered single '\' to '\\', as in excel we don't use escape character '\' to do escape, this can cause validation problem later in import flow */
1795     l_dyn_sql := l_dyn_sql || ' REPLACE( EBI.'||l_item_number_col ||', ''\'', ''\\'') , ';
1796     -- l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
1797     l_dyn_sql := l_dyn_sql || ' EBI.'||l_org_code_col ||' , ';
1798     l_dyn_sql := l_dyn_sql || ' EBI.'||G_ITEM_CATALOG_EBI_COL||' , ';
1799     --------------------------------------------------------------------
1800     --Bug 4652582 (RSOUNDAR) Catalog Group Name is also required in MSII
1801     --------------------------------------------------------------------
1802     l_dyn_sql := l_dyn_sql || ' EBI.'||G_ITEM_CATALOG_NAME_EBI_COL||' , ';
1803     l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS||' , ';
1804     l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11) , ';
1805     l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12 , ';
1806     l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN13 ';
1807     l_dyn_sql := l_dyn_sql || ' FROM EGO_BULKLOAD_INTF EBI ';
1808     l_dyn_sql := l_dyn_sql || ' WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1809     l_dyn_sql := l_dyn_sql || '  AND EBI.PROCESS_STATUS = 1';
1810 
1811     Write_Debug(l_dyn_sql);
1812     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1813     Write_Debug('MSII: Populated the Inv Item IDs, Org IDs.');
1814 
1815      ----------------------------------------------------------------------------------
1816      --Save Item Num, Org Code in designated columns in EBI for Error Reporting later
1817      ----------------------------------------------------------------------------------
1818     l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1819     l_dyn_sql := l_dyn_sql || ' SET '||G_ITEM_NUMBER_EBI_COL||' = '||l_item_number_col||' , ';
1820     l_dyn_sql := l_dyn_sql || G_ORG_CODE_EBI_COL||' = '||l_org_code_col ;
1821     l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1822     l_dyn_sql := l_dyn_sql || ' AND PROCESS_STATUS = 1                     ';
1823 
1824     Write_Debug(l_dyn_sql);
1825     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1826     Write_Debug('Items Interface: Done saving Item Num, Org Code in EBI for error retrieval later.');
1827 
1828      ---------------------------------------
1829      -- Reset i back to 0, for re-use.
1830      ---------------------------------------
1831     i := 0;
1832     IF ( l_prod_col_name_tbl.count > 0) THEN
1833       FOR i IN l_prod_col_name_tbl.first .. l_prod_col_name_tbl.last LOOP
1834          Write_Debug('$l_prod_col_name_tbl(i)'||l_prod_col_name_tbl(i));
1835          Write_Debug('$l_intf_col_name_tbl(i)'||l_intf_col_name_tbl(i));
1836 
1837          ----------------------------------------------------------------------------------
1838          --  Transfer the Item Catalog Group information from EBI to MSII
1839          --  by doing Value-to-ID Conversion.
1840          ----------------------------------------------------------------------------------
1841          ---------------------------------------------------------------------
1842          --Bug#4652582 (RSOUNDAR)
1843          --(Catalog Name validation will be done by IOI)
1844          ---------------------------------------------------------------------
1845 --         IF (l_prod_col_name_tbl(i) = G_ITEM_CATALOG_GROUP) THEN
1846 --           l_dyn_sql := '';
1847 --           l_dyn_sql := l_dyn_sql || 'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
1848 --           l_dyn_sql := l_dyn_sql || ' SET  (MSII.ITEM_CATALOG_GROUP_ID,  MSII.PROCESS_FLAG)=';
1849 --           l_dyn_sql := l_dyn_sql || '( ';
1850 --           l_dyn_sql := l_dyn_sql || '    SELECT MICG.ITEM_CATALOG_GROUP_ID ';
1851 --           l_dyn_sql := l_dyn_sql || '        ,  DECODE(NVL(MICG.ITEM_CATALOG_GROUP_ID, -1), -1,'||G_ITEM_CATALOG_NAME_ERR_STS||', ' || G_PROCESS_STATUS || ' ) ';
1852 --           l_dyn_sql := l_dyn_sql || '    FROM   MTL_ITEM_CATALOG_GROUPS_B_KFV MICG, EGO_BULKLOAD_INTF EBI  ';
1853 --           l_dyn_sql := l_dyn_sql || '    WHERE  MICG.CONCATENATED_SEGMENTS(+) = EBI.'||l_intf_col_name_tbl(i);
1854 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1855 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1856 --           ----------------------------------------------------------------------------------
1857 --           --  WHERE EXISTS takes care of filtering lines. Hence this join not needed.
1858 --           --  l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
1859 --           ----------------------------------------------------------------------------------
1860 --           l_dyn_sql := l_dyn_sql || ') ';
1861 --           l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
1862 --           l_dyn_sql := l_dyn_sql || '( ';
1863 --           l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
1864 --           l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
1865 --           l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1866 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1867 --           ----------------------------------------------------------------------------------
1868 --           -- Validate only for the NOT NULL values, and update MSII.
1869 --           -- NULL values dont need to go in.
1873 --           l_dyn_sql := l_dyn_sql || '    AND    MSII.PROCESS_FLAG = ' || G_PROCESS_STATUS ;
1870 --           ----------------------------------------------------------------------------------
1871 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
1872 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
1874 --           l_dyn_sql := l_dyn_sql || ') ';
1875 --
1876 --           Write_Debug(l_dyn_sql);
1877 --           EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
1878 --           Write_Debug('MSII: Updated the Catalog Group IDs.');
1879 
1880          ----------------------------------------------------------------------------------
1881          --  Transfer the Primary Unit of Measure information from EBI to MSII
1882          --  by doing Value-to-ID Conversion.
1883          ----------------------------------------------------------------------------------
1884 
1885          IF (l_prod_col_name_tbl(i) = G_PRIMARY_UOM) THEN
1886 
1887            -- populating MSII with PRIMARY_UOM_CODE if exists
1888            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
1889            l_dyn_sql := l_dyn_sql || ' SET  (MSII.PRIMARY_UOM_CODE   ';
1890            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG )= ';
1891            l_dyn_sql := l_dyn_sql || '( ';
1892            l_dyn_sql := l_dyn_sql || '    SELECT MUOM.UOM_CODE   ';
1893            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(MUOM.UOM_CODE, ''NULL''),''NULL'','||G_PRIMARY_UOM_ERR_STS||', ' || G_PROCESS_STATUS || ' )  ';
1894            l_dyn_sql := l_dyn_sql || '    FROM MTL_UNITS_OF_MEASURE_TL MUOM, EGO_BULKLOAD_INTF EBI  ';
1895            l_dyn_sql := l_dyn_sql || '    WHERE MUOM.UNIT_OF_MEASURE_TL (+) = EBI.'||l_intf_col_name_tbl(i);
1896            l_dyn_sql := l_dyn_sql || '    AND MUOM.LANGUAGE (+) = Userenv(''LANG'') ';
1897            l_dyn_sql := l_dyn_sql || '    AND EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1898            l_dyn_sql := l_dyn_sql || '    AND EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1899            l_dyn_sql := l_dyn_sql || ') ';
1900            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
1901            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
1902            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
1903            l_dyn_sql := l_dyn_sql || '( ';
1904            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
1905            l_dyn_sql := l_dyn_sql || '    FROM EGO_BULKLOAD_INTF EBI  ';
1906            l_dyn_sql := l_dyn_sql || '    WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1907            l_dyn_sql := l_dyn_sql || '    AND EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1908            l_dyn_sql := l_dyn_sql || '    AND EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
1909            l_dyn_sql := l_dyn_sql || '    AND EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
1910            l_dyn_sql := l_dyn_sql || '    AND EBI.PROCESS_STATUS = 1  ';
1911            l_dyn_sql := l_dyn_sql || ') ';
1912 
1913            Write_Debug(l_dyn_sql);
1914            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
1915 
1916            -- populating MSII with PRIMARY_UOM_CODE if special char for null out exists
1917            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
1918            l_dyn_sql := l_dyn_sql || ' SET  MSII.PRIMARY_UOM_CODE = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
1919            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
1920            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
1921            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
1922            l_dyn_sql := l_dyn_sql || '( ';
1923            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
1924            l_dyn_sql := l_dyn_sql || '    FROM EGO_BULKLOAD_INTF EBI  ';
1925            l_dyn_sql := l_dyn_sql || '    WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1926            l_dyn_sql := l_dyn_sql || '    AND EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1927            l_dyn_sql := l_dyn_sql || '    AND EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
1928            l_dyn_sql := l_dyn_sql || '    AND EBI.PROCESS_STATUS = 1  ';
1929            l_dyn_sql := l_dyn_sql || ') ';
1930 
1931            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1932            Write_Debug('MSII: Updated the Primary UOMs.');
1933 
1934          ----------------------------------------------------------------------------------
1935          --  Bug# 3421497 fix.
1936          --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
1937          --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
1938          --  dependant upon the Lifecycle ID value.
1939          ----------------------------------------------------------------------------------
1940          ELSIF (l_prod_col_name_tbl(i) = G_LIFECYCLE) THEN
1941 
1942            l_lifecycle_col_val := l_intf_col_name_tbl(i);
1943 
1944          ----------------------------------------------------------------------------------
1945          --  Bug# 3421497 fix.
1946          --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
1947          --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
1948          --  dependant upon the Lifecycle ID value.
1949          ----------------------------------------------------------------------------------
1950          ELSIF (l_prod_col_name_tbl(i) = G_LIFECYCLE_PHASE) THEN
1951 
1952            l_lifecycle_phase_col_val := l_intf_col_name_tbl(i);
1953 
1957          ----------------------------------------------------------------------------------
1954          ----------------------------------------------------------------------------------
1955          --  Transfer the User Item Type information from EBI to MSII
1956          --  by doing Value-to-ID Conversion.
1958          ELSIF (l_prod_col_name_tbl(i) = G_USER_ITEM_TYPE) THEN
1959 
1960            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
1961            l_dyn_sql := l_dyn_sql || ' SET  (MSII.ITEM_TYPE   ';
1962            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
1963            l_dyn_sql := l_dyn_sql || '( ';
1964            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
1965            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_USER_ITEM_TYPE_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
1966            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
1967            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''ITEM_TYPE'' ';
1968            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
1969            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
1970            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1971            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1972            l_dyn_sql := l_dyn_sql || ') ';
1973            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
1974            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
1975            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
1976            l_dyn_sql := l_dyn_sql || '( ';
1977            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
1978            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
1979            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1980            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1981            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
1982            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
1983            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
1984            l_dyn_sql := l_dyn_sql || ') ';
1985 
1986            Write_Debug(l_dyn_sql);
1987            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
1988 
1989            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
1990            l_dyn_sql := l_dyn_sql || ' SET  MSII.ITEM_TYPE = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
1991            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
1992            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
1993            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
1994            l_dyn_sql := l_dyn_sql || '( ';
1995            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
1996            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
1997            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1998            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1999            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2000            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2001            l_dyn_sql := l_dyn_sql || ') ';
2002 
2003            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2004            Write_Debug('MSII: Updated the User Item Types.');
2005 
2006          ----------------------------------------------------------------------------------
2007          --  Transfer the BOM Item Type information from EBI to MSII
2008          --  by doing Value-to-ID Conversion.
2009          ----------------------------------------------------------------------------------
2010          ELSIF (l_prod_col_name_tbl(i) = G_BOM_ITEM_TYPE) THEN
2011 
2012            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2013            l_dyn_sql := l_dyn_sql || ' SET  (MSII.BOM_ITEM_TYPE   ';
2014            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2015            l_dyn_sql := l_dyn_sql || '( ';
2016            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2017            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_BOM_ITEM_TYPE_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2018            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2019            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''BOM_ITEM_TYPE'' ';
2020            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2021            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2022            l_dyn_sql := l_dyn_sql || '     AND   EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2023            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2024            l_dyn_sql := l_dyn_sql || ') ';
2025            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2026            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2027            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2028            l_dyn_sql := l_dyn_sql || '( ';
2029            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2030            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2031            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2035            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2032            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2033            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2034            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2036            l_dyn_sql := l_dyn_sql || ') ';
2037 
2038            Write_Debug(l_dyn_sql);
2039            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2040 
2041            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2042            l_dyn_sql := l_dyn_sql || ' SET  MSII.BOM_ITEM_TYPE = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2043            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2044            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2045            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2046            l_dyn_sql := l_dyn_sql || '( ';
2047            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2048            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2049            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2050            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2051            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2052            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2053            l_dyn_sql := l_dyn_sql || ') ';
2054 
2055            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2056            Write_Debug('MSII: Updated the BOM Item Types.');
2057 
2058           ELSIF (l_prod_col_name_tbl(i) = G_TRADE_ITEM_DESCRIPTOR) THEN
2059             l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2060            l_dyn_sql := l_dyn_sql || ' SET  (MSII.TRADE_ITEM_DESCRIPTOR   ';
2061            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2062            l_dyn_sql := l_dyn_sql || '( ';
2063            l_dyn_sql := l_dyn_sql || '    SELECT IT.INTERNAL_NAME ';
2064            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.INTERNAL_NAME, ''NULL''),''NULL'','||G_TRADE_ITEM_DESC_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2065            l_dyn_sql := l_dyn_sql || '    FROM   EGO_VALUE_SET_VALUES_V IT, EGO_BULKLOAD_INTF EBI ';
2066            l_dyn_sql := l_dyn_sql || '    WHERE  IT.VALUE_SET_NAME = ''TradeItemDescVS'' ';
2067            l_dyn_sql := l_dyn_sql || '     AND   IT.DISPLAY_NAME = EBI.'||l_intf_col_name_tbl(i);
2068            l_dyn_sql := l_dyn_sql || '     AND   EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2069            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2070            l_dyn_sql := l_dyn_sql || ') ';
2071            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2072            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2073            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2074            l_dyn_sql := l_dyn_sql || '( ';
2075            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2076            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2077            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2078            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2079            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2080            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2081            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2082            l_dyn_sql := l_dyn_sql || ') ';
2083 
2084            Write_Debug(l_dyn_sql);
2085            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2086 
2087            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2088            l_dyn_sql := l_dyn_sql || ' SET  MSII.TRADE_ITEM_DESCRIPTOR = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2089            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2090            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2091            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2092            l_dyn_sql := l_dyn_sql || '( ';
2093            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2094            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2095            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2096            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2097            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2098            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2099            l_dyn_sql := l_dyn_sql || ') ';
2100 
2101            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2102            Write_Debug('MSII: Updated the Trade Item Descriptor.');
2103 
2104          ----------------------------------------------------------------------------------
2105          --  Transfer the Engineering Item Flag information from EBI to MSII
2106          --  by doing Value-to-ID Conversion.
2107          ----------------------------------------------------------------------------------
2108          ELSIF (l_prod_col_name_tbl(i) = G_ENG_ITEM_FLAG) THEN
2109 
2110            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2111            l_dyn_sql := l_dyn_sql || ' SET  (MSII.ENG_ITEM_FLAG   ';
2112            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2113            l_dyn_sql := l_dyn_sql || '( ';
2117            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''EGO_YES_NO'' ';
2114            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2115            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_ENG_ITEM_FLAG_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2116            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2118            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2119            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2120            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2121            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2122            l_dyn_sql := l_dyn_sql || ') ';
2123            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2124            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2125            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2126            l_dyn_sql := l_dyn_sql || '( ';
2127            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2128            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2129            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2130            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2131            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2132            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2133            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2134            l_dyn_sql := l_dyn_sql || ') ';
2135 
2136            Write_Debug(l_dyn_sql);
2137            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2138 
2139            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2140            l_dyn_sql := l_dyn_sql || ' SET  MSII.ENG_ITEM_FLAG = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2141            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2142            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2143            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2144            l_dyn_sql := l_dyn_sql || '( ';
2145            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2146            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2147            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2148            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2149            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2150            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2151            l_dyn_sql := l_dyn_sql || ') ';
2152 
2153            Write_Debug(l_dyn_sql);
2154            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2155            Write_Debug('MSII: Updated the Eng Item Flags.');
2156 
2157          --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
2158          ----------------------------------------------------------------------------------
2159          --  Transfer the Conversions attribute information from EBI to MSII
2160          --  by doing Value-to-ID Conversion.
2161          ----------------------------------------------------------------------------------
2162          ELSIF (l_prod_col_name_tbl(i) = G_CONVERSIONS) THEN
2163 
2164            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2165            l_dyn_sql := l_dyn_sql || ' SET  (MSII.ALLOWED_UNITS_LOOKUP_CODE   ';
2166            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2167            l_dyn_sql := l_dyn_sql || '( ';
2168            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2169            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_CONVERSIONS_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2170            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2171            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''MTL_CONVERSION_TYPE'' ';
2172            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2173            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2174            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2175            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2176            l_dyn_sql := l_dyn_sql || ') ';
2177            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2178            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2179            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2180            l_dyn_sql := l_dyn_sql || '( ';
2181            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2182            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2183            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2184            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2185            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2186            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2187            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2188            l_dyn_sql := l_dyn_sql || ') ';
2189 
2190            Write_Debug(l_dyn_sql);
2191            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2192 
2196            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2193            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2194            l_dyn_sql := l_dyn_sql || ' SET  MSII.ALLOWED_UNITS_LOOKUP_CODE = :NULL_NUM ';
2195            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2197            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2198            l_dyn_sql := l_dyn_sql || '( ';
2199            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2200            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2201            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2202            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2203            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2204            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2205            l_dyn_sql := l_dyn_sql || ') ';
2206 
2207            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2208            Write_Debug('MSII: Updated the Conversions.');
2209 
2210          ----------------------------------------------------------------------------------
2211          --  Transfer the Conversions attribute information from EBI to MSII
2212          --  by doing Value-to-ID Conversion.
2213          ----------------------------------------------------------------------------------
2214          ELSIF (l_prod_col_name_tbl(i) = G_SECONDARY_DEF_IND) THEN
2215 
2216            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2217            l_dyn_sql := l_dyn_sql || ' SET  (MSII.SECONDARY_DEFAULT_IND   ';
2218            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2219            l_dyn_sql := l_dyn_sql || '( ';
2220            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2221            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_SECONDARY_DEF_IND_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2222            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2223            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''INV_DEFAULTING_UOM_TYPE'' ';
2224            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2225            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2226            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2227            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2228            l_dyn_sql := l_dyn_sql || ') ';
2229            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2230            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2231            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2232            l_dyn_sql := l_dyn_sql || '( ';
2233            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2234            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2235            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2236            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2237            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2238            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2239            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2240            l_dyn_sql := l_dyn_sql || ') ';
2241 
2242            Write_Debug(l_dyn_sql);
2243            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2244 
2245            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2246            l_dyn_sql := l_dyn_sql || ' SET  MSII.SECONDARY_DEFAULT_IND = :NULL_NUM';
2247            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2248            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2249            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2250            l_dyn_sql := l_dyn_sql || '( ';
2251            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2252            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2253            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2254            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2255            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2256            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2257            l_dyn_sql := l_dyn_sql || ') ';
2258 
2259            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2260            Write_Debug('MSII: Updated the Conversions.');
2261 
2262          ----------------------------------------------------------------------------------
2263          --  Transfer the Conversions attribute information from EBI to MSII
2264          --  by doing Value-to-ID Conversion.
2265          ----------------------------------------------------------------------------------
2266          ELSIF (l_prod_col_name_tbl(i) = G_ONT_PRICING_QTY_SRC) THEN
2267 
2268            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2269            l_dyn_sql := l_dyn_sql || ' SET  (MSII.ONT_PRICING_QTY_SOURCE   ';
2270            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2271            l_dyn_sql := l_dyn_sql || '( ';
2272            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2276            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2273            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_ONT_PRICING_QTY_SRC_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2274            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2275            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''INV_PRICING_UOM_TYPE'' ';
2277            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2278            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2279            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2280            l_dyn_sql := l_dyn_sql || ') ';
2281            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2282            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2283            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2284            l_dyn_sql := l_dyn_sql || '( ';
2285            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2286            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2287            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2288            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2289            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2290            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2291            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2292            l_dyn_sql := l_dyn_sql || ') ';
2293 
2294            Write_Debug(l_dyn_sql);
2295            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2296 
2297            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2298            l_dyn_sql := l_dyn_sql || ' SET  MSII.ONT_PRICING_QTY_SOURCE = :NULL_NUM';
2299            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2300            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2301            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2302            l_dyn_sql := l_dyn_sql || '( ';
2303            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2304            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2305            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2306            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2307            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2308            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2309            l_dyn_sql := l_dyn_sql || ') ';
2310 
2311            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2312            Write_Debug('MSII: Updated the Conversions.');
2313 
2314          ----------------------------------------------------------------------------------
2315          --  Transfer the Conversions attribute information from EBI to MSII
2316          --  by doing Value-to-ID Conversion.
2317          ----------------------------------------------------------------------------------
2318          ELSIF (l_prod_col_name_tbl(i) = G_SECONDARY_UOM_CODE) THEN
2319 
2320            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2321            l_dyn_sql := l_dyn_sql || ' SET  (MSII.SECONDARY_UOM_CODE   ';
2322            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2323            l_dyn_sql := l_dyn_sql || '( ';
2324            l_dyn_sql := l_dyn_sql || '    SELECT MUOM.UOM_CODE   ';
2325            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(MUOM.UOM_CODE, ''NULL''),''NULL'','||G_SECONDARY_UOM_CODE_ERR_STS||', ' || G_PROCESS_STATUS || ')  ';
2326            l_dyn_sql := l_dyn_sql || '    FROM   MTL_UNITS_OF_MEASURE_TL MUOM, EGO_BULKLOAD_INTF EBI  ';
2327            l_dyn_sql := l_dyn_sql || '    WHERE  MUOM.UNIT_OF_MEASURE_TL (+) = EBI.'||l_intf_col_name_tbl(i);
2328            l_dyn_sql := l_dyn_sql || '    AND    MUOM.LANGUAGE (+) = Userenv(''LANG'') ';
2329            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2330            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2331            l_dyn_sql := l_dyn_sql || ') ';
2332            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2333            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2334            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2335            l_dyn_sql := l_dyn_sql || '( ';
2336            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2337            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2338            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2339            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2340            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2341            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2342            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2343            l_dyn_sql := l_dyn_sql || ') ';
2344 
2345            Write_Debug(l_dyn_sql);
2346            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2347 
2348            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2352            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2349            l_dyn_sql := l_dyn_sql || ' SET  MSII.SECONDARY_UOM_CODE = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2350            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2351            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2353            l_dyn_sql := l_dyn_sql || '( ';
2354            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2355            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2356            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2357            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2358            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2359            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2360            l_dyn_sql := l_dyn_sql || ') ';
2361 
2362            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2363            Write_Debug('MSII: Updated the Conversions.');
2364 
2365          ----------------------------------------------------------------------------------
2366          --  Transfer the Conversions attribute information from EBI to MSII
2367          --  by doing Value-to-ID Conversion.
2368          ----------------------------------------------------------------------------------
2369          ELSIF (l_prod_col_name_tbl(i) = G_TRACKING_QTY_IND) THEN
2370 
2371            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2372            l_dyn_sql := l_dyn_sql || ' SET  (MSII.TRACKING_QUANTITY_IND   ';
2373            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2374            l_dyn_sql := l_dyn_sql || '( ';
2375            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2376            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_TRACKING_QTY_IND_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2377            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2378            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''INV_TRACKING_UOM_TYPE'' ';
2379            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2380            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2381            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2382            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2383            l_dyn_sql := l_dyn_sql || ') ';
2384            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2385            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2386            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2387            l_dyn_sql := l_dyn_sql || '( ';
2388            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2389            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2390            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2391            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2392            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2393            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2394            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2395            l_dyn_sql := l_dyn_sql || ') ';
2396 
2397            Write_Debug(l_dyn_sql);
2398            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2399 
2400            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2401            l_dyn_sql := l_dyn_sql || ' SET  MSII.TRACKING_QUANTITY_IND = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2402            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2403            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2404            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2405            l_dyn_sql := l_dyn_sql || '( ';
2406            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2407            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2408            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2409            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2410            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2411            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2412            l_dyn_sql := l_dyn_sql || ') ';
2413 
2414            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2415            Write_Debug('MSII: Updated the Conversions.');
2416            --Bug: 3969593 End
2417 
2418          ----------------------------------------------------------------------------------
2419          --  Transfer the Item Status Code attribute information from EBI to MSII
2420          --  by doing Value-to-ID Conversion. Rathna
2421          ----------------------------------------------------------------------------------
2422          ELSIF (l_prod_col_name_tbl(i) = G_INVENTORY_ITEM_STATUS) THEN
2423 
2424            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2425            l_dyn_sql := l_dyn_sql || ' SET  (MSII.INVENTORY_ITEM_STATUS_CODE ';
2426            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2427            l_dyn_sql := l_dyn_sql || '( ';
2428            l_dyn_sql := l_dyn_sql || '    SELECT IT.INVENTORY_ITEM_STATUS_CODE ';
2432            l_dyn_sql := l_dyn_sql || '     AND   EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2429            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.INVENTORY_ITEM_STATUS_CODE, ''NULL''),''NULL'','||G_INV_ITEM_STATUS_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2430            l_dyn_sql := l_dyn_sql || '    FROM   MTL_ITEM_STATUS IT, EGO_BULKLOAD_INTF EBI ';
2431            l_dyn_sql := l_dyn_sql || '    WHERE  IT.INVENTORY_ITEM_STATUS_CODE_TL (+) = EBI.'||l_intf_col_name_tbl(i);
2433            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2434            l_dyn_sql := l_dyn_sql || ') ';
2435            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2436            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2437            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2438            l_dyn_sql := l_dyn_sql || '( ';
2439            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2440            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2441            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2442            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2443            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2444            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2445            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2446            l_dyn_sql := l_dyn_sql || ') ';
2447 
2448            Write_Debug(l_dyn_sql);
2449            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2450 
2451            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2452            l_dyn_sql := l_dyn_sql || ' SET  MSII.TRACKING_QUANTITY_IND = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2453            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2454            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2455            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2456            l_dyn_sql := l_dyn_sql || '( ';
2457            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2458            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2459            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2460            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2461            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2462            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2463            l_dyn_sql := l_dyn_sql || ') ';
2464 
2465            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2466            Write_Debug('MSII: Updated the Item Status.*');
2467 
2468          ----------------------------------------------------------------------------------
2469          --  Transfer the Column information from EBI to MSII
2470          --  which *DONOT NEED* Value-to-ID Conversion.
2471          ----------------------------------------------------------------------------------
2472          ELSIF (l_prod_col_name_tbl(i) <> G_CREATION_DATE AND l_prod_col_name_tbl(i) <>  G_CREATED_BY) THEN
2473            --Bug Fix 4713312:START
2474            IF (l_prod_col_name_tbl(i) = G_ITEM_CATALOG_GROUP1) THEN
2475              l_col_name := G_ITEM_CATALOG_GROUP;
2476            ELSE
2477              l_col_name := l_prod_col_name_tbl(i);
2478            END IF;
2479           Write_Debug('Updating MSII: l_col_name = ' || l_col_name);
2480            --Bug Fix 4713312:END
2481            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2482            l_dyn_sql := l_dyn_sql || ' SET   MSII.'||l_col_name||' =  ';
2483            l_dyn_sql := l_dyn_sql || '( ';
2484 --  MLS Status
2485 --           IF (l_prod_col_name_tbl(i) = G_INV_STATUS_CODE_NAME) THEN
2486 --             ----------------------------------------------------------------------------------
2487 --             -- MSII INVENTORY_ITEM_STATUS_CODE is only 10 char long
2488 --             ----------------------------------------------------------------------------------
2489 --             l_dyn_sql := l_dyn_sql || ' SELECT SUBSTRB(EBI.'||l_intf_col_name_tbl(i) || ', 1, 10)';
2490 --
2491 --           ELSE
2492            IF (l_prod_col_name_tbl(i) = G_ITEM_TEMPLATE_NAME) THEN
2493              ----------------------------------------------------------------------------------
2494              -- MSII TEMPLATE_NAME is only 30 chars long
2495              ----------------------------------------------------------------------------------
2496              l_dyn_sql := l_dyn_sql || ' SELECT SUBSTR(EBI.'||l_intf_col_name_tbl(i)|| ',1,30)';
2497 
2498            ELSIF  (l_prod_col_name_tbl(i) IN ('STYLE_ITEM_FLAG', 'GDSN_OUTBOUND_ENABLED_FLAG' )) THEN
2499               l_dyn_sql := l_dyn_sql || ' SELECT LOOKUP_CODE ';
2500            ELSE
2501              ----------------------------------------------------------------------------------
2502              -- All other columns, which *DONOT NEED* any special treatment.
2503              ----------------------------------------------------------------------------------
2504               l_dyn_sql := l_dyn_sql || ' SELECT EBI.'||l_intf_col_name_tbl(i);
2505            END IF; --end: IF (l_prod_col_name_tbl(i) = G_ITEM_TEMPLATE_NAME)
2506 
2507            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI ';
2508 
2509            IF  (l_prod_col_name_tbl(i) IN ('STYLE_ITEM_FLAG', 'GDSN_OUTBOUND_ENABLED_FLAG' )) THEN
2510              l_dyn_sql := l_dyn_sql || '    ,   FND_LOOKUP_VALUES_VL LKUP ';
2511            END IF;
2512 
2516            IF  (l_prod_col_name_tbl(i) IN ('STYLE_ITEM_FLAG', 'GDSN_OUTBOUND_ENABLED_FLAG' )) THEN
2513            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2514            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2515 
2517              l_dyn_sql := l_dyn_sql || ' AND  LOOKUP_TYPE = ''EGO_YES_NO'' ';
2518              l_dyn_sql := l_dyn_sql || ' AND  LKUP.MEANING = EBI.'||l_intf_col_name_tbl(i)||' ';
2519            END IF;
2520 
2521            l_dyn_sql := l_dyn_sql || ') ';
2522            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2523            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2524            l_dyn_sql := l_dyn_sql || '   AND MSII.TRANSACTION_ID IN ';
2525            l_dyn_sql := l_dyn_sql || ' ( ';
2526            l_dyn_sql := l_dyn_sql || '    SELECT EBI.TRANSACTION_ID ';
2527            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI ';
2528            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2529 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2530            l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
2531            l_dyn_sql := l_dyn_sql || ' ) ';
2532 
2533            Write_Debug(l_dyn_sql);
2534            Write_Debug('Updating : RSOUNDAR: MSII: l_dyn_sql = ' || l_dyn_sql);
2535            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2536            Write_Debug('MSII: Updated the '||l_prod_col_name_tbl(i)||' column values.');
2537 
2538          END IF;--end: IF (l_prod_col_name_tbl(i) = G_ITEM_CATALOG_GROUP) THEN
2539 
2540          -- Bug: 3778006
2541          ----------------------------------------------------------------------------------
2542          --  Checking if transaction_type is update and Description generation method is
2543          --  Function Generated, then Description updation should not be allowed.
2544          ----------------------------------------------------------------------------------
2545          IF (l_prod_col_name_tbl(i) = G_DESCRIPTION) THEN
2546 --DPHILIP: we need to check what is the impact of this check
2547            Write_Debug('DPHILIP :updating description setting the error status to:  ' || G_DESCRIPTION_ERR_STS);
2548 
2549            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2550            l_dyn_sql := l_dyn_sql || ' SET  MSII.PROCESS_FLAG = '||G_DESCRIPTION_ERR_STS||' ';
2551            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2552            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2553            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2554            l_dyn_sql := l_dyn_sql || '( ';
2555            l_dyn_sql := l_dyn_sql || '    SELECT NULL ';
2556            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI, MTL_SYSTEM_ITEMS_VL MSIV ';
2557            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2558            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2559            l_dyn_sql := l_dyn_sql || '    AND    EBI.INSTANCE_PK1_VALUE = MSIV.INVENTORY_ITEM_ID ';
2560            l_dyn_sql := l_dyn_sql || '    AND    EBI.INSTANCE_PK2_VALUE = MSIV.ORGANIZATION_ID ';
2561            l_dyn_sql := l_dyn_sql || '    AND    EGO_ITEM_BULKLOAD_PKG.get_desc_gen_method(MSIV.ITEM_CATALOG_GROUP_ID) = :FUNCTION_GEN ';
2562            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2563            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> MSIV.DESCRIPTION';
2564            l_dyn_sql := l_dyn_sql || '    AND    EBI.INSTANCE_PK1_VALUE IS NOT NULL';
2565            l_dyn_sql := l_dyn_sql || '    AND    UPPER(EBI.TRANSACTION_TYPE) IN (:UPD, :SYNC)';
2566            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2567            l_dyn_sql := l_dyn_sql || ') ';
2568 
2569            Write_Debug(l_dyn_sql);
2570            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, 'F', 'UPDATE', 'SYNC';
2571            Write_Debug('MSII: Logged Error (if any) in updating description');
2572 
2573          END IF;
2574 
2575        END LOOP;--end: FOR i IN l_prod_col_name_tbl.first .. l_prod_col_name_tbl.last LOOP
2576 
2577        ----------------------------------------------------------------------------------
2578        --  Bug# 3421497 fix.
2579        --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
2580        --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
2581        --  dependant upon the Lifecycle ID value.
2582        --  Hence the are processed outside the above LOOP.
2583        ----------------------------------------------------------------------------------
2584 
2585        IF (l_lifecycle_col_val IS NOT NULL) THEN
2586 
2587          ----------------------------------------------------------------------------------
2588          --  First Transfer the Lifecycle information from EBI to MSII
2589          --  by doing Value-to-ID Conversion.
2590          ----------------------------------------------------------------------------------
2591            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2592            l_dyn_sql := l_dyn_sql || ' SET  (MSII.LIFECYCLE_ID   ';
2593            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2594            l_dyn_sql := l_dyn_sql || '( ';
2595            l_dyn_sql := l_dyn_sql || '    SELECT LC.PROJ_ELEMENT_ID ';
2596            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(LC.PROJ_ELEMENT_ID, -1), -1,'||G_LIFECYCLE_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2600            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2597            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_LIFECYCLES_V LC, EGO_BULKLOAD_INTF EBI  ';
2598            l_dyn_sql := l_dyn_sql || '    WHERE  LC.NAME (+) = EBI.'||l_lifecycle_col_val;
2599            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2601            l_dyn_sql := l_dyn_sql || ') ';
2602            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2603            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2604            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2605            l_dyn_sql := l_dyn_sql || '( ';
2606            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2607            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2608            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2609            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2610            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_col_val||' IS NOT NULL';
2611            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_col_val||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2612            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2613            l_dyn_sql := l_dyn_sql || ') ';
2614 
2615            Write_Debug(l_dyn_sql);
2616            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2617 
2618            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2619            l_dyn_sql := l_dyn_sql || ' SET  MSII.LIFECYCLE_ID = :NULL_NUM';
2620            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2621            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2622            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2623            l_dyn_sql := l_dyn_sql || '( ';
2624            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2625            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2626            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2627            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2628            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_col_val||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2629            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2630            l_dyn_sql := l_dyn_sql || ') ';
2631 
2632            Write_Debug(l_dyn_sql);
2633            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2634 
2635            Write_Debug('MSII: Updated the Lifecycle IDs.');
2636 
2637        END IF; --end: IF (l_lifecycle_col_val IS NOT NULL ...
2638 
2639        IF (l_lifecycle_phase_col_val IS NOT NULL) THEN
2640          ----------------------------------------------------------------------------------
2641          --  Next Transfer the Lifecycle Phase information from EBI to MSII
2642          --  by doing Value-to-ID Conversion, and by joining Lifecycle ID information.
2643          ----------------------------------------------------------------------------------
2644            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2645            l_dyn_sql := l_dyn_sql || ' SET  (MSII.CURRENT_PHASE_ID   ';
2646            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2647            l_dyn_sql := l_dyn_sql || '( ';
2648            l_dyn_sql := l_dyn_sql || '    SELECT LCP.PROJ_ELEMENT_ID ';
2649            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(LCP.PROJ_ELEMENT_ID, -1), -1,'||G_LIFECYCLE_PHASE_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2650            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_PHASES_V LCP, EGO_BULKLOAD_INTF EBI ';
2651            l_dyn_sql := l_dyn_sql || '    WHERE  LCP.PARENT_STRUCTURE_ID (+) = MSII.LIFECYCLE_ID ';
2652            l_dyn_sql := l_dyn_sql || '    AND    LCP.NAME (+) = EBI.'||l_lifecycle_phase_col_val;
2653            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2654            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2655            l_dyn_sql := l_dyn_sql || ') ';
2656            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2657            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2658            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2659            l_dyn_sql := l_dyn_sql || '( ';
2660            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2661            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2662            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2663            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2664            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_phase_col_val||' IS NOT NULL';
2665            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_phase_col_val||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2666            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2667            l_dyn_sql := l_dyn_sql || ') ';
2668 
2669            Write_Debug(l_dyn_sql);
2670            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2671 
2672            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2673            l_dyn_sql := l_dyn_sql || ' SET  MSII.CURRENT_PHASE_ID = :NULL_NUM';
2674            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2675            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2676            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2677            l_dyn_sql := l_dyn_sql || '( ';
2681            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2678            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2679            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2680            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2682            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_phase_col_val||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2683            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2684            l_dyn_sql := l_dyn_sql || ') ';
2685 
2686            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2687            Write_Debug('MSII: Updated the Lifecycle Phase IDs.');
2688 
2689        END IF; --end: IF (l_lifecycle_phase_col_val IS NOT NULL ...
2690 
2691     END IF; --IF ( l_prod_col_name_tbl.count > 0) THEN
2692     --
2693     -- convert all date fields values from Excel Null to INTF Null
2694     --
2695     UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII
2696     SET  start_date_active = DECODE(start_date_active,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,start_date_active),
2697          end_date_active = DECODE(end_date_active,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,end_date_active),
2698          engineering_date = DECODE(engineering_date,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,engineering_date)
2699     WHERE MSII.SET_PROCESS_ID  = l_msii_set_process_id
2700       AND MSII.PROCESS_FLAG  = G_PROCESS_STATUS
2701       AND (MSII.start_date_active IS NOT NULL
2702            OR
2703            MSII.end_date_active IS NOT NULL
2704            OR
2705            MSII.engineering_date IS NOT NULL
2706           )
2707       AND EXISTS
2708        ( SELECT 'X'
2709          FROM   EGO_BULKLOAD_INTF EBI
2710          WHERE  EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
2711          AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID
2712          AND    EBI.PROCESS_STATUS = 1
2713        );
2714     ----------------------------------------------------------------------------------
2715     -- To print all the Item Numbers.
2716     -- 1) That were passed in Excel
2717     -- 2) That were Sequence generated
2718     -- etc., (i.e. in future, Function generated etc.,)
2719     ----------------------------------------------------------------------------------
2720     Log_ItemNums_ToBe_Processed(p_resultfmt_usage_id,
2721                                 l_item_number_col);
2722     x_retcode := G_STATUS_SUCCESS;
2723     x_set_process_id := l_msii_set_process_id;
2724 
2725     ----------------------------------------------------------------------------------
2726     -- Now that Revision Update is supported through Item Search Results,
2727     -- need to use the same set_process_id for Revisions Interface also.
2728     -- Hence storing in a Global variable.
2729     ----------------------------------------------------------------------------------
2730     G_MSII_SET_PROCESS_ID := l_msii_set_process_id;
2731 
2732 END load_item_interface;
2733 
2734 
2735  ----------------------------------------------------------
2736  --  Preprocess Item Interface Lines                     --
2737  ----------------------------------------------------------
2738 
2739 PROCEDURE preprocess_item_interface
2740                (
2741                  p_resultfmt_usage_id    IN         NUMBER,
2742                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
2743                  p_set_process_id        IN         NUMBER,
2744                  x_errbuff               IN OUT NOCOPY     VARCHAR2,
2745                  x_retcode               IN OUT NOCOPY    VARCHAR2
2746                 ) IS
2747 
2748     -- Start OF comments
2749     -- API name  : Setup MSII Item Interface Lines for processing
2750     -- TYPE      : Private
2751     -- Pre-reqs  : None
2752     -- FUNCTION  : Populate and Prepare Item interfance lines.
2753     --             Eliminates any redundancy / errors in MSII
2754 
2755   -----------------------------------------------
2756   -- Long Dynamic SQL String
2757   -----------------------------------------------
2758   l_dyn_sql                VARCHAR2(20000);
2759 
2760   -----------------------------------------------
2761   -- Error message variables
2762   -----------------------------------------------
2763   l_item_catalog_err_msg      VARCHAR2(2000);
2764   l_uom_err_msg               VARCHAR2(2000);
2765   l_lifecycle_err_msg         VARCHAR2(2000);
2766   l_lifecycle_ph_err_msg      VARCHAR2(2000);
2767   l_useritemtype_err_msg      VARCHAR2(2000);
2768   l_bomitemtype_err_msg       VARCHAR2(2000);
2769   l_engitemflag_err_msg       VARCHAR2(2000);
2770   l_description_err_msg       VARCHAR2(2000); -- Bug: 3778006
2771   --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
2772   l_conversions_err_msg       VARCHAR2(2000);
2773   l_secondary_def_err_msg     VARCHAR2(2000);
2774   l_ont_pricing_qty_src_err_msg VARCHAR2(2000);
2775   l_secondary_uom_code_err_msg  VARCHAR2(2000);
2776   l_tracking_qty_ind_err_msg    VARCHAR2(2000);
2777   l_inv_item_status_err_msg     VARCHAR2(2000);
2778   --Bug: 3969593 End
2779   --R12C changes for Pack Hierarchy
2780   l_tradeitemdesc_err_msg    VARCHAR2(2000);
2781 BEGIN
2782 
2783    Write_Debug('EBI : Getting the messages.');
2784 
2785    -----------------------------------------------------------------------
2786    -- Preparation for Inserting error messages for all pre-processing   --
2787    -- Validation errors.                                                --
2791    -----------------------------------------------------------------------
2788    -----------------------------------------------------------------------
2789    FND_MESSAGE.SET_NAME('EGO','EGO_ITEMCATALOG_INVALID');
2790 
2792    -- Fixing MLS Bug# 3421756                                           --
2793    -- Replacing 1 quote with 2 quotes to be used in Dynamic SQL         --
2794    -- None of the messages have ampersands or other suspicious chars    --
2795    -- that could cause harm in the Dynamic SQL run below.               --
2796    -----------------------------------------------------------------------
2797    l_item_catalog_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2798 
2799    FND_MESSAGE.SET_NAME('EGO','EGO_PRIMARYUOM_INVALID');
2800    l_uom_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2801 
2802    FND_MESSAGE.SET_NAME('EGO','EGO_LIFECYCLE_INVALID');
2803    l_lifecycle_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2804 
2805    FND_MESSAGE.SET_NAME('EGO','EGO_LIFECYCLE_PHASE_INVALID');
2806    l_lifecycle_ph_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2807 
2808    FND_MESSAGE.SET_NAME('EGO','EGO_USERITEMTYPE_INVALID');
2809    l_useritemtype_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2810 
2811    FND_MESSAGE.SET_NAME('EGO','EGO_BOMITEMTYPE_INVALID');
2812    l_bomitemtype_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2813 
2814    FND_MESSAGE.SET_NAME('EGO','EGO_ENGITEMFLAG_INVALID');
2815    l_engitemflag_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2816 
2817    -- Bug: 3778006
2818    FND_MESSAGE.SET_NAME('EGO','EGO_ITEMDESC_IS_FG');
2819    l_description_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2820 
2821    --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
2822    FND_MESSAGE.SET_NAME('EGO','EGO_CONVERSIONS_INVALID');
2823    l_conversions_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2824 
2825    FND_MESSAGE.SET_NAME('EGO','EGO_DEFAULTING_INVALID');
2826    l_secondary_def_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2827 
2828    FND_MESSAGE.SET_NAME('EGO','EGO_PRICING_INVALID');
2829    l_ont_pricing_qty_src_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2830 
2831    FND_MESSAGE.SET_NAME('EGO','EGO_SECONDARYUOM_INVALID');
2832    l_secondary_uom_code_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2833 
2834    FND_MESSAGE.SET_NAME('EGO','EGO_TRACKING_INVALID');
2835    l_tracking_qty_ind_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2836    --Bug: 3969593 End
2837 
2838    FND_MESSAGE.SET_NAME('EGO','EGO_STATUS_INVALID');--MLS STatus
2839    l_inv_item_status_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2840    -- R12C changes for Pack Hierarchy
2841    FND_MESSAGE.SET_NAME('EGO','EGO_TRADEITEMDESC_INVALID');
2842    l_tradeitemdesc_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2843 
2844    -----------------------------------------------------------------------
2845    --Insert the Pre-processed error messages.
2846    -----------------------------------------------------------------------
2847    l_dyn_sql := '';
2848    l_dyn_sql := l_dyn_sql || 'INSERT INTO MTL_INTERFACE_ERRORS ';
2849    l_dyn_sql := l_dyn_sql || '( ';
2850    l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID   ';
2851    l_dyn_sql := l_dyn_sql || ', UNIQUE_ID    ';
2852    l_dyn_sql := l_dyn_sql || ', LAST_UPDATE_DATE   ';
2853    l_dyn_sql := l_dyn_sql || ', LAST_UPDATED_BY  ';
2854    l_dyn_sql := l_dyn_sql || ', CREATION_DATE    ';
2855    l_dyn_sql := l_dyn_sql || ', CREATED_BY     ';
2856    l_dyn_sql := l_dyn_sql || ', LAST_UPDATE_LOGIN  ';
2857    l_dyn_sql := l_dyn_sql || ', TABLE_NAME     ';
2858    l_dyn_sql := l_dyn_sql || ', MESSAGE_NAME     ';
2859    l_dyn_sql := l_dyn_sql || ', COLUMN_NAME    ';
2860    l_dyn_sql := l_dyn_sql || ', REQUEST_ID     ';
2861    l_dyn_sql := l_dyn_sql || ', PROGRAM_APPLICATION_ID  ';
2862    l_dyn_sql := l_dyn_sql || ', PROGRAM_ID     ';
2863    l_dyn_sql := l_dyn_sql || ', PROGRAM_UPDATE_DATE  ';
2864    l_dyn_sql := l_dyn_sql || ', ERROR_MESSAGE    ';
2865    l_dyn_sql := l_dyn_sql || ', TRANSACTION_ID   ';
2866    l_dyn_sql := l_dyn_sql || ', ENTITY_IDENTIFIER  ';
2867    l_dyn_sql := l_dyn_sql || ', BO_IDENTIFIER    ';
2868    l_dyn_sql := l_dyn_sql || ') ';
2869    l_dyn_sql := l_dyn_sql || 'SELECT ';
2870    l_dyn_sql := l_dyn_sql || ' -1 ';
2871    l_dyn_sql := l_dyn_sql || ', MSII.TRANSACTION_ID ';
2872    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
2873    l_dyn_sql := l_dyn_sql || ', '||G_USER_ID ;
2874    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
2875    l_dyn_sql := l_dyn_sql || ', '||G_USER_ID;
2876    l_dyn_sql := l_dyn_sql || ', '||G_LOGIN_ID;
2877    l_dyn_sql := l_dyn_sql || ', ''MTL_SYSTEM_ITEMS_INTERFACE'' ';
2878    l_dyn_sql := l_dyn_sql || ', DECODE(MSII.PROCESS_FLAG, ';
2879    l_dyn_sql := l_dyn_sql ||    G_ITEM_CATALOG_NAME_ERR_STS||', ''EGO_ITEMCATALOG_INVALID'', ';
2880    l_dyn_sql := l_dyn_sql ||    G_PRIMARY_UOM_ERR_STS||', ''EGO_PRIMARYUOM_INVALID'', ';
2881    l_dyn_sql := l_dyn_sql ||    G_LIFECYCLE_ERR_STS||', ''EGO_LIFECYCLE_INVALID'', ';
2882    l_dyn_sql := l_dyn_sql ||    G_LIFECYCLE_PHASE_ERR_STS||', ''EGO_LIFECYCLE_PHASE_INVALID'', ';
2883    l_dyn_sql := l_dyn_sql ||    G_USER_ITEM_TYPE_ERR_STS||', ''EGO_USERITEMTYPE_INVALID'', ';
2884    l_dyn_sql := l_dyn_sql ||    G_BOM_ITEM_TYPE_ERR_STS||', ''EGO_BOMITEMTYPE_INVALID'', ';
2885    l_dyn_sql := l_dyn_sql ||    G_TRADE_ITEM_DESC_ERR_STS||', ''EGO_TRADEITEMDESC_INVALID'', ';
2886    l_dyn_sql := l_dyn_sql ||    G_ENG_ITEM_FLAG_ERR_STS||', ''EGO_ENGITEMFLAG_INVALID'', ';
2887    l_dyn_sql := l_dyn_sql ||    G_DESCRIPTION_ERR_STS||', ''EGO_ITEMDESC_IS_FG'', '; -- Bug: 3778006
2888    l_dyn_sql := l_dyn_sql ||    G_CONVERSIONS_ERR_STS||',''EGO_CONVERSIONS_INVALID'', '; --Bug: 3969593 Begin
2892    l_dyn_sql := l_dyn_sql ||    G_TRACKING_QTY_IND_ERR_STS||',''EGO_TRACKING_INVALID'', '; --Bug: 3969593 End
2889    l_dyn_sql := l_dyn_sql ||    G_SECONDARY_DEF_IND_ERR_STS||',''EGO_DEFAULTING_INVALID'', ';
2890    l_dyn_sql := l_dyn_sql ||    G_ONT_PRICING_QTY_SRC_ERR_STS||',''EGO_PRICING_INVALID'', ';
2891    l_dyn_sql := l_dyn_sql ||    G_SECONDARY_UOM_CODE_ERR_STS||',''EGO_SECONDARYUOM_INVALID'', ';
2893    l_dyn_sql := l_dyn_sql ||    G_INV_ITEM_STATUS_ERR_STS||',''EGO_STATUS_INVALID'' ';--MLS Status
2894    l_dyn_sql := l_dyn_sql || '    ) ';
2895    l_dyn_sql := l_dyn_sql || ', NULL ';
2896    l_dyn_sql := l_dyn_sql || ', '||G_REQUEST_ID ;
2897    l_dyn_sql := l_dyn_sql || ', '||G_PROG_APPID ;
2898    l_dyn_sql := l_dyn_sql || ', '||G_PROG_ID ;
2899    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
2900    l_dyn_sql := l_dyn_sql || ', DECODE(MSII.PROCESS_FLAG,  ';
2901    l_dyn_sql := l_dyn_sql ||      G_ITEM_CATALOG_NAME_ERR_STS ||', EBI.'||G_ITEM_CATALOG_NAME_EBI_COL || ' || '' : '||l_item_catalog_err_msg||''', ';
2902    l_dyn_sql := l_dyn_sql ||      G_PRIMARY_UOM_ERR_STS||', EBI.'||G_PRIMARY_UOM_EBI_COL || ' || '' : '||l_uom_err_msg||''', ';
2903    l_dyn_sql := l_dyn_sql ||      G_LIFECYCLE_ERR_STS||',  EBI.'||G_LIFECYCLE_EBI_COL || ' || '' : '||l_lifecycle_err_msg||''', ';
2904    l_dyn_sql := l_dyn_sql ||      G_LIFECYCLE_PHASE_ERR_STS||',  EBI.'||G_LIFECYCLE_PHASE_EBI_COL || ' || '' : '||l_lifecycle_ph_err_msg||''', ';
2905    l_dyn_sql := l_dyn_sql ||      G_USER_ITEM_TYPE_ERR_STS||',  EBI.'||G_USER_ITEM_TYPE_EBI_COL || ' || '' : '||l_useritemtype_err_msg||''', ';
2906    l_dyn_sql := l_dyn_sql ||      G_BOM_ITEM_TYPE_ERR_STS||',  EBI.'||G_BOM_ITEM_TYPE_EBI_COL || ' || '' : '||l_bomitemtype_err_msg||''', ';
2907    IF l_trade_item_descriptor_col IS NULL THEN
2908      l_dyn_sql := l_dyn_sql ||    G_TRADE_ITEM_DESC_ERR_STS||',  '''||l_tradeitemdesc_err_msg||''' , ';
2909    ELSE
2910      l_dyn_sql := l_dyn_sql ||    G_TRADE_ITEM_DESC_ERR_STS||',  EBI.'||l_trade_item_descriptor_col || ' || '' : '||l_tradeitemdesc_err_msg||''' , ';
2911    END IF;
2912    l_dyn_sql := l_dyn_sql ||      G_ENG_ITEM_FLAG_ERR_STS||',  EBI.'||G_ENG_ITEM_FLAG_EBI_COL || ' || '' : '||l_engitemflag_err_msg||''', ';
2913    l_dyn_sql := l_dyn_sql ||      G_DESCRIPTION_ERR_STS||',  EBI.'||G_DESCRIPTION_EBI_COL || ' || '' : '||l_description_err_msg||''','; -- Bug: 3778006
2914    l_dyn_sql := l_dyn_sql ||      G_CONVERSIONS_ERR_STS||',  EBI.'||G_CONVERSIONS_EBI_COL || ' || '' : '||l_conversions_err_msg||''','; --Bug: 3969593 Begin
2915    l_dyn_sql := l_dyn_sql ||      G_SECONDARY_DEF_IND_ERR_STS||',  EBI.'||G_SECONDARY_DEF_IND_EBI_COL || ' || '' : '||l_secondary_def_err_msg||''',';
2916    l_dyn_sql := l_dyn_sql ||      G_ONT_PRICING_QTY_SRC_ERR_STS||',  EBI.'||G_ONT_PRICING_QTY_SRC_EBI_COL || ' || '' : '||l_ont_pricing_qty_src_err_msg||''',';
2917    l_dyn_sql := l_dyn_sql ||      G_SECONDARY_UOM_CODE_ERR_STS||',  EBI.'||G_SECONDARY_UOM_CODE_EBI_COL || ' || '' : '||l_secondary_uom_code_err_msg||''',';
2918    l_dyn_sql := l_dyn_sql ||      G_TRACKING_QTY_IND_ERR_STS||',  EBI.'||G_TRACKING_QTY_IND_EBI_COL || ' || '' : '||l_tracking_qty_ind_err_msg||''','; --Bug: 3969593 End
2919    --Rathna MLS Status
2920    IF l_inventory_item_status_col IS NULL THEN
2921      l_dyn_sql := l_dyn_sql ||    G_INV_ITEM_STATUS_ERR_STS||',  '''||l_inv_item_status_err_msg||'''';
2922    ELSE
2923      l_dyn_sql := l_dyn_sql ||    G_INV_ITEM_STATUS_ERR_STS||',  EBI.'||l_inventory_item_status_col || ' || '' : '||l_inv_item_status_err_msg||'''';
2924    END IF;
2925    l_dyn_sql := l_dyn_sql || '        )     ';
2926    l_dyn_sql := l_dyn_sql || ', MSII.TRANSACTION_ID ';
2927    l_dyn_sql := l_dyn_sql || ', NULL ';
2928    l_dyn_sql := l_dyn_sql || ', NULL ';
2929    l_dyn_sql := l_dyn_sql || 'FROM  MTL_SYSTEM_ITEMS_INTERFACE MSII, EGO_BULKLOAD_INTF EBI ';
2930    l_dyn_sql := l_dyn_sql || 'WHERE MSII.TRANSACTION_ID = EBI.TRANSACTION_ID ';
2931    l_dyn_sql := l_dyn_sql || ' AND  MSII.SET_PROCESS_ID = '||p_set_process_id;
2932    l_dyn_sql := l_dyn_sql || ' AND  MSII.PROCESS_FLAG IN  ';
2933    l_dyn_sql := l_dyn_sql ||  ' ( ';
2934    l_dyn_sql := l_dyn_sql ||    G_ITEM_CATALOG_NAME_ERR_STS||', ';
2935    l_dyn_sql := l_dyn_sql ||    G_PRIMARY_UOM_ERR_STS||', ';
2936    l_dyn_sql := l_dyn_sql ||    G_LIFECYCLE_ERR_STS||', ';
2937    l_dyn_sql := l_dyn_sql ||    G_LIFECYCLE_PHASE_ERR_STS||', ';
2938    l_dyn_sql := l_dyn_sql ||    G_USER_ITEM_TYPE_ERR_STS||', ';
2939    l_dyn_sql := l_dyn_sql ||    G_BOM_ITEM_TYPE_ERR_STS||', ';
2940    l_dyn_sql := l_dyn_sql ||    G_TRADE_ITEM_DESC_ERR_STS||', ';
2941    l_dyn_sql := l_dyn_sql ||    G_ENG_ITEM_FLAG_ERR_STS||', ';
2942    l_dyn_sql := l_dyn_sql ||    G_DESCRIPTION_ERR_STS||', ';
2943    l_dyn_sql := l_dyn_sql ||    G_CONVERSIONS_ERR_STS||', '; --Bug: 3969593 Begin
2944    l_dyn_sql := l_dyn_sql ||    G_SECONDARY_DEF_IND_ERR_STS||', ';
2945    l_dyn_sql := l_dyn_sql ||    G_ONT_PRICING_QTY_SRC_ERR_STS||', ';
2946    l_dyn_sql := l_dyn_sql ||    G_SECONDARY_UOM_CODE_ERR_STS||', ';
2947    l_dyn_sql := l_dyn_sql ||    G_TRACKING_QTY_IND_ERR_STS||', '; --Bug: 3969593 End
2948    l_dyn_sql := l_dyn_sql ||    G_INV_ITEM_STATUS_ERR_STS; --need to store error status as well
2949    l_dyn_sql := l_dyn_sql ||  ' ) ';
2950    l_dyn_sql := l_dyn_sql || ' AND  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID ';
2951    l_dyn_sql := l_dyn_sql || ' AND  EBI.PROCESS_STATUS = 1 ';
2952 
2953    Write_Debug('l_dyn_sql');
2954    --There is a limit of 1024 BYTES through Write_Debug (it uses
2955    --UTL_FILE)
2956      -------------------------------------------------------------------------
2957      --Fix for Bug# 3624649. (JCGEORGE, PPEDDAMA)
2958      --Since Typically NLS_LENGTH_SEMANTICS parameter value is BYTE
2959      -- (in NLS_DATABASE_PARAMETERS table), use SUBSTRB instead of SUBSTR
2960      -- when fetching possibly MLS strings.
2961      -------------------------------------------------------------------------
2962    Write_Debug(SUBSTRB(l_dyn_sql, 1, 1000));
2963    Write_Debug(SUBSTRB(l_dyn_sql, 1001, 2000));
2967 
2964    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2965 
2966    Write_Debug('MIERR: Inserted Pre-processed error messages in MTL_INTERFACE_ERRORS');
2968    -----------------------------------------------------------------------
2969    --Now that the error messages are inserted, update MSII lines to
2970    --Process status ERROR.
2971    -----------------------------------------------------------------------
2972 
2973    UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII
2974     SET   MSII.PROCESS_FLAG = G_INTF_STATUS_ERROR
2975    WHERE  MSII.SET_PROCESS_ID = p_set_process_id
2976      AND  MSII.PROCESS_FLAG IN
2977     (
2978        G_ITEM_CATALOG_NAME_ERR_STS
2979      , G_PRIMARY_UOM_ERR_STS
2980      , G_LIFECYCLE_ERR_STS
2981      , G_LIFECYCLE_PHASE_ERR_STS
2982      , G_USER_ITEM_TYPE_ERR_STS
2983      , G_BOM_ITEM_TYPE_ERR_STS
2984      , G_ENG_ITEM_FLAG_ERR_STS
2985      , G_DESCRIPTION_ERR_STS -- Bug: 3804572
2986      , G_CONVERSIONS_ERR_STS --Bug: 3969593 Begin
2987      , G_SECONDARY_DEF_IND_ERR_STS
2988      , G_ONT_PRICING_QTY_SRC_ERR_STS
2989      , G_SECONDARY_UOM_CODE_ERR_STS
2990      , G_TRACKING_QTY_IND_ERR_STS --Bug: 3969593 End
2991      , G_INV_ITEM_STATUS_ERR_STS--Rathna MLS Status
2992      )
2993      AND  MSII.TRANSACTION_ID IN
2994      (
2995       SELECT TRANSACTION_ID
2996       FROM   EGO_BULKLOAD_INTF
2997       WHERE  RESULTFMT_USAGE_ID = p_resultfmt_usage_id
2998       );
2999 
3000    Write_Debug('MSII: Updated all the line statuses to Error for Pre-processing validation errors');
3001 
3002 --   DELETE MTL_SYSTEM_ITEMS_INTERFACE MSII
3003 --     WHERE
3004 --     (
3005 --       (
3006 --        ITEM_NUMBER                 IS NOT NULL AND
3007 --        ORGANIZATION_CODE           IS NOT NULL
3008 --       )
3009 --       OR
3010 --       (
3011 --        SOURCE_SYSTEM_REFERENCE           IS NOT NULL AND --for non-PDH Batch
3012 --        SOURCE_SYSTEM_ID           IS NOT NULL       --for non-PDH Batch
3013 --       )
3014        --In case of CREATE : Item Catalog Group ID will be NOT NULL in MSII
3015        --In case of SYNC/UPDATE, where Item ID exists, Item Catalog Group ID
3016        --will be NULL. Hence commenting out, this NOT NULL condn.
3017        --ITEM_CATALOG_GROUP_ID IS NOT NULL
3018 --       OR
3019 --       (
3020 --        DESCRIPTION IS NULL AND
3021 --        SOURCE_SYSTEM_REFERENCE IS NULL AND
3022 --        SOURCE_SYSTEM_REFERENCE_DESC IS NULL
3023 --       )
3024 --      )
3025 --     AND
3026 --      (
3027 --         DESCRIPTION               IS NULL AND
3028 --         LONG_DESCRIPTION          IS NULL AND
3029 --         PRIMARY_UOM_CODE              IS NULL AND
3030 --         LIFECYCLE_ID                  IS NULL AND
3031 --         CURRENT_PHASE_ID              IS NULL AND
3032 --         INVENTORY_ITEM_STATUS_CODE    IS NULL AND
3033 --         ITEM_TYPE                     IS NULL AND
3034 --         BOM_ITEM_TYPE                 IS NULL AND
3035 --         ENG_ITEM_FLAG                 IS NULL AND
3036          --Joseph : Bug Fix : 3621826
3037 --         TEMPLATE_ID                   IS NULL AND  --**NEW
3038 --         TEMPLATE_NAME                 IS NULL AND  --**NEW
3039 --         SOURCE_SYSTEM_REFERENCE_DESC  IS NULL AND  -- Bug: 5207217
3040 --         GLOBAL_TRADE_ITEM_NUMBER      IS NULL      -- Bug: 5207217
3041 --        )
3042 --      AND SET_PROCESS_ID = p_set_process_id
3043        ------------------------------------------------------------------------------------------------
3044        -- Fix for 11.5.10: Including PROCESS_FLAG status during this DELETE operation.
3045        --
3046        -- When ERROR happens during PRIMARY_UOM_CODE processing (NOTE: This is the first
3047        -- significant Value-to-ID conversion) then MSII.PROCESS_FLAG is set to something
3048        -- other than 1. Because of this, the subsequent transfer of the Data from EBI to MSII
3049        -- doesnot happen (as all SQLs check for EBI, MSII Process Status to be 1 for transfer).
3050        -- So, this DELETE will go through successfully, as all the columns are NULL (other than
3051        -- ITEM_NUMBER, ORGANIZATION_CODE.)
3052        -- Then EBI stays in PROCESS_STATUS = 1, which is later converted to 7 in Item_intf_completion.
3053        --
3054        -- Because of this User-Defined attrs for those rows are ERRONEOUSLY picked and processed.
3055        ------------------------------------------------------------------------------------------------
3056 --      AND PROCESS_FLAG = G_PROCESS_STATUS  --Bug 3763665
3057 --      AND (EXISTS(   -- there exists a row where item is being Created or updated in the same request
3058 --                  SELECT 'X'
3059 --                  FROM MTL_SYSTEM_ITEMS_INTERFACE MSI
3060 --                  WHERE MSI.DESCRIPTION IS NOT NULL
3061 --                  AND NVL(MSI.ITEM_NUMBER,FND_API.G_MISS_CHAR) = NVL(MSII.ITEM_NUMBER,FND_API.G_MISS_CHAR)
3062 --                  AND SET_PROCESS_ID = p_set_process_id
3063 --                  AND PROCESS_FLAG = G_PROCESS_STATUS
3064 --                  )
3065 --           OR EXISTS(
3066 --                  SELECT 'X'
3067 --                  FROM MTL_SYSTEM_ITEMS_B MSI
3068 --                  WHERE  MSII.INVENTORY_ITEM_ID  = MSI.INVENTORY_ITEM_ID
3069 --                  AND MSII.ORGANIZATION_ID = MSI.ORGANIZATION_ID
3070 --                  )-- End Bug 3763665
3071 --            );
3072 
3073 --   Write_Debug('Preprocess_Item_Interface : NEW Deleted redundant / unnecessary rows from MSII');
3074 
3075    -- Bug: 5519768
3076    -- ENG_ITEM_FLAG will be defaulted from IOI, so commented the below code
3077 --   IF G_PDH_BATCH THEN
3081 --     -- Engineering Items.
3078 --     -----------------------------------------------------------------------
3079 --     -- Set the ENG_ITEM_FLAG to Y for all the New Items TO-BE Created.
3080 --     -- So, all new Items (if ENG_ITEM_FLAG is unspecified) are created as
3082 --     -----------------------------------------------------------------------
3083 --
3084 --      UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII
3085 --        SET   MSII.ENG_ITEM_FLAG = 'Y'
3086 --        WHERE MSII.SET_PROCESS_ID = p_set_process_id
3087 --         AND  MSII.INVENTORY_ITEM_ID IS NULL
3088 --         AND  MSII.TRANSACTION_TYPE IN ('SYNC', 'CREATE')
3089 --         AND  MSII.PROCESS_FLAG = G_PROCESS_STATUS
3090 --         AND  MSII.ENG_ITEM_FLAG IS NULL
3091 --         AND  MSII.ORGANIZATION_ID  = (SELECT ORGANIZATION_ID
3092 --                                       FROM MTL_PARAMETERS MP
3093 --                                       WHERE ORGANIZATION_ID = MSII.ORGANIZATION_ID
3094 --                                       AND ORGANIZATION_ID = MASTER_ORGANIZATION_ID
3095 --                                      );
3096 --Bug 4721682 : not to set the ENG_ITEM_FLAG if the ORGANIZATION IS NOT MASTER ORG
3097 --
3098 --     Write_Debug('Preprocess_Item_Interface : Set Eng Item Flag = Y in case of NULL for New to-be created items.');
3099 --   END IF;
3100 
3101 END preprocess_item_interface;
3102 
3103 
3104  ----------------------------------------------------------
3105  --  Setup Item Interface Lines                          --
3106  ----------------------------------------------------------
3107 PROCEDURE Setup_item_interface
3108                (
3109                  p_resultfmt_usage_id    IN         NUMBER,
3110                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
3111                  p_set_process_id        IN         NUMBER,
3112                  x_set_process_id        OUT NOCOPY NUMBER,
3113                  x_errbuff               OUT NOCOPY VARCHAR2,
3114                  x_retcode               OUT NOCOPY VARCHAR2
3115                 ) IS
3116 
3117     -- Start OF comments
3118     -- API name  : Setup MSII Item Interface Lines for processing
3119     -- TYPE      : Private
3120     -- Pre-reqs  : None
3121     -- FUNCTION  : Populate and Prepare Item interfance lines.
3122     --             Eliminates any redundancy / errors in MSII
3123 
3124   l_set_process_id   NUMBER(15);
3125 
3126 BEGIN
3127 
3128    ----------------------------------------------
3129    --  Populates rows in MSII
3130    ----------------------------------------------
3131    Developer_Debug('calling load_item_interface');
3132    load_item_interface(
3133         p_resultfmt_usage_id  => p_resultfmt_usage_id
3134        ,p_set_process_id      => p_set_process_id
3135        ,x_set_process_id      => l_set_process_id
3136        ,p_caller_identifier   => p_caller_identifier
3137        ,x_errbuff             => x_errbuff
3138        ,x_retcode             => x_retcode
3139             );
3140    Developer_Debug('returning with retcode'||x_retcode);
3141 
3142    -----------------------------------------------------
3143    -- Deletes redundant / unnecessary rows from MSII.
3144    -----------------------------------------------------
3145    preprocess_item_interface(
3146         p_resultfmt_usage_id  => p_resultfmt_usage_id
3147        ,p_set_process_id      => l_set_process_id
3148        ,p_caller_identifier   => p_caller_identifier
3149        ,x_errbuff             => x_errbuff
3150        ,x_retcode             => x_retcode
3151             );
3152 
3153    x_set_process_id := l_set_process_id;
3154    Write_Debug('Setup_Item_Interface : Set Process Id => '||x_set_process_id);
3155 
3156  EXCEPTION
3157    WHEN OTHERS THEN
3158       x_retcode := G_STATUS_ERROR;
3159       x_errbuff := SUBSTRB(SQLERRM, 1,240);
3160       Write_Debug('Setup_Item_Interface : EXCEPTION HAPPENED => '||x_errbuff);
3161       RAISE;
3162 
3163 END setup_item_interface;
3164 
3165 
3166  -------------------------------------------------------------------
3167  --  Change Item Interface Lines process statuses as completed.   --
3168  --  Statuses represent: Warning, Error, Success etc.,            --
3169  -------------------------------------------------------------------
3170 PROCEDURE Item_intf_completion
3171   (
3172     p_resultfmt_usage_id     IN    NUMBER
3173   , x_errbuff                OUT NOCOPY  VARCHAR2
3174   , x_retcode                OUT NOCOPY  VARCHAR2
3175     ) IS
3176 
3177   -----------------------------------------------
3178   -- Long Dynamic SQL String
3179   -----------------------------------------------
3180   l_dyn_sql                VARCHAR2(10000);
3181 
3182 BEGIN
3183 
3184    -----------------------------------------------------------------
3185    -- Update EBI, with the process status of rows in MSII after
3186    -- the completion of IOI processing.
3187    -----------------------------------------------------------------
3188    UPDATE EGO_BULKLOAD_INTF EBI
3189      SET  EBI.PROCESS_STATUS =
3190      (
3191       SELECT MSII.PROCESS_FLAG
3192       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3193       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3194       )
3195      WHERE EXISTS
3196      (
3197       SELECT 'X'
3198       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3199       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3200       )
3201      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
3202 
3206    --1. For Transaction Type : CREATE, Item ID should be populated
3203    ----------------------------------------------------------------------------
3204    --Update all the lines in EGO_BULKLOAD_INTF as failure, for which
3205    --The Inventory Item IDs were not available.
3207    --   at the end of Processing
3208    --2. For Transaction Type : SYNC / UPDATE, Item ID should be
3209    --   retrieved during processing.
3210    ----------------------------------------------------------------------------
3211 -- R12: this is not required
3212 --   UPDATE EGO_BULKLOAD_INTF EBI
3213 --     SET  EBI.PROCESS_STATUS = G_INTF_STATUS_ERROR
3214 --     WHERE EXISTS
3215 --     (
3216 --      SELECT 'X'
3217 --      FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3218 --      WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3219 --       AND   MSII.PROCESS_FLAG   = G_INTF_STATUS_SUCCESS
3220 --       AND   MSII.INVENTORY_ITEM_ID IS NULL
3221 --      )
3222 --     AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
3223 
3224    ----------------------------------------------------------------------------
3225    -- Update all the lines in EGO_BULKLOAD_INTF as SUCCESS
3226    -- for these rows were used to populate Multi-Row
3227    -- Appropriate errors will be displayed by the User-Defined Attrs Import
3228    -- processing later.
3229    ----------------------------------------------------------------------------
3230    UPDATE EGO_BULKLOAD_INTF EBI
3231      SET  EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS
3232      WHERE EBI.PROCESS_STATUS = G_INTF_STATUS_TOBE_PROCESS
3233      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
3234 
3235    ----------------------------------------------------------------------------
3236    -- Update the Item IDs (Doesnt matter Create or Update, because
3237    -- Item IDs will be populated either way in MSII) in
3238    -- Generic Bulkload Intf table (EGO_BULKLOAD_INTF)
3239    -- These Item IDs are required for Item User-Defined Attrs bulkload
3240    ----------------------------------------------------------------------------
3241    UPDATE EGO_BULKLOAD_INTF EBI
3242      SET  EBI.INSTANCE_PK1_VALUE =
3243      (
3244       SELECT MSII.INVENTORY_ITEM_ID
3245       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3246       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3247       )
3248      WHERE EXISTS
3249      (
3250       SELECT 'X'
3251       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3252       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3253       )
3254      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
3255      AND EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS;
3256 
3257    Write_Debug('EBI: Updated the Process_Status to Indicate Succssful/Unsucessful completion.');
3258 
3259    x_retcode := G_STATUS_SUCCESS;
3260 
3261  EXCEPTION
3262    WHEN OTHERS THEN
3263       x_retcode := G_STATUS_ERROR;
3264       x_errbuff := SUBSTRB(SQLERRM, 1,240);
3265       Write_Debug('Item_Intf_Completion : EXCEPTION HAPPENED => '||x_errbuff);
3266       RAISE;
3267 
3268 END Item_Intf_Completion;
3269 
3270  ----------------------------------------------------------
3271  -- Populate Item Revision Interface Lines               --
3272  ----------------------------------------------------------
3273 
3274 PROCEDURE load_item_revs_interface
3275                (
3276                  p_resultfmt_usage_id    IN         NUMBER,
3277                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
3278                  p_data_level            IN         VARCHAR2,
3279                  p_set_process_id        IN         NUMBER,
3280                  x_set_process_id        OUT NOCOPY NUMBER,
3281                  x_errbuff               OUT NOCOPY VARCHAR2,
3282                  x_retcode               OUT NOCOPY VARCHAR2
3283                 ) IS
3284 
3285     -- Start OF comments
3286     -- API name  : Populate MTL_ITEM_REVISIONS_INTERFACE table
3287     -- TYPE      : Private
3288     -- Pre-reqs  : None
3289     -- FUNCTION  : Populate and Load Item Revisions interfance lines.
3290     --             Loads Item Revision Attr Values
3291     --             Errors are populated in MTL_INTERFACE_ERRORS
3292        --
3293 
3294   ------------------------------------------------------------------------------------------
3295   -- To get the Item Revision Base attr columns in the Result Format.
3296   -- NOTE: Only one of the SELECTs below will be active at a time, based on the Data Level.
3297   ------------------------------------------------------------------------------------------
3298   CURSOR c_item_rev_attr_intf_cols (c_resultfmt_usage_id  IN  NUMBER) IS
3299     --Item Revision Data Level
3300     SELECT attribute_code, intf_column_name
3301     FROM   ego_results_fmt_usages
3302     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
3303      AND   attribute_code NOT LIKE '%$$%'
3304      ---------------------------------------------------------------------------
3305      -- Added NOT LIKE 'GTIN_%' to filter out Dummy Attrs for Attr Group: "GTIN"
3306      ---------------------------------------------------------------------------
3307      AND   attribute_code NOT LIKE 'GTIN_%'
3308      AND   p_data_level = G_ITEM_REV_DATA_LEVEL
3309    UNION
3310     -------------------
3311     --Item Data Level
3312     -------------------
3313     SELECT attribute_code, intf_column_name
3314     FROM   ego_results_fmt_usages
3315     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
3316      AND   attribute_code NOT LIKE '%$$%'
3317      ---------------------------------------------------------------------------
3321      AND   p_data_level = G_ITEM_DATA_LEVEL
3318      -- Added NOT LIKE 'GTIN_%' to filter out Dummy Attrs for Attr Group: "GTIN"
3319      ---------------------------------------------------------------------------
3320      AND   attribute_code NOT LIKE 'GTIN_%'
3322      AND (
3323      attribute_code IN -- Segregating Item Revision Base Attributes using this clause
3324       (
3325         select LOOKUP_CODE CODE
3326         from   FND_LOOKUP_VALUES
3327         where  LOOKUP_TYPE = 'EGO_ITEM_REV_HDR_ATTR_GRP'
3328         AND    LANGUAGE = USERENV('LANG')
3329         AND    ENABLED_FLAG = 'Y'
3330         and LOOKUP_CODE not in ('REVISION_CREATION_DATE', 'REVISION_CREATED_BY')
3331      )
3332      OR
3333      attribute_code = G_REV_EFF_DATE_ATTR_CODE
3334      -- Bug 6186037
3335      --accomodate for revision effective date which doest exist in EGO_ITEM_REV_HDR_ATTR_GRP and cannot be included
3336 
3337      );
3338 
3339   --------------------------------------------------------------------------
3340   -- To check if the given Set Process ID already exists in MSII.
3341   --------------------------------------------------------------------------
3342   CURSOR c_msii_set_id_exists(c_set_process_id IN NUMBER) IS
3343     SELECT 'x'
3344     FROM mtl_system_items_interface
3345     WHERE set_process_id = c_set_process_id;
3346 
3347   ---------------------------------------------------------------------
3348   -- Type Declarations
3349   ---------------------------------------------------------------------
3350   TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(256)
3351    INDEX BY BINARY_INTEGER;
3352 
3353                -------------------------
3354                --   local variables   --
3355                -------------------------
3356   l_prod_col_name_tbl               VARCHAR_TBL_TYPE;
3357   l_intf_col_name_tbl               VARCHAR_TBL_TYPE;
3358 
3359   l_prod_col_name       VARCHAR2(256);
3360   l_intf_col_name       VARCHAR2(256);
3361 
3362   ---------------------------------------------------------------------
3363   -- Assuming that the column name will not be more than 30 chars.
3364   ---------------------------------------------------------------------
3365   l_item_number_col        VARCHAR2(30);
3366   l_org_code_col           VARCHAR2(30);
3367   l_rev_code_col           VARCHAR2(30);
3368   l_lifecycle_col_val        VARCHAR2(50);
3369   l_lifecycle_phase_col_val  VARCHAR2(50);
3370   l_inventory_item_id      MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID%TYPE;
3371   l_item_catalog_name_col   VARCHAR2(50);
3372 
3373   l_msii_set_process_id    NUMBER;
3374   i                        NUMBER;
3375   l_cursor_select     INTEGER;
3376   l_cursor_execute    INTEGER;
3377 
3378   l_item_number_table   DBMS_SQL.VARCHAR2_TABLE;
3379   l_org_id_table        DBMS_SQL.NUMBER_TABLE;
3380   l_temp                  NUMBER(10) := 1;
3381   l_count               NUMBER := 0;
3382   l_exists              VARCHAR2(2);
3383 
3384   l_trans_id_table      DBMS_SQL.NUMBER_TABLE;
3385 
3386   --------------------------------------------
3387   -- Long Dynamic SQL String
3388   --------------------------------------------
3389   l_dyn_sql                VARCHAR2(10000);
3390 
3391 BEGIN
3392    Write_Debug('*Item Revisions Interface*');
3393 
3394    Write_Debug('About to populate the EBI with Trans IDs');
3395 
3396    --------------------------------------------------------------------
3397    --Populate the Transaction IDs for current Result fmt usage ID
3398    --------------------------------------------------------------------
3399    -- Bug: 3804572 - Error messages are not shown, if import format contains revision attrs.
3400    -- this was happening because the error was logged with a previous transaction id and
3401    -- here a new transaction id was updated to Bulkload interface table.
3402    IF p_data_level <> G_ITEM_DATA_LEVEL THEN
3403      UPDATE ego_bulkload_intf
3404        SET  transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL
3405      WHERE  resultfmt_usage_id = p_resultfmt_usage_id;
3406    END IF;
3407 
3408    Write_Debug('Retrieving the Display and INTF cols');
3409    i := 0;
3410    --------------------------------------------------------------------
3411    -- Saving the column names in local table for easy retrieval later.
3412    -- Also save important columns such as Item ID, Org ID etc.,
3413    --------------------------------------------------------------------
3414    FOR c_item_rev_attr_intf_rec IN c_item_rev_attr_intf_cols
3415      (
3416        p_resultfmt_usage_id
3417       )
3418    LOOP
3419 
3420      l_prod_col_name := c_item_rev_attr_intf_rec.attribute_code;
3421      l_intf_col_name := c_item_rev_attr_intf_rec.intf_column_name;
3422 
3423      Write_Debug('The caller identity is : '|| p_caller_identifier);
3424      Write_Debug('p_data_level =>: '|| p_data_level);
3425 
3426       --------------------------------------------------------------------
3427       -- If the Caller Identifer is G_ITEM, then save the column info.
3428       --------------------------------------------------------------------
3429      IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM) THEN
3430 
3431       --------------------------------------------------------------------
3432       -- Store the Item Number column name in the Generic Interface
3433       --------------------------------------------------------------------
3434       IF (l_prod_col_name = G_ITEM_NUMBER) THEN
3435         l_item_number_col := l_intf_col_name;
3439       -- Store the Organization Code column name in the Generic Interface
3436         Write_Debug('Item Number : '||l_item_number_col);
3437 
3438       --------------------------------------------------------------------
3440       --------------------------------------------------------------------
3441       ELSIF (l_prod_col_name = G_ORG_CODE) THEN
3442         l_org_code_col := l_intf_col_name;
3443         Write_Debug('Organization Code : '||l_org_code_col);
3444 
3445       --------------------------------------------------------------------
3446       --Saving the Rest of column names.
3447       --------------------------------------------------------------------
3448       ELSIF (l_prod_col_name IN (G_ITEM_CATALOG_GROUP,G_ITEM_CATALOG_GROUP1)) THEN
3449           l_item_catalog_name_col := l_intf_col_name;
3450 
3451       ELSE
3452         ---------------------------------------------------------------------
3453         -- Mapping the Revision Attribute Code to the Database Column.
3454         ---------------------------------------------------------------------
3455       IF (l_prod_col_name =  G_REV_CODE_ATTR_CODE) THEN
3456           l_prod_col_name_tbl(i) := G_REV_CODE_DB_COL;
3457           ------------------------------------------
3458           -- Saving the intf col name for Rev Code.
3459           ------------------------------------------
3460           l_rev_code_col :=  l_intf_col_name;
3461         ELSIF (l_prod_col_name =  G_REV_LABEL_ATTR_CODE) THEN
3462           l_prod_col_name_tbl(i) := G_REV_LABEL_DB_COL;
3463         ELSIF (l_prod_col_name =  G_REV_DESCRIPTION_ATTR_CODE) THEN
3464           l_prod_col_name_tbl(i) := G_REV_DESCRIPTION_DB_COL;
3465         ELSIF (l_prod_col_name =  G_REV_REASON_ATTR_CODE) THEN
3466           l_prod_col_name_tbl(i) := G_REV_REASON_DB_COL;
3467         ELSIF (l_prod_col_name =  G_REV_LC_ID_ATTR_CODE) THEN
3468           l_prod_col_name_tbl(i) := G_REV_LC_ID_DB_COL;
3469         ELSIF (l_prod_col_name =  G_REV_LC_PHASE_ID_ATTR_CODE) THEN
3470           l_prod_col_name_tbl(i) := G_REV_LC_PHASE_ID_DB_COL;
3471         ELSIF (l_prod_col_name =  G_REV_IMPL_DATE_ATTR_CODE) THEN
3472           l_prod_col_name_tbl(i) := G_REV_IMPL_DATE_DB_COL;
3473         ELSIF (l_prod_col_name =  G_REV_EFF_DATE_ATTR_CODE OR
3474                l_prod_col_name =  G_REV_EFF_DATE_ATTR_CODE_2 ) THEN
3475           l_prod_col_name_tbl(i) := G_REV_EFF_DATE_DB_COL;
3476         ELSIF (l_prod_col_name =  G_REV_ID_ATTR_CODE) THEN
3477           NULL; --do nothing
3478         ELSE
3479           ---------------------------------------------------------
3480           -- The Attribute Code and DB Column name are the same.
3481           ---------------------------------------------------------
3482           l_prod_col_name_tbl(i) := l_prod_col_name;
3483         END IF;
3484 
3485         l_intf_col_name_tbl(i) := l_intf_col_name;
3486 
3487       END IF; --IF (l_prod_col_name = G_ITEM_NUMBER) THEN
3488 
3489     END IF; --IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM)
3490      Write_Debug('^^l_prod_col_name_tbl('||i||') : '||l_prod_col_name_tbl(i));
3491      Write_Debug('^^l_intf_col_name_tbl('||i||') : '||l_intf_col_name_tbl(i));
3492      i := i+1;
3493 
3494    END LOOP; --FOR c_item_rev_attr_intf_rec
3495 
3496    ---------------------------------------------------------------------
3497    -- All the following need not be executed if Revision Update       --
3498    -- is done through Item Search Results.                            --
3499    ---------------------------------------------------------------------
3500    IF p_data_level = G_ITEM_REV_DATA_LEVEL THEN
3501 
3502      Write_Debug('Updating EBI with Org IDs');
3503 
3504      ---------------------------------------------
3505      -- Update Instance PK2 Value with ORG ID.  --
3506      ---------------------------------------------
3507      l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF EBI ';
3508      l_dyn_sql := l_dyn_sql || ' SET INSTANCE_PK2_VALUE = ';
3509      l_dyn_sql := l_dyn_sql || '  ( ';
3510      l_dyn_sql := l_dyn_sql || '      SELECT ORGANIZATION_ID      ';
3511      l_dyn_sql := l_dyn_sql || '      FROM     MTL_PARAMETERS     ';
3512      l_dyn_sql := l_dyn_sql || '      WHERE  ORGANIZATION_CODE = EBI.'||l_org_code_col;
3513      l_dyn_sql := l_dyn_sql || '   ) ';
3514      l_dyn_sql := l_dyn_sql || 'WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3515      l_dyn_sql := l_dyn_sql || ' AND     PROCESS_STATUS = 1                                   ';
3516 
3517      Write_Debug(l_dyn_sql);
3518      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3519      Write_Debug('Selecting Org IDs, Item Numbers');
3520 
3521      ---------------------------------------------------------------------
3522      -- Update EBI with Catalog Group Name if present in the Result Format
3523      ---------------------------------------------------------------------
3524      IF l_item_catalog_name_col IS NOT NULL THEN
3525        l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
3526        l_dyn_sql := l_dyn_sql || ' SET  ';
3527        l_dyn_sql := l_dyn_sql || G_ITEM_CATALOG_NAME_EBI_COL||' = '||l_item_catalog_name_col ;
3528        l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3529        l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
3530        Write_Debug(l_dyn_sql);
3531 
3532        EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3533        Write_Debug('Updated EBI with Catalog Group Name for Item Revisions');
3534      END IF;
3535 
3536      --------------------------------------------------------------
3540      l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID           ';
3537      -- Fetch Organization ID, Item Number in Temp PLSQL tables.
3538      --------------------------------------------------------------
3539      l_dyn_sql :=              ' SELECT INSTANCE_PK2_VALUE, '||l_item_number_col || ', ';
3541      l_dyn_sql := l_dyn_sql || ' FROM  EGO_BULKLOAD_INTF ';
3542      l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3543      l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1                                   ';
3544      Write_Debug(l_dyn_sql);
3545 
3546      l_cursor_select := DBMS_SQL.OPEN_CURSOR;
3547      DBMS_SQL.PARSE(l_cursor_select, l_dyn_sql, DBMS_SQL.NATIVE);
3548      DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 1,l_org_id_table,2500, l_temp);
3549      DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 2,l_item_number_table,2500, l_temp);
3550      DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 3,l_trans_id_table,2500, l_temp);
3551      DBMS_SQL.BIND_VARIABLE(l_cursor_select,':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
3552      l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_select);
3553      Write_Debug('About to start the Loop to fetch Rows');
3554 
3555      LOOP
3556        l_count := DBMS_SQL.FETCH_ROWS(l_cursor_select);
3557        DBMS_SQL.COLUMN_VALUE(l_cursor_select, 1, l_org_id_table);
3558        DBMS_SQL.COLUMN_VALUE(l_cursor_select, 2, l_item_number_table);
3559        DBMS_SQL.COLUMN_VALUE(l_cursor_select, 3, l_trans_id_table);
3560 
3561        Write_Debug('Retrieved rows => '||To_char(l_count));
3562 
3563        -------------------------------------------------------------
3564        -- Loop to Update the Inventory Item IDs.
3565        -------------------------------------------------------------
3566        FOR i IN 1..l_org_id_table.COUNT LOOP
3567 
3568          Write_Debug('Org ID : '||To_char(l_org_id_table(i)));
3569          Write_Debug('Inv Item Num : '||l_item_number_table(i));
3570 
3571          -------------------------------------------------------------
3572          -- Invoke FND Key Flex API to fetch the Inventory Item ID.
3573          -- If Inventory Item ID found, then update in EBI.
3574          -------------------------------------------------------------
3575          IF FND_FLEX_KEYVAL.Validate_Segs
3576          (  operation         =>  'FIND_COMBINATION'
3577          ,  appl_short_name   =>  'INV'
3578          ,  key_flex_code     =>  'MSTK'
3579          ,  structure_number  =>  101
3580          ,  concat_segments   =>  l_item_number_table(i)
3581          ,  data_set          =>  l_org_id_table(i)
3582          )
3583          THEN
3584            l_inventory_item_id := FND_FLEX_KEYVAL.combination_id;
3585 
3586            Write_Debug('Inv Item ID : '||To_char(l_inventory_item_id));
3587 
3588            l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
3589            l_dyn_sql := l_dyn_sql || ' SET  INSTANCE_PK1_VALUE  = '||l_inventory_item_id;
3590            l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = '||l_org_id_table(i);
3591            l_dyn_sql := l_dyn_sql || ' AND '|| l_item_number_col|| ' = :ITEM_NUMBER';
3592            l_dyn_sql := l_dyn_sql || ' AND  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3593            l_dyn_sql := l_dyn_sql || ' AND  PROCESS_STATUS = 1 ';
3594 
3595            Write_Debug(l_dyn_sql);
3596            EXECUTE IMMEDIATE l_dyn_sql USING l_item_number_table(i), p_resultfmt_usage_id;
3597 
3598          END IF; --IF FND_FLEX_KEYVAL..
3599 
3600          Write_Debug('G_CATALOG_GROUP_ID => '||G_CATALOG_GROUP_ID);
3601          -----------------------------------------------------------------
3602          -- Setting Category ID for Item Revision Flow.
3603          -- Bug #5179741(RSOUNDAR)
3604          -----------------------------------------------------------------
3605          IF G_CATALOG_GROUP_ID IS NULL THEN
3606            IF l_item_catalog_name_col IS NOT NULL THEN
3607              l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF EBI';
3608              l_dyn_sql := l_dyn_sql || ' SET '||G_ITEM_CATALOG_EBI_COL||' = ';
3609              l_dyn_sql := l_dyn_sql || '( ';
3610              l_dyn_sql := l_dyn_sql || '    SELECT TO_CHAR(MICG.ITEM_CATALOG_GROUP_ID) ';
3611              l_dyn_sql := l_dyn_sql || '    FROM   MTL_ITEM_CATALOG_GROUPS_B_KFV MICG  ';
3612              l_dyn_sql := l_dyn_sql || '    WHERE  MICG.CONCATENATED_SEGMENTS = EBI.'||l_item_catalog_name_col;
3613              l_dyn_sql := l_dyn_sql || ') ';
3614              l_dyn_sql := l_dyn_sql || ' WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
3615              l_dyn_sql := l_dyn_sql || ' AND EBI.'||l_item_catalog_name_col||' IS NOT NULL';
3616              l_dyn_sql := l_dyn_sql || ' AND EBI.PROCESS_STATUS = 1  ';
3617              Write_Debug(l_dyn_sql);
3618              EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3619            ELSE -- l_item_catalog_name_col IS NULL
3620              -- no need to do anything here
3621              NULL;
3622            END IF; -- l_item_catalog_name_col IS NOT NULL
3623          ELSE  -- G_CATALOG_GROUP_ID IS NOT NULL
3624 
3625            l_dyn_sql := ' UPDATE EGO_BULKLOAD_INTF ';
3626            -------------------------------------------------------------
3627            --Storing Catalog Group ID and other imp data in buffer cols
3628            -------------------------------------------------------------
3629            l_dyn_sql := l_dyn_sql || ' SET  '||G_ITEM_CATALOG_EBI_COL||' = '||G_CATALOG_GROUP_ID;
3630            l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = :ORGANIZATION_ID ';
3631            l_dyn_sql := l_dyn_sql || ' AND  TRANSACTION_ID = :TRANSACTION_ID ';
3632            l_dyn_sql := l_dyn_sql || ' AND  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3636            EXECUTE IMMEDIATE l_dyn_sql USING l_org_id_table(i), l_trans_id_table(i), p_resultfmt_usage_id;
3633            l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
3634 
3635            Write_Debug(l_dyn_sql);
3637 
3638          END IF;--end: IF (G_CATALOG_GROUP_ID IS NULL)
3639 
3640        END LOOP; --FOR i IN 1..l_org_id_table.COUNT LOOP
3641 
3642        l_org_id_table.DELETE;
3643        l_item_number_table.DELETE;
3644 
3645        -----------------------------------------------------------------
3646        -- For the final batch of records, either it will be 0 or < 2500
3647        -----------------------------------------------------------------
3648        EXIT WHEN l_count <> 2500;
3649 
3650      END LOOP; --l_count := DBMS_SQL.FETCH_ROWS(l_cursor_select);
3651 
3652      DBMS_SQL.CLOSE_CURSOR(l_cursor_select);
3653 
3654      Write_Debug('Done with Item IDs population.');
3655 
3656      -----------------------------------------------------------------
3657      -- Determine the Set Process ID, that is unique for MSII
3658      -----------------------------------------------------------------
3659      IF p_set_process_id IS NULL THEN
3660        SELECT mtl_system_items_intf_sets_s.NEXTVAL
3661          INTO l_msii_set_process_id
3662        FROM dual;
3663      ELSE
3664        l_msii_set_process_id := p_set_process_id;
3665      END IF;
3666 
3667      ---------------------------------------------------------------------
3668      -- END: All the above need not be executed if Revision Update      --
3669      -- is done through Item Search Results.                            --
3670      ---------------------------------------------------------------------
3671 
3672    ELSE --p_data_level = G_ITEM_DATA_LEVEL
3673 
3674      Write_Debug('Item Rev Intf using the Set Process ID used by Item Interface');
3675 
3676      ----------------------------------------------------------------------------
3677      -- Using the Set Process ID used by Item Interface, as Revs are updated
3678      -- as part of Item Search Results.
3679      ----------------------------------------------------------------------------
3680      l_msii_set_process_id := G_MSII_SET_PROCESS_ID;
3681 
3682      ----------------------------------------------------------------------------
3683      -- During Item processing itself, ITEM_NUMBER and ORG_CODE are loaded
3684      -- in following columns.
3685      ----------------------------------------------------------------------------
3686      l_item_number_col := G_ITEM_NUMBER_EBI_COL;
3687      l_org_code_col := G_ORG_CODE_EBI_COL;
3688 
3689    END IF; --end: IF p_data_level = G_ITEM_REV_DATA_LEVEL
3690 
3691    Write_Debug('l_msii_set_process_id : '||To_char(l_msii_set_process_id));
3692 
3693    -----------------------------------------------------------------
3694    -- Insert rows from EBI into MSII
3695    -----------------------------------------------------------------
3696    l_dyn_sql :=              'INSERT INTO MTL_ITEM_REVISIONS_INTERFACE ';
3697    l_dyn_sql := l_dyn_sql || '( ';
3698    l_dyn_sql := l_dyn_sql || ' SET_PROCESS_ID        ,   ';
3699    l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID        ,   ';
3700    l_dyn_sql := l_dyn_sql || ' REQUEST_ID            ,   ';
3701    l_dyn_sql := l_dyn_sql || ' PROGRAM_APPLICATION_ID,   ';
3702    l_dyn_sql := l_dyn_sql || ' PROGRAM_ID            ,   ';
3703    l_dyn_sql := l_dyn_sql || ' TRANSACTION_TYPE      ,   ';
3704    l_dyn_sql := l_dyn_sql || ' INVENTORY_ITEM_ID     ,   ';
3705    l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID       ,   ';
3706    l_dyn_sql := l_dyn_sql || ' ITEM_NUMBER           ,   ';
3707    l_dyn_sql := l_dyn_sql || ' ORGANIZATION_CODE     ,   ';
3708    l_dyn_sql := l_dyn_sql || ' PROCESS_FLAG          ,   ';
3709    l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_ID      ,   ';
3710    l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE   ';
3711    l_dyn_sql := l_dyn_sql || ') ';
3712    l_dyn_sql := l_dyn_sql || 'SELECT ';
3713    l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
3714    l_dyn_sql := l_dyn_sql || ' EBI.TRANSACTION_ID       , ';
3715    l_dyn_sql := l_dyn_sql || G_REQUEST_ID||' , ';
3716    l_dyn_sql := l_dyn_sql || G_PROG_APPID||' , ';
3717    l_dyn_sql := l_dyn_sql || G_PROG_ID||' , ';
3718    l_dyn_sql := l_dyn_sql || ' UPPER(EBI.TRANSACTION_TYPE)  , ';
3719    l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
3720    l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
3721    l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
3722    l_dyn_sql := l_dyn_sql || ' EBI.'||l_org_code_col ||' , ';
3723    l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS    ||' , ';
3724    l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11) , ';
3725    l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12       ';
3726    l_dyn_sql := l_dyn_sql || 'FROM EGO_BULKLOAD_INTF EBI ';
3727    l_dyn_sql := l_dyn_sql || ' WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3728    l_dyn_sql := l_dyn_sql || ' AND   EBI.PROCESS_STATUS = 1  ';
3729 
3730    Write_Debug(l_dyn_sql);
3731    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3732    Write_Debug('Item Revs Interface: Populated the Inv Item IDs, Org IDs.');
3733 
3734    ----------------------------------------------------------------------------------
3735    --Save Item Num, Org Code in designated columns in EBI for Error Reporting later
3736    ----------------------------------------------------------------------------------
3737    l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
3738    l_dyn_sql := l_dyn_sql || ' SET  ';
3739    -----------------------------------------------------------------------------------------
3743    IF p_data_level = G_ITEM_REV_DATA_LEVEL THEN
3740    -- In case of ITEM_LEVEL the following is already populated in load_item_interface_lines
3741    -- procedure.
3742    -----------------------------------------------------------------------------------------
3744      l_dyn_sql := l_dyn_sql || G_ITEM_NUMBER_EBI_COL||' = '||l_item_number_col||' , ';
3745      l_dyn_sql := l_dyn_sql || G_ORG_CODE_EBI_COL||' = '||l_org_code_col ||' , ';
3746    END IF;
3747 
3748    l_dyn_sql := l_dyn_sql || G_REVISION_CODE_EBI_COL||' = '||l_rev_code_col;
3749    l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3750    l_dyn_sql := l_dyn_sql ||   ' AND PROCESS_STATUS = 1 ';
3751 
3752    Write_Debug(l_dyn_sql);
3753    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3754    Write_Debug('Item Revs Interface: Done saving Item Num, Org Code, Rev Code in EBI for error retrieval later.');
3755 
3756    ---------------------------------------
3757    -- Reset i back to 0, for re-use.
3758    ---------------------------------------
3759    i := 0;
3760    IF ( l_prod_col_name_tbl.count > 0) THEN
3761       FOR i IN l_prod_col_name_tbl.first .. l_prod_col_name_tbl.last LOOP
3762         Write_Debug('*l_prod_col_name_tbl(i)'||l_prod_col_name_tbl(i));
3763         Write_Debug('*l_intf_col_name_tbl(i)'||l_intf_col_name_tbl(i));
3764 
3765         IF (l_prod_col_name_tbl(i) = G_REV_REASON_DB_COL) THEN
3766 
3767           ----------------------------------------------------------------------------------
3768           --  Transfer the Revision Reason information from EBI to MIRI
3769           --  by doing Value-to-ID Conversion.
3770           ----------------------------------------------------------------------------------
3771           l_dyn_sql := '';
3772           l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
3773           l_dyn_sql := l_dyn_sql || ' SET   MIRI.'||G_REV_REASON_DB_COL||' =  ';
3774           l_dyn_sql := l_dyn_sql || '( ';
3775           l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
3776           l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
3777           l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE = ''EGO_ITEM_REVISION_REASON'' ';
3778           l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE = Userenv(''LANG'') ';
3779           l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING = EBI.'||l_intf_col_name_tbl(i);
3780           l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3781           l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3782           ----------------------------------------------------------------------------------
3783           --  WHERE EXISTS takes care of filtering lines. Hence this join not needed.
3784           --  l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
3785           ----------------------------------------------------------------------------------
3786           l_dyn_sql := l_dyn_sql || ') ';
3787           l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
3788           l_dyn_sql := l_dyn_sql || '( ';
3789           l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
3790           l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
3791           l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE = ''EGO_ITEM_REVISION_REASON'' ';
3792           l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE = Userenv(''LANG'') ';
3793           l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING = EBI.'||l_intf_col_name_tbl(i);
3794           l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
3795           l_dyn_sql := l_dyn_sql || '     AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3796           l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
3797           l_dyn_sql := l_dyn_sql || ') ';
3798 
3799           Write_Debug(l_dyn_sql);
3800           EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
3801           Write_Debug('MIRI: Updated the Revision Reason Codes.');
3802 
3803         ----------------------------------------------------------------------------------
3804         --  Bug# 3421497 fix.
3805         --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
3806         --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
3807         --  dependant upon the Lifecycle ID value.
3808         ----------------------------------------------------------------------------------
3809         ELSIF (l_prod_col_name_tbl(i) = G_LIFECYCLE) THEN
3810 
3811           l_lifecycle_col_val := l_intf_col_name_tbl(i);
3812 
3813         ----------------------------------------------------------------------------------
3814         --  Bug# 3421497 fix.
3815         --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
3816         --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
3817         --  dependant upon the Lifecycle ID value.
3818         ----------------------------------------------------------------------------------
3819         ELSIF (l_prod_col_name_tbl(i) = G_LIFECYCLE_PHASE) THEN
3820 
3821           l_lifecycle_phase_col_val := l_intf_col_name_tbl(i);
3822 
3823         ----------------------------------------------------------------------------------
3824         --  Transfer the Column information from EBI to MSII
3825         --  which *DONOT NEED* Value-to-ID Conversion.
3826         ----------------------------------------------------------------------------------
3827         ELSE
3828 
3829           l_dyn_sql := '';
3830           l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
3831           l_dyn_sql := l_dyn_sql || ' SET   MIRI.'||l_prod_col_name_tbl(i) ||' =  ';
3832           l_dyn_sql := l_dyn_sql || '( ';
3833           l_dyn_sql := l_dyn_sql || '    SELECT EBI.'||l_intf_col_name_tbl(i);
3834           l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI ';
3835           l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3836           l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3837           l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
3838           l_dyn_sql := l_dyn_sql || ') ';
3839           l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
3840           l_dyn_sql := l_dyn_sql || '( ';
3841           l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
3842           l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI ';
3843           l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
3844           l_dyn_sql := l_dyn_sql || '     AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3845           l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
3846           l_dyn_sql := l_dyn_sql || ') ';
3847 
3848           Write_Debug(l_dyn_sql);
3849 
3850     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
3851           Write_Debug('MIRI: Updated the '||l_prod_col_name_tbl(i)||' column values.');
3852 
3853         END IF;--end: IF (l_prod_col_name_tbl(i) = G_REV_REASON_DB_COL) THEN
3854 
3855       END LOOP;--end: FOR i IN l_prod_col_name_tbl.first .. l_prod_col_name_tbl.last LOOP
3856 
3857       ----------------------------------------------------------------------------------
3858       --  Bug# 3421497 fix.
3859       --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
3860       --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
3861       --  dependant upon the Lifecycle ID value.
3862       --  Hence the are processed outside the above LOOP.
3863       ----------------------------------------------------------------------------------
3864 
3865       IF (l_lifecycle_col_val IS NOT NULL OR l_lifecycle_phase_col_val IS NOT NULL ) THEN
3866 
3867          ----------------------------------------------------------------------------------
3868          -- Fix for Bug:3624686
3869          -- LIFECYCLE_ID cannot be updated anymore through Spreadsheet (Excel) Item
3870          -- Revision Import. Only Lifecycle Phase (CURRENT_PHASE_ID) can be updated.
3871          -- ***Hence, Commenting out following which sets the LIFECYCLE_ID.
3872          ----------------------------------------------------------------------------------
3873 /*
3874 
3875          ----------------------------------------------------------------------------------
3876          --  First Transfer the Lifecycle information from EBI to MSII
3877          --  by doing Value-to-ID Conversion.
3878          ----------------------------------------------------------------------------------
3879            l_dyn_sql := '';
3880            l_dyn_sql := l_dyn_sql || ' ';
3881            l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
3882            l_dyn_sql := l_dyn_sql || ' SET   MIRI.LIFECYCLE_ID = ';
3883            l_dyn_sql := l_dyn_sql || '( ';
3884            l_dyn_sql := l_dyn_sql || '    SELECT LC.PROJ_ELEMENT_ID ';
3885            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_LIFECYCLES_PHASES_V LC, EGO_BULKLOAD_INTF EBI  ';
3886            l_dyn_sql := l_dyn_sql || '    WHERE  LC.OBJECT_TYPE = ''PA_STRUCTURES'' ';
3887            l_dyn_sql := l_dyn_sql || '    AND    LC.NAME = EBI.'||l_lifecycle_col_val;
3888            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3889            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3890            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
3891            l_dyn_sql := l_dyn_sql || ') ';
3892            l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
3893            l_dyn_sql := l_dyn_sql || '( ';
3894            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
3895            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_LIFECYCLES_PHASES_V LC, EGO_BULKLOAD_INTF EBI  ';
3896            l_dyn_sql := l_dyn_sql || '    WHERE  LC.OBJECT_TYPE = ''PA_STRUCTURES'' ';
3897            l_dyn_sql := l_dyn_sql || '    AND    LC.NAME = EBI.'||l_lifecycle_col_val;
3898            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
3899            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3900            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
3901            l_dyn_sql := l_dyn_sql || ') ';
3902 
3903            Write_Debug(l_dyn_sql);
3904            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
3905            Write_Debug('MIRI: Updated the Lifecycle IDs.');
3906 */
3907 
3908            ----------------------------------------------------------------------------------
3909            -- Fix for Bug:3624686
3910            -- As a part of 11.5.10, Setting the Lifecycle for Revision is not available.
3911            -- But setting Lifecycle Phase is still possible.
3912            -- Hence pick up the Lifecycle from Item (MTL_SYSTEM_ITEMS_B) and set in
3913            -- MTL_ITEM_REVISIONS_INTERFACE.
3914            ----------------------------------------------------------------------------------
3915 
3916          ----------------------------------------------------------------------------------
3917          --  First Transfer the Lifecycle ID information from MSI to MSII
3918          --  as the Revision inherits Lifecycle ID from Item.
3919          ----------------------------------------------------------------------------------
3920            l_dyn_sql := '';
3921            l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
3922            l_dyn_sql := l_dyn_sql || ' SET   MIRI.LIFECYCLE_ID = ';
3923            l_dyn_sql := l_dyn_sql || '( ';
3924            l_dyn_sql := l_dyn_sql || '    SELECT MSI.LIFECYCLE_ID ';
3925            l_dyn_sql := l_dyn_sql || '    FROM   MTL_SYSTEM_ITEMS_B MSI, EGO_BULKLOAD_INTF EBI  ';
3926            l_dyn_sql := l_dyn_sql || '    WHERE  MSI.INVENTORY_ITEM_ID = EBI.INSTANCE_PK1_VALUE ';
3927            l_dyn_sql := l_dyn_sql || '    AND    MSI.ORGANIZATION_ID = EBI.INSTANCE_PK2_VALUE ';
3928            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3929            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3930            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
3931            l_dyn_sql := l_dyn_sql || ') ';
3932            l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
3933            l_dyn_sql := l_dyn_sql || '( ';
3934            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
3935            l_dyn_sql := l_dyn_sql || '    FROM   MTL_SYSTEM_ITEMS_B MSI, EGO_BULKLOAD_INTF EBI  ';
3936            l_dyn_sql := l_dyn_sql || '    WHERE  MSI.INVENTORY_ITEM_ID = EBI.INSTANCE_PK1_VALUE ';
3937            l_dyn_sql := l_dyn_sql || '    AND    MSI.ORGANIZATION_ID = EBI.INSTANCE_PK2_VALUE ';
3938            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
3939            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3940            -- Bug: 3762986 - If LC Phase is not null, then only update the lifecycle_id
3941            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_phase_col_val||' IS NOT NULL';
3942            -- Bug: 3762986 - end
3943            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
3944            l_dyn_sql := l_dyn_sql || ') ';
3945 
3946            Write_Debug(l_dyn_sql);
3947            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
3948            Write_Debug('MIRI: Updated the Lifecycle IDs from MTL_SYSTEM_ITEMS_B.');
3949 
3950          ----------------------------------------------------------------------------------
3951          --  Next Transfer the Lifecycle Phase information from EBI to MSII
3952          --  by doing Value-to-ID Conversion, and by joining Lifecycle ID information.
3953          ----------------------------------------------------------------------------------
3954            l_dyn_sql := '';
3955            l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
3956            l_dyn_sql := l_dyn_sql || ' SET   MIRI.CURRENT_PHASE_ID = ';
3957            l_dyn_sql := l_dyn_sql || '( ';
3958            l_dyn_sql := l_dyn_sql || '    SELECT LCP.PROJ_ELEMENT_ID ';
3959            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_PHASES_V LCP, EGO_BULKLOAD_INTF EBI ';
3960            l_dyn_sql := l_dyn_sql || '    WHERE  LCP.PARENT_STRUCTURE_ID = MIRI.LIFECYCLE_ID ';
3961            l_dyn_sql := l_dyn_sql || '    AND    LCP.NAME = EBI.'||l_lifecycle_phase_col_val;
3962            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3963            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3964            l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
3965            l_dyn_sql := l_dyn_sql || ') ';
3966            l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
3967            l_dyn_sql := l_dyn_sql || '( ';
3968            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
3969            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_PHASES_V LCP, EGO_BULKLOAD_INTF EBI ';
3970            l_dyn_sql := l_dyn_sql || '    WHERE  LCP.PARENT_STRUCTURE_ID = MIRI.LIFECYCLE_ID ';
3971            l_dyn_sql := l_dyn_sql || '    AND    LCP.NAME = EBI.'||l_lifecycle_phase_col_val;
3972            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
3973            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3974            l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
3975            l_dyn_sql := l_dyn_sql || ') ';
3976 
3977            Write_Debug(l_dyn_sql);
3978            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
3979            Write_Debug('MIRI: Updated the Lifecycle Phase IDs.');
3980 
3981        END IF; --end: IF (l_lifecycle_col_val IS NOT NULL ...
3982 
3983    END IF; --IF ( l_prod_col_name_tbl.count > 0) THEN
3984 
3985    --
3986    -- delete unnecessary records from MIRI
3987    -- Bug: 5476972 "Rows not to be deleted if Revision is null"
3988    -- bug: 5557250 delete only if all the fields are populated as NULL
3989    --
3990    /* Bug 7578350. Moving this DELETE statement to the function process_item_interface_lines(), after the function call
3991       load_itm_or_rev_usrattr_intf() that updates UDAs, so that we delete the rows from MTL_ITEM_REVISIONS_INTERFACE
3992       only if there are no Revision Level Attributes provided.
3993 
3994     DELETE MTL_ITEM_REVISIONS_INTERFACE MIRI
3995     WHERE revision IS NULL
3996       AND revision_id IS NULL
3997       AND implementation_date IS NULL
3998       AND effectivity_date IS NULL
3999       AND description IS NULL
4000       AND revision_label IS NULL
4001       AND revision_reason IS NULL
4002       AND current_phase_id IS NULL
4003       AND EXISTS (SELECT 'X'
4004                     FROM  EGO_BULKLOAD_INTF EBI
4005                    WHERE  EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4006                      AND  EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID
4007                      AND  EBI.PROCESS_STATUS = 1
4008                  ); */
4009 
4010    --
4011    -- convert all date fields values from Excel Null to INTF Null
4012    --
4013    UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI
4014    SET  ecn_initiation_date = DECODE(ecn_initiation_date,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,ecn_initiation_date),
4015         implementation_date = DECODE(implementation_date,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,implementation_date),
4016         effectivity_date = DECODE(effectivity_date,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,effectivity_date)
4017    WHERE MIRI.TRANSACTION_ID IN
4018       ( SELECT EBI.TRANSACTION_ID
4019         FROM   EGO_BULKLOAD_INTF EBI
4020         WHERE  EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4021         AND    EBI.PROCESS_STATUS = 1
4022       )
4023    AND    (MIRI.ecn_initiation_date IS NOT NULL
4024                 OR
4025                 MIRI.implementation_date IS NOT NULL
4026                 OR
4027                 MIRI.effectivity_date IS NOT NULL
4028                );
4029 
4030    x_retcode := G_STATUS_SUCCESS;
4031    x_set_process_id := l_msii_set_process_id;
4032 
4033 END load_item_revs_interface;
4034 
4035  ----------------------------------------------------------
4036  -- Preprocess Item Revision Interface Lines             --
4037  ----------------------------------------------------------
4038 PROCEDURE preprocess_itemrev_interface
4039                (
4040                  p_resultfmt_usage_id    IN         NUMBER,
4041                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
4042                  p_set_process_id        IN         NUMBER,
4043                  x_errbuff               IN OUT NOCOPY    VARCHAR2,
4044                  x_retcode               IN OUT NOCOPY    VARCHAR2
4045                 ) IS
4046 
4047     -- Start OF comments
4048     -- API name  : Setup MSII Item Interface Lines for processing
4049     -- TYPE      : Private
4050     -- Pre-reqs  : None
4051     -- FUNCTION  : Populate and Prepare Item interfance lines.
4052     --             Eliminates any redundancy / errors in MSII
4053 
4054   -----------------------------------------------
4055   -- Long Dynamic SQL String
4056   -----------------------------------------------
4057   l_dyn_sql                VARCHAR2(20000);
4058 
4059 BEGIN
4060 
4061    -----------------------------------------------------------------------
4062    -- Only in case of Import, and while importing Multi-Row attr group
4063    -- values : Item, Org, Revision are NOT NULL, and rest of the base
4064    -- attributes are NULL. Hence can delete these rows off from MIRI.
4065    -----------------------------------------------------------------------
4069       (
4066    DELETE MTL_ITEM_REVISIONS_INTERFACE
4067      WHERE
4068      (
4070        ITEM_NUMBER                   IS NOT NULL    OR
4071        INVENTORY_ITEM_ID             IS NOT NULL
4072        )
4073        AND
4074       (
4075        ORGANIZATION_CODE             IS NOT NULL    OR
4076        ORGANIZATION_ID               IS NOT NULL
4077        )
4078        AND
4079       (
4080        REVISION                      IS NOT NULL    OR
4081        REVISION_ID                   IS NOT NULL
4082        )
4083       )
4084      AND
4085      (
4086        DESCRIPTION                   IS NULL AND
4087        LIFECYCLE_ID                  IS NULL AND
4088        CURRENT_PHASE_ID              IS NULL AND
4089        REVISION_LABEL                IS NULL AND
4090        REVISION_REASON               IS NULL AND
4091        LIFECYCLE_ID                  IS NULL AND
4092        CURRENT_PHASE_ID              IS NULL AND
4093        EFFECTIVITY_DATE              IS NULL
4094       )
4095        AND SET_PROCESS_ID = p_set_process_id;
4096 
4097    Write_Debug('Preprocess_ItemRev_Interface : Deleted redundant / unnecessary rows from MIRI');
4098 
4099 END preprocess_itemrev_interface;
4100 
4101 
4102  ----------------------------------------------------------
4103  -- Setup Item Revision Interface Lines                  --
4104  ----------------------------------------------------------
4105 PROCEDURE Setup_itemrev_interface
4106                (
4107                  p_resultfmt_usage_id    IN         NUMBER,
4108                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
4109                  p_data_level            IN         VARCHAR2,
4110                  p_set_process_id        IN         NUMBER,
4111                  x_set_process_id        OUT NOCOPY NUMBER,
4112                  x_errbuff               OUT NOCOPY VARCHAR2,
4113                  x_retcode               OUT NOCOPY VARCHAR2
4114                 ) IS
4115 
4116     -- Start OF comments
4117     -- API name  : Setup MIRI Item Rev Interface Lines for processing
4118     -- TYPE      : Private
4119     -- Pre-reqs  : None
4120     -- FUNCTION  : Populate and Prepare Item Rev interfance lines.
4121     --             Eliminates any redundancy / errors in MIRI
4122 
4123   l_set_process_id   NUMBER(15);
4124 
4125 BEGIN
4126 
4127    -----------------------------------
4128    -- Populates rows in MIRI
4129    -----------------------------------
4130    load_item_revs_interface(
4131         p_resultfmt_usage_id  => p_resultfmt_usage_id
4132        ,p_data_level          => p_data_level
4133        ,p_set_process_id      => p_set_process_id
4134        ,x_set_process_id      => l_set_process_id
4135        ,x_errbuff             => x_errbuff
4136        ,x_retcode             => x_retcode
4137             );
4138 
4139    -------------------------------------------------------
4140    -- Deletes redundant / unnecessary rows from MIRI.
4141    -------------------------------------------------------
4142    preprocess_itemrev_interface(
4143         p_resultfmt_usage_id  => p_resultfmt_usage_id
4144        ,p_set_process_id      => l_set_process_id
4145        ,x_errbuff             => x_errbuff
4146        ,x_retcode             => x_retcode
4147             );
4148 
4149    x_set_process_id := l_set_process_id;
4150 
4151    Write_Debug('Setup_ItemRev_Interface : Set Process Id => '||x_set_process_id);
4152 
4153  EXCEPTION
4154    WHEN OTHERS THEN
4155       x_retcode := G_STATUS_ERROR;
4156       x_errbuff := SUBSTRB(SQLERRM, 1,240);
4157       Write_Debug('Setup_Itemrev_Interface : EXCEPTION HAPPENED => '||x_errbuff);
4158       RAISE;
4159 
4160 END setup_itemrev_interface;
4161 
4162 
4163  ----------------------------------------------------------------------------
4164  --  Change Item Revision Interface Lines process statuses as completed.   --
4165  --  Statuses represent: Warning, Error, Success etc.,                     --
4166  ----------------------------------------------------------------------------
4167 PROCEDURE Item_Revs_Intf_Completion
4168   (
4169     p_resultfmt_usage_id     IN    NUMBER
4170   , x_errbuff                OUT NOCOPY  VARCHAR2
4171   , x_retcode                OUT NOCOPY  VARCHAR2
4172     ) IS
4173 
4174   -----------------------------------------------
4175   -- Long Dynamic SQL String
4176   -----------------------------------------------
4177   l_dyn_sql                VARCHAR2(10000);
4178 
4179 BEGIN
4180 
4181    -----------------------------------------------------------------
4182    -- Update EBI, with the process status of rows in MIRI after
4183    -- the completion of IOI Revision processing.
4184    -----------------------------------------------------------------
4185    UPDATE EGO_BULKLOAD_INTF EBI
4186      SET  EBI.PROCESS_STATUS =
4187      (
4188       SELECT MIRI.PROCESS_FLAG
4189       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4190       WHERE  MIRI.TRANSACTION_ID = EBI.TRANSACTION_ID
4191       )
4192      WHERE EXISTS
4193      (
4194       SELECT 'X'
4195       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4196       WHERE  MIRI.TRANSACTION_ID = EBI.TRANSACTION_ID
4197       )
4198      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
4199 
4200    ----------------------------------------------------------------------------
4201    -- Update all the lines in EGO_BULKLOAD_INTF as failure, for which
4205    -- 2. For Transaction Type : SYNC / UPDATE, Revision ID should be
4202    -- The Revision IDS were not available.
4203    -- 1. For Transaction Type : CREATE, Revision ID should be populated
4204    --    at the end of Processing
4206    --    retrieved during processing.
4207    ----------------------------------------------------------------------------
4208    UPDATE EGO_BULKLOAD_INTF EBI
4209      SET  EBI.PROCESS_STATUS = G_INTF_STATUS_ERROR
4210      WHERE EXISTS
4211      (
4212       SELECT 'X'
4213       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4214       WHERE  MIRI.TRANSACTION_ID = EBI.TRANSACTION_ID
4215        AND   MIRI.PROCESS_FLAG   = G_INTF_STATUS_SUCCESS
4216        AND   MIRI.REVISION_ID IS NULL
4217       )
4218      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
4219 
4220    ----------------------------------------------------------------------------
4221    -- Update all the lines in EGO_BULKLOAD_INTF as SUCCESS
4222    -- for these rows were used to populate Multi-Row
4223    -- Appropriate errors will be displayed by the User-Defined Attrs Bulkldr.
4224    ----------------------------------------------------------------------------
4225    UPDATE EGO_BULKLOAD_INTF EBI
4226      SET  EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS
4227      WHERE EBI.PROCESS_STATUS = G_INTF_STATUS_TOBE_PROCESS
4228      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
4229 
4230    ----------------------------------------------------------------------------
4231    -- Update the Item IDs (Doesnt matter Create or Update, because
4232    -- Item IDs will be populated either way in MSII) in
4233    -- Generic Bulkload Intf table (EGO_BULKLOAD_INTF)
4234    -- These Item IDs are required for Item User-Defined Attrs bulkload
4235    ----------------------------------------------------------------------------
4236    UPDATE EGO_BULKLOAD_INTF EBI
4237      SET  EBI.INSTANCE_PK1_VALUE =
4238      (
4239       SELECT MSII.INVENTORY_ITEM_ID
4240       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
4241       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
4242       )
4243      WHERE EXISTS
4244      (
4245       SELECT 'X'
4246       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
4247       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
4248       )
4249      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4250      AND EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS;
4251 
4252    ----------------------------------------------------------------------------
4253    -- Update the Item Revision IDs (Doesnt matter Create or Update, because
4254    -- Item Revision IDs will be populated either way in MIRI) in
4255    -- Generic Bulkload Intf table (EGO_BULKLOAD_INTF)
4256    -- These Revision IDs are required for Revision User-Defined Attrs bulkload
4257    ----------------------------------------------------------------------------
4258    UPDATE EGO_BULKLOAD_INTF EBI
4259      SET  EBI.INSTANCE_PK3_VALUE =
4260      (
4261       SELECT MIRI.REVISION_ID
4262       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4263       WHERE  MIRI.TRANSACTION_ID = EBI.TRANSACTION_ID
4264       )
4265      WHERE EXISTS
4266      (
4267       SELECT 'X'
4268       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4269       WHERE  MIRI.TRANSACTION_ID = EBI.transaction_id
4270       )
4271      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4272      AND EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS;
4273 
4274    Write_Debug('EBI: Updated the Process_Status to Indicate Succssful/Unsucessful completion.');
4275 
4276    x_retcode := G_STATUS_SUCCESS;
4277 
4278  EXCEPTION
4279    WHEN OTHERS THEN
4280       x_retcode := G_STATUS_ERROR;
4281       x_errbuff := SUBSTRB(SQLERRM, 1,240);
4282       Write_Debug('Item_Revs_Intf_Completion : EXCEPTION HAPPENED => '||x_errbuff);
4283       RAISE;
4284 
4285 END Item_Revs_Intf_Completion;
4286 
4287 
4288  ----------------------------------------------------------
4289  -- Load Item or Item Revision User Defined Attributes   --
4290  -- in User-Defined Attributes Interface Table           --
4291  ----------------------------------------------------------
4292 
4293 PROCEDURE load_itm_or_rev_usrattr_intf
4294                (
4295                  p_resultfmt_usage_id    IN         NUMBER,
4296                  p_data_set_id           IN         NUMBER,
4297                  x_errbuff               OUT NOCOPY VARCHAR2,
4298                  x_retcode               OUT NOCOPY VARCHAR2
4299                 ) IS
4300     -- Start OF comments
4301     -- API name  : Populate Item User-Defined Attr Interfance Lines
4302     -- TYPE      : Public
4303     -- Pre-reqs  : None
4304     -- FUNCTION  : Load Item User-Defined Attributes interfance lines.
4305     --             Loads Item User-Defined Attribute Values
4306     --             Errors are populated in MTL_INTERFACE_ERRORS
4307 
4308   ------------------------------------------------------------------------------
4309   -- To retrieve Attribute group codes, for given Result Format Usage ID.
4310   ------------------------------------------------------------------------------
4311   CURSOR c_user_attr_group_codes (c_resultfmt_usage_id  IN  NUMBER) IS
4312     SELECT DISTINCT To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) attr_group_id
4313     FROM   ego_results_fmt_usages
4314     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
4315      AND   attribute_code LIKE '%$$%'
4316      AND   To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) IN --attr_group_id
4317       ------------------------------------------------------------------------------
4321         SELECT attr_group_id
4318       -- Fixed in 11.5.10. Ensuring only the Item User-Defined Attrs are processed.
4319       ------------------------------------------------------------------------------
4320       (
4322         FROM   ego_attr_groups_v
4323         WHERE  attr_group_type in (G_IUD_ATTR_GROUP_TYPE, G_GTN_SNG_ATTR_GROUP_TYPE, G_GTN_MUL_ATTR_GROUP_TYPE)
4324         AND    application_id = G_APPLICATION_ID
4325       )
4326       ;
4327 
4328   ------------------------------------------------------------------------------
4329   -- To get the Attribute Group and Attribute Internal Names.
4330   -- NOTE: Joined extra attributes ATTR_GROUP_TYPE and APPLICATION_ID
4331   -- To hit the index.
4332   ------------------------------------------------------------------------------
4333    CURSOR c_attr_grp_details(p_attr_id  IN NUMBER) IS
4334      SELECT  attr_group_name, attr_name, attr_group_type,
4335              DECODE(data_type_code,'A','C'
4336                                   ,'X','D'
4337                                   ,'Y','D'
4338                    ,data_type_code) data_type_code,
4339                    uom_class -- R12C UOM Change
4340      FROM    ego_attrs_v
4341      WHERE   attr_id = p_attr_id
4342       AND    attr_group_type in (G_IUD_ATTR_GROUP_TYPE, G_GTN_SNG_ATTR_GROUP_TYPE, G_GTN_MUL_ATTR_GROUP_TYPE)
4343       AND    application_id = G_APPLICATION_ID;
4344 
4345   --------------------------------------------------------------------------------
4346   -- Defn includes a subset of  EGO_USER_ATTRS_DATA_PVT.LOCAL_USER_ATTR_DATA_REC
4347   -- plus few User-Defined Attr Table related fields.
4348   --------------------------------------------------------------------------------
4349   TYPE L_USER_ATTR_REC_TYPE IS RECORD
4350   (
4351       DATA_SET_ID                          NUMBER(15)
4352      ,TRANSACTION_ID                       NUMBER(15)
4353      ,TRANSACTION_TYPE                     VARCHAR2(10)--Bug:5088831
4354      ,INVENTORY_ITEM_ID                    NUMBER(15)
4355      ,ORGANIZATION_ID                      NUMBER(15)
4356      ,REVISION_ID                          NUMBER(15)
4357      ,ITEM_NUMBER                          VARCHAR2(1000)
4358      ,ORGANIZATION_CODE                    VARCHAR2(10)
4359      ,REVISION                             VARCHAR2(10)
4360      ,ROW_IDENTIFIER                       NUMBER(15)
4361      ,ATTR_GROUP_NAME                      VARCHAR2(30)
4362      ,ATTR_NAME                            VARCHAR2(30)
4363      ,ATTR_DATATYPE_CODE                   VARCHAR2(1) --Valid Vals: C / N / D
4364      ,ATTR_VALUE_STR                       VARCHAR2(1000)
4365      ,ATTR_VALUE_NUM                       NUMBER --BugFix 4256503
4366      ,ATTR_VALUE_DATE                      DATE
4367      ,ATTR_DISP_VALUE                      VARCHAR2(1000)
4368      ,INTF_COLUMN_NAME                     VARCHAR2(30)
4369      ,SOURCE_SYSTEM_ID                     NUMBER
4370      ,SOURCE_SYSTEM_REFERENCE              VARCHAR2(255)
4371      ,ATTR_GROUP_TYPE                      VARCHAR2(40)--Bug Fix 4630163(ISSUE2)
4372      ,DATA_LEVEL_ID                        NUMBER
4373      ,PK1_VALUE                            NUMBER
4374      ,PK2_VALUE                            NUMBER
4375      ,ATTR_UOM_DISP_VALUE                  VARCHAR2(25) -- R12C UOM Changes
4376      ,ATTR_VALUE_UOM                       VARCHAR2(3)  -- R12C UOM Changes
4377   );
4378 
4379   ---------------------------------------------------------------------
4380   -- Type Declarations
4381   ---------------------------------------------------------------------
4382   TYPE L_USER_ATTR_TBL_TYPE IS TABLE OF L_USER_ATTR_REC_TYPE
4383     INDEX BY BINARY_INTEGER;
4384 
4385   TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(256)
4386    INDEX BY BINARY_INTEGER;
4387 
4388                -------------------------
4389                --   local variables   --
4390                -------------------------
4391   l_api_name                        VARCHAR2(32) := 'load_itm_or_rev_usrattr_intf()';
4392   l_prod_col_name_tbl               VARCHAR_TBL_TYPE;
4393   l_intf_col_name_tbl               VARCHAR_TBL_TYPE;
4394 
4395   l_attr_id_table                   DBMS_SQL.VARCHAR2_TABLE; -- R12C UOM Change
4396   --DBMS_SQL.NUMBER_TABLE;
4397   l_intf_col_name_table             DBMS_SQL.VARCHAR2_TABLE;
4398   l_data_level_id_table             DBMS_SQL.NUMBER_TABLE;
4399 
4400   l_usr_attr_data_tbl               L_USER_ATTR_TBL_TYPE;
4401 
4402   l_item_id_char                    VARCHAR(15);
4403   l_org_id_char                     VARCHAR(15);
4404   l_item_rev_id_char                VARCHAR(15);
4405   l_item_num_char                   VARCHAR(1000);
4406   l_org_code_char                   VARCHAR(10);
4407   l_item_rev_code_char              VARCHAR(10);
4408   l_source_system_id                NUMBER;
4409   l_source_system_ref               VARCHAR2(255);
4410 
4411   l_count                           NUMBER(5);
4412   l_data_type_code                  VARCHAR2(2);
4413   l_transaction_id                  NUMBER(15);
4414   l_transaction_type                VARCHAR2(10);
4415   l_uom_class                       VARCHAR2(10); -- R12C UOM Change
4416   l_uom_meaning                     VARCHAR2(150); -- R12C UOM Change
4417 
4418   l_attr_group_int_name    EGO_ATTRS_V.ATTR_GROUP_NAME%TYPE;
4419   l_attr_int_name          EGO_ATTRS_V.ATTR_NAME%TYPE;
4420   l_attr_data_type         EGO_ATTRS_V.DATA_TYPE_CODE%TYPE;
4421   l_attr_group_type        EGO_ATTRS_V.ATTR_GROUP_TYPE%TYPE;--Bug Fix 4630163(ISSUE2)
4422 
4423   ---------------------------------------------------------
4427   l_number_example         NUMBER;
4424   -- Example Data Types to be used in Bind Variable.
4425   ---------------------------------------------------------
4426   l_varchar_example        VARCHAR2(10000);
4428   l_date_example           DATE;
4429 
4430   --------------------------------------------------------------------
4431   -- Actual Data to store corresponding data type value.
4432   -- NOTE: for fixing Bug# 3808455, changed the size of l_varchar_data
4433   --       to 10,000 chars. This is because, if there are 1000 Single
4434   --       Quotes in the String Attr Value, then the Escaped value
4435   --       becomes of Size 2000. So, for all better reasons, changing
4436   --       to a huge size.
4437   --------------------------------------------------------------------
4438   l_varchar_data           VARCHAR2(10000);
4439   l_number_data            NUMBER;
4440   l_date_data              DATE;
4441 
4442   ---------------------------------------------------------
4443   -- DBMS_SQL Open Cursor integers.
4444   ---------------------------------------------------------
4445   l_cursor_select          INTEGER;
4446   l_cursor_execute         INTEGER;
4447   l_cursor_attr_id_val     INTEGER;
4448 
4449   ---------------------------------------------------------
4450   -- Used for indexes.
4451   ---------------------------------------------------------
4452   l_temp                   NUMBER(10) := 1;
4453   l_actual_userattr_indx   NUMBER(15);
4454   l_indx                   NUMBER(15);
4455   l_rows_per_attr_grp_indx NUMBER(15);
4456   l_save_indx              NUMBER(15);
4457   l_attr_grp_has_data      BOOLEAN;
4458 
4459   l_attr_group_data_level  VARCHAR2(30);
4460 
4461   ---------------------------------------------------------
4462   -- Long Dynamic SQL Strings
4463   ---------------------------------------------------------
4464   l_dyn_sql                VARCHAR2(10000);
4465   l_dyn_attr_id_val_sql    VARCHAR2(10000);
4466 
4467   ---------------------------------------------------------
4468   -- To Number the Attribute Group Data Rows Uniquely.
4469   ---------------------------------------------------------
4470 
4471   -- Bug fix 6219349: 5 digits was prone to overflow,
4472   -- causing defaulting to a value that had already been
4473   -- used.
4474   L_ATTR_GRP_ROW_IDENT     NUMBER(18);
4475 
4476   ---------------------------------------------------------
4477   -- Token tables to log errors, through Error_Handler
4478   ---------------------------------------------------------
4479   l_token_tbl_two         Error_Handler.Token_Tbl_Type;
4480   l_token_tbl_one         Error_Handler.Token_Tbl_Type;
4481 
4482   l_gdsn_attrs_exist       VARCHAR2(1);
4483   l_dummy_char             VARCHAR2(1000);
4484   l_dummy                  NUMBER;
4485   l_supplier_name_col        VARCHAR2(30);
4486   l_supplier_number_col      VARCHAR2(20);
4487   l_supplier_site_name_col   VARCHAR2(30);
4488 --  l_supplier_name            VARCHAR2(30); --abedajna Bug 611802
4489   l_supplier_name            VARCHAR2(320);
4490   l_supplier_number          VARCHAR2(20);
4491 --  l_supplier_site_name       VARCHAR2(30); --abedajna Bug 611802
4492   l_supplier_site_name       VARCHAR2(320);
4493   l_supplier_id              NUMBER;
4494   l_supplier_site_id         NUMBER;
4495   l_site_org_id                  NUMBER;
4496   l_row_id_incr              NUMBER;
4497 
4498   BEGIN
4499 
4500 
4501   Write_Debug(l_api_name || 'BEGIN ');
4502 ---------------------------------------------------------
4503   -- Initializing the Row Identifier.
4504   ---------------------------------------------------------
4505   BEGIN
4506     SELECT NVL(MAX(ROW_IDENTIFIER),0)
4507       INTO L_ATTR_GRP_ROW_IDENT
4508       FROM EGO_ITM_USR_ATTR_INTRFC
4509      WHERE DATA_SET_ID = p_data_set_id;
4510   EXCEPTION
4511     WHEN OTHERS THEN
4512 
4513       Write_Debug(l_api_name || 'ERROR: Couldn''t generate next row identifier');
4514 
4515       -- SSARNOBA: What if we come here a second time?
4516       -- We're going to get a unique constraint violation.
4517       L_ATTR_GRP_ROW_IDENT := 0;
4518   END;
4519 
4520   BEGIN
4521     SELECT INTF_COLUMN_NAME
4522       INTO l_supplier_name_col
4523       FROM EGO_RESULTS_FMT_USAGES
4524      WHERE RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4525        AND ATTRIBUTE_CODE NOT LIKE '%$$%'
4526        AND CUSTOMIZATION_APPLICATION_ID = 431
4527        AND REGION_APPLICATION_ID = 431
4528        AND ATTRIBUTE_CODE = 'SUPPLIER_NAME';
4529   EXCEPTION
4530     WHEN NO_DATA_FOUND THEN
4531       l_supplier_name_col := NULL;
4532   END;
4533 
4534   BEGIN
4535     SELECT INTF_COLUMN_NAME
4536       INTO l_supplier_number_col
4537       FROM EGO_RESULTS_FMT_USAGES
4538      WHERE RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4539        AND ATTRIBUTE_CODE NOT LIKE '%$$%'
4540        AND CUSTOMIZATION_APPLICATION_ID = 431
4541        AND REGION_APPLICATION_ID = 431
4542        AND ATTRIBUTE_CODE = 'SUPPLIER_NUMBER';
4543   EXCEPTION
4544     WHEN NO_DATA_FOUND THEN
4545       l_supplier_number_col := NULL;
4546   END;
4547 
4548   BEGIN
4549     SELECT INTF_COLUMN_NAME
4550       INTO l_supplier_site_name_col
4551       FROM EGO_RESULTS_FMT_USAGES
4552      WHERE RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4553        AND ATTRIBUTE_CODE NOT LIKE '%$$%'
4554        AND CUSTOMIZATION_APPLICATION_ID = 431
4555        AND REGION_APPLICATION_ID = 431
4556        AND ATTRIBUTE_CODE = 'SUPPLIER_SITE';
4560   END;
4557   EXCEPTION
4558     WHEN NO_DATA_FOUND THEN
4559       l_supplier_site_name_col := NULL;
4561 
4562   --------------------------------------------------------------------
4563   -- Loop to process per Attribute Group of User-Defined Attributes.
4564   --------------------------------------------------------------------
4565   <<LIORUI_attr_groups_loop>>
4566   FOR c_attr_grp_rec IN c_user_attr_group_codes(p_resultfmt_usage_id) LOOP
4567 
4568     Write_Debug(l_api_name || 'LIORUI_attr_groups_loop - Attribute Group'
4569                 || c_attr_grp_rec.attr_group_id);
4570 
4571     --------------------------------------------------------------------
4572     -- Added for BugFix 4114928 : We need to check for the data level --
4573     -- of the atr group and populate the REVISION_ID only if the AG   --
4574     -- revision level.                                                --
4575     --------------------------------------------------------------------
4576     SELECT DATA_LEVEL_INT_NAME INTO l_attr_group_data_level
4577       FROM EGO_OBJ_ATTR_GRP_ASSOCS_V
4578      WHERE ATTR_GROUP_TYPE in (G_IUD_ATTR_GROUP_TYPE, G_GTN_SNG_ATTR_GROUP_TYPE, G_GTN_MUL_ATTR_GROUP_TYPE)
4579        AND ATTR_GROUP_ID = c_attr_grp_rec.attr_group_id
4580        AND OBJECT_NAME = G_EGO_ITEM_OBJ_NAME
4581        AND ROWNUM = 1;-- The AG cannot have associations at Item level and Revision Level for different Catalogs.
4582 
4583     --------------------------------------------------------------------
4584     -- Fetch Organization ID, Item Number in Temp PLSQL tables.
4585     --------------------------------------------------------------------
4586     --- R12C UOM Change. Removing to_Num conversion . Now attrId$$UOM will also go into l_attr_id_table
4587     -- old code  l_dyn_sql := ' SELECT To_Number(SUBSTR(attribute_code, INSTR(attribute_code, ''$$'')+2)) attr_id, intf_column_name, DATA_LEVEL_ID ';
4588 
4589     l_dyn_sql := ' SELECT SUBSTR(attribute_code, INSTR(attribute_code, ''$$'')+2) attr_id, intf_column_name, DATA_LEVEL_ID ';
4590     l_dyn_sql := l_dyn_sql || ' FROM   ego_results_fmt_usages ';
4591     l_dyn_sql := l_dyn_sql || ' WHERE  resultfmt_usage_id = :RESULTFMT_USAGE_ID';
4592     l_dyn_sql := l_dyn_sql || '  AND attribute_code LIKE :ATTRIBUTE_CODE ';
4593     l_dyn_sql := l_dyn_sql || '  ORDER BY DISPLAY_SEQUENCE '; --- R12C UOM Change.so that UOM col comes next to corresponding number col
4594 
4595     Write_Debug(l_api_name || l_dyn_sql);
4596 
4597     l_cursor_select := DBMS_SQL.OPEN_CURSOR;
4598     DBMS_SQL.PARSE(l_cursor_select, l_dyn_sql, DBMS_SQL.NATIVE);
4599     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 1,l_attr_id_table,2500, l_temp);
4600     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 2,l_intf_col_name_table,2500, l_temp);
4601     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 3,l_data_level_id_table,2500, l_temp);
4602 
4603     DBMS_SQL.BIND_VARIABLE(l_cursor_select,':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
4604     DBMS_SQL.BIND_VARIABLE(l_cursor_select,':ATTRIBUTE_CODE', c_attr_grp_rec.attr_group_id||'$$%');
4605     l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_select);
4606     Write_Debug(l_api_name || 'About to start the Loop to fetch Rows');
4607     l_count := DBMS_SQL.FETCH_ROWS(l_cursor_select);
4608     DBMS_SQL.COLUMN_VALUE(l_cursor_select, 1, l_attr_id_table);
4609     DBMS_SQL.COLUMN_VALUE(l_cursor_select, 2, l_intf_col_name_table);
4610     DBMS_SQL.COLUMN_VALUE(l_cursor_select, 3, l_data_level_id_table);
4611 
4612     Write_Debug(l_api_name || 'Retrieved rows => '||To_char(l_count));
4613     DBMS_SQL.CLOSE_CURSOR(l_cursor_select);
4614 
4615     --------------------------------------------------------------------
4616     -- New DBMS_SQL Cursor for Select Attr Values.
4617     --------------------------------------------------------------------
4618     l_cursor_attr_id_val := DBMS_SQL.OPEN_CURSOR;
4619     l_dyn_attr_id_val_sql := ' SELECT ';
4620     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' TRANSACTION_ID , ';
4621     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' UPPER(TRANSACTION_TYPE) , ';
4622     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' INSTANCE_PK1_VALUE , ';
4623     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' INSTANCE_PK2_VALUE , ';
4624     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' INSTANCE_PK3_VALUE , ';
4625     --------------------------------------------------------------------
4626     -- Added the fix to fetch these cols also, as in case of New Item
4627     -- Instance PK1 Value might not have been retrieved.
4628     --------------------------------------------------------------------
4629     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||G_ITEM_NUMBER_EBI_COL ||'  , ';
4630     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||G_ORG_CODE_EBI_COL ||'  , ';
4631     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||G_REVISION_CODE_EBI_COL ||'  , ';
4632     --------------------------------------------------------------------
4633     -- R12
4634     -- Adding the source system id and source system reference columns
4635     --------------------------------------------------------------------
4636     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' TO_NUMBER(C_FIX_COLUMN11) , ';
4637     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' C_FIX_COLUMN12 , ';
4638 
4639     ----------------------------------------------------
4640     --R12C adding the suppplier/supplier site columns
4641     ----------------------------------------------------
4642     IF(l_supplier_name_col IS NOT NULL) THEN
4643       l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||l_supplier_name_col ||'  , ';
4644     END IF;
4645     IF(l_supplier_number_col IS NOT NULL) THEN
4646       l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||l_supplier_number_col ||'  , ';
4647     END IF;
4651 
4648     IF(l_supplier_site_name_col IS NOT NULL) THEN
4649       l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||l_supplier_site_name_col ||'  , ';
4650     END IF;
4652     --------------------------------------------------------------------
4653     -- Loop to Update the Inventory Item IDs.
4654     --------------------------------------------------------------------
4655     <<LIORUI_update_item_ids_loop>>
4656     FOR i IN 1..l_attr_id_table.COUNT LOOP
4657       Write_Debug(l_api_name || 'LIORUI_update_item_ids_loop - '||i);
4658       Write_Debug(l_api_name || 'Attr ID : '||To_char(l_attr_id_table(i)));
4659       Write_Debug(l_api_name || 'Intf Col Name : '||l_intf_col_name_table(i));
4660       IF (i <> l_attr_id_table.COUNT) THEN
4661         l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || l_intf_col_name_table(i) || ', ';
4662       ELSE
4663         l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || l_intf_col_name_table(i) ;
4664       END IF;
4665     END LOOP LIORUI_update_item_ids_loop; --end: FOR i IN 1..l_attr_id_table.COUNT LOOP
4666 
4667     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' FROM EGO_BULKLOAD_INTF ' ;
4668     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
4669     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' AND PROCESS_STATUS = :PROCESS_STATUS ';
4670     Write_Debug(l_api_name || l_dyn_attr_id_val_sql);
4671 
4672     DBMS_SQL.PARSE(l_cursor_attr_id_val, l_dyn_attr_id_val_sql, DBMS_SQL.NATIVE);
4673     --------------------------------------------------------------------
4674     --Setting Data Type for Trasaction ID
4675     --------------------------------------------------------------------
4676     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 1, l_number_example);
4677 
4678     --------------------------------------------------------------------
4679     --Setting Data Type for Trasaction Type
4680     --------------------------------------------------------------------
4681     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 2, l_varchar_example,10);
4682 
4683     --------------------------------------------------------------------
4684     --Setting Data Type for INSTANCE_PK1_VALUE (Item ID)
4685     --------------------------------------------------------------------
4686     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 3, l_varchar_example, 1000);
4687 
4688     --------------------------------------------------------------------
4689     --Setting Data Type for INSTANCE_PK2_VALUE (Org ID)
4690     --------------------------------------------------------------------
4691     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 4, l_varchar_example, 1000);
4692 
4693     --------------------------------------------------------------------
4694     --Setting Data Type for INSTANCE_PK3_VALUE (Revision ID)
4695     --------------------------------------------------------------------
4696     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 5, l_varchar_example, 1000);
4697 
4698     --------------------------------------------------------------------
4699     --Setting Data Type for Item Num
4700     --------------------------------------------------------------------
4701     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 6, l_varchar_example, 1000);
4702 
4703     --------------------------------------------------------------------
4704     --Setting Data Type for Org Code
4705     --------------------------------------------------------------------
4706     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 7, l_varchar_example, 1000);
4707 
4708     --------------------------------------------------------------------
4709     --Setting Data Type for Revision Code
4710     --------------------------------------------------------------------
4711     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 8, l_varchar_example, 1000);
4712 
4713     --------------------------------------------------------------------
4714     --Setting Data Type for Source System Id
4715     --------------------------------------------------------------------
4716     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 9, l_number_example);
4717 
4718     --------------------------------------------------------------------
4719     --Setting Data Type for Source System Reference
4720     --------------------------------------------------------------------
4721     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 10, l_varchar_example, 1000);
4722 
4723     ---------------------------------------------------------------
4724     --R12C setting data type for suppplier/supplier site columns
4725     ---------------------------------------------------------------
4726     l_dummy := 0;
4727     IF(l_supplier_name_col IS NOT NULL) THEN
4728       DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 11 + l_dummy, l_varchar_example, 1000);
4729       l_dummy := l_dummy +1;
4730     END IF;
4731     IF(l_supplier_number_col IS NOT NULL) THEN
4732       DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 11 + l_dummy, l_varchar_example, 1000);
4733       l_dummy := l_dummy +1;
4734     END IF;
4735     IF(l_supplier_site_name_col IS NOT NULL) THEN
4736       DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 11 + l_dummy, l_varchar_example, 1000);
4737       l_dummy := l_dummy +1;
4738     END IF;
4739 
4740     --------------------------------------------------------------------
4741     -- Loop to Bind the Data Types for the SELECT Columns.
4742     --------------------------------------------------------------------
4743     <<LIORUI_data_types_loop_1>>
4744     FOR i IN 1..l_attr_id_table.COUNT LOOP
4745 
4746       Write_Debug(l_api_name || 'LIORUI_data_types_loop_1 - '||i);
4747 
4748       ------------------------------------------------------------------------
4749       -- Since TRANSACTION_ID, INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE,
4750       -- INSTANCE_PK3_VALUE are added to the SELECT before the User-Defined
4754 
4751       -- Attrs, we need to adjust the index as follows.
4752       ------------------------------------------------------------------------
4753       l_actual_userattr_indx := i + 10 + l_dummy;
4755       l_data_type_code := SUBSTR (l_intf_col_name_table(i), 1, 1);
4756       ------------------------------------------------------------------------
4757       -- Based on the Data Type of the attribute, define the column
4758       ------------------------------------------------------------------------
4759 
4760       IF (l_data_type_code = 'C') THEN
4761         DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_varchar_example, 1000);
4762       ELSIF (l_data_type_code = 'U') THEN  -- R12C UOM Changes
4763         DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_varchar_example, 150);
4764       ELSIF (l_data_type_code = 'N') THEN
4765         DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_number_example);
4766       ELSE --IF (l_data_type_code = 'D') THEN
4767         DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_date_example);
4768       END IF; --IF (l_data_type_code = 'C') THEN
4769 
4770     END LOOP LIORUI_data_types_loop_1; --FOR i IN 1..l_attr_id_table.COUNT LOOP
4771 
4772 
4773     DBMS_SQL.BIND_VARIABLE(l_cursor_attr_id_val,':RESULTFMT_USAGE_ID',p_resultfmt_usage_id);
4774 
4775     write_debug(l_api_name || 'Binding the PROCESS_STATUS = '||G_INTF_STATUS_TOBE_PROCESS);
4776     DBMS_SQL.BIND_VARIABLE(l_cursor_attr_id_val,':PROCESS_STATUS',G_INTF_STATUS_TOBE_PROCESS);
4777     ------------------------------------------------------------------------
4778     --  Execute to get the Item User-Defined Attr values.
4779     ------------------------------------------------------------------------
4780     l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_attr_id_val);
4781 
4782     l_rows_per_attr_grp_indx := 0;
4783     ------------------------------------------------------------------------
4784     --  Loop for each row found in EBI
4785     ------------------------------------------------------------------------
4786     <<LIORUI_ebi_rows_loop>>
4787     LOOP --LOOP FOR CURSOR_ATTR_ID_VAL
4788 
4789       Write_Debug(l_api_name || 'LIORUI_ebi_rows_loop - begin');
4790 
4791 
4792       IF DBMS_SQL.FETCH_ROWS(l_cursor_attr_id_val)>0 THEN
4793 
4794         ------------------------------------------------------------------------
4795         --Increment Row Identifier per (Attribute Group + Row) Combination.
4796         ------------------------------------------------------------------------
4797         L_ATTR_GRP_ROW_IDENT  := L_ATTR_GRP_ROW_IDENT + 20;
4798 
4799         Write_Debug(l_api_name || 'ROW_FOUND : '||L_ATTR_GRP_ROW_IDENT);
4800 
4801         ------------------------------------------------------------------------
4802         -- First column is Transaction ID.
4803         ------------------------------------------------------------------------
4804         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 1, l_transaction_id);
4805         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 2, l_transaction_type);
4806         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 3, l_item_id_char);
4807         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 4, l_org_id_char);
4808         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 5, l_item_rev_id_char);
4809         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 6, l_item_num_char);
4810         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 7, l_org_code_char);
4811         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 8, l_item_rev_code_char);
4812         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 9, l_source_system_id);
4813         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 10, l_source_system_ref);
4814 
4815         l_dummy := 0;
4816         l_supplier_site_id := NULL;
4817         l_supplier_id := NULL;
4818         l_supplier_name := NULL;
4819         l_supplier_number := NULL;
4820         l_supplier_site_name := NULL;
4821 
4822         IF(l_supplier_name_col IS NOT NULL) THEN
4823           DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 11 + l_dummy, l_supplier_name);
4824           l_dummy := l_dummy +1;
4825 
4826           IF(l_supplier_name IS NOT NULL) THEN
4827             BEGIN
4828               SELECT VENDOR_ID
4829                 INTO l_supplier_id
4830                 FROM AP_SUPPLIERS
4831                WHERE VENDOR_NAME = l_supplier_name;
4832             EXCEPTION
4833               WHEN NO_DATA_FOUND THEN
4834                 l_supplier_id:= NULL;
4835             END;
4836           END IF;
4837         END IF;
4838 
4839         IF(l_supplier_number_col IS NOT NULL) THEN
4840           DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 11 + l_dummy, l_supplier_number);
4841           l_dummy := l_dummy +1;
4842           IF(l_supplier_number IS NOT NULL) THEN
4843             BEGIN
4844                SELECT VENDOR_ID
4845                  INTO l_supplier_id
4846                  FROM AP_SUPPLIERS
4847                 WHERE SEGMENT1 = l_supplier_number;
4848             EXCEPTION
4849               WHEN NO_DATA_FOUND THEN
4850                 l_supplier_id:= NULL;
4851             END;
4852           END IF;
4853         END IF;
4854 
4855         IF(l_supplier_site_name_col IS NOT NULL) THEN
4856            l_dummy := l_dummy +1;
4857         END IF;
4858         ------------------------------------------------------------------------
4859         -- Loop to Bind the Data Types for the SELECT Columns.
4860         ------------------------------------------------------------------------
4861         <<LIORUI_data_types_loop_2>>
4865 
4862         FOR i IN 1..l_attr_id_table.COUNT LOOP
4863 
4864           Write_Debug(l_api_name || 'LIORUI_data_types_loop_2 - '||i);
4866           IF (  INSTR(l_attr_id_table(i),'$$UOM') = 0 ) THEN -- R12C UOM change: avoiding UOM entry here
4867 
4868           OPEN c_attr_grp_details(To_Number(l_attr_id_table(i)));
4869           FETCH c_attr_grp_details INTO
4870           l_attr_group_int_name, l_attr_int_name,l_attr_group_type,l_attr_data_type,l_uom_class;--Bug Fix 4630163(ISSUE2)
4871 
4872           Write_Debug(l_api_name || i||'=>'||l_attr_group_int_name||':'||l_attr_int_name||':'||l_attr_group_type);--Bug Fix 4630163(ISSUE2)
4873 
4874           l_attr_grp_has_data := FALSE;
4875 
4876           ------------------------------------------------------------------------
4877           -- If one more Attribute found for the Attribute Group.
4878           ------------------------------------------------------------------------
4879           IF c_attr_grp_details%FOUND THEN
4880 
4881             IF(l_supplier_site_name_col IS NOT NULL) THEN
4882               DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 11 + l_dummy -1, l_supplier_site_name);
4883               IF(l_supplier_site_name IS NOT NULL AND l_supplier_id IS NOT NULL) THEN
4884                 BEGIN
4885 
4886       l_site_org_id := FND_PROFILE.VALUE('ORG_ID');
4887                   SELECT VENDOR_SITE_ID
4888                     INTO l_supplier_site_id
4889                     FROM AP_SUPPLIER_SITES_ALL
4890                    WHERE VENDOR_SITE_CODE = l_supplier_site_name
4891                      AND ORG_ID = l_site_org_id
4892                      AND VENDOR_ID = l_supplier_id;
4893                 EXCEPTION
4894                   WHEN NO_DATA_FOUND THEN
4895                     l_supplier_site_id:= NULL;
4896                 END;
4897               END IF;
4898             END IF;
4899 
4900             l_row_id_incr := 0;
4901             IF (l_data_level_id_table(i) IS NOT NULL AND l_data_level_id_table(i) <> 0) THEN
4902               l_row_id_incr := l_data_level_id_table(i)-43100;
4903             END IF;
4904             l_rows_per_attr_grp_indx := l_rows_per_attr_grp_indx + 1;
4905             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).DATA_SET_ID := p_data_set_id;
4906             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).TRANSACTION_ID := l_transaction_id;
4907             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).TRANSACTION_TYPE := l_transaction_type;
4908             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).INVENTORY_ITEM_ID := FND_NUMBER.CANONICAL_TO_NUMBER(l_item_id_char);
4909             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ORGANIZATION_ID := FND_NUMBER.CANONICAL_TO_NUMBER(l_org_id_char);
4910             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ITEM_NUMBER := l_item_num_char;
4911             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ORGANIZATION_CODE := l_org_code_char;
4912             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ROW_IDENTIFIER := L_ATTR_GRP_ROW_IDENT + l_row_id_incr;
4913             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE := l_attr_data_type;
4914             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_GROUP_NAME := l_attr_group_int_name;
4915             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_NAME := l_attr_int_name;
4916             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_GROUP_TYPE := l_attr_group_type;--Bug Fix 4630163(ISSUE2)
4917 
4918             -- Populate the REVISION Columns only if the Data Level of the AG is Revision
4919             IF ( l_data_level_id_table(i) = 43106 ) THEN
4920               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).REVISION := l_item_rev_code_char;
4921               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).REVISION_ID := FND_NUMBER.CANONICAL_TO_NUMBER(l_item_rev_id_char);
4922             ELSE
4923               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).REVISION := null;
4924               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).REVISION_ID := null;
4925             END IF;
4926 
4927             IF ( l_data_level_id_table(i) = 43103 OR l_data_level_id_table(i) = 43104 OR l_data_level_id_table(i) = 43105) THEN
4928               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_VALUE := l_supplier_id;
4929             ELSE
4930               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_VALUE := null;
4931             END IF;
4932             IF (l_data_level_id_table(i) = 43104 OR l_data_level_id_table(i) = 43105) THEN
4933               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_VALUE := l_supplier_site_id;
4934             ELSE
4935         l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_VALUE := null;
4936             END IF;
4937 
4938             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).SOURCE_SYSTEM_ID := l_source_system_id;
4939             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).SOURCE_SYSTEM_REFERENCE := l_source_system_ref;
4940             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).DATA_LEVEL_ID := l_data_level_id_table(i);
4941             ------------------------------------------------------------------------
4942             -- Since TRANSACTION_ID, INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE,
4943             -- INSTANCE_PK3_VALUE are added to the SELECT before User-Defined
4944             -- Attrs, we need to adjust the index as follows.
4945             ------------------------------------------------------------------------
4946             l_actual_userattr_indx := i + 10 + l_dummy;
4947 
4948             Write_Debug(l_api_name || 'BEGIN: To Retrieve Attr Value at Position :'||l_actual_userattr_indx);
4949 
4950             ------------------------------------------------------------------------
4951             -- Depending upon the Data Type, populate corresponding field in the
4952             -- User-Defined Attribute Data record.
4956             -- User-Defined Attribute Data record.
4953             ------------------------------------------------------------------------
4954             ------------------------------------------------------------------------
4955             -- Depending upon the Data Type, populate corresponding field in the
4957             ------------------------------------------------------------------------
4958             -- bug: 5001315 Explicitly Nulling out the data columns. (this incorporates the fix for 4673865)
4959             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR := NULL;
4960             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_NUM := NULL;
4961             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_DATE := NULL;
4962             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE := NULL;--bugfix:6346771
4963             l_varchar_data := NULL;
4964             l_number_data := NULL;
4965             l_date_data := NULL;
4966             l_dummy_char := SUBSTR (l_intf_col_name_table(i), 1, 1);
4967 
4968             IF l_dummy_char = 'C' THEN
4969               DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_varchar_data);
4970               IF l_dummy_char = l_attr_data_type THEN
4971                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR := l_varchar_data;
4972               ELSE
4973                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE := l_varchar_data;
4974               END IF;
4975               Write_Debug(l_api_name || 'String Value =>'||l_varchar_data);
4976             ELSIF l_dummy_char = 'N' THEN
4977               DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_number_data);
4978               IF l_dummy_char = l_attr_data_type THEN
4979                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_NUM := l_number_data;
4980               ELSE
4981                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE := l_number_data;
4982               END IF;
4983               Write_Debug(l_api_name || 'Number Value =>'||l_number_data);
4984             ELSE --IF (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE = 'D') THEN
4985               DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_date_data);
4986               IF l_dummy_char = l_attr_data_type THEN
4987                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_DATE := l_date_data;
4988               ELSE
4989                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE := l_date_data;
4990               END IF;
4991               Write_Debug(l_api_name || 'Date Value =>'||l_date_data);
4992             END IF; --end: IF (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE = 'C') THEN
4993 
4994       Write_Debug(l_api_name || 'END: Retrieved Attr Value');
4995 
4996             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).INTF_COLUMN_NAME := l_intf_col_name_table(i);
4997 
4998             ------------------------------------------------------------------------
4999             -- Bug: 3025778 Modified If statment.
5000             -- Donot populate NULL Attribute value in the User-Defined Attrs
5001             -- Interface table.
5002             ------------------------------------------------------------------------
5003             IF ((l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR IS NULL) AND
5004                 (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_NUM IS NULL) AND
5005                 (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_DATE IS NULL) AND
5006                 (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE IS NULL)
5007                ) THEN
5008               ------------------------------------------------------------------------
5009               -- If all attribute values are NULL value, then delete
5010               -- the row from PLSQL table.
5011               ------------------------------------------------------------------------
5012               l_usr_attr_data_tbl.DELETE(l_rows_per_attr_grp_indx);
5013               l_rows_per_attr_grp_indx := l_rows_per_attr_grp_indx - 1;
5014               Write_Debug(l_api_name || 'Due to NULL Att data, resetting back the PLSQL table index to : '||l_rows_per_attr_grp_indx);
5015 
5016             END IF; --end: IF ((l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR...
5017 
5018           END IF; --end: IF c_attr_grp_details%FOUND THEN
5019 
5020           CLOSE c_attr_grp_details;
5021         ELSE -- R12C UOM Changes:if uom column comes, previous row was the number col. so not increasing index
5022 
5023            l_varchar_data := null;
5024            l_actual_userattr_indx := l_actual_userattr_indx +1 ;
5025            DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_uom_meaning);
5026 
5027            IF (l_uom_class IS NOT NULL AND l_uom_meaning IS NOT NULL) THEN --BugFix:6271824
5028              SELECT UOM_CODE
5029                INTO l_varchar_data
5030                FROM MTL_UNITS_OF_MEASURE_VL
5031               WHERE UOM_CLASS = l_uom_class
5032                 AND UNIT_OF_MEASURE_TL = l_uom_meaning; -- Bug	6397849
5033            END IF;
5034 
5035            l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_UOM := l_varchar_data;
5036            Write_Debug(l_api_name || 'UOM CODE set  ' || l_varchar_data || ' at index ' || l_rows_per_attr_grp_indx);
5037 
5038         END IF ; --  end IF (  INSTR(l_attr_id_table(i),'$$UOM') = 0 ) -- R12C UOM Changes:
5039 
5040         END LOOP LIORUI_data_types_loop_2; --end: FOR i IN 1..l_attr_id_table.COUNT LOOP
5041 
5042       ELSE --end: IF DBMS_SQL.FETCH_ROWS(l_cursor_attr_id_val)>0 THEN
5043 
5044         Write_Debug(l_api_name || 'Nothing Found (or) Done.');
5045         EXIT;
5046 
5050 
5047       END IF; --IF DBMS_SQL.FETCH_ROWS(l_cursor_attr_id_val)>0 THEN
5048 
5049     END LOOP LIORUI_ebi_rows_loop; --END: LOOP FOR CURSOR_ATTR_ID_VAL
5051     l_attr_id_table.DELETE;
5052     l_intf_col_name_table.DELETE;
5053     l_data_level_id_table.DELETE;
5054 
5055     DBMS_SQL.CLOSE_CURSOR(l_cursor_attr_id_val);
5056 
5057     -------------------------------------------------------------------
5058     -- Loop for all the rows to be inserted per Attribute Group.
5059     -------------------------------------------------------------------
5060     <<LIORUI_attrs_loop>>
5061     FOR i IN 1..l_rows_per_attr_grp_indx LOOP
5062 
5063       Write_Debug(l_api_name || 'LIORUI_attrs_loop - ' || i);
5064 
5065       -------------------------------------------------------------------------
5066       -- Fix for Bug# 3808455. To avoid the following error:
5067       -- ORA-01401: inserted value too large for column
5068       -- [This is done because ATTR_DISP_VALUE size is 1000 Chars]
5069       -------------------------------------------------------------------------
5070       IF ( LENGTH(l_usr_attr_data_tbl(i).ATTR_VALUE_STR) > 1000 ) THEN
5071           l_token_tbl_one(1).token_name  := 'VALUE';
5072           l_token_tbl_one(1).token_value := l_usr_attr_data_tbl(i).ATTR_VALUE_STR;
5073 
5074           Error_Handler.Add_Error_Message
5075             ( p_message_name   => 'EGO_STR_ATTR_LEN_GT1000_ERR'
5076             , p_application_id => 'EGO'
5077             , p_message_text   => NULL
5078             , p_token_tbl      => l_token_tbl_one
5079             , p_message_type   => 'E'
5080             , p_row_identifier => l_usr_attr_data_tbl(i).TRANSACTION_ID
5081             , p_table_name     => G_ERROR_TABLE_NAME
5082             , p_entity_id      => NULL
5083             , p_entity_index   => NULL
5084             , p_entity_code    => G_ERROR_ENTITY_CODE
5085             );
5086 
5087       ---------------------------------------------------------------------------
5088       -- Put multiple ELSIF <<condition>> here, to report Errors with the Data.
5089       -- Finally, ELSE condition below means that Data is ~Error Free~ and ready
5090       -- to be Inserted.
5091       ---------------------------------------------------------------------------
5092 
5093       ELSE --IF ( LENGTH(l_usr_attr_data_tbl(i)..
5094 
5095         ------------------------------------------------------------------------
5096         -- Populate l_varchar_data, to later populate in ATTR_DISP_VALUE
5097         ------------------------------------------------------------------------
5098 --        IF (NVL(l_usr_attr_data_tbl(i).ATTR_VALUE_STR,EGO_ITEM_PUB.G_INTF_NULL_CHAR) <> EGO_ITEM_PUB.G_INTF_NULL_CHAR) THEN
5099 --           l_varchar_data := l_usr_attr_data_tbl(i).ATTR_VALUE_STR;
5100 --        ELSE
5101 --          l_varchar_data := NULL;
5102 --        END IF;
5103         IF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'C') THEN
5104 --           IF (NVL(l_usr_attr_data_tbl(i).ATTR_VALUE_STR,EGO_ITEM_PUB.G_INTF_NULL_CHAR) <> EGO_ITEM_PUB.G_INTF_NULL_CHAR ) THEN
5105               l_varchar_data := NVL(l_usr_attr_data_tbl(i).ATTR_VALUE_STR,l_usr_attr_data_tbl(i).ATTR_DISP_VALUE);
5106 --           END IF;
5107         ELSIF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'N') THEN
5108 --           IF (NVL(l_usr_attr_data_tbl(i).ATTR_VALUE_NUM,EGO_ITEM_PUB.G_INTF_NULL_NUM) <> EGO_ITEM_PUB.G_INTF_NULL_NUM) THEN
5109               l_varchar_data := NVL(To_char(l_usr_attr_data_tbl(i).ATTR_VALUE_NUM),l_usr_attr_data_tbl(i).ATTR_DISP_VALUE);
5110               BEGIN
5111                 IF (TO_NUMBER(l_varchar_data) = EGO_ITEM_PUB.G_INTF_NULL_NUM) THEN
5112                   l_varchar_data := EGO_USER_ATTRS_BULK_PVT.G_NULL_NUM_VAL_STR;
5113                 END IF;
5114               EXCEPTION
5115                 WHEN OTHERS THEN
5116                   -- the value needs to be checked against value set
5117                   NULL;
5118               END;
5119               Write_Debug(l_api_name || 'l_varchar_data => ' || l_varchar_data);
5120 --           END IF;
5121         ELSIF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'D') THEN
5122            IF (l_usr_attr_data_tbl(i).ATTR_VALUE_DATE  = G_EXCEL_NULL_DATE) THEN
5123               l_varchar_data := To_Char(EGO_ITEM_PUB.G_INTF_NULL_DATE,G_DATE_FORMAT);
5124             ELSE
5125               l_varchar_data := NVL(To_Char(l_usr_attr_data_tbl(i).ATTR_VALUE_DATE , G_DATE_FORMAT),l_usr_attr_data_tbl(i).ATTR_DISP_VALUE);
5126            END IF;
5127         END IF; --end: IF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'C') THEN
5128 
5129         -----------------------------------------------------------------------------------
5130         -- Checking for the transaction_type, if CREATE/UPDATE populate
5131         -- EGO_ITM_USR_ATTR_INTRFC with SYNC else the user-given Transaction_type is passed
5132         -----------------------------------------------------------------------------------
5133         l_transaction_type := l_usr_attr_data_tbl(i).TRANSACTION_TYPE;
5134         IF (l_transaction_type = G_CREATE OR l_transaction_type = G_UPDATE) THEN
5135            l_transaction_type := G_SYNC;
5136         END IF; --transaction_type check (Bug5201097)
5137 
5138         ----------------------------------------------------------------------
5139         -- 1)
5140         -- The User-Defined Attrs BO has some validation changes, which
5141         -- mandates users to pass in the display value, so that BO does the
5142         -- conversion to internal value. To support that change, I need to
5143         -- populate ATTR_DISP_VALUE instead of internal columns :
5144         -- ATTR_VALUE_STR, ATTR_VALUE_DATE, ATTR_VALUE_NUM.
5145         -- Above change to populate ATTR_DISP_VALUE was advised by DAARENA
5146         -- (Dylan Arena)
5147         --
5151         ----------------------------------------------------------------------
5148         -- 2)
5149         -- TRANSACTION_TYPE, PROCESS_STATUS need *not* be populated as they
5150         -- are defaulted by the User Attrs PLSQL Program
5152 
5153         INSERT INTO EGO_ITM_USR_ATTR_INTRFC
5154         (
5155          DATA_SET_ID          ,
5156          TRANSACTION_ID       ,
5157          TRANSACTION_TYPE     ,
5158          INVENTORY_ITEM_ID    ,
5159          ORGANIZATION_ID      ,
5160          REVISION_ID          ,
5161          ITEM_NUMBER          ,
5162          ORGANIZATION_CODE    ,
5163          REVISION             ,
5164          ROW_IDENTIFIER       ,
5165          ATTR_GROUP_INT_NAME  ,
5166          ATTR_INT_NAME        ,
5167          ATTR_DISP_VALUE      ,
5168          PROCESS_STATUS       ,
5169          SOURCE_SYSTEM_ID     ,
5170          SOURCE_SYSTEM_REFERENCE,
5171          ATTR_GROUP_TYPE,         --Bug Fix 4630163(ISSUE2)
5172          ITEM_CATALOG_GROUP_ID,    --Bug Fix 5179741
5173          DATA_LEVEL_ID       ,
5174          PK1_VALUE           ,
5175          PK2_VALUE           ,
5176          ATTR_VALUE_UOM          --R12C UOM Changes
5177         )
5178         VALUES
5179         (
5180          l_usr_attr_data_tbl(i).DATA_SET_ID,
5181          l_usr_attr_data_tbl(i).TRANSACTION_ID,
5182          l_transaction_type,                  --l_usr_attr_data_tbl(i).TRANSACTION_TYPE,
5183          l_usr_attr_data_tbl(i).INVENTORY_ITEM_ID,
5184          l_usr_attr_data_tbl(i).ORGANIZATION_ID,
5185          l_usr_attr_data_tbl(i).REVISION_ID,
5186          l_usr_attr_data_tbl(i).ITEM_NUMBER,
5187          l_usr_attr_data_tbl(i).ORGANIZATION_CODE,
5188          l_usr_attr_data_tbl(i).REVISION,
5189          l_usr_attr_data_tbl(i).ROW_IDENTIFIER,
5190          l_usr_attr_data_tbl(i).ATTR_GROUP_NAME,
5191          l_usr_attr_data_tbl(i).ATTR_NAME,
5192          l_varchar_data,                                     -- ATTR_DISP_VALUE
5193          G_PROCESS_STATUS,
5194          l_usr_attr_data_tbl(i).SOURCE_SYSTEM_ID,
5195          l_usr_attr_data_tbl(i).SOURCE_SYSTEM_REFERENCE,
5196          l_usr_attr_data_tbl(i).ATTR_GROUP_TYPE,        --Bug Fix 4630163(ISSUE2)
5197          G_CATALOG_GROUP_ID,                             --Bug Fix 5179741
5198          l_usr_attr_data_tbl(i).DATA_LEVEL_ID,
5199          l_usr_attr_data_tbl(i).PK1_VALUE,
5200          l_usr_attr_data_tbl(i).PK2_VALUE,
5201          l_usr_attr_data_tbl(i).ATTR_VALUE_UOM  --R12C UOM Changes
5202         );
5203 
5204         Write_Debug(l_api_name || 'DataSetID       ['||l_usr_attr_data_tbl(i).DATA_SET_ID||'] '||G_NEWLINE||
5205                     l_api_name || 'TransactionID   ['||l_usr_attr_data_tbl(i).TRANSACTION_ID||'] '||G_NEWLINE||
5206                     l_api_name || 'TransactionType   ['||l_usr_attr_data_tbl(i).TRANSACTION_TYPE||'] '||G_NEWLINE||
5207                     l_api_name || 'InventoryItemID ['||l_usr_attr_data_tbl(i).INVENTORY_ITEM_ID||'] '||G_NEWLINE||
5208                     l_api_name || 'OrganizationID  ['||l_usr_attr_data_tbl(i).ORGANIZATION_ID||'] '||G_NEWLINE||
5209                     l_api_name || 'RevisionID      ['||l_usr_attr_data_tbl(i).REVISION_ID||'] '||G_NEWLINE||
5210                     l_api_name || 'ItemNumber      ['||l_usr_attr_data_tbl(i).ITEM_NUMBER||'] '||G_NEWLINE||
5211                     l_api_name || 'OrganizationCode['||l_usr_attr_data_tbl(i).ORGANIZATION_CODE||'] '||G_NEWLINE||
5212                     l_api_name || 'Revision        ['||l_usr_attr_data_tbl(i).REVISION||'] '||G_NEWLINE||
5213                     l_api_name || 'RowIdentifier   ['||l_usr_attr_data_tbl(i).ROW_IDENTIFIER||'] '||G_NEWLINE||
5214                     l_api_name || 'AttrGroupType   ['||l_usr_attr_data_tbl(i).ATTR_GROUP_TYPE||'] '||G_NEWLINE||--Bug Fix 4630163(ISSUE2)
5215                     l_api_name || 'AttrGroupName   ['||l_usr_attr_data_tbl(i).ATTR_GROUP_NAME||'] '||G_NEWLINE||
5216                     l_api_name || 'AttrName        ['||l_usr_attr_data_tbl(i).ATTR_NAME||'] '||G_NEWLINE||
5217                     l_api_name || ': Populated ATTR_DISP_VALUE of DataType['||l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE||'] => '||l_varchar_data||G_NEWLINE||
5218                     l_api_name || ' Catalog Group ID ['||G_CATALOG_GROUP_ID||']');
5219 
5220       END IF; --end: IF ( LENGTH(l_usr_attr_data_tbl(i)..
5221 
5222     END LOOP LIORUI_attrs_loop; --FOR i IN 1..l_usr_attr_data_tbl.COUNT LOOP
5223 
5224     Write_Debug(l_api_name || 'EIAI: Populated the Item / Item-Revision User-Defined Attr Values for Attribute Group : '||l_attr_group_int_name);
5225 
5226   END LOOP LIORUI_attr_groups_loop; --FOR c_attr_grp_rec IN c_user_attr_group_codes
5227 
5228   Write_Debug(l_api_name || 'EIAI: DONE Populating the Item / Item-Revision User-Defined Attr Values');
5229 
5230   Write_Debug(l_api_name || 'END load_itm_or_rev_usrattr_intf()');
5231 
5232 
5233  EXCEPTION
5234    WHEN OTHERS THEN
5235       x_retcode := G_STATUS_ERROR;
5236       x_errbuff := SUBSTRB(SQLERRM, 1,240);
5237       Write_Debug(l_api_name || 'Load_itm_or_rev_usrattr_intf : EXCEPTION HAPPENED => '||x_errbuff);
5238       RAISE;
5239 
5240 END load_itm_or_rev_usrattr_intf;
5241 
5242 --================================================================================--
5243 -- 11.5.10 New Functionality: Item Operational Attributes Bulkload (bug# 3293098) --
5244 -- PPEDDAMA (1/31/2004)                                                           --
5245 --================================================================================--
5246 
5247   ---------------------------------------------------------------
5248   --This method populates Item Operational attributes in MSII.
5249   ---------------------------------------------------------------
5250 
5251 PROCEDURE load_item_oper_attr_values
5252                (
5256     -- Start OF comments
5253                  p_resultfmt_usage_id    IN         NUMBER
5254                 ) IS
5255 
5257     -- API name  : Populate MSII Item Interface Lines
5258     -- Pre-reqs  : None
5259     -- FUNCTION  : Populate and Loads Item operational attribute values in MSII.
5260     --             These operational attributes made available in Item Search Results
5261     --             through User-Defined Attributes framework.
5262     --
5263     --             Errors are populated in MTL_INTERFACE_ERRORS
5264     --
5265 
5266   ------------------------------------------------------------------------
5267   -- To get the count of Item Operational Attr Groups Result Format.    --
5268   ------------------------------------------------------------------------
5269   CURSOR c_item_oper_attr_grp_count (c_resultfmt_usage_id  IN  NUMBER) IS
5270     SELECT count(distinct(To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1))))
5271     FROM   ego_results_fmt_usages
5272     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
5273      AND attribute_code LIKE '%$$%'
5274      -- Following statement fetches the Attribute Group Id --
5275      AND To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) IN
5276      (
5277         SELECT ATTR_GROUP_ID
5278         FROM   EGO_ATTR_GROUPS_V
5279         WHERE  ATTR_GROUP_TYPE = G_ERP_ATTR_GROUP_TYPE
5280          AND   APPLICATION_ID = G_APPLICATION_ID
5281      );
5282 
5283   ------------------------------------------------------------------------
5284   -- To get the Item Operational Attr Groups in the Result Format.      --
5285   ------------------------------------------------------------------------
5286   CURSOR c_item_oper_attr_grp_ids (c_resultfmt_usage_id  IN  NUMBER) IS
5287     SELECT distinct(To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1))) OPER_ATTR_GRP_ID
5288     FROM   ego_results_fmt_usages
5289     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
5290      AND attribute_code LIKE '%$$%'
5291      -- Following statement fetches the Attribute Group Id --
5292      AND To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) IN
5293      (
5294         SELECT ATTR_GROUP_ID
5295         FROM   EGO_ATTR_GROUPS_V
5296         WHERE  ATTR_GROUP_TYPE = G_ERP_ATTR_GROUP_TYPE
5297          AND   APPLICATION_ID = G_APPLICATION_ID
5298      );
5299 
5300   ---------------------------------------------------------------
5301   -- To get the Item Operational attr columns in the Result Format.
5302   ---------------------------------------------------------------
5303   CURSOR c_item_oper_attr_intf_cols ( c_resultfmt_usage_id  IN  NUMBER
5304                                      ,c_attr_group_id       IN  NUMBER
5305                                     ) IS
5306     -- First column is the Attibute Id --
5307     SELECT   To_Number(SUBSTR(attribute_code, INSTR(attribute_code, '$$')+2))
5308            , intf_column_name
5309     FROM   ego_results_fmt_usages
5310     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
5311      AND   INSTR(attribute_code, '$$UOM') = 0  -- R12C UOM Change : ignoring uom columns in this case:
5312      AND   To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) = c_attr_group_id;
5313 
5314   l_item_oper_attr_sql     VARCHAR2(1000) :=
5315        ' SELECT   To_Number(SUBSTR(attribute_code, INSTR(attribute_code, ''$$'')+2))   '
5316     || '        , intf_column_name '
5317     || ' FROM   ego_results_fmt_usages '
5318     || ' WHERE  resultfmt_usage_id = :RESULTFMT_USAGE_ID '
5319     || ' AND   INSTR(attribute_code, ''$$UOM'') = 0 '  -- R12C UOM Change : ignoring uom columns in this case:
5320     || ' AND    To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, ''$$'') - 1)) = :ATTR_GROUP_ID ';
5321 
5322   -------------------------------------------------------------------------
5323   -- To get the Attribute Name (Table performs better than EGO_ATTRS_V)  --
5324   -------------------------------------------------------------------------
5325   CURSOR c_attr_name ( c_attr_id  IN  NUMBER) IS
5326     SELECT ext.application_column_name , TL.FORM_LEFT_PROMPT
5327     FROM   ego_fnd_df_col_usgs_ext ext, FND_DESCR_FLEX_COL_USAGE_TL TL
5328     WHERE  ext.attr_id = c_attr_id
5329     AND    TL.LANGUAGE = USERENV('LANG')
5330     AND    EXT.DESCRIPTIVE_FLEXFIELD_NAME  = TL.DESCRIPTIVE_FLEXFIELD_NAME
5331     AND    EXT.DESCRIPTIVE_FLEX_CONTEXT_CODE  = TL.DESCRIPTIVE_FLEX_CONTEXT_CODE
5332     AND    EXT.APPLICATION_COLUMN_NAME  = TL.APPLICATION_COLUMN_NAME
5333     AND    EXT.APPLICATION_ID = TL.APPLICATION_ID; -- Bug 6531938
5334 
5335      -----------------------------------------------------------
5336      --      local objects and object variables               --
5337      -----------------------------------------------------------
5338 
5339      l_attr_metadata_table           EGO_ATTR_METADATA_TABLE;
5340      l_attr_metadata_obj             EGO_ATTR_METADATA_OBJ;
5341      l_user_attr_data_obj            EGO_USER_ATTR_DATA_OBJ;
5342      l_user_attr_data_table          EGO_USER_ATTR_DATA_TABLE;
5343      l_attr_group_metadata_obj       EGO_ATTR_GROUP_METADATA_OBJ;
5344      l_ext_table_metadata_obj        EGO_EXT_TABLE_METADATA_OBJ;
5345      l_pk_column_name_value_pairs    EGO_COL_NAME_VALUE_PAIR_ARRAY;
5346 
5347      ----------------------------------------
5348      --      local variables               --
5349      ----------------------------------------
5350 
5351      l_item_oper_attr_grp_count            NUMBER;
5352      l_item_oper_attr_grp_id               NUMBER;
5353      l_count                               NUMBER(5);
5354      l_indx                                NUMBER(15);
5355      l_transaction_id                      NUMBER(15);
5356      l_object_id                           NUMBER(5);
5357 
5361      l_trans_type_char                     VARCHAR2(15);
5358      l_dyn_sql                             VARCHAR2(10000);
5359      l_item_id_char                        VARCHAR2(15);
5360      l_org_id_char                         VARCHAR2(15);
5362      l_attr_name                           VARCHAR2(100);
5363 
5364      l_attr_id_table                   DBMS_SQL.NUMBER_TABLE;
5365      l_attr_disp_name_table            DBMS_SQL.VARCHAR2_TABLE;
5366      l_intf_col_table                  DBMS_SQL.VARCHAR2_TABLE;
5367      l_attr_disp_val_table             DBMS_SQL.VARCHAR2_TABLE;
5368      l_attr_int_val_table              DBMS_SQL.VARCHAR2_TABLE;
5369      l_msii_col_table                  DBMS_SQL.VARCHAR2_TABLE;
5370 
5371      -- Example Data Types to be used in Bind Variable. --
5372      l_varchar_example        VARCHAR2(1000);
5373      l_number_example         NUMBER;
5374      l_date_example           DATE;
5375 
5376      -- Actual Data to store corresponding data type value. --
5377      l_varchar_data           VARCHAR2(1000);
5378      l_number_data            NUMBER;
5379 
5380      -- DBMS_SQL Open Cursor integers. --
5381      l_cursor_oper_attr       INTEGER;
5382      l_execute                INTEGER;
5383 
5384      --API return parameters
5385      l_retcode               VARCHAR2(10);
5386      l_errbuff               VARCHAR2(2000);
5387      l_ebi_err_msg           VARCHAR2(2000);
5388      l_dyn_sql_ebi           VARCHAR2(2000);
5389 
5390 BEGIN
5391 
5392    --------------------------------------------------------------------------------
5393    -- Fetch the Object Id. If not found, SQL exception gets thrown.              --
5394    --------------------------------------------------------------------------------
5395    SELECT OBJECT_ID
5396      INTO l_object_id
5397    FROM   FND_OBJECTS
5398    WHERE  OBJ_NAME = G_EGO_ITEM_OBJ_NAME;
5399 
5400   l_ext_table_metadata_obj :=  EGO_USER_ATTRS_COMMON_PVT.Get_Ext_Table_Metadata (l_object_id);
5401 
5402    --------------------------------------------------------------------------------
5403    -- Fetch the count of Operational Attribute Groups in the Result Format  --
5404    --------------------------------------------------------------------------------
5405    OPEN c_item_oper_attr_grp_count(p_resultfmt_usage_id);
5406    FETCH c_item_oper_attr_grp_count INTO l_item_oper_attr_grp_count;
5407    IF c_item_oper_attr_grp_count%NOTFOUND THEN
5408      ----------------------------------------------------------------------------
5409      -- There are *no* operational attribute groups to load. Hence return. --
5410      ----------------------------------------------------------------------------
5411      Write_Debug('load_item_oper_attr_values: There are *NO* Operational Attribute Groups to load! Hence RETURNing!!');
5412      RETURN;
5413 
5414    END IF;
5415    CLOSE c_item_oper_attr_grp_count;
5416 
5417    IF (l_item_oper_attr_grp_count > 0) THEN
5418 
5419      FOR attr_grp_id_rec IN c_item_oper_attr_grp_ids(p_resultfmt_usage_id)
5420      LOOP
5421       IF (attr_grp_id_rec.OPER_ATTR_GRP_ID IS NOT NULL) THEN
5422 
5423         ------------------------------------------------------------------------------
5424         -- Deleting all the earlier retrieved rows from these temp PLSQL tables,
5425         -- and Starting afresh.
5426         -- NOTE: l_attr_id_table.COUNT will be >0, only from second exec of the loop.
5427         ------------------------------------------------------------------------------
5428         IF (l_attr_id_table.COUNT > 0) THEN
5429           l_attr_id_table.DELETE;
5430           l_intf_col_table.DELETE;
5431         END IF; --end: IF (l_attr_id_table.COUNT > 0)
5432 
5433         ----------------------------------------------------------------------------
5434         -- Fetch the Attr Group Meta Data object.                                 --
5435         -- Object will be retained until per Attr Group operational attribute     --
5436         -- values for all rows are processed.                                    --
5437         ----------------------------------------------------------------------------
5438         l_attr_group_metadata_obj :=
5439         EGO_USER_ATTRS_COMMON_PVT.Get_Attr_Group_Metadata (
5440               p_attr_group_id       => attr_grp_id_rec.OPER_ATTR_GRP_ID
5441              ,p_application_id      => G_APPLICATION_ID
5442              ,p_attr_group_type     => G_ERP_ATTR_GROUP_TYPE
5443              );
5444 
5445         ----------------------------------------------------------------------------
5446         -- Fetch the Attr Group Meta Data table.                                  --
5447         -- Table will be retained until per Attr Group operational attribute     --
5448         -- values for all rows are processed.                                    --
5449         ----------------------------------------------------------------------------
5450         l_attr_metadata_table := l_attr_group_metadata_obj.attr_metadata_table;
5451 
5452         ----------------------------------------------------------------------------
5453         -- Fetch the Oper Attrs IDs, Intf Column names.                           --
5454         ----------------------------------------------------------------------------
5455         Write_Debug(l_item_oper_attr_sql);
5456 
5457         l_cursor_oper_attr := DBMS_SQL.OPEN_CURSOR;
5458         DBMS_SQL.PARSE(l_cursor_oper_attr, l_item_oper_attr_sql, DBMS_SQL.NATIVE);
5459         DBMS_SQL.DEFINE_ARRAY(
5460                            c           => l_cursor_oper_attr -- cursor --
5461                          , position    => 1                  -- select position --
5462                          , n_tab       => l_attr_id_table    -- table of numbers --
5466         DBMS_SQL.DEFINE_ARRAY(
5463                          , cnt         => 2500               -- rows requested --
5464                          , lower_bound => 1                  -- start at --
5465                              );
5467                            c           => l_cursor_oper_attr -- cursor --
5468                          , position    => 2                  -- select position --
5469                          , c_tab       => l_intf_col_table   -- table of varchar --
5470                          , cnt         => 2500               -- rows requested --
5471                          , lower_bound => 1                  -- start at --
5472                              );
5473 
5474         DBMS_SQL.BIND_VARIABLE(l_cursor_oper_attr,':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
5475         DBMS_SQL.BIND_VARIABLE(l_cursor_oper_attr,':ATTR_GROUP_ID', attr_grp_id_rec.OPER_ATTR_GRP_ID);
5476         Write_Debug('Binding :RESULTFMT_USAGE_ID to => '||p_resultfmt_usage_id);
5477         Write_Debug('Binding :ATTR_GROUP_ID to => '||attr_grp_id_rec.OPER_ATTR_GRP_ID);
5478 
5479         l_execute := DBMS_SQL.EXECUTE(l_cursor_oper_attr);
5480         l_count := DBMS_SQL.FETCH_ROWS(l_cursor_oper_attr);
5481         DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 1, l_attr_id_table);
5482         DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 2, l_intf_col_table);
5483 
5484         Write_Debug('load_item_oper_attr_values: Retrieved rows => '||To_char(l_count));
5485         DBMS_SQL.CLOSE_CURSOR(l_cursor_oper_attr);
5486 
5487         ----------------------------------------------------------------------------
5488         -- Fetch the Oper Attrs values from EGO_BULKLOAD_INTF.                    --
5489         ----------------------------------------------------------------------------
5490 
5491         l_cursor_oper_attr := DBMS_SQL.OPEN_CURSOR;
5492         l_dyn_sql := ' SELECT ';
5493         l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID , ';
5494         l_dyn_sql := l_dyn_sql || ' UPPER(TRANSACTION_TYPE) , ';
5495         l_dyn_sql := l_dyn_sql || ' INSTANCE_PK1_VALUE , ';
5496         l_dyn_sql := l_dyn_sql || ' INSTANCE_PK2_VALUE , ';
5497         FOR i in 1..l_attr_id_table.COUNT LOOP
5498           IF (i <> l_attr_id_table.COUNT) THEN
5499             l_dyn_sql := l_dyn_sql || l_intf_col_table(i) || ' , ';
5500         ELSE
5501             l_dyn_sql := l_dyn_sql || l_intf_col_table(i) || '  ';
5502           END IF;
5503         END LOOP; --FOR (i in 1..l_attr_id_table.COUNT) LOOP
5504         l_dyn_sql := l_dyn_sql || ' FROM   EGO_BULKLOAD_INTF ';
5505         l_dyn_sql := l_dyn_sql || ' WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID ';
5506         l_dyn_sql := l_dyn_sql || '  AND   PROCESS_STATUS = 1 ';
5507 
5508         Write_Debug(l_dyn_sql);
5509         DBMS_SQL.PARSE(l_cursor_oper_attr, l_dyn_sql, DBMS_SQL.NATIVE);
5510 
5511         ----------------------------------------------------------------------------
5512         -- Setting the Data type for Oper Attrs values before Select.             --
5513         ----------------------------------------------------------------------------
5514         -- Setting Data Type for Trasaction ID --
5515         DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, 1, l_number_example);
5516         -- Setting Data Type for Transaction Type --
5517         DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, 2, l_varchar_example, 1000);
5518         --Setting Data Type for INSTANCE_PK1_VALUE (Item ID)
5519         DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, 3, l_varchar_example, 1000);
5520         --Setting Data Type for INSTANCE_PK2_VALUE (Org ID)
5521         DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, 4, l_varchar_example, 1000);
5522         FOR i in 1..l_attr_id_table.COUNT LOOP
5523           ------------------------------------------------------------------------------------
5524           -- Since TRANSACTION_ID, TRANSACTION_TYPE, INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE --
5525           -- are added to the SELECT before we need to adjust the index as follows.         --
5526           ------------------------------------------------------------------------------------
5527           l_indx := i + 4;
5528           DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, l_indx, l_varchar_example, 1000);
5529         END LOOP; --2nd: FOR (i in 1..l_attr_id_table.COUNT) LOOP
5530 
5531         ----------------------------------------------------------------------------
5532         -- Binding the ResultFmtUsageId and Executing the Query.                  --
5533         ----------------------------------------------------------------------------
5534         DBMS_SQL.BIND_VARIABLE(l_cursor_oper_attr,':RESULTFMT_USAGE_ID',p_resultfmt_usage_id);
5535         l_execute := DBMS_SQL.EXECUTE(l_cursor_oper_attr);
5536 
5537         LOOP --Loop for l_cursor_oper_attr
5538 
5539           IF DBMS_SQL.FETCH_ROWS(l_cursor_oper_attr)>0 THEN
5540 
5541             DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 1, l_transaction_id);
5542             DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 2, l_trans_type_char);
5543             DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 3, l_item_id_char);
5544             DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 4, l_org_id_char);
5545 
5546             Write_Debug('load_item_oper_attr_values: l_trans_type_char => '||l_trans_type_char);
5547             ------------------------------------------------------------------------------------
5548             -- Prepare Primary Key Name Value pair object.                                    --
5549             -- In case of CREATE, pass in a blank object.                                     --
5550             ------------------------------------------------------------------------------------
5551               l_pk_column_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY
5552                                               (
5553                                                EGO_COL_NAME_VALUE_PAIR_OBJ('INVENTORY_ITEM_ID', l_item_id_char)
5557             --------------------------------------------------------------------------------
5554                                               ,EGO_COL_NAME_VALUE_PAIR_OBJ('ORGANIZATION_ID', l_org_id_char)
5555                                               );
5556 
5558             -- Create a table of Usr Attr Data objects that will be used for              --
5559             -- Display to Internal value conversions.                                     --
5560             --------------------------------------------------------------------------------
5561             l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
5562 
5563             -- bug 4699499 deleting the msii column table
5564             IF (l_msii_col_table.COUNT > 0) THEN
5565               Write_Debug('load_item_oper_attr_values: Deleting msii col table ');
5566               l_msii_col_table.DELETE;
5567             END IF; --end: IF (l_msii_col_table.COUNT > 0)
5568 
5569             FOR i in 1..l_attr_id_table.COUNT LOOP
5570               ------------------------------------------------------------------------------------
5571               -- Since TRANSACTION_ID, TRANSACTION_TYPE, INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE --
5572               -- are added to the SELECT before we need to adjust the index as follows.         --
5573               ------------------------------------------------------------------------------------
5574               l_indx := i + 4;
5575               DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, l_indx, l_varchar_data);
5576               Write_Debug('load_item_oper_attr_values: String Value =>'||l_varchar_data);
5577 
5578               -- store the Display values in a plsql table --
5579               l_attr_disp_val_table(i) := l_varchar_data;
5580 
5581               --------------------------------------------------------------------------------
5582               -- Fetch the Attribute name based on the attribute id.                        --
5583               --------------------------------------------------------------------------------
5584               OPEN c_attr_name(l_attr_id_table(i));
5585               FETCH c_attr_name INTO l_attr_name, l_attr_disp_name_table(i);
5586               IF c_attr_name%NOTFOUND THEN
5587 
5588                 ----------------------------------------------------------------------------
5589                 -- This shouldnot happen. All Oper Attr Ids should map to Attr names.     --
5590                 -- Print the following debug statement and RETURN.                        --
5591                 ----------------------------------------------------------------------------
5592                 Write_Debug('load_item_oper_attr_values: Houston we have a problem! No Attr Name found!!!');
5593                 RETURN;
5594               END IF; -- IF c_attr_name%NOTFOUND THEN
5595               CLOSE c_attr_name;
5596               Write_Debug('load_item_oper_attr_values: l_attr_name => '||l_attr_name);
5597 
5598               --------------------------------------------------------------------------------
5599               -- The Attribute name is the MSII DB Column name.                             --
5600               --------------------------------------------------------------------------------
5601               l_msii_col_table(i) := l_attr_name;
5602 
5603               ------------------------------------------------------------------------------------
5604               -- Prepare a table of l_user_attr_data_objects.                                   --
5605               -- Dylan's mail below on, why we need to get all the objects into the table       --
5606               -- l_user_attr_data_objects, before we start any disp-to-int value processing:    --                                --
5607               --                                                                                --
5608               -- Dylan's mail (Dated: 1/30/2004)                                                --
5609               -- It occurred to me that adding Attrs one by one as we go might not prove to be  --
5610               -- sufficient, because there's no guarantee we'll be processing the Attrs in      --
5611               -- their correct order: for e.g. If Attr2 required Attr1 for its ValueSet query, --
5612               -- what if we ended up processing Attr2 before Attr1?  In such a case, even if   --
5613               -- the user passed Attr1's value, our one by one method of adding elements to our --
5614               -- data table wouldn't work.                                                      --
5615               -- So it will probably be better to                                               --
5616               -- 1. Pull all Attrs for an AG                                                    --
5617               -- 2. Fetch their AG metadata (with call to EGO_USER_ATTRS_COMMON_PVT)                             --
5618               -- 3. Create Attr data elems for all passed values and add them to table          --
5619               -- 4. Then process Attrs in the AG                                                --
5620               ------------------------------------------------------------------------------------
5621               l_user_attr_data_obj := EGO_USER_ATTR_DATA_OBJ(
5622                                                   1                          --ROW_IDENTIFIER
5623                                                  ,l_attr_name                --ATTR_INT_NAME
5624                                                  ,null                       --ATTR_VALUE_STR
5625                                                  ,null                       --ATTR_VALUE_NUM
5626                                                  ,null                       --ATTR_VALUE_DATE
5627                                                  ,l_attr_disp_val_table(i)   --ATTR_DISP_VALUE
5628                                                  ,null                       --ATTR_UNIT_OF_MEASURE
5629                                                  ,l_transaction_id           --TRANSACTION_ID
5633               l_user_attr_data_table(l_user_attr_data_table.LAST) := l_user_attr_data_obj;
5630                                                  );
5631 
5632               l_user_attr_data_table.EXTEND();
5634 
5635              END LOOP; --FOR (i in 1..l_attr_id_table.COUNT) LOOP
5636 
5637             --------------------------------------------------------------------------------
5638             -- Create a table of internal values for attributes that will be used to     --
5639             -- uploading into the MSII.                                                   --
5640             --------------------------------------------------------------------------------
5641             FOR i in 1..l_attr_id_table.COUNT LOOP
5642 
5643               ------------------------------------------------------------------------------------
5644               -- Get the Attribute Metadata Object, that will be used to check if the           --
5645               -- attribute needs Display to Internal value conversion.                          --
5646               ------------------------------------------------------------------------------------
5647               l_attr_metadata_obj := EGO_USER_ATTRS_COMMON_PVT.Find_Metadata_For_Attr
5648                                      (
5649                                       p_attr_metadata_table => l_attr_metadata_table
5650                                      ,p_attr_id             => l_attr_id_table(i)
5651                                      );
5652 
5653               ------------------------------------------------------------------------------------
5654               -- Derive the internal value by passing all the objects created above.            --
5655               -- Following is to check if there is a need for conversion.                       --
5656               ------------------------------------------------------------------------------------
5657               IF (l_attr_metadata_obj.VALIDATION_CODE = EGO_EXT_FWK_PUB.G_TABLE_VALIDATION_CODE OR
5658                   l_attr_metadata_obj.VALIDATION_CODE = EGO_EXT_FWK_PUB.G_TRANS_IND_VALIDATION_CODE OR
5659                   l_attr_metadata_obj.VALIDATION_CODE = EGO_EXT_FWK_PUB.G_INDEPENDENT_VALIDATION_CODE) THEN
5660 
5661                 l_attr_int_val_table(i) :=
5662                     EGO_USER_ATTRS_DATA_PVT.Get_Int_Val_For_Disp_Val
5663                           (
5664                            l_attr_metadata_obj              --EGO_ATTR_METADATA_OBJ
5665                           ,l_user_attr_data_table(i)        --EGO_USER_ATTR_DATA_OBJ
5666                           ,l_attr_group_metadata_obj        --EGO_ATTR_GROUP_METADATA_OBJ
5667                           ,l_ext_table_metadata_obj         --EGO_EXT_TABLE_METADATA_OBJ
5668                           ,l_pk_column_name_value_pairs     --EGO_COL_NAME_VALUE_PAIR_ARRAY
5669                           -- following is used in case of Revisions. --
5670                           ,NULL                             --EGO_COL_NAME_VALUE_PAIR_ARRAY (p_data_level_name_value_pairs)
5671                           ,G_ENTITY_ID                      --p_entity_id
5672                           ,NULL                             --p_entity_index
5673                           ,G_ENTITY_CODE                    --p_entity_code
5674                           ,l_user_attr_data_table           --EGO_USER_ATTR_DATA_TABLE
5675                           );
5676 
5677                 IF l_attr_disp_val_table(i) IS NOT NULL AND l_attr_int_val_table(i) IS NULL THEN
5678                   IF    l_attr_metadata_obj.data_type_code = 'C' AND
5679                         l_attr_disp_val_table(i) = EGO_ITEM_PUB.G_INTF_NULL_CHAR THEN
5680                      l_attr_int_val_table(i) :=  EGO_ITEM_PUB.G_INTF_NULL_CHAR;
5681                   ELSIF l_attr_metadata_obj.data_type_code = 'N' THEN
5682                     BEGIN
5683                       IF (l_attr_disp_val_table(i) = EGO_ITEM_PUB.G_INTF_NULL_CHAR OR
5684                           TO_NUMBER(l_attr_disp_val_table(i)) = EGO_ITEM_PUB.G_INTF_NULL_NUM
5685                          ) THEN
5686                         l_attr_int_val_table(i) :=  EGO_ITEM_PUB.G_INTF_NULL_NUM;
5687                       END IF;
5688                     EXCEPTION
5689                       WHEN OTHERS THEN
5690                         -- the value needs to be checked against value set
5691                         NULL;
5692                     END;
5693                   ELSIF l_attr_metadata_obj.data_type_code IN ('X','Y') THEN
5694                     BEGIN
5695                       IF (l_attr_disp_val_table(i) = EGO_ITEM_PUB.G_INTF_NULL_CHAR OR
5696                           TO_DATE(l_attr_disp_val_table(i),G_DATE_FORMAT) = EGO_ITEM_PUB.G_INTF_NULL_DATE
5697                          ) THEN
5698                         l_attr_int_val_table(i) :=  EGO_ITEM_PUB.G_INTF_NULL_DATE;
5699                       END IF;
5700                     EXCEPTION
5701                       WHEN OTHERS THEN
5702                         -- the value needs to be checked against value set
5703                         NULL;
5704                     END;
5705                   END IF;
5706                 END IF;
5707               ELSE
5708                  -- Value passed by user is Internal value --
5709                  l_attr_int_val_table(i) := l_attr_disp_val_table(i);
5710               END IF; --IF (l_attr_metadata_obj.VALIDATION_CODE ...
5711               Write_Debug('load_item_oper_attr_values: Internal Value for '||l_attr_metadata_obj.attr_disp_name ||' => '||l_attr_disp_val_table(i)||' is: '||l_attr_int_val_table(i));
5712             END LOOP; --FOR (i in 1..l_attr_id_table.COUNT) LOOP
5713 
5714             --------------------------------------------------------------------------------
5715             -- Update MSII with the internal values derived above for the row.           --
5716             -- Update that particular row using Transaction ID.                           --
5720             l_dyn_sql := l_dyn_sql || ' SET  ';
5717             --------------------------------------------------------------------------------
5718 
5719             l_dyn_sql := 'UPDATE MTL_SYSTEM_ITEMS_INTERFACE ';
5721 
5722             FOR i in 1..l_msii_col_table.COUNT LOOP
5723               -- flash errors where int val is not correct
5724               IF l_attr_disp_val_table(i) IS NOT NULL AND l_attr_int_val_table(i) IS NULL THEN
5725                 l_dyn_sql := l_dyn_sql || ' process_flag = '||G_VS_INVALID_ERR_STS;
5726                 l_dyn_sql := l_dyn_sql || ' , request_id  = '||G_REQUEST_ID;
5727                 FND_MESSAGE.set_name('EGO', 'EGO_IPI_INVALID_VALUE');
5728                 FND_MESSAGE.set_token('NAME', l_attr_disp_name_table(i));
5729                 FND_MESSAGE.set_token('VALUE',NVL(l_attr_disp_val_table(i),l_attr_int_val_table(i)));
5730                 l_ebi_err_msg := fnd_message.get();
5731                 l_dyn_sql_ebi := ' UPDATE ego_bulkload_intf ' ||
5732                                  ' SET '|| G_VAL_SET_CONV_ERR_COL ||' = '''||l_ebi_err_msg||''''||
5733                                  ' WHERE TRANSACTION_ID = ' || l_transaction_id;
5734                 EXECUTE IMMEDIATE l_dyn_sql_ebi;
5735                 EXIT;
5736               ELSE
5737                 IF (i <> l_msii_col_table.COUNT) THEN
5738                   l_dyn_sql := l_dyn_sql || l_msii_col_table(i) ||' =  ''' || l_attr_int_val_table(i) || ''' , ';
5739                 ELSE
5740                   l_dyn_sql := l_dyn_sql || l_msii_col_table(i) ||' =  ''' || l_attr_int_val_table(i) || '''';
5741                 END IF;
5742               END IF;
5743             END LOOP; --FOR (i in 1..l_attr_id_table.COUNT) LOOP
5744             l_dyn_sql := l_dyn_sql || '  WHERE TRANSACTION_ID = ' || l_transaction_id;
5745 
5746             Write_Debug(l_dyn_sql);
5747 
5748             EXECUTE IMMEDIATE l_dyn_sql;
5749 
5750           ELSE --IF DBMS_SQL.FETCH_ROWS(l_cursor_oper_attr)>0 THEN
5751             -------------------------------------------------------------------
5752             -- Exit loop as there are no more rows available for processing. --
5753             -------------------------------------------------------------------
5754             Write_Debug('load_item_oper_attr_values: No more rows found !');
5755             EXIT;
5756           END IF; --IF DBMS_SQL.FETCH_ROWS(l_cursor_oper_attr)>0 THEN
5757 
5758         END LOOP; --END: Loop for l_cursor_oper_attr
5759         -- Bug : 4099546
5760         DBMS_SQL.CLOSE_CURSOR(l_cursor_oper_attr);
5761       END IF; --IF (attr_grp_id_rec.OPER_ATTR_GRP_ID IS NOT NULL) THEN
5762 
5763       -------------------------------------------------------------------
5764       -- Before proceeding to process the next Attribute Group rows,   --
5765       -- delete the attrs table.                                       --
5766       -------------------------------------------------------------------
5767       l_user_attr_data_table.DELETE;
5768 
5769      END LOOP; -- FOR attr_grp_id_rec IN c_item_oper_attr_grp_ids
5770 
5771    END IF; --IF (l_item_oper_attr_grp_count > 0) THEN
5772 
5773    -----------------------------------------------------------------------
5774    --Insert the Value Set error messages.
5775    -----------------------------------------------------------------------
5776    l_dyn_sql := '';
5777    l_dyn_sql := l_dyn_sql || 'INSERT INTO MTL_INTERFACE_ERRORS ';
5778    l_dyn_sql := l_dyn_sql || '( ';
5779    l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID   ';
5780    l_dyn_sql := l_dyn_sql || ', UNIQUE_ID    ';
5781    l_dyn_sql := l_dyn_sql || ', LAST_UPDATE_DATE   ';
5782    l_dyn_sql := l_dyn_sql || ', LAST_UPDATED_BY  ';
5783    l_dyn_sql := l_dyn_sql || ', CREATION_DATE    ';
5784    l_dyn_sql := l_dyn_sql || ', CREATED_BY     ';
5785    l_dyn_sql := l_dyn_sql || ', LAST_UPDATE_LOGIN  ';
5786    l_dyn_sql := l_dyn_sql || ', TABLE_NAME     ';
5787    l_dyn_sql := l_dyn_sql || ', MESSAGE_NAME     ';
5788    l_dyn_sql := l_dyn_sql || ', COLUMN_NAME    ';
5789    l_dyn_sql := l_dyn_sql || ', REQUEST_ID     ';
5790    l_dyn_sql := l_dyn_sql || ', PROGRAM_APPLICATION_ID  ';
5791    l_dyn_sql := l_dyn_sql || ', PROGRAM_ID     ';
5792    l_dyn_sql := l_dyn_sql || ', PROGRAM_UPDATE_DATE  ';
5793    l_dyn_sql := l_dyn_sql || ', ERROR_MESSAGE    ';
5794    l_dyn_sql := l_dyn_sql || ', TRANSACTION_ID   ';
5795    l_dyn_sql := l_dyn_sql || ', ENTITY_IDENTIFIER  ';
5796    l_dyn_sql := l_dyn_sql || ', BO_IDENTIFIER    ';
5797    l_dyn_sql := l_dyn_sql || ') ';
5798    l_dyn_sql := l_dyn_sql || 'SELECT ';
5799    l_dyn_sql := l_dyn_sql || ' -1 ';
5800    l_dyn_sql := l_dyn_sql || ', MSII.TRANSACTION_ID ';
5801    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
5802    l_dyn_sql := l_dyn_sql || ', '||G_USER_ID ;
5803    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
5804    l_dyn_sql := l_dyn_sql || ', '||G_USER_ID;
5805    l_dyn_sql := l_dyn_sql || ', '||G_LOGIN_ID;
5806    l_dyn_sql := l_dyn_sql || ', ''MTL_SYSTEM_ITEMS_INTERFACE'' ';
5807    l_dyn_sql := l_dyn_sql || ', DECODE(MSII.PROCESS_FLAG, ';
5808    l_dyn_sql := l_dyn_sql ||    G_VS_INVALID_ERR_STS||', ''EGO_IPI_INVALID_VALUE''';
5809    l_dyn_sql := l_dyn_sql || '    ) ';
5810    l_dyn_sql := l_dyn_sql || ', NULL ';
5811    l_dyn_sql := l_dyn_sql || ', '||G_REQUEST_ID ;
5812    l_dyn_sql := l_dyn_sql || ', '||G_PROG_APPID ;
5813    l_dyn_sql := l_dyn_sql || ', '||G_PROG_ID ;
5814    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
5815    l_dyn_sql := l_dyn_sql || ', DECODE(MSII.PROCESS_FLAG,  ';
5816    l_dyn_sql := l_dyn_sql ||  G_VS_INVALID_ERR_STS||',  EBI.'||G_VAL_SET_CONV_ERR_COL;
5817    l_dyn_sql := l_dyn_sql || '        )     ';
5818    l_dyn_sql := l_dyn_sql || ', MSII.TRANSACTION_ID ';
5819    l_dyn_sql := l_dyn_sql || ', NULL ';
5820    l_dyn_sql := l_dyn_sql || ', NULL ';
5824    l_dyn_sql := l_dyn_sql ||  ' ( ';
5821    l_dyn_sql := l_dyn_sql || 'FROM  MTL_SYSTEM_ITEMS_INTERFACE MSII, EGO_BULKLOAD_INTF EBI ';
5822    l_dyn_sql := l_dyn_sql || 'WHERE MSII.TRANSACTION_ID = EBI.TRANSACTION_ID ';
5823    l_dyn_sql := l_dyn_sql || ' AND  MSII.PROCESS_FLAG IN  ';
5825    l_dyn_sql := l_dyn_sql ||    G_VS_INVALID_ERR_STS; --take care of invalid value set
5826    l_dyn_sql := l_dyn_sql ||  ' ) ';
5827    l_dyn_sql := l_dyn_sql || ' AND  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID ';
5828    l_dyn_sql := l_dyn_sql || ' AND  EBI.PROCESS_STATUS = 1 ';
5829 
5830    Write_Debug(l_dyn_sql);
5831    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
5832 
5833    Write_Debug(' All Value Set value errors populated.');
5834    UPDATE MTL_SYSTEM_ITEMS_INTERFACE
5835       SET PROCESS_FLAG = G_INTF_STATUS_ERROR
5836     WHERE PROCESS_FLAG IN
5837             (
5838       G_VS_INVALID_ERR_STS
5839             )
5840       AND TRANSACTION_ID IN
5841             (
5842               SELECT TRANSACTION_ID
5843               FROM   EGO_BULKLOAD_INTF
5844               WHERE  RESULTFMT_USAGE_ID = p_resultfmt_usage_id
5845             );
5846 
5847  EXCEPTION
5848    WHEN OTHERS THEN
5849       l_retcode := G_STATUS_ERROR;
5850       l_errbuff := SUBSTRB(SQLERRM, 1,240);
5851       Write_Debug('Load_item_oper_attr_values : EXCEPTION HAPPENED => '||l_errbuff);
5852       RAISE;
5853 
5854 END load_item_oper_attr_values;
5855 
5856 --===================================================================================
5857 --END: 11.5.10 New Functionality: Item Operational Attributes Bulkload (bug# 3293098)
5858 --===================================================================================
5859 
5860 
5861  --------------------------------------------------------------------
5862  -- Fix for Bug# 3864813
5863  -- Process Net Weight (i.e. Unit Weights) for the Items based on the
5864  -- Trade Item Descriptor value.
5865  --
5866  -- NOTE: Net Weight can only have a value if Trade Item Descriptor
5867  -- is "Base Unit Or Each", else it will be NULL (i.e. it will be
5868  -- derived value).
5869  --------------------------------------------------------------------
5870 PROCEDURE process_netweights
5871                (
5872                  p_resultfmt_usage_id    IN         NUMBER,
5873                  p_commit                IN         VARCHAR2 DEFAULT FND_API.G_TRUE ,
5874                  x_errbuff               OUT NOCOPY VARCHAR2,
5875                  x_retcode               OUT NOCOPY VARCHAR2
5876                 ) IS
5877 
5878     -- Start OF comments
5879     -- API name  : Process Net Weight values for the Items
5880     -- TYPE      : Public (called by oracle.apps.ego.item.cp.EgoItemConcurrentProgram)
5881     -- Pre-reqs  : None
5882     -- FUNCTION  : Process and update the Net Weight (i.e. Unit Weight).
5883     --             values for the Item.
5884     --
5885 
5886 ------------------------------------------------------
5887 -- Local Variables
5888 ------------------------------------------------------
5889 
5890 CURSOR c_err_logfile (c_resultfmt_usage_id IN NUMBER) IS
5891  SELECT C_INTF_ATTR239
5892  FROM   EGO_BULKLOAD_INTF
5893  WHERE  RESULTFMT_USAGE_ID = c_resultfmt_usage_id
5894    AND  C_INTF_ATTR239 IS NOT NULL;
5895 
5896 -- Long Dynamic SQL String
5897 l_dyn_sql                VARCHAR2(10000);
5898 l_err_logfile_fullpath   VARCHAR2(1000);
5899 l_is_debug               BOOLEAN := FALSE;
5900 
5901 l_log_dir                VARCHAR2(1000);
5902 l_log_file               VARCHAR2(1000);
5903 
5904 --API return parameters
5905 l_retcode               VARCHAR2(10);
5906 l_errbuff               VARCHAR2(2000);
5907 
5908 BEGIN
5909 
5910   OPEN c_err_logfile(p_resultfmt_usage_id);
5911   FETCH c_err_logfile INTO l_err_logfile_fullpath;
5912   IF c_err_logfile%FOUND THEN
5913     l_is_debug := TRUE;
5914   END IF;
5915   -- Bug : 4099546
5916   CLOSE c_err_logfile;
5917   ------------------------------------------------------------
5918   -- If the Debug is TRUE, then log these statements in the
5919   -- Debug file, that has been opened before.
5920   ------------------------------------------------------------
5921   IF (l_is_debug) THEN
5922 
5923     l_log_dir := SUBSTR(l_err_logfile_fullpath, 0, INSTR(l_err_logfile_fullpath, 'EGO_BULKLOAD_INTF') - 1);
5924     l_log_file := SUBSTR(l_err_logfile_fullpath, INSTR(l_err_logfile_fullpath, 'EGO_BULKLOAD_INTF'));
5925 
5926     -----------------------------------------------------------------------
5927     -- To open the Debug Session to write the Debug Log.                 --
5928     -- This sets Debug value so that Error_Handler.Get_Debug returns 'Y' --
5929     -----------------------------------------------------------------------
5930     Error_Handler.Open_Debug_Session(
5931       p_debug_filename   => l_log_file
5932      ,p_output_dir       => l_log_dir
5933      ,x_return_status    => l_retcode
5934      ,x_error_mesg       => l_errbuff
5935      );
5936 
5937   END IF;
5938 
5939   Write_Debug('-----------------------------------------------------------------');
5940   Write_Debug('POST-PROCESSING After IOI + User-Def + UCCnet Attts processing');
5941   Write_Debug('-----------------------------------------------------------------');
5942 
5943   l_dyn_sql :=
5944   ' UPDATE MTL_SYSTEM_ITEMS_B MSIB ' ||
5945   '  SET   (MSIB.UNIT_WEIGHT, MSIB.WEIGHT_UOM_CODE) = ' ||
5946   '  ( ' ||
5947   '        DECODE(MSIB.TRADE_ITEM_DESCRIPTOR, ''BASE_UNIT_OR_EACH'', MSIB.UNIT_WEIGHT, NULL), ' ||
5948   '        DECODE(MSIB.TRADE_ITEM_DESCRIPTOR, ''BASE_UNIT_OR_EACH'', MSIB.WEIGHT_UOM_CODE, NULL) ' ||
5952   '     SELECT ''X''  ' ||
5949   '  )  ' ||
5950   '  WHERE EXISTS  ' ||
5951   ' (  ' ||
5953   '     FROM   EGO_BULKLOAD_INTF EBI   ' ||
5954   '     WHERE  FND_NUMBER.CANONICAL_TO_NUMBER(EBI.INSTANCE_PK1_VALUE) = MSIB.INVENTORY_ITEM_ID  ' ||
5955   '     AND    FND_NUMBER.CANONICAL_TO_NUMBER(EBI.INSTANCE_PK2_VALUE) = MSIB.ORGANIZATION_ID  ' ||
5956   '     AND    EBI.PROCESS_STATUS = 7 ' || -- Successful Rows Only
5957   '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_2 ' ||
5958   ' ) ';
5959 
5960   Write_Debug(l_dyn_sql);
5961   EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
5962   Write_Debug('MSIB: Updated the Net Weights.');
5963 
5964   -------------------------------------------------------------
5965   -- Commit at the end.
5966   -------------------------------------------------------------
5967   IF (p_commit = FND_API.G_TRUE) THEN
5968     COMMIT;
5969   END IF;
5970 
5971   ------------------------------------------------------------
5972   -- Close the Debug session.
5973   ------------------------------------------------------------
5974   IF (l_is_debug) THEN
5975     Close_Debug_Session;
5976   END IF;
5977 
5978   x_retcode := G_STATUS_SUCCESS;
5979 
5980   EXCEPTION
5981   WHEN OTHERS THEN
5982     x_retcode := G_STATUS_ERROR;
5983     x_errbuff := SUBSTRB(SQLERRM, 1,240);
5984     Write_Debug('process_netweights : EXCEPTION HAPPENED => '||x_errbuff);
5985     -- RAISE; --Donot raise, just return back the values.
5986     ------------------------------------------------------------
5987     -- Close the Debug session.
5988     ------------------------------------------------------------
5989     IF (l_is_debug) THEN
5990       Close_Debug_Session;
5991     END IF;
5992 
5993 END process_netweights;
5994 
5995 
5996  ----------------------------------------------------------
5997  -- Process Item and Item Revision Interface Lines
5998  --
5999  -- Main API called by the Concurrent Program.
6000  ----------------------------------------------------------
6001 PROCEDURE process_item_interface_lines
6002                (
6003                  p_resultfmt_usage_id    IN         NUMBER,
6004                  p_user_id               IN         NUMBER,
6005                  p_conc_request_id       IN         NUMBER,
6006                  p_language_code         IN         VARCHAR2,
6007                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
6008                  p_commit                IN         VARCHAR2 DEFAULT FND_API.G_TRUE ,
6009                  x_errbuff               OUT NOCOPY VARCHAR2,
6010                  x_retcode               OUT NOCOPY VARCHAR2,
6011                  p_start_upload          IN         VARCHAR2 DEFAULT FND_API.G_TRUE ,
6012                  p_data_set_id           IN         NUMBER   DEFAULT NULL
6013                 ) IS
6014 
6015     -- Start OF comments
6016     -- API name  : Process Item Interface Lines
6017     -- TYPE      : Public (called by Concurrent Program Wrapper API)
6018     -- Pre-reqs  : None
6019     -- FUNCTION  : Process and Load Item interfance lines.
6020     --             Loads Item Attr Values + Item User-Defined Attr Values
6021     --             Errors are populated in MTL_INTERFACE_ERRORS
6022     --
6023 
6024   CURSOR c_resultfmt_info (c_resultfmt_usage_id  IN  NUMBER) IS
6025     SELECT   Nvl(fmt.data_level, G_ITEM_DATA_LEVEL)
6026         ---------------------------------------------------------------------------------
6027         --Fix for Bug# 3681711. (JCGEORGE)
6028         -- CLASSIFICATION_CODE in EGO_RESULTS_FMT_USAGES, now stores the **current**
6029         -- Item Catalog Group ID for the selected Import Format.
6030         ---------------------------------------------------------------------------------
6031         --, Decode(fmt.classification1, -1, NULL, fmt.classification1)
6032         , Decode(fmt_usg.classification_code, -1, NULL, fmt_usg.classification_code)
6033     FROM   ego_results_fmt_usages fmt_usg, ego_results_format_v fmt
6034     WHERE  fmt_usg.resultfmt_usage_id = c_resultfmt_usage_id
6035      AND   fmt.customization_application_id = fmt_usg.customization_application_id
6036      AND   fmt.customization_code = fmt_usg.customization_code
6037      AND   fmt.region_application_id  = fmt_usg.region_application_id
6038      AND   fmt.region_code = fmt_usg.region_code;
6039 
6040   CURSOR c_revision_code_exists (c_resultfmt_usage_id  IN  NUMBER) IS
6041     SELECT 'x'
6042     FROM   ego_results_fmt_usages
6043     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
6044      AND   attribute_code = G_REV_CODE_ATTR_CODE;
6045 
6046   CURSOR c_mtl_intf_err_row_exists IS
6047     SELECT 'x'
6048     FROM   mtl_interface_errors
6049     WHERE  request_id = FND_GLOBAL.conc_request_id;
6050 
6051 
6052   --Long Dynamic SQL String
6053   l_dyn_sql                VARCHAR2(10000);
6054   l_msii_set_process_id    NUMBER;
6055   l_usrattr_data_set_id    NUMBER;
6056 
6057   l_item_ioi_commit        NUMBER;
6058 
6059   l_return_code            VARCHAR2(10);
6060   l_err_text               VARCHAR2(2000);
6061   l_temp_txt               VARCHAR2(2000);
6062   l_data_level             VARCHAR2(50);
6063   l_catalog_group_id       VARCHAR2(50);
6064   l_rev_base_attrs_count   NUMBER;
6065   l_revision_code_exists   VARCHAR2(5);
6066   ----------------------------------------------------------------
6067   -- Introduced in 11.5.10, to set appropriate Debug Level to
6068   -- call the User-Defined Attrs API.
6069   ----------------------------------------------------------------
6073   l_retcode               VARCHAR2(10);
6070   l_debug_level            NUMBER;
6071 
6072   --API return parameters
6074   l_errbuff               VARCHAR2(2000);
6075 
6076   --Concurrent Request Status Boolean flag
6077   l_conc_status           BOOLEAN;
6078 
6079 BEGIN
6080 
6081    IF (NVL(fnd_profile.value('CONC_REQUEST_ID'), 0) <> 0) THEN
6082      g_concReq_valid_flag  := TRUE;
6083    END IF;
6084 
6085    -----------------------------------------------------------------------
6086    --IF (g_concReq_valid_flag ) THEN
6087    --  FND_FILE.put_line(FND_FILE.LOG, ' ******** New Log ******** ');
6088    --END IF;
6089    -----------------------------------------------------------------------
6090 
6091    -----------------------------------------------------
6092    -- Open Error Handler Debug Session.
6093    -----------------------------------------------------
6094    Open_Debug_Session;
6095 
6096    Developer_Debug('Completely Reformatted EGO_ITEM_BULKLOAD_PKG with Error Handler Changes');
6097 
6098    Developer_Debug('After Open_Debug_Session');
6099    SetGobals();
6100    G_LANGUAGE_CODE := p_language_code;
6101 
6102    -----------------------------------------------------------------------
6103    -- Providing the Errors Link in the Concurrent Log file.
6104    -----------------------------------------------------------------------
6105    FND_MESSAGE.SET_NAME('EGO','EGO_ITEM_BULK_ERRS_LINKTXT1');
6106    FND_FILE.put_line(FND_FILE.LOG, FND_MESSAGE.GET);
6107 
6108    FND_MESSAGE.SET_NAME('EGO','EGO_ITEMBULK_HOSTANDPORT');
6109    l_temp_txt := FND_MESSAGE.GET;
6110 
6111    FND_MESSAGE.SET_NAME('EGO','EGO_ITEM_BULK_ERRS_LINK');
6112    FND_MESSAGE.SET_TOKEN('HOST_AND_PORT', l_temp_txt);
6113    FND_MESSAGE.SET_TOKEN('CONC_REQ_ID', G_REQUEST_ID);
6114    FND_FILE.put_line(FND_FILE.LOG, FND_MESSAGE.GET);
6115 
6116    Developer_Debug('G_USER_ID : '||To_char(G_USER_ID));
6117    Developer_Debug('G_PROG_ID : '||To_char(G_PROG_ID));
6118    Developer_Debug('G_REQUEST_ID : '||To_char(G_REQUEST_ID));
6119    Developer_Debug('P_RESULT_FMT_USAGE_ID : '||To_char(p_resultfmt_usage_id));
6120 
6121    -----------------------------------------------------------------------
6122    -- This is the Result Format Usage ID for the Current Upload.        --
6123    -----------------------------------------------------------------------
6124    G_RESULTFMT_USAGE_ID    := p_resultfmt_usage_id;
6125 
6126    -----------------------------------------------------------------------
6127    -- Delete all the earlier loads from the same spreadsheet.
6128    -- And also setup the Error Log file in the EBI, to be picked up by
6129    -- Java portion of the Conc Program later.
6130    -----------------------------------------------------------------------
6131    setup_buffer_intf_table(p_resultfmt_usage_id);
6132 
6133    -----------------------------------------------------------------------
6134    -- If the process id is passed, we will be using this throughout the program
6135    -- So setting this to the global variable here itself.
6136    -----------------------------------------------------------------------
6137    IF (p_data_set_id IS NOT NULL) THEN
6138      G_MSII_SET_PROCESS_ID := p_data_set_id;
6139    END IF;
6140 
6141    -----------------------------------------------------------------------
6142    -- If the process id is passed, we need to store the information is a
6143    -- PDH batch or not
6144    -----------------------------------------------------------------------
6145 
6146    IF (p_data_set_id IS NOT NULL) THEN
6147      setup_batch_info();
6148    END IF;
6149 
6150    -------------------------------------------------------------------------------
6151    --                                                                           --
6152    --If the caller is G_ITEM, then the import format can have 2 levels :        --
6153    -- 1. Item   2. Item Revision.                                               --
6154    -- Hence need to call appropriate populate interface table procedure.        --
6155    --                                                                           --
6156    -------------------------------------------------------------------------------
6157    IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM) THEN
6158 
6159        OPEN c_resultfmt_info(p_resultfmt_usage_id);
6160        FETCH c_resultfmt_info INTO l_data_level, l_catalog_group_id;
6161        Developer_Debug('Result Format Data Level =>'||l_data_level);
6162 
6163        -------------------------------------------------------------------
6164        --This Global Catalog Group variable is useful during imports.   --
6165        -------------------------------------------------------------------
6166        IF (l_catalog_group_id IS NOT NULL) THEN
6167          G_CATALOG_GROUP_ID  := l_catalog_group_id;
6168          Developer_Debug('G_CATALOG_GROUP_ID : '||G_CATALOG_GROUP_ID);
6169        END IF;
6170        IF c_resultfmt_info%FOUND THEN
6171         --IF (l_data_level = G_ITEM_DATA_LEVEL) THEN
6172           --------------------------------------------------------------------
6173           -- Since the Data Level is ITEM, need to setup the Item Interface --
6174           -- table.                                                         --
6175           --------------------------------------------------------------------
6176           Developer_Debug(' Calling Internal Setup_Item_interface ');
6177           Setup_Item_interface(
6178             p_resultfmt_usage_id  => p_resultfmt_usage_id
6179            ,p_set_process_id      => p_data_set_id
6180            ,x_set_process_id      => l_msii_set_process_id
6184             );
6181            ,p_caller_identifier   => p_caller_identifier
6182            ,x_errbuff             => l_errbuff
6183            ,x_retcode             => l_retcode
6185           Developer_Debug(' Returning Internal Setup_Item_interface '|| l_retcode);
6186 
6187           FND_FILE.put_line(FND_FILE.LOG, '*Importing Items*. SET_PROCESS_ID : '||l_msii_set_process_id);
6188 
6189           -------------------------------------------------------------------
6190           -- New procedure introduced in 11.5.10 to load the operational   --
6191           -- attributes using User-Def attrs framework. (PPEDDAMA)         --
6192           -------------------------------------------------------------------
6193           load_item_oper_attr_values(p_resultfmt_usage_id);
6194 
6195           Developer_Debug('process_item_interface_lines: Done loading the Item operational attributes');
6196 
6197           delete_records_from_MSII(p_data_set_id);
6198 
6199           Write_Debug('Deleting unwanted records from MSII');
6200 
6201           -------------------------------------------------------------------
6202           -- Fix for Bug# 3403455. (PPEDDAMA)                             --
6203           -- Setup Item Rev Interface only if Revision Base attrs exist.  --
6204           -------------------------------------------------------------------
6205 
6206           SELECT count(*)
6207             INTO l_rev_base_attrs_count
6208           FROM  ego_results_fmt_usages
6209           WHERE  resultfmt_usage_id = p_resultfmt_usage_id
6210           AND attribute_code NOT LIKE '%$$%'
6211           ---------------------------------------------------------------------------
6212           -- Added NOT LIKE 'GTIN_%' to filter out Dummy Attrs for Attr Group: "GTIN"
6213           ---------------------------------------------------------------------------
6214           AND attribute_code NOT LIKE 'GTIN_%'
6215           AND attribute_code IN --Segregating Item Revision Base Attrs using this clause
6216           (
6217               select LOOKUP_CODE CODE
6218               from  FND_LOOKUP_VALUES
6219               where  LOOKUP_TYPE = 'EGO_ITEM_REV_HDR_ATTR_GRP'
6220               AND    LANGUAGE = USERENV('LANG')
6221               AND    ENABLED_FLAG = 'Y'
6222           );
6223 
6224           Developer_Debug('process_item_interface_lines.l_rev_base_attrs_count : '||l_rev_base_attrs_count);
6225             --------------------------------------------------------------------
6226             -- Changed from >0 to >1 because, only if other attributes apart  --
6227             -- from REVISION exist, then setup Item Revision interface.       --
6228             --------------------------------------------------------------------
6229 
6230           IF (l_rev_base_attrs_count > 1) THEN
6231 
6232             OPEN c_revision_code_exists(p_resultfmt_usage_id);
6233             FETCH c_revision_code_exists INTO l_revision_code_exists;
6234             IF c_revision_code_exists%FOUND THEN
6235               Developer_Debug('process_item_interface_lines.l_revision_code_exists : '||l_revision_code_exists ||'. Calling Setup_ItemRev_interface');
6236 
6237               --------------------------------------------------------------------
6238               -- Now that Revisions show up as a part of Item Search Results,   --
6239               -- calling Setup Revisions Interface as a part of Item Bulkload   --
6240               --------------------------------------------------------------------
6241               Setup_ItemRev_interface(
6242                 p_resultfmt_usage_id  => p_resultfmt_usage_id
6243                ,p_caller_identifier   => p_caller_identifier
6244                ,p_data_level          => G_ITEM_DATA_LEVEL
6245                ,p_set_process_id      => p_data_set_id
6246                ,x_set_process_id      => l_msii_set_process_id
6247                ,x_errbuff             => l_errbuff
6248                ,x_retcode             => l_retcode
6249                );
6250 
6251             END IF; --IF c_revision_code_exists%FOUND THEN
6252             -- Bug : 4099546
6253             CLOSE c_revision_code_exists;
6254           END IF; --IF (l_rev_base_attrs_count > 0) THEN
6255           -------------------------------------------------------------------
6256           -- End: Fix for Bug# 3403455. (PPEDDAMA)                        --
6257           -- Setup Item Rev Interface only if Revision Base attrs exist.  --
6258           -------------------------------------------------------------------
6259           EGO_ITEM_BULKLOAD_PKG.load_intersections_interface
6260                            (
6261                              p_resultfmt_usage_id    =>p_resultfmt_usage_id,
6262                              p_set_process_id        =>p_data_set_id,
6263                              x_set_process_id        =>l_msii_set_process_id,
6264                              x_errbuff               =>x_errbuff,
6265                              x_retcode               =>x_retcode
6266                             );
6267          write_debug('Done with EGO_ITEM_BULKLOAD_PKG.load_intersections_interface ---x_retcode-'||x_retcode);
6268         --ELSE --G_ITEM_REV_DATA_LEVEL
6269  /*
6270           ---------------------------------------------------------------------------------
6271           -- Now that Revisions show up as a part of Item Search Results,
6272           -- adding new parameter p_data_level, to distinguish that this Setup Revisions
6273           -- Interface is called from 'Import Revisions' (through Revision Import Format)
6274           ---------------------------------------------------------------------------------
6275           Setup_ItemRev_interface(
6276             p_resultfmt_usage_id  => p_resultfmt_usage_id
6277            ,p_caller_identifier   => p_caller_identifier
6281            ,x_errbuff             => l_errbuff
6278            ,p_data_level          => G_ITEM_REV_DATA_LEVEL
6279            ,p_set_process_id      => p_data_set_id
6280            ,x_set_process_id      => l_msii_set_process_id
6282            ,x_retcode             => l_retcode
6283                  );
6284           FND_FILE.put_line(FND_FILE.LOG, '*Importing Item Revisions*. SET_PROCESS_ID : '||l_msii_set_process_id);
6285 
6286         END IF; --end: IF (l_data_level = G_ITEM_DATA_LEVEL) THEN
6287         */
6288      END IF; --end: IF c_resultfmt_info%FOUND THEN
6289 
6290      CLOSE c_resultfmt_info;
6291 
6292     ELSIF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_BOM) THEN
6293 
6294       --------------------------------------------------------------
6295       -- BOM called the Bulkload code, hence setup Item and Item
6296       -- Revision Interface tables appropriately.
6297       --------------------------------------------------------------
6298 
6299       Developer_Debug('CALLER IDENTIFIER : '|| p_caller_identifier);
6300 
6301       Setup_item_interface(
6302             p_resultfmt_usage_id  => p_resultfmt_usage_id
6303            ,p_set_process_id      => p_data_set_id
6304            ,x_set_process_id      => l_msii_set_process_id
6305            ,p_caller_identifier   => p_caller_identifier
6306            ,x_errbuff             => l_errbuff
6307            ,x_retcode             => l_retcode
6308                  );
6309 
6310       -------------------------------------------------------------------
6311       -- New procedure introduced in 11.5.10 to load the operational   --
6312       -- attributes using User-Def attrs framework. (HGELLI)           --
6313       -------------------------------------------------------------------
6314       load_item_oper_attr_values(p_resultfmt_usage_id);
6315 
6316       Developer_Debug('process_item_interface_lines: Done loading the Item operational attributes');
6317 
6318        --------------------------------------------------------------
6319        -- Check to see if Revision Code exists, before calling to
6320        -- to set up the Revisions Interface table.
6321        --------------------------------------------------------------
6322        OPEN c_revision_code_exists(p_resultfmt_usage_id);
6323        FETCH c_revision_code_exists INTO l_revision_code_exists;
6324        IF c_revision_code_exists%FOUND THEN
6325          Developer_Debug('process_item_interface_lines.l_revision_code_exists : '||l_revision_code_exists ||'. Calling Setup_ItemRev_interface');
6326 
6327          --Now that Revisions show up as a part of Item Search Results,
6328          --calling Setup Revisions Interface as a part of Item Bulkload
6329          Setup_ItemRev_interface(
6330             p_resultfmt_usage_id  => p_resultfmt_usage_id
6331            ,p_caller_identifier   => p_caller_identifier
6332            ,p_data_level          => G_ITEM_DATA_LEVEL
6333            ,p_set_process_id      => p_data_set_id
6334            ,x_set_process_id      => l_msii_set_process_id
6335            ,x_errbuff             => l_errbuff
6336            ,x_retcode             => l_retcode
6337          );
6338 
6339         END IF; --IF c_revision_code_exists%FOUND THEN
6340         -- Bug : 4099546
6341         CLOSE c_revision_code_exists;
6342         FND_FILE.put_line(FND_FILE.LOG, '*Importing Items*. SET_PROCESS_ID : '||l_msii_set_process_id);
6343 
6344     ELSE
6345       --------------------------------------------------------------
6346       -- This ELSE condition should never be reached.
6347       --------------------------------------------------------------
6348       Developer_Debug('INVALID CALLER IDENTIFIER : '|| p_caller_identifier);
6349 
6350    END IF;--IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM)
6351 
6352    --R12
6353    ----------------------------------------------------------------
6354    -- Call for User Attributes Bulk Processing, to load the
6355    -- Interface table: EGO_ITM_USR_ATTR_INTRFC
6356    ----------------------------------------------------------------
6357    Developer_Debug('Before calling load_itm_or_rev_usrattr_intf ');
6358    load_itm_or_rev_usrattr_intf
6359                (
6360                  p_resultfmt_usage_id    => p_resultfmt_usage_id
6361                 ,p_data_set_id           => l_msii_set_process_id
6362                 ,x_errbuff               => l_errbuff
6363                 ,x_retcode               => l_retcode
6364                 );
6365 
6366    Developer_Debug('UsrAttr_Populate_Process: done. l_retcode = ' || l_retcode);
6367    Developer_Debug('UsrAttr_Populate_Process: l_errbuff = ' || l_errbuff);
6368 
6369    /* Bug 7578350. Moved this DELETE statement from load_item_revs_interface() function,
6370       by addubg NOT EXITS condition in WHERE caluse, so that we delete the rows from MTL_ITEM_REVISIONS_INTERFACE
6371       only if there are no Revision Level Attributes provided. */
6372 
6373    DELETE MTL_ITEM_REVISIONS_INTERFACE MIRI
6374     WHERE revision IS NULL
6375       AND revision_id IS NULL
6376       AND implementation_date IS NULL
6377       AND effectivity_date IS NULL
6378       AND description IS NULL
6379       AND revision_label IS NULL
6380       AND revision_reason IS NULL
6381       AND current_phase_id IS NULL
6382       AND EXISTS (SELECT 'X'
6383                     FROM  EGO_BULKLOAD_INTF EBI
6384                    WHERE  EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
6385                      AND  EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID
6386                      AND  EBI.PROCESS_STATUS = 1
6387                  )
6388       AND NOT EXISTS (SELECT 'X'
6392                         AND EIUAT.DATA_LEVEL_ID=43106);
6389                         FROM EGO_ITM_USR_ATTR_INTRFC EIUAT
6390                       WHERE EIUAT.TRANSACTION_ID = MIRI.TRANSACTION_ID
6391                         AND EIUAT.PROCESS_STATUS = 1
6393 
6394    -------------------------------------------------------------
6395    -- Log Errors only to MTL_INTERFACE_ERRORS table.
6396    -------------------------------------------------------------
6397    Error_Handler.Log_Error(
6398          p_write_err_to_inttable  => 'Y',
6399          p_write_err_to_debugfile => 'Y'
6400          );
6401    ------------------------------------------------------------------------
6402    -- In case the Error Reporting Page has problems, following
6403    -- SQL helps debugging.
6404    -- NOTE: This is only for *Printing* purposes, hence adding NEWLINE
6405    --       character at the end.
6406    ------------------------------------------------------------------------
6407    l_dyn_sql :=              'SELECT MIERR.REQUEST_ID REQUEST_ID, '||G_NEWLINE;
6408    l_dyn_sql := l_dyn_sql || 'EBI.C_INTF_ATTR240 ITEM_NUMBER, '||G_NEWLINE;
6409    l_dyn_sql := l_dyn_sql || 'EBI.C_INTF_ATTR241 ORGANIZATION_CODE, '||G_NEWLINE;
6410    l_dyn_sql := l_dyn_sql || 'EBI.C_INTF_ATTR242 REVISION_CODE, '||G_NEWLINE;
6411    l_dyn_sql := l_dyn_sql || 'MIERR.ERROR_MESSAGE '||G_NEWLINE;
6412    l_dyn_sql := l_dyn_sql || 'FROM   MTL_INTERFACE_ERRORS MIERR, '||G_NEWLINE;
6413    l_dyn_sql := l_dyn_sql || 'EGO_BULKLOAD_INTF EBI '||G_NEWLINE;
6414    l_dyn_sql := l_dyn_sql || 'WHERE  MIERR.TRANSACTION_ID = EBI.TRANSACTION_ID '||G_NEWLINE;
6415    l_dyn_sql := l_dyn_sql || 'AND    MIERR.request_id = '||G_REQUEST_ID||G_NEWLINE;
6416    Developer_Debug('In Case Error Reporting page has problems, Execute the following SQL to fetch the Concurrent Program CUMULATIVE Errors: ');
6417    Developer_Debug(l_dyn_sql);
6418 
6419    -------------------------------------------------------------
6420    -- Commit at the end.
6421    -------------------------------------------------------------
6422    IF (p_commit = FND_API.G_TRUE) THEN
6423      COMMIT;
6424      Developer_Debug('COMMITing at the end.');
6425    END IF;
6426 
6427    ------------------------------------------------------------
6428    -- Check to See if Errors exist in MTL_INTERFACE_ERRORS.
6429    -- If Exists, then set the Status as Completed w/ Warnings.
6430    ------------------------------------------------------------
6431    OPEN c_mtl_intf_err_row_exists;
6432    FETCH c_mtl_intf_err_row_exists INTO l_temp_txt;
6433    IF c_mtl_intf_err_row_exists%FOUND THEN
6434      Developer_Debug('Errors exist in MTL_INTERFACE_ERRORS.');
6435      l_conc_status := FND_CONCURRENT.SET_COMPLETION_STATUS('WARNING',              --Status
6436                                                            'Completed with Warnings' --Message
6437                                                            );
6438      x_retcode := Error_Handler.G_STATUS_WARNING;
6439    ELSE
6440      Developer_Debug('*NO* Errors exist in MTL_INTERFACE_ERRORS.');
6441      x_retcode := G_STATUS_SUCCESS;
6442    END IF;
6443    CLOSE c_mtl_intf_err_row_exists;
6444 
6445    -----------------------------------------------------------
6446    -- Add log messages for all successfully created items
6447    -----------------------------------------------------------
6448 -- 5653266 commenting out the call to Log_Created_items
6449 --   IF (G_REQUEST_ID <> -1 ) THEN
6450 --     Log_created_Items(G_REQUEST_ID);
6451 --   END IF;
6452 
6453    -----------------------------------------------------
6454    -- Close Error Handler Debug Session.
6455    -----------------------------------------------------
6456 
6457    Close_Debug_Session;
6458 
6459    -----------------------------------------------------------------
6460    -- Main EXCEPTION Block, that handles all underlying Procedures'
6461    -- Exceptions. This also sets the PROCESS_STATUS value of the
6462    -- EBI Rows, to indicate Error.
6463    -----------------------------------------------------------------
6464    EXCEPTION
6465 
6466     WHEN OTHERS THEN
6467       Developer_Debug('Exception encountered processing one of the procedures in Process_Item_Interface_lines.');
6468       Developer_Debug('error code : '|| to_char(SQLCODE));
6469       Developer_Debug('error text : '|| SQLERRM);
6470       x_errbuff := 'Error : '||to_char(SQLCODE)||'---'||SQLERRM;
6471       x_retcode := Error_Handler.G_STATUS_ERROR;
6472       Developer_Debug('Returning x_retcode : '|| x_retcode);
6473       l_conc_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',         --Status
6474                                                             to_char(SQLCODE) --Message
6475                                                             );
6476       Developer_Debug('Setting all the *Unprocessed* rows (PROCESS_STATUS = 1) in EGO_BULKLOAD_INTF to PROCESS_STATUS = 3.');
6477 
6478       -----------------------------------------------------------------------------------------------
6479       -- Update all the lines in EGO_BULKLOAD_INTF as ERROR.
6480       -- This will ensure that the next submission of the Same excel doesnt throw
6481       -- IOI error:
6482       -- Item <Item#> already exists in the organization V1. Please use a different item name/number.
6483       -----------------------------------------------------------------------------------------------
6484       UPDATE EGO_BULKLOAD_INTF EBI
6485         SET  EBI.PROCESS_STATUS = G_INTF_STATUS_ERROR
6486         WHERE EBI.PROCESS_STATUS = G_INTF_STATUS_TOBE_PROCESS
6487         AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
6488 
6489       COMMIT;
6493       -- Close Error Handler Debug Session.
6490       Developer_Debug('COMMITing the error statuses for EBI Rows.');
6491 
6492       -----------------------------------------------------
6494       -----------------------------------------------------
6495       Close_Debug_Session;
6496 
6497    --Exception block ends.
6498    ------------------------------------------------------------------
6499 
6500 END Process_item_interface_lines;
6501 
6502 /*
6503  ** Added by Ssingal - This procedure gets the Trade ItemDescriptor for a given
6504  **                    Inventory_item_id and organization Id.
6505  **         Bug Fix  4001661
6506  */
6507 
6508 
6509 PROCEDURE get_Trade_Item_Descriptor (
6510           p_inventory_item_id        IN          VARCHAR2,
6511           p_organization_id          IN          VARCHAR2,
6512           x_tradeItemDescriptor      OUT NOCOPY  VARCHAR2
6513 ) IS
6514   l_tradeItemDescriptor    VARCHAR2(100);
6515   BEGIN
6516 
6517   SELECT TRADE_ITEM_DESCRIPTOR INTO x_tradeItemDescriptor
6518   FROM MTL_SYSTEM_ITEMS_B
6519   WHERE INVENTORY_ITEM_ID = to_number(p_inventory_item_id)
6520     AND ORGANIZATION_ID  = to_number(p_organization_id);
6521 
6522 
6523 EXCEPTION
6524   WHEN OTHERS THEN
6525     Write_Debug('EGO BULK LOAD Gtin Attributes get_Trade_Item_Descriptor  :GTID is  null for an Item EXCEPTION HAPPENED => '|| SUBSTR ( SQLERRM , 0 ,240 ));
6526     Write_Debug('EGO BULK LOAD Gtin Attributes get_Trade_Item_Descriptor  GTID Is null for  => '|| p_inventory_item_id || ' , org Id ' || p_organization_id);
6527 END get_Trade_Item_Descriptor;
6528 
6529 
6530 /*
6531  ** Added by Ssingal - For clearing the attribute values for an Item
6532  **                    taking into consideration the Trade Item Descriptor
6533  **         Bug Fix  4001661
6534  */
6535 
6536 
6537 PROCEDURE Clear_Gtin_Attrs
6538     (
6539      p_resultfmt_usage_id       IN             NUMBER ,
6540      p_commit                   IN             VARCHAR2 DEFAULT FND_API.G_TRUE,
6541      x_errbuff                  OUT NOCOPY     VARCHAR2 ,
6542      x_ret_code                 OUT NOCOPY     VARCHAR2
6543     )
6544     IS
6545  CURSOR c_errLogFile ( c_resultfmt_usage_id  IN  NUMBER) IS
6546    SELECT C_INTF_ATTR239
6547  FROM   EGO_BULKLOAD_INTF
6548  WHERE C_INTF_ATTR239 IS NOT NULL
6549    AND RESULTFMT_USAGE_ID = c_resultfmt_usage_id
6550    AND ROWNUM < 2;
6551 
6552   CURSOR c_itemId_OrgId (c_resultfmt_usage_id  IN  NUMBER) IS
6553     SELECT INSTANCE_PK1_VALUE , INSTANCE_PK2_VALUE
6554       FROM EGO_BULKLOAD_INTF
6555       WHERE RESULTFMT_USAGE_ID  = c_resultfmt_usage_id
6556         AND PROCESS_STATUS = 7;
6557 
6558    CURSOR c_gtid (c_inventory_itemId  IN NUMBER , c_organization_Id IN NUMBER) IS
6559      SELECT TRADE_ITEM_DESCRIPTOR
6560        FROM MTL_SYSTEM_ITEMS_B
6561       WHERE INVENTORY_ITEM_ID = c_inventory_itemId
6562         AND ORGANIZATION_ID = c_organization_Id ;
6563 
6564  /* Editable at root
6565     Attribute Values to be cleared for Leaf
6566     these attributes are _B table attributes
6567     We need to to pass Single/Multi attribute group type */
6568     CURSOR  c_leafAttrs_bTable  ( c_attr_group_type IN VARCHAR2 , c_edit_in_hcR IN VARCHAR2 , c_data_type_codeA IN VARCHAR2) IS
6569      SELECT DATABASE_COLUMN ,
6570             EDIT_IN_HIERARCHY_CODE ,
6571             DATA_TYPE_CODE
6572        FROM EGO_ATTRS_V
6573       WHERE ATTR_GROUP_TYPE = c_attr_group_type  -- 'EGO_ITEM_GTIN_ATTRS'
6574         AND EDIT_IN_HIERARCHY_CODE IN  ( c_edit_in_hcR  )  -- ( 'L' , 'LP', 'A' , 'AP')
6575         AND DATA_TYPE_CODE not in ( c_data_type_codeA  );
6576 
6577  /* Editable at leaf
6578     Attribute Values to be cleared for Root
6579     these attributes are _B table attributes
6580     We need to to pass Single/Multi attribute group type */
6581     CURSOR  c_rootAttrs_bTable  ( c_attr_group_type IN VARCHAR2 , c_edit_in_hcL IN VARCHAR2 , c_edit_in_hcLP IN VARCHAR2 , c_data_type_codeA IN VARCHAR2 ) is
6582      SELECT DATABASE_COLUMN ,
6583             EDIT_IN_HIERARCHY_CODE ,
6584             DATA_TYPE_CODE
6585        FROM EGO_ATTRS_V
6586       WHERE ATTR_GROUP_TYPE = c_attr_group_type  -- 'EGO_ITEM_GTIN_ATTRS'
6587         AND EDIT_IN_HIERARCHY_CODE IN  ( c_edit_in_hcL , c_edit_in_hcLP )  -- ( 'L' , 'LP', 'A' , 'AP')
6588         AND DATA_TYPE_CODE not in ( c_data_type_codeA ) ;
6589 
6590  /* Editable at root
6591     Attribute Values to be cleared for Leaf
6592     these attributes are _TL table attributes
6593     We need to to pass Single/Multi attribute group type */
6594    CURSOR  c_leafAttrs_tlTable  ( c_attr_group_type IN VARCHAR2 , c_edit_in_hcR IN VARCHAR2 , c_data_type_codeA IN VARCHAR2) is
6595      SELECT DATABASE_COLUMN ,
6596             EDIT_IN_HIERARCHY_CODE ,
6597             DATA_TYPE_CODE
6598        FROM EGO_ATTRS_V
6599       WHERE ATTR_GROUP_TYPE = c_attr_group_type  -- 'EGO_ITEM_GTIN_ATTRS'
6600         AND EDIT_IN_HIERARCHY_CODE IN  ( c_edit_in_hcR  )  -- ( 'L' , 'LP', 'A' , 'AP')
6601         AND DATA_TYPE_CODE in ( c_data_type_codeA ) ;
6602 
6603  /* Editable at leaf
6604     Attribute Values to be cleared for Root
6605     these attributes are _TL table attributes
6606     We need to to pass Single/Multi attribute group type */
6607     CURSOR  c_rootAttrs_tlTable  ( c_attr_group_type IN VARCHAR2 , c_edit_in_hcL IN VARCHAR2 , c_edit_in_hcLP IN VARCHAR2 , c_data_type_codeA IN VARCHAR2 ) is
6608      SELECT DATABASE_COLUMN ,
6609             EDIT_IN_HIERARCHY_CODE ,
6610             DATA_TYPE_CODE
6611        FROM EGO_ATTRS_V
6612       WHERE ATTR_GROUP_TYPE = c_attr_group_type  -- 'EGO_ITEM_GTIN_ATTRS'
6613         AND EDIT_IN_HIERARCHY_CODE IN  ( c_edit_in_hcL , c_edit_in_hcLP  )  -- ( 'L' , 'LP', 'A' , 'AP')
6614         AND DATA_TYPE_CODE in ( c_data_type_codeA ) ;
6615 
6616   TYPE ATTR_METADATA_REC IS RECORD ( DATABASE_COLUMN           VARCHAR2(30),
6617                                      EDIT_IN_HIERARCHY_CODE    VARCHAR2(30),
6618                                      DATA_TYPE_CODE            VARCHAR2(30)
6619                                    );
6620   /*TYPE ATTR_METADATA_TABLE IS TABLE OF ATTR_METADATA_REC INDEX BY BINARY_INTEGER;*/
6621 
6622   l_is_Debug                  BOOLEAN := FALSE ;
6623   l_err_log_file              VARCHAR2(1000);
6624   l_err_log_file_name         VARCHAR2(1000);
6625   l_err_log_file_dir          VARCHAR2(1000);
6626   l_dyn_sql                   VARCHAR2(20000);
6627   l_inventory_item_id         NUMBER ;
6628   l_organization_id           NUMBER ;
6629   l_hierarchyExists           VARCHAR2(20);
6630   l_gtid                      VARCHAR2(100);
6631   l_return_status             VARCHAR2(100);
6632   l_msg_count                 NUMBER ;
6633   l_msg_data                  fnd_new_messages.message_text%TYPE;
6634   l_retCode                   VARCHAR2(10);
6635   l_errbuff                   VARCHAR2(20000);
6636   l_err_code                  NUMBER;
6637 --  l_attr_table              ATTR_METADATA_TABLE ;
6638   l_attr_rec                  ATTR_METADATA_REC ;
6639   l_used_in_structure         VARCHAR2(100) ;
6640 
6641   l_leafAttrs_bTable_dbCol        VARCHAR2(5000);
6642   l_leafAttrs_MulBTable_dbCol     VARCHAR2(5000);
6643   l_rootAttrs_bTable_dbCol        VARCHAR2(5000);
6644   l_rootAttrs_MulBTable_dbCol     VARCHAR2(5000);
6645   l_leafAttrs_tlTable_dbCol       VARCHAR2(5000);
6646   l_leafAttrs_MulTlTable_dbCol    VARCHAR2(5000);
6647   l_rootAttrs_TlTable_dbCol       VARCHAR2(5000);
6648   l_rootAttrs_MulTlTable_dbCol    VARCHAR2(5000);
6649 
6650   l_leafAttrs_bTable_value        VARCHAR2(5000);
6651   l_leafAttrs_MulBTable_value     VARCHAR2(5000);
6652   l_rootAttrs_bTable_value        VARCHAR2(5000);
6653   l_rootAttrs_MulBTable_value     VARCHAR2(5000);
6654   l_leafAttrs_tlTable_value       VARCHAR2(5000);
6655   l_leafAttrs_MulTlTable_value    VARCHAR2(5000);
6656   l_rootAttrs_TlTable_value       VARCHAR2(5000);
6657   l_rootAttrs_MulTlTable_value    VARCHAR2(5000);
6658 
6659 
6660   --API return parameters
6661 
6662 BEGIN
6663 
6664   OPEN c_errLogFile ( p_resultfmt_usage_id );
6665   FETCH c_errLogFile  INTO l_err_log_file;
6666   IF c_errLogFile%FOUND THEN
6667     l_is_Debug := TRUE ;
6668   END IF;
6669   -- Bug : 4099546
6670   CLOSE c_errLogFile;
6671   Write_Debug('-----------------------------------------------------------------');
6672   Write_Debug('Clear_Gtin_Attrs  :                                            ');
6673   Write_Debug('-----------------------------------------------------------------');
6674 
6675   IF (l_is_Debug ) THEN
6676     l_err_log_file_dir := SUBSTR (l_err_log_file , 0 , INSTR (l_err_log_file , 'EGO_BULKLOAD_INTF' ) - 1 );
6677     l_err_log_file_name := SUBSTR (l_err_log_file , INSTR ( l_err_log_file , 'EGO_BULKLOAD_INTF'  )-1 );
6678     -----------------------------------------------------------------------
6679     -- To open the Debug Session to write the Debug Log.                 --
6680     -- This sets Debug value so that Error_Handler.Get_Debug returns 'Y' --
6681     -----------------------------------------------------------------------
6685      ,x_return_status    => l_retCode
6682     Error_Handler.Open_Debug_Session(
6683       p_debug_filename   => l_err_log_file_name
6684      ,p_output_dir       => l_err_log_file_dir
6686      ,x_error_mesg       => l_errbuff
6687      );
6688 
6689   END IF;
6690 
6691     --  Fetch the metadata now for Uccnet attributes
6692      Write_Debug('Clear_Gtin_Attrs  : Getting metadata');
6693 
6694     OPEN  c_leafAttrs_bTable  ('EGO_ITEM_GTIN_ATTRS', 'R' , 'A') ;
6695     LOOP
6696      FETCH c_leafAttrs_bTable INTO l_attr_rec ;
6697       EXIT WHEN c_leafAttrs_bTable%NOTFOUND;
6698        l_leafAttrs_bTable_dbCol := l_leafAttrs_bTable_dbCol || ' , ' || l_attr_rec.DATABASE_COLUMN ;
6699        l_leafAttrs_bTable_value := l_leafAttrs_bTable_value || ' , NULL ' ;
6700     END LOOP;
6701     CLOSE c_leafAttrs_bTable;
6702     l_leafAttrs_bTable_dbCol  := SUBSTR ( l_leafAttrs_bTable_dbCol  , INSTR( l_leafAttrs_bTable_dbCol , ',')+1 ) ;
6703     l_leafAttrs_bTable_value  := SUBSTR ( l_leafAttrs_bTable_value  , INSTR( l_leafAttrs_bTable_value , ',')+1 ) ;
6704 
6705    OPEN  c_leafAttrs_bTable  ('EGO_ITEM_GTIN_MULTI_ATTRS', 'R' , 'A') ;
6706     LOOP
6707      FETCH c_leafAttrs_bTable INTO l_attr_rec ;
6708      EXIT WHEN c_leafAttrs_bTable%NOTFOUND ;
6709        l_leafAttrs_MulBTable_dbCol := l_leafAttrs_MulBTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6710        l_leafAttrs_MulBTable_value := l_leafAttrs_MulBTable_value || ' , NULL ' ;
6711     END LOOP;
6712     CLOSE c_leafAttrs_bTable;
6713     l_leafAttrs_MulBTable_dbCol  := SUBSTR ( l_leafAttrs_MulBTable_dbCol  , INSTR( l_leafAttrs_MulBTable_dbCol , ',')+1 ) ;
6714     l_leafAttrs_MulBTable_value  := SUBSTR ( l_leafAttrs_MulBTable_value  , INSTR( l_leafAttrs_MulBTable_value , ',')+1 ) ;
6715 
6716    OPEN  c_rootAttrs_bTable  ('EGO_ITEM_GTIN_ATTRS', 'L' ,'LP' ,  'A') ;
6717     LOOP
6718      FETCH c_rootAttrs_bTable INTO l_attr_rec ;
6719      EXIT WHEN  c_rootAttrs_bTable%NOTFOUND ;
6720        l_rootAttrs_bTable_dbCol := l_rootAttrs_bTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6721        l_rootAttrs_bTable_value := l_rootAttrs_bTable_value || ' , NULL ' ;
6722     END LOOP;
6723     CLOSE c_rootAttrs_bTable;
6724     l_rootAttrs_bTable_dbCol  := SUBSTR ( l_rootAttrs_bTable_dbCol  , INSTR( l_rootAttrs_bTable_dbCol , ',')+1 ) ;
6725     l_rootAttrs_bTable_value  := SUBSTR ( l_rootAttrs_bTable_value  , INSTR( l_rootAttrs_bTable_value , ',')+1 ) ;
6726 
6727    OPEN  c_rootAttrs_bTable  ('EGO_ITEM_GTIN_MULTI_ATTRS', 'L' ,'LP'  ,  'A') ;
6728     LOOP
6729      FETCH c_rootAttrs_bTable INTO l_attr_rec ;
6730      EXIT WHEN  c_rootAttrs_bTable%NOTFOUND ;
6731        l_rootAttrs_MulBTable_dbCol := l_rootAttrs_MulBTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6732        l_rootAttrs_MulBTable_value := l_rootAttrs_MulBTable_value || ' , NULL ' ;
6733     END LOOP;
6734     CLOSE c_rootAttrs_bTable;
6735     l_rootAttrs_MulBTable_dbCol  := SUBSTR ( l_rootAttrs_MulBTable_dbCol  , INSTR( l_rootAttrs_MulBTable_dbCol , ',')+1 ) ;
6736     l_rootAttrs_MulBTable_value  := SUBSTR ( l_rootAttrs_MulBTable_value  , INSTR( l_rootAttrs_MulBTable_value , ',')+1 ) ;
6737 
6738    OPEN  c_leafAttrs_tlTable  ('EGO_ITEM_GTIN_ATTRS', 'R' ,  'A') ;
6739     LOOP
6740      FETCH c_leafAttrs_tlTable INTO l_attr_rec ;
6741      EXIT WHEN c_leafAttrs_tlTable%NOTFOUND ;
6742        l_leafAttrs_tlTable_dbCol := l_leafAttrs_tlTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6743        l_leafAttrs_tlTable_value := l_leafAttrs_tlTable_value || ' , NULL ' ;
6744     END LOOP;
6745     CLOSE c_leafAttrs_tlTable;
6746     l_leafAttrs_tlTable_dbCol  := SUBSTR ( l_leafAttrs_tlTable_dbCol  , INSTR( l_leafAttrs_tlTable_dbCol , ',')+1 ) ;
6747     l_leafAttrs_tlTable_value  := SUBSTR ( l_leafAttrs_tlTable_value  , INSTR( l_leafAttrs_tlTable_value , ',')+1 ) ;
6748 
6749    OPEN  c_leafAttrs_tlTable  ('EGO_ITEM_GTIN_MULTI_ATTRS', 'R' ,  'A') ;
6750     LOOP
6751      FETCH c_leafAttrs_tlTable INTO l_attr_rec ;
6752      EXIT WHEN c_leafAttrs_tlTable%NOTFOUND ;
6753        l_leafAttrs_MultlTable_dbCol := l_leafAttrs_MulTlTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6754        l_leafAttrs_MultlTable_value := l_leafAttrs_MultlTable_value || ' , NULL ';
6755     END LOOP;
6756     CLOSE c_leafAttrs_tlTable;
6757     l_leafAttrs_MultlTable_dbCol  := SUBSTR ( l_leafAttrs_MultlTable_dbCol  , INSTR( l_leafAttrs_MultlTable_dbCol , ',')+1 ) ;
6758     l_leafAttrs_MultlTable_value  := SUBSTR ( l_leafAttrs_MultlTable_value  , INSTR( l_leafAttrs_MultlTable_value , ',')+1 ) ;
6759 
6760    OPEN  c_rootAttrs_tlTable  ('EGO_ITEM_GTIN_ATTRS', 'L' ,'LP' ,  'A') ;
6761     LOOP
6762      FETCH c_rootAttrs_tlTable INTO l_attr_rec ;
6763      EXIT WHEN c_rootAttrs_tlTable%NOTFOUND ;
6764        l_rootAttrs_TlTable_dbCol := l_rootAttrs_TlTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6765        l_rootAttrs_TlTable_value := l_rootAttrs_TlTable_value || ' , NULL ' ;
6766     END LOOP;
6767     CLOSE c_rootAttrs_tlTable;
6768     l_rootAttrs_TlTable_dbCol  := SUBSTR ( l_rootAttrs_TlTable_dbCol  , INSTR( l_rootAttrs_TlTable_dbCol , ',')+1 ) ;
6769     l_rootAttrs_TlTable_value  := SUBSTR ( l_rootAttrs_TlTable_value  , INSTR( l_rootAttrs_TlTable_value , ',')+1 ) ;
6770 
6771    OPEN  c_rootAttrs_tlTable  ('EGO_ITEM_GTIN_MULTI_ATTRS', 'L' ,'LP' ,  'A') ;
6772     LOOP
6773      FETCH c_rootAttrs_tlTable INTO l_attr_rec ;
6774      EXIT WHEN c_rootAttrs_tlTable%NOTFOUND ;
6775        l_rootAttrs_MulTlTable_dbCol := l_rootAttrs_MulTlTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6776        l_rootAttrs_MulTlTable_value := l_rootAttrs_MulTlTable_value || ' , NULL ' ;
6777     END LOOP;
6778     CLOSE c_rootAttrs_tlTable;
6782     Write_Debug('Clear_Gtin_Attrs  : Fetched the metadata');
6779     l_rootAttrs_MulTlTable_dbCol  := SUBSTR ( l_rootAttrs_MulTlTable_dbCol  , INSTR( l_rootAttrs_MulTlTable_dbCol , ',')+1 ) ;
6780     l_rootAttrs_MulTlTable_value  := SUBSTR ( l_rootAttrs_MulTlTable_value  , INSTR( l_rootAttrs_MulTlTable_value , ',')+1 ) ;
6781 
6783 
6784     OPEN c_itemId_OrgId (p_resultfmt_usage_id) ;
6785       LOOP
6786         FETCH c_itemId_OrgId into l_inventory_item_id , l_organization_id ;
6787         EXIT WHEN c_itemId_OrgId%NOTFOUND ;
6788            /*
6789             * GTID can be changed only if the Item is not having a
6790             * packaging hierarchy.So we will clear the attributes
6791             * only if the packaging hierarcy does not exist.
6792             */
6793 
6794            EXECUTE IMMEDIATE ' BEGIN BOM_IMPLODER_PUB.IMPLODER_USEREXIT (
6795                                    SEQUENCE_ID                => NULL ,
6796                                    ENG_MFG_FLAG               => :1 ,
6797                                    ORG_ID                     => :2 ,
6798                                    IMPL_FLAG                  => :3 ,
6799                                    DISPLAY_OPTION             => :4 ,
6800                                    LEVELS_TO_IMPLODE          => :5 ,
6801                                    OBJ_NAME                   => :6 ,
6802                                    PK1_VALUE                  => :7 ,
6803                                    PK2_VALUE                  => :8 ,
6804                                    PK3_VALUE                  => NULL ,
6805                                    PK4_VALUE                  => NULL ,
6806                                    PK5_VALUE                  => NULL ,
6807                                    IMPL_DATE                  => :9,
6808                                    UNIT_NUMBER_FROM           => :10 ,
6809                                    UNIT_NUMBER_TO             => :11 ,
6810                                    ERR_MSG                    => :12 ,
6811                                    ERR_CODE                   => :13 ,
6812                                    ORGANIZATION_OPTION        => :14 ,
6813                                    ORGANIZATION_HIERARCHY     => NULL ,
6814                                    SERIAL_NUMBER_FROM         => NULL ,
6815                                    SERIAL_NUMBER_TO           => NULL ,
6816                                    STRUCT_TYPE                => :15 ,
6817                                    PREFERRED_ONLY             => :16 ,
6818                                    USED_IN_STRUCTURE          => :17
6819                                  ); END ; '
6820              USING  IN 2,  IN l_organization_id,  IN 2,  IN 1,  IN 60,  IN 'EGO_ITEM',
6821                     IN  l_inventory_item_id,  IN l_organization_id, IN  to_char(SYSDATE,'YYYY/MM/DD HH24:MI:SS') ,
6822                     IN 'N', IN 'Y', OUT l_errbuff, OUT l_err_code,  IN 1,
6823                     IN 'Packaging Hierarchy', IN  2, OUT l_used_in_structure ;
6824 
6825 
6826         IF (l_used_in_structure <> 'T') THEN
6827             OPEN c_gtid ( l_inventory_item_id  , l_organization_id  );
6828             FETCH c_gtid INTO l_gtid;
6829             -- Bug : 4099546
6830             CLOSE c_gtid;
6831               IF (l_gtid = 'BASE_UNIT_OR_EACH' )THEN
6832 
6833                 IF ( length(l_leafAttrs_bTable_dbCol) > 0 ) THEN
6834 
6835                   EXECUTE IMMEDIATE ' UPDATE  EGO_ITEM_GTN_ATTRS_B SET  ( '|| l_leafAttrs_bTable_dbCol ||
6836                                    ' ) = ( SELECT '|| l_leafAttrs_bTable_value ||
6837                                    ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id '||
6838                                    ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
6839 
6840                 END IF;
6841 
6842                 IF ( length(l_leafAttrs_tlTable_dbCol) > 0 )  THEN
6843 
6844                   EXECUTE IMMEDIATE ' UPDATE  EGO_ITEM_GTN_ATTRS_TL SET ( '|| l_leafAttrs_tlTable_dbCol ||
6845                                   ' ) = ( SELECT '|| l_leafAttrs_tlTable_value ||
6846                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
6847                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
6848                  END IF;
6849 
6850                 IF ( length(l_leafAttrs_MulBTable_dbCol) > 0 )  THEN
6851 
6852                   EXECUTE IMMEDIATE ' UPDATE  EGO_ITM_GTN_MUL_ATTRS_B SET ( ' || l_leafAttrs_MulBTable_dbCol||
6853                                   ' ) = ( SELECT ' || l_leafAttrs_MulBTable_value ||
6854                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
6855                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
6856                 END IF;
6857                 IF ( length(l_leafAttrs_MultlTable_dbCol) > 0 ) THEN
6858                   EXECUTE IMMEDIATE ' UPDATE  EGO_ITM_GTN_MUL_ATTRS_TL SET ( ' || l_leafAttrs_MultlTable_dbCol||
6859                                   ' ) = ( SELECT ' || l_leafAttrs_MultlTable_value ||
6860                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id' ||
6861                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
6862                 END IF;
6863 
6864                 EGO_GTIN_PVT.UPDATE_REG_PUB_UPDATE_DATES (p_inventory_item_id  => l_inventory_item_id ,
6865                                                           p_organization_id    => l_organization_id ,
6869                                                           x_msg_data           => l_msg_data );
6866                                                           p_update_reg         => 'Y' ,
6867                                                           x_return_status      => l_return_status ,
6868                                                           x_msg_count          => l_msg_count,
6870                IF l_return_status <>  'S'  THEN
6871                    Write_Debug('GTIN : Clear_Gtin_Attrs. :: Exception from EGO_GTIN_PVT.UPDATE_REG_PUB_UPDATE_DATES ');
6872                    Write_Debug('GTIN : Clear_Gtin_Attrs. ::message ' || l_msg_data );
6873                END IF;
6874 
6875               ELSE
6876 
6877                 IF ( length(l_rootAttrs_bTable_dbCol) > 0 )  THEN
6878 
6879                   EXECUTE IMMEDIATE ' UPDATE EGO_ITEM_GTN_ATTRS_B SET ( '|| l_rootAttrs_bTable_dbCol ||
6880                                   ' ) = ( SELECT'|| l_rootAttrs_bTable_value ||
6881                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  =  :inventory_item_id '||
6882                                   ' AND ORGANIZATION_ID = :organization_id  ' USING l_inventory_item_id , l_organization_id;
6883                 END IF;
6884                 IF ( length(l_rootAttrs_tlTable_dbCol) > 0 ) THEN
6885 
6886                   EXECUTE IMMEDIATE ' UPDATE EGO_ITEM_GTN_ATTRS_TL SET ( '|| l_rootAttrs_tlTable_dbCol ||
6887                                   ' ) = ( SELECT'|| l_rootAttrs_tlTable_value ||
6888                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
6889                                   ' AND ORGANIZATION_ID =  :organization_id ' USING l_inventory_item_id , l_organization_id;
6890                 END IF;
6891                 IF ( length(l_rootAttrs_MulBTable_dbCol) > 0 ) THEN
6892 
6893                   EXECUTE IMMEDIATE ' UPDATE EGO_ITM_GTN_MUL_ATTRS_B SET ( '|| l_rootAttrs_MulBTable_dbCol ||
6894                                   ' ) = ( SELECT '|| l_rootAttrs_MulBTable_value ||
6895                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
6896                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
6897                 END IF;
6898                 IF ( length(l_rootAttrs_MultlTable_dbCol) > 0 ) THEN
6899 
6900                   EXECUTE IMMEDIATE ' UPDATE EGO_ITM_GTN_MUL_ATTRS_TL SET ( '||l_rootAttrs_MultlTable_dbCol ||
6901                                   ' ) = ( SELECT '|| l_rootAttrs_MultlTable_value ||
6902                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
6903                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
6904                 END IF;
6905 
6906                 EGO_GTIN_PVT.UPDATE_REG_PUB_UPDATE_DATES (p_inventory_item_id  => l_inventory_item_id ,
6907                                                           p_organization_id    => l_organization_id ,
6908                                                           p_update_reg         => 'N' ,
6909                                                           x_return_status      => l_return_status,
6910                                                           x_msg_count          => l_msg_count,
6911                                                           x_msg_data           => l_msg_data );
6912                IF l_return_status <> 'S' THEN
6913                    Write_Debug('GTIN : Clear_Gtin_Attrs. :: Exception from EGO_GTIN_PVT.UPDATE_REG_PUB_UPDATE_DATES ');
6914                    Write_Debug('GTIN : Clear_Gtin_Attrs. ::message ' || l_msg_data );
6915                END IF;
6916 
6917               END IF; --GTID is Each / non-Each
6918 
6919         END IF; -- If the Item is not having a Packaging Hierarchy
6920 
6921       END LOOP;
6922       close c_itemId_OrgId;
6923 
6924   Write_Debug('GTIN : Clear_Gtin_Attrs.');
6925 
6926   -------------------------------------------------------------
6927   -- Commit at the end.
6928   -------------------------------------------------------------
6929   IF (p_commit = FND_API.G_TRUE) THEN
6930     COMMIT;
6931   END IF;
6932 
6933   IF (l_is_debug) THEN
6934     Close_Debug_Session;
6935   END IF;
6936 
6937   x_ret_code := G_STATUS_SUCCESS;
6938 
6939   EXCEPTION
6940     WHEN OTHERS THEN
6941       x_ret_code := G_STATUS_ERROR;
6942       x_errbuff := SUBSTRB(SQLERRM, 1,240);
6943       Write_Debug('Clear_Gtin_Attrs  : EXCEPTION HAPPENED => '||x_errbuff);
6944 
6945       IF c_errLogFile%ISOPEN THEN
6946         close c_errLogFile;
6947       END IF;
6948 
6949       IF c_itemId_OrgId%ISOPEN THEN
6950        close c_itemId_OrgId ;
6951       END IF;
6952 
6953       IF c_gtid%ISOPEN THEN
6954         close c_gtid ;
6955       END IF;
6956 
6957       IF c_leafAttrs_bTable%ISOPEN THEN
6958         close c_leafAttrs_bTable ;
6959       END IF;
6960 
6961       IF c_rootAttrs_bTable%ISOPEN THEN
6962         close c_rootAttrs_bTable   ;
6963       END IF;
6964 
6965       IF c_leafAttrs_tlTable%ISOPEN THEN
6966         close c_leafAttrs_tlTable  ;
6967       END IF;
6968 
6969       IF c_rootAttrs_tlTable%ISOPEN THEN
6970         close c_rootAttrs_tlTable ;
6971       END IF;
6972 
6973       IF (l_is_debug) THEN
6974         Close_Debug_Session;
6975       END IF;
6976 
6977 END Clear_Gtin_Attrs ;
6978 
6979 --  ============================================================================
6983 --                to populate the item numbers for all the sequence generated items.
6980 --  API Name    : Populate_Seq_Gen_Item_Nums
6981 --  Description : This procedure will be called from IOI
6982 --                (after org and catalog category details are resolved)
6984 --  ============================================================================
6985 PROCEDURE Populate_Seq_Gen_Item_Nums
6986           (p_set_id           IN         NUMBER
6987           ,p_org_id           IN         NUMBER
6988           ,p_all_org          IN         NUMBER
6989           ,p_rec_status       IN         NUMBER
6990           ,x_return_status    OUT NOCOPY VARCHAR2
6991           ,x_msg_count        OUT NOCOPY NUMBER
6992           ,x_msg_data         OUT NOCOPY VARCHAR2) IS
6993 
6994   TYPE num_tbl_type   IS TABLE OF NUMBER        INDEX BY BINARY_INTEGER;
6995 
6996   l_cc_id_table                  num_tbl_type;
6997   l_trans_id_table               num_tbl_type;
6998   l_org_id_table                 DBMS_SQL.VARCHAR2_TABLE;
6999   l_ss_id_table                  num_tbl_type;
7000   l_ss_ref_table                 EGO_VARCHAR_TBL_TYPE;
7001   l_item_num_table               EGO_VARCHAR_TBL_TYPE;
7002   l_old_item_num_table           EGO_VARCHAR_TBL_TYPE; --Added R12C
7003   l_sql                          VARCHAR2(10000);
7004   l_cc_rows_processed            NUMBER;
7005   l_item_rows_processed          NUMBER;
7006   l_xset_id                      NUMBER;
7007 
7008 BEGIN
7009   Write_Debug (' started with params p_set_id: '||p_set_id||' p_org_id: '||p_org_id||' p_all_org: '||p_all_org);
7010   x_return_status := FND_API.G_RET_STS_SUCCESS;
7011   x_msg_count := 0;
7012   x_msg_data := NULL;
7013 
7014   --Only Item Row has p_set_id, setting batch id for the rest
7015   l_xset_id := p_set_id-5000000000000;
7016 
7017   --Removing Item Num NULL clause - R12C
7018   SELECT DISTINCT item_catalog_group_id
7019   BULK COLLECT INTO l_cc_id_table
7020   FROM  MTL_SYSTEM_ITEMS_INTERFACE
7021   WHERE set_process_id = p_set_id
7022     AND (organization_id = p_org_id OR p_all_org = 1)
7023     AND process_flag = p_rec_status
7024     AND transaction_type = 'CREATE';
7025 
7026   l_cc_rows_processed := SQL%ROWCOUNT;
7027   IF l_cc_rows_processed = 0 THEN
7028     RETURN;
7029   END IF;
7030 
7031   FOR cc_row_index in 1..l_cc_rows_processed LOOP
7032     Write_Debug (' CC being processed '||cc_row_index);
7033 
7034     --Removing Item Num NULL clause - R12C
7035     SELECT TO_CHAR(organization_id), item_number,
7036            transaction_id, source_system_id,
7037            source_system_reference
7038     BULK COLLECT INTO l_org_id_table, l_old_item_num_table,
7039                       l_trans_id_table, l_ss_id_table,
7040                       l_ss_ref_table
7041     FROM  MTL_SYSTEM_ITEMS_INTERFACE
7042     WHERE set_process_id = p_set_id
7043       AND (organization_id = p_org_id OR p_all_org = 1)
7044       AND item_catalog_group_id = l_cc_id_table(cc_row_index)
7045       AND process_flag = p_rec_status
7046       AND transaction_type = 'CREATE';
7047 
7048     l_item_rows_processed := SQL%ROWCOUNT;
7049     IF (l_item_rows_processed > 0) THEN
7050      EGO_ITEM_PVT.Get_Seq_Gen_Item_Nums
7051                          (
7052                            p_item_catalog_group_id  => l_cc_id_table(cc_row_index)
7053                           ,p_org_id_tbl             => l_org_id_table
7054                           ,x_item_num_tbl           => l_item_num_table
7055                           );
7056 
7057       -- for item interface table
7058       FORALL item_num_row_index IN 1..l_item_rows_processed
7059         UPDATE mtl_system_items_interface
7060            SET item_number = l_item_num_table(item_num_row_index),
7061                SEGMENT1 = NULL,
7062                SEGMENT2 = NULL,
7063                SEGMENT3 = NULL,
7064                SEGMENT4 = NULL,
7065                SEGMENT5 = NULL,
7066                SEGMENT6 = NULL,
7067                SEGMENT7 = NULL,
7068                SEGMENT8 = NULL,
7069                SEGMENT9 = NULL,
7070                SEGMENT10 = NULL,
7071                SEGMENT11 = NULL,
7072                SEGMENT12 = NULL,
7073                SEGMENT13 = NULL,
7074                SEGMENT14 = NULL,
7075                SEGMENT15 = NULL,
7076                SEGMENT16 = NULL,
7077                SEGMENT17 = NULL,
7078                SEGMENT18 = NULL,
7079                SEGMENT19 = NULL,
7080                SEGMENT20 = NULL
7081          WHERE set_process_id IN (p_set_id, l_xset_id) /*bug 6158936 child records are in l_xset_id*/
7082            AND process_flag IN (p_rec_status, 60001)   /*bug 6158936 child records are in process_flag + 60000*/
7083            AND source_system_id = l_ss_id_table(item_num_row_index)
7084            AND ( item_number = l_old_item_num_table(item_num_row_index) OR
7085                  source_system_reference = l_ss_ref_table(item_num_row_index));
7086 
7087       -- for item revisions interface table
7088       FORALL rev_row_index IN 1..l_item_rows_processed
7089         UPDATE mtl_item_revisions_interface
7090            SET item_number = l_item_num_table(rev_row_index)
7091          WHERE set_process_id = l_xset_id
7092            AND source_system_id = l_ss_id_table(rev_row_index)
7093            AND process_flag = p_rec_status
7094            AND ( item_number = l_old_item_num_table(rev_row_index) OR
7095                  source_system_reference = l_ss_ref_table(rev_row_index));
7096 
7097       -- for category assignments interface table
7101          WHERE set_process_id = l_xset_id
7098       FORALL item_cat_row_index IN 1..l_item_rows_processed
7099         UPDATE mtl_item_categories_interface
7100            SET item_number = l_item_num_table(item_cat_row_index)
7102            AND source_system_id = l_ss_id_table(item_cat_row_index)
7103            AND process_flag = p_rec_status
7104            AND ( item_number = l_old_item_num_table(item_cat_row_index) OR
7105                  source_system_reference = l_ss_ref_table(item_cat_row_index));
7106 
7107       -- for user attrs interface table
7108       FORALL usr_attr_row_index IN 1..l_item_rows_processed
7109         UPDATE ego_itm_usr_attr_intrfc
7110            SET item_number = l_item_num_table(usr_attr_row_index)
7111          WHERE data_set_id = l_xset_id
7112            AND source_system_id = l_ss_id_table(usr_attr_row_index)
7113            AND process_status = p_rec_status
7114            AND ( item_number = l_old_item_num_table(usr_attr_row_index) OR
7115                  source_system_reference = l_ss_ref_table(usr_attr_row_index));
7116 
7117       -- item people interface table
7118       FORALL ss_id_row_index IN 1..l_item_rows_processed
7119         UPDATE ego_item_people_intf
7120            SET item_number = l_item_num_table(ss_id_row_index)
7121          WHERE data_set_id = l_xset_id
7122            AND source_system_id = l_ss_id_table(ss_id_row_index)
7123            AND process_status = p_rec_status
7124            AND ( item_number = l_old_item_num_table(ss_id_row_index) OR
7125                  source_system_reference = l_ss_ref_table(ss_id_row_index));
7126 
7127       -- aml interface table
7128       FORALL ss_id_row_index IN 1..l_item_rows_processed
7129         UPDATE ego_aml_intf
7130            SET item_number = l_item_num_table(ss_id_row_index)
7131          WHERE data_set_id = l_xset_id
7132            AND source_system_id = l_ss_id_table(ss_id_row_index)
7133            AND process_flag = p_rec_status
7134            AND ( item_number = l_old_item_num_table(ss_id_row_index) OR
7135                  source_system_reference = l_ss_ref_table(ss_id_row_index));
7136 
7137       --BOM interface tables R12C
7138       FORALL bill_id_row_index IN 1..l_item_rows_processed
7139         UPDATE bom_bill_of_mtls_interface
7140            SET item_number = l_item_num_table(bill_id_row_index)
7141          WHERE process_flag = p_rec_status
7142            AND batch_id = l_xset_id
7143            AND ( item_number = l_old_item_num_table(bill_id_row_index) OR
7144                  source_system_reference = l_ss_ref_table(bill_id_row_index));
7145 
7146       FORALL bom_inv_id_row_index IN 1..l_item_rows_processed
7147         UPDATE BOM_INVENTORY_COMPS_INTERFACE
7148            SET component_item_number = l_item_num_table(bom_inv_id_row_index)
7149          WHERE process_flag = p_rec_status
7150            AND batch_id = l_xset_id
7151            AND ( component_item_number = l_old_item_num_table(bom_inv_id_row_index) OR
7152                  comp_source_system_reference = l_ss_ref_table(bom_inv_id_row_index));
7153 
7154       FORALL bom_par_id_row_index IN 1..l_item_rows_processed
7155         UPDATE BOM_INVENTORY_COMPS_INTERFACE
7156            SET assembly_item_number = l_item_num_table(bom_par_id_row_index)
7157          WHERE process_flag = p_rec_status
7158            AND batch_id = l_xset_id
7159            AND ( assembly_item_number = l_old_item_num_table(bom_par_id_row_index) OR
7160                  parent_source_system_reference = l_ss_ref_table(bom_par_id_row_index));
7161 
7162       FORALL bom_sub_id_row_index IN 1..l_item_rows_processed
7163         UPDATE BOM_SUB_COMPS_INTERFACE
7164            SET assembly_item_number = l_item_num_table(bom_sub_id_row_index)
7165          WHERE process_flag = p_rec_status
7166            AND batch_id = l_xset_id
7167            AND ( assembly_item_number = l_old_item_num_table(bom_sub_id_row_index) OR
7168                  parent_source_system_reference = l_ss_ref_table(bom_sub_id_row_index));
7169 
7170       FORALL bom_sub_id_row_index IN 1..l_item_rows_processed
7171         UPDATE BOM_SUB_COMPS_INTERFACE
7172            SET component_item_number = l_item_num_table(bom_sub_id_row_index)
7173          WHERE process_flag = p_rec_status
7174            AND batch_id = l_xset_id
7175            AND ( component_item_number = l_old_item_num_table(bom_sub_id_row_index) OR
7176                  comp_source_system_reference = l_ss_ref_table(bom_sub_id_row_index));
7177 
7178       FORALL bom_sub_id_row_index IN 1..l_item_rows_processed
7179         UPDATE BOM_SUB_COMPS_INTERFACE
7180            SET substitute_comp_number = l_item_num_table(bom_sub_id_row_index)
7181          WHERE process_flag = p_rec_status
7182            AND batch_id = l_xset_id
7183            AND ( substitute_comp_number = l_old_item_num_table(bom_sub_id_row_index) OR
7184                  subcom_source_system_reference = l_ss_ref_table(bom_sub_id_row_index));
7185 
7186       FORALL bom_ref_id_row_index IN 1..l_item_rows_processed
7187         UPDATE BOM_REF_DESGS_INTERFACE
7188            SET assembly_item_number = l_item_num_table(bom_ref_id_row_index)
7189          WHERE process_flag = p_rec_status
7190            AND batch_id = l_xset_id
7191            AND ( assembly_item_number = l_old_item_num_table(bom_ref_id_row_index) OR
7192                  parent_source_system_reference = l_ss_ref_table(bom_ref_id_row_index));
7193 
7194       FORALL bom_ref_id_row_index IN 1..l_item_rows_processed
7195         UPDATE BOM_REF_DESGS_INTERFACE
7196            SET component_item_number = l_item_num_table(bom_ref_id_row_index)
7197          WHERE process_flag = p_rec_status
7198            AND batch_id = l_xset_id
7202       FORALL bom_comp_id_row_index IN 1..l_item_rows_processed
7199            AND ( component_item_number = l_old_item_num_table(bom_ref_id_row_index) OR
7200                  comp_source_system_reference = l_ss_ref_table(bom_ref_id_row_index));
7201 
7203         UPDATE BOM_COMPONENT_OPS_INTERFACE
7204            SET assembly_item_number = l_item_num_table(bom_comp_id_row_index)
7205          WHERE process_flag = p_rec_status
7206            AND batch_id = l_xset_id
7207            AND ( assembly_item_number = l_old_item_num_table(bom_comp_id_row_index) OR
7208                  parent_source_system_reference = l_ss_ref_table(bom_comp_id_row_index));
7209 
7210       FORALL bom_comp_id_row_index IN 1..l_item_rows_processed
7211         UPDATE BOM_COMPONENT_OPS_INTERFACE
7212            SET component_item_number = l_item_num_table(bom_comp_id_row_index)
7213          WHERE process_flag = p_rec_status
7214            AND batch_id = l_xset_id
7215            AND ( component_item_number = l_old_item_num_table(bom_comp_id_row_index) OR
7216                  comp_source_system_reference = l_ss_ref_table(bom_comp_id_row_index));
7217 
7218     END IF; --end: IF (l_org_id_rows_cnt > 0) THEN
7219 
7220   END LOOP; -- for cc_row_identifier in 1..l_rows_processed
7221 
7222 EXCEPTION
7223   WHEN OTHERS THEN
7224       x_return_status :=  FND_API.G_RET_STS_UNEXP_ERROR;
7225       FND_MESSAGE.Set_Name('EGO', 'EGO_PLSQL_ERR');
7226       FND_MESSAGE.Set_Token('PKG_NAME', 'EGO_ITEM_BULKLOAD_PKG');
7227       FND_MESSAGE.Set_Token('API_NAME', 'Populate_Seq_Gen_Item_Nums');
7228       FND_MESSAGE.Set_Token('SQL_ERR_MSG', SQLERRM);
7229       FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE
7230                                ,p_count   => x_msg_count
7231                                ,p_data    => x_msg_data);
7232 END Populate_Seq_Gen_Item_Nums;
7233 
7234 
7235 
7236 --  ============================================================================
7237 --  API Name    : load_intersections_interface
7238 --  Description : This procedure will be called to load the intersection
7239 --                interface table ego_item_associations_intf with the required data
7240 --  ============================================================================
7241 PROCEDURE load_intersections_interface
7242                (
7243                  p_resultfmt_usage_id    IN         NUMBER,
7244                  p_set_process_id        IN         NUMBER,
7245                  x_set_process_id        OUT NOCOPY NUMBER,
7246                  x_errbuff               OUT NOCOPY VARCHAR2,
7247                  x_retcode               OUT NOCOPY VARCHAR2
7248                 ) IS
7249 
7250 
7251   ------------------------------------------------------------------------------------------
7252   -- To get the Item intersection attr columns in the Result Format.
7253   ------------------------------------------------------------------------------------------
7254   CURSOR c_item_intersection_intf_cols (c_resultfmt_usage_id  IN  NUMBER) IS
7255     SELECT attribute_code, intf_column_name, data_level_id
7256     FROM   ego_results_fmt_usages
7257     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
7258      /* AND DATA_LEVEL_ID in (SELECT DATA_LEVEL_ID
7259                               FROM EGO_DATA_LEVEL_B
7260                              WHERE DATA_LEVEL_NAME IN ('ITEM_SUP','ITEM_ORG','ITEM_SUP_SITE')
7261                                AND APPLICATION_ID = 431
7262                                AND ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
7263                             )*/;
7264 
7265   ---------------------------------------------------------------------
7266   -- Type Declarations
7267   ---------------------------------------------------------------------
7268   TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(256)
7269    INDEX BY BINARY_INTEGER;
7270 
7271                -------------------------
7272                --   local variables   --
7273                -------------------------
7274   l_prod_col_name       VARCHAR2(256);
7275   l_intf_col_name       VARCHAR2(256);
7276 
7277   ---------------------------------------------------------------------
7278   -- Assuming that the column name will not be more than 30 chars.
7279   ---------------------------------------------------------------------
7280   l_supplier_name_col           VARCHAR2(30);
7281   l_org_code_col                VARCHAR2(30);
7282   l_supplier_site_col           VARCHAR2(30);
7283   l_supplier_site_name_col      VARCHAR2(30);
7284   l_supplier_site_prim_flag_col VARCHAR2(30);
7285   l_supplier_site_status_col    VARCHAR2(30);
7286   l_sup_site_store_status_col   VARCHAR2(30);
7287   l_supplier_number_col         VARCHAR2(30);
7288 
7289   l_msii_set_process_id    NUMBER;
7290   i                        NUMBER;
7291   l_data_level_id          NUMBER;
7292   l_item_number_col        VARCHAR2(30);
7293   l_supplier_prim_flag_col VARCHAR2(30);
7294   l_supplier_status_col    VARCHAR2(30);
7295   l_data_level_id_1        VARCHAR2(30);
7296 
7297   l_yes_meaning            VARCHAR2(20);
7298   l_no_meaning             VARCHAR2(20);
7299   l_active_meaning         VARCHAR2(20);
7300   l_inactive_meaning       VARCHAR2(20);
7301   l_has_sup_sit_org_col    VARCHAR2(1);
7302 
7303   --------------------------------------------
7304   -- Long Dynamic SQL String
7305   --------------------------------------------
7306   l_dyn_sql                VARCHAR2(10000);
7307 
7308 BEGIN
7309    Write_Debug('*Item Intersections Interface*');
7310 
7314    IF p_set_process_id IS NULL THEN
7311    Write_Debug('Retrieving the Display and INTF cols');
7312    i := 0;
7313 
7315      SELECT mtl_system_items_intf_sets_s.NEXTVAL
7316        INTO l_msii_set_process_id
7317      FROM dual;
7318    ELSE
7319      l_msii_set_process_id := p_set_process_id;
7320    END IF;
7321 
7322    l_has_sup_sit_org_col := 'N';
7323    --------------------------------------------------------------------
7324    -- Saving the column names in local table for easy retrieval later.
7325    -- Also save important columns such as Item ID, Org ID etc.,
7326    --------------------------------------------------------------------
7327    FOR c_item_rev_attr_intf_rec IN c_item_intersection_intf_cols
7328      (
7329        p_resultfmt_usage_id
7330       )
7331    LOOP
7332 
7333      l_prod_col_name := c_item_rev_attr_intf_rec.attribute_code;
7334      l_intf_col_name := c_item_rev_attr_intf_rec.intf_column_name;
7335      l_data_level_id := c_item_rev_attr_intf_rec.data_level_id;
7336 
7337 -- bedajna bug 6491762
7338 --     IF(l_data_level_id = 43105) THEN
7339      IF((l_data_level_id = 43105) OR (l_prod_col_name = 'SUPPLIERSITE_STORE_STATUS')) THEN
7340        l_has_sup_sit_org_col := 'Y';
7341      END IF;
7342       --------------------------------------------------------------------
7343       -- Store the Item Number column name in the Generic Interface
7344       --------------------------------------------------------------------
7345       IF (l_prod_col_name = G_ITEM_NUMBER) THEN
7346         l_item_number_col := l_intf_col_name;
7347         Write_Debug('Item Number : '||l_item_number_col);
7348 
7349       --------------------------------------------------------------------
7350       -- Store the Organization Code column name in the Generic Interface
7351       --------------------------------------------------------------------
7352       ELSIF (l_prod_col_name = G_ORG_CODE) THEN
7353         l_org_code_col := l_intf_col_name;
7354         Write_Debug('Organization Code : '||l_org_code_col);
7355 
7356       --------------------------------------------------------------------
7357       -- Store the Supplier Name column name in the Generic Interface
7358       --------------------------------------------------------------------
7359       ELSIF (l_prod_col_name = 'SUPPLIER_NAME') THEN
7360         l_supplier_name_col := l_intf_col_name;
7361         Write_Debug('Supplier Name : '||l_supplier_name_col);
7362 
7363       --------------------------------------------------------------------
7364       -- Store the Supplier Number column name in the Generic Interface
7365       --------------------------------------------------------------------
7366       ELSIF (l_prod_col_name = 'SUPPLIER_NUMBER') THEN
7367         l_supplier_number_col := l_intf_col_name;
7368         Write_Debug('Supplier Number : '||l_supplier_name_col);
7369 
7370 
7371       --------------------------------------------------------------------
7372       -- Store the Supplier Name column name in the Generic Interface
7373       --------------------------------------------------------------------
7374       ELSIF (l_prod_col_name = 'SUPPLIER_PRIMARY') THEN
7375         l_supplier_prim_flag_col := l_intf_col_name;
7376         Write_Debug('Supplier Primary flag : '||l_supplier_name_col);
7377 
7378       --------------------------------------------------------------------
7379       -- Store the Supplier Status column name in the Generic Interface
7380       --------------------------------------------------------------------
7381       ELSIF (l_prod_col_name = 'SUPPLIER_STATUS') THEN
7382         l_supplier_status_col := l_intf_col_name;
7383         Write_Debug('Supplier Status : '||l_supplier_status_col);
7384 
7385       --------------------------------------------------------------------
7386       -- Store the Supplier Site Name column name in the Generic Interface
7387       --------------------------------------------------------------------
7388       ELSIF (l_prod_col_name = 'SUPPLIER_SITE') THEN
7389         l_supplier_site_name_col := l_intf_col_name;
7390         Write_Debug('Supplier Site Name : '||l_supplier_site_name_col);
7391 
7392       --------------------------------------------------------------------
7393       -- Store the Supplier Name column name in the Generic Interface
7394       --------------------------------------------------------------------
7395       ELSIF (l_prod_col_name = 'SUPPLIERSITE_PRIMARY') THEN
7396         l_supplier_site_prim_flag_col := l_intf_col_name;
7397         Write_Debug('Supplier Primary flag : '||l_supplier_site_prim_flag_col);
7398 
7399       --------------------------------------------------------------------
7400       -- Store the Supplier Status column name in the Generic Interface
7401       --------------------------------------------------------------------
7402       ELSIF (l_prod_col_name = 'SUPPLIERSITE_STATUS') THEN
7403         l_supplier_site_status_col := l_intf_col_name;
7404         Write_Debug('Supplier site Status : '||l_supplier_site_status_col);
7405 
7406       ELSIF (l_prod_col_name = 'SUPPLIERSITE_STORE_STATUS') THEN
7407         l_sup_site_store_status_col := l_intf_col_name;
7408         Write_Debug('Supplier site store Status : '||l_sup_site_store_status_col);
7409 
7410       END IF; --IF (l_prod_col_name = G_ITEM_NUMBER) THEN
7411 
7412    END LOOP; --FOR c_item_rev_attr_intf_rec
7413 
7414    SELECT MEANING
7415      INTO l_yes_meaning
7416     FROM  FND_LOOKUP_VALUES_VL
7417     WHERE  LOOKUP_TYPE = 'EGO_YES_NO'
7418       AND  LOOKUP_CODE = 'Y';
7419 
7420    SELECT MEANING
7424       AND  LOOKUP_CODE = 'N';
7421      INTO l_no_meaning
7422     FROM  FND_LOOKUP_VALUES_VL
7423     WHERE  LOOKUP_TYPE = 'EGO_YES_NO'
7425 
7426    SELECT MEANING
7427      INTO l_active_meaning
7428     FROM  FND_LOOKUP_VALUES_VL
7429     WHERE  LOOKUP_TYPE = 'EGO_ASSOCIATION_STATUS'
7430       AND  LOOKUP_CODE = '1';
7431 
7432    SELECT MEANING
7433      INTO l_inactive_meaning
7434     FROM  FND_LOOKUP_VALUES_VL
7435     WHERE  LOOKUP_TYPE = 'EGO_ASSOCIATION_STATUS'
7436       AND  LOOKUP_CODE = '2';
7437 
7438    ----------------------------------------------------------------------
7439    -- Inserting rows in the intersection interface table for supplier
7440    -- intersection ...
7441    ----------------------------------------------------------------------
7442    IF(l_supplier_name_col IS NOT NULL OR
7443       l_supplier_number_col IS NOT NULL) THEN
7444 
7445      SELECT DATA_LEVEL_ID
7446        INTO l_data_level_id
7447        FROM EGO_DATA_LEVEL_B
7448       WHERE DATA_LEVEL_NAME = 'ITEM_SUP'
7449         AND APPLICATION_ID = 431
7450         AND ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP';
7451 
7452      l_dyn_sql :=              'INSERT INTO EGO_ITEM_ASSOCIATIONS_INTF ';
7453      l_dyn_sql := l_dyn_sql || '( ';
7454      l_dyn_sql := l_dyn_sql || ' BATCH_ID                 ,   ';
7455      l_dyn_sql := l_dyn_sql || ' ITEM_NUMBER              ,   ';
7456      l_dyn_sql := l_dyn_sql || ' INVENTORY_ITEM_ID        ,   ';
7457      l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID          ,   ';
7458      l_dyn_sql := l_dyn_sql || ' DATA_LEVEL_ID            ,   ';
7459      l_dyn_sql := l_dyn_sql || ' PRIMARY_FLAG             ,   ';
7460      l_dyn_sql := l_dyn_sql || ' STATUS_CODE              ,   ';
7461      l_dyn_sql := l_dyn_sql || ' SUPPLIER_NAME            ,   ';
7462      l_dyn_sql := l_dyn_sql || ' SUPPLIER_NUMBER          ,   ';
7463      l_dyn_sql := l_dyn_sql || ' ORGANIZATION_CODE        ,   ';
7464      l_dyn_sql := l_dyn_sql || ' TRANSACTION_TYPE         ,   ';
7465      l_dyn_sql := l_dyn_sql || ' PROCESS_FLAG             ,   ';
7466      l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID           ,   ';
7467      l_dyn_sql := l_dyn_sql || ' CREATED_BY               ,   ';
7468      l_dyn_sql := l_dyn_sql || ' CREATION_DATE            ,   ';
7469      l_dyn_sql := l_dyn_sql || ' LAST_UPDATED_BY          ,   ';
7470      l_dyn_sql := l_dyn_sql || ' LAST_UPDATE_DATE         ,   ';
7471      l_dyn_sql := l_dyn_sql || ' LAST_UPDATE_LOGIN        ,   ';
7472      l_dyn_sql := l_dyn_sql || ' REQUEST_ID               ,   ';
7473      l_dyn_sql := l_dyn_sql || ' PROGRAM_APPLICATION_ID   ,   ';
7474      l_dyn_sql := l_dyn_sql || ' PROGRAM_ID               ,   ';
7475      l_dyn_sql := l_dyn_sql || ' PROGRAM_UPDATE_DATE      ,   ';
7476      l_dyn_sql := l_dyn_sql || ' BUNDLE_ID                ,   ';
7477      l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_ID         ,   ';
7478      l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE  ,   ';
7479      l_dyn_sql := l_dyn_sql || ' ASSOCIATION_ID               ';
7480      l_dyn_sql := l_dyn_sql || ' )                            ';
7481      l_dyn_sql := l_dyn_sql || 'SELECT ';
7482      l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
7483      l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
7484      l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
7485      l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
7486      --l_dyn_sql := l_dyn_sql || ' ''EGO_ITEM''             , ';
7487      l_dyn_sql := l_dyn_sql || l_data_level_id||'         , ';
7488      IF(l_supplier_prim_flag_col IS NOT NULL) THEN
7489   --     bedajna bug 6429874
7490   --     l_dyn_sql := l_dyn_sql || 'DECODE (EBI.'||l_supplier_prim_flag_col||', '''||l_yes_meaning||''', ''Y'', '''||l_no_meaning||''', ''N'', NULL ) , ';
7491        l_dyn_sql := l_dyn_sql || 'DECODE (EBI.'||l_supplier_prim_flag_col||', '||':yes_meaning'||', ''Y'', '||':no_meaning'||', ''N'', NULL ) , ';
7492      ELSE
7493        l_dyn_sql := l_dyn_sql || ' NULL,  ';
7494      END IF;
7495      IF(l_supplier_status_col IS NOT NULL) THEN
7496   --     bedajna bug 6429874
7497   --     l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_supplier_status_col||' , '''||l_active_meaning||''', ''1'', '''||l_inactive_meaning||''', ''2'', NULL) STATUS_CODE ,';
7498        l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_supplier_status_col||' , '||':active_meaning'||', ''1'', '||':inactive_meaning'||', ''2'', NULL) STATUS_CODE ,';
7499      ELSE
7500        l_dyn_sql := l_dyn_sql || ' NULL,  ';
7501      END IF;
7502      IF(l_supplier_name_col IS NOT NULL)THEN
7503        l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_name_col ||' , ';
7504      ELSE
7505        l_dyn_sql := l_dyn_sql || ' NULL,  ';
7506      END IF;
7507      IF(l_supplier_number_col IS NOT NULL)THEN
7508        l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_number_col ||' , ';
7509      ELSE
7510        l_dyn_sql := l_dyn_sql || ' NULL,  ';
7511      END IF;
7512      l_dyn_sql := l_dyn_sql || 'EBI.'||l_org_code_col ||'       , ';
7513      l_dyn_sql := l_dyn_sql || '''SYNC''                        , ';
7514      l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS||'              , ';
7515      l_dyn_sql := l_dyn_sql || 'MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL , ';
7516      l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATED_BY              , ';
7517      l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATION_DATE           , ';
7518      l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATED_BY         , ';
7519      l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_DATE        , ';
7520      l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_LOGIN       , ';
7521      l_dyn_sql := l_dyn_sql || 'EBI.'||'REQUEST_ID              , ';
7522      l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_APPLICATION_ID  , ';
7526      l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11)  , ';
7523      l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_ID              , ';
7524      l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_UPDATE_DATE     , ';
7525      l_dyn_sql := l_dyn_sql || ' NULL                           , ';
7527      l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12             , ';
7528      l_dyn_sql := l_dyn_sql || ' NULL                            ';
7529      l_dyn_sql := l_dyn_sql || 'FROM EGO_BULKLOAD_INTF EBI ';
7530      l_dyn_sql := l_dyn_sql || ' WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
7531      l_dyn_sql := l_dyn_sql || ' AND   EBI.PROCESS_STATUS = 1  ';
7532      IF(l_supplier_name_col IS NOT NULL AND l_supplier_number_col IS NOT NULL)THEN
7533        l_dyn_sql := l_dyn_sql || ' AND  ( EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7534        l_dyn_sql := l_dyn_sql || '       OR EBI.'||l_supplier_number_col||' IS NOT NULL ) ';
7535      ELSIF(l_supplier_name_col IS NOT NULL AND l_supplier_number_col IS NULL) THEN
7536        l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7537      ELSIF(l_supplier_name_col IS NULL AND l_supplier_number_col IS NOT NULL) THEN
7538        l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_number_col||' IS NOT NULL  ';
7539      END IF;
7540 
7541      Write_Debug(l_dyn_sql);
7542 --     bedajna bug 6429874
7543 --     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
7544     IF ( (l_supplier_prim_flag_col IS NOT NULL) AND (l_supplier_status_col IS NOT NULL) ) then
7545      EXECUTE IMMEDIATE l_dyn_sql USING l_yes_meaning, l_no_meaning, l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id;
7546     ELSIF ( (l_supplier_prim_flag_col IS NOT NULL) AND (l_supplier_status_col IS NULL) ) then
7547      EXECUTE IMMEDIATE l_dyn_sql USING l_yes_meaning, l_no_meaning, p_resultfmt_usage_id;
7548     ELSIF ( (l_supplier_prim_flag_col IS NULL) AND (l_supplier_status_col IS NOT NULL) ) then
7549      EXECUTE IMMEDIATE l_dyn_sql USING l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id;
7550     ELSIF ( (l_supplier_prim_flag_col IS NULL) AND (l_supplier_status_col IS NULL) ) then
7551      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
7552     end if;
7553 
7554      Write_Debug('Item Revs Interface: Populated the Inv Item IDs, Org IDs.');
7555 
7556    END IF;
7557    --------------------------------------------------------------------------
7558    -- Inserting rows in the intersection interface table for supplier Site --
7559    -- and supplier site store intersection ...
7560    --------------------------------------------------------------------------
7561    IF((l_supplier_name_col IS NOT NULL OR l_supplier_number_col IS NOT NULL)
7562       AND l_supplier_site_name_col IS NOT NULL) THEN
7563 
7564       SELECT DATA_LEVEL_ID
7565         INTO l_data_level_id
7566         FROM EGO_DATA_LEVEL_B
7567        WHERE DATA_LEVEL_NAME = 'ITEM_SUP_SITE'
7568          AND APPLICATION_ID = 431
7569          AND ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP';
7570 
7571       SELECT DATA_LEVEL_ID
7572         INTO l_data_level_id_1
7573         FROM EGO_DATA_LEVEL_B
7574        WHERE DATA_LEVEL_NAME = 'ITEM_SUP_SITE_ORG'
7575          AND APPLICATION_ID = 431
7576          AND ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP';
7577 
7578       l_dyn_sql :=              'INSERT INTO EGO_ITEM_ASSOCIATIONS_INTF ';
7579       l_dyn_sql := l_dyn_sql || '( ';
7580       l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID           ,   ';
7581       l_dyn_sql := l_dyn_sql || ' BATCH_ID                 ,   ';
7582       l_dyn_sql := l_dyn_sql || ' ITEM_NUMBER              ,   ';
7583       l_dyn_sql := l_dyn_sql || ' INVENTORY_ITEM_ID        ,   ';
7584       l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID          ,   ';
7585       --l_dyn_sql := l_dyn_sql || ' OBJ_NAME                 ,   ';
7586       l_dyn_sql := l_dyn_sql || ' DATA_LEVEL_ID            ,   ';
7587       l_dyn_sql := l_dyn_sql || ' PRIMARY_FLAG             ,   ';
7588       l_dyn_sql := l_dyn_sql || ' STATUS_CODE              ,   ';
7589       l_dyn_sql := l_dyn_sql || ' SUPPLIER_NAME            ,   ';
7590       l_dyn_sql := l_dyn_sql || ' SUPPLIER_NUMBER          ,   ';
7591       l_dyn_sql := l_dyn_sql || ' SUPPLIER_SITE_NAME       ,   ';
7592       l_dyn_sql := l_dyn_sql || ' ORGANIZATION_CODE        ,   ';
7593       l_dyn_sql := l_dyn_sql || ' TRANSACTION_TYPE         ,   ';
7594       l_dyn_sql := l_dyn_sql || ' PROCESS_FLAG             ,   ';
7595       l_dyn_sql := l_dyn_sql || ' CREATED_BY               ,   ';
7596       l_dyn_sql := l_dyn_sql || ' CREATION_DATE            ,   ';
7597       l_dyn_sql := l_dyn_sql || ' LAST_UPDATED_BY          ,   ';
7598       l_dyn_sql := l_dyn_sql || ' LAST_UPDATE_DATE         ,   ';
7599       l_dyn_sql := l_dyn_sql || ' LAST_UPDATE_LOGIN        ,   ';
7600       l_dyn_sql := l_dyn_sql || ' REQUEST_ID               ,   ';
7601       l_dyn_sql := l_dyn_sql || ' PROGRAM_APPLICATION_ID   ,   ';
7602       l_dyn_sql := l_dyn_sql || ' PROGRAM_ID               ,   ';
7603       l_dyn_sql := l_dyn_sql || ' PROGRAM_UPDATE_DATE      ,   ';
7604       l_dyn_sql := l_dyn_sql || ' BUNDLE_ID                ,   ';
7605       l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_ID         ,   ';
7606       l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE  ,   ';
7607       l_dyn_sql := l_dyn_sql || ' ASSOCIATION_ID               ';
7608       l_dyn_sql := l_dyn_sql || ' )                            ';
7609       l_dyn_sql := l_dyn_sql || 'SELECT ';
7610       l_dyn_sql := l_dyn_sql || 'MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL , ';
7611       l_dyn_sql := l_dyn_sql || ' INTERSECTIONS.*  ';
7612       l_dyn_sql := l_dyn_sql || ' FROM (  ';
7613 
7614       l_dyn_sql := l_dyn_sql || 'SELECT ';
7615       l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
7619       --l_dyn_sql := l_dyn_sql || ' ''EGO_ITEM''             , ';
7616       l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
7617       l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
7618       l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
7620       l_dyn_sql := l_dyn_sql || l_data_level_id||'         , ';
7621       IF(l_supplier_site_prim_flag_col IS NOT NULL) THEN
7622 --     bedajna bug 6429874
7623 --     l_dyn_sql := l_dyn_sql || ' DECODE(EBI.'||l_supplier_site_prim_flag_col||', '''||l_yes_meaning||''', ''Y'', '''||l_no_meaning||''',''N'' ) PRIMARY_FLAG , ';
7624        l_dyn_sql := l_dyn_sql || ' DECODE(EBI.'||l_supplier_site_prim_flag_col||', '||':yes_meaning'||', ''Y'', '||':no_meaning'||',''N'' ) PRIMARY_FLAG , ';
7625       ELSE
7626         l_dyn_sql := l_dyn_sql || ' NULL PRIMARY_FLAG ,  ';
7627       END IF;
7628       IF(l_supplier_site_status_col IS NOT NULL) THEN
7629 --     bedajna bug 6429874
7630 --     l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_supplier_site_status_col||' , '''||l_active_meaning||''', ''1'', '''||l_inactive_meaning||''', ''2'', NULL) STATUS_CODE,';
7631        l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_supplier_site_status_col||' , '||':active_meaning1'||', ''1'', '||':inactive_meaning1'||', ''2'', NULL) STATUS_CODE,';
7632       ELSE
7633         l_dyn_sql := l_dyn_sql || ' NULL STATUS_CODE ,  ';
7634       END IF;
7635       IF(l_supplier_name_col IS NOT NULL)THEN
7636         l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_name_col ||' SUPPLIER_NAME, ';
7637       ELSE
7638         l_dyn_sql := l_dyn_sql || ' NULL SUPPLIER_NAME,  ';
7639       END IF;
7640       IF(l_supplier_number_col IS NOT NULL)THEN
7641         l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_number_col ||' SUPPLIER_NUMBER , ';
7642       ELSE
7643         l_dyn_sql := l_dyn_sql || ' NULL SUPPLIER_NUMBER ,  ';
7644       END IF;
7645       l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_site_name_col ||' , ';
7646       l_dyn_sql := l_dyn_sql || 'EBI.'||l_org_code_col ||'       , ';
7647       l_dyn_sql := l_dyn_sql || '''SYNC''                        , ';
7648       l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS||'              , ';
7649       --l_dyn_sql := l_dyn_sql || 'MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL, ';
7650       l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATED_BY              , ';
7651       l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATION_DATE           , ';
7652       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATED_BY         , ';
7653       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_DATE        , ';
7654       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_LOGIN       , ';
7655       l_dyn_sql := l_dyn_sql || 'EBI.'||'REQUEST_ID              , ';
7656       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_APPLICATION_ID  , ';
7657       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_ID              , ';
7658       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_UPDATE_DATE     , ';
7659       l_dyn_sql := l_dyn_sql || ' NULL BUNDLE_ID                 , ';
7660       l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11)  , ';
7661       l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12             , ';
7662       l_dyn_sql := l_dyn_sql || ' NULL ASSOCIATION_ID              ';
7663       l_dyn_sql := l_dyn_sql || 'FROM EGO_BULKLOAD_INTF EBI ';
7664       l_dyn_sql := l_dyn_sql || ' WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
7665       l_dyn_sql := l_dyn_sql || ' AND   EBI.PROCESS_STATUS = 1  ';
7666       IF(l_supplier_name_col IS NOT NULL AND l_supplier_number_col IS NOT NULL)THEN
7667         l_dyn_sql := l_dyn_sql || ' AND  ( EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7668         l_dyn_sql := l_dyn_sql || '       OR EBI.'||l_supplier_number_col||' IS NOT NULL ) ';
7669       ELSIF(l_supplier_name_col IS NOT NULL AND l_supplier_number_col IS NULL) THEN
7670         l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7671       ELSIF(l_supplier_name_col IS NULL AND l_supplier_number_col IS NOT NULL) THEN
7672         l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_number_col||' IS NOT NULL  ';
7673       END IF;
7674       l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_site_name_col||' IS NOT NULL  ';
7675       l_dyn_sql := l_dyn_sql || ' UNION ';
7676       l_dyn_sql := l_dyn_sql || ' SELECT ';
7677       l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
7678       l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
7679       l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
7680       l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
7681       --l_dyn_sql := l_dyn_sql || ' ''EGO_ITEM''             , ';
7682       l_dyn_sql := l_dyn_sql || l_data_level_id_1||'         , ';
7683       --IF(l_supplier_site_prim_flag_col IS NOT NULL) THEN
7684       --  l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_site_prim_flag_col||' , ';
7685       --ELSE
7686         l_dyn_sql := l_dyn_sql || ' NULL PRIMARY_FLAG ,  ';
7687       --END IF;
7688 
7689       IF(l_sup_site_store_status_col IS NOT NULL) THEN
7690 --     bedajna bug 6429874
7691 --     l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_sup_site_store_status_col||' , '''||l_active_meaning||''', ''1'', '''||l_inactive_meaning||''', ''2'', NULL) STATUS_CODE,';
7692        l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_sup_site_store_status_col||' , '||':active_meaning2'||', ''1'', '||':inactive_meaning2'||', ''2'', NULL) STATUS_CODE,';
7693       ELSE
7694         l_dyn_sql := l_dyn_sql || ' NULL STATUS_CODE ,  ';
7695       END IF;
7696       IF(l_supplier_name_col IS NOT NULL)THEN
7697         l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_name_col ||' SUPPLIER_NAME , ';
7698       ELSE
7699         l_dyn_sql := l_dyn_sql || ' NULL SUPPLIER_NAME,  ';
7700       END IF;
7701       IF(l_supplier_number_col IS NOT NULL)THEN
7702         l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_number_col ||' SUPPLIER_NUMBER , ';
7703       ELSE
7704         l_dyn_sql := l_dyn_sql || ' NULL SUPPLIER_NUMBER ,  ';
7705       END IF;
7706       l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_site_name_col ||' , ';
7707 
7708       l_dyn_sql := l_dyn_sql || 'EBI.'||l_org_code_col ||'       , ';
7709       l_dyn_sql := l_dyn_sql || '''SYNC''                        , ';
7710       l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS||'              , ';
7711       --l_dyn_sql := l_dyn_sql || 'MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL, ';
7712       l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATED_BY              , ';
7713       l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATION_DATE           , ';
7714       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATED_BY         , ';
7715       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_DATE        , ';
7716       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_LOGIN       , ';
7717       l_dyn_sql := l_dyn_sql || 'EBI.'||'REQUEST_ID              , ';
7718       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_APPLICATION_ID  , ';
7719       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_ID              , ';
7720       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_UPDATE_DATE     , ';
7721       l_dyn_sql := l_dyn_sql || ' NULL  BUNDLE_ID                , ';
7722       l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11)  , ';
7723       l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12             , ';
7724       l_dyn_sql := l_dyn_sql || ' NULL ASSOCIATION_ID              ';
7725       l_dyn_sql := l_dyn_sql || 'FROM EGO_BULKLOAD_INTF EBI ';
7726       l_dyn_sql := l_dyn_sql || ' WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
7727       l_dyn_sql := l_dyn_sql || ' AND   EBI.PROCESS_STATUS = 1  ';
7728       l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7729       l_dyn_sql := l_dyn_sql || ' AND   ''Y'' =  '''||l_has_sup_sit_org_col||''' ';
7730 
7731       l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_site_name_col||' IS NOT NULL  ) INTERSECTIONS ';
7732 
7733       Write_Debug(l_dyn_sql);
7734 
7735 --     bedajna bug 6429874
7736 --     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
7737     IF ( (l_supplier_site_prim_flag_col IS NOT NULL) AND (l_supplier_site_status_col IS NOT NULL) AND (l_sup_site_store_status_col IS NOT NULL) ) then
7741     ELSIF ( (l_supplier_site_prim_flag_col IS NOT NULL) AND (l_supplier_site_status_col IS NULL) AND (l_sup_site_store_status_col IS NOT NULL) ) then
7738      EXECUTE IMMEDIATE l_dyn_sql USING l_yes_meaning, l_no_meaning, l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id, l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id;
7739     ELSIF ( (l_supplier_site_prim_flag_col IS NOT NULL) AND (l_supplier_site_status_col IS NOT NULL) AND (l_sup_site_store_status_col IS NULL) ) then
7740      EXECUTE IMMEDIATE l_dyn_sql USING l_yes_meaning, l_no_meaning, l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id, p_resultfmt_usage_id;
7742      EXECUTE IMMEDIATE l_dyn_sql USING l_yes_meaning, l_no_meaning, p_resultfmt_usage_id, l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id;
7743     ELSIF ( (l_supplier_site_prim_flag_col IS NULL) AND (l_supplier_site_status_col IS NOT NULL) AND (l_sup_site_store_status_col IS NOT NULL) ) then
7744      EXECUTE IMMEDIATE l_dyn_sql USING l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id, l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id;
7745     ELSIF ( (l_supplier_site_prim_flag_col IS NOT NULL) AND (l_supplier_site_status_col IS NULL) AND (l_sup_site_store_status_col IS NULL) ) then
7746      EXECUTE IMMEDIATE l_dyn_sql USING l_yes_meaning, l_no_meaning, p_resultfmt_usage_id, p_resultfmt_usage_id;
7747     ELSIF ( (l_supplier_site_prim_flag_col IS NULL) AND (l_supplier_site_status_col IS NOT NULL) AND (l_sup_site_store_status_col IS NULL) ) then
7748      EXECUTE IMMEDIATE l_dyn_sql USING l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id, p_resultfmt_usage_id;
7749     ELSIF ( (l_supplier_site_prim_flag_col IS NULL) AND (l_supplier_site_status_col IS NULL) AND (l_sup_site_store_status_col IS NOT NULL) ) then
7750      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id;
7751     ELSIF ( (l_supplier_site_prim_flag_col IS NULL) AND (l_supplier_site_status_col IS NULL) AND (l_sup_site_store_status_col IS NULL) ) then
7752      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
7753     end if;
7754 
7755       Write_Debug('Item Revs Interface: Populated the Inv Item IDs, Org IDs.');
7756 
7757    END IF;
7758 
7759    x_retcode := G_STATUS_SUCCESS;
7760    x_set_process_id := l_msii_set_process_id;
7761 
7762 END load_intersections_interface;
7763 
7764 
7765 
7766 
7767 
7768 END EGO_ITEM_BULKLOAD_PKG;