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.102.12020000.5 2013/01/17 04:22:44 lanhuang 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    ----------------------------------------------------------
295    G_SEGMENT_SEQ_INVALID    EXCEPTION;
296    G_DATA_TYPE_INVALID      EXCEPTION;
297 
298    PRAGMA EXCEPTION_INIT(G_SEGMENT_SEQ_INVALID, -20000);
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    --bug 12868802 UTL_FILE_DIR length defined in ORA.init can be longer than 512 in 10g or later,
364      --so it may cause ORA-06502, replace with v$parameter.value%TYPE; which work in all cases.
365 
366   l_log_output_dir       v$parameter.value%TYPE;
367   l_log_return_status    VARCHAR2(99);
368   l_errbuff              VARCHAR2(999);
369 BEGIN
370 
371   Error_Handler.initialize();
372   Error_Handler.set_bo_identifier(G_BO_IDENTIFIER);
373 
374   ---------------------------------------------------------------------------------
375   -- Commented on 12/17/2003 (PPEDDAMA). Open_Debug_Session should set the value
376   -- appropriately, so that when the Debug Session is successfully opened :
377   -- will return Error_Handler.Get_Debug = 'Y', else Error_Handler.Get_Debug = 'N'
378   ---------------------------------------------------------------------------------
379   -- Error_Handler.Set_Debug('Y');
380 
381   OPEN c_get_utl_file_dir;
382   FETCH c_get_utl_file_dir INTO l_log_output_dir;
383   --developer_debug('UTL_FILE_DIR : '||l_log_output_dir);
384   IF c_get_utl_file_dir%FOUND THEN
385     ------------------------------------------------------
386     -- Trim to get only the first directory in the list --
387     ------------------------------------------------------
388     IF INSTR(l_log_output_dir,',') <> 0 THEN
389       l_log_output_dir := SUBSTR(l_log_output_dir, 1, INSTR(l_log_output_dir, ',') - 1);
390       --developer_debug('Log Output Dir : '||l_log_output_dir);
391     END IF;
392 
393     G_ERROR_FILE_NAME := G_ERROR_TABLE_NAME||'_'||to_char(SYSDATE, 'DDMONYYYY_HH24MISS')||'.err';
394     --developer_debug('Trying to open the Error File => '||G_ERROR_FILE_NAME);
395 
396     -----------------------------------------------------------------------
397     -- To open the Debug Session to write the Debug Log.                 --
398     -- This sets Debug value so that Error_Handler.Get_Debug returns 'Y' --
399     -----------------------------------------------------------------------
400     Error_Handler.Open_Debug_Session(
401       p_debug_filename   => G_ERROR_FILE_NAME
402      ,p_output_dir       => l_log_output_dir
403      ,x_return_status    => l_log_return_status
404      ,x_error_mesg       => l_errbuff
405      );
406 
407     ---------------------------------------------------------------
408     -- Introduced for 11.5.10, so that Java Conc Program can     --
409     -- continue writing to the same Error Log File.              --
410     ---------------------------------------------------------------
411     G_ERRFILE_PATH_AND_NAME := l_log_output_dir||'/'||G_ERROR_FILE_NAME;
412 
413     developer_debug(' Log file location --> '||l_log_output_dir||'/'||G_ERROR_FILE_NAME ||' created with status '|| l_log_return_status);
414 
415     IF (l_log_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
416        developer_debug('Unable to open error log file. Error => '||l_errbuff);
417     END IF;
418 
419   END IF;--IF c_get_utl_file_dir%FOUND THEN
420   -- Bug : 4099546
421   CLOSE c_get_utl_file_dir;
422 END open_debug_session_internal;
423 
424 
425  -----------------------------------------------------------
426  -- Open the Debug Session, conditionally if the profile: --
427  -- INV Debug Trace is set to TRUE                        --
428  -----------------------------------------------------------
429 PROCEDURE Open_Debug_Session IS
430 
431 BEGIN
432   ----------------------------------------------------------------
433   -- Open the Debug Log Session, only if Profile is set to TRUE --
434   ----------------------------------------------------------------
435   IF (G_DEBUG = 1) THEN
436 
437    ----------------------------------------------------------------------------------
438    -- Opens Error_Handler debug session, only if Debug session is not already open.
439    -- Suggested by RFAROOK, so that multiple debug sessions are not open PER
440    -- Concurrent Request.
441    ----------------------------------------------------------------------------------
442    IF (Error_Handler.Get_Debug <> 'Y') THEN
443      Open_Debug_Session_Internal;
444    END IF;
445 
446   END IF;
447 
448 END Open_Debug_Session;
449 
450  -----------------------------------------------------------------
451  -- Close the Debug Session, only if Debug is already Turned ON --
452  -----------------------------------------------------------------
453 PROCEDURE Close_Debug_Session IS
454 
455 BEGIN
456    -----------------------------------------------------------------------------
457    -- Close Error_Handler debug session, only if Debug session is already open.
458    -----------------------------------------------------------------------------
459    IF (Error_Handler.Get_Debug = 'Y') THEN
460      Error_Handler.Close_Debug_Session;
461    END IF;
462 
463 END Close_Debug_Session;
464 
465  -----------------------------------------------------------------
466  -- Replace all Single Quote to TWO Single Quotes, for Escaping --
467  -- NOTE: Used while inserting Strings using Dynamic SQL.       --
468  -----------------------------------------------------------------
469 FUNCTION Escape_Single_Quote (p_String IN  VARCHAR2)
470   RETURN VARCHAR2 IS
471 
472 BEGIN
473 
474    IF (p_String IS NOT NULL) THEN
475      ---------------------------------------------------
476      -- Replace all Single Quotes to 2 Single Quotes  --
477      ---------------------------------------------------
478      RETURN REPLACE(p_String, '''', '''''');
479    ELSE
480      ----------------------------------------------
481      -- Return NULL, if the String is NULL or '' --
482      ----------------------------------------------
483      RETURN NULL;
484    END IF;
485 
486 END Escape_Single_Quote;
487 
488 PROCEDURE delete_records_from_MSII (p_set_process_id  IN NUMBER) IS
489 
490   TYPE char_tbl_type IS TABLE OF VARCHAR2(240);
491 
492   l_dyn_sql              VARCHAR2(32767) := '';
493   l_column_name     char_tbl_type;
494   l_rows_processed  NUMBER;
495   l_column_list         VARCHAR2(32767) := '';
496 
497 BEGIN
498    -----------------------------------------------------------------------
499    --Only in case of Import, and while importing Multi-Row attr group
500    --values : Item, Org, Catalog are NOT NULL, and rest of the base
501    --attributes are NULL. Hence can delete these rows off from MSII.
502    -----------------------------------------------------------------------
503 /***
504   -- fix for 12.2 OLP compatible
505 
506    SELECT COLUMN_NAME
507    BULK COLLECT INTO l_column_name
508    FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME = 'MTL_SYSTEM_ITEMS_INTERFACE'
509    AND COLUMN_NAME NOT IN ('SET_PROCESS_ID',
510                            'TRANSACTION_ID',
511                            'REQUEST_ID',
512                            'PROGRAM_APPLICATION_ID',
513                            'PROGRAM_ID',
514                            'TRANSACTION_TYPE',
515                            'ITEM_NUMBER',
516                            'ORGANIZATION_CODE',
517                            'PROCESS_FLAG',
518                            'SOURCE_SYSTEM_ID',
519                            'SOURCE_SYSTEM_REFERENCE',
520                            'ITEM_CATALOG_GROUP_ID',
521                            'INTERFACE_TABLE_UNIQUE_ID',
522                            'INVENTORY_ITEM_ID',
523                            'ORGANIZATION_ID',
524                            'LAST_UPDATE_DATE',
525                            'LAST_UPDATED_BY',
526                            'CREATION_DATE',
527                            'CREATED_BY',
528                            'LAST_UPDATE_LOGIN')
529    AND COLUMN_NAME NOT LIKE 'SEGMENT%'
530    AND COLUMN_NAME NOT LIKE 'GLOBAL_ATTRIBUTE%'
531    AND COLUMN_NAME NOT LIKE 'ATTRIBUTE%';
532 ***/
533 
534    -- bug#15835530  fix for 12.2 OLP compatible
535    SELECT col.column_name
536    BULK COLLECT INTO l_column_name
537    from user_synonyms syn, dba_tab_columns col
538    where syn.synonym_name = 'MTL_SYSTEM_ITEMS_INTERFACE'
539    and col.owner = syn.table_owner
540    and col.table_name = syn.table_name
541    AND COLUMN_NAME NOT IN ('SET_PROCESS_ID',
542                            'TRANSACTION_ID',
543                            'REQUEST_ID',
544                            'PROGRAM_APPLICATION_ID',
545                            'PROGRAM_ID',
546                            'TRANSACTION_TYPE',
547                            'ITEM_NUMBER',
548                            'ORGANIZATION_CODE',
549                            'PROCESS_FLAG',
550                            'SOURCE_SYSTEM_ID',
551                            'SOURCE_SYSTEM_REFERENCE',
552                            'ITEM_CATALOG_GROUP_ID',
553                            'INTERFACE_TABLE_UNIQUE_ID',
554                            'INVENTORY_ITEM_ID',
555                            'ORGANIZATION_ID',
556                            'LAST_UPDATE_DATE',
557                            'LAST_UPDATED_BY',
558                            'CREATION_DATE',
559                            'CREATED_BY',
560                            'LAST_UPDATE_LOGIN')
561    AND COLUMN_NAME NOT LIKE 'SEGMENT%'
562    AND COLUMN_NAME NOT LIKE 'GLOBAL_ATTRIBUTE%'
563    AND COLUMN_NAME NOT LIKE 'ATTRIBUTE%';
564 
565    l_rows_processed := SQL%ROWCOUNT;
566 
567    IF l_rows_processed > 0 THEN
568      FOR l_row_index IN 1..l_rows_processed LOOP
569        l_column_list := l_column_list || l_column_name(l_row_index) || ' IS NULL AND ';
570      END LOOP;
571      l_column_list := SUBSTR(l_column_list,1,length(l_column_list)-4);
572    END IF;
573 
574    l_dyn_sql := '';
575    l_dyn_sql := l_dyn_sql || ' DELETE MTL_SYSTEM_ITEMS_INTERFACE MSII ' ;
576    l_dyn_sql := l_dyn_sql || ' WHERE ';
577    l_dyn_sql := l_dyn_sql || ' ( ';
578    l_dyn_sql := l_dyn_sql ||    ' (ITEM_NUMBER IS NOT NULL AND ORGANIZATION_CODE     IS NOT NULL ) ';
579    l_dyn_sql := l_dyn_sql ||    ' OR ';
580    l_dyn_sql := l_dyn_sql ||    ' ( SOURCE_SYSTEM_REFERENCE  IS NOT NULL AND SOURCE_SYSTEM_ID IS NOT NULL ) ';  --for non-PDH Batch
581    l_dyn_sql := l_dyn_sql ||    ' OR ';
582    l_dyn_sql := l_dyn_sql ||    ' (DESCRIPTION IS NULL AND SOURCE_SYSTEM_REFERENCE IS NULL AND SOURCE_SYSTEM_REFERENCE_DESC IS NULL ) ';
583    l_dyn_sql := l_dyn_sql || ' ) ';
584    l_dyn_sql := l_dyn_sql || ' AND ';
585    l_dyn_sql := l_dyn_sql || ' ( ' ||  l_column_list  || ' ) ';
586    l_dyn_sql := l_dyn_sql || ' AND SET_PROCESS_ID = :SET_PROCESS_ID_1 ';
587 
588    ------------------------------------------------------------------------------------------------
589    -- Fix for 11.5.10: Including PROCESS_FLAG status during this DELETE operation.
590    --
591    -- When ERROR happens during PRIMARY_UOM_CODE processing (NOTE: This is the first
592    -- significant Value-to-ID conversion) then MSII.PROCESS_FLAG is set to something
593    -- other than 1. Because of this, the subsequent transfer of the Data from EBI to MSII
594    -- doesnot happen (as all SQLs check for EBI, MSII Process St atus to be 1 for transfer).
595    -- So, this DELETE will go through successfully, as all the columns are NULL (other than
596    -- ITEM_NUMBER, ORGANIZATION_CODE.)
597    -- Then EBI stays in PROCESS_STATUS = 1, which is later converted to 7 in Item_intf_completion.
598    --
599    -- Because of this User-Defined attrs for those rows are ERRONEOUSLY picked and processed.
600    ------------------------------------------------------------------------------------------------
601    l_dyn_sql := l_dyn_sql || ' AND PROCESS_FLAG = :PROCESS_STATUS_1 '; --Bug 3763665
602    l_dyn_sql := l_dyn_sql || ' AND ( ';
603    l_dyn_sql := l_dyn_sql || '  EXISTS ( ';   -- there exists a row where item is being Created or updated in the same request
604    l_dyn_sql := l_dyn_sql ||    ' SELECT ''X'' ';
605    l_dyn_sql := l_dyn_sql ||    ' FROM MTL_SYSTEM_ITEMS_INTERFACE MSI ';
606    l_dyn_sql := l_dyn_sql ||    ' WHERE MSI.DESCRIPTION IS NOT NULL ';
607    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))';
608    l_dyn_sql := l_dyn_sql ||    ' AND SET_PROCESS_ID = :SET_PROCESS_ID_2 ';
609    l_dyn_sql := l_dyn_sql ||    ' AND PROCESS_FLAG = :PROCESS_STATUS_2 ';
610    l_dyn_sql := l_dyn_sql ||    ' ) ';
611    l_dyn_sql := l_dyn_sql || ' OR EXISTS( ';
612    l_dyn_sql := l_dyn_sql ||    ' SELECT ''X'' ';
613    l_dyn_sql := l_dyn_sql ||    ' FROM MTL_SYSTEM_ITEMS_B MSI ';
614    l_dyn_sql := l_dyn_sql ||    ' WHERE  MSII.INVENTORY_ITEM_ID  = MSI.INVENTORY_ITEM_ID ';
615    l_dyn_sql := l_dyn_sql ||    ' AND MSII.ORGANIZATION_ID = MSI.ORGANIZATION_ID ';
616    l_dyn_sql := l_dyn_sql ||    ' ) ';-- End Bug 3763665
617    l_dyn_sql := l_dyn_sql || ' ) ';
618    Write_Debug(' DELETE MSII sql: '||l_dyn_sql);
619    IF (l_column_list IS NOT NULL) THEN
620      EXECUTE IMMEDIATE l_dyn_sql USING p_set_process_id,G_PROCESS_STATUS,p_set_process_id,G_PROCESS_STATUS;
621    END IF;
622    Write_Debug('delete_records_from_MSII : NEW Deleted redundant / unnecessary rows from MSII');
623 EXCEPTION
624   WHEN OTHERS THEN
625     RAISE;
626 END delete_records_from_MSII;
627  -----------------------------------------------------------------------
628  -- Fix for Bug# 3970069.
629  -- Insert into MTL_INTERFACE_ERRORS through autonomous transaction
630  -- commit. Earlier for any exception during Java Conc Program's
631  -- AM.commit(), the errors wouldnot get logged. By following Autonomous
632  -- Transaction block, that issue gets resolved.
633  -----------------------------------------------------------------------
634  PROCEDURE Insert_Mtl_Intf_Err(  p_transaction_id       IN  VARCHAR2
635                                , p_bo_identifier        IN  VARCHAR2
636                                , p_error_entity_code    IN  VARCHAR2
637                                , p_error_table_name     IN  VARCHAR2
638                                , p_error_msg            IN  VARCHAR2
639                                ) IS
640 
641  PRAGMA AUTONOMOUS_TRANSACTION;
642 
643  BEGIN
644    SetGobals();
645 
646    INSERT INTO MTL_INTERFACE_ERRORS
647    ( ORGANIZATION_ID
648      , UNIQUE_ID
649      , LAST_UPDATE_DATE
650      , LAST_UPDATED_BY
651      , CREATION_DATE
652      , CREATED_BY
653      , LAST_UPDATE_LOGIN
654      , TABLE_NAME
655      , MESSAGE_NAME
656      , COLUMN_NAME
657      , REQUEST_ID
658      , PROGRAM_APPLICATION_ID
659      , PROGRAM_ID
660      , PROGRAM_UPDATE_DATE
661      , ERROR_MESSAGE
662      , TRANSACTION_ID
663      , ENTITY_IDENTIFIER
664      , BO_IDENTIFIER)
665    VALUES
666    ( NULL
667      , NULL
668      , SYSDATE
669      , G_USER_ID
670      , SYSDATE
671      , G_USER_ID
672      , G_LOGIN_ID
673      , p_error_table_name
674      , NULL
675      , NULL
676      , G_REQUEST_ID
677      , G_PROG_APPID
678      , G_PROG_ID
679      , SYSDATE
680      , p_error_msg
681      , p_transaction_id
682      , p_error_entity_code
683      , p_bo_identifier
684    );
685 
686    COMMIT;
687 
688  END Insert_Mtl_Intf_Err;
689 
690  -----------------------------------------------------------------------
691  -- Fix for Bug# 3945885.
692  -- Generate Seq Item Numbers, for all Rows per ResultFmt_Usage_ID
693  -- where Item Number column are NULL.
694  -----------------------------------------------------------------------
695  PROCEDURE Log_ItemNums_ToBe_Processed(p_resultfmt_usage_id  IN  NUMBER,
696                                        p_item_num_colname    IN  VARCHAR2) IS
697 
698    l_item_num_sql    VARCHAR2(10000) :=
699       ' SELECT '|| p_item_num_colname
700    || ' FROM   EGO_BULKLOAD_INTF '
701    || ' WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
702    --|| '  AND   PROCESS_STATUS = 1';
703 
704    -----------------------------------------------------------------------
705    -- Variables used to query Item Number Generation Method
706    -----------------------------------------------------------------------
707    l_item_num_table                 DBMS_SQL.VARCHAR2_TABLE;
708    l_item_num_cursor                INTEGER;
709    l_item_num_exec                  INTEGER;
710    l_item_num_rows_cnt              NUMBER;
711 
712    l_msg                            fnd_new_messages.message_text%TYPE;
713    -----------------------------------------------------------------------
714 
715  BEGIN
716 
717    l_item_num_cursor := DBMS_SQL.OPEN_CURSOR;
718    --Developer_Debug('l_item_num_sql => '||l_item_num_sql);
719 
720    DBMS_SQL.PARSE(l_item_num_cursor, l_item_num_sql, DBMS_SQL.NATIVE);
721 
722    DBMS_SQL.DEFINE_ARRAY(
723                         c           => l_item_num_cursor  -- cursor --
724                       , position    => 1                  -- select position --
725                       , c_tab       => l_item_num_table   -- table of chars --
726                       , cnt         => 10000              -- rows requested --
727                       , lower_bound => 1                  -- start at --
728                        );
729 
730    DBMS_SQL.BIND_VARIABLE(l_item_num_cursor, ':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
731 
732    l_item_num_exec := DBMS_SQL.EXECUTE(l_item_num_cursor);
733    l_item_num_rows_cnt := DBMS_SQL.FETCH_ROWS(l_item_num_cursor);
734 
735    DBMS_SQL.COLUMN_VALUE(l_item_num_cursor, 1, l_item_num_table);
736    -- Bug : 4099546
737    DBMS_SQL.CLOSE_CURSOR(l_item_num_cursor);
738    FND_MESSAGE.SET_NAME('EGO','EGO_NUM_OF_ITEMS_PROCD');
739    l_msg := FND_MESSAGE.GET;
740 
741    Developer_Debug(l_msg||' '||To_char(l_item_num_rows_cnt));
742 
743    FND_MESSAGE.SET_NAME('EGO','EGO_ROW');
744    l_msg := FND_MESSAGE.GET;
745 
746    IF (l_item_num_rows_cnt > 0) THEN
747      FOR i IN 1..l_item_num_rows_cnt LOOP
748        Developer_Debug(l_msg||' ['||i||'] = '||l_item_num_table(i));
749      END LOOP; --end: FOR i IN 1..l_item_num_rows_cnt LOOP
750    END IF; --end: IF (l_item_num_rows_cnt > 0) THEN
751 
752  END Log_ItemNums_ToBe_Processed;
753 
754 -- 5653266 commenting out the code
755 -- this procedure must be shifted to fag end of item_open_interface_process
756 -- in the package EGO_ITEM_OPEN_INTERFACE_PVT and the logging to be changed
757 -- to concurrent log and message must have tokens for item number and org
758 -- discuss with PM before implenenting the above change
759 /***
760  -----------------------------------------------------------------------
761  -- API FOR BUG 4101754                                               --
762  -- THIS API WOULD LOG A MESSAGE IN FOR EVERY SUCCESSFUL ITEM         --
763  -- CREATED                                                           --
764  -----------------------------------------------------------------------
765  PROCEDURE Log_created_Items (REQUEST_ID IN NUMBER)
766  IS
767    l_item_num_sql                   VARCHAR2(10000);
768    l_item_num_table                 DBMS_SQL.VARCHAR2_TABLE;
769    l_transaction_id_table           DBMS_SQL.NUMBER_TABLE;
770    l_item_num_cursor                INTEGER;
771    l_item_num_exec                  INTEGER;
772    l_item_num_rows_cnt              NUMBER;
773    l_msg                            fnd_new_messages.message_text%TYPE;
774    l_token_tbl                      Error_Handler.Token_Tbl_Type;
775 
776  BEGIN
777 
778    l_item_num_sql :=
779       ' SELECT SEGMENT1 , TRANSACTION_ID '
780    || '   FROM MTL_SYSTEM_ITEMS_INTERFACE '
781    || '  WHERE REQUEST_ID = '||REQUEST_ID
782    || '    AND PROCESS_FLAG = '||G_INTF_STATUS_SUCCESS
783    || '    AND TRANSACTION_TYPE = '''||G_CREATE||'''';
784 
785    l_item_num_cursor := DBMS_SQL.OPEN_CURSOR;
786    DBMS_SQL.PARSE(l_item_num_cursor, l_item_num_sql, DBMS_SQL.NATIVE);
787    DBMS_SQL.DEFINE_ARRAY(
788                         c           => l_item_num_cursor
789                       , position    => 1
790                       , c_tab       => l_item_num_table
791                       , cnt         => 10000
792                       , lower_bound => 1
793                        );
794 
795    DBMS_SQL.DEFINE_ARRAY(
796                         c           => l_item_num_cursor
797                       , position    => 2
798                       , n_tab       => l_transaction_id_table
799                       , cnt         => 10000
800                       , lower_bound => 1
801                        );
802 
803    l_item_num_exec := DBMS_SQL.EXECUTE(l_item_num_cursor);
804    l_item_num_rows_cnt := DBMS_SQL.FETCH_ROWS(l_item_num_cursor);
805    DBMS_SQL.COLUMN_VALUE(l_item_num_cursor, 1, l_item_num_table);
806    DBMS_SQL.COLUMN_VALUE(l_item_num_cursor, 2, l_transaction_id_table);
807    DBMS_SQL.CLOSE_CURSOR(l_item_num_cursor);
808    IF (l_item_num_rows_cnt > 0) THEN
809      FOR i IN 1..l_item_num_rows_cnt LOOP
810        Developer_Debug(l_msg||' ['||i||'] = '||l_item_num_table(i));
811        Error_Handler.Add_Error_Message
812             ( p_message_name   => 'EGO_ITEM_CREATION_SUCC'
813             , p_application_id => 'EGO'
814             , p_message_text   => NULL
815             , p_token_tbl      => l_token_tbl
816             , p_message_type   => 'E'
817             , p_row_identifier => l_transaction_id_table(i)
818             , p_table_name     => 'MTL_SYSTEM_ITEMS_INTERFACE'
819             , p_entity_id      => NULL
820             , p_entity_index   => NULL
821             , p_entity_code    => G_ERROR_ENTITY_CODE
822             );
823      END LOOP;
824    END IF;
825 
826  END Log_created_Items;
827 ***/
828 
829 ------------------------------------------------------------------------------
830 --  Fix for Bug# 3945885.
831 --
832 --  API Name:       Get_Seq_Gen_Item_Nums
833 --
834 --  Description:
835 --    API to return a Sequence of Item Numbers, given the ResultFmt_Usage_ID
836 --    and Item Catalog Group ID. Row count returned will be number of Rows per
837 --    ResultFmt_Usage_ID where Item Number column are NULL.
838 ------------------------------------------------------------------------------
839  PROCEDURE Get_Seq_Gen_Item_Nums(p_resultfmt_usage_id       IN  NUMBER,
840                                  p_item_catalog_group_id    IN  NUMBER,
841                                  p_item_num_colname         IN  VARCHAR2,
842                                  x_item_num_tbl             IN OUT NOCOPY EGO_VARCHAR_TBL_TYPE) IS
843 
844 
845    --------------------------------------------------------------------
846    --Fetch the Org IDs in EBI, for which Item Number column is NULL
847    --------------------------------------------------------------------
848    l_org_id_sql    VARCHAR2(10000) :=
849       ' SELECT '
850    || ' INSTANCE_PK2_VALUE     '
851    || ' FROM   EGO_BULKLOAD_INTF '
852    || ' WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID'
853    || '  AND   '|| p_item_num_colname ||' IS NULL '
854    || '  AND   PROCESS_STATUS = 1';
855 
856 
857    -----------------------------------------------------------------------
858    -- Variables used to query Item Number Generation Method
859    -----------------------------------------------------------------------
860    l_org_id_table                 DBMS_SQL.VARCHAR2_TABLE;
861    l_org_id_cursor                INTEGER;
862    l_org_id_exec                  INTEGER;
863    l_org_id_rows_cnt              NUMBER;
864 
865    l_item_num_tbl                 EGO_VARCHAR_TBL_TYPE;
866    l_exists                       VARCHAR2(1);
867    l_can_itemnum_gen              BOOLEAN;
868    l_itemgen_rownum               NUMBER;
869    l_new_itemgen_sql              VARCHAR2(1000);
870    -----------------------------------------------------------------------
871 
872  BEGIN
873 
874    l_org_id_cursor := DBMS_SQL.OPEN_CURSOR;
875    --Write_Debug('l_org_id_sql => '||l_org_id_sql);
876 
877    DBMS_SQL.PARSE(l_org_id_cursor, l_org_id_sql, DBMS_SQL.NATIVE);
878 
879    DBMS_SQL.DEFINE_ARRAY(
880                         c           => l_org_id_cursor  -- cursor --
881                       , position    => 1                -- select position --
882                       , c_tab       => l_org_id_table   -- table of chars --
883                       , cnt         => 10000            -- rows requested --
884                       , lower_bound => 1                -- start at --
885                        );
886 
887    DBMS_SQL.BIND_VARIABLE(l_org_id_cursor, ':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
888 
889    l_org_id_exec := DBMS_SQL.EXECUTE(l_org_id_cursor);
890    l_org_id_rows_cnt := DBMS_SQL.FETCH_ROWS(l_org_id_cursor);
891 
892    DBMS_SQL.COLUMN_VALUE(l_org_id_cursor, 1, l_org_id_table);
893 
894    Write_Debug('Number of rows where ITEM_NUMBER is NULL => '||To_char(l_org_id_rows_cnt));
895 
896    IF (l_org_id_rows_cnt > 0) THEN
897 
898      EGO_ITEM_PVT.Get_Seq_Gen_Item_Nums
899                          (
900                            p_item_catalog_group_id  => p_item_catalog_group_id
901                           ,p_org_id_tbl             => l_org_id_table
902                           ,x_item_num_tbl           => x_item_num_tbl
903                           );
904    ELSE
905      x_item_num_tbl := NULL;
906    END IF; --end: IF (l_org_id_rows_cnt > 0) THEN
907    --  Bug : 4099546
908    DBMS_SQL.CLOSE_CURSOR(l_org_id_cursor);
909  END Get_Seq_Gen_Item_Nums;
910 
911 
912  ---------------------------------------------------------------------------
913  -- To return the Display value of Attribute, given the Attribute Code.   --
914  ---------------------------------------------------------------------------
915 FUNCTION  get_attr_display_name
916           (
917              p_attribute_code    IN  EGO_RESULTS_FORMAT_COLUMNS_V.ATTRIBUTE_CODE%TYPE
918           )
919           RETURN VARCHAR2 IS
920 
921   l_attr_group_id   NUMBER;
922   l_attr_id         NUMBER;
923   l_temp_str        VARCHAR2(30); --R12C UOM Changes
924   l_attr_group_disp_name   EGO_ATTR_GROUPS_V.ATTR_GROUP_DISP_NAME%TYPE;
925   l_attr_disp_name         EGO_ATTRS_V.ATTR_DISPLAY_NAME%TYPE;
926 
927    CURSOR c_attr_group_disp_name(p_attr_group_id  IN NUMBER) IS
928      SELECT  attr_group_disp_name
929      FROM    ego_attr_groups_v
930      WHERE   attr_group_id = p_attr_group_id;
931 
932    CURSOR c_attr_disp_name(p_attr_id  IN NUMBER) IS
933      SELECT  attr_display_name
934      FROM    ego_attrs_v
935      WHERE   attr_id = p_attr_id;
936 
937 BEGIN
938 
939    l_attr_group_id := To_Number(SUBSTR(p_attribute_code, 1, INSTR(p_attribute_code, '$$') - 1));
940       l_temp_str := SUBSTR(p_attribute_code, INSTR(p_attribute_code, '$$')+2);
941 
942    IF (INSTR(l_temp_str, '$$UOM') > 0) THEN
943         l_temp_str:= SUBSTR(l_temp_str, 1, INSTR(l_temp_str, '$$')-1); --R12C UOM Changes
944    END IF;
945 
946    l_attr_id := To_Number(l_temp_str);
947 
948     OPEN c_attr_group_disp_name(l_attr_group_id);
949     FETCH c_attr_group_disp_name INTO l_attr_group_disp_name;
950     IF c_attr_group_disp_name%NOTFOUND THEN
951       l_attr_group_disp_name := NULL;
952     END IF;
953     CLOSE c_attr_group_disp_name;
954 
955     OPEN c_attr_disp_name(l_attr_id);
956     FETCH c_attr_disp_name INTO l_attr_disp_name;
957     IF c_attr_disp_name%NOTFOUND THEN
958       l_attr_disp_name := NULL;
959     END IF;
960     CLOSE c_attr_disp_name;
961 
962     IF (l_attr_group_disp_name IS NULL OR
963         l_attr_disp_name IS NULL) THEN
964        RETURN NULL;
965      ELSE
966        RETURN l_attr_group_disp_name||'.'||l_attr_disp_name;
967     END IF;
968 
969 END;
970 
971 
972  -------------------------------------------------------------
973  -- Delete all the earlier loads from the same spreadsheet. --
974  -------------------------------------------------------------
975 
976 PROCEDURE setup_buffer_intf_table(
977           p_resultfmt_usage_id IN NUMBER
978           ) IS
979 
980   --------------------------------------------
981   -- Long Dynamic SQL String
982   --------------------------------------------
983   l_dyn_sql                VARCHAR2(10000);
984 
985 BEGIN
986 
987    --Delete all the earlier loads from the same spreadsheet.
988    DELETE EGO_BULKLOAD_INTF
989      WHERE RESULTFMT_USAGE_ID = p_resultfmt_usage_id
990      AND   PROCESS_STATUS <> 1;
991 
992 
993    Write_Debug('Setting up the Error Debug File, so that Java Conc Program can use it.');
994    ---------------------------------------------------------------
995    -- Introduced for 11.5.10, so that Java Conc Program can     --
996    -- continue writing to the same Error Log File.              --
997    ---------------------------------------------------------------
998    l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF EBI';
999    l_dyn_sql := l_dyn_sql || '  SET '||G_ERR_LOGFILE_COL ||' = ''' || G_ERRFILE_PATH_AND_NAME ||'''';
1000    l_dyn_sql := l_dyn_sql || ' WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1001    l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1                     ';
1002      --------------------------------------------------------------
1003      -- Updates only 1 row that matches the criterion, for       --
1004      -- performance reasons.                                     --
1005      --------------------------------------------------------------
1006    l_dyn_sql := l_dyn_sql || ' AND    ROWNUM < 2                            ';
1007 
1008 
1009    Write_Debug(l_dyn_sql);
1010 
1011    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1012 
1013 END setup_buffer_intf_table;
1014 
1015 
1016  -------------------------------------------------------------
1017  -- Sets if the Batch that is being processed in PDH or Not --
1018  -------------------------------------------------------------
1019 
1020 PROCEDURE setup_batch_info  IS
1021   l_source_system_id          NUMBER;
1022 BEGIN
1023 
1024    Write_Debug('Setting up the batch info for : ' || G_MSII_SET_PROCESS_ID);
1025 
1026    ---------------------------------------------------------------
1027    -- Introduced for R12, so that the rest of the api call can  --
1028    -- set the process status/flag accordingly.                  --
1029    ---------------------------------------------------------------
1030     SELECT source_system_id into l_source_system_id
1031     FROM EGO_IMPORT_BATCHES_B
1032     WHERE batch_id = G_MSII_SET_PROCESS_ID;
1033 
1034    IF l_source_system_id = EGO_IMPORT_PVT.Get_PDH_Source_System_Id  THEN
1035      G_PDH_BATCH := TRUE;
1036      G_PROCESS_STATUS := 1;
1037    ELSE
1038      G_PDH_BATCH := FALSE;
1039      G_PROCESS_STATUS := 0;
1040    END IF;
1041 
1042    Write_Debug('Setting process status to ' || G_PROCESS_STATUS);
1043 
1044   EXCEPTION
1045     WHEN NO_DATA_FOUND THEN
1046      G_PDH_BATCH := TRUE;
1047      G_PROCESS_STATUS := 1;
1048 
1049 END setup_batch_info;
1050 
1051 
1052 -- Bug: 3778006
1053 -------------------------------------------------------------------------
1054 -- Function to get description generation method  for catalog category --
1055 -------------------------------------------------------------------------
1056 FUNCTION get_desc_gen_method(p_catalog_group_id NUMBER) RETURN VARCHAR2
1057 IS
1058   CURSOR c_cat_grp(c_catalog_group_id NUMBER) IS
1059     SELECT ITEM_DESC_GEN_METHOD, ITEM_CATALOG_GROUP_ID, LEVEL
1060     FROM MTL_ITEM_CATALOG_GROUPS_B
1061     WHERE LEVEL > 1
1062     CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID
1063     START WITH ITEM_CATALOG_GROUP_ID = c_catalog_group_id
1064     ORDER BY LEVEL;
1065 
1066   l_desc_gen_method  VARCHAR2(10) := 'U';
1067 BEGIN
1068   IF p_catalog_group_id IS NOT NULL THEN
1069     -----------------------------------------------------------------------
1070     -- Get the description generation method for catalog category itself --
1071     -----------------------------------------------------------------------
1072     SELECT ITEM_DESC_GEN_METHOD into l_desc_gen_method
1073     FROM MTL_ITEM_CATALOG_GROUPS_B
1074     WHERE ITEM_CATALOG_GROUP_ID = p_catalog_group_id;
1075 
1076     ------------------------------------------------------------------------
1077     -- If the generation method is I i.e. inherit from parent, then check --
1078     -- parents till we get something other than I                         --
1079     ------------------------------------------------------------------------
1080     IF NVL(l_desc_gen_method, 'U') = 'I' THEN
1081       FOR i IN c_cat_grp(p_catalog_group_id) LOOP
1082         l_desc_gen_method := i.ITEM_DESC_GEN_METHOD;
1083         IF NVL(l_desc_gen_method, 'U') <> 'I' THEN
1084           EXIT;
1085         END IF;
1086       END LOOP;
1087     END IF;
1088 
1089     ------------------------------------------------------------------------
1090     -- If the generation method is I even for the topmost parent, then    --
1091     -- treat it as U (user entered)                                       --
1092     ------------------------------------------------------------------------
1093     IF  NVL(l_desc_gen_method, 'U') = 'I' THEN
1094       l_desc_gen_method := 'U';
1095     END IF;
1096 
1097   END IF; -- end if p_catalog_group_id is not null
1098 
1099   RETURN l_desc_gen_method;
1100 
1101 EXCEPTION WHEN OTHERS THEN
1102   RETURN 'U';
1103 END get_desc_gen_method;
1104 
1105  ----------------------------------------------------------
1106  --  Populate Item Interface Lines                       --
1107  ----------------------------------------------------------
1108 
1109 PROCEDURE load_item_interface
1110                (
1111                  p_resultfmt_usage_id    IN         NUMBER,
1112                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
1113                  p_set_process_id        IN         NUMBER,
1114                  x_set_process_id        OUT NOCOPY NUMBER,
1115                  x_errbuff               OUT NOCOPY VARCHAR2,
1116                  x_retcode               OUT NOCOPY VARCHAR2
1117                 ) IS
1118 
1119     -- Start OF comments
1120     -- API name  : Populate MSII Item Interface Lines
1121     -- TYPE      : Public (called by Concurrent Program Wrapper API)
1122     -- Pre-reqs  : None
1123     -- FUNCTION  : Populate and Load Item interfance lines in MSII
1124     --
1125 
1126 
1127   ---------------------------------------------------------------
1128   -- To get the Item Base attr columns in the Result Format.
1129   ---------------------------------------------------------------
1130   CURSOR c_item_base_attr_intf_cols (c_resultfmt_usage_id  IN  NUMBER) IS
1131     SELECT attribute_code, intf_column_name
1132     FROM   ego_results_fmt_usages
1133     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
1134      AND attribute_code NOT LIKE '%$$%'
1135      AND attribute_code <> 'APPROVAL_STATUS' -- bug: 3433942
1136      AND attribute_code <> 'MASTER_ORGANIZATION_ID' -- bug: 8347241
1137      AND attribute_code NOT IN ('SUPPLIER_NAME','SUPPLIER_SITE','SUPPLIER_PRIMARY','SUPPLIER_STATUS','SUPPLIERSITE_STATUS'
1138                                 ,'SUPPLIERSITE_PRIMARY','SUPPLIERSITE_STORE_STATUS','SUPPLIER_NUMBER')
1139      AND attribute_code NOT IN --Segregating Item Base Attributes using this clause
1140      (
1141         select LOOKUP_CODE CODE
1142         from   FND_LOOKUP_VALUES
1143         where  LOOKUP_TYPE = 'EGO_ITEM_REV_HDR_ATTR_GRP'
1144         AND    LANGUAGE = USERENV('LANG')
1145         AND    ENABLED_FLAG = 'Y'
1146      )
1147      AND attribute_code <> G_REV_EFF_DATE_ATTR_CODE --Bug 6139409
1148      ORDER BY intf_column_name;-- Bug: 3340808
1149 
1150   --------------------------------------------------------------------------
1151   -- To check if the given attribute code is a valid BOM Component Column.
1152   --------------------------------------------------------------------------
1153    CURSOR c_bom_comp_col_exists(c_attribute_code  IN  VARCHAR2) IS
1154      SELECT 'x'
1155      FROM   bom_component_columns
1156      WHERE  attribute_code = c_attribute_code
1157       AND   parent_entity = 'ITEM';
1158       --  AND   whereclause IS NOT NULL;
1159 
1160   --------------------------------------------------------------------------
1161   -- To check if the given Set Process ID already exists in MSII.
1162   --------------------------------------------------------------------------
1163   CURSOR c_msii_set_id_exists(c_set_process_id IN NUMBER) IS
1164     SELECT 'x'
1165     FROM mtl_system_items_interface
1166     WHERE set_process_id = c_set_process_id;
1167 
1168 
1169   ---------------------------------------------------------------------
1170   -- Type Declarations
1171   ---------------------------------------------------------------------
1172   TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(256)
1173    INDEX BY BINARY_INTEGER;
1174 
1175                -------------------------
1176                --   local variables   --
1177                -------------------------
1178   l_prod_col_name_tbl         VARCHAR_TBL_TYPE;
1179   l_intf_col_name_tbl         VARCHAR_TBL_TYPE;
1180 
1181   l_prod_col_name             VARCHAR2(256);
1182   l_intf_col_name             VARCHAR2(256);
1183 
1184   ---------------------------------------------------------------------
1185   -- Assuming that the column name will not be more than 30 chars.
1186   ---------------------------------------------------------------------
1187   l_item_number_col        VARCHAR2(50);
1188   l_org_code_col           VARCHAR2(50);
1189   l_item_catalog_name_col  VARCHAR2(50);
1190   l_primary_uom_col        VARCHAR2(50);
1191   l_lifecycle_col          VARCHAR2(50);
1192   l_lifecycle_phase_col    VARCHAR2(50);
1193   l_user_item_type_col     VARCHAR2(50);
1194   l_bom_item_type_col      VARCHAR2(50);
1195   l_eng_item_flag_col      VARCHAR2(50);
1196   l_lifecycle_col_val        VARCHAR2(50);
1197   l_lifecycle_phase_col_val  VARCHAR2(50);
1198   --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
1199   l_conversions_col          VARCHAR2(50);
1200   l_secondary_def_col        VARCHAR2(50);
1201   l_dual_uom_dev_low_col     VARCHAR2(50);
1202   l_dual_uom_dev_high_col    VARCHAR2(50);
1203   l_ont_pricing_qty_src_col  VARCHAR2(50);
1204   l_secondary_uom_code_col   VARCHAR2(50);
1205   l_tracking_qty_ind_col     VARCHAR2(50);
1206   --Bug: 3969593 End
1207 
1208   l_catalog_group_id       VARCHAR2(50);
1209   l_inventory_item_id      MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID%TYPE;
1210 
1211   l_msii_set_process_id    NUMBER;
1212   i                        NUMBER;
1213   l_cursor_select     INTEGER;
1214   l_cursor_execute    INTEGER;
1215 
1216   l_item_number_table   DBMS_SQL.VARCHAR2_TABLE;
1217   l_org_id_table        DBMS_SQL.NUMBER_TABLE;
1218   l_trans_type_table    DBMS_SQL.VARCHAR2_TABLE;
1219   l_trans_id_table      DBMS_SQL.NUMBER_TABLE;
1220 
1221   ---------------------------------------------------------------------
1222   -- This is to store the Sequence Generated Item Numbers.
1223   ---------------------------------------------------------------------
1224 --  l_gen_item_num_tbl    EGO_VARCHAR_TBL_TYPE;
1225 --  l_gen_itemnum_indx    NUMBER;
1226 
1227   l_temp                NUMBER(10) := 1;
1228   l_count               NUMBER := 0;
1229   l_exists              VARCHAR2(2);
1230   l_itemgen_count       NUMBER;
1231 
1232   l_value_to_id_col_exists BOOLEAN := FALSE;
1233   l_bom_col_exists      BOOLEAN := FALSE;
1234   l_bom_prod_col_name   VARCHAR2(50);
1235 
1236   --------------------------------------------
1237   -- Long Dynamic SQL String
1238   --------------------------------------------
1239   l_dyn_sql             VARCHAR2(10000);
1240   l_desc_gen_method     VARCHAR2(10) := 'U'; -- Bug: 3778006
1241   --Bug 4713312
1242   l_col_name            VARCHAR2(40);
1243 
1244   -- fix bug: 14307504
1245   l_executed_item   DBMS_SQL.VARCHAR2_TABLE;
1246   l_executed_item_flag  boolean := false;
1247 
1248 BEGIN
1249 
1250    Write_Debug('About to populate the EBI with Trans IDs');
1251    --------------------------------------------------------------------
1252    --Populate the Transaction IDs for current Result fmt usage ID
1253    --------------------------------------------------------------------
1254    UPDATE ego_bulkload_intf
1255      --The Transaction ID sequence that is used in INVPOPIF package to
1256      --auto-populate Transaction ID in MSII.
1257      SET  transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL
1258    WHERE  resultfmt_usage_id = p_resultfmt_usage_id;
1259 
1260    Write_Debug('Retrieving the Display and INTF cols');
1261    i := 0;
1262    --------------------------------------------------------------------
1263    -- Saving the column names in local table for easy retrieval later.
1264    -- Also save important columns such as Item ID, Org ID etc.,
1265    --------------------------------------------------------------------
1266    FOR c_item_base_attr_intf_rec IN c_item_base_attr_intf_cols
1267      (
1268        p_resultfmt_usage_id
1269       )
1270    LOOP
1271 
1272      l_prod_col_name := c_item_base_attr_intf_rec.attribute_code;
1273      l_intf_col_name := c_item_base_attr_intf_rec.intf_column_name;
1274 
1275      IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_BOM) THEN
1276       OPEN c_bom_comp_col_exists(l_prod_col_name);
1277       FETCH c_bom_comp_col_exists INTO l_exists;
1278        IF c_bom_comp_col_exists%FOUND THEN
1279           l_bom_col_exists := TRUE;
1280        ELSE
1281           l_bom_col_exists := FALSE;
1282        END IF;
1283        CLOSE c_bom_comp_col_exists;
1284      END IF;
1285 
1286 
1287      IF (l_bom_col_exists = TRUE) THEN
1288       Write_Debug('The column: ' || l_prod_col_name || ' and BOM_COL_EXISTS value IS TRUE');
1289      ELSE
1290       Write_Debug('The column: ' || l_prod_col_name || ' and BOM_COL_EXISTS value IS FALSE');
1291      END IF;
1292 
1293      Write_Debug('The caller identity is : '|| p_caller_identifier);
1294 
1295       --------------------------------------------------------------------
1296       -- If the Caller Identifer is G_BOM and the column exists in
1297       -- BOM_COMPONENT_COLUMNS then fetch the Correct prod column
1298       -- name from BOM_COMPONENT_COLUMNS.
1299       --------------------------------------------------------------------
1300      IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_BOM AND
1301          l_bom_col_exists = TRUE AND l_prod_col_name <> G_ITEM_NUMBER)
1302      THEN
1303        SELECT BOM_INTF_COLUMN_NAME INTO l_bom_prod_col_name
1304         FROM BOM_COMPONENT_COLUMNS
1305        WHERE Attribute_Code = l_prod_col_name AND Parent_Entity = 'ITEM';
1306        Write_Debug('The column value from BCC: ' || l_bom_prod_col_name);
1307        IF l_bom_prod_col_name IS NOT NULL THEN
1308          l_prod_col_name := l_bom_prod_col_name;
1309        END IF;
1310        Write_Debug('The column value after getting from BCC: ' || l_prod_col_name);
1311      END IF;
1312 
1313       --------------------------------------------------------------------
1314       -- If the Caller Identifer is G_ITEM, then save the column info.
1315       -- If the Caller Identifer is G_BOM, and the column exists in
1316       -- BOM_COMPONENT_COLUMNS, then save the column info.
1317       --------------------------------------------------------------------
1318      IF (
1319          (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM) OR
1320          (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_BOM AND
1321          l_bom_col_exists = TRUE
1322          )
1323         ) THEN
1324       --------------------------------------------------------------------
1325       --Store the Item Number column name in the Generic Interface
1326       --------------------------------------------------------------------
1327       IF (l_prod_col_name = G_ITEM_NUMBER) THEN
1328         l_item_number_col := l_intf_col_name;
1329         Write_Debug('Item Number : '||l_item_number_col);
1330       --------------------------------------------------------------------
1331       --Store the Organization Code column name in the Generic Interface
1332       --------------------------------------------------------------------
1333       ELSIF (l_prod_col_name = G_ORG_CODE) THEN
1334         l_org_code_col := l_intf_col_name;
1335         Write_Debug('Organization Code : '||l_org_code_col);
1336       ELSE
1337       --------------------------------------------------------------------
1338       --Saving the Rest of column names.
1339       --------------------------------------------------------------------
1340         IF (l_prod_col_name = G_ITEM_CATALOG_GROUP) THEN
1341           l_item_catalog_name_col := l_intf_col_name;
1342         ELSIF (l_prod_col_name = G_PRIMARY_UOM) THEN
1343           l_primary_uom_col := l_intf_col_name;
1344         ELSIF (l_prod_col_name = G_LIFECYCLE) THEN
1345           l_lifecycle_col := l_intf_col_name;
1346         ELSIF (l_prod_col_name = G_LIFECYCLE_PHASE) THEN
1347           l_lifecycle_phase_col := l_intf_col_name;
1348         ELSIF (l_prod_col_name = G_USER_ITEM_TYPE) THEN
1349           l_user_item_type_col := l_intf_col_name;
1350         ELSIF (l_prod_col_name = G_BOM_ITEM_TYPE) THEN
1351           l_bom_item_type_col := l_intf_col_name;
1352         ELSIF (l_prod_col_name = G_ENG_ITEM_FLAG) THEN
1353           l_eng_item_flag_col := l_intf_col_name;
1354         --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
1355         ELSIF (l_prod_col_name = G_CONVERSIONS) THEN
1356           l_conversions_col := l_intf_col_name;
1357         ELSIF (l_prod_col_name = G_SECONDARY_DEF_IND) THEN
1358           l_secondary_def_col := l_intf_col_name;
1359         ELSIF (l_prod_col_name = G_DUAL_UOM_DEV_LOW) THEN
1360           l_dual_uom_dev_low_col := l_intf_col_name;
1361         ELSIF (l_prod_col_name = G_DUAL_UOM_DEV_HIGH) THEN
1362           l_dual_uom_dev_high_col := l_intf_col_name;
1363         ELSIF (l_prod_col_name = G_ONT_PRICING_QTY_SRC) THEN
1364           l_ont_pricing_qty_src_col := l_intf_col_name;
1365         ELSIF (l_prod_col_name = G_SECONDARY_UOM_CODE) THEN
1366           l_secondary_uom_code_col := l_intf_col_name;
1367         ELSIF (l_prod_col_name = G_TRACKING_QTY_IND) THEN
1368           l_tracking_qty_ind_col := l_intf_col_name;
1369         --Bug: 3969593 End
1370         ELSIF (l_prod_col_name = G_INVENTORY_ITEM_STATUS) THEN-- required in error handler
1371           l_inventory_item_status_col := l_intf_col_name;
1372         ELSIF (l_prod_col_name = G_TRADE_ITEM_DESCRIPTOR) THEN
1373         -- R12C Pack Hierarchy Changes for Trade Item Descriptor --
1374           l_trade_item_descriptor_col := l_intf_col_name;
1375         END IF;
1376 
1377         -- R12 - to update GTIN and GTIN description in MTL_SYSTEM_ITEMS_INTERFACE table
1378         IF (l_prod_col_name = G_GTIN_NUM_ATTR_CODE) THEN
1379           l_prod_col_name_tbl(i) := G_GTIN_NUM_DB_COL;
1380         ELSIF (l_prod_col_name = G_GTIN_DESC_ATTR_CODE) THEN
1381           l_prod_col_name_tbl(i) := G_GTIN_DESC_DB_COL;
1382         ELSE
1383           l_prod_col_name_tbl(i) := l_prod_col_name;
1384         END IF;
1385 
1386         l_intf_col_name_tbl(i) := l_intf_col_name;
1387 
1388         Write_Debug('l_prod_col_name_tbl('||i||') : '||l_prod_col_name_tbl(i));
1389         Write_Debug('l_intf_col_name_tbl('||i||') : '||l_intf_col_name_tbl(i));
1390         i := i+1;
1391       END IF; --end: IF (l_prod_col_name = G_ITEM_NUMBER) THEN
1392     END IF; --end: IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM)...
1393    END LOOP;--end: FOR c_item_base_attr_intf_rec..
1394 
1395 
1396    l_value_to_id_col_exists := FALSE;
1397 
1398    -----------------------------------------------------------------------
1399    -- Save all Value-to-ID conversion columns in designated places in EBI.
1400    -----------------------------------------------------------------------
1401    l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1402    l_dyn_sql := l_dyn_sql || ' SET  ';
1403    IF l_item_catalog_name_col IS NOT NULL THEN
1404      l_dyn_sql := l_dyn_sql || G_ITEM_CATALOG_NAME_EBI_COL||' = '||l_item_catalog_name_col|| ' ,';
1405      l_value_to_id_col_exists := TRUE;
1406    END IF;
1407    IF l_primary_uom_col IS NOT NULL THEN
1408      l_dyn_sql := l_dyn_sql || G_PRIMARY_UOM_EBI_COL||' = '||l_primary_uom_col|| ' ,';
1409      l_value_to_id_col_exists := TRUE;
1410    END IF;
1411    IF l_lifecycle_col IS NOT NULL THEN
1412      l_dyn_sql := l_dyn_sql ||G_LIFECYCLE_EBI_COL||' = '||l_lifecycle_col|| ' ,';
1413      l_value_to_id_col_exists := TRUE;
1414    END IF;
1415    IF l_lifecycle_phase_col IS NOT NULL THEN
1416      l_dyn_sql := l_dyn_sql ||G_LIFECYCLE_PHASE_EBI_COL||' = '||l_lifecycle_phase_col|| ' ,';
1417      l_value_to_id_col_exists := TRUE;
1418    END IF;
1419    IF l_user_item_type_col IS NOT NULL THEN
1420      l_dyn_sql := l_dyn_sql ||G_USER_ITEM_TYPE_EBI_COL||' = '||l_user_item_type_col|| ' ,';
1421      l_value_to_id_col_exists := TRUE;
1422    END IF;
1423    IF l_bom_item_type_col IS NOT NULL THEN
1424      l_dyn_sql := l_dyn_sql ||G_BOM_ITEM_TYPE_EBI_COL||' = '||l_bom_item_type_col|| ' ,';
1425      l_value_to_id_col_exists := TRUE;
1426    END IF;
1427    IF l_eng_item_flag_col IS NOT NULL THEN
1428      l_dyn_sql := l_dyn_sql ||G_ENG_ITEM_FLAG_EBI_COL||' = '||l_eng_item_flag_col|| ' ,';
1429      l_value_to_id_col_exists := TRUE;
1430    END IF;
1431    --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
1432    IF l_conversions_col IS NOT NULL THEN
1433      l_dyn_sql := l_dyn_sql ||G_CONVERSIONS_EBI_COL||' = '||l_conversions_col|| ' ,';
1434      l_value_to_id_col_exists := TRUE;
1435    END IF;
1436    IF l_secondary_def_col IS NOT NULL THEN
1437      l_dyn_sql := l_dyn_sql ||G_SECONDARY_DEF_IND_EBI_COL||' = '||l_secondary_def_col|| ' ,';
1438      l_value_to_id_col_exists := TRUE;
1439    END IF;
1440    IF l_ont_pricing_qty_src_col IS NOT NULL THEN
1441      l_dyn_sql := l_dyn_sql ||G_ONT_PRICING_QTY_SRC_EBI_COL||' = '||l_ont_pricing_qty_src_col|| ' ,';
1442      l_value_to_id_col_exists := TRUE;
1443    END IF;
1444    IF l_secondary_uom_code_col IS NOT NULL THEN
1445      l_dyn_sql := l_dyn_sql ||G_SECONDARY_UOM_CODE_EBI_COL||' = '||l_secondary_uom_code_col|| ' ,';
1446      l_value_to_id_col_exists := TRUE;
1447    END IF;
1448    IF l_tracking_qty_ind_col IS NOT NULL THEN
1449      l_dyn_sql := l_dyn_sql ||G_TRACKING_QTY_IND_EBI_COL||' = '||l_tracking_qty_ind_col|| ' ,';
1450      l_value_to_id_col_exists := TRUE;
1451    END IF;
1452    --Bug: 3969593 End
1453    --------------------------------
1454    --Remove the comma at the end.
1455    --------------------------------
1456    l_dyn_sql := Substr(l_dyn_sql, 1, Length(l_dyn_sql)-1);
1457    l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1458    l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
1459    Write_Debug(l_dyn_sql);
1460 
1461    IF l_value_to_id_col_exists = TRUE THEN
1462      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1463      Write_Debug('Updated EBI with Value-to-ID Conversion Cols');
1464    END IF;
1465 
1466    Write_Debug('Updating EBI with Org IDs');
1467    -----------------------------------------------------
1468    -- Update Instance PK2 Value with ORG ID.
1469    -----------------------------------------------------
1470    l_dyn_sql :=              'UPDATE EGO_BULKLOAD_INTF EBI';
1471    l_dyn_sql := l_dyn_sql || '  SET INSTANCE_PK2_VALUE = ';
1472    l_dyn_sql := l_dyn_sql || '  (                                           ';
1473    l_dyn_sql := l_dyn_sql || '    SELECT ORGANIZATION_ID                    ';
1474    l_dyn_sql := l_dyn_sql || '    FROM   MTL_PARAMETERS                     ';
1475    l_dyn_sql := l_dyn_sql || '    WHERE  ORGANIZATION_CODE =EBI.'||l_org_code_col;
1476    l_dyn_sql := l_dyn_sql || '  )                                           ';
1477    l_dyn_sql := l_dyn_sql || 'WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1478    l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1                     ';
1479 
1480    Write_Debug(l_dyn_sql);
1481 
1482    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1483    --------------------------------------------------------------------
1484    -- Fix for Bug# 3945885.
1485    -- Fetch Item Numbers for rows where Item Number is NULL
1486    --------------------------------------------------------------------
1487 -- commenting as a part of 6118945
1488 --
1489 --   IF(G_PDH_BATCH) THEN
1490 --   Get_Seq_Gen_Item_Nums(
1491 --          p_resultfmt_usage_id     => p_resultfmt_usage_id
1492 --         ,p_item_catalog_group_id  => G_CATALOG_GROUP_ID
1493 --         ,p_item_num_colname       => l_item_number_col
1494 --         ,x_item_num_tbl           => l_gen_item_num_tbl
1495 --         );
1496 --   END IF;
1497 --
1498 --   IF (l_gen_item_num_tbl IS NULL) THEN
1499 --     Write_Debug('Item Number *could not* be Generated !!!');
1500 --   ELSE
1501 ----     Write_Debug('Item Numbers *were* be Generated !!! Count => '||l_gen_item_num_tbl.LAST);
1502 --     Write_Debug('Item Numbers *were* be Generated !!! Count => '||l_gen_item_num_tbl.COUNT);
1503 --     --FOR i IN 1..l_gen_item_num_tbl.LAST LOOP
1504 --     --  Write_Debug('Item Number ['||i||'] => '||l_gen_item_num_tbl(i));
1505 --     --END LOOP;
1506 --   END IF;
1507 --
1508 --   Write_Debug('Selecting Org IDs, Item Numbers');
1509 --
1510    -------------------------------------------------------------
1511    --Fetch Organization ID, Item Number in Temp PLSQL tables.
1512    -------------------------------------------------------------
1513     l_dyn_sql :=              'SELECT ';
1514     l_dyn_sql := l_dyn_sql || ' INSTANCE_PK2_VALUE       , ';
1515     l_dyn_sql := l_dyn_sql || l_item_number_col ||'      , ';
1516       ----------------------------------------------------------------------
1517       -- Upcasing the Transaction Type, for fixing Trans Type related bugs
1518       ----------------------------------------------------------------------
1519     l_dyn_sql := l_dyn_sql || ' UPPER(TRANSACTION_TYPE)  , ';
1520     l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID           ';
1521     l_dyn_sql := l_dyn_sql || ' FROM EGO_BULKLOAD_INTF ';
1522     l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1523     l_dyn_sql := l_dyn_sql || ' AND PROCESS_STATUS = 1';
1524 --    l_dyn_sql := l_dyn_sql || '  AND '|| l_item_number_col ||' IS NOT NULL';
1525 
1526     Write_Debug(l_dyn_sql);
1527 
1528     l_cursor_select := DBMS_SQL.OPEN_CURSOR;
1529     DBMS_SQL.PARSE(l_cursor_select, l_dyn_sql, DBMS_SQL.NATIVE);
1530     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 1,l_org_id_table,2500, l_temp);
1531     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 2,l_item_number_table,2500, l_temp);
1532     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 3,l_trans_type_table,2500, l_temp);
1533     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 4,l_trans_id_table,2500, l_temp);
1534 
1535     DBMS_SQL.BIND_VARIABLE(l_cursor_select,':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
1536     l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_select);
1537     Write_Debug('About to start the Loop to fetch Rows');
1538 
1539     -------------------------------------------------------------
1540     -- Separate Index to keep track of Generated Item Numbers.
1541     -------------------------------------------------------------
1542 -- commenting as a part of 6118945
1543 --    IF (l_gen_item_num_tbl IS NOT NULL AND
1544 --        l_gen_item_num_tbl.LAST > 0
1545 --        ) THEN
1546 --      l_gen_itemnum_indx := l_gen_item_num_tbl.FIRST;
1547 --    END IF;
1548 
1549     LOOP
1550       l_count := DBMS_SQL.FETCH_ROWS(l_cursor_select);
1551       DBMS_SQL.COLUMN_VALUE(l_cursor_select, 1, l_org_id_table);
1552       DBMS_SQL.COLUMN_VALUE(l_cursor_select, 2, l_item_number_table);
1553       DBMS_SQL.COLUMN_VALUE(l_cursor_select, 3, l_trans_type_table);
1554       DBMS_SQL.COLUMN_VALUE(l_cursor_select, 4, l_trans_id_table);
1555 
1556       Write_Debug('Retrieved rows => '||To_char(l_count));
1557 
1558       -------------------------------------------------------------
1559       -- Loop to Update the Inventory Item IDs.
1560       -------------------------------------------------------------
1561       FOR i IN l_temp..l_org_id_table.COUNT LOOP --Bug: 4211498 Modified initialize cnter
1562 
1563         Write_Debug('Org ID : '||To_char(l_org_id_table(i)));
1564         Write_Debug('Inv Item Num : '||l_item_number_table(i));
1565         Write_Debug('Transaction Type : '||l_trans_type_table(i));
1566         l_temp := l_org_id_table.COUNT; --Bug:4211498
1567         -------------------------------------------------------------
1568         -- If Inventory Item ID found, then update in EBI.
1569         -------------------------------------------------------------
1570         IF FND_FLEX_KEYVAL.Validate_Segs
1571         (  operation         =>  'FIND_COMBINATION'
1572         ,  appl_short_name   =>  'INV'
1573         ,  key_flex_code     =>  'MSTK'
1574         ,  structure_number  =>  101
1575         ,  concat_segments   =>  l_item_number_table(i)
1576         ,  data_set          =>  l_org_id_table(i)
1577         )
1578         THEN
1579           l_inventory_item_id := FND_FLEX_KEYVAL.combination_id;
1580 
1581 		--Start bug:15930715
1582 		Select ITEM_CATALOG_GROUP_ID into l_catalog_group_id
1583 		FROM MTL_SYSTEM_ITEMS_B
1584 		WHERE INVENTORY_ITEM_ID=l_inventory_item_id
1585 			AND ORGANIZATION_ID=l_org_id_table(i);
1586 
1587  -- fix bug: 14307504
1588           l_executed_item_flag := false;
1589           for j in 1..l_executed_item.count loop
1590               IF l_executed_item(j) = l_inventory_item_id||'|'||l_org_id_table(i)||'|'||l_item_number_table(i)||'|' ||l_trans_type_table(i) then
1591                 l_executed_item_flag := true;
1592               end if;
1593           end loop; --end loop of l_executed_item
1594           if l_executed_item_flag = false then
1595             l_executed_item(l_executed_item.count+1) := l_inventory_item_id||'|'||l_org_id_table(i)||'|'||l_item_number_table(i)||'|' ||l_trans_type_table(i);
1596 
1597             Write_Debug('Inv Item ID : '||To_char(l_inventory_item_id));
1598 
1599             l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1600             l_dyn_sql := l_dyn_sql || ' SET INSTANCE_PK1_VALUE  = '||l_inventory_item_id;
1601             l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = '||l_org_id_table(i);
1602             l_dyn_sql := l_dyn_sql || ' AND '|| l_item_number_col|| ' = :ITEM_NUMBER';
1603             l_dyn_sql := l_dyn_sql || ' AND RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1604             l_dyn_sql := l_dyn_sql || ' AND PROCESS_STATUS = 1  ';
1605 
1606             Write_Debug(l_dyn_sql);
1607             EXECUTE IMMEDIATE l_dyn_sql USING l_item_number_table(i), p_resultfmt_usage_id;
1608           end if;
1609         END IF;
1610 
1611 
1612           --l_inventory_item_id := FND_FLEX_KEYVAL.combination_id;
1613 
1614           -------------------------------------------------------------
1615           --Determining if Item Creation.
1616           -------------------------------------------------------------
1617           /**IF (
1618              (l_trans_type_table(i) = G_CREATE) OR
1619              (l_trans_type_table(i) = G_SYNC)
1620              ) THEN**/
1621 
1622             Write_Debug('G_CATALOG_GROUP_ID => '||G_CATALOG_GROUP_ID);
1623             -----------------------------------------------------------------
1624             -- Setting Category ID in case where User enters the Catalog Name
1625             -- from Excel
1626             -- Bug #4652582(RSOUNDAR)
1627             -----------------------------------------------------------------
1628 			IF l_catalog_group_id IS NULL THEN
1629 				Write_Debug('l_catalog_group_id is NULL ');
1630 				l_catalog_group_id :=G_CATALOG_GROUP_ID;
1631 			END IF;
1632 
1633 			IF l_catalog_group_id IS NULL THEN
1634               IF l_item_catalog_name_col IS NOT NULL THEN
1635                 l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF EBI';
1636                 l_dyn_sql := l_dyn_sql || ' SET '||G_ITEM_CATALOG_EBI_COL||' = ';
1637                 l_dyn_sql := l_dyn_sql || '( ';
1638                 l_dyn_sql := l_dyn_sql || '    SELECT TO_CHAR(MICG.ITEM_CATALOG_GROUP_ID) ';
1639                 l_dyn_sql := l_dyn_sql || '    FROM   MTL_ITEM_CATALOG_GROUPS_B_KFV MICG  ';
1640                 l_dyn_sql := l_dyn_sql || '    WHERE  MICG.CONCATENATED_SEGMENTS = EBI.'||l_item_catalog_name_col;
1641                 l_dyn_sql := l_dyn_sql || ') ';
1642                 l_dyn_sql := l_dyn_sql || ' WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1643                 l_dyn_sql := l_dyn_sql || ' AND EBI.'||l_item_catalog_name_col||' IS NOT NULL';
1644                 l_dyn_sql := l_dyn_sql || ' AND EBI.PROCESS_STATUS = 1  ';
1645                 Write_Debug(l_dyn_sql);
1646                 EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1647               ELSE -- l_item_catalog_name_col IS NULL
1648                 -- no need to do anything here
1649                 NULL;
1650               END IF; -- l_item_catalog_name_col IS NOT NULL
1651             ELSE  -- G_CATALOG_GROUP_ID IS NOT NULL
1652 /*            Since Item Number can be NULL, removing its reference from the WHERE Clause.
1653 
1654               l_dyn_sql := '';
1655               l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1656               -------------------------------------------------------------
1657               --Storing Catalog Group ID and other imp data in buffer cols
1658               -------------------------------------------------------------
1659               l_dyn_sql := l_dyn_sql || ' SET  '||G_ITEM_CATALOG_EBI_COL||' = '||G_CATALOG_GROUP_ID;
1660               l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = '||l_org_id_table(i);
1661               l_dyn_sql := l_dyn_sql || ' AND '|| l_item_number_col|| ' = :ITEM_NUMBER';
1662               l_dyn_sql := l_dyn_sql || ' AND  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1663               l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
1664 
1665               EXECUTE IMMEDIATE l_dyn_sql USING l_item_number_table(i), p_resultfmt_usage_id;
1666 */
1667               l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1668               -------------------------------------------------------------
1669               --Storing Catalog Group ID and other imp data in buffer cols
1670               -------------------------------------------------------------
1671 			  l_dyn_sql := l_dyn_sql || ' SET  '||G_ITEM_CATALOG_EBI_COL||' = '||l_catalog_group_id;
1672 			  --End:15930715
1673               -----------------------------------------------------------------
1674               -- Fix for Bug# 3945885.
1675               -- When Item Number in EXCEL is NULL, populate with the Sequence
1676               -- generated Item Number.
1677               -----------------------------------------------------------------
1678 -- commenting as a part of 6118945
1679 --              IF (l_item_number_table(i) IS NULL AND
1680 --                  (l_gen_item_num_tbl IS NOT NULL AND
1681 --                   l_gen_item_num_tbl(l_gen_itemnum_indx) IS NOT NULL)
1682 --                  ) THEN
1683 --
1684 --                l_dyn_sql := l_dyn_sql || ' ,  '||l_item_number_col||' = '''||Escape_Single_Quote(l_gen_item_num_tbl(l_gen_itemnum_indx))||'''';
1685 --                ---------------------------------------------------------------------------
1686 --                -- Increment only if Item Number is used.
1687 --                -- NOTE: If l_gen_itemnum_indx = l_gen_item_num_tbl.LAST and still the loop
1688 --                --       is continuing, then need to fetch few more Seq Gen Item Numbers.
1689 --                ---------------------------------------------------------------------------
1690 --                l_gen_itemnum_indx := l_gen_itemnum_indx + 1;
1691 --
1692 --              END IF;
1693               l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = :ORGANIZATION_ID ';
1694               l_dyn_sql := l_dyn_sql || ' AND  TRANSACTION_ID = :TRANSACTION_ID ';
1695               l_dyn_sql := l_dyn_sql || ' AND  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1696               l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
1697 
1698               Write_Debug(l_dyn_sql);
1699               EXECUTE IMMEDIATE l_dyn_sql USING l_org_id_table(i), l_trans_id_table(i), p_resultfmt_usage_id;
1700 
1701             END IF;--end: IF (l_catalog_group_id IS NOT NULL)
1702 
1703           --END IF; --end: IF (l_trans_type_table(i) = G_CREATE) ..
1704 
1705          --end: IF FND_FLEX_KEVAL..
1706 
1707       END LOOP; --FOR i IN 1..l_org_id_table.COUNT LOOP
1708 
1709       -----------------------------------------------------------------
1710       -- Clear all the tables after use.
1711       -----------------------------------------------------------------
1712  /*Bug:4211498
1713       l_org_id_table.DELETE;
1714       l_item_number_table.DELETE;
1715       l_trans_type_table.DELETE;
1716       l_trans_id_table.DELETE;
1717 */
1718       -----------------------------------------------------------------
1719       -- For the final batch of records, either it will be 0 or < 2500
1720       -----------------------------------------------------------------
1721       EXIT WHEN l_count <> 2500;
1722 
1723     END LOOP;
1724 
1725     DBMS_SQL.CLOSE_CURSOR(l_cursor_select);
1726 
1727     Write_Debug('Done with Item IDs population.');
1728 
1729     Write_Debug('Populating item number into ego_bulkload_intf for function generated items');
1730     IF G_PDH_BATCH THEN
1731 /***
1732       l_dyn_sql := ' UPDATE ego_bulkload_intf ebi' ||
1733                    ' SET '||l_item_number_col||' = ''$$FG-''||TO_CHAR(transaction_id)'||
1734                    ' ,c_fix_column12 = TO_CHAR(transaction_id)'||
1735                    ' WHERE resultfmt_usage_id = :RESULTFMT_USAGE_ID'||
1736                    ' AND '||G_ITEM_CATALOG_EBI_COL||' IS NOT NULL'||
1737                    ' AND process_status = 1'||
1738                    ' AND 10 < '||
1739                    ' ( SELECT LENGTH ( MIN ('||
1740                          ' CASE WHEN ITEM_NUM_GEN_METHOD = ''F'' '||
1741                                    ' AND (PRIOR ITEM_NUM_GEN_METHOD IS NULL OR PRIOR ITEM_NUM_GEN_METHOD = ''I'') ' ||
1742                               ' THEN LPAD(LEVEL, 8, ''0'')||''XX''||TO_CHAR(item_num_action_id) '||
1743                               ' WHEN item_num_gen_method IN (''U'', ''S'') '||
1744                               ' THEN LPAD(LEVEL, 8, ''0'')||''XX'' '||
1745                               ' ELSE NULL ' ||
1746                               ' END        )'||
1747                                    ' )'||
1748                       ' FROM MTL_ITEM_CATALOG_GROUPS_B '||
1749                       ' CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID ';
1750 ***/
1751       --
1752       -- R12C changes Tag_Function_Gen_Item_Nums with item_num as $$FG-transaction_id
1753       -- populate item number col if null but always set the source system reference
1754       --
1755       l_dyn_sql := ' UPDATE ego_bulkload_intf ebi' ||
1756                    ' SET '||l_item_number_col||' = NVL( '||l_item_number_col||', ''$$FG-''||TO_CHAR(transaction_id) )'||
1757                    ' ,c_fix_column12 = TO_CHAR(transaction_id)'||
1758                    ' WHERE resultfmt_usage_id = :RESULTFMT_USAGE_ID'||
1759                    ' AND '||G_ITEM_CATALOG_EBI_COL||' IS NOT NULL'||
1760                    ' AND UPPER(ebi.transaction_type) IN (''CREATE'',''SYNC'') '||
1761                    ' AND process_status = 1'||
1762                    ' AND ''F'' = '||
1763                    ' ( SELECT item_num_gen_method'||
1764                       ' FROM mtl_item_catalog_groups_b '||
1765                       ' WHERE NVL(item_num_gen_method,''I'') IN (''U'',''S'', ''F'') '||
1766                       ' AND ROWNUM = 1 '||
1767                       ' CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID';
1768       IF G_CATALOG_GROUP_ID IS NULL THEN
1769         l_dyn_sql := l_dyn_sql || ' START WITH ITEM_CATALOG_GROUP_ID = ebi.'||G_ITEM_CATALOG_EBI_COL;
1770       ELSE
1771         l_dyn_sql := l_dyn_sql || ' START WITH ITEM_CATALOG_GROUP_ID = :CATALOG_GROUP_ID';
1772       END IF;
1773       l_dyn_sql := l_dyn_sql ||' )';
1774       Write_Debug(' SQL to generate function generated item numbers: '||l_dyn_sql);
1775       IF G_CATALOG_GROUP_ID IS NULL THEN
1776         EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1777       ELSE
1778         EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, G_CATALOG_GROUP_ID;
1779       END IF;
1780       Write_Debug(' SQL to generate function generated item numbers DONE ');
1781 
1782       --
1783       -- R12C changes Tag_Sequence_Gen_Item_Nums with item_num as $$SG-transaction_id
1784       -- populate item number col if null but always set the source system reference
1785       --
1786       l_dyn_sql := ' UPDATE ego_bulkload_intf ebi' ||
1787                    ' SET '||l_item_number_col||' = NVL( '||l_item_number_col||', ''$$SG-''||TO_CHAR(transaction_id) )'||
1788                    ' ,c_fix_column12 = TO_CHAR(transaction_id)'||
1789                    ' WHERE resultfmt_usage_id = :RESULTFMT_USAGE_ID'||
1790                    ' AND '||G_ITEM_CATALOG_EBI_COL||' IS NOT NULL'||
1791                    ' AND UPPER(ebi.transaction_type) IN (''CREATE'',''SYNC'') '||
1792                    ' AND process_status = 1'||
1793                    ' AND ''S'' = '||
1794                    ' ( SELECT item_num_gen_method'||
1795                       ' FROM mtl_item_catalog_groups_b '||
1796                       ' WHERE NVL(item_num_gen_method,''I'') IN (''U'',''S'', ''F'') '||
1797                       ' AND ROWNUM = 1 '||
1798                       ' CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID';
1799       IF G_CATALOG_GROUP_ID IS NULL THEN
1800         l_dyn_sql := l_dyn_sql || ' START WITH ITEM_CATALOG_GROUP_ID = ebi.'||G_ITEM_CATALOG_EBI_COL;
1801       ELSE
1802         l_dyn_sql := l_dyn_sql || ' START WITH ITEM_CATALOG_GROUP_ID = :CATALOG_GROUP_ID';
1803       END IF;
1804       l_dyn_sql := l_dyn_sql ||' )';
1805       Write_Debug(' SQL to generate  sequence generated item numbers: '||l_dyn_sql);
1806       IF G_CATALOG_GROUP_ID IS NULL THEN
1807         EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1808       ELSE
1809         EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, G_CATALOG_GROUP_ID;
1810       END IF;
1811       Write_Debug(' SQL to generate sequence generated item numbers DONE ');
1812     END IF;
1813 
1814     -----------------------------------------------------------------
1815     -- Determine the Set Process ID, that is unique for MSII
1816     -----------------------------------------------------------------
1817     IF p_set_process_id IS NULL THEN
1818       SELECT mtl_system_items_intf_sets_s.NEXTVAL
1819         INTO l_msii_set_process_id
1820       FROM dual;
1821     ELSE
1822       l_msii_set_process_id := p_set_process_id;
1823     END IF;
1824 
1825     Write_Debug('l_msii_set_process_id : '||To_char(l_msii_set_process_id));
1826     Write_Debug('PROCESS_FLAG : '||To_char(G_PROCESS_STATUS));
1827 
1828      -----------------------------------------------------------------
1829      -- Insert rows from EBI into MSII
1830      -----------------------------------------------------------------
1831     l_dyn_sql :=              'INSERT INTO MTL_SYSTEM_ITEMS_INTERFACE MSII';
1832     l_dyn_sql := l_dyn_sql || ' ( ';
1833     l_dyn_sql := l_dyn_sql || ' SET_PROCESS_ID       ,   ';
1834     l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID       ,   ';
1835     l_dyn_sql := l_dyn_sql || ' REQUEST_ID           ,   ';
1836     l_dyn_sql := l_dyn_sql || ' PROGRAM_APPLICATION_ID,  ';
1837     l_dyn_sql := l_dyn_sql || ' PROGRAM_ID           ,   ';
1838     l_dyn_sql := l_dyn_sql || ' TRANSACTION_TYPE     ,   ';
1839     l_dyn_sql := l_dyn_sql || ' INVENTORY_ITEM_ID    ,   ';
1840     l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID      ,   ';
1841     l_dyn_sql := l_dyn_sql || ' ITEM_NUMBER          ,   ';
1842     l_dyn_sql := l_dyn_sql || ' ORGANIZATION_CODE    ,   ';
1843     l_dyn_sql := l_dyn_sql || ' ITEM_CATALOG_GROUP_ID,   ';
1844     l_dyn_sql := l_dyn_sql || ' ITEM_CATALOG_GROUP_NAME, ';
1845     l_dyn_sql := l_dyn_sql || ' PROCESS_FLAG,            ';
1846     l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_ID,        ';
1847     l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE, ';
1848     l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE_DESC ';
1849     l_dyn_sql := l_dyn_sql || ') ';
1850     l_dyn_sql := l_dyn_sql || ' SELECT ';
1851     l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
1852     l_dyn_sql := l_dyn_sql || ' EBI.TRANSACTION_ID       , ';
1853     l_dyn_sql := l_dyn_sql || G_REQUEST_ID||' , ';
1854     l_dyn_sql := l_dyn_sql || G_PROG_APPID||' , ';
1855     l_dyn_sql := l_dyn_sql || G_PROG_ID||' , ';
1856     l_dyn_sql := l_dyn_sql || ' UPPER(EBI.TRANSACTION_TYPE) , ';
1857     l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
1858     l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
1859     /*  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 */
1860     l_dyn_sql := l_dyn_sql || ' REPLACE( EBI.'||l_item_number_col ||', ''\'', ''\\'') , ';
1861     -- l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
1862     l_dyn_sql := l_dyn_sql || ' EBI.'||l_org_code_col ||' , ';
1863     l_dyn_sql := l_dyn_sql || ' EBI.'||G_ITEM_CATALOG_EBI_COL||' , ';
1864     --------------------------------------------------------------------
1865     --Bug 4652582 (RSOUNDAR) Catalog Group Name is also required in MSII
1866     --------------------------------------------------------------------
1867     l_dyn_sql := l_dyn_sql || ' EBI.'||G_ITEM_CATALOG_NAME_EBI_COL||' , ';
1868     l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS||' , ';
1869     l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11) , ';
1870     l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12 , ';
1871     l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN13 ';
1872     l_dyn_sql := l_dyn_sql || ' FROM EGO_BULKLOAD_INTF EBI ';
1873     l_dyn_sql := l_dyn_sql || ' WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1874     l_dyn_sql := l_dyn_sql || '  AND EBI.PROCESS_STATUS = 1';
1875 
1876     Write_Debug(l_dyn_sql);
1877     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1878     Write_Debug('MSII: Populated the Inv Item IDs, Org IDs.');
1879 
1880      ----------------------------------------------------------------------------------
1881      --Save Item Num, Org Code in designated columns in EBI for Error Reporting later
1882      ----------------------------------------------------------------------------------
1883     l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
1884     l_dyn_sql := l_dyn_sql || ' SET '||G_ITEM_NUMBER_EBI_COL||' = '||l_item_number_col||' , ';
1885     l_dyn_sql := l_dyn_sql || G_ORG_CODE_EBI_COL||' = '||l_org_code_col ;
1886     l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1887     l_dyn_sql := l_dyn_sql || ' AND PROCESS_STATUS = 1                     ';
1888 
1889     Write_Debug(l_dyn_sql);
1890     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1891     Write_Debug('Items Interface: Done saving Item Num, Org Code in EBI for error retrieval later.');
1892 
1893      ---------------------------------------
1894      -- Reset i back to 0, for re-use.
1895      ---------------------------------------
1896     i := 0;
1897     IF ( l_prod_col_name_tbl.count > 0) THEN
1898       FOR i IN l_prod_col_name_tbl.first .. l_prod_col_name_tbl.last LOOP
1899          Write_Debug('$l_prod_col_name_tbl(i)'||l_prod_col_name_tbl(i));
1900          Write_Debug('$l_intf_col_name_tbl(i)'||l_intf_col_name_tbl(i));
1901 
1902          ----------------------------------------------------------------------------------
1903          --  Transfer the Item Catalog Group information from EBI to MSII
1904          --  by doing Value-to-ID Conversion.
1905          ----------------------------------------------------------------------------------
1906          ---------------------------------------------------------------------
1907          --Bug#4652582 (RSOUNDAR)
1908          --(Catalog Name validation will be done by IOI)
1909          ---------------------------------------------------------------------
1910 --         IF (l_prod_col_name_tbl(i) = G_ITEM_CATALOG_GROUP) THEN
1911 --           l_dyn_sql := '';
1912 --           l_dyn_sql := l_dyn_sql || 'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
1913 --           l_dyn_sql := l_dyn_sql || ' SET  (MSII.ITEM_CATALOG_GROUP_ID,  MSII.PROCESS_FLAG)=';
1914 --           l_dyn_sql := l_dyn_sql || '( ';
1915 --           l_dyn_sql := l_dyn_sql || '    SELECT MICG.ITEM_CATALOG_GROUP_ID ';
1916 --           l_dyn_sql := l_dyn_sql || '        ,  DECODE(NVL(MICG.ITEM_CATALOG_GROUP_ID, -1), -1,'||G_ITEM_CATALOG_NAME_ERR_STS||', ' || G_PROCESS_STATUS || ' ) ';
1917 --           l_dyn_sql := l_dyn_sql || '    FROM   MTL_ITEM_CATALOG_GROUPS_B_KFV MICG, EGO_BULKLOAD_INTF EBI  ';
1918 --           l_dyn_sql := l_dyn_sql || '    WHERE  MICG.CONCATENATED_SEGMENTS(+) = EBI.'||l_intf_col_name_tbl(i);
1919 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1920 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1921 --           ----------------------------------------------------------------------------------
1922 --           --  WHERE EXISTS takes care of filtering lines. Hence this join not needed.
1923 --           --  l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
1924 --           ----------------------------------------------------------------------------------
1925 --           l_dyn_sql := l_dyn_sql || ') ';
1926 --           l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
1927 --           l_dyn_sql := l_dyn_sql || '( ';
1928 --           l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
1929 --           l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
1930 --           l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1931 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1932 --           ----------------------------------------------------------------------------------
1933 --           -- Validate only for the NOT NULL values, and update MSII.
1934 --           -- NULL values dont need to go in.
1935 --           ----------------------------------------------------------------------------------
1936 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
1937 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
1938 --           l_dyn_sql := l_dyn_sql || '    AND    MSII.PROCESS_FLAG = ' || G_PROCESS_STATUS ;
1939 --           l_dyn_sql := l_dyn_sql || ') ';
1940 --
1941 --           Write_Debug(l_dyn_sql);
1942 --           EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
1943 --           Write_Debug('MSII: Updated the Catalog Group IDs.');
1944 
1945          ----------------------------------------------------------------------------------
1946          --  Transfer the Primary Unit of Measure information from EBI to MSII
1947          --  by doing Value-to-ID Conversion.
1948          ----------------------------------------------------------------------------------
1949 
1950          IF (l_prod_col_name_tbl(i) = G_PRIMARY_UOM) THEN
1951 
1952            -- populating MSII with PRIMARY_UOM_CODE if exists
1953            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
1954            l_dyn_sql := l_dyn_sql || ' SET  (MSII.PRIMARY_UOM_CODE   ';
1955            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG )= ';
1956            l_dyn_sql := l_dyn_sql || '( ';
1957            l_dyn_sql := l_dyn_sql || '    SELECT MUOM.UOM_CODE   ';
1958            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(MUOM.UOM_CODE, ''NULL''),''NULL'','||G_PRIMARY_UOM_ERR_STS||', ' || G_PROCESS_STATUS || ' )  ';
1959            l_dyn_sql := l_dyn_sql || '    FROM MTL_UNITS_OF_MEASURE_TL MUOM, EGO_BULKLOAD_INTF EBI  ';
1960            l_dyn_sql := l_dyn_sql || '    WHERE MUOM.UNIT_OF_MEASURE_TL (+) = EBI.'||l_intf_col_name_tbl(i);
1961            l_dyn_sql := l_dyn_sql || '    AND MUOM.LANGUAGE (+) = Userenv(''LANG'') ';
1962            l_dyn_sql := l_dyn_sql || '    AND EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
1963            l_dyn_sql := l_dyn_sql || '    AND EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1964            l_dyn_sql := l_dyn_sql || ') ';
1965            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
1966            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
1967            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
1968            l_dyn_sql := l_dyn_sql || '( ';
1969            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
1970            l_dyn_sql := l_dyn_sql || '    FROM EGO_BULKLOAD_INTF EBI  ';
1971            l_dyn_sql := l_dyn_sql || '    WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1972            l_dyn_sql := l_dyn_sql || '    AND EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1973            l_dyn_sql := l_dyn_sql || '    AND EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
1974            l_dyn_sql := l_dyn_sql || '    AND EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
1975            l_dyn_sql := l_dyn_sql || '    AND EBI.PROCESS_STATUS = 1  ';
1976            l_dyn_sql := l_dyn_sql || ') ';
1977 
1978            Write_Debug(l_dyn_sql);
1979            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
1980 
1981            -- populating MSII with PRIMARY_UOM_CODE if special char for null out exists
1982            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
1983            l_dyn_sql := l_dyn_sql || ' SET  MSII.PRIMARY_UOM_CODE = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
1984            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
1985            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
1986            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
1987            l_dyn_sql := l_dyn_sql || '( ';
1988            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
1989            l_dyn_sql := l_dyn_sql || '    FROM EGO_BULKLOAD_INTF EBI  ';
1990            l_dyn_sql := l_dyn_sql || '    WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
1991            l_dyn_sql := l_dyn_sql || '    AND EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
1992            l_dyn_sql := l_dyn_sql || '    AND EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
1993            l_dyn_sql := l_dyn_sql || '    AND EBI.PROCESS_STATUS = 1  ';
1994            l_dyn_sql := l_dyn_sql || ') ';
1995 
1996            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
1997            Write_Debug('MSII: Updated the Primary UOMs.');
1998 
1999          ----------------------------------------------------------------------------------
2000          --  Bug# 3421497 fix.
2001          --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
2002          --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
2003          --  dependant upon the Lifecycle ID value.
2004          ----------------------------------------------------------------------------------
2005          ELSIF (l_prod_col_name_tbl(i) = G_LIFECYCLE) THEN
2006 
2007            l_lifecycle_col_val := l_intf_col_name_tbl(i);
2008 
2009          ----------------------------------------------------------------------------------
2010          --  Bug# 3421497 fix.
2011          --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
2012          --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
2013          --  dependant upon the Lifecycle ID value.
2014          ----------------------------------------------------------------------------------
2015          ELSIF (l_prod_col_name_tbl(i) = G_LIFECYCLE_PHASE) THEN
2016 
2017            l_lifecycle_phase_col_val := l_intf_col_name_tbl(i);
2018 
2019          ----------------------------------------------------------------------------------
2020          --  Transfer the User Item Type information from EBI to MSII
2021          --  by doing Value-to-ID Conversion.
2022          ----------------------------------------------------------------------------------
2023          ELSIF (l_prod_col_name_tbl(i) = G_USER_ITEM_TYPE) THEN
2024 
2025            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2026            l_dyn_sql := l_dyn_sql || ' SET  (MSII.ITEM_TYPE   ';
2027            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2028            l_dyn_sql := l_dyn_sql || '( ';
2029            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2030            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_USER_ITEM_TYPE_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2031            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2032            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''ITEM_TYPE'' ';
2033            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2034            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2035            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2036            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2037            l_dyn_sql := l_dyn_sql || ') ';
2038            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2039            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2040            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2041            l_dyn_sql := l_dyn_sql || '( ';
2042            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2043            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2044            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2045            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2046            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2047            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2048            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2049            l_dyn_sql := l_dyn_sql || ') ';
2050 
2051            Write_Debug(l_dyn_sql);
2052            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2053 
2054            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2055            l_dyn_sql := l_dyn_sql || ' SET  MSII.ITEM_TYPE = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2056            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2057            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2058            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2059            l_dyn_sql := l_dyn_sql || '( ';
2060            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2061            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2062            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2063            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2064            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2065            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2066            l_dyn_sql := l_dyn_sql || ') ';
2067 
2068            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2069            Write_Debug('MSII: Updated the User Item Types.');
2070 
2071          ----------------------------------------------------------------------------------
2072          --  Transfer the BOM Item Type information from EBI to MSII
2073          --  by doing Value-to-ID Conversion.
2074          ----------------------------------------------------------------------------------
2075          ELSIF (l_prod_col_name_tbl(i) = G_BOM_ITEM_TYPE) THEN
2076 
2077            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2078            l_dyn_sql := l_dyn_sql || ' SET  (MSII.BOM_ITEM_TYPE   ';
2079            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2080            l_dyn_sql := l_dyn_sql || '( ';
2081            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2082            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_BOM_ITEM_TYPE_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2083            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2084            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''BOM_ITEM_TYPE'' ';
2085            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2086            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2087            l_dyn_sql := l_dyn_sql || '     AND   EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2088            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2089            l_dyn_sql := l_dyn_sql || ') ';
2090            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2091            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2092            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2093            l_dyn_sql := l_dyn_sql || '( ';
2094            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2095            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2096            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2097            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2098            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2099            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2100            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2101            l_dyn_sql := l_dyn_sql || ') ';
2102 
2103            Write_Debug(l_dyn_sql);
2104            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2105 
2106            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2107            l_dyn_sql := l_dyn_sql || ' SET  MSII.BOM_ITEM_TYPE = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2108            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2109            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2110            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2111            l_dyn_sql := l_dyn_sql || '( ';
2112            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2113            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2114            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2115            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2116            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2117            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2118            l_dyn_sql := l_dyn_sql || ') ';
2119 
2120            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2121            Write_Debug('MSII: Updated the BOM Item Types.');
2122 
2123           ELSIF (l_prod_col_name_tbl(i) = G_TRADE_ITEM_DESCRIPTOR) THEN
2124             l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2125            l_dyn_sql := l_dyn_sql || ' SET  (MSII.TRADE_ITEM_DESCRIPTOR   ';
2126            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2127            l_dyn_sql := l_dyn_sql || '( ';
2128            l_dyn_sql := l_dyn_sql || '    SELECT IT.INTERNAL_NAME ';
2129            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.INTERNAL_NAME, ''NULL''),''NULL'','||G_TRADE_ITEM_DESC_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2130            l_dyn_sql := l_dyn_sql || '    FROM   EGO_VALUE_SET_VALUES_V IT, EGO_BULKLOAD_INTF EBI ';
2131            l_dyn_sql := l_dyn_sql || '    WHERE  IT.VALUE_SET_NAME = ''TradeItemDescVS'' ';
2132            l_dyn_sql := l_dyn_sql || '     AND   IT.DISPLAY_NAME = EBI.'||l_intf_col_name_tbl(i);
2133            l_dyn_sql := l_dyn_sql || '     AND   EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2134            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2135            l_dyn_sql := l_dyn_sql || ') ';
2136            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2137            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2138            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2139            l_dyn_sql := l_dyn_sql || '( ';
2140            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2141            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2142            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2143            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2144            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2145            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2146            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2147            l_dyn_sql := l_dyn_sql || ') ';
2148 
2149            Write_Debug(l_dyn_sql);
2150            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2151 
2152            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2153            l_dyn_sql := l_dyn_sql || ' SET  MSII.TRADE_ITEM_DESCRIPTOR = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2154            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2155            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2156            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2157            l_dyn_sql := l_dyn_sql || '( ';
2158            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2159            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2160            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2161            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2162            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2163            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2164            l_dyn_sql := l_dyn_sql || ') ';
2165 
2166            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2167            Write_Debug('MSII: Updated the Trade Item Descriptor.');
2168 
2169          ----------------------------------------------------------------------------------
2170          --  Transfer the Engineering Item Flag information from EBI to MSII
2171          --  by doing Value-to-ID Conversion.
2172          ----------------------------------------------------------------------------------
2173          ELSIF (l_prod_col_name_tbl(i) = G_ENG_ITEM_FLAG) THEN
2174 
2175            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2176            l_dyn_sql := l_dyn_sql || ' SET  (MSII.ENG_ITEM_FLAG   ';
2177            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2178            l_dyn_sql := l_dyn_sql || '( ';
2179            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2180            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_ENG_ITEM_FLAG_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2181            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2182            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''EGO_YES_NO'' ';
2183            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2184            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2185            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2186            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2187            l_dyn_sql := l_dyn_sql || ') ';
2188            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2189            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2190            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2191            l_dyn_sql := l_dyn_sql || '( ';
2192            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2193            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2194            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2195            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2196            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2197            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2198            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2199            l_dyn_sql := l_dyn_sql || ') ';
2200 
2201            Write_Debug(l_dyn_sql);
2202            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2203 
2204            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2205            l_dyn_sql := l_dyn_sql || ' SET  MSII.ENG_ITEM_FLAG = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2206            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2207            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2208            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2209            l_dyn_sql := l_dyn_sql || '( ';
2210            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2211            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2212            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2213            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2214            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2215            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2216            l_dyn_sql := l_dyn_sql || ') ';
2217 
2218            Write_Debug(l_dyn_sql);
2219            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2220            Write_Debug('MSII: Updated the Eng Item Flags.');
2221 
2222          --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
2223          ----------------------------------------------------------------------------------
2224          --  Transfer the Conversions attribute information from EBI to MSII
2225          --  by doing Value-to-ID Conversion.
2226          ----------------------------------------------------------------------------------
2227          ELSIF (l_prod_col_name_tbl(i) = G_CONVERSIONS) THEN
2228 
2229            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2230            l_dyn_sql := l_dyn_sql || ' SET  (MSII.ALLOWED_UNITS_LOOKUP_CODE   ';
2231            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2232            l_dyn_sql := l_dyn_sql || '( ';
2233            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2234            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_CONVERSIONS_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2235            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2236            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''MTL_CONVERSION_TYPE'' ';
2237            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2238            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2239            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2240            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2241            l_dyn_sql := l_dyn_sql || ') ';
2242            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2243            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2244            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2245            l_dyn_sql := l_dyn_sql || '( ';
2246            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2247            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2248            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2249            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2250            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2251            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2252            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2253            l_dyn_sql := l_dyn_sql || ') ';
2254 
2255            Write_Debug(l_dyn_sql);
2256            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2257 
2258            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2259            l_dyn_sql := l_dyn_sql || ' SET  MSII.ALLOWED_UNITS_LOOKUP_CODE = :NULL_NUM ';
2260            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2261            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2262            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2263            l_dyn_sql := l_dyn_sql || '( ';
2264            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2265            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2266            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2267            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2268            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2269            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2270            l_dyn_sql := l_dyn_sql || ') ';
2271 
2272            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2273            Write_Debug('MSII: Updated the Conversions.');
2274 
2275          ----------------------------------------------------------------------------------
2276          --  Transfer the Conversions attribute information from EBI to MSII
2277          --  by doing Value-to-ID Conversion.
2278          ----------------------------------------------------------------------------------
2279          ELSIF (l_prod_col_name_tbl(i) = G_SECONDARY_DEF_IND) THEN
2280 
2281            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2282            l_dyn_sql := l_dyn_sql || ' SET  (MSII.SECONDARY_DEFAULT_IND   ';
2283            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2284            l_dyn_sql := l_dyn_sql || '( ';
2285            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2286            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_SECONDARY_DEF_IND_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2287            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2288            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''INV_DEFAULTING_UOM_TYPE'' ';
2289            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2290            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2291            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2292            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2293            l_dyn_sql := l_dyn_sql || ') ';
2294            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2295            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2296            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2297            l_dyn_sql := l_dyn_sql || '( ';
2298            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2299            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2300            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2301            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2302            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2303            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2304            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2305            l_dyn_sql := l_dyn_sql || ') ';
2306 
2307            Write_Debug(l_dyn_sql);
2308            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2309 
2310            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2311            l_dyn_sql := l_dyn_sql || ' SET  MSII.SECONDARY_DEFAULT_IND = :NULL_NUM';
2312            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2313            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2314            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2315            l_dyn_sql := l_dyn_sql || '( ';
2316            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2317            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2318            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2319            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2320            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2321            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2322            l_dyn_sql := l_dyn_sql || ') ';
2323 
2324            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2325            Write_Debug('MSII: Updated the Conversions.');
2326 
2327          ----------------------------------------------------------------------------------
2328          --  Transfer the Conversions attribute information from EBI to MSII
2329          --  by doing Value-to-ID Conversion.
2330          ----------------------------------------------------------------------------------
2331          ELSIF (l_prod_col_name_tbl(i) = G_ONT_PRICING_QTY_SRC) THEN
2332 
2333            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2334            l_dyn_sql := l_dyn_sql || ' SET  (MSII.ONT_PRICING_QTY_SOURCE   ';
2335            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2336            l_dyn_sql := l_dyn_sql || '( ';
2337            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2338            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_ONT_PRICING_QTY_SRC_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2339            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2340            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''INV_PRICING_UOM_TYPE'' ';
2341            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2342            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2343            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2344            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2345            l_dyn_sql := l_dyn_sql || ') ';
2346            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2347            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2348            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2349            l_dyn_sql := l_dyn_sql || '( ';
2350            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2351            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2352            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2353            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2354            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2355            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2356            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2357            l_dyn_sql := l_dyn_sql || ') ';
2358 
2359            Write_Debug(l_dyn_sql);
2360            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2361 
2362            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2363            l_dyn_sql := l_dyn_sql || ' SET  MSII.ONT_PRICING_QTY_SOURCE = :NULL_NUM';
2364            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2365            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2366            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2367            l_dyn_sql := l_dyn_sql || '( ';
2368            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2369            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2370            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2371            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2372            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2373            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2374            l_dyn_sql := l_dyn_sql || ') ';
2375 
2376            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2377            Write_Debug('MSII: Updated the Conversions.');
2378 
2379          ----------------------------------------------------------------------------------
2380          --  Transfer the Conversions attribute information from EBI to MSII
2381          --  by doing Value-to-ID Conversion.
2382          ----------------------------------------------------------------------------------
2383          ELSIF (l_prod_col_name_tbl(i) = G_SECONDARY_UOM_CODE) THEN
2384 
2385            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2386            l_dyn_sql := l_dyn_sql || ' SET  (MSII.SECONDARY_UOM_CODE   ';
2387            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2388            l_dyn_sql := l_dyn_sql || '( ';
2389            l_dyn_sql := l_dyn_sql || '    SELECT MUOM.UOM_CODE   ';
2390            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(MUOM.UOM_CODE, ''NULL''),''NULL'','||G_SECONDARY_UOM_CODE_ERR_STS||', ' || G_PROCESS_STATUS || ')  ';
2391            l_dyn_sql := l_dyn_sql || '    FROM   MTL_UNITS_OF_MEASURE_TL MUOM, EGO_BULKLOAD_INTF EBI  ';
2392            l_dyn_sql := l_dyn_sql || '    WHERE  MUOM.UNIT_OF_MEASURE_TL (+) = EBI.'||l_intf_col_name_tbl(i);
2393            l_dyn_sql := l_dyn_sql || '    AND    MUOM.LANGUAGE (+) = Userenv(''LANG'') ';
2394            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2395            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2396            l_dyn_sql := l_dyn_sql || ') ';
2397            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2398            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2399            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2400            l_dyn_sql := l_dyn_sql || '( ';
2401            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2402            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2403            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2404            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2405            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2406            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2407            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2408            l_dyn_sql := l_dyn_sql || ') ';
2409 
2410            Write_Debug(l_dyn_sql);
2411            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2412 
2413            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2414            l_dyn_sql := l_dyn_sql || ' SET  MSII.SECONDARY_UOM_CODE = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2415            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2416            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2417            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2418            l_dyn_sql := l_dyn_sql || '( ';
2419            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2420            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2421            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2422            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2423            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2424            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2425            l_dyn_sql := l_dyn_sql || ') ';
2426 
2427            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2428            Write_Debug('MSII: Updated the Conversions.');
2429 
2430          ----------------------------------------------------------------------------------
2431          --  Transfer the Conversions attribute information from EBI to MSII
2432          --  by doing Value-to-ID Conversion.
2433          ----------------------------------------------------------------------------------
2434          ELSIF (l_prod_col_name_tbl(i) = G_TRACKING_QTY_IND) THEN
2435 
2436            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2437            l_dyn_sql := l_dyn_sql || ' SET  (MSII.TRACKING_QUANTITY_IND   ';
2438            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2439            l_dyn_sql := l_dyn_sql || '( ';
2440            l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
2441            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.LOOKUP_CODE, ''NULL''),''NULL'','||G_TRACKING_QTY_IND_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2442            l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
2443            l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE (+) = ''INV_TRACKING_UOM_TYPE'' ';
2444            l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE (+) = Userenv(''LANG'') ';
2445            l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING (+) = EBI.'||l_intf_col_name_tbl(i);
2446            l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2447            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2448            l_dyn_sql := l_dyn_sql || ') ';
2449            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2450            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2451            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2452            l_dyn_sql := l_dyn_sql || '( ';
2453            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2454            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2455            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2456            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2457            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2458            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2459            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2460            l_dyn_sql := l_dyn_sql || ') ';
2461 
2462            Write_Debug(l_dyn_sql);
2463            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2464 
2465            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2466            l_dyn_sql := l_dyn_sql || ' SET  MSII.TRACKING_QUANTITY_IND = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2467            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2468            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2469            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2470            l_dyn_sql := l_dyn_sql || '( ';
2471            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2472            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2473            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2474            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2475            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2476            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2477            l_dyn_sql := l_dyn_sql || ') ';
2478 
2479            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2480            Write_Debug('MSII: Updated the Conversions.');
2481            --Bug: 3969593 End
2482 
2483          ----------------------------------------------------------------------------------
2484          --  Transfer the Item Status Code attribute information from EBI to MSII
2485          --  by doing Value-to-ID Conversion. Rathna
2486          ----------------------------------------------------------------------------------
2487          ELSIF (l_prod_col_name_tbl(i) = G_INVENTORY_ITEM_STATUS) THEN
2488 
2489            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2490            l_dyn_sql := l_dyn_sql || ' SET  (MSII.INVENTORY_ITEM_STATUS_CODE ';
2491            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2492            l_dyn_sql := l_dyn_sql || '( ';
2493            l_dyn_sql := l_dyn_sql || '    SELECT IT.INVENTORY_ITEM_STATUS_CODE ';
2494            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(IT.INVENTORY_ITEM_STATUS_CODE, ''NULL''),''NULL'','||G_INV_ITEM_STATUS_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2495            l_dyn_sql := l_dyn_sql || '    FROM   MTL_ITEM_STATUS IT, EGO_BULKLOAD_INTF EBI ';
2496            l_dyn_sql := l_dyn_sql || '    WHERE  IT.INVENTORY_ITEM_STATUS_CODE_TL (+) = EBI.'||l_intf_col_name_tbl(i);
2497            l_dyn_sql := l_dyn_sql || '     AND   EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2498            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2499            l_dyn_sql := l_dyn_sql || ') ';
2500            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2501            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2502            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2503            l_dyn_sql := l_dyn_sql || '( ';
2504            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2505            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2506            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2507            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2508            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2509            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2510            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2511            l_dyn_sql := l_dyn_sql || ') ';
2512 
2513            Write_Debug(l_dyn_sql);
2514            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2515 
2516            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2517            l_dyn_sql := l_dyn_sql || ' SET  MSII.TRACKING_QUANTITY_IND = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2518            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2519            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2520            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2521            l_dyn_sql := l_dyn_sql || '( ';
2522            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2523            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2524            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2525            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2526            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2527            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2528            l_dyn_sql := l_dyn_sql || ') ';
2529 
2530            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
2531            Write_Debug('MSII: Updated the Item Status.*');
2532 
2533          ----------------------------------------------------------------------------------
2534          --  Transfer the Column information from EBI to MSII
2535          --  which *DONOT NEED* Value-to-ID Conversion.
2536          ----------------------------------------------------------------------------------
2537          ELSIF (l_prod_col_name_tbl(i) <> G_CREATION_DATE AND l_prod_col_name_tbl(i) <>  G_CREATED_BY
2538                 AND l_prod_col_name_tbl(i) <> 'CATEGORY_SET_NAME' -- Bug 12838284
2539                 AND l_prod_col_name_tbl(i) <> 'CATEGORY_NAME'  -- Bug 12833284
2540                ) THEN
2541            --Bug Fix 4713312:START
2542            IF (l_prod_col_name_tbl(i) = G_ITEM_CATALOG_GROUP1) THEN
2543              l_col_name := G_ITEM_CATALOG_GROUP;
2544            ELSE
2545              l_col_name := l_prod_col_name_tbl(i);
2546            END IF;
2547           Write_Debug('Updating MSII: l_col_name = ' || l_col_name);
2548            --Bug Fix 4713312:END
2549            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2550            l_dyn_sql := l_dyn_sql || ' SET   MSII.'||l_col_name||' =  ';
2551            l_dyn_sql := l_dyn_sql || '( ';
2552 --  MLS Status
2553 --           IF (l_prod_col_name_tbl(i) = G_INV_STATUS_CODE_NAME) THEN
2554 --             ----------------------------------------------------------------------------------
2555 --             -- MSII INVENTORY_ITEM_STATUS_CODE is only 10 char long
2556 --             ----------------------------------------------------------------------------------
2557 --             l_dyn_sql := l_dyn_sql || ' SELECT SUBSTRB(EBI.'||l_intf_col_name_tbl(i) || ', 1, 10)';
2558 --
2559 --           ELSE
2560            IF (l_prod_col_name_tbl(i) = G_ITEM_TEMPLATE_NAME) THEN
2561              ----------------------------------------------------------------------------------
2562              -- MSII TEMPLATE_NAME is only 30 chars long
2563              ----------------------------------------------------------------------------------
2564              l_dyn_sql := l_dyn_sql || ' SELECT SUBSTR(EBI.'||l_intf_col_name_tbl(i)|| ',1,30)';
2565 
2566            ELSIF  (l_prod_col_name_tbl(i) IN ('STYLE_ITEM_FLAG', 'GDSN_OUTBOUND_ENABLED_FLAG' )) THEN
2567               l_dyn_sql := l_dyn_sql || ' SELECT LOOKUP_CODE ';
2568            ELSE
2569              ----------------------------------------------------------------------------------
2570              -- All other columns, which *DONOT NEED* any special treatment.
2571              ----------------------------------------------------------------------------------
2572               l_dyn_sql := l_dyn_sql || ' SELECT EBI.'||l_intf_col_name_tbl(i);
2573            END IF; --end: IF (l_prod_col_name_tbl(i) = G_ITEM_TEMPLATE_NAME)
2574 
2575            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI ';
2576 
2577            IF  (l_prod_col_name_tbl(i) IN ('STYLE_ITEM_FLAG', 'GDSN_OUTBOUND_ENABLED_FLAG' )) THEN
2578              l_dyn_sql := l_dyn_sql || '    ,   FND_LOOKUP_VALUES_VL LKUP ';
2579            END IF;
2580 
2581            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2582            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2583 
2584            IF  (l_prod_col_name_tbl(i) IN ('STYLE_ITEM_FLAG', 'GDSN_OUTBOUND_ENABLED_FLAG' )) THEN
2585              l_dyn_sql := l_dyn_sql || ' AND  LOOKUP_TYPE = ''EGO_YES_NO'' ';
2586              l_dyn_sql := l_dyn_sql || ' AND  LKUP.MEANING = EBI.'||l_intf_col_name_tbl(i)||' ';
2587            END IF;
2588 
2589            l_dyn_sql := l_dyn_sql || ') ';
2590 
2591             /* Fix for bug 8530157- if column name is icc_name then set the icc_id too */
2592            IF ( l_col_name = G_ITEM_CATALOG_GROUP ) THEN
2593 
2594            /* option 1 -set the icc_id to null and check if IOI will populate it based on icc_name */
2595            		l_dyn_sql := l_dyn_sql || ' , MSII.ITEM_CATALOG_GROUP_ID = NULL  ';
2596 
2597            /*  option 2 (commented for now) : use if option 1 does not work. fetch the icc_id and set it
2598            		l_dyn_sql := l_dyn_sql || ' , MSII.ITEM_CATALOG_GROUP_ID =   ';
2599           		l_dyn_sql := l_dyn_sql || ' ( ';
2600            		l_dyn_sql := l_dyn_sql || '    SELECT MICG.ITEM_CATALOG_GROUP_ID ';
2601   			    l_dyn_sql := l_dyn_sql || '    FROM   MTL_ITEM_CATALOG_GROUPS_B_KFV MICG, EGO_BULKLOAD_INTF EBI  ';
2602           		l_dyn_sql := l_dyn_sql || '    WHERE  MICG.CONCATENATED_SEGMENTS(+) = EBI.'||l_intf_col_name_tbl(i);
2603           		l_dyn_sql := l_dyn_sql || ' ) ';
2604            */
2605            END IF;
2606 
2607            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2608            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2609            l_dyn_sql := l_dyn_sql || '   AND MSII.TRANSACTION_ID IN ';
2610            l_dyn_sql := l_dyn_sql || ' ( ';
2611            l_dyn_sql := l_dyn_sql || '    SELECT EBI.TRANSACTION_ID ';
2612            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI ';
2613            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2614 --           l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2615            l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
2616            l_dyn_sql := l_dyn_sql || ' ) ';
2617 
2618            Write_Debug(l_dyn_sql);
2619            Write_Debug('Updating : RSOUNDAR: MSII: l_dyn_sql = ' || l_dyn_sql);
2620            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2621            Write_Debug('MSII: Updated the '||l_prod_col_name_tbl(i)||' column values.');
2622 
2623          END IF;--end: IF (l_prod_col_name_tbl(i) = G_ITEM_CATALOG_GROUP) THEN
2624 
2625          -- Bug: 3778006
2626          ----------------------------------------------------------------------------------
2627          --  Checking if transaction_type is update and Description generation method is
2628          --  Function Generated, then Description updation should not be allowed.
2629          ----------------------------------------------------------------------------------
2630          IF (l_prod_col_name_tbl(i) = G_DESCRIPTION) THEN
2631 --DPHILIP: we need to check what is the impact of this check
2632            Write_Debug('DPHILIP :updating description setting the error status to:  ' || G_DESCRIPTION_ERR_STS);
2633 
2634            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2635            l_dyn_sql := l_dyn_sql || ' SET  MSII.PROCESS_FLAG = '||G_DESCRIPTION_ERR_STS||' ';
2636            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2637            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2638            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2639            l_dyn_sql := l_dyn_sql || '( ';
2640            l_dyn_sql := l_dyn_sql || '    SELECT NULL ';
2641            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI, MTL_SYSTEM_ITEMS_VL MSIV ';
2642            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2643            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2644            l_dyn_sql := l_dyn_sql || '    AND    EBI.INSTANCE_PK1_VALUE = MSIV.INVENTORY_ITEM_ID ';
2645            l_dyn_sql := l_dyn_sql || '    AND    EBI.INSTANCE_PK2_VALUE = MSIV.ORGANIZATION_ID ';
2646            l_dyn_sql := l_dyn_sql || '    AND    EGO_ITEM_BULKLOAD_PKG.get_desc_gen_method(MSIV.ITEM_CATALOG_GROUP_ID) = :FUNCTION_GEN ';
2647            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' IS NOT NULL';
2648            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_intf_col_name_tbl(i)||' <> MSIV.DESCRIPTION';
2649            l_dyn_sql := l_dyn_sql || '    AND    EBI.INSTANCE_PK1_VALUE IS NOT NULL';
2650            l_dyn_sql := l_dyn_sql || '    AND    UPPER(EBI.TRANSACTION_TYPE) IN (:UPD, :SYNC)';
2651            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2652            l_dyn_sql := l_dyn_sql || ') ';
2653 
2654            Write_Debug(l_dyn_sql);
2655            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, 'F', 'UPDATE', 'SYNC';
2656            Write_Debug('MSII: Logged Error (if any) in updating description');
2657 
2658          END IF;
2659 
2660        END LOOP;--end: FOR i IN l_prod_col_name_tbl.first .. l_prod_col_name_tbl.last LOOP
2661 
2662        ----------------------------------------------------------------------------------
2663        --  Bug# 3421497 fix.
2664        --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
2665        --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
2666        --  dependant upon the Lifecycle ID value.
2667        --  Hence the are processed outside the above LOOP.
2668        ----------------------------------------------------------------------------------
2669 
2670        IF (l_lifecycle_col_val IS NOT NULL) THEN
2671 
2672          ----------------------------------------------------------------------------------
2673          --  First Transfer the Lifecycle information from EBI to MSII
2674          --  by doing Value-to-ID Conversion.
2675          ----------------------------------------------------------------------------------
2676            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2677            l_dyn_sql := l_dyn_sql || ' SET  (MSII.LIFECYCLE_ID   ';
2678            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2679            l_dyn_sql := l_dyn_sql || '( ';
2680            l_dyn_sql := l_dyn_sql || '    SELECT LC.PROJ_ELEMENT_ID ';
2681            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(LC.PROJ_ELEMENT_ID, -1), -1,'||G_LIFECYCLE_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2682            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_LIFECYCLES_V LC, EGO_BULKLOAD_INTF EBI  ';
2683            l_dyn_sql := l_dyn_sql || '    WHERE  LC.NAME (+) = EBI.'||l_lifecycle_col_val;
2684            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2685            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2686            l_dyn_sql := l_dyn_sql || ') ';
2687            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2688            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2689            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2690            l_dyn_sql := l_dyn_sql || '( ';
2691            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2692            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2693            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2694            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2695            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_col_val||' IS NOT NULL';
2696            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_col_val||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2697            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2698            l_dyn_sql := l_dyn_sql || ') ';
2699 
2700            Write_Debug(l_dyn_sql);
2701            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2702 
2703            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2704            l_dyn_sql := l_dyn_sql || ' SET  MSII.LIFECYCLE_ID = :NULL_NUM';
2705            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2706            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2707            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2708            l_dyn_sql := l_dyn_sql || '( ';
2709            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2710            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2711            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2712            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2713            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_col_val||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2714            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2715            l_dyn_sql := l_dyn_sql || ') ';
2716 
2717            Write_Debug(l_dyn_sql);
2718            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2719 
2720            Write_Debug('MSII: Updated the Lifecycle IDs.');
2721 
2722        END IF; --end: IF (l_lifecycle_col_val IS NOT NULL ...
2723 
2724        IF (l_lifecycle_phase_col_val IS NOT NULL) THEN
2725          ----------------------------------------------------------------------------------
2726          --  Next Transfer the Lifecycle Phase information from EBI to MSII
2727          --  by doing Value-to-ID Conversion, and by joining Lifecycle ID information.
2728          ----------------------------------------------------------------------------------
2729            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2730            l_dyn_sql := l_dyn_sql || ' SET  (MSII.CURRENT_PHASE_ID   ';
2731            l_dyn_sql := l_dyn_sql || '    ,  MSII.PROCESS_FLAG         )= ';
2732            l_dyn_sql := l_dyn_sql || '( ';
2733            l_dyn_sql := l_dyn_sql || '    SELECT LCP.PROJ_ELEMENT_ID ';
2734            l_dyn_sql := l_dyn_sql || '         , DECODE(NVL(LCP.PROJ_ELEMENT_ID, -1), -1,'||G_LIFECYCLE_PHASE_ERR_STS||', ' || G_PROCESS_STATUS || ') ';
2735            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_PHASES_V LCP, EGO_BULKLOAD_INTF EBI ';
2736            l_dyn_sql := l_dyn_sql || '    WHERE  LCP.PARENT_STRUCTURE_ID (+) = MSII.LIFECYCLE_ID ';
2737            l_dyn_sql := l_dyn_sql || '    AND    LCP.NAME (+) = EBI.'||l_lifecycle_phase_col_val;
2738            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
2739            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2740            l_dyn_sql := l_dyn_sql || ') ';
2741            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2742            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2743            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2744            l_dyn_sql := l_dyn_sql || '( ';
2745            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2746            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2747            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2748            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2749            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_phase_col_val||' IS NOT NULL';
2750            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_phase_col_val||' <> '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2751            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2752            l_dyn_sql := l_dyn_sql || ') ';
2753 
2754            Write_Debug(l_dyn_sql);
2755            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
2756 
2757            l_dyn_sql :=              'UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII ';
2758            l_dyn_sql := l_dyn_sql || ' SET  MSII.CURRENT_PHASE_ID = :NULL_NUM';
2759            l_dyn_sql := l_dyn_sql || ' WHERE MSII.SET_PROCESS_ID  = ' || l_msii_set_process_id;
2760            l_dyn_sql := l_dyn_sql || '   AND MSII.PROCESS_FLAG  = ' || G_PROCESS_STATUS;
2761            l_dyn_sql := l_dyn_sql || '   AND EXISTS ';
2762            l_dyn_sql := l_dyn_sql || '( ';
2763            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
2764            l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI  ';
2765            l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
2766            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID ';
2767            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_phase_col_val||' = '''||EGO_ITEM_PUB.G_INTF_NULL_CHAR||'''';
2768            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
2769            l_dyn_sql := l_dyn_sql || ') ';
2770 
2771            EXECUTE IMMEDIATE l_dyn_sql USING EGO_ITEM_PUB.G_INTF_NULL_NUM, p_resultfmt_usage_id;
2772            Write_Debug('MSII: Updated the Lifecycle Phase IDs.');
2773 
2774        END IF; --end: IF (l_lifecycle_phase_col_val IS NOT NULL ...
2775 
2776     END IF; --IF ( l_prod_col_name_tbl.count > 0) THEN
2777     --
2778     -- convert all date fields values from Excel Null to INTF Null
2779     --
2780     UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII
2781     SET  start_date_active = DECODE(start_date_active,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,start_date_active),
2782          end_date_active = DECODE(end_date_active,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,end_date_active),
2783          engineering_date = DECODE(engineering_date,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,engineering_date)
2784     WHERE MSII.SET_PROCESS_ID  = l_msii_set_process_id
2785       AND MSII.PROCESS_FLAG  = G_PROCESS_STATUS
2786       AND (MSII.start_date_active IS NOT NULL
2787            OR
2788            MSII.end_date_active IS NOT NULL
2789            OR
2790            MSII.engineering_date IS NOT NULL
2791           )
2792       AND EXISTS
2793        ( SELECT 'X'
2794          FROM   EGO_BULKLOAD_INTF EBI
2795          WHERE  EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
2796          AND    EBI.TRANSACTION_ID = MSII.TRANSACTION_ID
2797          AND    EBI.PROCESS_STATUS = 1
2798        );
2799     ----------------------------------------------------------------------------------
2800     -- To print all the Item Numbers.
2801     -- 1) That were passed in Excel
2802     -- 2) That were Sequence generated
2803     -- etc., (i.e. in future, Function generated etc.,)
2804     ----------------------------------------------------------------------------------
2805     Log_ItemNums_ToBe_Processed(p_resultfmt_usage_id,
2806                                 l_item_number_col);
2807     x_retcode := G_STATUS_SUCCESS;
2808     x_set_process_id := l_msii_set_process_id;
2809 
2810     ----------------------------------------------------------------------------------
2811     -- Now that Revision Update is supported through Item Search Results,
2812     -- need to use the same set_process_id for Revisions Interface also.
2813     -- Hence storing in a Global variable.
2814     ----------------------------------------------------------------------------------
2815     G_MSII_SET_PROCESS_ID := l_msii_set_process_id;
2816 
2817 END load_item_interface;
2818 
2819 
2820  ----------------------------------------------------------
2821  --  Preprocess Item Interface Lines                     --
2822  ----------------------------------------------------------
2823 
2824 PROCEDURE preprocess_item_interface
2825                (
2826                  p_resultfmt_usage_id    IN         NUMBER,
2827                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
2828                  p_set_process_id        IN         NUMBER,
2829                  x_errbuff               IN OUT NOCOPY     VARCHAR2,
2830                  x_retcode               IN OUT NOCOPY    VARCHAR2
2831                 ) IS
2832 
2833     -- Start OF comments
2834     -- API name  : Setup MSII Item Interface Lines for processing
2835     -- TYPE      : Private
2836     -- Pre-reqs  : None
2837     -- FUNCTION  : Populate and Prepare Item interfance lines.
2838     --             Eliminates any redundancy / errors in MSII
2839 
2840   -----------------------------------------------
2841   -- Long Dynamic SQL String
2842   -----------------------------------------------
2843   l_dyn_sql                VARCHAR2(20000);
2844 
2845   -----------------------------------------------
2846   -- Error message variables
2847   -----------------------------------------------
2848   l_item_catalog_err_msg      VARCHAR2(2000);
2849   l_uom_err_msg               VARCHAR2(2000);
2850   l_lifecycle_err_msg         VARCHAR2(2000);
2851   l_lifecycle_ph_err_msg      VARCHAR2(2000);
2852   l_useritemtype_err_msg      VARCHAR2(2000);
2853   l_bomitemtype_err_msg       VARCHAR2(2000);
2854   l_engitemflag_err_msg       VARCHAR2(2000);
2855   l_description_err_msg       VARCHAR2(2000); -- Bug: 3778006
2856   --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
2857   l_conversions_err_msg       VARCHAR2(2000);
2858   l_secondary_def_err_msg     VARCHAR2(2000);
2859   l_ont_pricing_qty_src_err_msg VARCHAR2(2000);
2860   l_secondary_uom_code_err_msg  VARCHAR2(2000);
2861   l_tracking_qty_ind_err_msg    VARCHAR2(2000);
2862   l_inv_item_status_err_msg     VARCHAR2(2000);
2863   --Bug: 3969593 End
2864   --R12C changes for Pack Hierarchy
2865   l_tradeitemdesc_err_msg    VARCHAR2(2000);
2866 BEGIN
2867 
2868    Write_Debug('EBI : Getting the messages.');
2869 
2870    -----------------------------------------------------------------------
2871    -- Preparation for Inserting error messages for all pre-processing   --
2872    -- Validation errors.                                                --
2873    -----------------------------------------------------------------------
2874    FND_MESSAGE.SET_NAME('EGO','EGO_ITEMCATALOG_INVALID');
2875 
2876    -----------------------------------------------------------------------
2877    -- Fixing MLS Bug# 3421756                                           --
2878    -- Replacing 1 quote with 2 quotes to be used in Dynamic SQL         --
2879    -- None of the messages have ampersands or other suspicious chars    --
2880    -- that could cause harm in the Dynamic SQL run below.               --
2881    -----------------------------------------------------------------------
2882    l_item_catalog_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2883 
2884    FND_MESSAGE.SET_NAME('EGO','EGO_PRIMARYUOM_INVALID');
2885    l_uom_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2886 
2887    FND_MESSAGE.SET_NAME('EGO','EGO_LIFECYCLE_INVALID');
2888    l_lifecycle_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2889 
2890    FND_MESSAGE.SET_NAME('EGO','EGO_LIFECYCLE_PHASE_INVALID');
2891    l_lifecycle_ph_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2892 
2893    FND_MESSAGE.SET_NAME('EGO','EGO_USERITEMTYPE_INVALID');
2894    l_useritemtype_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2895 
2896    FND_MESSAGE.SET_NAME('EGO','EGO_BOMITEMTYPE_INVALID');
2897    l_bomitemtype_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2898 
2899    FND_MESSAGE.SET_NAME('EGO','EGO_ENGITEMFLAG_INVALID');
2900    l_engitemflag_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2901 
2902    -- Bug: 3778006
2903    FND_MESSAGE.SET_NAME('EGO','EGO_ITEMDESC_IS_FG');
2904    l_description_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2905 
2906    --Bug: 3969593 Adding new 11.5.10 Primary Attrs: Begin
2907    FND_MESSAGE.SET_NAME('EGO','EGO_CONVERSIONS_INVALID');
2908    l_conversions_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2909 
2910    FND_MESSAGE.SET_NAME('EGO','EGO_DEFAULTING_INVALID');
2911    l_secondary_def_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2912 
2913    FND_MESSAGE.SET_NAME('EGO','EGO_PRICING_INVALID');
2914    l_ont_pricing_qty_src_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2915 
2916    FND_MESSAGE.SET_NAME('EGO','EGO_SECONDARYUOM_INVALID');
2917    l_secondary_uom_code_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2918 
2919    FND_MESSAGE.SET_NAME('EGO','EGO_TRACKING_INVALID');
2920    l_tracking_qty_ind_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2921    --Bug: 3969593 End
2922 
2923    FND_MESSAGE.SET_NAME('EGO','EGO_STATUS_INVALID');--MLS STatus
2924    l_inv_item_status_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2925    -- R12C changes for Pack Hierarchy
2926    FND_MESSAGE.SET_NAME('EGO','EGO_TRADEITEMDESC_INVALID');
2927    l_tradeitemdesc_err_msg := REPLACE(FND_MESSAGE.GET,'''','''''');
2928 
2929    -----------------------------------------------------------------------
2930    --Insert the Pre-processed error messages.
2931    -----------------------------------------------------------------------
2932    l_dyn_sql := '';
2933    l_dyn_sql := l_dyn_sql || 'INSERT INTO MTL_INTERFACE_ERRORS ';
2934    l_dyn_sql := l_dyn_sql || '( ';
2935    l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID   ';
2936    l_dyn_sql := l_dyn_sql || ', UNIQUE_ID    ';
2937    l_dyn_sql := l_dyn_sql || ', LAST_UPDATE_DATE   ';
2938    l_dyn_sql := l_dyn_sql || ', LAST_UPDATED_BY  ';
2939    l_dyn_sql := l_dyn_sql || ', CREATION_DATE    ';
2940    l_dyn_sql := l_dyn_sql || ', CREATED_BY     ';
2941    l_dyn_sql := l_dyn_sql || ', LAST_UPDATE_LOGIN  ';
2942    l_dyn_sql := l_dyn_sql || ', TABLE_NAME     ';
2943    l_dyn_sql := l_dyn_sql || ', MESSAGE_NAME     ';
2944    l_dyn_sql := l_dyn_sql || ', COLUMN_NAME    ';
2945    l_dyn_sql := l_dyn_sql || ', REQUEST_ID     ';
2946    l_dyn_sql := l_dyn_sql || ', PROGRAM_APPLICATION_ID  ';
2947    l_dyn_sql := l_dyn_sql || ', PROGRAM_ID     ';
2948    l_dyn_sql := l_dyn_sql || ', PROGRAM_UPDATE_DATE  ';
2949    l_dyn_sql := l_dyn_sql || ', ERROR_MESSAGE    ';
2950    l_dyn_sql := l_dyn_sql || ', TRANSACTION_ID   ';
2951    l_dyn_sql := l_dyn_sql || ', ENTITY_IDENTIFIER  ';
2952    l_dyn_sql := l_dyn_sql || ', BO_IDENTIFIER    ';
2953    l_dyn_sql := l_dyn_sql || ') ';
2954    l_dyn_sql := l_dyn_sql || 'SELECT ';
2955    l_dyn_sql := l_dyn_sql || ' -1 ';
2956    l_dyn_sql := l_dyn_sql || ', MSII.TRANSACTION_ID ';
2957    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
2958    l_dyn_sql := l_dyn_sql || ', '||G_USER_ID ;
2959    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
2960    l_dyn_sql := l_dyn_sql || ', '||G_USER_ID;
2961    l_dyn_sql := l_dyn_sql || ', '||G_LOGIN_ID;
2962    l_dyn_sql := l_dyn_sql || ', ''MTL_SYSTEM_ITEMS_INTERFACE'' ';
2963    l_dyn_sql := l_dyn_sql || ', DECODE(MSII.PROCESS_FLAG, ';
2964    l_dyn_sql := l_dyn_sql ||    G_ITEM_CATALOG_NAME_ERR_STS||', ''EGO_ITEMCATALOG_INVALID'', ';
2965    l_dyn_sql := l_dyn_sql ||    G_PRIMARY_UOM_ERR_STS||', ''EGO_PRIMARYUOM_INVALID'', ';
2966    l_dyn_sql := l_dyn_sql ||    G_LIFECYCLE_ERR_STS||', ''EGO_LIFECYCLE_INVALID'', ';
2967    l_dyn_sql := l_dyn_sql ||    G_LIFECYCLE_PHASE_ERR_STS||', ''EGO_LIFECYCLE_PHASE_INVALID'', ';
2968    l_dyn_sql := l_dyn_sql ||    G_USER_ITEM_TYPE_ERR_STS||', ''EGO_USERITEMTYPE_INVALID'', ';
2969    l_dyn_sql := l_dyn_sql ||    G_BOM_ITEM_TYPE_ERR_STS||', ''EGO_BOMITEMTYPE_INVALID'', ';
2970    l_dyn_sql := l_dyn_sql ||    G_TRADE_ITEM_DESC_ERR_STS||', ''EGO_TRADEITEMDESC_INVALID'', ';
2971    l_dyn_sql := l_dyn_sql ||    G_ENG_ITEM_FLAG_ERR_STS||', ''EGO_ENGITEMFLAG_INVALID'', ';
2972    l_dyn_sql := l_dyn_sql ||    G_DESCRIPTION_ERR_STS||', ''EGO_ITEMDESC_IS_FG'', '; -- Bug: 3778006
2973    l_dyn_sql := l_dyn_sql ||    G_CONVERSIONS_ERR_STS||',''EGO_CONVERSIONS_INVALID'', '; --Bug: 3969593 Begin
2974    l_dyn_sql := l_dyn_sql ||    G_SECONDARY_DEF_IND_ERR_STS||',''EGO_DEFAULTING_INVALID'', ';
2975    l_dyn_sql := l_dyn_sql ||    G_ONT_PRICING_QTY_SRC_ERR_STS||',''EGO_PRICING_INVALID'', ';
2976    l_dyn_sql := l_dyn_sql ||    G_SECONDARY_UOM_CODE_ERR_STS||',''EGO_SECONDARYUOM_INVALID'', ';
2977    l_dyn_sql := l_dyn_sql ||    G_TRACKING_QTY_IND_ERR_STS||',''EGO_TRACKING_INVALID'', '; --Bug: 3969593 End
2978    l_dyn_sql := l_dyn_sql ||    G_INV_ITEM_STATUS_ERR_STS||',''EGO_STATUS_INVALID'' ';--MLS Status
2979    l_dyn_sql := l_dyn_sql || '    ) ';
2980    l_dyn_sql := l_dyn_sql || ', NULL ';
2981    l_dyn_sql := l_dyn_sql || ', '||G_REQUEST_ID ;
2982    l_dyn_sql := l_dyn_sql || ', '||G_PROG_APPID ;
2983    l_dyn_sql := l_dyn_sql || ', '||G_PROG_ID ;
2984    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
2985    l_dyn_sql := l_dyn_sql || ', DECODE(MSII.PROCESS_FLAG,  ';
2986    l_dyn_sql := l_dyn_sql ||      G_ITEM_CATALOG_NAME_ERR_STS ||', EBI.'||G_ITEM_CATALOG_NAME_EBI_COL || ' || '' : '||l_item_catalog_err_msg||''', ';
2987    l_dyn_sql := l_dyn_sql ||      G_PRIMARY_UOM_ERR_STS||', EBI.'||G_PRIMARY_UOM_EBI_COL || ' || '' : '||l_uom_err_msg||''', ';
2988    l_dyn_sql := l_dyn_sql ||      G_LIFECYCLE_ERR_STS||',  EBI.'||G_LIFECYCLE_EBI_COL || ' || '' : '||l_lifecycle_err_msg||''', ';
2989    l_dyn_sql := l_dyn_sql ||      G_LIFECYCLE_PHASE_ERR_STS||',  EBI.'||G_LIFECYCLE_PHASE_EBI_COL || ' || '' : '||l_lifecycle_ph_err_msg||''', ';
2990    l_dyn_sql := l_dyn_sql ||      G_USER_ITEM_TYPE_ERR_STS||',  EBI.'||G_USER_ITEM_TYPE_EBI_COL || ' || '' : '||l_useritemtype_err_msg||''', ';
2991    l_dyn_sql := l_dyn_sql ||      G_BOM_ITEM_TYPE_ERR_STS||',  EBI.'||G_BOM_ITEM_TYPE_EBI_COL || ' || '' : '||l_bomitemtype_err_msg||''', ';
2992    IF l_trade_item_descriptor_col IS NULL THEN
2993      l_dyn_sql := l_dyn_sql ||    G_TRADE_ITEM_DESC_ERR_STS||',  '''||l_tradeitemdesc_err_msg||''' , ';
2994    ELSE
2995      l_dyn_sql := l_dyn_sql ||    G_TRADE_ITEM_DESC_ERR_STS||',  EBI.'||l_trade_item_descriptor_col || ' || '' : '||l_tradeitemdesc_err_msg||''' , ';
2996    END IF;
2997    l_dyn_sql := l_dyn_sql ||      G_ENG_ITEM_FLAG_ERR_STS||',  EBI.'||G_ENG_ITEM_FLAG_EBI_COL || ' || '' : '||l_engitemflag_err_msg||''', ';
2998    l_dyn_sql := l_dyn_sql ||      G_DESCRIPTION_ERR_STS||',  EBI.'||G_DESCRIPTION_EBI_COL || ' || '' : '||l_description_err_msg||''','; -- Bug: 3778006
2999    l_dyn_sql := l_dyn_sql ||      G_CONVERSIONS_ERR_STS||',  EBI.'||G_CONVERSIONS_EBI_COL || ' || '' : '||l_conversions_err_msg||''','; --Bug: 3969593 Begin
3000    l_dyn_sql := l_dyn_sql ||      G_SECONDARY_DEF_IND_ERR_STS||',  EBI.'||G_SECONDARY_DEF_IND_EBI_COL || ' || '' : '||l_secondary_def_err_msg||''',';
3001    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||''',';
3002    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||''',';
3003    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
3004    --Rathna MLS Status
3005    IF l_inventory_item_status_col IS NULL THEN
3006      l_dyn_sql := l_dyn_sql ||    G_INV_ITEM_STATUS_ERR_STS||',  '''||l_inv_item_status_err_msg||'''';
3007    ELSE
3008      l_dyn_sql := l_dyn_sql ||    G_INV_ITEM_STATUS_ERR_STS||',  EBI.'||l_inventory_item_status_col || ' || '' : '||l_inv_item_status_err_msg||'''';
3009    END IF;
3010    l_dyn_sql := l_dyn_sql || '        )     ';
3011    l_dyn_sql := l_dyn_sql || ', MSII.TRANSACTION_ID ';
3012    l_dyn_sql := l_dyn_sql || ', NULL ';
3013    l_dyn_sql := l_dyn_sql || ', NULL ';
3014    l_dyn_sql := l_dyn_sql || 'FROM  MTL_SYSTEM_ITEMS_INTERFACE MSII, EGO_BULKLOAD_INTF EBI ';
3015    l_dyn_sql := l_dyn_sql || 'WHERE MSII.TRANSACTION_ID = EBI.TRANSACTION_ID ';
3016    l_dyn_sql := l_dyn_sql || ' AND  MSII.SET_PROCESS_ID = '||p_set_process_id;
3017    l_dyn_sql := l_dyn_sql || ' AND  MSII.PROCESS_FLAG IN  ';
3018    l_dyn_sql := l_dyn_sql ||  ' ( ';
3019    l_dyn_sql := l_dyn_sql ||    G_ITEM_CATALOG_NAME_ERR_STS||', ';
3020    l_dyn_sql := l_dyn_sql ||    G_PRIMARY_UOM_ERR_STS||', ';
3021    l_dyn_sql := l_dyn_sql ||    G_LIFECYCLE_ERR_STS||', ';
3022    l_dyn_sql := l_dyn_sql ||    G_LIFECYCLE_PHASE_ERR_STS||', ';
3023    l_dyn_sql := l_dyn_sql ||    G_USER_ITEM_TYPE_ERR_STS||', ';
3024    l_dyn_sql := l_dyn_sql ||    G_BOM_ITEM_TYPE_ERR_STS||', ';
3025    l_dyn_sql := l_dyn_sql ||    G_TRADE_ITEM_DESC_ERR_STS||', ';
3026    l_dyn_sql := l_dyn_sql ||    G_ENG_ITEM_FLAG_ERR_STS||', ';
3027    l_dyn_sql := l_dyn_sql ||    G_DESCRIPTION_ERR_STS||', ';
3028    l_dyn_sql := l_dyn_sql ||    G_CONVERSIONS_ERR_STS||', '; --Bug: 3969593 Begin
3029    l_dyn_sql := l_dyn_sql ||    G_SECONDARY_DEF_IND_ERR_STS||', ';
3030    l_dyn_sql := l_dyn_sql ||    G_ONT_PRICING_QTY_SRC_ERR_STS||', ';
3031    l_dyn_sql := l_dyn_sql ||    G_SECONDARY_UOM_CODE_ERR_STS||', ';
3032    l_dyn_sql := l_dyn_sql ||    G_TRACKING_QTY_IND_ERR_STS||', '; --Bug: 3969593 End
3033    l_dyn_sql := l_dyn_sql ||    G_INV_ITEM_STATUS_ERR_STS; --need to store error status as well
3034    l_dyn_sql := l_dyn_sql ||  ' ) ';
3035    l_dyn_sql := l_dyn_sql || ' AND  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID ';
3036    l_dyn_sql := l_dyn_sql || ' AND  EBI.PROCESS_STATUS = 1 ';
3037 
3038    Write_Debug('l_dyn_sql');
3039    --There is a limit of 1024 BYTES through Write_Debug (it uses
3040    --UTL_FILE)
3041      -------------------------------------------------------------------------
3042      --Fix for Bug# 3624649. (JCGEORGE, PPEDDAMA)
3043      --Since Typically NLS_LENGTH_SEMANTICS parameter value is BYTE
3044      -- (in NLS_DATABASE_PARAMETERS table), use SUBSTRB instead of SUBSTR
3045      -- when fetching possibly MLS strings.
3046      -------------------------------------------------------------------------
3047    Write_Debug(SUBSTRB(l_dyn_sql, 1, 1000));
3048    Write_Debug(SUBSTRB(l_dyn_sql, 1001, 2000));
3049    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3050 
3051    Write_Debug('MIERR: Inserted Pre-processed error messages in MTL_INTERFACE_ERRORS');
3052 
3053    -----------------------------------------------------------------------
3054    --Now that the error messages are inserted, update MSII lines to
3055    --Process status ERROR.
3056    -----------------------------------------------------------------------
3057 
3058    UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII
3059     SET   MSII.PROCESS_FLAG = G_INTF_STATUS_ERROR
3060    WHERE  MSII.SET_PROCESS_ID = p_set_process_id
3061      AND  MSII.PROCESS_FLAG IN
3062     (
3063        G_ITEM_CATALOG_NAME_ERR_STS
3064      , G_PRIMARY_UOM_ERR_STS
3065      , G_LIFECYCLE_ERR_STS
3066      , G_LIFECYCLE_PHASE_ERR_STS
3067      , G_USER_ITEM_TYPE_ERR_STS
3068      , G_BOM_ITEM_TYPE_ERR_STS
3069      , G_ENG_ITEM_FLAG_ERR_STS
3070      , G_DESCRIPTION_ERR_STS -- Bug: 3804572
3071      , G_CONVERSIONS_ERR_STS --Bug: 3969593 Begin
3072      , G_SECONDARY_DEF_IND_ERR_STS
3073      , G_ONT_PRICING_QTY_SRC_ERR_STS
3074      , G_SECONDARY_UOM_CODE_ERR_STS
3075      , G_TRACKING_QTY_IND_ERR_STS --Bug: 3969593 End
3076      , G_INV_ITEM_STATUS_ERR_STS--Rathna MLS Status
3077      )
3078      AND  MSII.TRANSACTION_ID IN
3079      (
3080       SELECT TRANSACTION_ID
3081       FROM   EGO_BULKLOAD_INTF
3082       WHERE  RESULTFMT_USAGE_ID = p_resultfmt_usage_id
3083       );
3084 
3085    Write_Debug('MSII: Updated all the line statuses to Error for Pre-processing validation errors');
3086 
3087 --   DELETE MTL_SYSTEM_ITEMS_INTERFACE MSII
3088 --     WHERE
3089 --     (
3090 --       (
3091 --        ITEM_NUMBER                 IS NOT NULL AND
3092 --        ORGANIZATION_CODE           IS NOT NULL
3093 --       )
3094 --       OR
3095 --       (
3096 --        SOURCE_SYSTEM_REFERENCE           IS NOT NULL AND --for non-PDH Batch
3097 --        SOURCE_SYSTEM_ID           IS NOT NULL       --for non-PDH Batch
3098 --       )
3099        --In case of CREATE : Item Catalog Group ID will be NOT NULL in MSII
3100        --In case of SYNC/UPDATE, where Item ID exists, Item Catalog Group ID
3101        --will be NULL. Hence commenting out, this NOT NULL condn.
3102        --ITEM_CATALOG_GROUP_ID IS NOT NULL
3103 --       OR
3104 --       (
3105 --        DESCRIPTION IS NULL AND
3106 --        SOURCE_SYSTEM_REFERENCE IS NULL AND
3107 --        SOURCE_SYSTEM_REFERENCE_DESC IS NULL
3108 --       )
3109 --      )
3110 --     AND
3111 --      (
3112 --         DESCRIPTION               IS NULL AND
3113 --         LONG_DESCRIPTION          IS NULL AND
3114 --         PRIMARY_UOM_CODE              IS NULL AND
3115 --         LIFECYCLE_ID                  IS NULL AND
3116 --         CURRENT_PHASE_ID              IS NULL AND
3117 --         INVENTORY_ITEM_STATUS_CODE    IS NULL AND
3118 --         ITEM_TYPE                     IS NULL AND
3119 --         BOM_ITEM_TYPE                 IS NULL AND
3120 --         ENG_ITEM_FLAG                 IS NULL AND
3121          --Joseph : Bug Fix : 3621826
3122 --         TEMPLATE_ID                   IS NULL AND  --**NEW
3123 --         TEMPLATE_NAME                 IS NULL AND  --**NEW
3124 --         SOURCE_SYSTEM_REFERENCE_DESC  IS NULL AND  -- Bug: 5207217
3125 --         GLOBAL_TRADE_ITEM_NUMBER      IS NULL      -- Bug: 5207217
3126 --        )
3127 --      AND SET_PROCESS_ID = p_set_process_id
3128        ------------------------------------------------------------------------------------------------
3129        -- Fix for 11.5.10: Including PROCESS_FLAG status during this DELETE operation.
3130        --
3131        -- When ERROR happens during PRIMARY_UOM_CODE processing (NOTE: This is the first
3132        -- significant Value-to-ID conversion) then MSII.PROCESS_FLAG is set to something
3133        -- other than 1. Because of this, the subsequent transfer of the Data from EBI to MSII
3134        -- doesnot happen (as all SQLs check for EBI, MSII Process Status to be 1 for transfer).
3135        -- So, this DELETE will go through successfully, as all the columns are NULL (other than
3136        -- ITEM_NUMBER, ORGANIZATION_CODE.)
3137        -- Then EBI stays in PROCESS_STATUS = 1, which is later converted to 7 in Item_intf_completion.
3138        --
3139        -- Because of this User-Defined attrs for those rows are ERRONEOUSLY picked and processed.
3140        ------------------------------------------------------------------------------------------------
3141 --      AND PROCESS_FLAG = G_PROCESS_STATUS  --Bug 3763665
3142 --      AND (EXISTS(   -- there exists a row where item is being Created or updated in the same request
3143 --                  SELECT 'X'
3144 --                  FROM MTL_SYSTEM_ITEMS_INTERFACE MSI
3145 --                  WHERE MSI.DESCRIPTION IS NOT NULL
3146 --                  AND NVL(MSI.ITEM_NUMBER,FND_API.G_MISS_CHAR) = NVL(MSII.ITEM_NUMBER,FND_API.G_MISS_CHAR)
3147 --                  AND SET_PROCESS_ID = p_set_process_id
3148 --                  AND PROCESS_FLAG = G_PROCESS_STATUS
3149 --                  )
3150 --           OR EXISTS(
3151 --                  SELECT 'X'
3152 --                  FROM MTL_SYSTEM_ITEMS_B MSI
3153 --                  WHERE  MSII.INVENTORY_ITEM_ID  = MSI.INVENTORY_ITEM_ID
3154 --                  AND MSII.ORGANIZATION_ID = MSI.ORGANIZATION_ID
3155 --                  )-- End Bug 3763665
3156 --            );
3157 
3158 --   Write_Debug('Preprocess_Item_Interface : NEW Deleted redundant / unnecessary rows from MSII');
3159 
3160    -- Bug: 5519768
3161    -- ENG_ITEM_FLAG will be defaulted from IOI, so commented the below code
3162 --   IF G_PDH_BATCH THEN
3163 --     -----------------------------------------------------------------------
3164 --     -- Set the ENG_ITEM_FLAG to Y for all the New Items TO-BE Created.
3165 --     -- So, all new Items (if ENG_ITEM_FLAG is unspecified) are created as
3166 --     -- Engineering Items.
3167 --     -----------------------------------------------------------------------
3168 --
3169 --      UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII
3170 --        SET   MSII.ENG_ITEM_FLAG = 'Y'
3171 --        WHERE MSII.SET_PROCESS_ID = p_set_process_id
3172 --         AND  MSII.INVENTORY_ITEM_ID IS NULL
3173 --         AND  MSII.TRANSACTION_TYPE IN ('SYNC', 'CREATE')
3174 --         AND  MSII.PROCESS_FLAG = G_PROCESS_STATUS
3175 --         AND  MSII.ENG_ITEM_FLAG IS NULL
3176 --         AND  MSII.ORGANIZATION_ID  = (SELECT ORGANIZATION_ID
3177 --                                       FROM MTL_PARAMETERS MP
3178 --                                       WHERE ORGANIZATION_ID = MSII.ORGANIZATION_ID
3179 --                                       AND ORGANIZATION_ID = MASTER_ORGANIZATION_ID
3180 --                                      );
3181 --Bug 4721682 : not to set the ENG_ITEM_FLAG if the ORGANIZATION IS NOT MASTER ORG
3182 --
3183 --     Write_Debug('Preprocess_Item_Interface : Set Eng Item Flag = Y in case of NULL for New to-be created items.');
3184 --   END IF;
3185 
3186 END preprocess_item_interface;
3187 
3188 
3189  ----------------------------------------------------------
3190  --  Setup Item Interface Lines                          --
3191  ----------------------------------------------------------
3192 PROCEDURE Setup_item_interface
3193                (
3194                  p_resultfmt_usage_id    IN         NUMBER,
3195                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
3196                  p_set_process_id        IN         NUMBER,
3197                  x_set_process_id        OUT NOCOPY NUMBER,
3198                  x_errbuff               OUT NOCOPY VARCHAR2,
3199                  x_retcode               OUT NOCOPY VARCHAR2
3200                 ) IS
3201 
3202     -- Start OF comments
3203     -- API name  : Setup MSII Item Interface Lines for processing
3204     -- TYPE      : Private
3205     -- Pre-reqs  : None
3206     -- FUNCTION  : Populate and Prepare Item interfance lines.
3207     --             Eliminates any redundancy / errors in MSII
3208 
3209   l_set_process_id   NUMBER(15);
3210 
3211 BEGIN
3212 
3213    ----------------------------------------------
3214    --  Populates rows in MSII
3215    ----------------------------------------------
3216    Developer_Debug('calling load_item_interface');
3217    load_item_interface(
3218         p_resultfmt_usage_id  => p_resultfmt_usage_id
3219        ,p_set_process_id      => p_set_process_id
3220        ,x_set_process_id      => l_set_process_id
3221        ,p_caller_identifier   => p_caller_identifier
3222        ,x_errbuff             => x_errbuff
3223        ,x_retcode             => x_retcode
3224             );
3225    Developer_Debug('returning with retcode'||x_retcode);
3226 
3227    -----------------------------------------------------
3228    -- Deletes redundant / unnecessary rows from MSII.
3229    -----------------------------------------------------
3230    preprocess_item_interface(
3231         p_resultfmt_usage_id  => p_resultfmt_usage_id
3232        ,p_set_process_id      => l_set_process_id
3233        ,p_caller_identifier   => p_caller_identifier
3234        ,x_errbuff             => x_errbuff
3235        ,x_retcode             => x_retcode
3236             );
3237 
3238    x_set_process_id := l_set_process_id;
3239    Write_Debug('Setup_Item_Interface : Set Process Id => '||x_set_process_id);
3240 
3241  EXCEPTION
3242    WHEN OTHERS THEN
3243       x_retcode := G_STATUS_ERROR;
3244       x_errbuff := SUBSTRB(SQLERRM, 1,240);
3245       Write_Debug('Setup_Item_Interface : EXCEPTION HAPPENED => '||x_errbuff);
3246       RAISE;
3247 
3248 END setup_item_interface;
3249 
3250 
3251  -------------------------------------------------------------------
3252  --  Change Item Interface Lines process statuses as completed.   --
3253  --  Statuses represent: Warning, Error, Success etc.,            --
3254  -------------------------------------------------------------------
3255 PROCEDURE Item_intf_completion
3256   (
3257     p_resultfmt_usage_id     IN    NUMBER
3258   , x_errbuff                OUT NOCOPY  VARCHAR2
3259   , x_retcode                OUT NOCOPY  VARCHAR2
3260     ) IS
3261 
3262   -----------------------------------------------
3263   -- Long Dynamic SQL String
3264   -----------------------------------------------
3265   l_dyn_sql                VARCHAR2(10000);
3266 
3267 BEGIN
3268 
3269    -----------------------------------------------------------------
3270    -- Update EBI, with the process status of rows in MSII after
3271    -- the completion of IOI processing.
3272    -----------------------------------------------------------------
3273    UPDATE EGO_BULKLOAD_INTF EBI
3274      SET  EBI.PROCESS_STATUS =
3275      (
3276       SELECT MSII.PROCESS_FLAG
3277       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3278       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3279       )
3280      WHERE EXISTS
3281      (
3282       SELECT 'X'
3283       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3284       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3285       )
3286      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
3287 
3288    ----------------------------------------------------------------------------
3289    --Update all the lines in EGO_BULKLOAD_INTF as failure, for which
3290    --The Inventory Item IDs were not available.
3291    --1. For Transaction Type : CREATE, Item ID should be populated
3292    --   at the end of Processing
3293    --2. For Transaction Type : SYNC / UPDATE, Item ID should be
3294    --   retrieved during processing.
3295    ----------------------------------------------------------------------------
3296 -- R12: this is not required
3297 --   UPDATE EGO_BULKLOAD_INTF EBI
3298 --     SET  EBI.PROCESS_STATUS = G_INTF_STATUS_ERROR
3299 --     WHERE EXISTS
3300 --     (
3301 --      SELECT 'X'
3302 --      FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3303 --      WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3304 --       AND   MSII.PROCESS_FLAG   = G_INTF_STATUS_SUCCESS
3305 --       AND   MSII.INVENTORY_ITEM_ID IS NULL
3306 --      )
3307 --     AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
3308 
3309    ----------------------------------------------------------------------------
3310    -- Update all the lines in EGO_BULKLOAD_INTF as SUCCESS
3311    -- for these rows were used to populate Multi-Row
3312    -- Appropriate errors will be displayed by the User-Defined Attrs Import
3313    -- processing later.
3314    ----------------------------------------------------------------------------
3315    UPDATE EGO_BULKLOAD_INTF EBI
3316      SET  EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS
3317      WHERE EBI.PROCESS_STATUS = G_INTF_STATUS_TOBE_PROCESS
3318      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
3319 
3320    ----------------------------------------------------------------------------
3321    -- Update the Item IDs (Doesnt matter Create or Update, because
3322    -- Item IDs will be populated either way in MSII) in
3323    -- Generic Bulkload Intf table (EGO_BULKLOAD_INTF)
3324    -- These Item IDs are required for Item User-Defined Attrs bulkload
3325    ----------------------------------------------------------------------------
3326    UPDATE EGO_BULKLOAD_INTF EBI
3327      SET  EBI.INSTANCE_PK1_VALUE =
3328      (
3329       SELECT MSII.INVENTORY_ITEM_ID
3330       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3331       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3332       )
3333      WHERE EXISTS
3334      (
3335       SELECT 'X'
3336       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
3337       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
3338       )
3339      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
3340      AND EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS;
3341 
3342    Write_Debug('EBI: Updated the Process_Status to Indicate Succssful/Unsucessful completion.');
3343 
3344    x_retcode := G_STATUS_SUCCESS;
3345 
3346  EXCEPTION
3347    WHEN OTHERS THEN
3348       x_retcode := G_STATUS_ERROR;
3349       x_errbuff := SUBSTRB(SQLERRM, 1,240);
3350       Write_Debug('Item_Intf_Completion : EXCEPTION HAPPENED => '||x_errbuff);
3351       RAISE;
3352 
3353 END Item_Intf_Completion;
3354 
3355  ----------------------------------------------------------
3356  -- Populate Item Revision Interface Lines               --
3357  ----------------------------------------------------------
3358 
3359 PROCEDURE load_item_revs_interface
3360                (
3361                  p_resultfmt_usage_id    IN         NUMBER,
3362                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
3363                  p_data_level            IN         VARCHAR2,
3364                  p_set_process_id        IN         NUMBER,
3365                  x_set_process_id        OUT NOCOPY NUMBER,
3366                  x_errbuff               OUT NOCOPY VARCHAR2,
3367                  x_retcode               OUT NOCOPY VARCHAR2
3368                 ) IS
3369 
3370     -- Start OF comments
3371     -- API name  : Populate MTL_ITEM_REVISIONS_INTERFACE table
3372     -- TYPE      : Private
3373     -- Pre-reqs  : None
3374     -- FUNCTION  : Populate and Load Item Revisions interfance lines.
3375     --             Loads Item Revision Attr Values
3376     --             Errors are populated in MTL_INTERFACE_ERRORS
3377        --
3378 
3379   ------------------------------------------------------------------------------------------
3380   -- To get the Item Revision Base attr columns in the Result Format.
3381   -- NOTE: Only one of the SELECTs below will be active at a time, based on the Data Level.
3382   ------------------------------------------------------------------------------------------
3383   CURSOR c_item_rev_attr_intf_cols (c_resultfmt_usage_id  IN  NUMBER) IS
3384     --Item Revision Data Level
3385     SELECT attribute_code, intf_column_name
3386     FROM   ego_results_fmt_usages
3387     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
3388      AND   attribute_code NOT LIKE '%$$%'
3389      ---------------------------------------------------------------------------
3390      -- Added NOT LIKE 'GTIN_%' to filter out Dummy Attrs for Attr Group: "GTIN"
3391      ---------------------------------------------------------------------------
3392      AND   attribute_code NOT LIKE 'GTIN_%'
3393      AND   p_data_level = G_ITEM_REV_DATA_LEVEL
3394    UNION
3395     -------------------
3396     --Item Data Level
3397     -------------------
3398     SELECT attribute_code, intf_column_name
3399     FROM   ego_results_fmt_usages
3400     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
3401      AND   attribute_code NOT LIKE '%$$%'
3402      ---------------------------------------------------------------------------
3403      -- Added NOT LIKE 'GTIN_%' to filter out Dummy Attrs for Attr Group: "GTIN"
3404      ---------------------------------------------------------------------------
3405      AND   attribute_code NOT LIKE 'GTIN_%'
3406      AND   p_data_level = G_ITEM_DATA_LEVEL
3407      AND (
3408      attribute_code IN -- Segregating Item Revision Base Attributes using this clause
3409       (
3410         select LOOKUP_CODE CODE
3411         from   FND_LOOKUP_VALUES
3412         where  LOOKUP_TYPE = 'EGO_ITEM_REV_HDR_ATTR_GRP'
3413         AND    LANGUAGE = USERENV('LANG')
3414         AND    ENABLED_FLAG = 'Y'
3415         and LOOKUP_CODE not in ('REVISION_CREATION_DATE', 'REVISION_CREATED_BY')
3416      )
3417      OR
3418      attribute_code = G_REV_EFF_DATE_ATTR_CODE
3419      -- Bug 6186037
3420      --accomodate for revision effective date which doest exist in EGO_ITEM_REV_HDR_ATTR_GRP and cannot be included
3421 
3422      );
3423 
3424   --------------------------------------------------------------------------
3425   -- To check if the given Set Process ID already exists in MSII.
3426   --------------------------------------------------------------------------
3427   CURSOR c_msii_set_id_exists(c_set_process_id IN NUMBER) IS
3428     SELECT 'x'
3429     FROM mtl_system_items_interface
3430     WHERE set_process_id = c_set_process_id;
3431 
3432   ---------------------------------------------------------------------
3433   -- Type Declarations
3434   ---------------------------------------------------------------------
3435   TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(256)
3436    INDEX BY BINARY_INTEGER;
3437 
3438                -------------------------
3439                --   local variables   --
3440                -------------------------
3441   l_prod_col_name_tbl               VARCHAR_TBL_TYPE;
3442   l_intf_col_name_tbl               VARCHAR_TBL_TYPE;
3443 
3444   l_prod_col_name       VARCHAR2(256);
3445   l_intf_col_name       VARCHAR2(256);
3446 
3447   ---------------------------------------------------------------------
3448   -- Assuming that the column name will not be more than 30 chars.
3449   ---------------------------------------------------------------------
3450   l_item_number_col        VARCHAR2(30);
3451   l_org_code_col           VARCHAR2(30);
3452   l_rev_code_col           VARCHAR2(30);
3453   l_lifecycle_col_val        VARCHAR2(50);
3454   l_lifecycle_phase_col_val  VARCHAR2(50);
3455   l_inventory_item_id      MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID%TYPE;
3456   l_item_catalog_name_col   VARCHAR2(50);
3457 
3458   l_msii_set_process_id    NUMBER;
3459   i                        NUMBER;
3460   l_cursor_select     INTEGER;
3461   l_cursor_execute    INTEGER;
3462 
3463   l_item_number_table   DBMS_SQL.VARCHAR2_TABLE;
3464   l_org_id_table        DBMS_SQL.NUMBER_TABLE;
3465   l_temp                  NUMBER(10) := 1;
3466   l_count               NUMBER := 0;
3467   l_exists              VARCHAR2(2);
3468 
3469   l_trans_id_table      DBMS_SQL.NUMBER_TABLE;
3470 
3471   --------------------------------------------
3472   -- Long Dynamic SQL String
3473   --------------------------------------------
3474   l_dyn_sql                VARCHAR2(10000);
3475 
3476 BEGIN
3477    Write_Debug('*Item Revisions Interface*');
3478 
3479    Write_Debug('About to populate the EBI with Trans IDs');
3480 
3481    --------------------------------------------------------------------
3482    --Populate the Transaction IDs for current Result fmt usage ID
3483    --------------------------------------------------------------------
3484    -- Bug: 3804572 - Error messages are not shown, if import format contains revision attrs.
3485    -- this was happening because the error was logged with a previous transaction id and
3486    -- here a new transaction id was updated to Bulkload interface table.
3487    IF p_data_level <> G_ITEM_DATA_LEVEL THEN
3488      UPDATE ego_bulkload_intf
3489        SET  transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL
3490      WHERE  resultfmt_usage_id = p_resultfmt_usage_id;
3491    END IF;
3492 
3493    Write_Debug('Retrieving the Display and INTF cols');
3494    i := 0;
3495    --------------------------------------------------------------------
3496    -- Saving the column names in local table for easy retrieval later.
3497    -- Also save important columns such as Item ID, Org ID etc.,
3498    --------------------------------------------------------------------
3499    FOR c_item_rev_attr_intf_rec IN c_item_rev_attr_intf_cols
3500      (
3501        p_resultfmt_usage_id
3502       )
3503    LOOP
3504 
3505      l_prod_col_name := c_item_rev_attr_intf_rec.attribute_code;
3506      l_intf_col_name := c_item_rev_attr_intf_rec.intf_column_name;
3507 
3508      Write_Debug('The caller identity is : '|| p_caller_identifier);
3509      Write_Debug('p_data_level =>: '|| p_data_level);
3510 
3511       --------------------------------------------------------------------
3512       -- If the Caller Identifer is G_ITEM, then save the column info.
3513       --------------------------------------------------------------------
3514      IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM) THEN
3515 
3516       --------------------------------------------------------------------
3517       -- Store the Item Number column name in the Generic Interface
3518       --------------------------------------------------------------------
3519       IF (l_prod_col_name = G_ITEM_NUMBER) THEN
3520         l_item_number_col := l_intf_col_name;
3521         Write_Debug('Item Number : '||l_item_number_col);
3522 
3523       --------------------------------------------------------------------
3524       -- Store the Organization Code column name in the Generic Interface
3525       --------------------------------------------------------------------
3526       ELSIF (l_prod_col_name = G_ORG_CODE) THEN
3527         l_org_code_col := l_intf_col_name;
3528         Write_Debug('Organization Code : '||l_org_code_col);
3529 
3530       --------------------------------------------------------------------
3531       --Saving the Rest of column names.
3532       --------------------------------------------------------------------
3533       ELSIF (l_prod_col_name IN (G_ITEM_CATALOG_GROUP,G_ITEM_CATALOG_GROUP1)) THEN
3534           l_item_catalog_name_col := l_intf_col_name;
3535 
3536       ELSE
3537         ---------------------------------------------------------------------
3538         -- Mapping the Revision Attribute Code to the Database Column.
3539         ---------------------------------------------------------------------
3540       IF (l_prod_col_name =  G_REV_CODE_ATTR_CODE) THEN
3541           l_prod_col_name_tbl(i) := G_REV_CODE_DB_COL;
3542           ------------------------------------------
3543           -- Saving the intf col name for Rev Code.
3544           ------------------------------------------
3545           l_rev_code_col :=  l_intf_col_name;
3546         ELSIF (l_prod_col_name =  G_REV_LABEL_ATTR_CODE) THEN
3547           l_prod_col_name_tbl(i) := G_REV_LABEL_DB_COL;
3548         ELSIF (l_prod_col_name =  G_REV_DESCRIPTION_ATTR_CODE) THEN
3549           l_prod_col_name_tbl(i) := G_REV_DESCRIPTION_DB_COL;
3550         ELSIF (l_prod_col_name =  G_REV_REASON_ATTR_CODE) THEN
3551           l_prod_col_name_tbl(i) := G_REV_REASON_DB_COL;
3552         ELSIF (l_prod_col_name =  G_REV_LC_ID_ATTR_CODE) THEN
3553           l_prod_col_name_tbl(i) := G_REV_LC_ID_DB_COL;
3554         ELSIF (l_prod_col_name =  G_REV_LC_PHASE_ID_ATTR_CODE) THEN
3555           l_prod_col_name_tbl(i) := G_REV_LC_PHASE_ID_DB_COL;
3556         ELSIF (l_prod_col_name =  G_REV_IMPL_DATE_ATTR_CODE) THEN
3557           l_prod_col_name_tbl(i) := G_REV_IMPL_DATE_DB_COL;
3558         ELSIF (l_prod_col_name =  G_REV_EFF_DATE_ATTR_CODE OR
3559                l_prod_col_name =  G_REV_EFF_DATE_ATTR_CODE_2 ) THEN
3560           l_prod_col_name_tbl(i) := G_REV_EFF_DATE_DB_COL;
3561         ELSIF (l_prod_col_name =  G_REV_ID_ATTR_CODE) THEN
3562           NULL; --do nothing
3563         ELSE
3564           ---------------------------------------------------------
3565           -- The Attribute Code and DB Column name are the same.
3566           ---------------------------------------------------------
3567           l_prod_col_name_tbl(i) := l_prod_col_name;
3568         END IF;
3569 
3570         l_intf_col_name_tbl(i) := l_intf_col_name;
3571 
3572       END IF; --IF (l_prod_col_name = G_ITEM_NUMBER) THEN
3573 
3574     END IF; --IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM)
3575      Write_Debug('^^l_prod_col_name_tbl('||i||') : '||l_prod_col_name_tbl(i));
3576      Write_Debug('^^l_intf_col_name_tbl('||i||') : '||l_intf_col_name_tbl(i));
3577      i := i+1;
3578 
3579    END LOOP; --FOR c_item_rev_attr_intf_rec
3580 
3581    ---------------------------------------------------------------------
3582    -- All the following need not be executed if Revision Update       --
3583    -- is done through Item Search Results.                            --
3584    ---------------------------------------------------------------------
3585    IF p_data_level = G_ITEM_REV_DATA_LEVEL THEN
3586 
3587      Write_Debug('Updating EBI with Org IDs');
3588 
3589      ---------------------------------------------
3590      -- Update Instance PK2 Value with ORG ID.  --
3591      ---------------------------------------------
3592      l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF EBI ';
3593      l_dyn_sql := l_dyn_sql || ' SET INSTANCE_PK2_VALUE = ';
3594      l_dyn_sql := l_dyn_sql || '  ( ';
3595      l_dyn_sql := l_dyn_sql || '      SELECT ORGANIZATION_ID      ';
3596      l_dyn_sql := l_dyn_sql || '      FROM     MTL_PARAMETERS     ';
3597      l_dyn_sql := l_dyn_sql || '      WHERE  ORGANIZATION_CODE = EBI.'||l_org_code_col;
3598      l_dyn_sql := l_dyn_sql || '   ) ';
3599      l_dyn_sql := l_dyn_sql || 'WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3600      l_dyn_sql := l_dyn_sql || ' AND     PROCESS_STATUS = 1                                   ';
3601 
3602      Write_Debug(l_dyn_sql);
3603      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3604      Write_Debug('Selecting Org IDs, Item Numbers');
3605 
3606      ---------------------------------------------------------------------
3607      -- Update EBI with Catalog Group Name if present in the Result Format
3608      ---------------------------------------------------------------------
3609      IF l_item_catalog_name_col IS NOT NULL THEN
3610        l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
3611        l_dyn_sql := l_dyn_sql || ' SET  ';
3612        l_dyn_sql := l_dyn_sql || G_ITEM_CATALOG_NAME_EBI_COL||' = '||l_item_catalog_name_col ;
3613        l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3614        l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
3615        Write_Debug(l_dyn_sql);
3616 
3617        EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3618        Write_Debug('Updated EBI with Catalog Group Name for Item Revisions');
3619      END IF;
3620 
3621      --------------------------------------------------------------
3622      -- Fetch Organization ID, Item Number in Temp PLSQL tables.
3623      --------------------------------------------------------------
3624      l_dyn_sql :=              ' SELECT INSTANCE_PK2_VALUE, '||l_item_number_col || ', ';
3625      l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID           ';
3626      l_dyn_sql := l_dyn_sql || ' FROM  EGO_BULKLOAD_INTF ';
3627      l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3628      l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1                                   ';
3629      Write_Debug(l_dyn_sql);
3630 
3631      l_cursor_select := DBMS_SQL.OPEN_CURSOR;
3632      DBMS_SQL.PARSE(l_cursor_select, l_dyn_sql, DBMS_SQL.NATIVE);
3633      DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 1,l_org_id_table,2500, l_temp);
3634      DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 2,l_item_number_table,2500, l_temp);
3635      DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 3,l_trans_id_table,2500, l_temp);
3636      DBMS_SQL.BIND_VARIABLE(l_cursor_select,':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
3637      l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_select);
3638      Write_Debug('About to start the Loop to fetch Rows');
3639 
3640      LOOP
3641        l_count := DBMS_SQL.FETCH_ROWS(l_cursor_select);
3642        DBMS_SQL.COLUMN_VALUE(l_cursor_select, 1, l_org_id_table);
3643        DBMS_SQL.COLUMN_VALUE(l_cursor_select, 2, l_item_number_table);
3644        DBMS_SQL.COLUMN_VALUE(l_cursor_select, 3, l_trans_id_table);
3645 
3646        Write_Debug('Retrieved rows => '||To_char(l_count));
3647 
3648        -------------------------------------------------------------
3649        -- Loop to Update the Inventory Item IDs.
3650        -------------------------------------------------------------
3651        FOR i IN 1..l_org_id_table.COUNT LOOP
3652 
3653          Write_Debug('Org ID : '||To_char(l_org_id_table(i)));
3654          Write_Debug('Inv Item Num : '||l_item_number_table(i));
3655 
3656          -------------------------------------------------------------
3657          -- Invoke FND Key Flex API to fetch the Inventory Item ID.
3658          -- If Inventory Item ID found, then update in EBI.
3659          -------------------------------------------------------------
3660          IF FND_FLEX_KEYVAL.Validate_Segs
3661          (  operation         =>  'FIND_COMBINATION'
3662          ,  appl_short_name   =>  'INV'
3663          ,  key_flex_code     =>  'MSTK'
3664          ,  structure_number  =>  101
3665          ,  concat_segments   =>  l_item_number_table(i)
3666          ,  data_set          =>  l_org_id_table(i)
3667          )
3668          THEN
3669            l_inventory_item_id := FND_FLEX_KEYVAL.combination_id;
3670 
3671            Write_Debug('Inv Item ID : '||To_char(l_inventory_item_id));
3672 
3673            l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
3674            l_dyn_sql := l_dyn_sql || ' SET  INSTANCE_PK1_VALUE  = '||l_inventory_item_id;
3675            l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = '||l_org_id_table(i);
3676            l_dyn_sql := l_dyn_sql || ' AND '|| l_item_number_col|| ' = :ITEM_NUMBER';
3677            l_dyn_sql := l_dyn_sql || ' AND  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3678            l_dyn_sql := l_dyn_sql || ' AND  PROCESS_STATUS = 1 ';
3679 
3680            Write_Debug(l_dyn_sql);
3681            EXECUTE IMMEDIATE l_dyn_sql USING l_item_number_table(i), p_resultfmt_usage_id;
3682 
3683          END IF; --IF FND_FLEX_KEYVAL..
3684 
3685          Write_Debug('G_CATALOG_GROUP_ID => '||G_CATALOG_GROUP_ID);
3686          -----------------------------------------------------------------
3687          -- Setting Category ID for Item Revision Flow.
3688          -- Bug #5179741(RSOUNDAR)
3689          -----------------------------------------------------------------
3690          IF G_CATALOG_GROUP_ID IS NULL THEN
3691            IF l_item_catalog_name_col IS NOT NULL THEN
3692              l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF EBI';
3693              l_dyn_sql := l_dyn_sql || ' SET '||G_ITEM_CATALOG_EBI_COL||' = ';
3694              l_dyn_sql := l_dyn_sql || '( ';
3695              l_dyn_sql := l_dyn_sql || '    SELECT TO_CHAR(MICG.ITEM_CATALOG_GROUP_ID) ';
3696              l_dyn_sql := l_dyn_sql || '    FROM   MTL_ITEM_CATALOG_GROUPS_B_KFV MICG  ';
3697              l_dyn_sql := l_dyn_sql || '    WHERE  MICG.CONCATENATED_SEGMENTS = EBI.'||l_item_catalog_name_col;
3698              l_dyn_sql := l_dyn_sql || ') ';
3699              l_dyn_sql := l_dyn_sql || ' WHERE EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
3700              l_dyn_sql := l_dyn_sql || ' AND EBI.'||l_item_catalog_name_col||' IS NOT NULL';
3701              l_dyn_sql := l_dyn_sql || ' AND EBI.PROCESS_STATUS = 1  ';
3702              Write_Debug(l_dyn_sql);
3703              EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3704            ELSE -- l_item_catalog_name_col IS NULL
3705              -- no need to do anything here
3706              NULL;
3707            END IF; -- l_item_catalog_name_col IS NOT NULL
3708          ELSE  -- G_CATALOG_GROUP_ID IS NOT NULL
3709 
3710            l_dyn_sql := ' UPDATE EGO_BULKLOAD_INTF ';
3711            -------------------------------------------------------------
3712            --Storing Catalog Group ID and other imp data in buffer cols
3713            -------------------------------------------------------------
3714            l_dyn_sql := l_dyn_sql || ' SET  '||G_ITEM_CATALOG_EBI_COL||' = '||G_CATALOG_GROUP_ID;
3715            l_dyn_sql := l_dyn_sql || ' WHERE INSTANCE_PK2_VALUE = :ORGANIZATION_ID ';
3716            l_dyn_sql := l_dyn_sql || ' AND  TRANSACTION_ID = :TRANSACTION_ID ';
3717            l_dyn_sql := l_dyn_sql || ' AND  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3718            l_dyn_sql := l_dyn_sql || ' AND   PROCESS_STATUS = 1  ';
3719 
3720            Write_Debug(l_dyn_sql);
3721            EXECUTE IMMEDIATE l_dyn_sql USING l_org_id_table(i), l_trans_id_table(i), p_resultfmt_usage_id;
3722 
3723          END IF;--end: IF (G_CATALOG_GROUP_ID IS NULL)
3724 
3725        END LOOP; --FOR i IN 1..l_org_id_table.COUNT LOOP
3726 
3727        l_org_id_table.DELETE;
3728        l_item_number_table.DELETE;
3729 
3730        -----------------------------------------------------------------
3731        -- For the final batch of records, either it will be 0 or < 2500
3732        -----------------------------------------------------------------
3733        EXIT WHEN l_count <> 2500;
3734 
3735      END LOOP; --l_count := DBMS_SQL.FETCH_ROWS(l_cursor_select);
3736 
3737      DBMS_SQL.CLOSE_CURSOR(l_cursor_select);
3738 
3739      Write_Debug('Done with Item IDs population.');
3740 
3741      -----------------------------------------------------------------
3742      -- Determine the Set Process ID, that is unique for MSII
3743      -----------------------------------------------------------------
3744      IF p_set_process_id IS NULL THEN
3745        SELECT mtl_system_items_intf_sets_s.NEXTVAL
3746          INTO l_msii_set_process_id
3747        FROM dual;
3748      ELSE
3749        l_msii_set_process_id := p_set_process_id;
3750      END IF;
3751 
3752      ---------------------------------------------------------------------
3753      -- END: All the above need not be executed if Revision Update      --
3754      -- is done through Item Search Results.                            --
3755      ---------------------------------------------------------------------
3756 
3757    ELSE --p_data_level = G_ITEM_DATA_LEVEL
3758 
3759      Write_Debug('Item Rev Intf using the Set Process ID used by Item Interface');
3760 
3761      ----------------------------------------------------------------------------
3762      -- Using the Set Process ID used by Item Interface, as Revs are updated
3763      -- as part of Item Search Results.
3764      ----------------------------------------------------------------------------
3765      l_msii_set_process_id := G_MSII_SET_PROCESS_ID;
3766 
3767      ----------------------------------------------------------------------------
3768      -- During Item processing itself, ITEM_NUMBER and ORG_CODE are loaded
3769      -- in following columns.
3770      ----------------------------------------------------------------------------
3771      l_item_number_col := G_ITEM_NUMBER_EBI_COL;
3772      l_org_code_col := G_ORG_CODE_EBI_COL;
3773 
3774    END IF; --end: IF p_data_level = G_ITEM_REV_DATA_LEVEL
3775 
3776    Write_Debug('l_msii_set_process_id : '||To_char(l_msii_set_process_id));
3777 
3778    -----------------------------------------------------------------
3779    -- Insert rows from EBI into MSII
3780    -----------------------------------------------------------------
3781    l_dyn_sql :=              'INSERT INTO MTL_ITEM_REVISIONS_INTERFACE ';
3782    l_dyn_sql := l_dyn_sql || '( ';
3783    l_dyn_sql := l_dyn_sql || ' SET_PROCESS_ID        ,   ';
3784    l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID        ,   ';
3785    l_dyn_sql := l_dyn_sql || ' REQUEST_ID            ,   ';
3786    l_dyn_sql := l_dyn_sql || ' PROGRAM_APPLICATION_ID,   ';
3787    l_dyn_sql := l_dyn_sql || ' PROGRAM_ID            ,   ';
3788    l_dyn_sql := l_dyn_sql || ' TRANSACTION_TYPE      ,   ';
3789    l_dyn_sql := l_dyn_sql || ' INVENTORY_ITEM_ID     ,   ';
3790    l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID       ,   ';
3791    l_dyn_sql := l_dyn_sql || ' ITEM_NUMBER           ,   ';
3792    l_dyn_sql := l_dyn_sql || ' ORGANIZATION_CODE     ,   ';
3793    l_dyn_sql := l_dyn_sql || ' PROCESS_FLAG          ,   ';
3794    l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_ID      ,   ';
3795    l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE   ';
3796    l_dyn_sql := l_dyn_sql || ') ';
3797    l_dyn_sql := l_dyn_sql || 'SELECT ';
3798    l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
3799    l_dyn_sql := l_dyn_sql || ' EBI.TRANSACTION_ID       , ';
3800    l_dyn_sql := l_dyn_sql || G_REQUEST_ID||' , ';
3801    l_dyn_sql := l_dyn_sql || G_PROG_APPID||' , ';
3802    l_dyn_sql := l_dyn_sql || G_PROG_ID||' , ';
3803    l_dyn_sql := l_dyn_sql || ' UPPER(EBI.TRANSACTION_TYPE)  , ';
3804    l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
3805    l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
3806    l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
3807    l_dyn_sql := l_dyn_sql || ' EBI.'||l_org_code_col ||' , ';
3808    l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS    ||' , ';
3809    l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11) , ';
3810    l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12       ';
3811    l_dyn_sql := l_dyn_sql || 'FROM EGO_BULKLOAD_INTF EBI ';
3812    l_dyn_sql := l_dyn_sql || ' WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3813    l_dyn_sql := l_dyn_sql || ' AND   EBI.PROCESS_STATUS = 1  ';
3814 
3815    Write_Debug(l_dyn_sql);
3816    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3817    Write_Debug('Item Revs Interface: Populated the Inv Item IDs, Org IDs.');
3818 
3819    ----------------------------------------------------------------------------------
3820    --Save Item Num, Org Code in designated columns in EBI for Error Reporting later
3821    ----------------------------------------------------------------------------------
3822    l_dyn_sql :=              ' UPDATE EGO_BULKLOAD_INTF ';
3823    l_dyn_sql := l_dyn_sql || ' SET  ';
3824    -----------------------------------------------------------------------------------------
3825    -- In case of ITEM_LEVEL the following is already populated in load_item_interface_lines
3826    -- procedure.
3827    -----------------------------------------------------------------------------------------
3828    IF p_data_level = G_ITEM_REV_DATA_LEVEL THEN
3829      l_dyn_sql := l_dyn_sql || G_ITEM_NUMBER_EBI_COL||' = '||l_item_number_col||' , ';
3830      l_dyn_sql := l_dyn_sql || G_ORG_CODE_EBI_COL||' = '||l_org_code_col ||' , ';
3831    END IF;
3832 
3833    l_dyn_sql := l_dyn_sql || G_REVISION_CODE_EBI_COL||' = '||l_rev_code_col;
3834    l_dyn_sql := l_dyn_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3835    l_dyn_sql := l_dyn_sql ||   ' AND PROCESS_STATUS = 1 ';
3836 
3837    Write_Debug(l_dyn_sql);
3838    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
3839    Write_Debug('Item Revs Interface: Done saving Item Num, Org Code, Rev Code in EBI for error retrieval later.');
3840 
3841    ---------------------------------------
3842    -- Reset i back to 0, for re-use.
3843    ---------------------------------------
3844    i := 0;
3845    IF ( l_prod_col_name_tbl.count > 0) THEN
3846       FOR i IN l_prod_col_name_tbl.first .. l_prod_col_name_tbl.last LOOP
3847         Write_Debug('*l_prod_col_name_tbl(i)'||l_prod_col_name_tbl(i));
3848         Write_Debug('*l_intf_col_name_tbl(i)'||l_intf_col_name_tbl(i));
3849 
3850         IF (l_prod_col_name_tbl(i) = G_REV_REASON_DB_COL) THEN
3851 
3852           ----------------------------------------------------------------------------------
3853           --  Transfer the Revision Reason information from EBI to MIRI
3854           --  by doing Value-to-ID Conversion.
3855           ----------------------------------------------------------------------------------
3856           l_dyn_sql := '';
3857           l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
3858           l_dyn_sql := l_dyn_sql || ' SET   MIRI.'||G_REV_REASON_DB_COL||' =  ';
3859           l_dyn_sql := l_dyn_sql || '( ';
3860           l_dyn_sql := l_dyn_sql || '    SELECT IT.LOOKUP_CODE ';
3861           l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
3862           l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE = ''EGO_ITEM_REVISION_REASON'' ';
3863           l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE = Userenv(''LANG'') ';
3864           l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING = EBI.'||l_intf_col_name_tbl(i);
3865           l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3866           l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3867           ----------------------------------------------------------------------------------
3868           --  WHERE EXISTS takes care of filtering lines. Hence this join not needed.
3869           --  l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
3870           ----------------------------------------------------------------------------------
3871           l_dyn_sql := l_dyn_sql || ') ';
3872           l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
3873           l_dyn_sql := l_dyn_sql || '( ';
3874           l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
3875           l_dyn_sql := l_dyn_sql || '    FROM   FND_LOOKUP_VALUES IT, EGO_BULKLOAD_INTF EBI ';
3876           l_dyn_sql := l_dyn_sql || '    WHERE  IT.LOOKUP_TYPE = ''EGO_ITEM_REVISION_REASON'' ';
3877           l_dyn_sql := l_dyn_sql || '     AND   IT.LANGUAGE = Userenv(''LANG'') ';
3878           l_dyn_sql := l_dyn_sql || '     AND   IT.MEANING = EBI.'||l_intf_col_name_tbl(i);
3879           l_dyn_sql := l_dyn_sql || '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
3880           l_dyn_sql := l_dyn_sql || '     AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3881           l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
3882           l_dyn_sql := l_dyn_sql || ') ';
3883 
3884           Write_Debug(l_dyn_sql);
3885           EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
3886           Write_Debug('MIRI: Updated the Revision Reason Codes.');
3887 
3888         ----------------------------------------------------------------------------------
3889         --  Bug# 3421497 fix.
3890         --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
3891         --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
3892         --  dependant upon the Lifecycle ID value.
3893         ----------------------------------------------------------------------------------
3894         ELSIF (l_prod_col_name_tbl(i) = G_LIFECYCLE) THEN
3895 
3896           l_lifecycle_col_val := l_intf_col_name_tbl(i);
3897 
3898         ----------------------------------------------------------------------------------
3899         --  Bug# 3421497 fix.
3900         --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
3901         --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
3902         --  dependant upon the Lifecycle ID value.
3903         ----------------------------------------------------------------------------------
3904         ELSIF (l_prod_col_name_tbl(i) = G_LIFECYCLE_PHASE) THEN
3905 
3906           l_lifecycle_phase_col_val := l_intf_col_name_tbl(i);
3907 
3908         ----------------------------------------------------------------------------------
3909         --  Transfer the Column information from EBI to MSII
3910         --  which *DONOT NEED* Value-to-ID Conversion.
3911         ----------------------------------------------------------------------------------
3912         ELSE
3913 
3914           l_dyn_sql := '';
3915           l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
3916           l_dyn_sql := l_dyn_sql || ' SET   MIRI.'||l_prod_col_name_tbl(i) ||' =  ';
3917           l_dyn_sql := l_dyn_sql || '( ';
3918           l_dyn_sql := l_dyn_sql || '    SELECT EBI.'||l_intf_col_name_tbl(i);
3919           l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI ';
3920           l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3921           l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3922           l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
3923           l_dyn_sql := l_dyn_sql || ') ';
3924           l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
3925           l_dyn_sql := l_dyn_sql || '( ';
3926           l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
3927           l_dyn_sql := l_dyn_sql || '    FROM   EGO_BULKLOAD_INTF EBI ';
3928           l_dyn_sql := l_dyn_sql || '    WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
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 
3933           Write_Debug(l_dyn_sql);
3934 
3935     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
3936           Write_Debug('MIRI: Updated the '||l_prod_col_name_tbl(i)||' column values.');
3937 
3938         END IF;--end: IF (l_prod_col_name_tbl(i) = G_REV_REASON_DB_COL) THEN
3939 
3940       END LOOP;--end: FOR i IN l_prod_col_name_tbl.first .. l_prod_col_name_tbl.last LOOP
3941 
3942       ----------------------------------------------------------------------------------
3943       --  Bug# 3421497 fix.
3944       --  If Lifecycle ID or Lifecycle Phase ID, save column information, and process
3945       --  later in the sequence, as Lifecycle Phase ID Value-to-ID conversion is
3946       --  dependant upon the Lifecycle ID value.
3947       --  Hence the are processed outside the above LOOP.
3948       ----------------------------------------------------------------------------------
3949 
3950       IF (l_lifecycle_col_val IS NOT NULL OR l_lifecycle_phase_col_val IS NOT NULL ) THEN
3951 
3952          ----------------------------------------------------------------------------------
3953          -- Fix for Bug:3624686
3954          -- LIFECYCLE_ID cannot be updated anymore through Spreadsheet (Excel) Item
3955          -- Revision Import. Only Lifecycle Phase (CURRENT_PHASE_ID) can be updated.
3956          -- ***Hence, Commenting out following which sets the LIFECYCLE_ID.
3957          ----------------------------------------------------------------------------------
3958 /*
3959 
3960          ----------------------------------------------------------------------------------
3961          --  First Transfer the Lifecycle information from EBI to MSII
3962          --  by doing Value-to-ID Conversion.
3963          ----------------------------------------------------------------------------------
3964            l_dyn_sql := '';
3965            l_dyn_sql := l_dyn_sql || ' ';
3966            l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
3967            l_dyn_sql := l_dyn_sql || ' SET   MIRI.LIFECYCLE_ID = ';
3968            l_dyn_sql := l_dyn_sql || '( ';
3969            l_dyn_sql := l_dyn_sql || '    SELECT LC.PROJ_ELEMENT_ID ';
3970            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_LIFECYCLES_PHASES_V LC, EGO_BULKLOAD_INTF EBI  ';
3971            l_dyn_sql := l_dyn_sql || '    WHERE  LC.OBJECT_TYPE = ''PA_STRUCTURES'' ';
3972            l_dyn_sql := l_dyn_sql || '    AND    LC.NAME = EBI.'||l_lifecycle_col_val;
3973            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
3974            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3975            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
3976            l_dyn_sql := l_dyn_sql || ') ';
3977            l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
3978            l_dyn_sql := l_dyn_sql || '( ';
3979            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
3980            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_LIFECYCLES_PHASES_V LC, EGO_BULKLOAD_INTF EBI  ';
3981            l_dyn_sql := l_dyn_sql || '    WHERE  LC.OBJECT_TYPE = ''PA_STRUCTURES'' ';
3982            l_dyn_sql := l_dyn_sql || '    AND    LC.NAME = EBI.'||l_lifecycle_col_val;
3983            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
3984            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
3985            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
3986            l_dyn_sql := l_dyn_sql || ') ';
3987 
3988            Write_Debug(l_dyn_sql);
3989            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
3990            Write_Debug('MIRI: Updated the Lifecycle IDs.');
3991 */
3992 
3993            ----------------------------------------------------------------------------------
3994            -- Fix for Bug:3624686
3995            -- As a part of 11.5.10, Setting the Lifecycle for Revision is not available.
3996            -- But setting Lifecycle Phase is still possible.
3997            -- Hence pick up the Lifecycle from Item (MTL_SYSTEM_ITEMS_B) and set in
3998            -- MTL_ITEM_REVISIONS_INTERFACE.
3999            ----------------------------------------------------------------------------------
4000 
4001          ----------------------------------------------------------------------------------
4002          --  First Transfer the Lifecycle ID information from MSI to MSII
4003          --  as the Revision inherits Lifecycle ID from Item.
4004          ----------------------------------------------------------------------------------
4005            l_dyn_sql := '';
4006            l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
4007            l_dyn_sql := l_dyn_sql || ' SET   MIRI.LIFECYCLE_ID = ';
4008            l_dyn_sql := l_dyn_sql || '( ';
4009            l_dyn_sql := l_dyn_sql || '    SELECT MSI.LIFECYCLE_ID ';
4010            l_dyn_sql := l_dyn_sql || '    FROM   MTL_SYSTEM_ITEMS_B MSI, EGO_BULKLOAD_INTF EBI  ';
4011            l_dyn_sql := l_dyn_sql || '    WHERE  MSI.INVENTORY_ITEM_ID = EBI.INSTANCE_PK1_VALUE ';
4012            l_dyn_sql := l_dyn_sql || '    AND    MSI.ORGANIZATION_ID = EBI.INSTANCE_PK2_VALUE ';
4013            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
4014            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
4015            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
4016            l_dyn_sql := l_dyn_sql || ') ';
4017            l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
4018            l_dyn_sql := l_dyn_sql || '( ';
4019            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
4020            l_dyn_sql := l_dyn_sql || '    FROM   MTL_SYSTEM_ITEMS_B MSI, EGO_BULKLOAD_INTF EBI  ';
4021            l_dyn_sql := l_dyn_sql || '    WHERE  MSI.INVENTORY_ITEM_ID = EBI.INSTANCE_PK1_VALUE ';
4022            l_dyn_sql := l_dyn_sql || '    AND    MSI.ORGANIZATION_ID = EBI.INSTANCE_PK2_VALUE ';
4023            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
4024            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
4025            -- Bug: 3762986 - If LC Phase is not null, then only update the lifecycle_id
4026            l_dyn_sql := l_dyn_sql || '    AND    EBI.'||l_lifecycle_phase_col_val||' IS NOT NULL';
4027            -- Bug: 3762986 - end
4028            l_dyn_sql := l_dyn_sql || '    AND    EBI.PROCESS_STATUS = 1  ';
4029            l_dyn_sql := l_dyn_sql || ') ';
4030 
4031            Write_Debug(l_dyn_sql);
4032            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
4033            Write_Debug('MIRI: Updated the Lifecycle IDs from MTL_SYSTEM_ITEMS_B.');
4034 
4035          ----------------------------------------------------------------------------------
4036          --  Next Transfer the Lifecycle Phase information from EBI to MSII
4037          --  by doing Value-to-ID Conversion, and by joining Lifecycle ID information.
4038          ----------------------------------------------------------------------------------
4039            l_dyn_sql := '';
4040            l_dyn_sql := l_dyn_sql || 'UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI ';
4041            l_dyn_sql := l_dyn_sql || ' SET   MIRI.CURRENT_PHASE_ID = ';
4042            l_dyn_sql := l_dyn_sql || '( ';
4043            l_dyn_sql := l_dyn_sql || '    SELECT LCP.PROJ_ELEMENT_ID ';
4044            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_PHASES_V LCP, EGO_BULKLOAD_INTF EBI ';
4045            l_dyn_sql := l_dyn_sql || '    WHERE  LCP.PARENT_STRUCTURE_ID = MIRI.LIFECYCLE_ID ';
4046            l_dyn_sql := l_dyn_sql || '    AND    LCP.NAME = EBI.'||l_lifecycle_phase_col_val;
4047            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
4048            l_dyn_sql := l_dyn_sql || '     AND   EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
4049            l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
4050            l_dyn_sql := l_dyn_sql || ') ';
4051            l_dyn_sql := l_dyn_sql || ' WHERE EXISTS ';
4052            l_dyn_sql := l_dyn_sql || '( ';
4053            l_dyn_sql := l_dyn_sql || '    SELECT ''X'' ';
4054            l_dyn_sql := l_dyn_sql || '    FROM   PA_EGO_PHASES_V LCP, EGO_BULKLOAD_INTF EBI ';
4055            l_dyn_sql := l_dyn_sql || '    WHERE  LCP.PARENT_STRUCTURE_ID = MIRI.LIFECYCLE_ID ';
4056            l_dyn_sql := l_dyn_sql || '    AND    LCP.NAME = EBI.'||l_lifecycle_phase_col_val;
4057            l_dyn_sql := l_dyn_sql || '    AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_EXISTS';
4058            l_dyn_sql := l_dyn_sql || '    AND    EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID ';
4059            l_dyn_sql := l_dyn_sql || '     AND    EBI.PROCESS_STATUS = 1  ';
4060            l_dyn_sql := l_dyn_sql || ') ';
4061 
4062            Write_Debug(l_dyn_sql);
4063            EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
4064            Write_Debug('MIRI: Updated the Lifecycle Phase IDs.');
4065 
4066        END IF; --end: IF (l_lifecycle_col_val IS NOT NULL ...
4067 
4068    END IF; --IF ( l_prod_col_name_tbl.count > 0) THEN
4069 
4070    --
4071    -- delete unnecessary records from MIRI
4072    -- Bug: 5476972 "Rows not to be deleted if Revision is null"
4073    -- bug: 5557250 delete only if all the fields are populated as NULL
4074    --
4075    /* Bug 7578350. Moving this DELETE statement to the function process_item_interface_lines(), after the function call
4076       load_itm_or_rev_usrattr_intf() that updates UDAs, so that we delete the rows from MTL_ITEM_REVISIONS_INTERFACE
4077       only if there are no Revision Level Attributes provided.
4078 
4079     DELETE MTL_ITEM_REVISIONS_INTERFACE MIRI
4080     WHERE revision IS NULL
4081       AND revision_id IS NULL
4082       AND implementation_date IS NULL
4083       AND effectivity_date IS NULL
4084       AND description IS NULL
4085       AND revision_label IS NULL
4086       AND revision_reason IS NULL
4087       AND current_phase_id IS NULL
4088       AND EXISTS (SELECT 'X'
4089                     FROM  EGO_BULKLOAD_INTF EBI
4090                    WHERE  EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4091                      AND  EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID
4092                      AND  EBI.PROCESS_STATUS = 1
4093                  ); */
4094 
4095    --
4096    -- convert all date fields values from Excel Null to INTF Null
4097    --
4098    UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI
4099    SET  ecn_initiation_date = DECODE(ecn_initiation_date,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,ecn_initiation_date),
4100         implementation_date = DECODE(implementation_date,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,implementation_date),
4101         effectivity_date = DECODE(effectivity_date,G_EXCEL_NULL_DATE,EGO_ITEM_PUB.G_INTF_NULL_DATE,effectivity_date)
4102    WHERE MIRI.TRANSACTION_ID IN
4103       ( SELECT EBI.TRANSACTION_ID
4104         FROM   EGO_BULKLOAD_INTF EBI
4105         WHERE  EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4106         AND    EBI.PROCESS_STATUS = 1
4107       )
4108    AND    (MIRI.ecn_initiation_date IS NOT NULL
4109                 OR
4110                 MIRI.implementation_date IS NOT NULL
4111                 OR
4112                 MIRI.effectivity_date IS NOT NULL
4113                );
4114 
4115    x_retcode := G_STATUS_SUCCESS;
4116    x_set_process_id := l_msii_set_process_id;
4117 
4118 END load_item_revs_interface;
4119 
4120  ----------------------------------------------------------
4121  -- Preprocess Item Revision Interface Lines             --
4122  ----------------------------------------------------------
4123 PROCEDURE preprocess_itemrev_interface
4124                (
4125                  p_resultfmt_usage_id    IN         NUMBER,
4126                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
4127                  p_set_process_id        IN         NUMBER,
4128                  x_errbuff               IN OUT NOCOPY    VARCHAR2,
4129                  x_retcode               IN OUT NOCOPY    VARCHAR2
4130                 ) IS
4131 
4132     -- Start OF comments
4133     -- API name  : Setup MSII Item Interface Lines for processing
4134     -- TYPE      : Private
4135     -- Pre-reqs  : None
4136     -- FUNCTION  : Populate and Prepare Item interfance lines.
4137     --             Eliminates any redundancy / errors in MSII
4138 
4139   -----------------------------------------------
4140   -- Long Dynamic SQL String
4141   -----------------------------------------------
4142   l_dyn_sql                VARCHAR2(20000);
4143 
4144 BEGIN
4145 
4146    -----------------------------------------------------------------------
4147    -- Only in case of Import, and while importing Multi-Row attr group
4148    -- values : Item, Org, Revision are NOT NULL, and rest of the base
4149    -- attributes are NULL. Hence can delete these rows off from MIRI.
4150    -----------------------------------------------------------------------
4151    DELETE MTL_ITEM_REVISIONS_INTERFACE
4152      WHERE
4153      (
4154       (
4155        ITEM_NUMBER                   IS NOT NULL    OR
4156        INVENTORY_ITEM_ID             IS NOT NULL
4157        )
4158        AND
4159       (
4160        ORGANIZATION_CODE             IS NOT NULL    OR
4161        ORGANIZATION_ID               IS NOT NULL
4162        )
4163        AND
4164       (
4165        REVISION                      IS NOT NULL    OR
4166        REVISION_ID                   IS NOT NULL
4167        )
4168       )
4169      AND
4170      (
4171        DESCRIPTION                   IS NULL AND
4172        LIFECYCLE_ID                  IS NULL AND
4173        CURRENT_PHASE_ID              IS NULL AND
4174        REVISION_LABEL                IS NULL AND
4175        REVISION_REASON               IS NULL AND
4176        LIFECYCLE_ID                  IS NULL AND
4177        CURRENT_PHASE_ID              IS NULL AND
4178        EFFECTIVITY_DATE              IS NULL
4179       )
4180        AND SET_PROCESS_ID = p_set_process_id;
4181 
4182    Write_Debug('Preprocess_ItemRev_Interface : Deleted redundant / unnecessary rows from MIRI');
4183 
4184 END preprocess_itemrev_interface;
4185 
4186 
4187  ----------------------------------------------------------
4188  -- Setup Item Revision Interface Lines                  --
4189  ----------------------------------------------------------
4190 PROCEDURE Setup_itemrev_interface
4191                (
4192                  p_resultfmt_usage_id    IN         NUMBER,
4193                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
4194                  p_data_level            IN         VARCHAR2,
4195                  p_set_process_id        IN         NUMBER,
4196                  x_set_process_id        OUT NOCOPY NUMBER,
4197                  x_errbuff               OUT NOCOPY VARCHAR2,
4198                  x_retcode               OUT NOCOPY VARCHAR2
4199                 ) IS
4200 
4201     -- Start OF comments
4202     -- API name  : Setup MIRI Item Rev Interface Lines for processing
4203     -- TYPE      : Private
4204     -- Pre-reqs  : None
4205     -- FUNCTION  : Populate and Prepare Item Rev interfance lines.
4206     --             Eliminates any redundancy / errors in MIRI
4207 
4208   l_set_process_id   NUMBER(15);
4209 
4210 BEGIN
4211 
4212    -----------------------------------
4213    -- Populates rows in MIRI
4214    -----------------------------------
4215    load_item_revs_interface(
4216         p_resultfmt_usage_id  => p_resultfmt_usage_id
4217        ,p_data_level          => p_data_level
4218        ,p_set_process_id      => p_set_process_id
4219        ,x_set_process_id      => l_set_process_id
4220        ,x_errbuff             => x_errbuff
4221        ,x_retcode             => x_retcode
4222             );
4223 
4224    -------------------------------------------------------
4225    -- Deletes redundant / unnecessary rows from MIRI.
4226    -------------------------------------------------------
4227    preprocess_itemrev_interface(
4228         p_resultfmt_usage_id  => p_resultfmt_usage_id
4229        ,p_set_process_id      => l_set_process_id
4230        ,x_errbuff             => x_errbuff
4231        ,x_retcode             => x_retcode
4232             );
4233 
4234    x_set_process_id := l_set_process_id;
4235 
4236    Write_Debug('Setup_ItemRev_Interface : Set Process Id => '||x_set_process_id);
4237 
4238  EXCEPTION
4239    WHEN OTHERS THEN
4240       x_retcode := G_STATUS_ERROR;
4241       x_errbuff := SUBSTRB(SQLERRM, 1,240);
4242       Write_Debug('Setup_Itemrev_Interface : EXCEPTION HAPPENED => '||x_errbuff);
4243       RAISE;
4244 
4245 END setup_itemrev_interface;
4246 
4247 
4248  ----------------------------------------------------------------------------
4249  --  Change Item Revision Interface Lines process statuses as completed.   --
4250  --  Statuses represent: Warning, Error, Success etc.,                     --
4251  ----------------------------------------------------------------------------
4252 PROCEDURE Item_Revs_Intf_Completion
4253   (
4254     p_resultfmt_usage_id     IN    NUMBER
4255   , x_errbuff                OUT NOCOPY  VARCHAR2
4256   , x_retcode                OUT NOCOPY  VARCHAR2
4257     ) IS
4258 
4259   -----------------------------------------------
4260   -- Long Dynamic SQL String
4261   -----------------------------------------------
4262   l_dyn_sql                VARCHAR2(10000);
4263 
4264 BEGIN
4265 
4266    -----------------------------------------------------------------
4267    -- Update EBI, with the process status of rows in MIRI after
4268    -- the completion of IOI Revision processing.
4269    -----------------------------------------------------------------
4270    UPDATE EGO_BULKLOAD_INTF EBI
4271      SET  EBI.PROCESS_STATUS =
4272      (
4273       SELECT MIRI.PROCESS_FLAG
4274       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4275       WHERE  MIRI.TRANSACTION_ID = EBI.TRANSACTION_ID
4276       )
4277      WHERE EXISTS
4278      (
4279       SELECT 'X'
4280       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4281       WHERE  MIRI.TRANSACTION_ID = EBI.TRANSACTION_ID
4282       )
4283      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
4284 
4285    ----------------------------------------------------------------------------
4286    -- Update all the lines in EGO_BULKLOAD_INTF as failure, for which
4287    -- The Revision IDS were not available.
4288    -- 1. For Transaction Type : CREATE, Revision ID should be populated
4289    --    at the end of Processing
4290    -- 2. For Transaction Type : SYNC / UPDATE, Revision ID should be
4291    --    retrieved during processing.
4292    ----------------------------------------------------------------------------
4293    UPDATE EGO_BULKLOAD_INTF EBI
4294      SET  EBI.PROCESS_STATUS = G_INTF_STATUS_ERROR
4295      WHERE EXISTS
4296      (
4297       SELECT 'X'
4298       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4299       WHERE  MIRI.TRANSACTION_ID = EBI.TRANSACTION_ID
4300        AND   MIRI.PROCESS_FLAG   = G_INTF_STATUS_SUCCESS
4301        AND   MIRI.REVISION_ID IS NULL
4302       )
4303      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
4304 
4305    ----------------------------------------------------------------------------
4306    -- Update all the lines in EGO_BULKLOAD_INTF as SUCCESS
4307    -- for these rows were used to populate Multi-Row
4308    -- Appropriate errors will be displayed by the User-Defined Attrs Bulkldr.
4309    ----------------------------------------------------------------------------
4310    UPDATE EGO_BULKLOAD_INTF EBI
4311      SET  EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS
4312      WHERE EBI.PROCESS_STATUS = G_INTF_STATUS_TOBE_PROCESS
4313      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
4314 
4315    ----------------------------------------------------------------------------
4316    -- Update the Item IDs (Doesnt matter Create or Update, because
4317    -- Item IDs will be populated either way in MSII) in
4318    -- Generic Bulkload Intf table (EGO_BULKLOAD_INTF)
4319    -- These Item IDs are required for Item User-Defined Attrs bulkload
4320    ----------------------------------------------------------------------------
4321    UPDATE EGO_BULKLOAD_INTF EBI
4322      SET  EBI.INSTANCE_PK1_VALUE =
4323      (
4324       SELECT MSII.INVENTORY_ITEM_ID
4325       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
4326       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
4327       )
4328      WHERE EXISTS
4329      (
4330       SELECT 'X'
4331       FROM   MTL_SYSTEM_ITEMS_INTERFACE MSII
4332       WHERE  MSII.TRANSACTION_ID = EBI.TRANSACTION_ID
4333       )
4334      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4335      AND EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS;
4336 
4337    ----------------------------------------------------------------------------
4338    -- Update the Item Revision IDs (Doesnt matter Create or Update, because
4339    -- Item Revision IDs will be populated either way in MIRI) in
4340    -- Generic Bulkload Intf table (EGO_BULKLOAD_INTF)
4341    -- These Revision IDs are required for Revision User-Defined Attrs bulkload
4342    ----------------------------------------------------------------------------
4343    UPDATE EGO_BULKLOAD_INTF EBI
4344      SET  EBI.INSTANCE_PK3_VALUE =
4345      (
4346       SELECT MIRI.REVISION_ID
4347       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4348       WHERE  MIRI.TRANSACTION_ID = EBI.TRANSACTION_ID
4349       )
4350      WHERE EXISTS
4351      (
4352       SELECT 'X'
4353       FROM   MTL_ITEM_REVISIONS_INTERFACE MIRI
4354       WHERE  MIRI.TRANSACTION_ID = EBI.transaction_id
4355       )
4356      AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4357      AND EBI.PROCESS_STATUS = G_INTF_STATUS_SUCCESS;
4358 
4359    Write_Debug('EBI: Updated the Process_Status to Indicate Succssful/Unsucessful completion.');
4360 
4361    x_retcode := G_STATUS_SUCCESS;
4362 
4363  EXCEPTION
4364    WHEN OTHERS THEN
4365       x_retcode := G_STATUS_ERROR;
4366       x_errbuff := SUBSTRB(SQLERRM, 1,240);
4367       Write_Debug('Item_Revs_Intf_Completion : EXCEPTION HAPPENED => '||x_errbuff);
4368       RAISE;
4369 
4370 END Item_Revs_Intf_Completion;
4371 
4372 
4373  ----------------------------------------------------------
4374  -- Load Item or Item Revision User Defined Attributes   --
4375  -- in User-Defined Attributes Interface Table           --
4376  ----------------------------------------------------------
4377 
4378 PROCEDURE load_itm_or_rev_usrattr_intf
4379                (
4380                  p_resultfmt_usage_id    IN         NUMBER,
4381                  p_data_set_id           IN         NUMBER,
4382                  x_errbuff               OUT NOCOPY VARCHAR2,
4383                  x_retcode               OUT NOCOPY VARCHAR2
4384                 ) IS
4385     -- Start OF comments
4386     -- API name  : Populate Item User-Defined Attr Interfance Lines
4387     -- TYPE      : Public
4388     -- Pre-reqs  : None
4389     -- FUNCTION  : Load Item User-Defined Attributes interfance lines.
4390     --             Loads Item User-Defined Attribute Values
4391     --             Errors are populated in MTL_INTERFACE_ERRORS
4392 
4393   ------------------------------------------------------------------------------
4394   -- To retrieve Attribute group codes, for given Result Format Usage ID.
4395   ------------------------------------------------------------------------------
4396   CURSOR c_user_attr_group_codes (c_resultfmt_usage_id  IN  NUMBER) IS
4397     SELECT DISTINCT To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) attr_group_id
4398     FROM   ego_results_fmt_usages
4399     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
4400      AND   attribute_code LIKE '%$$%'
4401      AND   To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) IN --attr_group_id
4402       ------------------------------------------------------------------------------
4403       -- Fixed in 11.5.10. Ensuring only the Item User-Defined Attrs are processed.
4404       ------------------------------------------------------------------------------
4405       (
4406         SELECT attr_group_id
4407         FROM   ego_attr_groups_v
4408         WHERE  attr_group_type in (G_IUD_ATTR_GROUP_TYPE, G_GTN_SNG_ATTR_GROUP_TYPE, G_GTN_MUL_ATTR_GROUP_TYPE)
4409         AND    application_id = G_APPLICATION_ID
4410       )
4411       ;
4412 
4413   ------------------------------------------------------------------------------
4414   -- To get the Attribute Group and Attribute Internal Names.
4415   -- NOTE: Joined extra attributes ATTR_GROUP_TYPE and APPLICATION_ID
4416   -- To hit the index.
4417   ------------------------------------------------------------------------------
4418    CURSOR c_attr_grp_details(p_attr_id  IN NUMBER) IS
4419      SELECT  attr_group_name, attr_name, attr_group_type,
4420              DECODE(data_type_code,'A','C'
4421                                   ,'X','D'
4422                                   ,'Y','D'
4423                    ,data_type_code) data_type_code,
4424                    uom_class -- R12C UOM Change
4425      FROM    ego_attrs_v
4426      WHERE   attr_id = p_attr_id
4427       AND    attr_group_type in (G_IUD_ATTR_GROUP_TYPE, G_GTN_SNG_ATTR_GROUP_TYPE, G_GTN_MUL_ATTR_GROUP_TYPE)
4428       AND    application_id = G_APPLICATION_ID;
4429 
4430   --------------------------------------------------------------------------------
4431   -- Defn includes a subset of  EGO_USER_ATTRS_DATA_PVT.LOCAL_USER_ATTR_DATA_REC
4432   -- plus few User-Defined Attr Table related fields.
4433   --------------------------------------------------------------------------------
4434   TYPE L_USER_ATTR_REC_TYPE IS RECORD
4435   (
4436       DATA_SET_ID                          NUMBER(15)
4437      ,TRANSACTION_ID                       NUMBER(15)
4438      ,TRANSACTION_TYPE                     VARCHAR2(10)--Bug:5088831
4439      ,INVENTORY_ITEM_ID                    NUMBER(15)
4440      ,ORGANIZATION_ID                      NUMBER(15)
4441      ,REVISION_ID                          NUMBER(15)
4442      ,ITEM_NUMBER                          VARCHAR2(1000)
4443      ,ORGANIZATION_CODE                    VARCHAR2(10)
4444      ,REVISION                             VARCHAR2(10)
4445      ,ROW_IDENTIFIER                       NUMBER(15)
4446      ,ATTR_GROUP_NAME                      VARCHAR2(30)
4447      ,ATTR_NAME                            VARCHAR2(30)
4448      ,ATTR_DATATYPE_CODE                   VARCHAR2(1) --Valid Vals: C / N / D
4449      ,ATTR_VALUE_STR                       VARCHAR2(1000)
4450      ,ATTR_VALUE_NUM                       NUMBER --BugFix 4256503
4451      ,ATTR_VALUE_DATE                      DATE
4452      ,ATTR_DISP_VALUE                      VARCHAR2(1000)
4453      ,INTF_COLUMN_NAME                     VARCHAR2(30)
4454      ,SOURCE_SYSTEM_ID                     NUMBER
4455      ,SOURCE_SYSTEM_REFERENCE              VARCHAR2(255)
4456      ,ATTR_GROUP_TYPE                      VARCHAR2(40)--Bug Fix 4630163(ISSUE2)
4457      ,DATA_LEVEL_ID                        NUMBER
4458      ,PK1_VALUE                            NUMBER
4459      ,PK2_VALUE                            NUMBER
4460      ,ATTR_UOM_DISP_VALUE                  VARCHAR2(25) -- R12C UOM Changes
4461      ,ATTR_VALUE_UOM                       VARCHAR2(3)  -- R12C UOM Changes
4462   );
4463 
4464   ---------------------------------------------------------------------
4465   -- Type Declarations
4466   ---------------------------------------------------------------------
4467   TYPE L_USER_ATTR_TBL_TYPE IS TABLE OF L_USER_ATTR_REC_TYPE
4468     INDEX BY BINARY_INTEGER;
4469 
4470   TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(256)
4471    INDEX BY BINARY_INTEGER;
4472 
4473                -------------------------
4474                --   local variables   --
4475                -------------------------
4476   l_api_name                        VARCHAR2(32) := 'load_itm_or_rev_usrattr_intf()';
4477   l_prod_col_name_tbl               VARCHAR_TBL_TYPE;
4478   l_intf_col_name_tbl               VARCHAR_TBL_TYPE;
4479 
4480   l_attr_id_table                   DBMS_SQL.VARCHAR2_TABLE; -- R12C UOM Change
4481   --DBMS_SQL.NUMBER_TABLE;
4482   l_intf_col_name_table             DBMS_SQL.VARCHAR2_TABLE;
4483   l_data_level_id_table             DBMS_SQL.NUMBER_TABLE;
4484 
4485   l_usr_attr_data_tbl               L_USER_ATTR_TBL_TYPE;
4486 
4487   l_item_id_char                    VARCHAR(15);
4488   l_org_id_char                     VARCHAR(15);
4489   l_item_rev_id_char                VARCHAR(15);
4490   l_item_num_char                   VARCHAR(1000);
4491   l_org_code_char                   VARCHAR(10);
4492   l_item_rev_code_char              VARCHAR(10);
4493   l_source_system_id                NUMBER;
4494   l_source_system_ref               VARCHAR2(255);
4495 
4496   l_count                           NUMBER(5);
4497   l_data_type_code                  VARCHAR2(2);
4498   l_transaction_id                  NUMBER(15);
4499   l_transaction_type                VARCHAR2(10);
4500   l_uom_class                       VARCHAR2(10); -- R12C UOM Change
4501   l_uom_meaning                     VARCHAR2(150); -- R12C UOM Change
4502 
4503   l_attr_group_int_name    EGO_ATTRS_V.ATTR_GROUP_NAME%TYPE;
4504   l_attr_int_name          EGO_ATTRS_V.ATTR_NAME%TYPE;
4505   l_attr_data_type         EGO_ATTRS_V.DATA_TYPE_CODE%TYPE;
4506   l_attr_group_type        EGO_ATTRS_V.ATTR_GROUP_TYPE%TYPE;--Bug Fix 4630163(ISSUE2)
4507 
4508   ---------------------------------------------------------
4509   -- Example Data Types to be used in Bind Variable.
4510   ---------------------------------------------------------
4511   l_varchar_example        VARCHAR2(10000);
4512   l_number_example         NUMBER;
4513   l_date_example           DATE;
4514 
4515   --------------------------------------------------------------------
4516   -- Actual Data to store corresponding data type value.
4517   -- NOTE: for fixing Bug# 3808455, changed the size of l_varchar_data
4518   --       to 10,000 chars. This is because, if there are 1000 Single
4519   --       Quotes in the String Attr Value, then the Escaped value
4520   --       becomes of Size 2000. So, for all better reasons, changing
4521   --       to a huge size.
4522   --------------------------------------------------------------------
4523   l_varchar_data           VARCHAR2(10000);
4524   l_number_data            NUMBER;
4525   l_date_data              DATE;
4526 
4527   ---------------------------------------------------------
4528   -- DBMS_SQL Open Cursor integers.
4529   ---------------------------------------------------------
4530   l_cursor_select          INTEGER;
4531   l_cursor_execute         INTEGER;
4532   l_cursor_attr_id_val     INTEGER;
4533 
4534   ---------------------------------------------------------
4535   -- Used for indexes.
4536   ---------------------------------------------------------
4537   l_temp                   NUMBER(10) := 1;
4538   l_actual_userattr_indx   NUMBER(15);
4539   l_indx                   NUMBER(15);
4540   l_rows_per_attr_grp_indx NUMBER(15);
4541   l_save_indx              NUMBER(15);
4542   l_attr_grp_has_data      BOOLEAN;
4543 
4544   l_attr_group_data_level  VARCHAR2(30);
4545 
4546   ---------------------------------------------------------
4547   -- Long Dynamic SQL Strings
4548   ---------------------------------------------------------
4549   l_dyn_sql                VARCHAR2(10000);
4550   l_dyn_attr_id_val_sql    VARCHAR2(10000);
4551 
4552   ---------------------------------------------------------
4553   -- To Number the Attribute Group Data Rows Uniquely.
4554   ---------------------------------------------------------
4555 
4556   -- Bug fix 6219349: 5 digits was prone to overflow,
4557   -- causing defaulting to a value that had already been
4558   -- used.
4559   L_ATTR_GRP_ROW_IDENT     NUMBER(18);
4560 
4561   ---------------------------------------------------------
4562   -- Token tables to log errors, through Error_Handler
4563   ---------------------------------------------------------
4564   l_token_tbl_two         Error_Handler.Token_Tbl_Type;
4565   l_token_tbl_one         Error_Handler.Token_Tbl_Type;
4566 
4567   l_gdsn_attrs_exist       VARCHAR2(1);
4568   l_dummy_char             VARCHAR2(1000);
4569   l_dummy                  NUMBER;
4570   l_supplier_name_col        VARCHAR2(30);
4571   l_supplier_number_col      VARCHAR2(20);
4572   l_supplier_site_name_col   VARCHAR2(30);
4573 --  l_supplier_name            VARCHAR2(30); --abedajna Bug 611802
4574   l_supplier_name            VARCHAR2(320);
4575   l_supplier_number          VARCHAR2(20);
4576 --  l_supplier_site_name       VARCHAR2(30); --abedajna Bug 611802
4577   l_supplier_site_name       VARCHAR2(320);
4578   l_supplier_id              NUMBER;
4579   l_supplier_site_id         NUMBER;
4580   l_site_org_id                  NUMBER;
4581   l_row_id_incr              NUMBER;
4582 
4583   BEGIN
4584 
4585 
4586   Write_Debug(l_api_name || 'BEGIN ');
4587 ---------------------------------------------------------
4588   -- Initializing the Row Identifier.
4589   ---------------------------------------------------------
4590   BEGIN
4591     SELECT NVL(MAX(ROW_IDENTIFIER),0)
4592       INTO L_ATTR_GRP_ROW_IDENT
4593       FROM EGO_ITM_USR_ATTR_INTRFC
4594      WHERE DATA_SET_ID = p_data_set_id;
4595   EXCEPTION
4596     WHEN OTHERS THEN
4597 
4598       Write_Debug(l_api_name || 'ERROR: Couldn''t generate next row identifier');
4599 
4600       -- SSARNOBA: What if we come here a second time?
4601       -- We're going to get a unique constraint violation.
4602       L_ATTR_GRP_ROW_IDENT := 0;
4603   END;
4604 
4605   BEGIN
4606     SELECT INTF_COLUMN_NAME
4607       INTO l_supplier_name_col
4608       FROM EGO_RESULTS_FMT_USAGES
4609      WHERE RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4610        AND ATTRIBUTE_CODE NOT LIKE '%$$%'
4611        AND CUSTOMIZATION_APPLICATION_ID = 431
4612        AND REGION_APPLICATION_ID = 431
4613        AND ATTRIBUTE_CODE = 'SUPPLIER_NAME';
4614   EXCEPTION
4615     WHEN NO_DATA_FOUND THEN
4616       l_supplier_name_col := NULL;
4617   END;
4618 
4619   BEGIN
4620     SELECT INTF_COLUMN_NAME
4621       INTO l_supplier_number_col
4622       FROM EGO_RESULTS_FMT_USAGES
4623      WHERE RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4624        AND ATTRIBUTE_CODE NOT LIKE '%$$%'
4625        AND CUSTOMIZATION_APPLICATION_ID = 431
4626        AND REGION_APPLICATION_ID = 431
4627        AND ATTRIBUTE_CODE = 'SUPPLIER_NUMBER';
4628   EXCEPTION
4629     WHEN NO_DATA_FOUND THEN
4630       l_supplier_number_col := NULL;
4631   END;
4632 
4633   BEGIN
4634     SELECT INTF_COLUMN_NAME
4635       INTO l_supplier_site_name_col
4636       FROM EGO_RESULTS_FMT_USAGES
4637      WHERE RESULTFMT_USAGE_ID = p_resultfmt_usage_id
4638        AND ATTRIBUTE_CODE NOT LIKE '%$$%'
4639        AND CUSTOMIZATION_APPLICATION_ID = 431
4640        AND REGION_APPLICATION_ID = 431
4641        AND ATTRIBUTE_CODE = 'SUPPLIER_SITE';
4642   EXCEPTION
4643     WHEN NO_DATA_FOUND THEN
4644       l_supplier_site_name_col := NULL;
4645   END;
4646 
4647   --------------------------------------------------------------------
4648   -- Loop to process per Attribute Group of User-Defined Attributes.
4649   --------------------------------------------------------------------
4650   <<LIORUI_attr_groups_loop>>
4651   FOR c_attr_grp_rec IN c_user_attr_group_codes(p_resultfmt_usage_id) LOOP
4652 
4653     Write_Debug(l_api_name || 'LIORUI_attr_groups_loop - Attribute Group'
4654                 || c_attr_grp_rec.attr_group_id);
4655 
4656     --------------------------------------------------------------------
4657     -- Added for BugFix 4114928 : We need to check for the data level --
4658     -- of the atr group and populate the REVISION_ID only if the AG   --
4659     -- revision level.                                                --
4660     --------------------------------------------------------------------
4661     SELECT DATA_LEVEL_INT_NAME INTO l_attr_group_data_level
4662       FROM EGO_OBJ_ATTR_GRP_ASSOCS_V
4663      WHERE ATTR_GROUP_TYPE in (G_IUD_ATTR_GROUP_TYPE, G_GTN_SNG_ATTR_GROUP_TYPE, G_GTN_MUL_ATTR_GROUP_TYPE)
4664        AND ATTR_GROUP_ID = c_attr_grp_rec.attr_group_id
4665        AND OBJECT_NAME = G_EGO_ITEM_OBJ_NAME
4666        AND ROWNUM = 1;-- The AG cannot have associations at Item level and Revision Level for different Catalogs.
4667 
4668     --------------------------------------------------------------------
4669     -- Fetch Organization ID, Item Number in Temp PLSQL tables.
4670     --------------------------------------------------------------------
4671     --- R12C UOM Change. Removing to_Num conversion . Now attrId$$UOM will also go into l_attr_id_table
4672     -- old code  l_dyn_sql := ' SELECT To_Number(SUBSTR(attribute_code, INSTR(attribute_code, ''$$'')+2)) attr_id, intf_column_name, DATA_LEVEL_ID ';
4673 
4674     l_dyn_sql := ' SELECT SUBSTR(attribute_code, INSTR(attribute_code, ''$$'')+2) attr_id, intf_column_name, DATA_LEVEL_ID ';
4675     l_dyn_sql := l_dyn_sql || ' FROM   ego_results_fmt_usages ';
4676     l_dyn_sql := l_dyn_sql || ' WHERE  resultfmt_usage_id = :RESULTFMT_USAGE_ID';
4677     l_dyn_sql := l_dyn_sql || '  AND attribute_code LIKE :ATTRIBUTE_CODE ';
4678     l_dyn_sql := l_dyn_sql || '  ORDER BY DISPLAY_SEQUENCE '; --- R12C UOM Change.so that UOM col comes next to corresponding number col
4679 
4680     Write_Debug(l_api_name || l_dyn_sql);
4681 
4682     l_cursor_select := DBMS_SQL.OPEN_CURSOR;
4683     DBMS_SQL.PARSE(l_cursor_select, l_dyn_sql, DBMS_SQL.NATIVE);
4684     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 1,l_attr_id_table,2500, l_temp);
4685     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 2,l_intf_col_name_table,2500, l_temp);
4686     DBMS_SQL.DEFINE_ARRAY(l_cursor_select, 3,l_data_level_id_table,2500, l_temp);
4687 
4688     DBMS_SQL.BIND_VARIABLE(l_cursor_select,':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
4689     DBMS_SQL.BIND_VARIABLE(l_cursor_select,':ATTRIBUTE_CODE', c_attr_grp_rec.attr_group_id||'$$%');
4690     l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_select);
4691     Write_Debug(l_api_name || 'About to start the Loop to fetch Rows');
4692     l_count := DBMS_SQL.FETCH_ROWS(l_cursor_select);
4693     DBMS_SQL.COLUMN_VALUE(l_cursor_select, 1, l_attr_id_table);
4694     DBMS_SQL.COLUMN_VALUE(l_cursor_select, 2, l_intf_col_name_table);
4695     DBMS_SQL.COLUMN_VALUE(l_cursor_select, 3, l_data_level_id_table);
4696 
4697     Write_Debug(l_api_name || 'Retrieved rows => '||To_char(l_count));
4698     DBMS_SQL.CLOSE_CURSOR(l_cursor_select);
4699 
4700     --------------------------------------------------------------------
4701     -- New DBMS_SQL Cursor for Select Attr Values.
4702     --------------------------------------------------------------------
4703     l_cursor_attr_id_val := DBMS_SQL.OPEN_CURSOR;
4704     l_dyn_attr_id_val_sql := ' SELECT ';
4705     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' TRANSACTION_ID , ';
4706     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' UPPER(TRANSACTION_TYPE) , ';
4707     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' INSTANCE_PK1_VALUE , ';
4708     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' INSTANCE_PK2_VALUE , ';
4709     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' INSTANCE_PK3_VALUE , ';
4710     --------------------------------------------------------------------
4711     -- Added the fix to fetch these cols also, as in case of New Item
4712     -- Instance PK1 Value might not have been retrieved.
4713     --------------------------------------------------------------------
4714     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||G_ITEM_NUMBER_EBI_COL ||'  , ';
4715     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||G_ORG_CODE_EBI_COL ||'  , ';
4716     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||G_REVISION_CODE_EBI_COL ||'  , ';
4717     --------------------------------------------------------------------
4718     -- R12
4719     -- Adding the source system id and source system reference columns
4720     --------------------------------------------------------------------
4721     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' TO_NUMBER(C_FIX_COLUMN11) , ';
4722     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' C_FIX_COLUMN12 , ';
4723 
4724     ----------------------------------------------------
4725     --R12C adding the suppplier/supplier site columns
4726     ----------------------------------------------------
4727     IF(l_supplier_name_col IS NOT NULL) THEN
4728       l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||l_supplier_name_col ||'  , ';
4729     END IF;
4730     IF(l_supplier_number_col IS NOT NULL) THEN
4731       l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||l_supplier_number_col ||'  , ';
4732     END IF;
4733     IF(l_supplier_site_name_col IS NOT NULL) THEN
4734       l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql ||l_supplier_site_name_col ||'  , ';
4735     END IF;
4736 
4737     --------------------------------------------------------------------
4738     -- Loop to Update the Inventory Item IDs.
4739     --------------------------------------------------------------------
4740     <<LIORUI_update_item_ids_loop>>
4741     FOR i IN 1..l_attr_id_table.COUNT LOOP
4742       Write_Debug(l_api_name || 'LIORUI_update_item_ids_loop - '||i);
4743       Write_Debug(l_api_name || 'Attr ID : '||To_char(l_attr_id_table(i)));
4744       Write_Debug(l_api_name || 'Intf Col Name : '||l_intf_col_name_table(i));
4745       IF (i <> l_attr_id_table.COUNT) THEN
4746         l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || l_intf_col_name_table(i) || ', ';
4747       ELSE
4748         l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || l_intf_col_name_table(i) ;
4749       END IF;
4750     END LOOP LIORUI_update_item_ids_loop; --end: FOR i IN 1..l_attr_id_table.COUNT LOOP
4751 
4752     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' FROM EGO_BULKLOAD_INTF ' ;
4753     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' WHERE RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
4754     l_dyn_attr_id_val_sql := l_dyn_attr_id_val_sql || ' AND PROCESS_STATUS = :PROCESS_STATUS ';
4755     Write_Debug(l_api_name || l_dyn_attr_id_val_sql);
4756 
4757     DBMS_SQL.PARSE(l_cursor_attr_id_val, l_dyn_attr_id_val_sql, DBMS_SQL.NATIVE);
4758     --------------------------------------------------------------------
4759     --Setting Data Type for Trasaction ID
4760     --------------------------------------------------------------------
4761     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 1, l_number_example);
4762 
4763     --------------------------------------------------------------------
4764     --Setting Data Type for Trasaction Type
4765     --------------------------------------------------------------------
4766     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 2, l_varchar_example,10);
4767 
4768     --------------------------------------------------------------------
4769     --Setting Data Type for INSTANCE_PK1_VALUE (Item ID)
4770     --------------------------------------------------------------------
4771     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 3, l_varchar_example, 1000);
4772 
4773     --------------------------------------------------------------------
4774     --Setting Data Type for INSTANCE_PK2_VALUE (Org ID)
4775     --------------------------------------------------------------------
4776     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 4, l_varchar_example, 1000);
4777 
4778     --------------------------------------------------------------------
4779     --Setting Data Type for INSTANCE_PK3_VALUE (Revision ID)
4780     --------------------------------------------------------------------
4781     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 5, l_varchar_example, 1000);
4782 
4783     --------------------------------------------------------------------
4784     --Setting Data Type for Item Num
4785     --------------------------------------------------------------------
4786     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 6, l_varchar_example, 1000);
4787 
4788     --------------------------------------------------------------------
4789     --Setting Data Type for Org Code
4790     --------------------------------------------------------------------
4791     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 7, l_varchar_example, 1000);
4792 
4793     --------------------------------------------------------------------
4794     --Setting Data Type for Revision Code
4795     --------------------------------------------------------------------
4796     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 8, l_varchar_example, 1000);
4797 
4798     --------------------------------------------------------------------
4799     --Setting Data Type for Source System Id
4800     --------------------------------------------------------------------
4801     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 9, l_number_example);
4802 
4803     --------------------------------------------------------------------
4804     --Setting Data Type for Source System Reference
4805     --------------------------------------------------------------------
4806     DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 10, l_varchar_example, 1000);
4807 
4808     ---------------------------------------------------------------
4809     --R12C setting data type for suppplier/supplier site columns
4810     ---------------------------------------------------------------
4811     l_dummy := 0;
4812     IF(l_supplier_name_col IS NOT NULL) THEN
4813       DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 11 + l_dummy, l_varchar_example, 1000);
4814       l_dummy := l_dummy +1;
4815     END IF;
4816     IF(l_supplier_number_col IS NOT NULL) THEN
4817       DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 11 + l_dummy, l_varchar_example, 1000);
4818       l_dummy := l_dummy +1;
4819     END IF;
4820     IF(l_supplier_site_name_col IS NOT NULL) THEN
4821       DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, 11 + l_dummy, l_varchar_example, 1000);
4822       l_dummy := l_dummy +1;
4823     END IF;
4824 
4825     --------------------------------------------------------------------
4826     -- Loop to Bind the Data Types for the SELECT Columns.
4827     --------------------------------------------------------------------
4828     <<LIORUI_data_types_loop_1>>
4829     FOR i IN 1..l_attr_id_table.COUNT LOOP
4830 
4831       Write_Debug(l_api_name || 'LIORUI_data_types_loop_1 - '||i);
4832 
4833       ------------------------------------------------------------------------
4834       -- Since TRANSACTION_ID, INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE,
4835       -- INSTANCE_PK3_VALUE are added to the SELECT before the User-Defined
4836       -- Attrs, we need to adjust the index as follows.
4837       ------------------------------------------------------------------------
4838       l_actual_userattr_indx := i + 10 + l_dummy;
4839 
4840       l_data_type_code := SUBSTR (l_intf_col_name_table(i), 1, 1);
4841       ------------------------------------------------------------------------
4842       -- Based on the Data Type of the attribute, define the column
4843       ------------------------------------------------------------------------
4844 
4845       IF (l_data_type_code = 'C') THEN
4846         DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_varchar_example, 1000);
4847       ELSIF (l_data_type_code = 'U') THEN  -- R12C UOM Changes
4848         DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_varchar_example, 150);
4849       ELSIF (l_data_type_code = 'N') THEN
4850         DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_number_example);
4851       ELSE --IF (l_data_type_code = 'D') THEN
4852         DBMS_SQL.DEFINE_COLUMN(l_cursor_attr_id_val, l_actual_userattr_indx, l_date_example);
4853       END IF; --IF (l_data_type_code = 'C') THEN
4854 
4855     END LOOP LIORUI_data_types_loop_1; --FOR i IN 1..l_attr_id_table.COUNT LOOP
4856 
4857 
4858     DBMS_SQL.BIND_VARIABLE(l_cursor_attr_id_val,':RESULTFMT_USAGE_ID',p_resultfmt_usage_id);
4859 
4860     write_debug(l_api_name || 'Binding the PROCESS_STATUS = '||G_INTF_STATUS_TOBE_PROCESS);
4861     DBMS_SQL.BIND_VARIABLE(l_cursor_attr_id_val,':PROCESS_STATUS',G_INTF_STATUS_TOBE_PROCESS);
4862     ------------------------------------------------------------------------
4863     --  Execute to get the Item User-Defined Attr values.
4864     ------------------------------------------------------------------------
4865     l_cursor_execute := DBMS_SQL.EXECUTE(l_cursor_attr_id_val);
4866 
4867     l_rows_per_attr_grp_indx := 0;
4868     ------------------------------------------------------------------------
4869     --  Loop for each row found in EBI
4870     ------------------------------------------------------------------------
4871     <<LIORUI_ebi_rows_loop>>
4872     LOOP --LOOP FOR CURSOR_ATTR_ID_VAL
4873 
4874       Write_Debug(l_api_name || 'LIORUI_ebi_rows_loop - begin');
4875 
4876 
4877       IF DBMS_SQL.FETCH_ROWS(l_cursor_attr_id_val)>0 THEN
4878 
4879         ------------------------------------------------------------------------
4880         --Increment Row Identifier per (Attribute Group + Row) Combination.
4881         ------------------------------------------------------------------------
4882         L_ATTR_GRP_ROW_IDENT  := L_ATTR_GRP_ROW_IDENT + 20;
4883 
4884         Write_Debug(l_api_name || 'ROW_FOUND : '||L_ATTR_GRP_ROW_IDENT);
4885 
4886         ------------------------------------------------------------------------
4887         -- First column is Transaction ID.
4888         ------------------------------------------------------------------------
4889         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 1, l_transaction_id);
4890         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 2, l_transaction_type);
4891         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 3, l_item_id_char);
4892         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 4, l_org_id_char);
4893         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 5, l_item_rev_id_char);
4894         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 6, l_item_num_char);
4895         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 7, l_org_code_char);
4896         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 8, l_item_rev_code_char);
4897         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 9, l_source_system_id);
4898         DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 10, l_source_system_ref);
4899 
4900         l_dummy := 0;
4901         l_supplier_site_id := NULL;
4902         l_supplier_id := NULL;
4903         l_supplier_name := NULL;
4904         l_supplier_number := NULL;
4905         l_supplier_site_name := NULL;
4906 
4907         IF(l_supplier_name_col IS NOT NULL) THEN
4908           DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 11 + l_dummy, l_supplier_name);
4909           l_dummy := l_dummy +1;
4910 
4911           IF(l_supplier_name IS NOT NULL) THEN
4912             BEGIN
4913               SELECT VENDOR_ID
4914                 INTO l_supplier_id
4915                 FROM AP_SUPPLIERS
4916                WHERE VENDOR_NAME = l_supplier_name;
4917             EXCEPTION
4918               WHEN NO_DATA_FOUND THEN
4919                 l_supplier_id:= NULL;
4920             END;
4921           END IF;
4922         END IF;
4923 
4924         IF(l_supplier_number_col IS NOT NULL) THEN
4925           DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 11 + l_dummy, l_supplier_number);
4926           l_dummy := l_dummy +1;
4927           IF(l_supplier_number IS NOT NULL) THEN
4928             BEGIN
4929                SELECT VENDOR_ID
4930                  INTO l_supplier_id
4931                  FROM AP_SUPPLIERS
4932                 WHERE SEGMENT1 = l_supplier_number;
4933             EXCEPTION
4934               WHEN NO_DATA_FOUND THEN
4935                 l_supplier_id:= NULL;
4936             END;
4937           END IF;
4938         END IF;
4939 
4940         IF(l_supplier_site_name_col IS NOT NULL) THEN
4941            l_dummy := l_dummy +1;
4942         END IF;
4943         ------------------------------------------------------------------------
4944         -- Loop to Bind the Data Types for the SELECT Columns.
4945         ------------------------------------------------------------------------
4946         <<LIORUI_data_types_loop_2>>
4947         FOR i IN 1..l_attr_id_table.COUNT LOOP
4948 
4949           Write_Debug(l_api_name || 'LIORUI_data_types_loop_2 - '||i);
4950 
4951           IF (  INSTR(l_attr_id_table(i),'$$UOM') = 0 ) THEN -- R12C UOM change: avoiding UOM entry here
4952 
4953           OPEN c_attr_grp_details(To_Number(l_attr_id_table(i)));
4954           FETCH c_attr_grp_details INTO
4955           l_attr_group_int_name, l_attr_int_name,l_attr_group_type,l_attr_data_type,l_uom_class;--Bug Fix 4630163(ISSUE2)
4956 
4957           Write_Debug(l_api_name || i||'=>'||l_attr_group_int_name||':'||l_attr_int_name||':'||l_attr_group_type);--Bug Fix 4630163(ISSUE2)
4958 
4959           l_attr_grp_has_data := FALSE;
4960 
4961           ------------------------------------------------------------------------
4962           -- If one more Attribute found for the Attribute Group.
4963           ------------------------------------------------------------------------
4964           IF c_attr_grp_details%FOUND THEN
4965 
4966             IF(l_supplier_site_name_col IS NOT NULL) THEN
4967               DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, 11 + l_dummy -1, l_supplier_site_name);
4968               IF(l_supplier_site_name IS NOT NULL AND l_supplier_id IS NOT NULL) THEN
4969                 BEGIN
4970 
4971       l_site_org_id := FND_PROFILE.VALUE('ORG_ID');
4972                   SELECT VENDOR_SITE_ID
4973                     INTO l_supplier_site_id
4974                     FROM AP_SUPPLIER_SITES_ALL
4975                    WHERE VENDOR_SITE_CODE = l_supplier_site_name
4976                      AND ORG_ID = l_site_org_id
4977                      AND VENDOR_ID = l_supplier_id;
4978                 EXCEPTION
4979                   WHEN NO_DATA_FOUND THEN
4980                     l_supplier_site_id:= NULL;
4981                 END;
4982               END IF;
4983             END IF;
4984 
4985             l_row_id_incr := 0;
4986             IF (l_data_level_id_table(i) IS NOT NULL AND l_data_level_id_table(i) <> 0) THEN
4987               l_row_id_incr := l_data_level_id_table(i)-43100;
4988             END IF;
4989             l_rows_per_attr_grp_indx := l_rows_per_attr_grp_indx + 1;
4990             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).DATA_SET_ID := p_data_set_id;
4991             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).TRANSACTION_ID := l_transaction_id;
4992             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).TRANSACTION_TYPE := l_transaction_type;
4993             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).INVENTORY_ITEM_ID := FND_NUMBER.CANONICAL_TO_NUMBER(l_item_id_char);
4994             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ORGANIZATION_ID := FND_NUMBER.CANONICAL_TO_NUMBER(l_org_id_char);
4995             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ITEM_NUMBER := l_item_num_char;
4996             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ORGANIZATION_CODE := l_org_code_char;
4997             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ROW_IDENTIFIER := L_ATTR_GRP_ROW_IDENT + l_row_id_incr;
4998             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE := l_attr_data_type;
4999             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_GROUP_NAME := l_attr_group_int_name;
5000             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_NAME := l_attr_int_name;
5001             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_GROUP_TYPE := l_attr_group_type;--Bug Fix 4630163(ISSUE2)
5002 
5003             -- Populate the REVISION Columns only if the Data Level of the AG is Revision
5004             IF ( l_data_level_id_table(i) = 43106 ) THEN
5005               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).REVISION := l_item_rev_code_char;
5006               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).REVISION_ID := FND_NUMBER.CANONICAL_TO_NUMBER(l_item_rev_id_char);
5007             ELSE
5008               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).REVISION := null;
5009               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).REVISION_ID := null;
5010             END IF;
5011 
5012             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
5013               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_VALUE := l_supplier_id;
5014             ELSE
5015               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK1_VALUE := null;
5016             END IF;
5017             IF (l_data_level_id_table(i) = 43104 OR l_data_level_id_table(i) = 43105) THEN
5018               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_VALUE := l_supplier_site_id;
5019             ELSE
5020         l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).PK2_VALUE := null;
5021             END IF;
5022 
5023             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).SOURCE_SYSTEM_ID := l_source_system_id;
5024             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).SOURCE_SYSTEM_REFERENCE := l_source_system_ref;
5025             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).DATA_LEVEL_ID := l_data_level_id_table(i);
5026             ------------------------------------------------------------------------
5027             -- Since TRANSACTION_ID, INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE,
5028             -- INSTANCE_PK3_VALUE are added to the SELECT before User-Defined
5029             -- Attrs, we need to adjust the index as follows.
5030             ------------------------------------------------------------------------
5031             l_actual_userattr_indx := i + 10 + l_dummy;
5032 
5033             Write_Debug(l_api_name || 'BEGIN: To Retrieve Attr Value at Position :'||l_actual_userattr_indx);
5034 
5035             ------------------------------------------------------------------------
5036             -- Depending upon the Data Type, populate corresponding field in the
5037             -- User-Defined Attribute Data record.
5038             ------------------------------------------------------------------------
5039             ------------------------------------------------------------------------
5040             -- Depending upon the Data Type, populate corresponding field in the
5041             -- User-Defined Attribute Data record.
5042             ------------------------------------------------------------------------
5043             -- bug: 5001315 Explicitly Nulling out the data columns. (this incorporates the fix for 4673865)
5044             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR := NULL;
5045             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_NUM := NULL;
5046             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_DATE := NULL;
5047             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE := NULL;--bugfix:6346771
5048             l_varchar_data := NULL;
5049             l_number_data := NULL;
5050             l_date_data := NULL;
5051             l_dummy_char := SUBSTR (l_intf_col_name_table(i), 1, 1);
5052 
5053             IF l_dummy_char = 'C' THEN
5054               DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_varchar_data);
5055               IF l_dummy_char = l_attr_data_type THEN
5056                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR := l_varchar_data;
5057               ELSE
5058                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE := l_varchar_data;
5059               END IF;
5060               Write_Debug(l_api_name || 'String Value =>'||l_varchar_data);
5061             ELSIF l_dummy_char = 'N' THEN
5062               DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_number_data);
5063               IF l_dummy_char = l_attr_data_type THEN
5064                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_NUM := l_number_data;
5065               ELSE
5066                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE := l_number_data;
5067               END IF;
5068               Write_Debug(l_api_name || 'Number Value =>'||l_number_data);
5069             ELSE --IF (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE = 'D') THEN
5070               DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_date_data);
5071               IF l_dummy_char = l_attr_data_type THEN
5072                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_DATE := l_date_data;
5073               ELSE
5074                 l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE := l_date_data;
5075               END IF;
5076               Write_Debug(l_api_name || 'Date Value =>'||l_date_data);
5077             END IF; --end: IF (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DATATYPE_CODE = 'C') THEN
5078 
5079       Write_Debug(l_api_name || 'END: Retrieved Attr Value');
5080 
5081             l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).INTF_COLUMN_NAME := l_intf_col_name_table(i);
5082 
5083             ------------------------------------------------------------------------
5084             -- Bug: 3025778 Modified If statment.
5085             -- Donot populate NULL Attribute value in the User-Defined Attrs
5086             -- Interface table.
5087             ------------------------------------------------------------------------
5088             IF ((l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR IS NULL) AND
5089                 (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_NUM IS NULL) AND
5090                 (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_DATE IS NULL) AND
5091                 (l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_DISP_VALUE IS NULL)
5092                ) THEN
5093               ------------------------------------------------------------------------
5094               -- If all attribute values are NULL value, then delete
5095               -- the row from PLSQL table.
5096               ------------------------------------------------------------------------
5097               l_usr_attr_data_tbl.DELETE(l_rows_per_attr_grp_indx);
5098               l_rows_per_attr_grp_indx := l_rows_per_attr_grp_indx - 1;
5099               Write_Debug(l_api_name || 'Due to NULL Att data, resetting back the PLSQL table index to : '||l_rows_per_attr_grp_indx);
5100 
5101             END IF; --end: IF ((l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_STR...
5102 
5103           END IF; --end: IF c_attr_grp_details%FOUND THEN
5104 
5105           CLOSE c_attr_grp_details;
5106         ELSE -- R12C UOM Changes:if uom column comes, previous row was the number col. so not increasing index
5107 
5108            l_varchar_data := null;
5109            l_actual_userattr_indx := l_actual_userattr_indx +1 ;
5110            DBMS_SQL.COLUMN_VALUE(l_cursor_attr_id_val, l_actual_userattr_indx, l_uom_meaning);
5111 
5112            IF (l_uom_class IS NOT NULL AND l_uom_meaning IS NOT NULL) THEN --BugFix:6271824
5113              SELECT UOM_CODE
5114                INTO l_varchar_data
5115                FROM MTL_UNITS_OF_MEASURE_VL
5116               WHERE UOM_CLASS = l_uom_class
5117                 AND UNIT_OF_MEASURE_TL = l_uom_meaning; -- Bug	6397849
5118            END IF;
5119            -- fix for bug 9044423 added IF condition
5120            IF (l_uom_meaning IS NOT NULL) THEN
5121               l_usr_attr_data_tbl(l_rows_per_attr_grp_indx).ATTR_VALUE_UOM := l_varchar_data;
5122            END IF;
5123          Write_Debug(l_api_name || 'UOM CODE set  ' || l_varchar_data || ' at index ' || l_rows_per_attr_grp_indx);
5124 
5125         END IF ; --  end IF (  INSTR(l_attr_id_table(i),'$$UOM') = 0 ) -- R12C UOM Changes:
5126 
5127         END LOOP LIORUI_data_types_loop_2; --end: FOR i IN 1..l_attr_id_table.COUNT LOOP
5128 
5129       ELSE --end: IF DBMS_SQL.FETCH_ROWS(l_cursor_attr_id_val)>0 THEN
5130 
5131         Write_Debug(l_api_name || 'Nothing Found (or) Done.');
5132         EXIT;
5133 
5134       END IF; --IF DBMS_SQL.FETCH_ROWS(l_cursor_attr_id_val)>0 THEN
5135 
5136     END LOOP LIORUI_ebi_rows_loop; --END: LOOP FOR CURSOR_ATTR_ID_VAL
5137 
5138     l_attr_id_table.DELETE;
5139     l_intf_col_name_table.DELETE;
5140     l_data_level_id_table.DELETE;
5141 
5142     DBMS_SQL.CLOSE_CURSOR(l_cursor_attr_id_val);
5143 
5144     -------------------------------------------------------------------
5145     -- Loop for all the rows to be inserted per Attribute Group.
5146     -------------------------------------------------------------------
5147     <<LIORUI_attrs_loop>>
5148     FOR i IN 1..l_rows_per_attr_grp_indx LOOP
5149 
5150       Write_Debug(l_api_name || 'LIORUI_attrs_loop - ' || i);
5151 
5152       -------------------------------------------------------------------------
5153       -- Fix for Bug# 3808455. To avoid the following error:
5154       -- ORA-01401: inserted value too large for column
5155       -- [This is done because ATTR_DISP_VALUE size is 1000 Chars]
5156       -------------------------------------------------------------------------
5157       IF ( LENGTH(l_usr_attr_data_tbl(i).ATTR_VALUE_STR) > 1000 ) THEN
5158           l_token_tbl_one(1).token_name  := 'VALUE';
5159           l_token_tbl_one(1).token_value := l_usr_attr_data_tbl(i).ATTR_VALUE_STR;
5160 
5161           Error_Handler.Add_Error_Message
5162             ( p_message_name   => 'EGO_STR_ATTR_LEN_GT1000_ERR'
5163             , p_application_id => 'EGO'
5164             , p_message_text   => NULL
5165             , p_token_tbl      => l_token_tbl_one
5166             , p_message_type   => 'E'
5167             , p_row_identifier => l_usr_attr_data_tbl(i).TRANSACTION_ID
5168             , p_table_name     => G_ERROR_TABLE_NAME
5169             , p_entity_id      => NULL
5170             , p_entity_index   => NULL
5171             , p_entity_code    => G_ERROR_ENTITY_CODE
5172             );
5173 
5174       ---------------------------------------------------------------------------
5175       -- Put multiple ELSIF <<condition>> here, to report Errors with the Data.
5176       -- Finally, ELSE condition below means that Data is ~Error Free~ and ready
5177       -- to be Inserted.
5178       ---------------------------------------------------------------------------
5179 
5180       ELSE --IF ( LENGTH(l_usr_attr_data_tbl(i)..
5181 
5182         ------------------------------------------------------------------------
5183         -- Populate l_varchar_data, to later populate in ATTR_DISP_VALUE
5184         ------------------------------------------------------------------------
5185 --        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
5186 --           l_varchar_data := l_usr_attr_data_tbl(i).ATTR_VALUE_STR;
5187 --        ELSE
5188 --          l_varchar_data := NULL;
5189 --        END IF;
5190         IF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'C') THEN
5191 --           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
5192               l_varchar_data := NVL(l_usr_attr_data_tbl(i).ATTR_VALUE_STR,l_usr_attr_data_tbl(i).ATTR_DISP_VALUE);
5193 --           END IF;
5194         ELSIF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'N') THEN
5195 --           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
5196               l_varchar_data := NVL(To_char(l_usr_attr_data_tbl(i).ATTR_VALUE_NUM),l_usr_attr_data_tbl(i).ATTR_DISP_VALUE);
5197               BEGIN
5198                 IF (TO_NUMBER(l_varchar_data) = EGO_ITEM_PUB.G_INTF_NULL_NUM) THEN
5199                   l_varchar_data := EGO_USER_ATTRS_BULK_PVT.G_NULL_NUM_VAL_STR;
5200                 END IF;
5201               EXCEPTION
5202                 WHEN OTHERS THEN
5203                   -- the value needs to be checked against value set
5204                   NULL;
5205               END;
5206               Write_Debug(l_api_name || 'l_varchar_data => ' || l_varchar_data);
5207 --           END IF;
5208         ELSIF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'D') THEN
5209            IF (l_usr_attr_data_tbl(i).ATTR_VALUE_DATE  = G_EXCEL_NULL_DATE) THEN
5210               l_varchar_data := To_Char(EGO_ITEM_PUB.G_INTF_NULL_DATE,G_DATE_FORMAT);
5211             ELSE
5212               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);
5213            END IF;
5214         END IF; --end: IF (l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE = 'C') THEN
5215 
5216         -----------------------------------------------------------------------------------
5217         -- Checking for the transaction_type, if CREATE/UPDATE populate
5218         -- EGO_ITM_USR_ATTR_INTRFC with SYNC else the user-given Transaction_type is passed
5219         -----------------------------------------------------------------------------------
5220         l_transaction_type := l_usr_attr_data_tbl(i).TRANSACTION_TYPE;
5221         /* Bug 12656687 - Start. Will change the transaction type to SYNC only if user has given UPDATE. */
5222         -- IF (l_transaction_type = G_CREATE OR l_transaction_type = G_UPDATE) THEN
5223         IF (l_transaction_type = G_UPDATE) THEN
5224         -- Bug 12656687 : End
5225            l_transaction_type := G_SYNC;
5226         END IF; --transaction_type check (Bug5201097)
5227 
5228         ----------------------------------------------------------------------
5229         -- 1)
5230         -- The User-Defined Attrs BO has some validation changes, which
5231         -- mandates users to pass in the display value, so that BO does the
5232         -- conversion to internal value. To support that change, I need to
5233         -- populate ATTR_DISP_VALUE instead of internal columns :
5234         -- ATTR_VALUE_STR, ATTR_VALUE_DATE, ATTR_VALUE_NUM.
5235         -- Above change to populate ATTR_DISP_VALUE was advised by DAARENA
5236         -- (Dylan Arena)
5237         --
5238         -- 2)
5239         -- TRANSACTION_TYPE, PROCESS_STATUS need *not* be populated as they
5240         -- are defaulted by the User Attrs PLSQL Program
5241         ----------------------------------------------------------------------
5242 
5243         INSERT INTO EGO_ITM_USR_ATTR_INTRFC
5244         (
5245          DATA_SET_ID          ,
5246          TRANSACTION_ID       ,
5247          TRANSACTION_TYPE     ,
5248          INVENTORY_ITEM_ID    ,
5249          ORGANIZATION_ID      ,
5250          REVISION_ID          ,
5251          ITEM_NUMBER          ,
5252          ORGANIZATION_CODE    ,
5253          REVISION             ,
5254          ROW_IDENTIFIER       ,
5255          ATTR_GROUP_INT_NAME  ,
5256          ATTR_INT_NAME        ,
5257          ATTR_DISP_VALUE      ,
5258          PROCESS_STATUS       ,
5259          SOURCE_SYSTEM_ID     ,
5260          SOURCE_SYSTEM_REFERENCE,
5261          ATTR_GROUP_TYPE,         --Bug Fix 4630163(ISSUE2)
5262          ITEM_CATALOG_GROUP_ID,    --Bug Fix 5179741
5263          DATA_LEVEL_ID       ,
5264          PK1_VALUE           ,
5265          PK2_VALUE           ,
5266          ATTR_VALUE_UOM          --R12C UOM Changes
5267         )
5268         VALUES
5269         (
5270          l_usr_attr_data_tbl(i).DATA_SET_ID,
5271          l_usr_attr_data_tbl(i).TRANSACTION_ID,
5272          l_transaction_type,                  --l_usr_attr_data_tbl(i).TRANSACTION_TYPE,
5273          l_usr_attr_data_tbl(i).INVENTORY_ITEM_ID,
5274          l_usr_attr_data_tbl(i).ORGANIZATION_ID,
5275          l_usr_attr_data_tbl(i).REVISION_ID,
5276          l_usr_attr_data_tbl(i).ITEM_NUMBER,
5277          l_usr_attr_data_tbl(i).ORGANIZATION_CODE,
5278          l_usr_attr_data_tbl(i).REVISION,
5279          l_usr_attr_data_tbl(i).ROW_IDENTIFIER,
5280          l_usr_attr_data_tbl(i).ATTR_GROUP_NAME,
5281          l_usr_attr_data_tbl(i).ATTR_NAME,
5282          l_varchar_data,                                     -- ATTR_DISP_VALUE
5283          G_PROCESS_STATUS,
5284          l_usr_attr_data_tbl(i).SOURCE_SYSTEM_ID,
5285          l_usr_attr_data_tbl(i).SOURCE_SYSTEM_REFERENCE,
5286          l_usr_attr_data_tbl(i).ATTR_GROUP_TYPE,        --Bug Fix 4630163(ISSUE2)
5287          G_CATALOG_GROUP_ID,                             --Bug Fix 5179741
5288          l_usr_attr_data_tbl(i).DATA_LEVEL_ID,
5289          l_usr_attr_data_tbl(i).PK1_VALUE,
5290          l_usr_attr_data_tbl(i).PK2_VALUE,
5291          l_usr_attr_data_tbl(i).ATTR_VALUE_UOM  --R12C UOM Changes
5292         );
5293 
5294         Write_Debug(l_api_name || 'DataSetID       ['||l_usr_attr_data_tbl(i).DATA_SET_ID||'] '||G_NEWLINE||
5295                     l_api_name || 'TransactionID   ['||l_usr_attr_data_tbl(i).TRANSACTION_ID||'] '||G_NEWLINE||
5296                     l_api_name || 'TransactionType   ['||l_usr_attr_data_tbl(i).TRANSACTION_TYPE||'] '||G_NEWLINE||
5297                     l_api_name || 'InventoryItemID ['||l_usr_attr_data_tbl(i).INVENTORY_ITEM_ID||'] '||G_NEWLINE||
5298                     l_api_name || 'OrganizationID  ['||l_usr_attr_data_tbl(i).ORGANIZATION_ID||'] '||G_NEWLINE||
5299                     l_api_name || 'RevisionID      ['||l_usr_attr_data_tbl(i).REVISION_ID||'] '||G_NEWLINE||
5300                     l_api_name || 'ItemNumber      ['||l_usr_attr_data_tbl(i).ITEM_NUMBER||'] '||G_NEWLINE||
5301                     l_api_name || 'OrganizationCode['||l_usr_attr_data_tbl(i).ORGANIZATION_CODE||'] '||G_NEWLINE||
5302                     l_api_name || 'Revision        ['||l_usr_attr_data_tbl(i).REVISION||'] '||G_NEWLINE||
5303                     l_api_name || 'RowIdentifier   ['||l_usr_attr_data_tbl(i).ROW_IDENTIFIER||'] '||G_NEWLINE||
5304                     l_api_name || 'AttrGroupType   ['||l_usr_attr_data_tbl(i).ATTR_GROUP_TYPE||'] '||G_NEWLINE||--Bug Fix 4630163(ISSUE2)
5305                     l_api_name || 'AttrGroupName   ['||l_usr_attr_data_tbl(i).ATTR_GROUP_NAME||'] '||G_NEWLINE||
5306                     l_api_name || 'AttrName        ['||l_usr_attr_data_tbl(i).ATTR_NAME||'] '||G_NEWLINE||
5307                     l_api_name || ': Populated ATTR_DISP_VALUE of DataType['||l_usr_attr_data_tbl(i).ATTR_DATATYPE_CODE||'] => '||l_varchar_data||G_NEWLINE||
5308                     l_api_name || ' Catalog Group ID ['||G_CATALOG_GROUP_ID||']');
5309 
5310       END IF; --end: IF ( LENGTH(l_usr_attr_data_tbl(i)..
5311 
5312     END LOOP LIORUI_attrs_loop; --FOR i IN 1..l_usr_attr_data_tbl.COUNT LOOP
5313 
5314     Write_Debug(l_api_name || 'EIAI: Populated the Item / Item-Revision User-Defined Attr Values for Attribute Group : '||l_attr_group_int_name);
5315 
5316   END LOOP LIORUI_attr_groups_loop; --FOR c_attr_grp_rec IN c_user_attr_group_codes
5317 
5318   Write_Debug(l_api_name || 'EIAI: DONE Populating the Item / Item-Revision User-Defined Attr Values');
5319 
5320   Write_Debug(l_api_name || 'END load_itm_or_rev_usrattr_intf()');
5321 
5322 
5323  EXCEPTION
5324    WHEN OTHERS THEN
5325       x_retcode := G_STATUS_ERROR;
5326       x_errbuff := SUBSTRB(SQLERRM, 1,240);
5327       Write_Debug(l_api_name || 'Load_itm_or_rev_usrattr_intf : EXCEPTION HAPPENED => '||x_errbuff);
5328       RAISE;
5329 
5330 END load_itm_or_rev_usrattr_intf;
5331 
5332 --================================================================================--
5333 -- 11.5.10 New Functionality: Item Operational Attributes Bulkload (bug# 3293098) --
5334 -- PPEDDAMA (1/31/2004)                                                           --
5335 --================================================================================--
5336 
5337   ---------------------------------------------------------------
5338   --This method populates Item Operational attributes in MSII.
5339   ---------------------------------------------------------------
5340 
5341 PROCEDURE load_item_oper_attr_values
5342                (
5343                  p_resultfmt_usage_id    IN         NUMBER
5344                 ) IS
5345 
5346     -- Start OF comments
5347     -- API name  : Populate MSII Item Interface Lines
5348     -- Pre-reqs  : None
5349     -- FUNCTION  : Populate and Loads Item operational attribute values in MSII.
5350     --             These operational attributes made available in Item Search Results
5351     --             through User-Defined Attributes framework.
5352     --
5353     --             Errors are populated in MTL_INTERFACE_ERRORS
5354     --
5355 
5356   ------------------------------------------------------------------------
5357   -- To get the count of Item Operational Attr Groups Result Format.    --
5358   ------------------------------------------------------------------------
5359   CURSOR c_item_oper_attr_grp_count (c_resultfmt_usage_id  IN  NUMBER) IS
5360     SELECT count(distinct(To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1))))
5361     FROM   ego_results_fmt_usages
5362     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
5363      AND attribute_code LIKE '%$$%'
5364      -- Following statement fetches the Attribute Group Id --
5365      AND To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) IN
5366      (
5367         SELECT ATTR_GROUP_ID
5368         FROM   EGO_ATTR_GROUPS_V
5369         WHERE  ATTR_GROUP_TYPE = G_ERP_ATTR_GROUP_TYPE
5370          AND   APPLICATION_ID = G_APPLICATION_ID
5371      );
5372 
5373   ------------------------------------------------------------------------
5374   -- To get the Item Operational Attr Groups in the Result Format.      --
5375   ------------------------------------------------------------------------
5376   CURSOR c_item_oper_attr_grp_ids (c_resultfmt_usage_id  IN  NUMBER) IS
5377     SELECT distinct(To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1))) OPER_ATTR_GRP_ID
5378     FROM   ego_results_fmt_usages
5379     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
5380      AND attribute_code LIKE '%$$%'
5381      -- Following statement fetches the Attribute Group Id --
5382      AND To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) IN
5383      (
5384         SELECT ATTR_GROUP_ID
5385         FROM   EGO_ATTR_GROUPS_V
5386         WHERE  ATTR_GROUP_TYPE = G_ERP_ATTR_GROUP_TYPE
5387          AND   APPLICATION_ID = G_APPLICATION_ID
5388      );
5389 
5390   ---------------------------------------------------------------
5391   -- To get the Item Operational attr columns in the Result Format.
5392   ---------------------------------------------------------------
5393   CURSOR c_item_oper_attr_intf_cols ( c_resultfmt_usage_id  IN  NUMBER
5394                                      ,c_attr_group_id       IN  NUMBER
5395                                     ) IS
5396     -- First column is the Attibute Id --
5397     SELECT   To_Number(SUBSTR(attribute_code, INSTR(attribute_code, '$$')+2))
5398            , intf_column_name
5399     FROM   ego_results_fmt_usages
5400     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
5401      AND   INSTR(attribute_code, '$$UOM') = 0  -- R12C UOM Change : ignoring uom columns in this case:
5402      AND   To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, '$$') - 1)) = c_attr_group_id;
5403 
5404   l_item_oper_attr_sql     VARCHAR2(1000) :=
5405        ' SELECT   To_Number(SUBSTR(attribute_code, INSTR(attribute_code, ''$$'')+2))   '
5406     || '        , intf_column_name '
5407     || ' FROM   ego_results_fmt_usages '
5408     || ' WHERE  resultfmt_usage_id = :RESULTFMT_USAGE_ID '
5409     || ' AND   INSTR(attribute_code, ''$$UOM'') = 0 '  -- R12C UOM Change : ignoring uom columns in this case:
5410     || ' AND    To_Number(SUBSTR(attribute_code, 1, INSTR(attribute_code, ''$$'') - 1)) = :ATTR_GROUP_ID ';
5411 
5412   -------------------------------------------------------------------------
5413   -- To get the Attribute Name (Table performs better than EGO_ATTRS_V)  --
5414   -------------------------------------------------------------------------
5415   CURSOR c_attr_name ( c_attr_id  IN  NUMBER) IS
5416     SELECT ext.application_column_name , TL.FORM_LEFT_PROMPT
5417     FROM   ego_fnd_df_col_usgs_ext ext, FND_DESCR_FLEX_COL_USAGE_TL TL
5418     WHERE  ext.attr_id = c_attr_id
5419     AND    TL.LANGUAGE = USERENV('LANG')
5420     AND    EXT.DESCRIPTIVE_FLEXFIELD_NAME  = TL.DESCRIPTIVE_FLEXFIELD_NAME
5421     AND    EXT.DESCRIPTIVE_FLEX_CONTEXT_CODE  = TL.DESCRIPTIVE_FLEX_CONTEXT_CODE
5422     AND    EXT.APPLICATION_COLUMN_NAME  = TL.APPLICATION_COLUMN_NAME
5423     AND    EXT.APPLICATION_ID = TL.APPLICATION_ID; -- Bug 6531938
5424 
5425      -----------------------------------------------------------
5426      --      local objects and object variables               --
5427      -----------------------------------------------------------
5428 
5429      l_attr_metadata_table           EGO_ATTR_METADATA_TABLE;
5430      l_attr_metadata_obj             EGO_ATTR_METADATA_OBJ;
5431      l_user_attr_data_obj            EGO_USER_ATTR_DATA_OBJ;
5432      l_user_attr_data_table          EGO_USER_ATTR_DATA_TABLE;
5433      l_attr_group_metadata_obj       EGO_ATTR_GROUP_METADATA_OBJ;
5434      l_ext_table_metadata_obj        EGO_EXT_TABLE_METADATA_OBJ;
5435      l_pk_column_name_value_pairs    EGO_COL_NAME_VALUE_PAIR_ARRAY;
5436 
5437      ----------------------------------------
5438      --      local variables               --
5439      ----------------------------------------
5440 
5441      l_item_oper_attr_grp_count            NUMBER;
5442      l_item_oper_attr_grp_id               NUMBER;
5443      l_count                               NUMBER(5);
5444      l_indx                                NUMBER(15);
5445      l_transaction_id                      NUMBER(15);
5446      l_object_id                           NUMBER(5);
5447 
5448      l_dyn_sql                             VARCHAR2(10000);
5449      l_item_id_char                        VARCHAR2(15);
5450      l_org_id_char                         VARCHAR2(15);
5451      l_trans_type_char                     VARCHAR2(15);
5452      l_attr_name                           VARCHAR2(100);
5453 
5454      l_attr_id_table                   DBMS_SQL.NUMBER_TABLE;
5455      l_attr_disp_name_table            DBMS_SQL.VARCHAR2_TABLE;
5456      l_intf_col_table                  DBMS_SQL.VARCHAR2_TABLE;
5457      l_attr_disp_val_table             DBMS_SQL.VARCHAR2_TABLE;
5458      l_attr_int_val_table              DBMS_SQL.VARCHAR2_TABLE;
5459      l_msii_col_table                  DBMS_SQL.VARCHAR2_TABLE;
5460 
5461      -- Example Data Types to be used in Bind Variable. --
5462      l_varchar_example        VARCHAR2(1000);
5463      l_number_example         NUMBER;
5464      l_date_example           DATE;
5465 
5466      -- Actual Data to store corresponding data type value. --
5467      l_varchar_data           VARCHAR2(1000);
5468      l_number_data            NUMBER;
5469 
5470      -- DBMS_SQL Open Cursor integers. --
5471      l_cursor_oper_attr       INTEGER;
5472      l_execute                INTEGER;
5473 
5474      -- Bug# 13816809
5475      l_dyn_sql_update_msii             VARCHAR2(10000);
5476      l_cursor_update_msii              INTEGER;             -- use for update MSII by dynamic sql
5477      l_error_indicator                 BOOLEAN := FALSE;    -- indicate if int value is incorrect when update MSII: TRUE for incorrect
5478 
5479      --API return parameters
5480      l_retcode               VARCHAR2(10);
5481      l_errbuff               VARCHAR2(2000);
5482      l_ebi_err_msg           VARCHAR2(2000);
5483      l_dyn_sql_ebi           VARCHAR2(2000);
5484 
5485 BEGIN
5486 
5487    --------------------------------------------------------------------------------
5488    -- Fetch the Object Id. If not found, SQL exception gets thrown.              --
5489    --------------------------------------------------------------------------------
5490    SELECT OBJECT_ID
5491      INTO l_object_id
5492    FROM   FND_OBJECTS
5493    WHERE  OBJ_NAME = G_EGO_ITEM_OBJ_NAME;
5494 
5495   l_ext_table_metadata_obj :=  EGO_USER_ATTRS_COMMON_PVT.Get_Ext_Table_Metadata (l_object_id);
5496 
5497    --------------------------------------------------------------------------------
5498    -- Fetch the count of Operational Attribute Groups in the Result Format  --
5499    --------------------------------------------------------------------------------
5500    OPEN c_item_oper_attr_grp_count(p_resultfmt_usage_id);
5501    FETCH c_item_oper_attr_grp_count INTO l_item_oper_attr_grp_count;
5502    IF c_item_oper_attr_grp_count%NOTFOUND THEN
5503      ----------------------------------------------------------------------------
5504      -- There are *no* operational attribute groups to load. Hence return. --
5505      ----------------------------------------------------------------------------
5506      Write_Debug('load_item_oper_attr_values: There are *NO* Operational Attribute Groups to load! Hence RETURNing!!');
5507      RETURN;
5508 
5509    END IF;
5510    CLOSE c_item_oper_attr_grp_count;
5511 
5512    IF (l_item_oper_attr_grp_count > 0) THEN
5513 
5514      FOR attr_grp_id_rec IN c_item_oper_attr_grp_ids(p_resultfmt_usage_id)
5515      LOOP
5516       IF (attr_grp_id_rec.OPER_ATTR_GRP_ID IS NOT NULL) THEN
5517 
5518         ------------------------------------------------------------------------------
5519         -- Deleting all the earlier retrieved rows from these temp PLSQL tables,
5520         -- and Starting afresh.
5521         -- NOTE: l_attr_id_table.COUNT will be >0, only from second exec of the loop.
5522         ------------------------------------------------------------------------------
5523         IF (l_attr_id_table.COUNT > 0) THEN
5524           l_attr_id_table.DELETE;
5525           l_intf_col_table.DELETE;
5526         END IF; --end: IF (l_attr_id_table.COUNT > 0)
5527 
5528         ----------------------------------------------------------------------------
5529         -- Fetch the Attr Group Meta Data object.                                 --
5530         -- Object will be retained until per Attr Group operational attribute     --
5531         -- values for all rows are processed.                                    --
5532         ----------------------------------------------------------------------------
5533         l_attr_group_metadata_obj :=
5534         EGO_USER_ATTRS_COMMON_PVT.Get_Attr_Group_Metadata (
5535               p_attr_group_id       => attr_grp_id_rec.OPER_ATTR_GRP_ID
5536              ,p_application_id      => G_APPLICATION_ID
5537              ,p_attr_group_type     => G_ERP_ATTR_GROUP_TYPE
5538              );
5539 
5540         ----------------------------------------------------------------------------
5541         -- Fetch the Attr Group Meta Data table.                                  --
5542         -- Table will be retained until per Attr Group operational attribute     --
5543         -- values for all rows are processed.                                    --
5544         ----------------------------------------------------------------------------
5545         l_attr_metadata_table := l_attr_group_metadata_obj.attr_metadata_table;
5546 
5547         ----------------------------------------------------------------------------
5548         -- Fetch the Oper Attrs IDs, Intf Column names.                           --
5549         ----------------------------------------------------------------------------
5550         Write_Debug(l_item_oper_attr_sql);
5551 
5552         l_cursor_oper_attr := DBMS_SQL.OPEN_CURSOR;
5553         DBMS_SQL.PARSE(l_cursor_oper_attr, l_item_oper_attr_sql, DBMS_SQL.NATIVE);
5554         DBMS_SQL.DEFINE_ARRAY(
5555                            c           => l_cursor_oper_attr -- cursor --
5556                          , position    => 1                  -- select position --
5557                          , n_tab       => l_attr_id_table    -- table of numbers --
5558                          , cnt         => 2500               -- rows requested --
5559                          , lower_bound => 1                  -- start at --
5560                              );
5561         DBMS_SQL.DEFINE_ARRAY(
5562                            c           => l_cursor_oper_attr -- cursor --
5563                          , position    => 2                  -- select position --
5564                          , c_tab       => l_intf_col_table   -- table of varchar --
5565                          , cnt         => 2500               -- rows requested --
5566                          , lower_bound => 1                  -- start at --
5567                              );
5568 
5569         DBMS_SQL.BIND_VARIABLE(l_cursor_oper_attr,':RESULTFMT_USAGE_ID', p_resultfmt_usage_id);
5570         DBMS_SQL.BIND_VARIABLE(l_cursor_oper_attr,':ATTR_GROUP_ID', attr_grp_id_rec.OPER_ATTR_GRP_ID);
5571         Write_Debug('Binding :RESULTFMT_USAGE_ID to => '||p_resultfmt_usage_id);
5572         Write_Debug('Binding :ATTR_GROUP_ID to => '||attr_grp_id_rec.OPER_ATTR_GRP_ID);
5573 
5574         l_execute := DBMS_SQL.EXECUTE(l_cursor_oper_attr);
5575         l_count := DBMS_SQL.FETCH_ROWS(l_cursor_oper_attr);
5576         DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 1, l_attr_id_table);
5577         DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 2, l_intf_col_table);
5578 
5579         Write_Debug('load_item_oper_attr_values: Retrieved rows => '||To_char(l_count));
5580         DBMS_SQL.CLOSE_CURSOR(l_cursor_oper_attr);
5581 
5582 
5583         ------------------------------------------ Bug#13816809: (HIGH SQL VERSION COUNT PROBLEM) --------------------------------------------
5584 
5585         -- Since one group ids have the some update cols in msii, we can use one  --
5586         -- dynamic sql with bind variables to share one cursor                    --
5587         -- ...
5588         ----------------------------------------------------------------------------
5589 
5590         -- bug 4699499 deleting the msii column table
5591         IF (l_msii_col_table.COUNT > 0) THEN
5592           Write_Debug('load_item_oper_attr_values: Deleting msii col table ');
5593           l_msii_col_table.DELETE;
5594         END IF; --end: IF (l_msii_col_table.COUNT > 0)
5595 
5596         --------------------------------------------------------------------------------
5597         -- Fetch the Attribute name based on the attribute id.                        --
5598         --------------------------------------------------------------------------------
5599         FOR i in 1..l_attr_id_table.COUNT LOOP
5600 
5601           OPEN c_attr_name(l_attr_id_table(i));
5602           FETCH c_attr_name INTO l_attr_name, l_attr_disp_name_table(i);
5603           IF c_attr_name%NOTFOUND THEN
5604 
5605             ----------------------------------------------------------------------------
5606             -- This shouldnot happen. All Oper Attr Ids should map to Attr names.     --
5607             -- Print the following debug statement and RETURN.                        --
5608             ----------------------------------------------------------------------------
5609             Write_Debug('load_item_oper_attr_values: Houston we have a problem! No Attr Name found!!!');
5610             RETURN;
5611           END IF; -- IF c_attr_name%NOTFOUND THEN
5612           CLOSE c_attr_name;
5613           Write_Debug('load_item_oper_attr_values: l_attr_name => '||l_attr_name);
5614 
5615           --------------------------------------------------------------------------------
5616           -- The Attribute name is the MSII DB Column name.                             --
5617           --------------------------------------------------------------------------------
5618           l_msii_col_table(i) := l_attr_name;
5619 
5620         END LOOP;
5621 
5622         --------------------------------------------------------------------------------
5623         -- Update MSII with the internal values.                                      --
5624         -- Use dynamic sql with bind variable to share cursor for all items.          --
5625         -- Construct the sql text once and bind variables for each item.              --
5626         --------------------------------------------------------------------------------
5627         l_dyn_sql_update_msii := 'UPDATE MTL_SYSTEM_ITEMS_INTERFACE SET ';
5628         l_cursor_update_msii := DBMS_SQL.OPEN_CURSOR;
5629 
5630         -- construct dynamic sql
5631         FOR i in 1..l_msii_col_table.COUNT LOOP
5632           IF (i <> l_msii_col_table.COUNT) THEN
5633             l_dyn_sql_update_msii := l_dyn_sql_update_msii || l_msii_col_table(i) || ' = :' || l_msii_col_table(i) || ', ';
5634           ELSE
5635             l_dyn_sql_update_msii := l_dyn_sql_update_msii || l_msii_col_table(i) || ' = :' || l_msii_col_table(i);
5636           END IF;
5637         END LOOP; --FOR i in 1..l_msii_col_table.COUNT LOOP
5638         l_dyn_sql_update_msii := l_dyn_sql_update_msii || ' WHERE TRANSACTION_ID = :TRANSACTION_ID';
5639 
5640         Write_Debug(l_dyn_sql);
5641         DBMS_SQL.PARSE(l_cursor_update_msii, l_dyn_sql_update_msii, DBMS_SQL.NATIVE);
5642 
5643         ------------------------------------------ Bug#13816809: (HIGH SQL VERSION COUNT PROBLEM) --------------------------------------------
5644 
5645 
5646         ----------------------------------------------------------------------------
5647         -- Fetch the Oper Attrs values from EGO_BULKLOAD_INTF.                    --
5648         ----------------------------------------------------------------------------
5649 
5650         l_cursor_oper_attr := DBMS_SQL.OPEN_CURSOR;
5651         l_dyn_sql := ' SELECT ';
5652         l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID , ';
5653         l_dyn_sql := l_dyn_sql || ' UPPER(TRANSACTION_TYPE) , ';
5654         l_dyn_sql := l_dyn_sql || ' INSTANCE_PK1_VALUE , ';
5655         l_dyn_sql := l_dyn_sql || ' INSTANCE_PK2_VALUE , ';
5656         FOR i in 1..l_attr_id_table.COUNT LOOP
5657           IF (i <> l_attr_id_table.COUNT) THEN
5658             l_dyn_sql := l_dyn_sql || l_intf_col_table(i) || ' , ';
5659         ELSE
5660             l_dyn_sql := l_dyn_sql || l_intf_col_table(i) || '  ';
5661           END IF;
5662         END LOOP; --FOR (i in 1..l_attr_id_table.COUNT) LOOP
5663         l_dyn_sql := l_dyn_sql || ' FROM   EGO_BULKLOAD_INTF ';
5664         l_dyn_sql := l_dyn_sql || ' WHERE  RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID ';
5665         l_dyn_sql := l_dyn_sql || '  AND   PROCESS_STATUS = 1 ';
5666 
5667         Write_Debug(l_dyn_sql);
5668         DBMS_SQL.PARSE(l_cursor_oper_attr, l_dyn_sql, DBMS_SQL.NATIVE);
5669 
5670         ----------------------------------------------------------------------------
5671         -- Setting the Data type for Oper Attrs values before Select.             --
5672         ----------------------------------------------------------------------------
5673         -- Setting Data Type for Trasaction ID --
5674         DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, 1, l_number_example);
5675         -- Setting Data Type for Transaction Type --
5676         DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, 2, l_varchar_example, 1000);
5677         --Setting Data Type for INSTANCE_PK1_VALUE (Item ID)
5678         DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, 3, l_varchar_example, 1000);
5679         --Setting Data Type for INSTANCE_PK2_VALUE (Org ID)
5680         DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, 4, l_varchar_example, 1000);
5681         FOR i in 1..l_attr_id_table.COUNT LOOP
5682           ------------------------------------------------------------------------------------
5683           -- Since TRANSACTION_ID, TRANSACTION_TYPE, INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE --
5684           -- are added to the SELECT before we need to adjust the index as follows.         --
5685           ------------------------------------------------------------------------------------
5686           l_indx := i + 4;
5687           DBMS_SQL.DEFINE_COLUMN(l_cursor_oper_attr, l_indx, l_varchar_example, 1000);
5688         END LOOP; --2nd: FOR (i in 1..l_attr_id_table.COUNT) LOOP
5689 
5690         ----------------------------------------------------------------------------
5691         -- Binding the ResultFmtUsageId and Executing the Query.                  --
5692         ----------------------------------------------------------------------------
5693         DBMS_SQL.BIND_VARIABLE(l_cursor_oper_attr,':RESULTFMT_USAGE_ID',p_resultfmt_usage_id);
5694         l_execute := DBMS_SQL.EXECUTE(l_cursor_oper_attr);
5695 
5696         LOOP --Loop for l_cursor_oper_attr
5697 
5698           IF DBMS_SQL.FETCH_ROWS(l_cursor_oper_attr)>0 THEN
5699 
5700             DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 1, l_transaction_id);
5701             DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 2, l_trans_type_char);
5702             DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 3, l_item_id_char);
5703             DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, 4, l_org_id_char);
5704 
5705             Write_Debug('load_item_oper_attr_values: l_trans_type_char => '||l_trans_type_char);
5706             ------------------------------------------------------------------------------------
5707             -- Prepare Primary Key Name Value pair object.                                    --
5708             -- In case of CREATE, pass in a blank object.                                     --
5709             ------------------------------------------------------------------------------------
5710               l_pk_column_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY
5711                                               (
5712                                                EGO_COL_NAME_VALUE_PAIR_OBJ('INVENTORY_ITEM_ID', l_item_id_char)
5713                                               ,EGO_COL_NAME_VALUE_PAIR_OBJ('ORGANIZATION_ID', l_org_id_char)
5714                                               );
5715 
5716             --------------------------------------------------------------------------------
5717             -- Create a table of Usr Attr Data objects that will be used for              --
5718             -- Display to Internal value conversions.                                     --
5719             --------------------------------------------------------------------------------
5720             l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
5721 
5722             FOR i in 1..l_attr_id_table.COUNT LOOP
5723               ------------------------------------------------------------------------------------
5724               -- Since TRANSACTION_ID, TRANSACTION_TYPE, INSTANCE_PK1_VALUE, INSTANCE_PK2_VALUE --
5725               -- are added to the SELECT before we need to adjust the index as follows.         --
5726               ------------------------------------------------------------------------------------
5727               l_indx := i + 4;
5728               DBMS_SQL.COLUMN_VALUE(l_cursor_oper_attr, l_indx, l_varchar_data);
5729               Write_Debug('load_item_oper_attr_values: String Value =>'||l_varchar_data);
5730 
5731               -- store the Display values in a plsql table --
5732               l_attr_disp_val_table(i) := l_varchar_data;
5733 
5734 
5735               ------------------------------------------------------------------------------------
5736               -- Prepare a table of l_user_attr_data_objects.                                   --
5737               -- Dylan's mail below on, why we need to get all the objects into the table       --
5738               -- l_user_attr_data_objects, before we start any disp-to-int value processing:    --                                --
5739               --                                                                                --
5740               -- Dylan's mail (Dated: 1/30/2004)                                                --
5741               -- It occurred to me that adding Attrs one by one as we go might not prove to be  --
5742               -- sufficient, because there's no guarantee we'll be processing the Attrs in      --
5743               -- their correct order: for e.g. If Attr2 required Attr1 for its ValueSet query, --
5744               -- what if we ended up processing Attr2 before Attr1?  In such a case, even if   --
5745               -- the user passed Attr1's value, our one by one method of adding elements to our --
5746               -- data table wouldn't work.                                                      --
5747               -- So it will probably be better to                                               --
5748               -- 1. Pull all Attrs for an AG                                                    --
5749               -- 2. Fetch their AG metadata (with call to EGO_USER_ATTRS_COMMON_PVT)                             --
5750               -- 3. Create Attr data elems for all passed values and add them to table          --
5751               -- 4. Then process Attrs in the AG                                                --
5752               ------------------------------------------------------------------------------------
5753               l_user_attr_data_obj := EGO_USER_ATTR_DATA_OBJ(
5754                                                   1                          --ROW_IDENTIFIER
5755                                                  ,l_msii_col_table(i)        --ATTR_INT_NAME
5756                                                  ,null                       --ATTR_VALUE_STR
5757                                                  ,null                       --ATTR_VALUE_NUM
5758                                                  ,null                       --ATTR_VALUE_DATE
5759                                                  ,l_attr_disp_val_table(i)   --ATTR_DISP_VALUE
5760                                                  ,null                       --ATTR_UNIT_OF_MEASURE
5761                                                  ,l_transaction_id           --TRANSACTION_ID
5762                                                  );
5763 
5764               l_user_attr_data_table.EXTEND();
5765               l_user_attr_data_table(l_user_attr_data_table.LAST) := l_user_attr_data_obj;
5766 
5767              END LOOP; --FOR (i in 1..l_attr_id_table.COUNT) LOOP
5768 
5769             --------------------------------------------------------------------------------
5770             -- Create a table of internal values for attributes that will be used to     --
5771             -- uploading into the MSII.                                                   --
5772             --------------------------------------------------------------------------------
5773             FOR i in 1..l_attr_id_table.COUNT LOOP
5774 
5775               ------------------------------------------------------------------------------------
5776               -- Get the Attribute Metadata Object, that will be used to check if the           --
5777               -- attribute needs Display to Internal value conversion.                          --
5778               ------------------------------------------------------------------------------------
5779               l_attr_metadata_obj := EGO_USER_ATTRS_COMMON_PVT.Find_Metadata_For_Attr
5780                                      (
5781                                       p_attr_metadata_table => l_attr_metadata_table
5782                                      ,p_attr_id             => l_attr_id_table(i)
5783                                      );
5784 
5785               ------------------------------------------------------------------------------------
5786               -- Derive the internal value by passing all the objects created above.            --
5787               -- Following is to check if there is a need for conversion.                       --
5788               ------------------------------------------------------------------------------------
5789               IF (l_attr_metadata_obj.VALIDATION_CODE = EGO_EXT_FWK_PUB.G_TABLE_VALIDATION_CODE OR
5790                   l_attr_metadata_obj.VALIDATION_CODE = EGO_EXT_FWK_PUB.G_TRANS_IND_VALIDATION_CODE OR
5791                   l_attr_metadata_obj.VALIDATION_CODE = EGO_EXT_FWK_PUB.G_INDEPENDENT_VALIDATION_CODE) THEN
5792 
5793                 l_attr_int_val_table(i) :=
5794                     EGO_USER_ATTRS_DATA_PVT.Get_Int_Val_For_Disp_Val
5795                           (
5796                            l_attr_metadata_obj              --EGO_ATTR_METADATA_OBJ
5797                           ,l_user_attr_data_table(i)        --EGO_USER_ATTR_DATA_OBJ
5798                           ,l_attr_group_metadata_obj        --EGO_ATTR_GROUP_METADATA_OBJ
5799                           ,l_ext_table_metadata_obj         --EGO_EXT_TABLE_METADATA_OBJ
5800                           ,l_pk_column_name_value_pairs     --EGO_COL_NAME_VALUE_PAIR_ARRAY
5801                           -- following is used in case of Revisions. --
5802                           ,NULL                             --EGO_COL_NAME_VALUE_PAIR_ARRAY (p_data_level_name_value_pairs)
5803                           ,G_ENTITY_ID                      --p_entity_id
5804                           ,NULL                             --p_entity_index
5805                           ,G_ENTITY_CODE                    --p_entity_code
5806                           ,l_user_attr_data_table           --EGO_USER_ATTR_DATA_TABLE
5807                           );
5808 
5809                 IF l_attr_disp_val_table(i) IS NOT NULL AND l_attr_int_val_table(i) IS NULL THEN
5810                   IF    l_attr_metadata_obj.data_type_code = 'C' AND
5811                         l_attr_disp_val_table(i) = EGO_ITEM_PUB.G_INTF_NULL_CHAR THEN
5812                      l_attr_int_val_table(i) :=  EGO_ITEM_PUB.G_INTF_NULL_CHAR;
5813                   ELSIF l_attr_metadata_obj.data_type_code = 'N' THEN
5814                     BEGIN
5815                       IF (l_attr_disp_val_table(i) = EGO_ITEM_PUB.G_INTF_NULL_CHAR OR
5816                           TO_NUMBER(l_attr_disp_val_table(i)) = EGO_ITEM_PUB.G_INTF_NULL_NUM
5817                          ) THEN
5818                         l_attr_int_val_table(i) :=  EGO_ITEM_PUB.G_INTF_NULL_NUM;
5819                       END IF;
5820                     EXCEPTION
5821                       WHEN OTHERS THEN
5822                         -- the value needs to be checked against value set
5823                         NULL;
5824                     END;
5825                   ELSIF l_attr_metadata_obj.data_type_code IN ('X','Y') THEN
5826                     BEGIN
5827                       IF (l_attr_disp_val_table(i) = EGO_ITEM_PUB.G_INTF_NULL_CHAR OR
5828                           TO_DATE(l_attr_disp_val_table(i),G_DATE_FORMAT) = EGO_ITEM_PUB.G_INTF_NULL_DATE
5829                          ) THEN
5830                         l_attr_int_val_table(i) :=  EGO_ITEM_PUB.G_INTF_NULL_DATE;
5831                       END IF;
5832                     EXCEPTION
5833                       WHEN OTHERS THEN
5834                         -- the value needs to be checked against value set
5835                         NULL;
5836                     END;
5837                   END IF;
5838                 END IF;
5839               ELSE
5840                  -- Value passed by user is Internal value --
5841                  l_attr_int_val_table(i) := l_attr_disp_val_table(i);
5842               END IF; --IF (l_attr_metadata_obj.VALIDATION_CODE ...
5843               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));
5844             END LOOP; --FOR (i in 1..l_attr_id_table.COUNT) LOOP
5845 
5846             --------------------------------------------------------------------------------
5847             -- Update MSII with the internal values.                                      --
5848             --                                                                            --
5849             -- Bug#13816809:                                                              --
5850             -- IF there are no flash errors THEN                                          --
5851             --    use share cursor l_cursor_update_msii to update                         --
5852             -- ELSE                                                                       --
5853             --    use l_dyn_sql with literals to update                                   --
5854             --                                                                            --
5855             -- By this way we can keep the error code flow the same as before.            --
5856             --------------------------------------------------------------------------------
5857 
5858             l_dyn_sql := 'UPDATE MTL_SYSTEM_ITEMS_INTERFACE ';
5859             l_dyn_sql := l_dyn_sql || ' SET  ';
5860 
5861             FOR i in 1..l_msii_col_table.COUNT LOOP
5862               -- flash errors where int val is not correct
5863               IF l_attr_disp_val_table(i) IS NOT NULL AND l_attr_int_val_table(i) IS NULL THEN
5864                 l_error_indicator := TRUE;
5865                 l_dyn_sql := l_dyn_sql || ' process_flag = '||G_VS_INVALID_ERR_STS;
5866                 l_dyn_sql := l_dyn_sql || ' , request_id  = '||G_REQUEST_ID;
5867                 FND_MESSAGE.set_name('EGO', 'EGO_IPI_INVALID_VALUE');
5868                 FND_MESSAGE.set_token('NAME', l_attr_disp_name_table(i));
5869                 FND_MESSAGE.set_token('VALUE',NVL(l_attr_disp_val_table(i),l_attr_int_val_table(i)));
5870                 l_ebi_err_msg := fnd_message.get();
5871                 l_dyn_sql_ebi := ' UPDATE ego_bulkload_intf ' ||
5872                                  ' SET '|| G_VAL_SET_CONV_ERR_COL ||' = '''||l_ebi_err_msg||''''||
5873                                  ' WHERE TRANSACTION_ID = ' || l_transaction_id;
5874                 EXECUTE IMMEDIATE l_dyn_sql_ebi;
5875                 EXIT;
5876               ELSE
5877                 IF (i <> l_msii_col_table.COUNT) THEN
5878                   l_dyn_sql := l_dyn_sql || l_msii_col_table(i) ||' =  ''' || l_attr_int_val_table(i) || ''' , ';
5879                 ELSE
5880                   l_dyn_sql := l_dyn_sql || l_msii_col_table(i) ||' =  ''' || l_attr_int_val_table(i) || '''';
5881                 END IF;
5882               END IF;
5883             END LOOP; --FOR i in 1..l_msii_col_table.COUNT LOOP
5884 
5885             IF l_error_indicator = FALSE THEN
5886               -- bind variable and use share cursor l_cursor_update_msii
5887               FOR i in 1..l_msii_col_table.COUNT LOOP
5888                   DBMS_SQL.BIND_VARIABLE(l_cursor_update_msii, ':' || l_msii_col_table(i), l_attr_int_val_table(i));
5889               END LOOP; --FOR i in 1..l_msii_col_table.COUNT LOOP
5890               DBMS_SQL.BIND_VARIABLE(l_cursor_update_msii, ':TRANSACTION_ID', l_transaction_id);
5891               l_execute := DBMS_SQL.EXECUTE(l_cursor_update_msii);
5892             ELSE
5893               -- use l_dyn_sql with literals to update
5894               l_dyn_sql := l_dyn_sql || '  WHERE TRANSACTION_ID = ' || l_transaction_id;
5895               Write_Debug('load_item_oper_attr_values: Internal value errors while update msii ' || l_dyn_sql);
5896               EXECUTE IMMEDIATE l_dyn_sql;
5897             END IF;
5898 
5899           ELSE --IF DBMS_SQL.FETCH_ROWS(l_cursor_oper_attr)>0 THEN
5900             -------------------------------------------------------------------
5901             -- Exit loop as there are no more rows available for processing. --
5902             -------------------------------------------------------------------
5903             Write_Debug('load_item_oper_attr_values: No more rows found !');
5904             EXIT;
5905           END IF; --IF DBMS_SQL.FETCH_ROWS(l_cursor_oper_attr)>0 THEN
5906 
5907         END LOOP; --END: Loop for l_cursor_oper_attr
5908 
5909         -- Bug#13816809 close share cursor
5910         DBMS_SQL.CLOSE_CURSOR(l_cursor_update_msii);
5911 
5912         -- Bug : 4099546
5913         DBMS_SQL.CLOSE_CURSOR(l_cursor_oper_attr);
5914       END IF; --IF (attr_grp_id_rec.OPER_ATTR_GRP_ID IS NOT NULL) THEN
5915 
5916       -------------------------------------------------------------------
5917       -- Before proceeding to process the next Attribute Group rows,   --
5918       -- delete the attrs table.                                       --
5919       -------------------------------------------------------------------
5920       l_user_attr_data_table.DELETE;
5921 
5922      END LOOP; -- FOR attr_grp_id_rec IN c_item_oper_attr_grp_ids
5923 
5924    END IF; --IF (l_item_oper_attr_grp_count > 0) THEN
5925 
5926    -----------------------------------------------------------------------
5927    --Insert the Value Set error messages.
5928    -----------------------------------------------------------------------
5929    l_dyn_sql := '';
5930    l_dyn_sql := l_dyn_sql || 'INSERT INTO MTL_INTERFACE_ERRORS ';
5931    l_dyn_sql := l_dyn_sql || '( ';
5932    l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID   ';
5933    l_dyn_sql := l_dyn_sql || ', UNIQUE_ID    ';
5934    l_dyn_sql := l_dyn_sql || ', LAST_UPDATE_DATE   ';
5935    l_dyn_sql := l_dyn_sql || ', LAST_UPDATED_BY  ';
5936    l_dyn_sql := l_dyn_sql || ', CREATION_DATE    ';
5937    l_dyn_sql := l_dyn_sql || ', CREATED_BY     ';
5938    l_dyn_sql := l_dyn_sql || ', LAST_UPDATE_LOGIN  ';
5939    l_dyn_sql := l_dyn_sql || ', TABLE_NAME     ';
5940    l_dyn_sql := l_dyn_sql || ', MESSAGE_NAME     ';
5941    l_dyn_sql := l_dyn_sql || ', COLUMN_NAME    ';
5942    l_dyn_sql := l_dyn_sql || ', REQUEST_ID     ';
5943    l_dyn_sql := l_dyn_sql || ', PROGRAM_APPLICATION_ID  ';
5944    l_dyn_sql := l_dyn_sql || ', PROGRAM_ID     ';
5945    l_dyn_sql := l_dyn_sql || ', PROGRAM_UPDATE_DATE  ';
5946    l_dyn_sql := l_dyn_sql || ', ERROR_MESSAGE    ';
5947    l_dyn_sql := l_dyn_sql || ', TRANSACTION_ID   ';
5948    l_dyn_sql := l_dyn_sql || ', ENTITY_IDENTIFIER  ';
5949    l_dyn_sql := l_dyn_sql || ', BO_IDENTIFIER    ';
5950    l_dyn_sql := l_dyn_sql || ') ';
5951    l_dyn_sql := l_dyn_sql || 'SELECT ';
5952    l_dyn_sql := l_dyn_sql || ' -1 ';
5953    l_dyn_sql := l_dyn_sql || ', MSII.TRANSACTION_ID ';
5954    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
5955    l_dyn_sql := l_dyn_sql || ', '||G_USER_ID ;
5956    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
5957    l_dyn_sql := l_dyn_sql || ', '||G_USER_ID;
5958    l_dyn_sql := l_dyn_sql || ', '||G_LOGIN_ID;
5959    l_dyn_sql := l_dyn_sql || ', ''MTL_SYSTEM_ITEMS_INTERFACE'' ';
5960    l_dyn_sql := l_dyn_sql || ', DECODE(MSII.PROCESS_FLAG, ';
5961    l_dyn_sql := l_dyn_sql ||    G_VS_INVALID_ERR_STS||', ''EGO_IPI_INVALID_VALUE''';
5962    l_dyn_sql := l_dyn_sql || '    ) ';
5963    l_dyn_sql := l_dyn_sql || ', NULL ';
5964    l_dyn_sql := l_dyn_sql || ', '||G_REQUEST_ID ;
5965    l_dyn_sql := l_dyn_sql || ', '||G_PROG_APPID ;
5966    l_dyn_sql := l_dyn_sql || ', '||G_PROG_ID ;
5967    l_dyn_sql := l_dyn_sql || ', SYSDATE ';
5968    l_dyn_sql := l_dyn_sql || ', DECODE(MSII.PROCESS_FLAG,  ';
5969    l_dyn_sql := l_dyn_sql ||  G_VS_INVALID_ERR_STS||',  EBI.'||G_VAL_SET_CONV_ERR_COL;
5970    l_dyn_sql := l_dyn_sql || '        )     ';
5971    l_dyn_sql := l_dyn_sql || ', MSII.TRANSACTION_ID ';
5972    l_dyn_sql := l_dyn_sql || ', NULL ';
5973    l_dyn_sql := l_dyn_sql || ', NULL ';
5974    l_dyn_sql := l_dyn_sql || 'FROM  MTL_SYSTEM_ITEMS_INTERFACE MSII, EGO_BULKLOAD_INTF EBI ';
5975    l_dyn_sql := l_dyn_sql || 'WHERE MSII.TRANSACTION_ID = EBI.TRANSACTION_ID ';
5976    l_dyn_sql := l_dyn_sql || ' AND  MSII.PROCESS_FLAG IN  ';
5977    l_dyn_sql := l_dyn_sql ||  ' ( ';
5978    l_dyn_sql := l_dyn_sql ||    G_VS_INVALID_ERR_STS; --take care of invalid value set
5979    l_dyn_sql := l_dyn_sql ||  ' ) ';
5980    l_dyn_sql := l_dyn_sql || ' AND  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID ';
5981    l_dyn_sql := l_dyn_sql || ' AND  EBI.PROCESS_STATUS = 1 ';
5982 
5983    Write_Debug(l_dyn_sql);
5984    EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
5985 
5986    Write_Debug(' All Value Set value errors populated.');
5987    UPDATE MTL_SYSTEM_ITEMS_INTERFACE
5988       SET PROCESS_FLAG = G_INTF_STATUS_ERROR
5989     WHERE PROCESS_FLAG IN
5990             (
5991       G_VS_INVALID_ERR_STS
5992             )
5993       AND TRANSACTION_ID IN
5994             (
5995               SELECT TRANSACTION_ID
5996               FROM   EGO_BULKLOAD_INTF
5997               WHERE  RESULTFMT_USAGE_ID = p_resultfmt_usage_id
5998             );
5999 
6000  EXCEPTION
6001    WHEN OTHERS THEN
6002       l_retcode := G_STATUS_ERROR;
6003       l_errbuff := SUBSTRB(SQLERRM, 1,240);
6004       Write_Debug('Load_item_oper_attr_values : EXCEPTION HAPPENED => '||l_errbuff);
6005       RAISE;
6006 
6007 END load_item_oper_attr_values;
6008 
6009 --===================================================================================
6010 --END: 11.5.10 New Functionality: Item Operational Attributes Bulkload (bug# 3293098)
6011 --===================================================================================
6012 
6013 
6014  --------------------------------------------------------------------
6015  -- Fix for Bug# 3864813
6016  -- Process Net Weight (i.e. Unit Weights) for the Items based on the
6017  -- Trade Item Descriptor value.
6018  --
6019  -- NOTE: Net Weight can only have a value if Trade Item Descriptor
6020  -- is "Base Unit Or Each", else it will be NULL (i.e. it will be
6021  -- derived value).
6022  --------------------------------------------------------------------
6023 PROCEDURE process_netweights
6024                (
6025                  p_resultfmt_usage_id    IN         NUMBER,
6026                  p_commit                IN         VARCHAR2 DEFAULT FND_API.G_TRUE ,
6027                  x_errbuff               OUT NOCOPY VARCHAR2,
6028                  x_retcode               OUT NOCOPY VARCHAR2
6029                 ) IS
6030 
6031     -- Start OF comments
6032     -- API name  : Process Net Weight values for the Items
6033     -- TYPE      : Public (called by oracle.apps.ego.item.cp.EgoItemConcurrentProgram)
6034     -- Pre-reqs  : None
6035     -- FUNCTION  : Process and update the Net Weight (i.e. Unit Weight).
6036     --             values for the Item.
6037     --
6038 
6039 ------------------------------------------------------
6040 -- Local Variables
6041 ------------------------------------------------------
6042 
6043 CURSOR c_err_logfile (c_resultfmt_usage_id IN NUMBER) IS
6044  SELECT C_INTF_ATTR239
6045  FROM   EGO_BULKLOAD_INTF
6046  WHERE  RESULTFMT_USAGE_ID = c_resultfmt_usage_id
6047    AND  C_INTF_ATTR239 IS NOT NULL;
6048 
6049 -- Long Dynamic SQL String
6050 l_dyn_sql                VARCHAR2(10000);
6051 l_err_logfile_fullpath   VARCHAR2(1000);
6052 l_is_debug               BOOLEAN := FALSE;
6053 
6054 l_log_dir                VARCHAR2(1000);
6055 l_log_file               VARCHAR2(1000);
6056 
6057 --API return parameters
6058 l_retcode               VARCHAR2(10);
6059 l_errbuff               VARCHAR2(2000);
6060 
6061 BEGIN
6062 
6063   OPEN c_err_logfile(p_resultfmt_usage_id);
6064   FETCH c_err_logfile INTO l_err_logfile_fullpath;
6065   IF c_err_logfile%FOUND THEN
6066     l_is_debug := TRUE;
6067   END IF;
6068   -- Bug : 4099546
6069   CLOSE c_err_logfile;
6070   ------------------------------------------------------------
6071   -- If the Debug is TRUE, then log these statements in the
6072   -- Debug file, that has been opened before.
6073   ------------------------------------------------------------
6074   IF (l_is_debug) THEN
6075 
6076     l_log_dir := SUBSTR(l_err_logfile_fullpath, 0, INSTR(l_err_logfile_fullpath, 'EGO_BULKLOAD_INTF') - 1);
6077     l_log_file := SUBSTR(l_err_logfile_fullpath, INSTR(l_err_logfile_fullpath, 'EGO_BULKLOAD_INTF'));
6078 
6079     -----------------------------------------------------------------------
6080     -- To open the Debug Session to write the Debug Log.                 --
6081     -- This sets Debug value so that Error_Handler.Get_Debug returns 'Y' --
6082     -----------------------------------------------------------------------
6083     Error_Handler.Open_Debug_Session(
6084       p_debug_filename   => l_log_file
6085      ,p_output_dir       => l_log_dir
6086      ,x_return_status    => l_retcode
6087      ,x_error_mesg       => l_errbuff
6088      );
6089 
6090   END IF;
6091 
6092   Write_Debug('-----------------------------------------------------------------');
6093   Write_Debug('POST-PROCESSING After IOI + User-Def + UCCnet Attts processing');
6094   Write_Debug('-----------------------------------------------------------------');
6095 
6096   l_dyn_sql :=
6097   ' UPDATE MTL_SYSTEM_ITEMS_B MSIB ' ||
6098   '  SET   (MSIB.UNIT_WEIGHT, MSIB.WEIGHT_UOM_CODE) = ' ||
6099   '  ( ' ||
6100   '        DECODE(MSIB.TRADE_ITEM_DESCRIPTOR, ''BASE_UNIT_OR_EACH'', MSIB.UNIT_WEIGHT, NULL), ' ||
6101   '        DECODE(MSIB.TRADE_ITEM_DESCRIPTOR, ''BASE_UNIT_OR_EACH'', MSIB.WEIGHT_UOM_CODE, NULL) ' ||
6102   '  )  ' ||
6103   '  WHERE EXISTS  ' ||
6104   ' (  ' ||
6105   '     SELECT ''X''  ' ||
6106   '     FROM   EGO_BULKLOAD_INTF EBI   ' ||
6107   '     WHERE  FND_NUMBER.CANONICAL_TO_NUMBER(EBI.INSTANCE_PK1_VALUE) = MSIB.INVENTORY_ITEM_ID  ' ||
6108   '     AND    FND_NUMBER.CANONICAL_TO_NUMBER(EBI.INSTANCE_PK2_VALUE) = MSIB.ORGANIZATION_ID  ' ||
6109   '     AND    EBI.PROCESS_STATUS = 7 ' || -- Successful Rows Only
6110   '     AND    EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID_2 ' ||
6111   ' ) ';
6112 
6113   Write_Debug(l_dyn_sql);
6114   EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
6115   Write_Debug('MSIB: Updated the Net Weights.');
6116 
6117   -------------------------------------------------------------
6118   -- Commit at the end.
6119   -------------------------------------------------------------
6120   IF (p_commit = FND_API.G_TRUE) THEN
6121     COMMIT;
6122   END IF;
6123 
6124   ------------------------------------------------------------
6125   -- Close the Debug session.
6126   ------------------------------------------------------------
6127   IF (l_is_debug) THEN
6128     Close_Debug_Session;
6129   END IF;
6130 
6131   x_retcode := G_STATUS_SUCCESS;
6132 
6133   EXCEPTION
6134   WHEN OTHERS THEN
6135     x_retcode := G_STATUS_ERROR;
6136     x_errbuff := SUBSTRB(SQLERRM, 1,240);
6137     Write_Debug('process_netweights : EXCEPTION HAPPENED => '||x_errbuff);
6138     -- RAISE; --Donot raise, just return back the values.
6139     ------------------------------------------------------------
6140     -- Close the Debug session.
6141     ------------------------------------------------------------
6142     IF (l_is_debug) THEN
6143       Close_Debug_Session;
6144     END IF;
6145 
6146 END process_netweights;
6147 
6148 
6149  ----------------------------------------------------------
6150  -- Process Item and Item Revision Interface Lines
6151  --
6152  -- Main API called by the Concurrent Program.
6153  ----------------------------------------------------------
6154 PROCEDURE process_item_interface_lines
6155                (
6156                  p_resultfmt_usage_id    IN         NUMBER,
6157                  p_user_id               IN         NUMBER,
6158                  p_conc_request_id       IN         NUMBER,
6159                  p_language_code         IN         VARCHAR2,
6160                  p_caller_identifier     IN         VARCHAR2 DEFAULT EGO_ITEM_BULKLOAD_PKG.G_ITEM,
6161                  p_commit                IN         VARCHAR2 DEFAULT FND_API.G_TRUE ,
6162                  x_errbuff               OUT NOCOPY VARCHAR2,
6163                  x_retcode               OUT NOCOPY VARCHAR2,
6164                  p_start_upload          IN         VARCHAR2 DEFAULT FND_API.G_TRUE ,
6165                  p_data_set_id           IN         NUMBER   DEFAULT NULL
6166                 ) IS
6167 
6168     -- Start OF comments
6169     -- API name  : Process Item Interface Lines
6170     -- TYPE      : Public (called by Concurrent Program Wrapper API)
6171     -- Pre-reqs  : None
6172     -- FUNCTION  : Process and Load Item interfance lines.
6173     --             Loads Item Attr Values + Item User-Defined Attr Values
6174     --             Errors are populated in MTL_INTERFACE_ERRORS
6175     --
6176 
6177   CURSOR c_resultfmt_info (c_resultfmt_usage_id  IN  NUMBER) IS
6178     SELECT   Nvl(fmt.data_level, G_ITEM_DATA_LEVEL)
6179         ---------------------------------------------------------------------------------
6180         --Fix for Bug# 3681711. (JCGEORGE)
6181         -- CLASSIFICATION_CODE in EGO_RESULTS_FMT_USAGES, now stores the **current**
6182         -- Item Catalog Group ID for the selected Import Format.
6183         ---------------------------------------------------------------------------------
6184         --, Decode(fmt.classification1, -1, NULL, fmt.classification1)
6185         , Decode(fmt_usg.classification_code, -1, NULL, fmt_usg.classification_code)
6186     FROM   ego_results_fmt_usages fmt_usg, ego_results_format_v fmt
6187     WHERE  fmt_usg.resultfmt_usage_id = c_resultfmt_usage_id
6188      AND   fmt.customization_application_id = fmt_usg.customization_application_id
6189      AND   fmt.customization_code = fmt_usg.customization_code
6190      AND   fmt.region_application_id  = fmt_usg.region_application_id
6191      AND   fmt.region_code = fmt_usg.region_code;
6192 
6193   CURSOR c_revision_code_exists (c_resultfmt_usage_id  IN  NUMBER) IS
6194     SELECT 'x'
6195     FROM   ego_results_fmt_usages
6196     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
6197      AND   attribute_code = G_REV_CODE_ATTR_CODE;
6198 
6199   CURSOR c_mtl_intf_err_row_exists IS
6200     SELECT 'x'
6201     FROM   mtl_interface_errors
6202     WHERE  request_id = FND_GLOBAL.conc_request_id;
6203 
6204 
6205   --Long Dynamic SQL String
6206   l_dyn_sql                VARCHAR2(10000);
6207   l_msii_set_process_id    NUMBER;
6208   l_usrattr_data_set_id    NUMBER;
6209 
6210   l_item_ioi_commit        NUMBER;
6211 
6212   l_return_code            VARCHAR2(10);
6213   l_err_text               VARCHAR2(2000);
6214   l_temp_txt               VARCHAR2(2000);
6215   l_data_level             VARCHAR2(50);
6216   l_catalog_group_id       VARCHAR2(50);
6217   l_rev_base_attrs_count   NUMBER;
6218   l_revision_code_exists   VARCHAR2(5);
6219   ----------------------------------------------------------------
6220   -- Introduced in 11.5.10, to set appropriate Debug Level to
6221   -- call the User-Defined Attrs API.
6222   ----------------------------------------------------------------
6223   l_debug_level            NUMBER;
6224 
6225   --API return parameters
6226   l_retcode               VARCHAR2(10);
6227   l_errbuff               VARCHAR2(2000);
6228 
6229   --Concurrent Request Status Boolean flag
6230   l_conc_status           BOOLEAN;
6231 
6232 BEGIN
6233 
6234    IF (NVL(fnd_profile.value('CONC_REQUEST_ID'), 0) <> 0) THEN
6235      g_concReq_valid_flag  := TRUE;
6236    END IF;
6237 
6238    -----------------------------------------------------------------------
6239    --IF (g_concReq_valid_flag ) THEN
6240    --  FND_FILE.put_line(FND_FILE.LOG, ' ******** New Log ******** ');
6241    --END IF;
6242    -----------------------------------------------------------------------
6243 
6244    -----------------------------------------------------
6245    -- Open Error Handler Debug Session.
6246    -----------------------------------------------------
6247    Open_Debug_Session;
6248 
6249    Developer_Debug('Completely Reformatted EGO_ITEM_BULKLOAD_PKG with Error Handler Changes');
6250 
6251    Developer_Debug('After Open_Debug_Session');
6252    SetGobals();
6253    G_LANGUAGE_CODE := p_language_code;
6254 
6255    -----------------------------------------------------------------------
6256    -- Providing the Errors Link in the Concurrent Log file.
6257    -----------------------------------------------------------------------
6258    FND_MESSAGE.SET_NAME('EGO','EGO_ITEM_BULK_ERRS_LINKTXT1');
6259    FND_FILE.put_line(FND_FILE.LOG, FND_MESSAGE.GET);
6260 
6261    FND_MESSAGE.SET_NAME('EGO','EGO_ITEMBULK_HOSTANDPORT');
6262    l_temp_txt := rtrim(FND_PROFILE.VALUE('APPS_FRAMEWORK_AGENT'), '/');--FND_MESSAGE.GET;
6263 
6264    FND_MESSAGE.SET_NAME('EGO','EGO_ITEM_BULK_ERRS_LINK');
6265    FND_MESSAGE.SET_TOKEN('HOST_AND_PORT', l_temp_txt);
6266    FND_MESSAGE.SET_TOKEN('CONC_REQ_ID', G_REQUEST_ID);
6267    FND_FILE.put_line(FND_FILE.LOG, FND_MESSAGE.GET);
6268 
6269    Developer_Debug('G_USER_ID : '||To_char(G_USER_ID));
6270    Developer_Debug('G_PROG_ID : '||To_char(G_PROG_ID));
6271    Developer_Debug('G_REQUEST_ID : '||To_char(G_REQUEST_ID));
6272    Developer_Debug('P_RESULT_FMT_USAGE_ID : '||To_char(p_resultfmt_usage_id));
6273 
6274    -----------------------------------------------------------------------
6275    -- This is the Result Format Usage ID for the Current Upload.        --
6276    -----------------------------------------------------------------------
6277    G_RESULTFMT_USAGE_ID    := p_resultfmt_usage_id;
6278 
6279    -----------------------------------------------------------------------
6280    -- Delete all the earlier loads from the same spreadsheet.
6281    -- And also setup the Error Log file in the EBI, to be picked up by
6282    -- Java portion of the Conc Program later.
6283    -----------------------------------------------------------------------
6284    setup_buffer_intf_table(p_resultfmt_usage_id);
6285 
6286    -----------------------------------------------------------------------
6287    -- If the process id is passed, we will be using this throughout the program
6288    -- So setting this to the global variable here itself.
6289    -----------------------------------------------------------------------
6290    IF (p_data_set_id IS NOT NULL) THEN
6291      G_MSII_SET_PROCESS_ID := p_data_set_id;
6292    END IF;
6293 
6294    -----------------------------------------------------------------------
6295    -- If the process id is passed, we need to store the information is a
6296    -- PDH batch or not
6297    -----------------------------------------------------------------------
6298 
6299    IF (p_data_set_id IS NOT NULL) THEN
6300      setup_batch_info();
6301    END IF;
6302 
6303    -------------------------------------------------------------------------------
6304    --                                                                           --
6305    --If the caller is G_ITEM, then the import format can have 2 levels :        --
6306    -- 1. Item   2. Item Revision.                                               --
6307    -- Hence need to call appropriate populate interface table procedure.        --
6308    --                                                                           --
6309    -------------------------------------------------------------------------------
6310    IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM) THEN
6311 
6312        OPEN c_resultfmt_info(p_resultfmt_usage_id);
6313        FETCH c_resultfmt_info INTO l_data_level, l_catalog_group_id;
6314        Developer_Debug('Result Format Data Level =>'||l_data_level);
6315 
6316        -------------------------------------------------------------------
6317        --This Global Catalog Group variable is useful during imports.   --
6318        -------------------------------------------------------------------
6319        IF (l_catalog_group_id IS NOT NULL) THEN
6320          G_CATALOG_GROUP_ID  := l_catalog_group_id;
6321          Developer_Debug('G_CATALOG_GROUP_ID : '||G_CATALOG_GROUP_ID);
6322        END IF;
6323        IF c_resultfmt_info%FOUND THEN
6324         --IF (l_data_level = G_ITEM_DATA_LEVEL) THEN
6325           --------------------------------------------------------------------
6326           -- Since the Data Level is ITEM, need to setup the Item Interface --
6327           -- table.                                                         --
6328           --------------------------------------------------------------------
6329           Developer_Debug(' Calling Internal Setup_Item_interface ');
6330           Setup_Item_interface(
6331             p_resultfmt_usage_id  => p_resultfmt_usage_id
6332            ,p_set_process_id      => p_data_set_id
6333            ,x_set_process_id      => l_msii_set_process_id
6334            ,p_caller_identifier   => p_caller_identifier
6335            ,x_errbuff             => l_errbuff
6336            ,x_retcode             => l_retcode
6337             );
6338           Developer_Debug(' Returning Internal Setup_Item_interface '|| l_retcode);
6339 
6340           FND_FILE.put_line(FND_FILE.LOG, '*Importing Items*. SET_PROCESS_ID : '||l_msii_set_process_id);
6341 
6342           -------------------------------------------------------------------
6343           -- New procedure introduced in 11.5.10 to load the operational   --
6344           -- attributes using User-Def attrs framework. (PPEDDAMA)         --
6345           -------------------------------------------------------------------
6346           load_item_oper_attr_values(p_resultfmt_usage_id);
6347 
6348           Developer_Debug('process_item_interface_lines: Done loading the Item operational attributes');
6349 
6350           delete_records_from_MSII(p_data_set_id);
6351 
6352           Write_Debug('Deleting unwanted records from MSII');
6353 
6354           -------------------------------------------------------------------
6355           -- Fix for Bug# 3403455. (PPEDDAMA)                             --
6356           -- Setup Item Rev Interface only if Revision Base attrs exist.  --
6357           -------------------------------------------------------------------
6358 
6359           SELECT count(*)
6360             INTO l_rev_base_attrs_count
6361           FROM  ego_results_fmt_usages
6362           WHERE  resultfmt_usage_id = p_resultfmt_usage_id
6363           AND attribute_code NOT LIKE '%$$%'
6364           ---------------------------------------------------------------------------
6365           -- Added NOT LIKE 'GTIN_%' to filter out Dummy Attrs for Attr Group: "GTIN"
6366           ---------------------------------------------------------------------------
6367           AND attribute_code NOT LIKE 'GTIN_%'
6368           AND attribute_code IN --Segregating Item Revision Base Attrs using this clause
6369           (
6370               select LOOKUP_CODE CODE
6371               from  FND_LOOKUP_VALUES
6372               where  LOOKUP_TYPE = 'EGO_ITEM_REV_HDR_ATTR_GRP'
6373               AND    LANGUAGE = USERENV('LANG')
6374               AND    ENABLED_FLAG = 'Y'
6375           );
6376 
6377           Developer_Debug('process_item_interface_lines.l_rev_base_attrs_count : '||l_rev_base_attrs_count);
6378             --------------------------------------------------------------------
6379             -- Changed from >0 to >1 because, only if other attributes apart  --
6380             -- from REVISION exist, then setup Item Revision interface.       --
6381             --------------------------------------------------------------------
6382 
6383           IF (l_rev_base_attrs_count > 1) THEN
6384 
6385             OPEN c_revision_code_exists(p_resultfmt_usage_id);
6386             FETCH c_revision_code_exists INTO l_revision_code_exists;
6387             IF c_revision_code_exists%FOUND THEN
6388               Developer_Debug('process_item_interface_lines.l_revision_code_exists : '||l_revision_code_exists ||'. Calling Setup_ItemRev_interface');
6389 
6390               --------------------------------------------------------------------
6391               -- Now that Revisions show up as a part of Item Search Results,   --
6392               -- calling Setup Revisions Interface as a part of Item Bulkload   --
6393               --------------------------------------------------------------------
6394               Setup_ItemRev_interface(
6395                 p_resultfmt_usage_id  => p_resultfmt_usage_id
6396                ,p_caller_identifier   => p_caller_identifier
6397                ,p_data_level          => G_ITEM_DATA_LEVEL
6398                ,p_set_process_id      => p_data_set_id
6399                ,x_set_process_id      => l_msii_set_process_id
6400                ,x_errbuff             => l_errbuff
6401                ,x_retcode             => l_retcode
6402                );
6403 
6404             END IF; --IF c_revision_code_exists%FOUND THEN
6405             -- Bug : 4099546
6406             CLOSE c_revision_code_exists;
6407           END IF; --IF (l_rev_base_attrs_count > 0) THEN
6408           -------------------------------------------------------------------
6409           -- End: Fix for Bug# 3403455. (PPEDDAMA)                        --
6410           -- Setup Item Rev Interface only if Revision Base attrs exist.  --
6411           -------------------------------------------------------------------
6412           EGO_ITEM_BULKLOAD_PKG.load_intersections_interface
6413                            (
6414                              p_resultfmt_usage_id    =>p_resultfmt_usage_id,
6415                              p_set_process_id        =>p_data_set_id,
6416                              x_set_process_id        =>l_msii_set_process_id,
6417                              x_errbuff               =>x_errbuff,
6418                              x_retcode               =>x_retcode
6419                             );
6420          write_debug('Done with EGO_ITEM_BULKLOAD_PKG.load_intersections_interface ---x_retcode-'||x_retcode);
6421         --ELSE --G_ITEM_REV_DATA_LEVEL
6422  /*
6423           ---------------------------------------------------------------------------------
6424           -- Now that Revisions show up as a part of Item Search Results,
6425           -- adding new parameter p_data_level, to distinguish that this Setup Revisions
6426           -- Interface is called from 'Import Revisions' (through Revision Import Format)
6427           ---------------------------------------------------------------------------------
6428           Setup_ItemRev_interface(
6429             p_resultfmt_usage_id  => p_resultfmt_usage_id
6430            ,p_caller_identifier   => p_caller_identifier
6431            ,p_data_level          => G_ITEM_REV_DATA_LEVEL
6432            ,p_set_process_id      => p_data_set_id
6433            ,x_set_process_id      => l_msii_set_process_id
6434            ,x_errbuff             => l_errbuff
6435            ,x_retcode             => l_retcode
6436                  );
6437           FND_FILE.put_line(FND_FILE.LOG, '*Importing Item Revisions*. SET_PROCESS_ID : '||l_msii_set_process_id);
6438 
6439         END IF; --end: IF (l_data_level = G_ITEM_DATA_LEVEL) THEN
6440         */
6441      END IF; --end: IF c_resultfmt_info%FOUND THEN
6442 
6443      CLOSE c_resultfmt_info;
6444 
6445     ELSIF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_BOM) THEN
6446 
6447       --------------------------------------------------------------
6448       -- BOM called the Bulkload code, hence setup Item and Item
6449       -- Revision Interface tables appropriately.
6450       --------------------------------------------------------------
6451 
6452       Developer_Debug('CALLER IDENTIFIER : '|| p_caller_identifier);
6453 
6454       Setup_item_interface(
6455             p_resultfmt_usage_id  => p_resultfmt_usage_id
6456            ,p_set_process_id      => p_data_set_id
6457            ,x_set_process_id      => l_msii_set_process_id
6458            ,p_caller_identifier   => p_caller_identifier
6459            ,x_errbuff             => l_errbuff
6460            ,x_retcode             => l_retcode
6461                  );
6462 
6463       -------------------------------------------------------------------
6464       -- New procedure introduced in 11.5.10 to load the operational   --
6465       -- attributes using User-Def attrs framework. (HGELLI)           --
6466       -------------------------------------------------------------------
6467       load_item_oper_attr_values(p_resultfmt_usage_id);
6468 
6469       Developer_Debug('process_item_interface_lines: Done loading the Item operational attributes');
6470 
6471        --------------------------------------------------------------
6472        -- Check to see if Revision Code exists, before calling to
6473        -- to set up the Revisions Interface table.
6474        --------------------------------------------------------------
6475        OPEN c_revision_code_exists(p_resultfmt_usage_id);
6476        FETCH c_revision_code_exists INTO l_revision_code_exists;
6477        IF c_revision_code_exists%FOUND THEN
6478          Developer_Debug('process_item_interface_lines.l_revision_code_exists : '||l_revision_code_exists ||'. Calling Setup_ItemRev_interface');
6479 
6480          --Now that Revisions show up as a part of Item Search Results,
6481          --calling Setup Revisions Interface as a part of Item Bulkload
6482          Setup_ItemRev_interface(
6483             p_resultfmt_usage_id  => p_resultfmt_usage_id
6484            ,p_caller_identifier   => p_caller_identifier
6485            ,p_data_level          => G_ITEM_DATA_LEVEL
6486            ,p_set_process_id      => p_data_set_id
6487            ,x_set_process_id      => l_msii_set_process_id
6488            ,x_errbuff             => l_errbuff
6489            ,x_retcode             => l_retcode
6490          );
6491 
6492         END IF; --IF c_revision_code_exists%FOUND THEN
6493         -- Bug : 4099546
6494         CLOSE c_revision_code_exists;
6495         FND_FILE.put_line(FND_FILE.LOG, '*Importing Items*. SET_PROCESS_ID : '||l_msii_set_process_id);
6496 
6497     ELSE
6498       --------------------------------------------------------------
6499       -- This ELSE condition should never be reached.
6500       --------------------------------------------------------------
6501       Developer_Debug('INVALID CALLER IDENTIFIER : '|| p_caller_identifier);
6502 
6503    END IF;--IF (p_caller_identifier = EGO_ITEM_BULKLOAD_PKG.G_ITEM)
6504 
6505    --R12
6506    ----------------------------------------------------------------
6507    -- Call for User Attributes Bulk Processing, to load the
6508    -- Interface table: EGO_ITM_USR_ATTR_INTRFC
6509    ----------------------------------------------------------------
6510    Developer_Debug('Before calling load_itm_or_rev_usrattr_intf ');
6511    load_itm_or_rev_usrattr_intf
6512                (
6513                  p_resultfmt_usage_id    => p_resultfmt_usage_id
6514                 ,p_data_set_id           => l_msii_set_process_id
6515                 ,x_errbuff               => l_errbuff
6516                 ,x_retcode               => l_retcode
6517                 );
6518 
6519    Developer_Debug('UsrAttr_Populate_Process: done. l_retcode = ' || l_retcode);
6520    Developer_Debug('UsrAttr_Populate_Process: l_errbuff = ' || l_errbuff);
6521 
6522    /* Bug 7578350. Moved this DELETE statement from load_item_revs_interface() function,
6523       by addubg NOT EXITS condition in WHERE caluse, so that we delete the rows from MTL_ITEM_REVISIONS_INTERFACE
6524       only if there are no Revision Level Attributes provided. */
6525 
6526    DELETE MTL_ITEM_REVISIONS_INTERFACE MIRI
6527     WHERE revision IS NULL
6528       AND revision_id IS NULL
6529       AND implementation_date IS NULL
6530       AND effectivity_date IS NULL
6531       AND description IS NULL
6532       AND revision_label IS NULL
6533       AND revision_reason IS NULL
6534       AND current_phase_id IS NULL
6535       AND EXISTS (SELECT 'X'
6536                     FROM  EGO_BULKLOAD_INTF EBI
6537                    WHERE  EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id
6538                      AND  EBI.TRANSACTION_ID = MIRI.TRANSACTION_ID
6539                      AND  EBI.PROCESS_STATUS = 1
6540                  )
6541       AND NOT EXISTS (SELECT 'X'
6542                         FROM EGO_ITM_USR_ATTR_INTRFC EIUAT
6543                       WHERE EIUAT.TRANSACTION_ID = MIRI.TRANSACTION_ID
6544                         AND EIUAT.PROCESS_STATUS = 1
6545                         AND EIUAT.DATA_LEVEL_ID=43106);
6546 
6547    -------------------------------------------------------------
6548    -- Log Errors only to MTL_INTERFACE_ERRORS table.
6549    -------------------------------------------------------------
6550    Error_Handler.Log_Error(
6551          p_write_err_to_inttable  => 'Y',
6552          p_write_err_to_debugfile => 'Y'
6553          );
6554    ------------------------------------------------------------------------
6555    -- In case the Error Reporting Page has problems, following
6556    -- SQL helps debugging.
6557    -- NOTE: This is only for *Printing* purposes, hence adding NEWLINE
6558    --       character at the end.
6559    ------------------------------------------------------------------------
6560    l_dyn_sql :=              'SELECT MIERR.REQUEST_ID REQUEST_ID, '||G_NEWLINE;
6561    l_dyn_sql := l_dyn_sql || 'EBI.C_INTF_ATTR240 ITEM_NUMBER, '||G_NEWLINE;
6562    l_dyn_sql := l_dyn_sql || 'EBI.C_INTF_ATTR241 ORGANIZATION_CODE, '||G_NEWLINE;
6563    l_dyn_sql := l_dyn_sql || 'EBI.C_INTF_ATTR242 REVISION_CODE, '||G_NEWLINE;
6564    l_dyn_sql := l_dyn_sql || 'MIERR.ERROR_MESSAGE '||G_NEWLINE;
6565    l_dyn_sql := l_dyn_sql || 'FROM   MTL_INTERFACE_ERRORS MIERR, '||G_NEWLINE;
6566    l_dyn_sql := l_dyn_sql || 'EGO_BULKLOAD_INTF EBI '||G_NEWLINE;
6567    l_dyn_sql := l_dyn_sql || 'WHERE  MIERR.TRANSACTION_ID = EBI.TRANSACTION_ID '||G_NEWLINE;
6568    l_dyn_sql := l_dyn_sql || 'AND    MIERR.request_id = '||G_REQUEST_ID||G_NEWLINE;
6569    Developer_Debug('In Case Error Reporting page has problems, Execute the following SQL to fetch the Concurrent Program CUMULATIVE Errors: ');
6570    Developer_Debug(l_dyn_sql);
6571 
6572    -------------------------------------------------------------
6573    -- Commit at the end.
6574    -------------------------------------------------------------
6575    IF (p_commit = FND_API.G_TRUE) THEN
6576      COMMIT;
6577      Developer_Debug('COMMITing at the end.');
6578    END IF;
6579 
6580    ------------------------------------------------------------
6581    -- Check to See if Errors exist in MTL_INTERFACE_ERRORS.
6582    -- If Exists, then set the Status as Completed w/ Warnings.
6583    ------------------------------------------------------------
6584    OPEN c_mtl_intf_err_row_exists;
6585    FETCH c_mtl_intf_err_row_exists INTO l_temp_txt;
6586    IF c_mtl_intf_err_row_exists%FOUND THEN
6587      Developer_Debug('Errors exist in MTL_INTERFACE_ERRORS.');
6588      l_conc_status := FND_CONCURRENT.SET_COMPLETION_STATUS('WARNING',              --Status
6589                                                            'Completed with Warnings' --Message
6590                                                            );
6591      x_retcode := Error_Handler.G_STATUS_WARNING;
6592    ELSE
6593      Developer_Debug('*NO* Errors exist in MTL_INTERFACE_ERRORS.');
6594      x_retcode := G_STATUS_SUCCESS;
6595    END IF;
6596    CLOSE c_mtl_intf_err_row_exists;
6597 
6598    -----------------------------------------------------------
6599    -- Add log messages for all successfully created items
6600    -----------------------------------------------------------
6601 -- 5653266 commenting out the call to Log_Created_items
6602 --   IF (G_REQUEST_ID <> -1 ) THEN
6603 --     Log_created_Items(G_REQUEST_ID);
6604 --   END IF;
6605 
6606    -----------------------------------------------------
6607    -- Close Error Handler Debug Session.
6608    -----------------------------------------------------
6609 
6610    Close_Debug_Session;
6611 
6612    -----------------------------------------------------------------
6613    -- Main EXCEPTION Block, that handles all underlying Procedures'
6614    -- Exceptions. This also sets the PROCESS_STATUS value of the
6615    -- EBI Rows, to indicate Error.
6616    -----------------------------------------------------------------
6617    EXCEPTION
6618 
6619     WHEN OTHERS THEN
6620       Developer_Debug('Exception encountered processing one of the procedures in Process_Item_Interface_lines.');
6621       Developer_Debug('error code : '|| to_char(SQLCODE));
6622       Developer_Debug('error text : '|| SQLERRM);
6623       x_errbuff := 'Error : '||to_char(SQLCODE)||'---'||SQLERRM;
6624       x_retcode := Error_Handler.G_STATUS_ERROR;
6625       Developer_Debug('Returning x_retcode : '|| x_retcode);
6626       l_conc_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',         --Status
6627                                                             to_char(SQLCODE) --Message
6628                                                             );
6629       Developer_Debug('Setting all the *Unprocessed* rows (PROCESS_STATUS = 1) in EGO_BULKLOAD_INTF to PROCESS_STATUS = 3.');
6630 
6631       -----------------------------------------------------------------------------------------------
6632       -- Update all the lines in EGO_BULKLOAD_INTF as ERROR.
6633       -- This will ensure that the next submission of the Same excel doesnt throw
6634       -- IOI error:
6635       -- Item <Item#> already exists in the organization V1. Please use a different item name/number.
6636       -----------------------------------------------------------------------------------------------
6637       UPDATE EGO_BULKLOAD_INTF EBI
6638         SET  EBI.PROCESS_STATUS = G_INTF_STATUS_ERROR
6639         WHERE EBI.PROCESS_STATUS = G_INTF_STATUS_TOBE_PROCESS
6640         AND EBI.RESULTFMT_USAGE_ID = p_resultfmt_usage_id;
6641 
6642       COMMIT;
6643       Developer_Debug('COMMITing the error statuses for EBI Rows.');
6644 
6645       -----------------------------------------------------
6646       -- Close Error Handler Debug Session.
6647       -----------------------------------------------------
6648       Close_Debug_Session;
6649 
6650    --Exception block ends.
6651    ------------------------------------------------------------------
6652 
6653 END Process_item_interface_lines;
6654 
6655 /*
6656  ** Added by Ssingal - This procedure gets the Trade ItemDescriptor for a given
6657  **                    Inventory_item_id and organization Id.
6658  **         Bug Fix  4001661
6659  */
6660 
6661 
6662 PROCEDURE get_Trade_Item_Descriptor (
6663           p_inventory_item_id        IN          VARCHAR2,
6664           p_organization_id          IN          VARCHAR2,
6665           x_tradeItemDescriptor      OUT NOCOPY  VARCHAR2
6666 ) IS
6667   l_tradeItemDescriptor    VARCHAR2(100);
6668   BEGIN
6669 
6670   SELECT TRADE_ITEM_DESCRIPTOR INTO x_tradeItemDescriptor
6671   FROM MTL_SYSTEM_ITEMS_B
6672   WHERE INVENTORY_ITEM_ID = to_number(p_inventory_item_id)
6673     AND ORGANIZATION_ID  = to_number(p_organization_id);
6674 
6675 
6676 EXCEPTION
6677   WHEN OTHERS THEN
6678     Write_Debug('EGO BULK LOAD Gtin Attributes get_Trade_Item_Descriptor  :GTID is  null for an Item EXCEPTION HAPPENED => '|| SUBSTR ( SQLERRM , 0 ,240 ));
6679     Write_Debug('EGO BULK LOAD Gtin Attributes get_Trade_Item_Descriptor  GTID Is null for  => '|| p_inventory_item_id || ' , org Id ' || p_organization_id);
6680 END get_Trade_Item_Descriptor;
6681 
6682 
6683 /*
6684  ** Added by Ssingal - For clearing the attribute values for an Item
6685  **                    taking into consideration the Trade Item Descriptor
6686  **         Bug Fix  4001661
6687  */
6688 
6689 
6690 PROCEDURE Clear_Gtin_Attrs
6691     (
6692      p_resultfmt_usage_id       IN             NUMBER ,
6693      p_commit                   IN             VARCHAR2 DEFAULT FND_API.G_TRUE,
6694      x_errbuff                  OUT NOCOPY     VARCHAR2 ,
6695      x_ret_code                 OUT NOCOPY     VARCHAR2
6696     )
6697     IS
6698  CURSOR c_errLogFile ( c_resultfmt_usage_id  IN  NUMBER) IS
6699    SELECT C_INTF_ATTR239
6700  FROM   EGO_BULKLOAD_INTF
6701  WHERE C_INTF_ATTR239 IS NOT NULL
6702    AND RESULTFMT_USAGE_ID = c_resultfmt_usage_id
6703    AND ROWNUM < 2;
6704 
6705   CURSOR c_itemId_OrgId (c_resultfmt_usage_id  IN  NUMBER) IS
6706     SELECT INSTANCE_PK1_VALUE , INSTANCE_PK2_VALUE
6707       FROM EGO_BULKLOAD_INTF
6708       WHERE RESULTFMT_USAGE_ID  = c_resultfmt_usage_id
6709         AND PROCESS_STATUS = 7;
6710 
6711    CURSOR c_gtid (c_inventory_itemId  IN NUMBER , c_organization_Id IN NUMBER) IS
6712      SELECT TRADE_ITEM_DESCRIPTOR
6713        FROM MTL_SYSTEM_ITEMS_B
6714       WHERE INVENTORY_ITEM_ID = c_inventory_itemId
6715         AND ORGANIZATION_ID = c_organization_Id ;
6716 
6717  /* Editable at root
6718     Attribute Values to be cleared for Leaf
6719     these attributes are _B table attributes
6720     We need to to pass Single/Multi attribute group type */
6721     CURSOR  c_leafAttrs_bTable  ( c_attr_group_type IN VARCHAR2 , c_edit_in_hcR IN VARCHAR2 , c_data_type_codeA IN VARCHAR2) IS
6722      SELECT DATABASE_COLUMN ,
6723             EDIT_IN_HIERARCHY_CODE ,
6724             DATA_TYPE_CODE
6725        FROM EGO_ATTRS_V
6726       WHERE ATTR_GROUP_TYPE = c_attr_group_type  -- 'EGO_ITEM_GTIN_ATTRS'
6727         AND EDIT_IN_HIERARCHY_CODE IN  ( c_edit_in_hcR  )  -- ( 'L' , 'LP', 'A' , 'AP')
6728         AND DATA_TYPE_CODE not in ( c_data_type_codeA  );
6729 
6730  /* Editable at leaf
6731     Attribute Values to be cleared for Root
6732     these attributes are _B table attributes
6733     We need to to pass Single/Multi attribute group type */
6734     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
6735      SELECT DATABASE_COLUMN ,
6736             EDIT_IN_HIERARCHY_CODE ,
6737             DATA_TYPE_CODE
6738        FROM EGO_ATTRS_V
6739       WHERE ATTR_GROUP_TYPE = c_attr_group_type  -- 'EGO_ITEM_GTIN_ATTRS'
6740         AND EDIT_IN_HIERARCHY_CODE IN  ( c_edit_in_hcL , c_edit_in_hcLP )  -- ( 'L' , 'LP', 'A' , 'AP')
6741         AND DATA_TYPE_CODE not in ( c_data_type_codeA ) ;
6742 
6743  /* Editable at root
6744     Attribute Values to be cleared for Leaf
6745     these attributes are _TL table attributes
6746     We need to to pass Single/Multi attribute group type */
6747    CURSOR  c_leafAttrs_tlTable  ( c_attr_group_type IN VARCHAR2 , c_edit_in_hcR IN VARCHAR2 , c_data_type_codeA IN VARCHAR2) is
6748      SELECT DATABASE_COLUMN ,
6749             EDIT_IN_HIERARCHY_CODE ,
6750             DATA_TYPE_CODE
6751        FROM EGO_ATTRS_V
6752       WHERE ATTR_GROUP_TYPE = c_attr_group_type  -- 'EGO_ITEM_GTIN_ATTRS'
6753         AND EDIT_IN_HIERARCHY_CODE IN  ( c_edit_in_hcR  )  -- ( 'L' , 'LP', 'A' , 'AP')
6754         AND DATA_TYPE_CODE in ( c_data_type_codeA ) ;
6755 
6756  /* Editable at leaf
6757     Attribute Values to be cleared for Root
6758     these attributes are _TL table attributes
6759     We need to to pass Single/Multi attribute group type */
6760     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
6761      SELECT DATABASE_COLUMN ,
6762             EDIT_IN_HIERARCHY_CODE ,
6763             DATA_TYPE_CODE
6764        FROM EGO_ATTRS_V
6765       WHERE ATTR_GROUP_TYPE = c_attr_group_type  -- 'EGO_ITEM_GTIN_ATTRS'
6766         AND EDIT_IN_HIERARCHY_CODE IN  ( c_edit_in_hcL , c_edit_in_hcLP  )  -- ( 'L' , 'LP', 'A' , 'AP')
6767         AND DATA_TYPE_CODE in ( c_data_type_codeA ) ;
6768 
6769   TYPE ATTR_METADATA_REC IS RECORD ( DATABASE_COLUMN           VARCHAR2(30),
6770                                      EDIT_IN_HIERARCHY_CODE    VARCHAR2(30),
6771                                      DATA_TYPE_CODE            VARCHAR2(30)
6772                                    );
6773   /*TYPE ATTR_METADATA_TABLE IS TABLE OF ATTR_METADATA_REC INDEX BY BINARY_INTEGER;*/
6774 
6775   l_is_Debug                  BOOLEAN := FALSE ;
6776   l_err_log_file              VARCHAR2(1000);
6777   l_err_log_file_name         VARCHAR2(1000);
6778   l_err_log_file_dir          VARCHAR2(1000);
6779   l_dyn_sql                   VARCHAR2(20000);
6780   l_inventory_item_id         NUMBER ;
6781   l_organization_id           NUMBER ;
6782   l_hierarchyExists           VARCHAR2(20);
6783   l_gtid                      VARCHAR2(100);
6784   l_return_status             VARCHAR2(100);
6785   l_msg_count                 NUMBER ;
6786   l_msg_data                  fnd_new_messages.message_text%TYPE;
6787   l_retCode                   VARCHAR2(10);
6788   l_errbuff                   VARCHAR2(20000);
6789   l_err_code                  NUMBER;
6790 --  l_attr_table              ATTR_METADATA_TABLE ;
6791   l_attr_rec                  ATTR_METADATA_REC ;
6792   l_used_in_structure         VARCHAR2(100) ;
6793 
6794   l_leafAttrs_bTable_dbCol        VARCHAR2(5000);
6795   l_leafAttrs_MulBTable_dbCol     VARCHAR2(5000);
6796   l_rootAttrs_bTable_dbCol        VARCHAR2(5000);
6797   l_rootAttrs_MulBTable_dbCol     VARCHAR2(5000);
6798   l_leafAttrs_tlTable_dbCol       VARCHAR2(5000);
6799   l_leafAttrs_MulTlTable_dbCol    VARCHAR2(5000);
6800   l_rootAttrs_TlTable_dbCol       VARCHAR2(5000);
6801   l_rootAttrs_MulTlTable_dbCol    VARCHAR2(5000);
6802 
6803   l_leafAttrs_bTable_value        VARCHAR2(5000);
6804   l_leafAttrs_MulBTable_value     VARCHAR2(5000);
6805   l_rootAttrs_bTable_value        VARCHAR2(5000);
6806   l_rootAttrs_MulBTable_value     VARCHAR2(5000);
6807   l_leafAttrs_tlTable_value       VARCHAR2(5000);
6808   l_leafAttrs_MulTlTable_value    VARCHAR2(5000);
6809   l_rootAttrs_TlTable_value       VARCHAR2(5000);
6810   l_rootAttrs_MulTlTable_value    VARCHAR2(5000);
6811 
6812 
6813   --API return parameters
6814 
6815 BEGIN
6816 
6817   OPEN c_errLogFile ( p_resultfmt_usage_id );
6818   FETCH c_errLogFile  INTO l_err_log_file;
6819   IF c_errLogFile%FOUND THEN
6820     l_is_Debug := TRUE ;
6821   END IF;
6822   -- Bug : 4099546
6823   CLOSE c_errLogFile;
6824   Write_Debug('-----------------------------------------------------------------');
6825   Write_Debug('Clear_Gtin_Attrs  :                                            ');
6826   Write_Debug('-----------------------------------------------------------------');
6827 
6828   IF (l_is_Debug ) THEN
6829     l_err_log_file_dir := SUBSTR (l_err_log_file , 0 , INSTR (l_err_log_file , 'EGO_BULKLOAD_INTF' ) - 1 );
6830     l_err_log_file_name := SUBSTR (l_err_log_file , INSTR ( l_err_log_file , 'EGO_BULKLOAD_INTF'  )-1 );
6831     -----------------------------------------------------------------------
6832     -- To open the Debug Session to write the Debug Log.                 --
6833     -- This sets Debug value so that Error_Handler.Get_Debug returns 'Y' --
6834     -----------------------------------------------------------------------
6835     Error_Handler.Open_Debug_Session(
6836       p_debug_filename   => l_err_log_file_name
6837      ,p_output_dir       => l_err_log_file_dir
6838      ,x_return_status    => l_retCode
6839      ,x_error_mesg       => l_errbuff
6840      );
6841 
6842   END IF;
6843 
6844     --  Fetch the metadata now for Uccnet attributes
6845      Write_Debug('Clear_Gtin_Attrs  : Getting metadata');
6846 
6847     OPEN  c_leafAttrs_bTable  ('EGO_ITEM_GTIN_ATTRS', 'R' , 'A') ;
6848     LOOP
6849      FETCH c_leafAttrs_bTable INTO l_attr_rec ;
6850       EXIT WHEN c_leafAttrs_bTable%NOTFOUND;
6851        l_leafAttrs_bTable_dbCol := l_leafAttrs_bTable_dbCol || ' , ' || l_attr_rec.DATABASE_COLUMN ;
6852        l_leafAttrs_bTable_value := l_leafAttrs_bTable_value || ' , NULL ' ;
6853     END LOOP;
6854     CLOSE c_leafAttrs_bTable;
6855     l_leafAttrs_bTable_dbCol  := SUBSTR ( l_leafAttrs_bTable_dbCol  , INSTR( l_leafAttrs_bTable_dbCol , ',')+1 ) ;
6856     l_leafAttrs_bTable_value  := SUBSTR ( l_leafAttrs_bTable_value  , INSTR( l_leafAttrs_bTable_value , ',')+1 ) ;
6857 
6858    OPEN  c_leafAttrs_bTable  ('EGO_ITEM_GTIN_MULTI_ATTRS', 'R' , 'A') ;
6859     LOOP
6860      FETCH c_leafAttrs_bTable INTO l_attr_rec ;
6861      EXIT WHEN c_leafAttrs_bTable%NOTFOUND ;
6862        l_leafAttrs_MulBTable_dbCol := l_leafAttrs_MulBTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6863        l_leafAttrs_MulBTable_value := l_leafAttrs_MulBTable_value || ' , NULL ' ;
6864     END LOOP;
6865     CLOSE c_leafAttrs_bTable;
6866     l_leafAttrs_MulBTable_dbCol  := SUBSTR ( l_leafAttrs_MulBTable_dbCol  , INSTR( l_leafAttrs_MulBTable_dbCol , ',')+1 ) ;
6867     l_leafAttrs_MulBTable_value  := SUBSTR ( l_leafAttrs_MulBTable_value  , INSTR( l_leafAttrs_MulBTable_value , ',')+1 ) ;
6868 
6869    OPEN  c_rootAttrs_bTable  ('EGO_ITEM_GTIN_ATTRS', 'L' ,'LP' ,  'A') ;
6870     LOOP
6871      FETCH c_rootAttrs_bTable INTO l_attr_rec ;
6872      EXIT WHEN  c_rootAttrs_bTable%NOTFOUND ;
6873        l_rootAttrs_bTable_dbCol := l_rootAttrs_bTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6874        l_rootAttrs_bTable_value := l_rootAttrs_bTable_value || ' , NULL ' ;
6875     END LOOP;
6876     CLOSE c_rootAttrs_bTable;
6877     l_rootAttrs_bTable_dbCol  := SUBSTR ( l_rootAttrs_bTable_dbCol  , INSTR( l_rootAttrs_bTable_dbCol , ',')+1 ) ;
6878     l_rootAttrs_bTable_value  := SUBSTR ( l_rootAttrs_bTable_value  , INSTR( l_rootAttrs_bTable_value , ',')+1 ) ;
6879 
6880    OPEN  c_rootAttrs_bTable  ('EGO_ITEM_GTIN_MULTI_ATTRS', 'L' ,'LP'  ,  'A') ;
6881     LOOP
6882      FETCH c_rootAttrs_bTable INTO l_attr_rec ;
6883      EXIT WHEN  c_rootAttrs_bTable%NOTFOUND ;
6884        l_rootAttrs_MulBTable_dbCol := l_rootAttrs_MulBTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6885        l_rootAttrs_MulBTable_value := l_rootAttrs_MulBTable_value || ' , NULL ' ;
6886     END LOOP;
6887     CLOSE c_rootAttrs_bTable;
6888     l_rootAttrs_MulBTable_dbCol  := SUBSTR ( l_rootAttrs_MulBTable_dbCol  , INSTR( l_rootAttrs_MulBTable_dbCol , ',')+1 ) ;
6889     l_rootAttrs_MulBTable_value  := SUBSTR ( l_rootAttrs_MulBTable_value  , INSTR( l_rootAttrs_MulBTable_value , ',')+1 ) ;
6890 
6891    OPEN  c_leafAttrs_tlTable  ('EGO_ITEM_GTIN_ATTRS', 'R' ,  'A') ;
6892     LOOP
6893      FETCH c_leafAttrs_tlTable INTO l_attr_rec ;
6894      EXIT WHEN c_leafAttrs_tlTable%NOTFOUND ;
6895        l_leafAttrs_tlTable_dbCol := l_leafAttrs_tlTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6896        l_leafAttrs_tlTable_value := l_leafAttrs_tlTable_value || ' , NULL ' ;
6897     END LOOP;
6898     CLOSE c_leafAttrs_tlTable;
6899     l_leafAttrs_tlTable_dbCol  := SUBSTR ( l_leafAttrs_tlTable_dbCol  , INSTR( l_leafAttrs_tlTable_dbCol , ',')+1 ) ;
6900     l_leafAttrs_tlTable_value  := SUBSTR ( l_leafAttrs_tlTable_value  , INSTR( l_leafAttrs_tlTable_value , ',')+1 ) ;
6901 
6902    OPEN  c_leafAttrs_tlTable  ('EGO_ITEM_GTIN_MULTI_ATTRS', 'R' ,  'A') ;
6903     LOOP
6904      FETCH c_leafAttrs_tlTable INTO l_attr_rec ;
6905      EXIT WHEN c_leafAttrs_tlTable%NOTFOUND ;
6906        l_leafAttrs_MultlTable_dbCol := l_leafAttrs_MulTlTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6907        l_leafAttrs_MultlTable_value := l_leafAttrs_MultlTable_value || ' , NULL ';
6908     END LOOP;
6909     CLOSE c_leafAttrs_tlTable;
6910     l_leafAttrs_MultlTable_dbCol  := SUBSTR ( l_leafAttrs_MultlTable_dbCol  , INSTR( l_leafAttrs_MultlTable_dbCol , ',')+1 ) ;
6911     l_leafAttrs_MultlTable_value  := SUBSTR ( l_leafAttrs_MultlTable_value  , INSTR( l_leafAttrs_MultlTable_value , ',')+1 ) ;
6912 
6913    OPEN  c_rootAttrs_tlTable  ('EGO_ITEM_GTIN_ATTRS', 'L' ,'LP' ,  'A') ;
6914     LOOP
6915      FETCH c_rootAttrs_tlTable INTO l_attr_rec ;
6916      EXIT WHEN c_rootAttrs_tlTable%NOTFOUND ;
6917        l_rootAttrs_TlTable_dbCol := l_rootAttrs_TlTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6918        l_rootAttrs_TlTable_value := l_rootAttrs_TlTable_value || ' , NULL ' ;
6919     END LOOP;
6920     CLOSE c_rootAttrs_tlTable;
6921     l_rootAttrs_TlTable_dbCol  := SUBSTR ( l_rootAttrs_TlTable_dbCol  , INSTR( l_rootAttrs_TlTable_dbCol , ',')+1 ) ;
6922     l_rootAttrs_TlTable_value  := SUBSTR ( l_rootAttrs_TlTable_value  , INSTR( l_rootAttrs_TlTable_value , ',')+1 ) ;
6923 
6924    OPEN  c_rootAttrs_tlTable  ('EGO_ITEM_GTIN_MULTI_ATTRS', 'L' ,'LP' ,  'A') ;
6925     LOOP
6926      FETCH c_rootAttrs_tlTable INTO l_attr_rec ;
6927      EXIT WHEN c_rootAttrs_tlTable%NOTFOUND ;
6928        l_rootAttrs_MulTlTable_dbCol := l_rootAttrs_MulTlTable_dbCol || ' , '|| l_attr_rec.DATABASE_COLUMN ;
6929        l_rootAttrs_MulTlTable_value := l_rootAttrs_MulTlTable_value || ' , NULL ' ;
6930     END LOOP;
6931     CLOSE c_rootAttrs_tlTable;
6932     l_rootAttrs_MulTlTable_dbCol  := SUBSTR ( l_rootAttrs_MulTlTable_dbCol  , INSTR( l_rootAttrs_MulTlTable_dbCol , ',')+1 ) ;
6933     l_rootAttrs_MulTlTable_value  := SUBSTR ( l_rootAttrs_MulTlTable_value  , INSTR( l_rootAttrs_MulTlTable_value , ',')+1 ) ;
6934 
6935     Write_Debug('Clear_Gtin_Attrs  : Fetched the metadata');
6936 
6937     OPEN c_itemId_OrgId (p_resultfmt_usage_id) ;
6938       LOOP
6939         FETCH c_itemId_OrgId into l_inventory_item_id , l_organization_id ;
6940         EXIT WHEN c_itemId_OrgId%NOTFOUND ;
6941            /*
6942             * GTID can be changed only if the Item is not having a
6943             * packaging hierarchy.So we will clear the attributes
6944             * only if the packaging hierarcy does not exist.
6945             */
6946 
6947            EXECUTE IMMEDIATE ' BEGIN BOM_IMPLODER_PUB.IMPLODER_USEREXIT (
6948                                    SEQUENCE_ID                => NULL ,
6949                                    ENG_MFG_FLAG               => :1 ,
6950                                    ORG_ID                     => :2 ,
6951                                    IMPL_FLAG                  => :3 ,
6952                                    DISPLAY_OPTION             => :4 ,
6953                                    LEVELS_TO_IMPLODE          => :5 ,
6954                                    OBJ_NAME                   => :6 ,
6955                                    PK1_VALUE                  => :7 ,
6956                                    PK2_VALUE                  => :8 ,
6957                                    PK3_VALUE                  => NULL ,
6958                                    PK4_VALUE                  => NULL ,
6959                                    PK5_VALUE                  => NULL ,
6960                                    IMPL_DATE                  => :9,
6961                                    UNIT_NUMBER_FROM           => :10 ,
6962                                    UNIT_NUMBER_TO             => :11 ,
6963                                    ERR_MSG                    => :12 ,
6964                                    ERR_CODE                   => :13 ,
6965                                    ORGANIZATION_OPTION        => :14 ,
6966                                    ORGANIZATION_HIERARCHY     => NULL ,
6967                                    SERIAL_NUMBER_FROM         => NULL ,
6968                                    SERIAL_NUMBER_TO           => NULL ,
6969                                    STRUCT_TYPE                => :15 ,
6970                                    PREFERRED_ONLY             => :16 ,
6971                                    USED_IN_STRUCTURE          => :17
6972                                  ); END ; '
6973              USING  IN 2,  IN l_organization_id,  IN 2,  IN 1,  IN 60,  IN 'EGO_ITEM',
6974                     IN  l_inventory_item_id,  IN l_organization_id, IN  to_char(SYSDATE,'YYYY/MM/DD HH24:MI:SS') ,
6975                     IN 'N', IN 'Y', OUT l_errbuff, OUT l_err_code,  IN 1,
6976                     IN 'Packaging Hierarchy', IN  2, OUT l_used_in_structure ;
6977 
6978 
6979         IF (l_used_in_structure <> 'T') THEN
6980             OPEN c_gtid ( l_inventory_item_id  , l_organization_id  );
6981             FETCH c_gtid INTO l_gtid;
6982             -- Bug : 4099546
6983             CLOSE c_gtid;
6984               IF (l_gtid = 'BASE_UNIT_OR_EACH' )THEN
6985 
6986                 IF ( length(l_leafAttrs_bTable_dbCol) > 0 ) THEN
6987 
6988                   EXECUTE IMMEDIATE ' UPDATE  EGO_ITEM_GTN_ATTRS_B SET  ( '|| l_leafAttrs_bTable_dbCol ||
6989                                    ' ) = ( SELECT '|| l_leafAttrs_bTable_value ||
6990                                    ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id '||
6991                                    ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
6992 
6993                 END IF;
6994 
6995                 IF ( length(l_leafAttrs_tlTable_dbCol) > 0 )  THEN
6996 
6997                   EXECUTE IMMEDIATE ' UPDATE  EGO_ITEM_GTN_ATTRS_TL SET ( '|| l_leafAttrs_tlTable_dbCol ||
6998                                   ' ) = ( SELECT '|| l_leafAttrs_tlTable_value ||
6999                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
7000                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
7001                  END IF;
7002 
7003                 IF ( length(l_leafAttrs_MulBTable_dbCol) > 0 )  THEN
7004 
7005                   EXECUTE IMMEDIATE ' UPDATE  EGO_ITM_GTN_MUL_ATTRS_B SET ( ' || l_leafAttrs_MulBTable_dbCol||
7006                                   ' ) = ( SELECT ' || l_leafAttrs_MulBTable_value ||
7007                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
7008                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
7009                 END IF;
7010                 IF ( length(l_leafAttrs_MultlTable_dbCol) > 0 ) THEN
7011                   EXECUTE IMMEDIATE ' UPDATE  EGO_ITM_GTN_MUL_ATTRS_TL SET ( ' || l_leafAttrs_MultlTable_dbCol||
7012                                   ' ) = ( SELECT ' || l_leafAttrs_MultlTable_value ||
7013                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id' ||
7014                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
7015                 END IF;
7016 
7017                 EGO_GTIN_PVT.UPDATE_REG_PUB_UPDATE_DATES (p_inventory_item_id  => l_inventory_item_id ,
7018                                                           p_organization_id    => l_organization_id ,
7019                                                           p_update_reg         => 'Y' ,
7020                                                           x_return_status      => l_return_status ,
7021                                                           x_msg_count          => l_msg_count,
7022                                                           x_msg_data           => l_msg_data );
7023                IF l_return_status <>  'S'  THEN
7024                    Write_Debug('GTIN : Clear_Gtin_Attrs. :: Exception from EGO_GTIN_PVT.UPDATE_REG_PUB_UPDATE_DATES ');
7025                    Write_Debug('GTIN : Clear_Gtin_Attrs. ::message ' || l_msg_data );
7026                END IF;
7027 
7028               ELSE
7029 
7030                 IF ( length(l_rootAttrs_bTable_dbCol) > 0 )  THEN
7031 
7032                   EXECUTE IMMEDIATE ' UPDATE EGO_ITEM_GTN_ATTRS_B SET ( '|| l_rootAttrs_bTable_dbCol ||
7033                                   ' ) = ( SELECT'|| l_rootAttrs_bTable_value ||
7034                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  =  :inventory_item_id '||
7035                                   ' AND ORGANIZATION_ID = :organization_id  ' USING l_inventory_item_id , l_organization_id;
7036                 END IF;
7037                 IF ( length(l_rootAttrs_tlTable_dbCol) > 0 ) THEN
7038 
7039                   EXECUTE IMMEDIATE ' UPDATE EGO_ITEM_GTN_ATTRS_TL SET ( '|| l_rootAttrs_tlTable_dbCol ||
7040                                   ' ) = ( SELECT'|| l_rootAttrs_tlTable_value ||
7041                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
7042                                   ' AND ORGANIZATION_ID =  :organization_id ' USING l_inventory_item_id , l_organization_id;
7043                 END IF;
7044                 IF ( length(l_rootAttrs_MulBTable_dbCol) > 0 ) THEN
7045 
7046                   EXECUTE IMMEDIATE ' UPDATE EGO_ITM_GTN_MUL_ATTRS_B SET ( '|| l_rootAttrs_MulBTable_dbCol ||
7047                                   ' ) = ( SELECT '|| l_rootAttrs_MulBTable_value ||
7048                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
7049                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
7050                 END IF;
7051                 IF ( length(l_rootAttrs_MultlTable_dbCol) > 0 ) THEN
7052 
7053                   EXECUTE IMMEDIATE ' UPDATE EGO_ITM_GTN_MUL_ATTRS_TL SET ( '||l_rootAttrs_MultlTable_dbCol ||
7054                                   ' ) = ( SELECT '|| l_rootAttrs_MultlTable_value ||
7055                                   ' FROM DUAL ) WHERE INVENTORY_ITEM_ID  = :inventory_item_id ' ||
7056                                   ' AND ORGANIZATION_ID = :organization_id '  USING l_inventory_item_id , l_organization_id;
7057                 END IF;
7058 
7059                 EGO_GTIN_PVT.UPDATE_REG_PUB_UPDATE_DATES (p_inventory_item_id  => l_inventory_item_id ,
7060                                                           p_organization_id    => l_organization_id ,
7061                                                           p_update_reg         => 'N' ,
7062                                                           x_return_status      => l_return_status,
7063                                                           x_msg_count          => l_msg_count,
7064                                                           x_msg_data           => l_msg_data );
7065                IF l_return_status <> 'S' THEN
7066                    Write_Debug('GTIN : Clear_Gtin_Attrs. :: Exception from EGO_GTIN_PVT.UPDATE_REG_PUB_UPDATE_DATES ');
7067                    Write_Debug('GTIN : Clear_Gtin_Attrs. ::message ' || l_msg_data );
7068                END IF;
7069 
7070               END IF; --GTID is Each / non-Each
7071 
7072         END IF; -- If the Item is not having a Packaging Hierarchy
7073 
7074       END LOOP;
7075       close c_itemId_OrgId;
7076 
7077   Write_Debug('GTIN : Clear_Gtin_Attrs.');
7078 
7079   -------------------------------------------------------------
7080   -- Commit at the end.
7081   -------------------------------------------------------------
7082   IF (p_commit = FND_API.G_TRUE) THEN
7083     COMMIT;
7084   END IF;
7085 
7086   IF (l_is_debug) THEN
7087     Close_Debug_Session;
7088   END IF;
7089 
7090   x_ret_code := G_STATUS_SUCCESS;
7091 
7092   EXCEPTION
7093     WHEN OTHERS THEN
7094       x_ret_code := G_STATUS_ERROR;
7095       x_errbuff := SUBSTRB(SQLERRM, 1,240);
7096       Write_Debug('Clear_Gtin_Attrs  : EXCEPTION HAPPENED => '||x_errbuff);
7097 
7098       IF c_errLogFile%ISOPEN THEN
7099         close c_errLogFile;
7100       END IF;
7101 
7102       IF c_itemId_OrgId%ISOPEN THEN
7103        close c_itemId_OrgId ;
7104       END IF;
7105 
7106       IF c_gtid%ISOPEN THEN
7107         close c_gtid ;
7108       END IF;
7109 
7110       IF c_leafAttrs_bTable%ISOPEN THEN
7111         close c_leafAttrs_bTable ;
7112       END IF;
7113 
7114       IF c_rootAttrs_bTable%ISOPEN THEN
7115         close c_rootAttrs_bTable   ;
7116       END IF;
7117 
7118       IF c_leafAttrs_tlTable%ISOPEN THEN
7119         close c_leafAttrs_tlTable  ;
7120       END IF;
7121 
7122       IF c_rootAttrs_tlTable%ISOPEN THEN
7123         close c_rootAttrs_tlTable ;
7124       END IF;
7125 
7126       IF (l_is_debug) THEN
7127         Close_Debug_Session;
7128       END IF;
7129 
7130 END Clear_Gtin_Attrs ;
7131 
7132 --  ============================================================================
7133 --  API Name    : Populate_Seq_Gen_Item_Nums
7134 --  Description : This procedure will be called from IOI
7135 --                (after org and catalog category details are resolved)
7136 --                to populate the item numbers for all the sequence generated items.
7137 --  ============================================================================
7138 PROCEDURE Populate_Seq_Gen_Item_Nums
7139           (p_set_id           IN         NUMBER
7140           ,p_org_id           IN         NUMBER
7141           ,p_all_org          IN         NUMBER
7142           ,p_rec_status       IN         NUMBER
7143           ,x_return_status    OUT NOCOPY VARCHAR2
7144           ,x_msg_count        OUT NOCOPY NUMBER
7145           ,x_msg_data         OUT NOCOPY VARCHAR2) IS
7146 
7147   TYPE num_tbl_type   IS TABLE OF NUMBER        INDEX BY BINARY_INTEGER;
7148 
7149   l_cc_id_table                  num_tbl_type;
7150   l_trans_id_table               num_tbl_type;
7151   l_org_id_table                 DBMS_SQL.VARCHAR2_TABLE;
7152   l_ss_id_table                  num_tbl_type;
7153   l_ss_ref_table                 EGO_VARCHAR_TBL_TYPE;
7154   l_item_num_table               EGO_VARCHAR_TBL_TYPE;
7155   l_old_item_num_table           EGO_VARCHAR_TBL_TYPE; --Added R12C
7156   l_sql                          VARCHAR2(10000);
7157   l_cc_rows_processed            NUMBER;
7158   l_item_rows_processed          NUMBER;
7159   l_xset_id                      NUMBER;
7160 
7161 BEGIN
7162   Write_Debug (' started with params p_set_id: '||p_set_id||' p_org_id: '||p_org_id||' p_all_org: '||p_all_org);
7163   x_return_status := FND_API.G_RET_STS_SUCCESS;
7164   x_msg_count := 0;
7165   x_msg_data := NULL;
7166 
7167   --Only Item Row has p_set_id, setting batch id for the rest
7168   l_xset_id := p_set_id-5000000000000;
7169 
7170   --Removing Item Num NULL clause - R12C
7171   SELECT DISTINCT item_catalog_group_id
7172   BULK COLLECT INTO l_cc_id_table
7173   FROM  MTL_SYSTEM_ITEMS_INTERFACE
7174   WHERE set_process_id = p_set_id
7175     AND (organization_id = p_org_id OR p_all_org = 1)
7176     AND process_flag = p_rec_status
7177     AND transaction_type = 'CREATE';
7178 
7179   l_cc_rows_processed := SQL%ROWCOUNT;
7180   IF l_cc_rows_processed = 0 THEN
7181     RETURN;
7182   END IF;
7183 
7184   FOR cc_row_index in 1..l_cc_rows_processed LOOP
7185     Write_Debug (' CC being processed '||cc_row_index);
7186 
7187     --Removing Item Num NULL clause - R12C
7188     SELECT TO_CHAR(organization_id), item_number,
7189            transaction_id, source_system_id,
7190            source_system_reference
7191     BULK COLLECT INTO l_org_id_table, l_old_item_num_table,
7192                       l_trans_id_table, l_ss_id_table,
7193                       l_ss_ref_table
7194     FROM  MTL_SYSTEM_ITEMS_INTERFACE
7195     WHERE set_process_id = p_set_id
7196       AND (organization_id = p_org_id OR p_all_org = 1)
7197       AND item_catalog_group_id = l_cc_id_table(cc_row_index)
7198       AND process_flag = p_rec_status
7199       AND transaction_type = 'CREATE';
7200 
7201     l_item_rows_processed := SQL%ROWCOUNT;
7202     IF (l_item_rows_processed > 0) THEN
7203      EGO_ITEM_PVT.Get_Seq_Gen_Item_Nums
7204                          (
7205                            p_item_catalog_group_id  => l_cc_id_table(cc_row_index)
7206                           ,p_org_id_tbl             => l_org_id_table
7207                           ,x_item_num_tbl           => l_item_num_table
7208                           );
7209 
7210       -- for item interface table
7211       FORALL item_num_row_index IN 1..l_item_rows_processed
7212         UPDATE mtl_system_items_interface
7213            SET item_number = l_item_num_table(item_num_row_index),
7214                SEGMENT1 = NULL,
7215                SEGMENT2 = NULL,
7216                SEGMENT3 = NULL,
7217                SEGMENT4 = NULL,
7218                SEGMENT5 = NULL,
7219                SEGMENT6 = NULL,
7220                SEGMENT7 = NULL,
7221                SEGMENT8 = NULL,
7222                SEGMENT9 = NULL,
7223                SEGMENT10 = NULL,
7224                SEGMENT11 = NULL,
7225                SEGMENT12 = NULL,
7226                SEGMENT13 = NULL,
7227                SEGMENT14 = NULL,
7228                SEGMENT15 = NULL,
7229                SEGMENT16 = NULL,
7230                SEGMENT17 = NULL,
7231                SEGMENT18 = NULL,
7232                SEGMENT19 = NULL,
7233                SEGMENT20 = NULL
7234          WHERE set_process_id IN (p_set_id, l_xset_id) /*bug 6158936 child records are in l_xset_id*/
7235            AND process_flag IN (p_rec_status, 60001)   /*bug 6158936 child records are in process_flag + 60000*/
7236            AND source_system_id = l_ss_id_table(item_num_row_index)
7237            AND ( item_number = l_old_item_num_table(item_num_row_index) OR
7238                  source_system_reference = l_ss_ref_table(item_num_row_index));
7239 
7240       -- for item revisions interface table
7241       FORALL rev_row_index IN 1..l_item_rows_processed
7242         UPDATE mtl_item_revisions_interface
7243            SET item_number = l_item_num_table(rev_row_index)
7244          WHERE set_process_id = l_xset_id
7245            AND source_system_id = l_ss_id_table(rev_row_index)
7246            AND process_flag = p_rec_status
7247            AND ( item_number = l_old_item_num_table(rev_row_index) OR
7248                  source_system_reference = l_ss_ref_table(rev_row_index));
7249 
7250       -- for category assignments interface table
7251       FORALL item_cat_row_index IN 1..l_item_rows_processed
7252         UPDATE mtl_item_categories_interface
7253            SET item_number = l_item_num_table(item_cat_row_index)
7254          WHERE set_process_id = l_xset_id
7255            AND source_system_id = l_ss_id_table(item_cat_row_index)
7256            AND process_flag = p_rec_status
7257            AND ( item_number = l_old_item_num_table(item_cat_row_index) OR
7258                  source_system_reference = l_ss_ref_table(item_cat_row_index));
7259 
7260       -- for user attrs interface table
7261       FORALL usr_attr_row_index IN 1..l_item_rows_processed
7262         UPDATE ego_itm_usr_attr_intrfc
7263            SET item_number = l_item_num_table(usr_attr_row_index)
7264          WHERE data_set_id = l_xset_id
7265            AND source_system_id = l_ss_id_table(usr_attr_row_index)
7266            AND process_status = p_rec_status
7267            AND ( item_number = l_old_item_num_table(usr_attr_row_index) OR
7268                  source_system_reference = l_ss_ref_table(usr_attr_row_index));
7269 
7270       -- item people interface table
7271       FORALL ss_id_row_index IN 1..l_item_rows_processed
7272         UPDATE ego_item_people_intf
7273            SET item_number = l_item_num_table(ss_id_row_index)
7274          WHERE data_set_id = l_xset_id
7275            AND source_system_id = l_ss_id_table(ss_id_row_index)
7276            AND process_status = p_rec_status
7277            AND ( item_number = l_old_item_num_table(ss_id_row_index) OR
7278                  source_system_reference = l_ss_ref_table(ss_id_row_index));
7279 
7280       -- aml interface table
7281       FORALL ss_id_row_index IN 1..l_item_rows_processed
7282         UPDATE ego_aml_intf
7283            SET item_number = l_item_num_table(ss_id_row_index)
7284          WHERE data_set_id = l_xset_id
7285            AND source_system_id = l_ss_id_table(ss_id_row_index)
7286            AND process_flag = p_rec_status
7287            AND ( item_number = l_old_item_num_table(ss_id_row_index) OR
7288                  source_system_reference = l_ss_ref_table(ss_id_row_index));
7289 
7290       --BOM interface tables R12C
7291       FORALL bill_id_row_index IN 1..l_item_rows_processed
7292         UPDATE bom_bill_of_mtls_interface
7293            SET item_number = l_item_num_table(bill_id_row_index)
7294          WHERE process_flag = p_rec_status
7295            AND batch_id = l_xset_id
7296            AND ( item_number = l_old_item_num_table(bill_id_row_index) OR
7297                  source_system_reference = l_ss_ref_table(bill_id_row_index));
7298 
7299       FORALL bom_inv_id_row_index IN 1..l_item_rows_processed
7300         UPDATE BOM_INVENTORY_COMPS_INTERFACE
7301            SET component_item_number = l_item_num_table(bom_inv_id_row_index)
7302          WHERE process_flag = p_rec_status
7303            AND batch_id = l_xset_id
7304            AND ( component_item_number = l_old_item_num_table(bom_inv_id_row_index) OR
7305                  comp_source_system_reference = l_ss_ref_table(bom_inv_id_row_index));
7306 
7307       FORALL bom_par_id_row_index IN 1..l_item_rows_processed
7308         UPDATE BOM_INVENTORY_COMPS_INTERFACE
7309            SET assembly_item_number = l_item_num_table(bom_par_id_row_index)
7310          WHERE process_flag = p_rec_status
7311            AND batch_id = l_xset_id
7312            AND ( assembly_item_number = l_old_item_num_table(bom_par_id_row_index) OR
7313                  parent_source_system_reference = l_ss_ref_table(bom_par_id_row_index));
7314 
7315       FORALL bom_sub_id_row_index IN 1..l_item_rows_processed
7316         UPDATE BOM_SUB_COMPS_INTERFACE
7317            SET assembly_item_number = l_item_num_table(bom_sub_id_row_index)
7318          WHERE process_flag = p_rec_status
7319            AND batch_id = l_xset_id
7320            AND ( assembly_item_number = l_old_item_num_table(bom_sub_id_row_index) OR
7321                  parent_source_system_reference = l_ss_ref_table(bom_sub_id_row_index));
7322 
7323       FORALL bom_sub_id_row_index IN 1..l_item_rows_processed
7324         UPDATE BOM_SUB_COMPS_INTERFACE
7325            SET component_item_number = l_item_num_table(bom_sub_id_row_index)
7326          WHERE process_flag = p_rec_status
7327            AND batch_id = l_xset_id
7328            AND ( component_item_number = l_old_item_num_table(bom_sub_id_row_index) OR
7329                  comp_source_system_reference = l_ss_ref_table(bom_sub_id_row_index));
7330 
7331       FORALL bom_sub_id_row_index IN 1..l_item_rows_processed
7332         UPDATE BOM_SUB_COMPS_INTERFACE
7333            SET substitute_comp_number = l_item_num_table(bom_sub_id_row_index)
7334          WHERE process_flag = p_rec_status
7335            AND batch_id = l_xset_id
7336            AND ( substitute_comp_number = l_old_item_num_table(bom_sub_id_row_index) OR
7337                  subcom_source_system_reference = l_ss_ref_table(bom_sub_id_row_index));
7338 
7339       FORALL bom_ref_id_row_index IN 1..l_item_rows_processed
7340         UPDATE BOM_REF_DESGS_INTERFACE
7341            SET assembly_item_number = l_item_num_table(bom_ref_id_row_index)
7342          WHERE process_flag = p_rec_status
7343            AND batch_id = l_xset_id
7344            AND ( assembly_item_number = l_old_item_num_table(bom_ref_id_row_index) OR
7345                  parent_source_system_reference = l_ss_ref_table(bom_ref_id_row_index));
7346 
7347       FORALL bom_ref_id_row_index IN 1..l_item_rows_processed
7348         UPDATE BOM_REF_DESGS_INTERFACE
7349            SET component_item_number = l_item_num_table(bom_ref_id_row_index)
7350          WHERE process_flag = p_rec_status
7351            AND batch_id = l_xset_id
7352            AND ( component_item_number = l_old_item_num_table(bom_ref_id_row_index) OR
7353                  comp_source_system_reference = l_ss_ref_table(bom_ref_id_row_index));
7354 
7355       FORALL bom_comp_id_row_index IN 1..l_item_rows_processed
7356         UPDATE BOM_COMPONENT_OPS_INTERFACE
7357            SET assembly_item_number = l_item_num_table(bom_comp_id_row_index)
7358          WHERE process_flag = p_rec_status
7359            AND batch_id = l_xset_id
7360            AND ( assembly_item_number = l_old_item_num_table(bom_comp_id_row_index) OR
7361                  parent_source_system_reference = l_ss_ref_table(bom_comp_id_row_index));
7362 
7363       FORALL bom_comp_id_row_index IN 1..l_item_rows_processed
7364         UPDATE BOM_COMPONENT_OPS_INTERFACE
7365            SET component_item_number = l_item_num_table(bom_comp_id_row_index)
7366          WHERE process_flag = p_rec_status
7367            AND batch_id = l_xset_id
7368            AND ( component_item_number = l_old_item_num_table(bom_comp_id_row_index) OR
7369                  comp_source_system_reference = l_ss_ref_table(bom_comp_id_row_index));
7370 
7371     END IF; --end: IF (l_org_id_rows_cnt > 0) THEN
7372 
7373   END LOOP; -- for cc_row_identifier in 1..l_rows_processed
7374 
7375 EXCEPTION
7376   WHEN OTHERS THEN
7377       x_return_status :=  FND_API.G_RET_STS_UNEXP_ERROR;
7378       FND_MESSAGE.Set_Name('EGO', 'EGO_PLSQL_ERR');
7379       FND_MESSAGE.Set_Token('PKG_NAME', 'EGO_ITEM_BULKLOAD_PKG');
7380       FND_MESSAGE.Set_Token('API_NAME', 'Populate_Seq_Gen_Item_Nums');
7381       FND_MESSAGE.Set_Token('SQL_ERR_MSG', SQLERRM);
7382       FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE
7383                                ,p_count   => x_msg_count
7384                                ,p_data    => x_msg_data);
7385 END Populate_Seq_Gen_Item_Nums;
7386 
7387 
7388 
7389 --  ============================================================================
7390 --  API Name    : load_intersections_interface
7391 --  Description : This procedure will be called to load the intersection
7392 --                interface table ego_item_associations_intf with the required data
7393 --  ============================================================================
7394 PROCEDURE load_intersections_interface
7395                (
7396                  p_resultfmt_usage_id    IN         NUMBER,
7397                  p_set_process_id        IN         NUMBER,
7398                  x_set_process_id        OUT NOCOPY NUMBER,
7399                  x_errbuff               OUT NOCOPY VARCHAR2,
7400                  x_retcode               OUT NOCOPY VARCHAR2
7401                 ) IS
7402 
7403 
7404   ------------------------------------------------------------------------------------------
7405   -- To get the Item intersection attr columns in the Result Format.
7406   ------------------------------------------------------------------------------------------
7407   CURSOR c_item_intersection_intf_cols (c_resultfmt_usage_id  IN  NUMBER) IS
7408     SELECT attribute_code, intf_column_name, data_level_id
7409     FROM   ego_results_fmt_usages
7410     WHERE  resultfmt_usage_id = c_resultfmt_usage_id
7411      /* AND DATA_LEVEL_ID in (SELECT DATA_LEVEL_ID
7412                               FROM EGO_DATA_LEVEL_B
7413                              WHERE DATA_LEVEL_NAME IN ('ITEM_SUP','ITEM_ORG','ITEM_SUP_SITE')
7414                                AND APPLICATION_ID = 431
7415                                AND ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
7416                             )*/;
7417 
7418   ---------------------------------------------------------------------
7419   -- Type Declarations
7420   ---------------------------------------------------------------------
7421   TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(256)
7422    INDEX BY BINARY_INTEGER;
7423 
7424                -------------------------
7425                --   local variables   --
7426                -------------------------
7427   l_prod_col_name       VARCHAR2(256);
7428   l_intf_col_name       VARCHAR2(256);
7429 
7430   ---------------------------------------------------------------------
7431   -- Assuming that the column name will not be more than 30 chars.
7432   ---------------------------------------------------------------------
7433   l_supplier_name_col           VARCHAR2(30);
7434   l_org_code_col                VARCHAR2(30);
7435   l_supplier_site_col           VARCHAR2(30);
7436   l_supplier_site_name_col      VARCHAR2(30);
7437   l_supplier_site_prim_flag_col VARCHAR2(30);
7438   l_supplier_site_status_col    VARCHAR2(30);
7439   l_sup_site_store_status_col   VARCHAR2(30);
7440   l_supplier_number_col         VARCHAR2(30);
7441 
7442   l_msii_set_process_id    NUMBER;
7443   i                        NUMBER;
7444   l_data_level_id          NUMBER;
7445   l_item_number_col        VARCHAR2(30);
7446   l_supplier_prim_flag_col VARCHAR2(30);
7447   l_supplier_status_col    VARCHAR2(30);
7448   l_data_level_id_1        VARCHAR2(30);
7449 
7450   l_yes_meaning            VARCHAR2(20);
7451   l_no_meaning             VARCHAR2(20);
7452   l_active_meaning         VARCHAR2(20);
7453   l_inactive_meaning       VARCHAR2(20);
7454   l_has_sup_sit_org_col    VARCHAR2(1);
7455 
7456   --------------------------------------------
7457   -- Long Dynamic SQL String
7458   --------------------------------------------
7459   l_dyn_sql                VARCHAR2(10000);
7460 
7461 BEGIN
7462    Write_Debug('*Item Intersections Interface*');
7463 
7464    Write_Debug('Retrieving the Display and INTF cols');
7465    i := 0;
7466 
7467    IF p_set_process_id IS NULL THEN
7468      SELECT mtl_system_items_intf_sets_s.NEXTVAL
7469        INTO l_msii_set_process_id
7470      FROM dual;
7471    ELSE
7472      l_msii_set_process_id := p_set_process_id;
7473    END IF;
7474 
7475    l_has_sup_sit_org_col := 'N';
7476    --------------------------------------------------------------------
7477    -- Saving the column names in local table for easy retrieval later.
7478    -- Also save important columns such as Item ID, Org ID etc.,
7479    --------------------------------------------------------------------
7480    FOR c_item_rev_attr_intf_rec IN c_item_intersection_intf_cols
7481      (
7482        p_resultfmt_usage_id
7483       )
7484    LOOP
7485 
7486      l_prod_col_name := c_item_rev_attr_intf_rec.attribute_code;
7487      l_intf_col_name := c_item_rev_attr_intf_rec.intf_column_name;
7488      l_data_level_id := c_item_rev_attr_intf_rec.data_level_id;
7489 
7490 -- bedajna bug 6491762
7491 --     IF(l_data_level_id = 43105) THEN
7492      IF((l_data_level_id = 43105) OR (l_prod_col_name = 'SUPPLIERSITE_STORE_STATUS')) THEN
7493        l_has_sup_sit_org_col := 'Y';
7494      END IF;
7495       --------------------------------------------------------------------
7496       -- Store the Item Number column name in the Generic Interface
7497       --------------------------------------------------------------------
7498       IF (l_prod_col_name = G_ITEM_NUMBER) THEN
7499         l_item_number_col := l_intf_col_name;
7500         Write_Debug('Item Number : '||l_item_number_col);
7501 
7502       --------------------------------------------------------------------
7503       -- Store the Organization Code column name in the Generic Interface
7504       --------------------------------------------------------------------
7505       ELSIF (l_prod_col_name = G_ORG_CODE) THEN
7506         l_org_code_col := l_intf_col_name;
7507         Write_Debug('Organization Code : '||l_org_code_col);
7508 
7509       --------------------------------------------------------------------
7510       -- Store the Supplier Name column name in the Generic Interface
7511       --------------------------------------------------------------------
7512       ELSIF (l_prod_col_name = 'SUPPLIER_NAME') THEN
7513         l_supplier_name_col := l_intf_col_name;
7514         Write_Debug('Supplier Name : '||l_supplier_name_col);
7515 
7516       --------------------------------------------------------------------
7517       -- Store the Supplier Number column name in the Generic Interface
7518       --------------------------------------------------------------------
7519       ELSIF (l_prod_col_name = 'SUPPLIER_NUMBER') THEN
7520         l_supplier_number_col := l_intf_col_name;
7521         Write_Debug('Supplier Number : '||l_supplier_name_col);
7522 
7523 
7524       --------------------------------------------------------------------
7525       -- Store the Supplier Name column name in the Generic Interface
7526       --------------------------------------------------------------------
7527       ELSIF (l_prod_col_name = 'SUPPLIER_PRIMARY') THEN
7528         l_supplier_prim_flag_col := l_intf_col_name;
7529         Write_Debug('Supplier Primary flag : '||l_supplier_name_col);
7530 
7531       --------------------------------------------------------------------
7532       -- Store the Supplier Status column name in the Generic Interface
7533       --------------------------------------------------------------------
7534       ELSIF (l_prod_col_name = 'SUPPLIER_STATUS') THEN
7535         l_supplier_status_col := l_intf_col_name;
7536         Write_Debug('Supplier Status : '||l_supplier_status_col);
7537 
7538       --------------------------------------------------------------------
7539       -- Store the Supplier Site Name column name in the Generic Interface
7540       --------------------------------------------------------------------
7541       ELSIF (l_prod_col_name = 'SUPPLIER_SITE') THEN
7542         l_supplier_site_name_col := l_intf_col_name;
7543         Write_Debug('Supplier Site Name : '||l_supplier_site_name_col);
7544 
7545       --------------------------------------------------------------------
7546       -- Store the Supplier Name column name in the Generic Interface
7547       --------------------------------------------------------------------
7548       ELSIF (l_prod_col_name = 'SUPPLIERSITE_PRIMARY') THEN
7549         l_supplier_site_prim_flag_col := l_intf_col_name;
7550         Write_Debug('Supplier Primary flag : '||l_supplier_site_prim_flag_col);
7551 
7552       --------------------------------------------------------------------
7553       -- Store the Supplier Status column name in the Generic Interface
7554       --------------------------------------------------------------------
7555       ELSIF (l_prod_col_name = 'SUPPLIERSITE_STATUS') THEN
7556         l_supplier_site_status_col := l_intf_col_name;
7557         Write_Debug('Supplier site Status : '||l_supplier_site_status_col);
7558 
7559       ELSIF (l_prod_col_name = 'SUPPLIERSITE_STORE_STATUS') THEN
7560         l_sup_site_store_status_col := l_intf_col_name;
7561         Write_Debug('Supplier site store Status : '||l_sup_site_store_status_col);
7562 
7563       END IF; --IF (l_prod_col_name = G_ITEM_NUMBER) THEN
7564 
7565    END LOOP; --FOR c_item_rev_attr_intf_rec
7566 
7567    SELECT MEANING
7568      INTO l_yes_meaning
7569     FROM  FND_LOOKUP_VALUES_VL
7570     WHERE  LOOKUP_TYPE = 'EGO_YES_NO'
7571       AND  LOOKUP_CODE = 'Y';
7572 
7573    SELECT MEANING
7574      INTO l_no_meaning
7575     FROM  FND_LOOKUP_VALUES_VL
7576     WHERE  LOOKUP_TYPE = 'EGO_YES_NO'
7577       AND  LOOKUP_CODE = 'N';
7578 
7579    SELECT MEANING
7580      INTO l_active_meaning
7581     FROM  FND_LOOKUP_VALUES_VL
7582     WHERE  LOOKUP_TYPE = 'EGO_ASSOCIATION_STATUS'
7583       AND  LOOKUP_CODE = '1';
7584 
7585    SELECT MEANING
7586      INTO l_inactive_meaning
7587     FROM  FND_LOOKUP_VALUES_VL
7588     WHERE  LOOKUP_TYPE = 'EGO_ASSOCIATION_STATUS'
7589       AND  LOOKUP_CODE = '2';
7590 
7591    ----------------------------------------------------------------------
7592    -- Inserting rows in the intersection interface table for supplier
7593    -- intersection ...
7594    ----------------------------------------------------------------------
7595    IF(l_supplier_name_col IS NOT NULL OR
7596       l_supplier_number_col IS NOT NULL) THEN
7597 
7598      SELECT DATA_LEVEL_ID
7599        INTO l_data_level_id
7600        FROM EGO_DATA_LEVEL_B
7601       WHERE DATA_LEVEL_NAME = 'ITEM_SUP'
7602         AND APPLICATION_ID = 431
7603         AND ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP';
7604 
7605      l_dyn_sql :=              'INSERT INTO EGO_ITEM_ASSOCIATIONS_INTF ';
7606      l_dyn_sql := l_dyn_sql || '( ';
7607      l_dyn_sql := l_dyn_sql || ' BATCH_ID                 ,   ';
7608      l_dyn_sql := l_dyn_sql || ' ITEM_NUMBER              ,   ';
7609      l_dyn_sql := l_dyn_sql || ' INVENTORY_ITEM_ID        ,   ';
7610      l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID          ,   ';
7611      l_dyn_sql := l_dyn_sql || ' DATA_LEVEL_ID            ,   ';
7612      l_dyn_sql := l_dyn_sql || ' PRIMARY_FLAG             ,   ';
7613      l_dyn_sql := l_dyn_sql || ' STATUS_CODE              ,   ';
7614      l_dyn_sql := l_dyn_sql || ' SUPPLIER_NAME            ,   ';
7615      l_dyn_sql := l_dyn_sql || ' SUPPLIER_NUMBER          ,   ';
7616      l_dyn_sql := l_dyn_sql || ' ORGANIZATION_CODE        ,   ';
7617      l_dyn_sql := l_dyn_sql || ' TRANSACTION_TYPE         ,   ';
7618      l_dyn_sql := l_dyn_sql || ' PROCESS_FLAG             ,   ';
7619      l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID           ,   ';
7620      l_dyn_sql := l_dyn_sql || ' CREATED_BY               ,   ';
7621      l_dyn_sql := l_dyn_sql || ' CREATION_DATE            ,   ';
7622      l_dyn_sql := l_dyn_sql || ' LAST_UPDATED_BY          ,   ';
7623      l_dyn_sql := l_dyn_sql || ' LAST_UPDATE_DATE         ,   ';
7624      l_dyn_sql := l_dyn_sql || ' LAST_UPDATE_LOGIN        ,   ';
7625      l_dyn_sql := l_dyn_sql || ' REQUEST_ID               ,   ';
7626      l_dyn_sql := l_dyn_sql || ' PROGRAM_APPLICATION_ID   ,   ';
7627      l_dyn_sql := l_dyn_sql || ' PROGRAM_ID               ,   ';
7628      l_dyn_sql := l_dyn_sql || ' PROGRAM_UPDATE_DATE      ,   ';
7629      l_dyn_sql := l_dyn_sql || ' BUNDLE_ID                ,   ';
7630      l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_ID         ,   ';
7631      l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE  ,   ';
7632      l_dyn_sql := l_dyn_sql || ' ASSOCIATION_ID               ';
7633      l_dyn_sql := l_dyn_sql || ' )                            ';
7634      l_dyn_sql := l_dyn_sql || 'SELECT ';
7635      l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
7636      l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
7637      l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
7638      l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
7639      --l_dyn_sql := l_dyn_sql || ' ''EGO_ITEM''             , ';
7640      l_dyn_sql := l_dyn_sql || l_data_level_id||'         , ';
7641      IF(l_supplier_prim_flag_col IS NOT NULL) THEN
7642   --     bedajna bug 6429874
7643   --     l_dyn_sql := l_dyn_sql || 'DECODE (EBI.'||l_supplier_prim_flag_col||', '''||l_yes_meaning||''', ''Y'', '''||l_no_meaning||''', ''N'', NULL ) , ';
7644        l_dyn_sql := l_dyn_sql || 'DECODE (EBI.'||l_supplier_prim_flag_col||', '||':yes_meaning'||', ''Y'', '||':no_meaning'||', ''N'', NULL ) , ';
7645      ELSE
7646        l_dyn_sql := l_dyn_sql || ' NULL,  ';
7647      END IF;
7648      IF(l_supplier_status_col IS NOT NULL) THEN
7649   --     bedajna bug 6429874
7650   --     l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_supplier_status_col||' , '''||l_active_meaning||''', ''1'', '''||l_inactive_meaning||''', ''2'', NULL) STATUS_CODE ,';
7651        l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_supplier_status_col||' , '||':active_meaning'||', ''1'', '||':inactive_meaning'||', ''2'', NULL) STATUS_CODE ,';
7652      ELSE
7653        l_dyn_sql := l_dyn_sql || ' NULL,  ';
7654      END IF;
7655      IF(l_supplier_name_col IS NOT NULL)THEN
7656        l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_name_col ||' , ';
7657      ELSE
7658        l_dyn_sql := l_dyn_sql || ' NULL,  ';
7659      END IF;
7660      IF(l_supplier_number_col IS NOT NULL)THEN
7661        l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_number_col ||' , ';
7662      ELSE
7663        l_dyn_sql := l_dyn_sql || ' NULL,  ';
7664      END IF;
7665      l_dyn_sql := l_dyn_sql || 'EBI.'||l_org_code_col ||'       , ';
7666      l_dyn_sql := l_dyn_sql || '''SYNC''                        , ';
7667      l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS||'              , ';
7668      l_dyn_sql := l_dyn_sql || 'MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL , ';
7669      l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATED_BY              , ';
7670      l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATION_DATE           , ';
7671      l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATED_BY         , ';
7672      l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_DATE        , ';
7673      l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_LOGIN       , ';
7674      l_dyn_sql := l_dyn_sql || 'EBI.'||'REQUEST_ID              , ';
7675      l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_APPLICATION_ID  , ';
7676      l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_ID              , ';
7677      l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_UPDATE_DATE     , ';
7678      l_dyn_sql := l_dyn_sql || ' NULL                           , ';
7679      l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11)  , ';
7680      l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12             , ';
7681      l_dyn_sql := l_dyn_sql || ' NULL                            ';
7682      l_dyn_sql := l_dyn_sql || 'FROM EGO_BULKLOAD_INTF EBI ';
7683      l_dyn_sql := l_dyn_sql || ' WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
7684      l_dyn_sql := l_dyn_sql || ' AND   EBI.PROCESS_STATUS = 1  ';
7685      IF(l_supplier_name_col IS NOT NULL AND l_supplier_number_col IS NOT NULL)THEN
7686        l_dyn_sql := l_dyn_sql || ' AND  ( EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7687        l_dyn_sql := l_dyn_sql || '       OR EBI.'||l_supplier_number_col||' IS NOT NULL ) ';
7688      ELSIF(l_supplier_name_col IS NOT NULL AND l_supplier_number_col IS NULL) THEN
7689        l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7690      ELSIF(l_supplier_name_col IS NULL AND l_supplier_number_col IS NOT NULL) THEN
7691        l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_number_col||' IS NOT NULL  ';
7692      END IF;
7693 
7694      Write_Debug(l_dyn_sql);
7695 --     bedajna bug 6429874
7696 --     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
7697     IF ( (l_supplier_prim_flag_col IS NOT NULL) AND (l_supplier_status_col IS NOT NULL) ) then
7698      EXECUTE IMMEDIATE l_dyn_sql USING l_yes_meaning, l_no_meaning, l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id;
7699     ELSIF ( (l_supplier_prim_flag_col IS NOT NULL) AND (l_supplier_status_col IS NULL) ) then
7700      EXECUTE IMMEDIATE l_dyn_sql USING l_yes_meaning, l_no_meaning, p_resultfmt_usage_id;
7701     ELSIF ( (l_supplier_prim_flag_col IS NULL) AND (l_supplier_status_col IS NOT NULL) ) then
7702      EXECUTE IMMEDIATE l_dyn_sql USING l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id;
7703     ELSIF ( (l_supplier_prim_flag_col IS NULL) AND (l_supplier_status_col IS NULL) ) then
7704      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id;
7705     end if;
7706 
7707      Write_Debug('Item Revs Interface: Populated the Inv Item IDs, Org IDs.');
7708 
7709    END IF;
7710    --------------------------------------------------------------------------
7711    -- Inserting rows in the intersection interface table for supplier Site --
7712    -- and supplier site store intersection ...
7713    --------------------------------------------------------------------------
7714    IF((l_supplier_name_col IS NOT NULL OR l_supplier_number_col IS NOT NULL)
7715       AND l_supplier_site_name_col IS NOT NULL) THEN
7716 
7717       SELECT DATA_LEVEL_ID
7718         INTO l_data_level_id
7719         FROM EGO_DATA_LEVEL_B
7720        WHERE DATA_LEVEL_NAME = 'ITEM_SUP_SITE'
7721          AND APPLICATION_ID = 431
7722          AND ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP';
7723 
7724       SELECT DATA_LEVEL_ID
7725         INTO l_data_level_id_1
7726         FROM EGO_DATA_LEVEL_B
7727        WHERE DATA_LEVEL_NAME = 'ITEM_SUP_SITE_ORG'
7728          AND APPLICATION_ID = 431
7729          AND ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP';
7730 
7731       l_dyn_sql :=              'INSERT INTO EGO_ITEM_ASSOCIATIONS_INTF ';
7732       l_dyn_sql := l_dyn_sql || '( ';
7733       l_dyn_sql := l_dyn_sql || ' TRANSACTION_ID           ,   ';
7734       l_dyn_sql := l_dyn_sql || ' BATCH_ID                 ,   ';
7735       l_dyn_sql := l_dyn_sql || ' ITEM_NUMBER              ,   ';
7736       l_dyn_sql := l_dyn_sql || ' INVENTORY_ITEM_ID        ,   ';
7737       l_dyn_sql := l_dyn_sql || ' ORGANIZATION_ID          ,   ';
7738       --l_dyn_sql := l_dyn_sql || ' OBJ_NAME                 ,   ';
7739       l_dyn_sql := l_dyn_sql || ' DATA_LEVEL_ID            ,   ';
7740       l_dyn_sql := l_dyn_sql || ' PRIMARY_FLAG             ,   ';
7741       l_dyn_sql := l_dyn_sql || ' STATUS_CODE              ,   ';
7742       l_dyn_sql := l_dyn_sql || ' SUPPLIER_NAME            ,   ';
7743       l_dyn_sql := l_dyn_sql || ' SUPPLIER_NUMBER          ,   ';
7744       l_dyn_sql := l_dyn_sql || ' SUPPLIER_SITE_NAME       ,   ';
7745       l_dyn_sql := l_dyn_sql || ' ORGANIZATION_CODE        ,   ';
7746       l_dyn_sql := l_dyn_sql || ' TRANSACTION_TYPE         ,   ';
7747       l_dyn_sql := l_dyn_sql || ' PROCESS_FLAG             ,   ';
7748       l_dyn_sql := l_dyn_sql || ' CREATED_BY               ,   ';
7749       l_dyn_sql := l_dyn_sql || ' CREATION_DATE            ,   ';
7750       l_dyn_sql := l_dyn_sql || ' LAST_UPDATED_BY          ,   ';
7751       l_dyn_sql := l_dyn_sql || ' LAST_UPDATE_DATE         ,   ';
7752       l_dyn_sql := l_dyn_sql || ' LAST_UPDATE_LOGIN        ,   ';
7753       l_dyn_sql := l_dyn_sql || ' REQUEST_ID               ,   ';
7754       l_dyn_sql := l_dyn_sql || ' PROGRAM_APPLICATION_ID   ,   ';
7755       l_dyn_sql := l_dyn_sql || ' PROGRAM_ID               ,   ';
7756       l_dyn_sql := l_dyn_sql || ' PROGRAM_UPDATE_DATE      ,   ';
7757       l_dyn_sql := l_dyn_sql || ' BUNDLE_ID                ,   ';
7758       l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_ID         ,   ';
7759       l_dyn_sql := l_dyn_sql || ' SOURCE_SYSTEM_REFERENCE  ,   ';
7760       l_dyn_sql := l_dyn_sql || ' ASSOCIATION_ID               ';
7761       l_dyn_sql := l_dyn_sql || ' )                            ';
7762       l_dyn_sql := l_dyn_sql || 'SELECT ';
7763       l_dyn_sql := l_dyn_sql || 'MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL , ';
7764       l_dyn_sql := l_dyn_sql || ' INTERSECTIONS.*  ';
7765       l_dyn_sql := l_dyn_sql || ' FROM (  ';
7766 
7767       l_dyn_sql := l_dyn_sql || 'SELECT ';
7768       l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
7769       l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
7770       l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
7771       l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
7772       --l_dyn_sql := l_dyn_sql || ' ''EGO_ITEM''             , ';
7773       l_dyn_sql := l_dyn_sql || l_data_level_id||'         , ';
7774       IF(l_supplier_site_prim_flag_col IS NOT NULL) THEN
7775 --     bedajna bug 6429874
7776 --     l_dyn_sql := l_dyn_sql || ' DECODE(EBI.'||l_supplier_site_prim_flag_col||', '''||l_yes_meaning||''', ''Y'', '''||l_no_meaning||''',''N'' ) PRIMARY_FLAG , ';
7777        l_dyn_sql := l_dyn_sql || ' DECODE(EBI.'||l_supplier_site_prim_flag_col||', '||':yes_meaning'||', ''Y'', '||':no_meaning'||',''N'' ) PRIMARY_FLAG , ';
7778       ELSE
7779         l_dyn_sql := l_dyn_sql || ' NULL PRIMARY_FLAG ,  ';
7780       END IF;
7781       IF(l_supplier_site_status_col IS NOT NULL) THEN
7782 --     bedajna bug 6429874
7783 --     l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_supplier_site_status_col||' , '''||l_active_meaning||''', ''1'', '''||l_inactive_meaning||''', ''2'', NULL) STATUS_CODE,';
7784        l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_supplier_site_status_col||' , '||':active_meaning1'||', ''1'', '||':inactive_meaning1'||', ''2'', NULL) STATUS_CODE,';
7785       ELSE
7786         l_dyn_sql := l_dyn_sql || ' NULL STATUS_CODE ,  ';
7787       END IF;
7788       IF(l_supplier_name_col IS NOT NULL)THEN
7789         l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_name_col ||' SUPPLIER_NAME, ';
7790       ELSE
7791         l_dyn_sql := l_dyn_sql || ' NULL SUPPLIER_NAME,  ';
7792       END IF;
7793       IF(l_supplier_number_col IS NOT NULL)THEN
7794         l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_number_col ||' SUPPLIER_NUMBER , ';
7795       ELSE
7796         l_dyn_sql := l_dyn_sql || ' NULL SUPPLIER_NUMBER ,  ';
7797       END IF;
7798       l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_site_name_col ||' , ';
7799       l_dyn_sql := l_dyn_sql || 'EBI.'||l_org_code_col ||'       , ';
7800       l_dyn_sql := l_dyn_sql || '''SYNC''                        , ';
7801       l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS||'              , ';
7802       --l_dyn_sql := l_dyn_sql || 'MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL, ';
7803       l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATED_BY              , ';
7804       l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATION_DATE           , ';
7805       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATED_BY         , ';
7806       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_DATE        , ';
7807       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_LOGIN       , ';
7808       l_dyn_sql := l_dyn_sql || 'EBI.'||'REQUEST_ID              , ';
7809       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_APPLICATION_ID  , ';
7810       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_ID              , ';
7811       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_UPDATE_DATE     , ';
7812       l_dyn_sql := l_dyn_sql || ' NULL BUNDLE_ID                 , ';
7813       l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11)  , ';
7814       l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12             , ';
7815       l_dyn_sql := l_dyn_sql || ' NULL ASSOCIATION_ID              ';
7816       l_dyn_sql := l_dyn_sql || 'FROM EGO_BULKLOAD_INTF EBI ';
7817       l_dyn_sql := l_dyn_sql || ' WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
7818       l_dyn_sql := l_dyn_sql || ' AND   EBI.PROCESS_STATUS = 1  ';
7819       IF(l_supplier_name_col IS NOT NULL AND l_supplier_number_col IS NOT NULL)THEN
7820         l_dyn_sql := l_dyn_sql || ' AND  ( EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7821         l_dyn_sql := l_dyn_sql || '       OR EBI.'||l_supplier_number_col||' IS NOT NULL ) ';
7822       ELSIF(l_supplier_name_col IS NOT NULL AND l_supplier_number_col IS NULL) THEN
7823         l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7824       ELSIF(l_supplier_name_col IS NULL AND l_supplier_number_col IS NOT NULL) THEN
7825         l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_number_col||' IS NOT NULL  ';
7826       END IF;
7827       l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_site_name_col||' IS NOT NULL  ';
7828       l_dyn_sql := l_dyn_sql || ' UNION ';
7829       l_dyn_sql := l_dyn_sql || ' SELECT ';
7830       l_dyn_sql := l_dyn_sql ||  To_char(l_msii_set_process_id)||' , ';
7831       l_dyn_sql := l_dyn_sql || ' EBI.'||l_item_number_col ||' , ';
7832       l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK1_VALUE   , ';
7833       l_dyn_sql := l_dyn_sql || ' EBI.INSTANCE_PK2_VALUE   , ';
7834       --l_dyn_sql := l_dyn_sql || ' ''EGO_ITEM''             , ';
7835       l_dyn_sql := l_dyn_sql || l_data_level_id_1||'         , ';
7836       --IF(l_supplier_site_prim_flag_col IS NOT NULL) THEN
7837       --  l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_site_prim_flag_col||' , ';
7838       --ELSE
7839         l_dyn_sql := l_dyn_sql || ' NULL PRIMARY_FLAG ,  ';
7840       --END IF;
7841 
7842       IF(l_sup_site_store_status_col IS NOT NULL) THEN
7843 --     bedajna bug 6429874
7844 --     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,';
7845        l_dyn_sql := l_dyn_sql || 'DECODE(EBI.'||l_sup_site_store_status_col||' , '||':active_meaning2'||', ''1'', '||':inactive_meaning2'||', ''2'', NULL) STATUS_CODE,';
7846       ELSE
7847         l_dyn_sql := l_dyn_sql || ' NULL STATUS_CODE ,  ';
7848       END IF;
7849       IF(l_supplier_name_col IS NOT NULL)THEN
7850         l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_name_col ||' SUPPLIER_NAME , ';
7851       ELSE
7852         l_dyn_sql := l_dyn_sql || ' NULL SUPPLIER_NAME,  ';
7853       END IF;
7854       IF(l_supplier_number_col IS NOT NULL)THEN
7855         l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_number_col ||' SUPPLIER_NUMBER , ';
7856       ELSE
7857         l_dyn_sql := l_dyn_sql || ' NULL SUPPLIER_NUMBER ,  ';
7858       END IF;
7859       l_dyn_sql := l_dyn_sql || 'EBI.'||l_supplier_site_name_col ||' , ';
7860 
7861       l_dyn_sql := l_dyn_sql || 'EBI.'||l_org_code_col ||'       , ';
7862       l_dyn_sql := l_dyn_sql || '''SYNC''                        , ';
7863       l_dyn_sql := l_dyn_sql || G_PROCESS_STATUS||'              , ';
7864       --l_dyn_sql := l_dyn_sql || 'MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL, ';
7865       l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATED_BY              , ';
7866       l_dyn_sql := l_dyn_sql || 'EBI.'||'CREATION_DATE           , ';
7867       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATED_BY         , ';
7868       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_DATE        , ';
7869       l_dyn_sql := l_dyn_sql || 'EBI.'||'LAST_UPDATE_LOGIN       , ';
7870       l_dyn_sql := l_dyn_sql || 'EBI.'||'REQUEST_ID              , ';
7871       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_APPLICATION_ID  , ';
7872       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_ID              , ';
7873       l_dyn_sql := l_dyn_sql || 'EBI.'||'PROGRAM_UPDATE_DATE     , ';
7874       l_dyn_sql := l_dyn_sql || ' NULL  BUNDLE_ID                , ';
7875       l_dyn_sql := l_dyn_sql || ' TO_NUMBER(EBI.C_FIX_COLUMN11)  , ';
7876       l_dyn_sql := l_dyn_sql || ' EBI.C_FIX_COLUMN12             , ';
7877       l_dyn_sql := l_dyn_sql || ' NULL ASSOCIATION_ID              ';
7878       l_dyn_sql := l_dyn_sql || 'FROM EGO_BULKLOAD_INTF EBI ';
7879       l_dyn_sql := l_dyn_sql || ' WHERE  EBI.RESULTFMT_USAGE_ID = :RESULTFMT_USAGE_ID';
7880       l_dyn_sql := l_dyn_sql || ' AND   EBI.PROCESS_STATUS = 1  ';
7881       l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_name_col||' IS NOT NULL  ';
7882       l_dyn_sql := l_dyn_sql || ' AND   ''Y'' =  '''||l_has_sup_sit_org_col||''' ';
7883 
7884       l_dyn_sql := l_dyn_sql || ' AND   EBI.'||l_supplier_site_name_col||' IS NOT NULL  ) INTERSECTIONS ';
7885 
7886       Write_Debug(l_dyn_sql);
7887 
7888 --     bedajna bug 6429874
7889 --     EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
7890     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
7891      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;
7892     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
7893      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;
7894     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
7895      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;
7896     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
7897      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;
7898     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
7899      EXECUTE IMMEDIATE l_dyn_sql USING l_yes_meaning, l_no_meaning, p_resultfmt_usage_id, p_resultfmt_usage_id;
7900     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
7901      EXECUTE IMMEDIATE l_dyn_sql USING l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id, p_resultfmt_usage_id;
7902     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
7903      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, l_active_meaning, l_inactive_meaning, p_resultfmt_usage_id;
7904     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
7905      EXECUTE IMMEDIATE l_dyn_sql USING p_resultfmt_usage_id, p_resultfmt_usage_id;
7906     end if;
7907 
7908       Write_Debug('Item Revs Interface: Populated the Inv Item IDs, Org IDs.');
7909 
7910    END IF;
7911 
7912    x_retcode := G_STATUS_SUCCESS;
7913    x_set_process_id := l_msii_set_process_id;
7914 
7915 END load_intersections_interface;
7916 
7917 
7918 
7919 
7920 
7921 END EGO_ITEM_BULKLOAD_PKG;