DBA Data[Home] [Help]

PACKAGE BODY: APPS.EGO_GTIN_ATTRS_PVT

Source


1 PACKAGE BODY EGO_GTIN_ATTRS_PVT AS
2 /* $Header: EGOVGATB.pls 120.27 2007/08/16 14:21:37 dsakalle ship $ */
3 
4   TYPE l_attr_disp_name_tbl_type IS TABLE OF VARCHAR2(1000) INDEX BY VARCHAR2(1000);
5   l_single_row_attrs_disp_names   l_attr_disp_name_tbl_type;
6   l_multi_row_attrs_disp_names    l_attr_disp_name_tbl_type;
7   l_op_attrs_disp_names           l_attr_disp_name_tbl_type;
8   G_MISS_NUM         NUMBER       :=  EGO_ITEM_PUB.G_INTF_NULL_NUM;
9   G_MISS_CHAR        VARCHAR2(1)  :=  EGO_ITEM_PUB.G_INTF_NULL_CHAR;
10   G_MISS_DATE        DATE         :=  EGO_ITEM_PUB.G_INTF_NULL_DATE;
11   g_row_identifier   NUMBER;
12   EGO_APPL_ID        CONSTANT     NUMBER := 431;
13   G_CALLED_FROM_INTF VARCHAR2(1);
14   G_DATA_SET_ID      NUMBER;
15   G_ENTITY_ID        NUMBER;
16   G_ENTITY_INDEX     NUMBER;
17   G_ENTITY_CODE      VARCHAR2(100);
18 
19 -- CHG#
20   PROCEDURE Debug_Msg(p_message VARCHAR2) IS
21   BEGIN
22     EGO_COMMON_PVT.WRITE_DIAGNOSTIC(p_module => 'EGO_GTIN_ATTRS_PVT',
23                                     p_message => p_message);
24   END Debug_Msg;
25 
26   /*
27    ** This function returns TRUE if check digit is invalid
28    */
29   FUNCTION Is_Check_Digit_Invalid (p_code VARCHAR2) RETURN BOOLEAN IS
30     TYPE num_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
31     l_digits            num_tbl_type;
32     l_check_digit       BINARY_INTEGER;
33     l_sum_of_right      BINARY_INTEGER;
34     l_sum_of_left       BINARY_INTEGER;
35     l_sum_of_all        NUMBER;
36     k                   BINARY_INTEGER;
37     l_reminder          BINARY_INTEGER;
38     l_calc_check_digit  BINARY_INTEGER;
39   BEGIN
40     FOR i IN 1..(LENGTH(p_code)-1) LOOP
41       l_digits(i) := SUBSTR(p_code, i, 1);
42     END LOOP;
43     l_check_digit := SUBSTR(p_code, LENGTH(p_code), 1);
44 
45     k := LENGTH(p_code) - 1;
46     l_sum_of_right := 0;
47     WHILE k > 0 LOOP
48       l_sum_of_right := l_sum_of_right + l_digits(k);
49       k := k - 2;
50     END LOOP;
51 
52     k := LENGTH(p_code) - 2;
53     l_sum_of_left := 0;
54     WHILE k > 0 LOOP
55       l_sum_of_left := l_sum_of_left + l_digits(k);
56       k := k - 2;
57     END LOOP;
58 
59     l_sum_of_all := (l_sum_of_right*3) + l_sum_of_left;
60 
61     l_reminder := MOD(l_sum_of_all, 10);
62     IF l_reminder = 0 THEN
63       l_reminder := 10;
64     END IF;
65 
66     l_calc_check_digit := 10 - l_reminder;
67 
68     IF l_check_digit <> l_calc_check_digit THEN
69       RETURN TRUE;
70     ELSE
71       RETURN FALSE;
72     END IF;
73   END Is_Check_Digit_Invalid;
74 
75   /*
76    ** This function returns the display values for the attributes
77    */
78   FUNCTION Get_Attribute_Display_Name (p_attr_group_type VARCHAR2, p_database_column VARCHAR2) RETURN VARCHAR2 IS
79     CURSOR c_attr_disp_names(l_attr_group_type VARCHAR2) IS
80       SELECT APPLICATION_COLUMN_NAME as DATABASE_COLUMN, FORM_LEFT_PROMPT as DISPLAY_VALUE
81       FROM FND_DESCR_FLEX_COL_USAGE_TL
82       WHERE DESCRIPTIVE_FLEXFIELD_NAME = l_attr_group_type
83         AND APPLICATION_ID = 431
84         AND LANGUAGE = USERENV('LANG');
85   BEGIN
86     IF l_single_row_attrs_disp_names.FIRST IS NULL AND p_attr_group_type = 'EGO_ITEM_GTIN_ATTRS' THEN
87       FOR i IN c_attr_disp_names('EGO_ITEM_GTIN_ATTRS') LOOP
88         l_single_row_attrs_disp_names(i.DATABASE_COLUMN) := i.DISPLAY_VALUE;
89       END LOOP;
90     END IF;
91 
92     IF l_multi_row_attrs_disp_names.FIRST IS NULL AND p_attr_group_type = 'EGO_ITEM_GTIN_MULTI_ATTRS' THEN
93       FOR i IN c_attr_disp_names('EGO_ITEM_GTIN_MULTI_ATTRS') LOOP
94         l_multi_row_attrs_disp_names(i.DATABASE_COLUMN) := i.DISPLAY_VALUE;
95       END LOOP;
96     END IF;
97 
98     IF l_op_attrs_disp_names.FIRST IS NULL AND p_attr_group_type = 'EGO_MASTER_ITEMS' THEN
99       FOR i IN c_attr_disp_names('EGO_MASTER_ITEMS') LOOP
100         l_op_attrs_disp_names(i.DATABASE_COLUMN) := i.DISPLAY_VALUE;
101       END LOOP;
102     END IF;
103 
104     IF p_attr_group_type = 'EGO_ITEM_GTIN_ATTRS' THEN
105       RETURN l_single_row_attrs_disp_names(p_database_column);
106     ELSIF p_attr_group_type = 'EGO_ITEM_GTIN_MULTI_ATTRS' THEN
107       RETURN l_multi_row_attrs_disp_names(p_database_column);
108     ELSIF p_attr_group_type = 'EGO_MASTER_ITEMS' THEN
109       RETURN l_op_attrs_disp_names(p_database_column);
110     ELSE
111       RETURN NULL;
112     END IF;
113   END Get_Attribute_Display_Name;
114 
115   /*
116    ** This procedure populates the interface table rows for UCCnet attributes
117    *  into pl/sql table
118    */
119   PROCEDURE Get_Gdsn_Intf_Rows( p_data_set_id IN  NUMBER
120                                ,p_target_proc_status   IN  NUMBER
121                                ,p_inventory_item_id    IN  NUMBER
122                                ,p_organization_id      IN  NUMBER
123                                ,p_ignore_delete        IN  VARCHAR2 DEFAULT 'N'
124                                ,x_singe_row_attrs_rec  OUT NOCOPY  EGO_ITEM_PUB.UCCNET_ATTRS_SINGL_ROW_REC_TYP
125                                ,x_multi_row_attrs_tbl  OUT NOCOPY  EGO_ITEM_PUB.UCCNET_ATTRS_MULTI_ROW_TBL_TYP
126                                ,x_return_status        OUT NOCOPY VARCHAR2
127                                ,x_msg_count            OUT NOCOPY NUMBER
128                                ,x_msg_data             OUT NOCOPY VARCHAR2
129                               )
130   IS
131     CURSOR c_intf_single_row_attrs(c_inventory_item_id IN NUMBER, c_organization_id IN NUMBER) IS
132       SELECT
133         MAX(DECODE(ATTR_GROUP_INT_NAME, 'Date_Information', DECODE(ATTR_INT_NAME, 'Start_Availability_Date_Time', NVL(ATTR_VALUE_DATE, G_MISS_DATE), null), null)) AS START_AVAILABILITY_DATE_TIME
134        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Date_Information', DECODE(ATTR_INT_NAME, 'Consumer_Avail_Date_Time', NVL(ATTR_VALUE_DATE, G_MISS_DATE), null), null)) AS CONSUMER_AVAIL_DATE_TIME
135        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Date_Information', DECODE(ATTR_INT_NAME, 'End_Availability_Date_Time', NVL(ATTR_VALUE_DATE, G_MISS_DATE), null), null)) AS END_AVAILABILITY_DATE_TIME
136        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Date_Information', DECODE(ATTR_INT_NAME, 'Effective_Date', NVL(ATTR_VALUE_DATE, G_MISS_DATE), null), null)) AS EFFECTIVE_DATE
137        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'FMCG_Identification', DECODE(ATTR_INT_NAME, 'ISBN_Number', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS ISBN_NUMBER
138        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'FMCG_Identification', DECODE(ATTR_INT_NAME, 'ISSN_Number', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS ISSN_NUMBER
139        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'FMCG_MARKING', DECODE(ATTR_INT_NAME, 'IS_INGREDIENT_IRRADIATED', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_INGREDIENT_IRRADIATED
140        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'FMCG_MARKING', DECODE(ATTR_INT_NAME, 'IS_TRADE_ITEM_GENETICALLY_MOD', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_TRADE_ITEM_GENETICALLY_MOD
141        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'FMCG_MARKING', DECODE(ATTR_INT_NAME, 'IS_TRADE_ITEM_IRRADIATED', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_TRADE_ITEM_IRRADIATED
142        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'FMCG_MARKING', DECODE(ATTR_INT_NAME, 'IS_RAW_MATERIAL_IRRADIATED', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_RAW_MATERIAL_IRRADIATED
143        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'FMCG_Measurements', DECODE(ATTR_INT_NAME, 'DEGREE_OF_ORIGINAL_WORT', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DEGREE_OF_ORIGINAL_WORT
144        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'FMCG_Measurements', DECODE(ATTR_INT_NAME, 'FAT_PERCENT_IN_DRY_MATTER', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS FAT_PERCENT_IN_DRY_MATTER
145        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'FMCG_Measurements', DECODE(ATTR_INT_NAME, 'PERCENT_OF_ALCOHOL_BY_VOL', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS PERCENT_OF_ALCOHOL_BY_VOL
146        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Gtin_Unit_Indicator', DECODE(ATTR_INT_NAME, 'Is_Trade_Item_A_Consumer_Unit', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_TRADE_ITEM_A_CONSUMER_UNIT
147        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Gtin_Unit_Indicator', DECODE(ATTR_INT_NAME, 'Is_Trade_Item_A_Base_Unit', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_TRADE_ITEM_A_BASE_UNIT
148        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Gtin_Unit_Indicator', DECODE(ATTR_INT_NAME, 'Is_Trade_Item_Info_Private', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_TRADE_ITEM_INFO_PRIVATE
149        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Gtin_Unit_Indicator', DECODE(ATTR_INT_NAME, 'Is_Trade_Item_A_Variable_Unit', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_TRADE_ITEM_A_VARIABLE_UNIT
150        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Handling_Information', DECODE(ATTR_INT_NAME, 'Stacking_Weight_Maximum', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS STACKING_WEIGHT_MAXIMUM
151        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Handling_Information', DECODE(ATTR_INT_NAME, 'Stacking_Factor', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS STACKING_FACTOR
152        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Material_Safety_Data', DECODE(ATTR_INT_NAME, 'Material_Safety_Data_Sheet_No', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS MATERIAL_SAFETY_DATA_SHEET_NO
153        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Order_Information', DECODE(ATTR_INT_NAME, 'Ordering_Lead_Time', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS ORDERING_LEAD_TIME
154        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Order_Information', DECODE(ATTR_INT_NAME, 'Order_Quantity_Min', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS ORDER_QUANTITY_MIN
155        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Order_Information', DECODE(ATTR_INT_NAME, 'Order_Sizing_Factor', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS ORDER_SIZING_FACTOR
156        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Order_Information', DECODE(ATTR_INT_NAME, 'Order_Quantity_Max', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS ORDER_QUANTITY_MAX
157        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Order_Information', DECODE(ATTR_INT_NAME, 'Order_Quantity_Multiple', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS ORDER_QUANTITY_MULTIPLE
158        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Packaging_Marking', DECODE(ATTR_INT_NAME, 'Is_Pack_Marked_With_Exp_Date', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_PACK_MARKED_WITH_EXP_DATE
159        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Packaging_Marking', DECODE(ATTR_INT_NAME, 'Is_Package_Marked_As_Rec', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_PACKAGE_MARKED_AS_REC
160        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Packaging_Marking', DECODE(ATTR_INT_NAME, 'Is_Package_Marked_Ret', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_PACKAGE_MARKED_RET
161        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Packaging_Marking', DECODE(ATTR_INT_NAME, 'Is_Pack_Marked_With_Ingred', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_PACK_MARKED_WITH_INGRED
162        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Packaging_Marking', DECODE(ATTR_INT_NAME, 'Is_Pack_Marked_With_Green_Dot', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_PACK_MARKED_WITH_GREEN_DOT
163        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Price_Date_Information', DECODE(ATTR_INT_NAME, 'Effective_End_Date', NVL(ATTR_VALUE_DATE, G_MISS_DATE), null), null)) AS EFFECTIVE_END_DATE
164        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Price_Date_Information', DECODE(ATTR_INT_NAME, 'Suggested_Retail_Price', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS SUGGESTED_RETAIL_PRICE
165        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Price_Date_Information', DECODE(ATTR_INT_NAME, 'Catalog_Price', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS CATALOG_PRICE
166        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Price_Date_Information', DECODE(ATTR_INT_NAME, 'Effective_Start_Date', NVL(ATTR_VALUE_DATE, G_MISS_DATE), null), null)) AS EFFECTIVE_START_DATE
167        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Price_Information', DECODE(ATTR_INT_NAME, 'Retail_Price_On_Trade_Item', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS RETAIL_PRICE_ON_TRADE_ITEM
168        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Del_To_Dist_Cntr_Temp_Min', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS DEL_TO_DIST_CNTR_TEMP_MIN
169        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Uccnet_Storage_Temp_Min', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS STORAGE_HANDLING_TEMP_MIN
170        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Uom_Storage_Handling_Temp_Max', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS UOM_STORAGE_HANDLING_TEMP_MAX
171        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Uccnet_Storage_Temp_Max', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS STORAGE_HANDLING_TEMP_MAX
172        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Uom_Storage_Handling_Temp_Min', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS UOM_STORAGE_HANDLING_TEMP_MIN
173        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Uom_Delivery_To_Mrkt_Temp_Max', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS UOM_DELIVERY_TO_MRKT_TEMP_MAX
174        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Del_To_Dist_Cntr_Temp_Max', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS DEL_TO_DIST_CNTR_TEMP_MAX
175        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Delivery_To_Mrkt_Temp_Min', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS DELIVERY_TO_MRKT_TEMP_MIN
176        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Uom_Delivery_To_Mrkt_Temp_Min', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS UOM_DELIVERY_TO_MRKT_TEMP_MIN
177        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Delivery_To_Mrkt_Temp_Max', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS DELIVERY_TO_MRKT_TEMP_MAX
178        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Uom_Del_To_Dist_Cntr_Temp_Max', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS UOM_DEL_TO_DIST_CNTR_TEMP_MAX
179        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Temperature_Information', DECODE(ATTR_INT_NAME, 'Uom_Del_To_Dist_Cntr_Temp_Min', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS UOM_DEL_TO_DIST_CNTR_TEMP_MIN
180        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Brand_Name', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS BRAND_NAME
181        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Invoice_Name', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS INVOICE_NAME
182        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Sub_Brand', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS SUB_BRAND
183        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Eanucc_Code', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS EANUCC_CODE
184        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'EANUCC_Type', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS EANUCC_TYPE
185        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'DESCRIPTION_SHORT', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DESCRIPTION_SHORT
186        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Trade_Item_Coupon', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS TRADE_ITEM_COUPON
187        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Trade_Item_Form_Description', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS TRADE_ITEM_FORM_DESCRIPTION
188        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Functional_Name', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS FUNCTIONAL_NAME
189        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Is_Barcode_Symbology_Derivable', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_BARCODE_SYMBOLOGY_DERIVABLE
190        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Retail_Brand_Owner_Gln', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS BRAND_OWNER_GLN
191        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Retail_Brand_Owner_Name', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS BRAND_OWNER_NAME
192        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Hierarchy', DECODE(ATTR_INT_NAME, 'Quantity_Of_Comp_Lay_Item', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS QUANTITY_OF_COMP_LAY_ITEM
193        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Hierarchy', DECODE(ATTR_INT_NAME, 'Quantity_Of_Inner_Pack', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS QUANTITY_OF_INNER_PACK
194        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Hierarchy', DECODE(ATTR_INT_NAME, 'Quantity_Of_Item_Inner_Pack', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS QUANTITY_OF_ITEM_INNER_PACK
195        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Hierarchy', DECODE(ATTR_INT_NAME, 'Quanity_Of_Item_In_Layer', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS QUANITY_OF_ITEM_IN_LAYER
196        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Marking', DECODE(ATTR_INT_NAME, 'Has_Batch_Number', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS HAS_BATCH_NUMBER
197        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Marking', DECODE(ATTR_INT_NAME, 'Is_Trade_Item_Marked_Rec_Flag', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_TRADE_ITEM_MAR_REC_FLAG
198        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Marking', DECODE(ATTR_INT_NAME, 'Is_Non_Sold_Trade_Ret_Flag', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_NON_SOLD_TRADE_RET_FLAG
199        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Net_Content', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS NET_CONTENT
200        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Gross_Weight', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS GROSS_WEIGHT
201        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Uom_Net_Content', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS UOM_NET_CONTENT
202        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Diameter', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS DIAMETER
203        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Ingredient_Strength', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS INGREDIENT_STRENGTH
204        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Generic_Ingredient_Strgth', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS GENERIC_INGREDIENT_STRGTH
205        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Generic_Ingredient', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS GENERIC_INGREDIENT
206        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Peg_Vertical', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS PEG_VERTICAL
207        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Peg_Horizontal', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS PEG_HORIZONTAL
208        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Drained_Weight', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS DRAINED_WEIGHT
209        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Measurements', DECODE(ATTR_INT_NAME, 'Is_Net_Content_Dec_Flag', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_NET_CONTENT_DEC_FLAG
210        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'DEPT_OF_TRNSPRT_DANG_GOODS_NUM', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DEPT_OF_TRNSPRT_DANG_GOODS_NUM
211        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'MODEL_NUMBER', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS MODEL_NUMBER
212        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'IS_TRADE_ITEM_RECALLED', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_TRADE_ITEM_RECALLED
213        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'TRADE_ITEM_FINISH_DESCRIPTION', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS TRADE_ITEM_FINISH_DESCRIPTION
214        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'WARRANTY_DESCRIPTION', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS WARRANTY_DESCRIPTION
215        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'SECURITY_TAG_LOCATION', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS SECURITY_TAG_LOCATION
216        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'PIECES_PER_TRADE_ITEM', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS PIECES_PER_TRADE_ITEM
217        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'NESTING_INCREMENT', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS NESTING_INCREMENT
218        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'URL_FOR_WARRANTY', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS URL_FOR_WARRANTY
219        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'IS_OUT_OF_BOX_PROVIDED', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS IS_OUT_OF_BOX_PROVIDED
220        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Hardlines', DECODE(ATTR_INT_NAME, 'RETURN_GOODS_POLICY', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS RETURN_GOODS_POLICY
221        ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Uccnet_Size_Description', DECODE(ATTR_INT_NAME, 'Size_Description', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DESCRIPTIVE_SIZE
222       FROM EGO_ITM_USR_ATTR_INTRFC
223       WHERE ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_ATTRS'
224         AND DATA_SET_ID = p_data_set_id
225         AND PROCESS_STATUS = p_target_proc_status
226         AND INVENTORY_ITEM_ID = c_inventory_item_id
227         AND ORGANIZATION_ID = c_organization_id;
228 
229     CURSOR c_intf_multi_row_attrs(c_inventory_item_id IN NUMBER, c_organization_id IN NUMBER) IS
230       SELECT
231          ROW_IDENTIFIER
232         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Bar_Code', DECODE(ATTR_INT_NAME, 'Bar_Code_Type', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS BAR_CODE_TYPE
233         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Country_Of_Origin', DECODE(ATTR_INT_NAME, 'Country_OF_Origin', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS COUNTRY_OF_ORIGIN
234         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Delivery_Method_Indicator', DECODE(ATTR_INT_NAME, 'Delivery_Method_Indicator', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DELIVERY_METHOD_INDICATOR
235         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Gtin_Color_Description', DECODE(ATTR_INT_NAME, 'Color_Code_Value', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS COLOR_CODE_VALUE
236         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Gtin_Color_Description', DECODE(ATTR_INT_NAME, 'Color_Code_List_Agency', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS COLOR_CODE_LIST_AGENCY
237         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Handling_Information', DECODE(ATTR_INT_NAME, 'Handling_Instructions_Code', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS HANDLING_INSTRUCTIONS_CODE
238         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'Class_Of_Dangerous_Code', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS CLASS_OF_DANGEROUS_CODE
239         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'Dangerous_Goods_Margin_Number', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DANGEROUS_GOODS_MARGIN_NUMBER
240         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'Dangerous_Goods_Hazardous_Code', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DANGEROUS_GOODS_HAZARDOUS_CODE
241         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'Dangerous_Goods_Reg_Code', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DANGEROUS_GOODS_REG_CODE
242         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'United_Nations_Dang_Goods_No', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS UNITED_NATIONS_DANG_GOODS_NO
243         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'Uom_Flash_Point_Temp', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS UOM_FLASH_POINT_TEMP
244         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'Flash_Point_Temp', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS FLASH_POINT_TEMP
245         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'Dangerous_Goods_Technical_Name', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DANGEROUS_GOODS_TECHNICAL_NAME
246         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'Dangerous_Goods_Shipping_Name', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DANGEROUS_GOODS_SHIPPING_NAME
247         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Hazardous_Information', DECODE(ATTR_INT_NAME, 'Dangerous_Goods_Pack_Group', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS DANGEROUS_GOODS_PACK_GROUP
248         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Manufacturing_Info', DECODE(ATTR_INT_NAME, 'Manufacturer_Gln', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS MANUFACTURER_GLN
249         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Manufacturing_Info', DECODE(ATTR_INT_NAME, 'Name_Of_Manufacturer', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS MANUFACTURER_ID
250         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Size_Description', DECODE(ATTR_INT_NAME, 'SIZE_CODE_LIST_AGENCY', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS SIZE_CODE_LIST_AGENCY
251         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'Size_Description', DECODE(ATTR_INT_NAME, 'SIZE_CODE_VALUE', NVL(ATTR_VALUE_STR, G_MISS_CHAR), null), null)) AS SIZE_CODE_VALUE
252         ,MAX(DECODE(ATTR_GROUP_INT_NAME, 'TRADE_ITEM_HARMN_SYS_IDENT', DECODE(ATTR_INT_NAME, 'HARMONIZED_TARIFF_SYS_ID_CODE', NVL(ATTR_VALUE_NUM, G_MISS_NUM), null), null)) AS HARMONIZED_TARIFF_SYS_ID_CODE
253       FROM EGO_ITM_USR_ATTR_INTRFC
254       WHERE ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_MULTI_ATTRS'
255         AND DATA_SET_ID = p_data_set_id
256         AND PROCESS_STATUS = p_target_proc_status
257         AND INVENTORY_ITEM_ID = c_inventory_item_id
258         AND ORGANIZATION_ID = c_organization_id
259         AND ((UPPER(TRANSACTION_TYPE) <> 'DELETE' AND p_ignore_delete = 'Y') OR (NVL(p_ignore_delete, 'N') = 'N'))
260       GROUP BY ROW_IDENTIFIER;
261 
262     CURSOR c_uom_code IS
263       SELECT a.APPLICATION_COLUMN_NAME, u.UOM_CODE
264       FROM EGO_FND_DF_COL_USGS_EXT a, MTL_UNITS_OF_MEASURE_TL u
265       WHERE a.UOM_CLASS = u.UOM_CLASS(+)
266         AND u.BASE_UOM_FLAG(+) = 'Y'
267         AND u.LANGUAGE(+) = USERENV('LANG')
268         AND a.APPLICATION_ID = 431
269         AND a.DESCRIPTIVE_FLEXFIELD_NAME IN ('EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS')
270         AND a.APPLICATION_COLUMN_NAME IN (
271                        'GROSS_WEIGHT'
272                       ,'PEG_VERTICAL'
273                       ,'PEG_HORIZONTAL'
274                       ,'DRAINED_WEIGHT'
275                       ,'DIAMETER'
276                       ,'ORDERING_LEAD_TIME'
277                       ,'GENERIC_INGREDIENT_STRGTH'
278                       ,'STACKING_WEIGHT_MAXIMUM'
279                       ,'PIECES_PER_TRADE_ITEM'
280                       ,'NESTING_INCREMENT'
281                       );
282 
283     TYPE l_uom_codes_type IS TABLE OF VARCHAR2(1000) INDEX BY VARCHAR2(1000);
284     l_uom_tbl            l_uom_codes_type;
285     l_single_row_attrs   EGO_ITEM_PUB.UCCnet_Attrs_Singl_Row_Rec_Typ;
286     l_multi_row_attrs    EGO_ITEM_PUB.UCCnet_Attrs_Multi_Row_Tbl_Typ;
287     k                    BINARY_INTEGER;
288     l_conversion_error   EXCEPTION;
289     PRAGMA EXCEPTION_INIT(l_conversion_error, -6502);
290     l_attr_name          VARCHAR2(1000);
291 
292     -- these are all NUMBER columns in EGO_ITEM_GTN_ATTRS_VL. The record EGO_ITEM_PUB.UCCnet_Attrs_Singl_Row_Rec_Typ
293     -- contains the type of these columns as NUMBER
294     -- so these variables are used to find out any precesion problem in these attributes
295     l_gross_weight                     EGO_ITEM_GTN_ATTRS_VL.GROSS_WEIGHT%TYPE;
296     l_stacking_factor                  EGO_ITEM_GTN_ATTRS_VL.STACKING_FACTOR%TYPE;
297     l_stacking_weight_maximum          EGO_ITEM_GTN_ATTRS_VL.STACKING_WEIGHT_MAXIMUM%TYPE;
298     l_ordering_lead_time               EGO_ITEM_GTN_ATTRS_VL.ORDERING_LEAD_TIME%TYPE;
299     l_order_quantity_max               EGO_ITEM_GTN_ATTRS_VL.ORDER_QUANTITY_MAX%TYPE;
300     l_order_quantity_min               EGO_ITEM_GTN_ATTRS_VL.ORDER_QUANTITY_MIN%TYPE;
301     l_order_quantity_multiple          EGO_ITEM_GTN_ATTRS_VL.ORDER_QUANTITY_MULTIPLE%TYPE;
302     l_order_sizing_factor              EGO_ITEM_GTN_ATTRS_VL.ORDER_SIZING_FACTOR%TYPE;
303     l_catalog_price                    EGO_ITEM_GTN_ATTRS_VL.CATALOG_PRICE%TYPE;
304     l_suggested_retail_price           EGO_ITEM_GTN_ATTRS_VL.SUGGESTED_RETAIL_PRICE%TYPE;
305     l_diameter                         EGO_ITEM_GTN_ATTRS_VL.DIAMETER%TYPE;
306     l_drained_weight                   EGO_ITEM_GTN_ATTRS_VL.DRAINED_WEIGHT%TYPE;
307     l_generic_ingredient_strgth        EGO_ITEM_GTN_ATTRS_VL.GENERIC_INGREDIENT_STRGTH%TYPE;
308     l_net_content                      EGO_ITEM_GTN_ATTRS_VL.NET_CONTENT%TYPE;
309     l_peg_horizontal                   EGO_ITEM_GTN_ATTRS_VL.PEG_HORIZONTAL%TYPE;
310     l_peg_vertical                     EGO_ITEM_GTN_ATTRS_VL.PEG_VERTICAL%TYPE;
311     l_del_to_dist_cntr_temp_max        EGO_ITEM_GTN_ATTRS_VL.DEL_TO_DIST_CNTR_TEMP_MAX%TYPE;
312     l_del_to_dist_cntr_temp_min        EGO_ITEM_GTN_ATTRS_VL.DEL_TO_DIST_CNTR_TEMP_MIN%TYPE;
313     l_delivery_to_mrkt_temp_max        EGO_ITEM_GTN_ATTRS_VL.DELIVERY_TO_MRKT_TEMP_MAX%TYPE;
314     l_delivery_to_mrkt_temp_min        EGO_ITEM_GTN_ATTRS_VL.DELIVERY_TO_MRKT_TEMP_MIN%TYPE;
315     l_retail_price_on_trade_item       EGO_ITEM_GTN_ATTRS_VL.RETAIL_PRICE_ON_TRADE_ITEM%TYPE;
316     l_quantity_of_comp_lay_item        EGO_ITEM_GTN_ATTRS_VL.QUANTITY_OF_COMP_LAY_ITEM%TYPE;
317     l_quanity_of_item_in_layer         EGO_ITEM_GTN_ATTRS_VL.QUANITY_OF_ITEM_IN_LAYER%TYPE;
318     l_quantity_of_item_inner_pack      EGO_ITEM_GTN_ATTRS_VL.QUANTITY_OF_ITEM_INNER_PACK%TYPE;
319     l_quantity_of_inner_pack           EGO_ITEM_GTN_ATTRS_VL.QUANTITY_OF_INNER_PACK%TYPE;
320     l_storage_handling_temp_max        EGO_ITEM_GTN_ATTRS_VL.STORAGE_HANDLING_TEMP_MAX%TYPE;
321     l_storage_handling_temp_min        EGO_ITEM_GTN_ATTRS_VL.STORAGE_HANDLING_TEMP_MIN%TYPE;
322     l_trade_item_coupon                EGO_ITEM_GTN_ATTRS_VL.TRADE_ITEM_COUPON%TYPE;
323     l_fat_percent_in_dry_matter        EGO_ITEM_GTN_ATTRS_VL.FAT_PERCENT_IN_DRY_MATTER%TYPE;
324     l_percent_of_alcohol_by_vol        EGO_ITEM_GTN_ATTRS_VL.PERCENT_OF_ALCOHOL_BY_VOL%TYPE;
325     l_nesting_increment                EGO_ITEM_GTN_ATTRS_VL.NESTING_INCREMENT%TYPE;
326     l_pieces_per_trade_item            EGO_ITEM_GTN_ATTRS_VL.PIECES_PER_TRADE_ITEM%TYPE;
327 
328 
329     -- these are all NUMBER columns in EGO_ITM_GTN_MUL_ATTRS_VL. The record EGO_ITEM_PUB.UCCnet_Attrs_Multi_Row_Tbl_Typ
330     -- contains the type of these columns as NUMBER
331     -- so these variables are used to find out any precesion problem in these attributes
332     l_manufacturer_id                  EGO_ITM_GTN_MUL_ATTRS_VL.MANUFACTURER_ID%TYPE;
333     l_united_nations_dang_goods_no     EGO_ITM_GTN_MUL_ATTRS_VL.UNITED_NATIONS_DANG_GOODS_NO%TYPE;
334     l_flash_point_temp                 EGO_ITM_GTN_MUL_ATTRS_VL.FLASH_POINT_TEMP%TYPE;
335     l_harmonized_tariff_sys_id_cd      EGO_ITM_GTN_MUL_ATTRS_VL.HARMONIZED_TARIFF_SYS_ID_CODE%TYPE;
336   BEGIN
337     Debug_Msg('Started Get_Gdsn_Intf_Rows');
338     Debug_Msg('Initializing the fnd error stack');
339     -- initializing the fnd error stack
340     FND_MSG_PUB.Initialize;
341 
342     FOR i IN c_uom_code LOOP
343       l_uom_tbl(i.APPLICATION_COLUMN_NAME) := i.UOM_CODE;
344     END LOOP;
345     Debug_Msg('Populated Unit of Measures');
346 
347     FOR j IN c_intf_single_row_attrs(p_inventory_item_id, p_organization_id) LOOP
348       l_single_row_attrs.LANGUAGE_CODE := USERENV('LANG');
349       BEGIN
350         l_single_row_attrs.IS_TRADE_ITEM_INFO_PRIVATE := j.IS_TRADE_ITEM_INFO_PRIVATE;
351       EXCEPTION WHEN l_conversion_error THEN
352         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_A_CONSUMER_UNIT');
353         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
354         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
355         FND_MSG_PUB.ADD;
356       END;
357 
358       BEGIN
359         l_single_row_attrs.GROSS_WEIGHT := j.GROSS_WEIGHT;
360         IF j.GROSS_WEIGHT <> G_MISS_NUM THEN
361           l_gross_weight := j.GROSS_WEIGHT;
362         END IF;
363       EXCEPTION WHEN l_conversion_error THEN
364         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'GROSS_WEIGHT');
365         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
366         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
367         FND_MESSAGE.Set_Token('ATTR_VALUE', j.GROSS_WEIGHT);
368         FND_MSG_PUB.ADD;
369       END;
370 
371       l_single_row_attrs.UOM_GROSS_WEIGHT := l_uom_tbl('GROSS_WEIGHT');
372 
373       BEGIN
374         l_single_row_attrs.EFFECTIVE_DATE := j.EFFECTIVE_DATE;
375       EXCEPTION WHEN l_conversion_error THEN
376         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EFFECTIVE_DATE');
377         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
378         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
379         FND_MESSAGE.Set_Token('ATTR_VALUE', j.EFFECTIVE_DATE);
380         FND_MSG_PUB.ADD;
381       END;
382 
383       BEGIN
384         l_single_row_attrs.END_AVAILABILITY_DATE_TIME := j.END_AVAILABILITY_DATE_TIME;
385       EXCEPTION WHEN l_conversion_error THEN
386         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'END_AVAILABILITY_DATE_TIME');
387         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
388         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
389         FND_MESSAGE.Set_Token('ATTR_VALUE', j.END_AVAILABILITY_DATE_TIME);
390         FND_MSG_PUB.ADD;
391       END;
392 
393       BEGIN
394         l_single_row_attrs.START_AVAILABILITY_DATE_TIME := j.START_AVAILABILITY_DATE_TIME;
395       EXCEPTION WHEN l_conversion_error THEN
396         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'START_AVAILABILITY_DATE_TIME');
397         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
398         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
399         FND_MESSAGE.Set_Token('ATTR_VALUE', j.START_AVAILABILITY_DATE_TIME);
400         FND_MSG_PUB.ADD;
401       END;
402 
403       BEGIN
404         l_single_row_attrs.BRAND_NAME := j.BRAND_NAME;
405       EXCEPTION WHEN l_conversion_error THEN
406         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_NAME');
407         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
408         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
409         FND_MESSAGE.Set_Token('ATTR_VALUE', j.BRAND_NAME);
410         FND_MSG_PUB.ADD;
411       END;
412 
413       BEGIN
414         l_single_row_attrs.IS_TRADE_ITEM_A_BASE_UNIT := j.IS_TRADE_ITEM_A_BASE_UNIT;
415       EXCEPTION WHEN l_conversion_error THEN
416         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_A_BASE_UNIT');
417         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
418         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
419         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_TRADE_ITEM_A_BASE_UNIT);
420         FND_MSG_PUB.ADD;
421       END;
422 
423       BEGIN
424         l_single_row_attrs.IS_TRADE_ITEM_A_VARIABLE_UNIT := j.IS_TRADE_ITEM_A_VARIABLE_UNIT;
425       EXCEPTION WHEN l_conversion_error THEN
426         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_A_VARIABLE_UNIT');
427         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
428         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
429         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_TRADE_ITEM_A_VARIABLE_UNIT);
430         FND_MSG_PUB.ADD;
431       END;
432 
433       BEGIN
434         l_single_row_attrs.IS_PACK_MARKED_WITH_EXP_DATE := j.IS_PACK_MARKED_WITH_EXP_DATE;
435       EXCEPTION WHEN l_conversion_error THEN
436         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_PACK_MARKED_WITH_EXP_DATE');
437         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
438         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
439         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_PACK_MARKED_WITH_EXP_DATE);
440         FND_MSG_PUB.ADD;
441       END;
442 
443       BEGIN
444         l_single_row_attrs.IS_PACK_MARKED_WITH_GREEN_DOT := j.IS_PACK_MARKED_WITH_GREEN_DOT;
445       EXCEPTION WHEN l_conversion_error THEN
446         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_PACK_MARKED_WITH_GREEN_DOT');
447         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
448         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
449         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_PACK_MARKED_WITH_GREEN_DOT);
450         FND_MSG_PUB.ADD;
451       END;
452 
453       BEGIN
454         l_single_row_attrs.IS_PACK_MARKED_WITH_INGRED := j.IS_PACK_MARKED_WITH_INGRED;
455       EXCEPTION WHEN l_conversion_error THEN
456         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_PACK_MARKED_WITH_INGRED');
457         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
458         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
459         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_PACK_MARKED_WITH_INGRED);
460         FND_MSG_PUB.ADD;
461       END;
462 
463       BEGIN
464         l_single_row_attrs.IS_PACKAGE_MARKED_AS_REC := j.IS_PACKAGE_MARKED_AS_REC;
465       EXCEPTION WHEN l_conversion_error THEN
466         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_PACKAGE_MARKED_AS_REC');
467         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
468         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
469         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_PACKAGE_MARKED_AS_REC);
470         FND_MSG_PUB.ADD;
471       END;
472 
473       BEGIN
474         l_single_row_attrs.IS_PACKAGE_MARKED_RET := j.IS_PACKAGE_MARKED_RET;
475       EXCEPTION WHEN l_conversion_error THEN
476         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_PACKAGE_MARKED_RET');
477         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
478         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
479         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_PACKAGE_MARKED_RET);
480         FND_MSG_PUB.ADD;
481       END;
482 
483       BEGIN
484         l_single_row_attrs.STACKING_FACTOR := j.STACKING_FACTOR;
485         IF j.STACKING_FACTOR <> G_MISS_NUM THEN
486           l_stacking_factor := j.STACKING_FACTOR;
487         END IF;
488       EXCEPTION WHEN l_conversion_error THEN
489         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STACKING_FACTOR');
490         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
491         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
492         FND_MESSAGE.Set_Token('ATTR_VALUE', j.STACKING_FACTOR);
493         FND_MSG_PUB.ADD;
494       END;
495 
496       BEGIN
497         l_single_row_attrs.STACKING_WEIGHT_MAXIMUM := j.STACKING_WEIGHT_MAXIMUM;
498         IF j.STACKING_WEIGHT_MAXIMUM <> G_MISS_NUM THEN
499           l_stacking_weight_maximum := j.STACKING_WEIGHT_MAXIMUM;
500         END IF;
501       EXCEPTION WHEN l_conversion_error THEN
502         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STACKING_WEIGHT_MAXIMUM');
503         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
504         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
505         FND_MESSAGE.Set_Token('ATTR_VALUE', j.STACKING_WEIGHT_MAXIMUM);
506         FND_MSG_PUB.ADD;
507       END;
508 
509       l_single_row_attrs.UOM_STACKING_WEIGHT_MAXIMUM := l_uom_tbl('STACKING_WEIGHT_MAXIMUM');
510 
511       BEGIN
512         l_single_row_attrs.ORDERING_LEAD_TIME := j.ORDERING_LEAD_TIME;
513         IF j.ORDERING_LEAD_TIME <> G_MISS_NUM THEN
514           l_ordering_lead_time := j.ORDERING_LEAD_TIME;
515         END IF;
516       EXCEPTION WHEN l_conversion_error THEN
517         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ORDERING_LEAD_TIME');
518         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
519         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
520         FND_MESSAGE.Set_Token('ATTR_VALUE', j.ORDERING_LEAD_TIME);
521         FND_MSG_PUB.ADD;
522       END;
523 
524       l_single_row_attrs.UOM_ORDERING_LEAD_TIME := l_uom_tbl('ORDERING_LEAD_TIME');
525 
526       BEGIN
527         l_single_row_attrs.ORDER_QUANTITY_MAX := j.ORDER_QUANTITY_MAX;
528         IF j.ORDER_QUANTITY_MAX <> G_MISS_NUM THEN
529           l_order_quantity_max := j.ORDER_QUANTITY_MAX;
530         END IF;
531       EXCEPTION WHEN l_conversion_error THEN
532         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ORDER_QUANTITY_MAX');
533         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
534         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
535         FND_MESSAGE.Set_Token('ATTR_VALUE', j.ORDER_QUANTITY_MAX);
536         FND_MSG_PUB.ADD;
537       END;
538 
539       BEGIN
540         l_single_row_attrs.ORDER_QUANTITY_MIN := j.ORDER_QUANTITY_MIN;
541         IF j.ORDER_QUANTITY_MIN <> G_MISS_NUM THEN
542           l_order_quantity_min := j.ORDER_QUANTITY_MIN;
543         END IF;
544       EXCEPTION WHEN l_conversion_error THEN
545         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ORDER_QUANTITY_MIN');
546         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
547         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
548         FND_MESSAGE.Set_Token('ATTR_VALUE', j.ORDER_QUANTITY_MIN);
549         FND_MSG_PUB.ADD;
550       END;
551 
552       BEGIN
553         l_single_row_attrs.ORDER_QUANTITY_MULTIPLE := j.ORDER_QUANTITY_MULTIPLE;
554         IF j.ORDER_QUANTITY_MULTIPLE <> G_MISS_NUM THEN
555           l_order_quantity_multiple := j.ORDER_QUANTITY_MULTIPLE;
556         END IF;
557       EXCEPTION WHEN l_conversion_error THEN
558         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ORDER_QUANTITY_MULTIPLE');
559         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
560         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
561         FND_MESSAGE.Set_Token('ATTR_VALUE', j.ORDER_QUANTITY_MULTIPLE);
562         FND_MSG_PUB.ADD;
563       END;
564 
565       BEGIN
566         l_single_row_attrs.ORDER_SIZING_FACTOR := j.ORDER_SIZING_FACTOR;
567         IF j.ORDER_SIZING_FACTOR <> G_MISS_NUM THEN
568           l_order_sizing_factor := j.ORDER_SIZING_FACTOR;
569         END IF;
570       EXCEPTION WHEN l_conversion_error THEN
571         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ORDER_SIZING_FACTOR');
572         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
573         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
574         FND_MESSAGE.Set_Token('ATTR_VALUE', j.ORDER_SIZING_FACTOR);
575         FND_MSG_PUB.ADD;
576       END;
577 
578       BEGIN
579         l_single_row_attrs.EFFECTIVE_START_DATE := j.EFFECTIVE_START_DATE;
580       EXCEPTION WHEN l_conversion_error THEN
581         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EFFECTIVE_START_DATE');
582         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
583         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
584         FND_MESSAGE.Set_Token('ATTR_VALUE', j.EFFECTIVE_START_DATE);
585         FND_MSG_PUB.ADD;
586       END;
587 
588       BEGIN
589         l_single_row_attrs.CATALOG_PRICE := j.CATALOG_PRICE;
590         IF j.CATALOG_PRICE <> G_MISS_NUM THEN
591           l_catalog_price := j.CATALOG_PRICE;
592         END IF;
593       EXCEPTION WHEN l_conversion_error THEN
594         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'CATALOG_PRICE');
595         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
596         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
597         FND_MESSAGE.Set_Token('ATTR_VALUE', j.CATALOG_PRICE);
598         FND_MSG_PUB.ADD;
599       END;
600 
601       BEGIN
602         l_single_row_attrs.EFFECTIVE_END_DATE := j.EFFECTIVE_END_DATE;
603       EXCEPTION WHEN l_conversion_error THEN
604         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EFFECTIVE_END_DATE');
605         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
606         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
607         FND_MESSAGE.Set_Token('ATTR_VALUE', j.EFFECTIVE_END_DATE);
608         FND_MSG_PUB.ADD;
609       END;
610 
611       BEGIN
612         l_single_row_attrs.SUGGESTED_RETAIL_PRICE := j.SUGGESTED_RETAIL_PRICE;
613         IF j.SUGGESTED_RETAIL_PRICE <> G_MISS_NUM THEN
614           l_suggested_retail_price := j.SUGGESTED_RETAIL_PRICE;
615         END IF;
616       EXCEPTION WHEN l_conversion_error THEN
617         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'SUGGESTED_RETAIL_PRICE');
618         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
619         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
620         FND_MESSAGE.Set_Token('ATTR_VALUE', j.SUGGESTED_RETAIL_PRICE);
621         FND_MSG_PUB.ADD;
622       END;
623 
624       BEGIN
625         l_single_row_attrs.MATERIAL_SAFETY_DATA_SHEET_NO := j.MATERIAL_SAFETY_DATA_SHEET_NO;
626       EXCEPTION WHEN l_conversion_error THEN
627         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'MATERIAL_SAFETY_DATA_SHEET_NO');
628         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
629         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
630         FND_MESSAGE.Set_Token('ATTR_VALUE', j.MATERIAL_SAFETY_DATA_SHEET_NO);
631         FND_MSG_PUB.ADD;
632       END;
633 
634       BEGIN
635         l_single_row_attrs.HAS_BATCH_NUMBER := j.HAS_BATCH_NUMBER;
636       EXCEPTION WHEN l_conversion_error THEN
637         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'HAS_BATCH_NUMBER');
638         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
639         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
640         FND_MESSAGE.Set_Token('ATTR_VALUE', j.HAS_BATCH_NUMBER);
641         FND_MSG_PUB.ADD;
642       END;
643 
644       BEGIN
645         l_single_row_attrs.IS_NON_SOLD_TRADE_RET_FLAG := j.IS_NON_SOLD_TRADE_RET_FLAG;
646       EXCEPTION WHEN l_conversion_error THEN
647         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_NON_SOLD_TRADE_RET_FLAG');
648         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
649         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
650         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_NON_SOLD_TRADE_RET_FLAG);
651         FND_MSG_PUB.ADD;
652       END;
653 
654       BEGIN
655         l_single_row_attrs.IS_TRADE_ITEM_MAR_REC_FLAG := j.IS_TRADE_ITEM_MAR_REC_FLAG;
656       EXCEPTION WHEN l_conversion_error THEN
657         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_MAR_REC_FLAG');
658         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
659         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
660         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_TRADE_ITEM_MAR_REC_FLAG);
661         FND_MSG_PUB.ADD;
662       END;
663 
664       BEGIN
665         l_single_row_attrs.DIAMETER := j.DIAMETER;
666         IF j.DIAMETER <> G_MISS_NUM THEN
667           l_diameter := j.DIAMETER;
668         END IF;
669       EXCEPTION WHEN l_conversion_error THEN
670         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DIAMETER');
671         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
672         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
673         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DIAMETER);
674         FND_MSG_PUB.ADD;
675       END;
676 
677       l_single_row_attrs.UOM_DIAMETER := l_uom_tbl('DIAMETER');
678 
679       BEGIN
680         l_single_row_attrs.DRAINED_WEIGHT := j.DRAINED_WEIGHT;
681         IF j.DRAINED_WEIGHT <> G_MISS_NUM THEN
682           l_drained_weight := j.DRAINED_WEIGHT;
683         END IF;
684       EXCEPTION WHEN l_conversion_error THEN
685         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DRAINED_WEIGHT');
686         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
687         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
688         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DRAINED_WEIGHT);
689         FND_MSG_PUB.ADD;
690       END;
691 
692       l_single_row_attrs.UOM_DRAINED_WEIGHT := l_uom_tbl('DRAINED_WEIGHT');
693 
694       BEGIN
695         l_single_row_attrs.GENERIC_INGREDIENT := j.GENERIC_INGREDIENT;
696       EXCEPTION WHEN l_conversion_error THEN
697         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'GENERIC_INGREDIENT');
698         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
699         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
700         FND_MESSAGE.Set_Token('ATTR_VALUE', j.GENERIC_INGREDIENT);
701         FND_MSG_PUB.ADD;
702       END;
703 
704       BEGIN
705         l_single_row_attrs.GENERIC_INGREDIENT_STRGTH := j.GENERIC_INGREDIENT_STRGTH;
706         IF j.GENERIC_INGREDIENT_STRGTH <> G_MISS_NUM THEN
707           l_generic_ingredient_strgth := j.GENERIC_INGREDIENT_STRGTH;
708         END IF;
709       EXCEPTION WHEN l_conversion_error THEN
710         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'GENERIC_INGREDIENT_STRGTH');
711         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
712         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
713         FND_MESSAGE.Set_Token('ATTR_VALUE', j.GENERIC_INGREDIENT_STRGTH);
714         FND_MSG_PUB.ADD;
715       END;
716 
717       l_single_row_attrs.UOM_GENERIC_INGREDIENT_STRGTH := l_uom_tbl('GENERIC_INGREDIENT_STRGTH');
718 
719       BEGIN
720         l_single_row_attrs.INGREDIENT_STRENGTH := j.INGREDIENT_STRENGTH;
721       EXCEPTION WHEN l_conversion_error THEN
722         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'INGREDIENT_STRENGTH');
723         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
724         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
725         FND_MESSAGE.Set_Token('ATTR_VALUE', j.INGREDIENT_STRENGTH);
726         FND_MSG_PUB.ADD;
727       END;
728 
729       BEGIN
730         l_single_row_attrs.IS_NET_CONTENT_DEC_FLAG := j.IS_NET_CONTENT_DEC_FLAG;
731       EXCEPTION WHEN l_conversion_error THEN
732         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_NET_CONTENT_DEC_FLAG');
733         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
734         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
735         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_NET_CONTENT_DEC_FLAG);
736         FND_MSG_PUB.ADD;
737       END;
738 
739       BEGIN
740         l_single_row_attrs.NET_CONTENT := j.NET_CONTENT;
741         IF j.NET_CONTENT <> G_MISS_NUM THEN
742           l_net_content := j.NET_CONTENT;
743         END IF;
744       EXCEPTION WHEN l_conversion_error THEN
745         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'NET_CONTENT');
746         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
747         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
748         FND_MESSAGE.Set_Token('ATTR_VALUE', j.NET_CONTENT);
749         FND_MSG_PUB.ADD;
750       END;
751 
752       BEGIN
753         l_single_row_attrs.UOM_NET_CONTENT := j.UOM_NET_CONTENT;
754       EXCEPTION WHEN l_conversion_error THEN
755         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'UOM_NET_CONTENT');
756         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
757         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
758         FND_MESSAGE.Set_Token('ATTR_VALUE', j.UOM_NET_CONTENT);
759         FND_MSG_PUB.ADD;
760       END;
761 
762       BEGIN
763         l_single_row_attrs.PEG_HORIZONTAL := j.PEG_HORIZONTAL;
764         IF j.PEG_HORIZONTAL <> G_MISS_NUM THEN
765           l_peg_horizontal := j.PEG_HORIZONTAL;
766         END IF;
767       EXCEPTION WHEN l_conversion_error THEN
768         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PEG_HORIZONTAL');
769         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
770         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
771         FND_MESSAGE.Set_Token('ATTR_VALUE', j.PEG_HORIZONTAL);
772         FND_MSG_PUB.ADD;
773       END;
774 
775       l_single_row_attrs.UOM_PEG_HORIZONTAL := l_uom_tbl('PEG_HORIZONTAL');
776 
777       BEGIN
778         l_single_row_attrs.PEG_VERTICAL := j.PEG_VERTICAL;
779         IF j.PEG_VERTICAL <> G_MISS_NUM THEN
780           l_peg_vertical := j.PEG_VERTICAL;
781         END IF;
782       EXCEPTION WHEN l_conversion_error THEN
783         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PEG_VERTICAL');
784         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
785         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
786         FND_MESSAGE.Set_Token('ATTR_VALUE', j.PEG_VERTICAL);
787         FND_MSG_PUB.ADD;
788       END;
789 
790       l_single_row_attrs.UOM_PEG_VERTICAL := l_uom_tbl('PEG_VERTICAL');
791 
792       BEGIN
793         l_single_row_attrs.CONSUMER_AVAIL_DATE_TIME := j.CONSUMER_AVAIL_DATE_TIME;
794       EXCEPTION WHEN l_conversion_error THEN
795         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'CONSUMER_AVAIL_DATE_TIME');
796         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
797         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
798         FND_MESSAGE.Set_Token('ATTR_VALUE', j.CONSUMER_AVAIL_DATE_TIME);
799         FND_MSG_PUB.ADD;
800       END;
801 
802       BEGIN
803         l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MAX := j.DEL_TO_DIST_CNTR_TEMP_MAX;
804         IF j.DEL_TO_DIST_CNTR_TEMP_MAX <> G_MISS_NUM THEN
805           l_del_to_dist_cntr_temp_max := j.DEL_TO_DIST_CNTR_TEMP_MAX;
806         END IF;
807       EXCEPTION WHEN l_conversion_error THEN
808         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MAX');
809         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
810         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
811         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DEL_TO_DIST_CNTR_TEMP_MAX);
812         FND_MSG_PUB.ADD;
813       END;
814 
815       BEGIN
816         l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX := j.UOM_DEL_TO_DIST_CNTR_TEMP_MAX;
817       EXCEPTION WHEN l_conversion_error THEN
818         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'UOM_DEL_TO_DIST_CNTR_TEMP_MAX');
819         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
820         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
821         FND_MESSAGE.Set_Token('ATTR_VALUE', j.UOM_DEL_TO_DIST_CNTR_TEMP_MAX);
822         FND_MSG_PUB.ADD;
823       END;
824 
825       BEGIN
826         l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MIN := j.DEL_TO_DIST_CNTR_TEMP_MIN;
827         IF j.DEL_TO_DIST_CNTR_TEMP_MIN <> G_MISS_NUM THEN
828           l_del_to_dist_cntr_temp_min := j.DEL_TO_DIST_CNTR_TEMP_MIN;
829         END IF;
830       EXCEPTION WHEN l_conversion_error THEN
831         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MIN');
832         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
833         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
834         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DEL_TO_DIST_CNTR_TEMP_MIN);
835         FND_MSG_PUB.ADD;
836       END;
837 
838       BEGIN
839         l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN := j.UOM_DEL_TO_DIST_CNTR_TEMP_MIN;
840       EXCEPTION WHEN l_conversion_error THEN
841         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'UOM_DEL_TO_DIST_CNTR_TEMP_MIN');
842         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
843         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
844         FND_MESSAGE.Set_Token('ATTR_VALUE', j.UOM_DEL_TO_DIST_CNTR_TEMP_MIN);
845         FND_MSG_PUB.ADD;
846       END;
847 
848       BEGIN
849         l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MAX := j.DELIVERY_TO_MRKT_TEMP_MAX;
850         IF j.DELIVERY_TO_MRKT_TEMP_MAX <> G_MISS_NUM THEN
851           l_delivery_to_mrkt_temp_max := j.DELIVERY_TO_MRKT_TEMP_MAX;
852         END IF;
853       EXCEPTION WHEN l_conversion_error THEN
854         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MAX');
855         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
856         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
857         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DELIVERY_TO_MRKT_TEMP_MAX);
858         FND_MSG_PUB.ADD;
859       END;
860 
861       BEGIN
862         l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX := j.UOM_DELIVERY_TO_MRKT_TEMP_MAX;
863       EXCEPTION WHEN l_conversion_error THEN
864         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'UOM_DELIVERY_TO_MRKT_TEMP_MAX');
865         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
866         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
867         FND_MESSAGE.Set_Token('ATTR_VALUE', j.UOM_DELIVERY_TO_MRKT_TEMP_MAX);
868         FND_MSG_PUB.ADD;
869       END;
870 
871       BEGIN
872         l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MIN := j.DELIVERY_TO_MRKT_TEMP_MIN;
873         IF j.DELIVERY_TO_MRKT_TEMP_MIN <> G_MISS_NUM THEN
874           l_delivery_to_mrkt_temp_min := j.DELIVERY_TO_MRKT_TEMP_MIN;
875         END IF;
876       EXCEPTION WHEN l_conversion_error THEN
877         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MIN');
878         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
879         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
880         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DELIVERY_TO_MRKT_TEMP_MIN);
881         FND_MSG_PUB.ADD;
882       END;
883 
884       BEGIN
885         l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN := j.UOM_DELIVERY_TO_MRKT_TEMP_MIN;
886       EXCEPTION WHEN l_conversion_error THEN
887         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'UOM_DELIVERY_TO_MRKT_TEMP_MIN');
888         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
889         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
890         FND_MESSAGE.Set_Token('ATTR_VALUE', j.UOM_DELIVERY_TO_MRKT_TEMP_MIN);
891         FND_MSG_PUB.ADD;
892       END;
893 
894       BEGIN
895         l_single_row_attrs.SUB_BRAND := j.SUB_BRAND;
896       EXCEPTION WHEN l_conversion_error THEN
897         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'SUB_BRAND');
898         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
899         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
900         FND_MESSAGE.Set_Token('ATTR_VALUE', j.SUB_BRAND);
901         FND_MSG_PUB.ADD;
902       END;
903 
904       BEGIN
905         l_single_row_attrs.EANUCC_CODE := j.EANUCC_CODE;
906       EXCEPTION WHEN l_conversion_error THEN
907         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_CODE');
908         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
909         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
910         FND_MESSAGE.Set_Token('ATTR_VALUE', j.EANUCC_CODE);
911         FND_MSG_PUB.ADD;
912       END;
913 
914       BEGIN
915         l_single_row_attrs.EANUCC_TYPE := j.EANUCC_TYPE;
916       EXCEPTION WHEN l_conversion_error THEN
917         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_TYPE');
918         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
919         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
920         FND_MESSAGE.Set_Token('ATTR_VALUE', j.EANUCC_TYPE);
921         FND_MSG_PUB.ADD;
922       END;
923 
924       BEGIN
925         l_single_row_attrs.RETAIL_PRICE_ON_TRADE_ITEM := j.RETAIL_PRICE_ON_TRADE_ITEM;
926         IF j.RETAIL_PRICE_ON_TRADE_ITEM <> G_MISS_NUM THEN
927           l_retail_price_on_trade_item := j.RETAIL_PRICE_ON_TRADE_ITEM;
928         END IF;
929       EXCEPTION WHEN l_conversion_error THEN
930         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'RETAIL_PRICE_ON_TRADE_ITEM');
931         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
932         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
933         FND_MESSAGE.Set_Token('ATTR_VALUE', j.RETAIL_PRICE_ON_TRADE_ITEM);
934         FND_MSG_PUB.ADD;
935       END;
936 
937       BEGIN
938         l_single_row_attrs.QUANTITY_OF_COMP_LAY_ITEM := j.QUANTITY_OF_COMP_LAY_ITEM;
939         IF j.QUANTITY_OF_COMP_LAY_ITEM <> G_MISS_NUM THEN
940           l_quantity_of_comp_lay_item := j.QUANTITY_OF_COMP_LAY_ITEM;
941         END IF;
942       EXCEPTION WHEN l_conversion_error THEN
943         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'QUANTITY_OF_COMP_LAY_ITEM');
944         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
945         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
946         FND_MESSAGE.Set_Token('ATTR_VALUE', j.QUANTITY_OF_COMP_LAY_ITEM);
947         FND_MSG_PUB.ADD;
948       END;
949 
950       BEGIN
951         l_single_row_attrs.QUANITY_OF_ITEM_IN_LAYER := j.QUANITY_OF_ITEM_IN_LAYER;
952         IF j.QUANITY_OF_ITEM_IN_LAYER <> G_MISS_NUM THEN
953           l_quanity_of_item_in_layer := j.QUANITY_OF_ITEM_IN_LAYER;
954         END IF;
955       EXCEPTION WHEN l_conversion_error THEN
956         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'QUANITY_OF_ITEM_IN_LAYER');
957         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
958         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
959         FND_MESSAGE.Set_Token('ATTR_VALUE', j.QUANITY_OF_ITEM_IN_LAYER);
960         FND_MSG_PUB.ADD;
961       END;
962 
963       BEGIN
964         l_single_row_attrs.QUANTITY_OF_ITEM_INNER_PACK := j.QUANTITY_OF_ITEM_INNER_PACK;
965         IF j.QUANTITY_OF_ITEM_INNER_PACK <> G_MISS_NUM THEN
966           l_quantity_of_item_inner_pack := j.QUANTITY_OF_ITEM_INNER_PACK;
967         END IF;
968       EXCEPTION WHEN l_conversion_error THEN
969         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'QUANTITY_OF_ITEM_INNER_PACK');
970         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
971         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
972         FND_MESSAGE.Set_Token('ATTR_VALUE', j.QUANTITY_OF_ITEM_INNER_PACK);
973         FND_MSG_PUB.ADD;
974       END;
975 
976       BEGIN
977         l_single_row_attrs.QUANTITY_OF_INNER_PACK := j.QUANTITY_OF_INNER_PACK;
978         IF j.QUANTITY_OF_INNER_PACK <> G_MISS_NUM THEN
979           l_quantity_of_inner_pack := j.QUANTITY_OF_INNER_PACK;
980         END IF;
981       EXCEPTION WHEN l_conversion_error THEN
982         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'QUANTITY_OF_INNER_PACK');
983         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
984         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
985         FND_MESSAGE.Set_Token('ATTR_VALUE', j.QUANTITY_OF_INNER_PACK);
986         FND_MSG_PUB.ADD;
987       END;
988 
989       BEGIN
990         l_single_row_attrs.BRAND_OWNER_GLN := j.BRAND_OWNER_GLN;
991       EXCEPTION WHEN l_conversion_error THEN
992         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_OWNER_GLN');
993         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
994         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
995         FND_MESSAGE.Set_Token('ATTR_VALUE', j.BRAND_OWNER_GLN);
996         FND_MSG_PUB.ADD;
997       END;
998 
999       BEGIN
1000         l_single_row_attrs.BRAND_OWNER_NAME := j.BRAND_OWNER_NAME;
1001       EXCEPTION WHEN l_conversion_error THEN
1002         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_OWNER_NAME');
1003         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1004         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1005         FND_MESSAGE.Set_Token('ATTR_VALUE', j.BRAND_OWNER_NAME);
1006         FND_MSG_PUB.ADD;
1007       END;
1008 
1009       BEGIN
1010         l_single_row_attrs.STORAGE_HANDLING_TEMP_MAX := j.STORAGE_HANDLING_TEMP_MAX;
1011         IF j.STORAGE_HANDLING_TEMP_MAX <> G_MISS_NUM THEN
1012           l_storage_handling_temp_max := j.STORAGE_HANDLING_TEMP_MAX;
1013         END IF;
1014       EXCEPTION WHEN l_conversion_error THEN
1015         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MAX');
1016         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1017         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1018         FND_MESSAGE.Set_Token('ATTR_VALUE', j.STORAGE_HANDLING_TEMP_MAX);
1019         FND_MSG_PUB.ADD;
1020       END;
1021 
1022       BEGIN
1023         l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX := j.UOM_STORAGE_HANDLING_TEMP_MAX;
1024       EXCEPTION WHEN l_conversion_error THEN
1025         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'UOM_STORAGE_HANDLING_TEMP_MAX');
1026         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1027         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1028         FND_MESSAGE.Set_Token('ATTR_VALUE', j.UOM_STORAGE_HANDLING_TEMP_MAX);
1029         FND_MSG_PUB.ADD;
1030       END;
1031 
1032       BEGIN
1033         l_single_row_attrs.STORAGE_HANDLING_TEMP_MIN := j.STORAGE_HANDLING_TEMP_MIN;
1034         IF j.STORAGE_HANDLING_TEMP_MIN <> G_MISS_NUM THEN
1035           l_storage_handling_temp_min := j.STORAGE_HANDLING_TEMP_MIN;
1036         END IF;
1037       EXCEPTION WHEN l_conversion_error THEN
1038         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MIN');
1039         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1040         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1041         FND_MESSAGE.Set_Token('ATTR_VALUE', j.STORAGE_HANDLING_TEMP_MIN);
1042         FND_MSG_PUB.ADD;
1043       END;
1044 
1045       BEGIN
1046         l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN := j.UOM_STORAGE_HANDLING_TEMP_MIN;
1047       EXCEPTION WHEN l_conversion_error THEN
1048         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'UOM_STORAGE_HANDLING_TEMP_MIN');
1049         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1050         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1051         FND_MESSAGE.Set_Token('ATTR_VALUE', j.UOM_STORAGE_HANDLING_TEMP_MIN);
1052         FND_MSG_PUB.ADD;
1053       END;
1054 
1055       BEGIN
1056         l_single_row_attrs.TRADE_ITEM_COUPON := j.TRADE_ITEM_COUPON;
1057         IF j.TRADE_ITEM_COUPON <> G_MISS_NUM THEN
1058           l_trade_item_coupon := j.TRADE_ITEM_COUPON;
1059         END IF;
1060       EXCEPTION WHEN l_conversion_error THEN
1061         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'TRADE_ITEM_COUPON');
1062         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1063         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1064         FND_MESSAGE.Set_Token('ATTR_VALUE', j.TRADE_ITEM_COUPON);
1065         FND_MSG_PUB.ADD;
1066       END;
1067 
1068       BEGIN
1069         l_single_row_attrs.DEGREE_OF_ORIGINAL_WORT := j.DEGREE_OF_ORIGINAL_WORT;
1070       EXCEPTION WHEN l_conversion_error THEN
1071         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEGREE_OF_ORIGINAL_WORT');
1072         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1073         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1074         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DEGREE_OF_ORIGINAL_WORT);
1075         FND_MSG_PUB.ADD;
1076       END;
1077 
1078       BEGIN
1079         l_single_row_attrs.FAT_PERCENT_IN_DRY_MATTER := j.FAT_PERCENT_IN_DRY_MATTER;
1080         IF j.FAT_PERCENT_IN_DRY_MATTER <> G_MISS_NUM THEN
1081           l_fat_percent_in_dry_matter := j.FAT_PERCENT_IN_DRY_MATTER;
1082         END IF;
1083       EXCEPTION WHEN l_conversion_error THEN
1084         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'FAT_PERCENT_IN_DRY_MATTER');
1085         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1086         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1087         FND_MESSAGE.Set_Token('ATTR_VALUE', j.FAT_PERCENT_IN_DRY_MATTER);
1088         FND_MSG_PUB.ADD;
1089       END;
1090 
1091       BEGIN
1092         l_single_row_attrs.PERCENT_OF_ALCOHOL_BY_VOL := j.PERCENT_OF_ALCOHOL_BY_VOL;
1093         IF j.PERCENT_OF_ALCOHOL_BY_VOL <> G_MISS_NUM THEN
1094           l_percent_of_alcohol_by_vol := j.PERCENT_OF_ALCOHOL_BY_VOL;
1095         END IF;
1096       EXCEPTION WHEN l_conversion_error THEN
1097         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PERCENT_OF_ALCOHOL_BY_VOL');
1098         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1099         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1100         FND_MESSAGE.Set_Token('ATTR_VALUE', j.PERCENT_OF_ALCOHOL_BY_VOL);
1101         FND_MSG_PUB.ADD;
1102       END;
1103 
1104       BEGIN
1105         l_single_row_attrs.ISBN_NUMBER := j.ISBN_NUMBER;
1106       EXCEPTION WHEN l_conversion_error THEN
1107         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ISBN_NUMBER');
1108         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1109         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1110         FND_MESSAGE.Set_Token('ATTR_VALUE', j.ISBN_NUMBER);
1111         FND_MSG_PUB.ADD;
1112       END;
1113 
1114       BEGIN
1115         l_single_row_attrs.ISSN_NUMBER := j.ISSN_NUMBER;
1116       EXCEPTION WHEN l_conversion_error THEN
1117         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ISSN_NUMBER');
1118         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1119         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1120         FND_MESSAGE.Set_Token('ATTR_VALUE', j.ISSN_NUMBER);
1121         FND_MSG_PUB.ADD;
1122       END;
1123 
1124       BEGIN
1125         l_single_row_attrs.IS_INGREDIENT_IRRADIATED := j.IS_INGREDIENT_IRRADIATED;
1126       EXCEPTION WHEN l_conversion_error THEN
1127         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_INGREDIENT_IRRADIATED');
1128         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1129         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1130         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_INGREDIENT_IRRADIATED);
1131         FND_MSG_PUB.ADD;
1132       END;
1133 
1134       BEGIN
1135         l_single_row_attrs.IS_RAW_MATERIAL_IRRADIATED := j.IS_RAW_MATERIAL_IRRADIATED;
1136       EXCEPTION WHEN l_conversion_error THEN
1137         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_RAW_MATERIAL_IRRADIATED');
1138         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1139         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1140         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_RAW_MATERIAL_IRRADIATED);
1141         FND_MSG_PUB.ADD;
1142       END;
1143 
1144       BEGIN
1145         l_single_row_attrs.IS_TRADE_ITEM_GENETICALLY_MOD := j.IS_TRADE_ITEM_GENETICALLY_MOD;
1146       EXCEPTION WHEN l_conversion_error THEN
1147         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_GENETICALLY_MOD');
1148         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1149         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1150         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_TRADE_ITEM_GENETICALLY_MOD);
1151         FND_MSG_PUB.ADD;
1152       END;
1153 
1154       BEGIN
1155         l_single_row_attrs.IS_TRADE_ITEM_IRRADIATED := j.IS_TRADE_ITEM_IRRADIATED;
1156       EXCEPTION WHEN l_conversion_error THEN
1157         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_IRRADIATED');
1158         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1159         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1160         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_TRADE_ITEM_IRRADIATED);
1161         FND_MSG_PUB.ADD;
1162       END;
1163 
1164       BEGIN
1165         l_single_row_attrs.SECURITY_TAG_LOCATION := j.SECURITY_TAG_LOCATION;
1166       EXCEPTION WHEN l_conversion_error THEN
1167         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'SECURITY_TAG_LOCATION');
1168         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1169         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1170         FND_MESSAGE.Set_Token('ATTR_VALUE', j.SECURITY_TAG_LOCATION);
1171         FND_MSG_PUB.ADD;
1172       END;
1173 
1174       BEGIN
1175         l_single_row_attrs.URL_FOR_WARRANTY := j.URL_FOR_WARRANTY;
1176       EXCEPTION WHEN l_conversion_error THEN
1177         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'URL_FOR_WARRANTY');
1178         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1179         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1180         FND_MESSAGE.Set_Token('ATTR_VALUE', j.URL_FOR_WARRANTY);
1181         FND_MSG_PUB.ADD;
1182       END;
1183 
1184       BEGIN
1185         l_single_row_attrs.NESTING_INCREMENT := j.NESTING_INCREMENT;
1186         IF j.NESTING_INCREMENT <> G_MISS_NUM THEN
1187           l_nesting_increment := j.NESTING_INCREMENT;
1188         END IF;
1189       EXCEPTION WHEN l_conversion_error THEN
1190         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'NESTING_INCREMENT');
1191         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1192         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1193         FND_MESSAGE.Set_Token('ATTR_VALUE', j.NESTING_INCREMENT);
1194         FND_MSG_PUB.ADD;
1195       END;
1196 
1197       l_single_row_attrs.UOM_NESTING_INCREMENT := l_uom_tbl('NESTING_INCREMENT');
1198 
1199       BEGIN
1200         l_single_row_attrs.IS_TRADE_ITEM_RECALLED := j.IS_TRADE_ITEM_RECALLED;
1201       EXCEPTION WHEN l_conversion_error THEN
1202         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_RECALLED');
1203         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1204         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1205         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_TRADE_ITEM_RECALLED);
1206         FND_MSG_PUB.ADD;
1207       END;
1208 
1209       BEGIN
1210         l_single_row_attrs.MODEL_NUMBER := j.MODEL_NUMBER;
1211       EXCEPTION WHEN l_conversion_error THEN
1212         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'MODEL_NUMBER');
1213         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1214         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1215         FND_MESSAGE.Set_Token('ATTR_VALUE', j.MODEL_NUMBER);
1216         FND_MSG_PUB.ADD;
1217       END;
1218 
1219       BEGIN
1220         l_single_row_attrs.PIECES_PER_TRADE_ITEM := j.PIECES_PER_TRADE_ITEM;
1221         IF j.PIECES_PER_TRADE_ITEM <> G_MISS_NUM THEN
1222           l_pieces_per_trade_item := j.PIECES_PER_TRADE_ITEM;
1223         END IF;
1224       EXCEPTION WHEN l_conversion_error THEN
1225         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PIECES_PER_TRADE_ITEM');
1226         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1227         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1228         FND_MESSAGE.Set_Token('ATTR_VALUE', j.PIECES_PER_TRADE_ITEM);
1229         FND_MSG_PUB.ADD;
1230       END;
1231 
1232       l_single_row_attrs.UOM_PIECES_PER_TRADE_ITEM := l_uom_tbl('PIECES_PER_TRADE_ITEM');
1233 
1234       BEGIN
1235         l_single_row_attrs.DEPT_OF_TRNSPRT_DANG_GOODS_NUM := j.DEPT_OF_TRNSPRT_DANG_GOODS_NUM;
1236       EXCEPTION WHEN l_conversion_error THEN
1237         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEPT_OF_TRNSPRT_DANG_GOODS_NUM');
1238         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1239         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1240         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DEPT_OF_TRNSPRT_DANG_GOODS_NUM);
1241         FND_MSG_PUB.ADD;
1242       END;
1243 
1244       BEGIN
1245         l_single_row_attrs.RETURN_GOODS_POLICY := j.RETURN_GOODS_POLICY;
1246       EXCEPTION WHEN l_conversion_error THEN
1247         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'RETURN_GOODS_POLICY');
1248         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1249         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1250         FND_MESSAGE.Set_Token('ATTR_VALUE', j.RETURN_GOODS_POLICY);
1251         FND_MSG_PUB.ADD;
1252       END;
1253 
1254       BEGIN
1255         l_single_row_attrs.IS_OUT_OF_BOX_PROVIDED := j.IS_OUT_OF_BOX_PROVIDED;
1256       EXCEPTION WHEN l_conversion_error THEN
1257         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_OUT_OF_BOX_PROVIDED');
1258         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1259         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1260         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_OUT_OF_BOX_PROVIDED);
1261         FND_MSG_PUB.ADD;
1262       END;
1263 
1264       BEGIN
1265         l_single_row_attrs.INVOICE_NAME := j.INVOICE_NAME;
1266       EXCEPTION WHEN l_conversion_error THEN
1267         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'INVOICE_NAME');
1268         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1269         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1270         FND_MESSAGE.Set_Token('ATTR_VALUE', j.INVOICE_NAME);
1271         FND_MSG_PUB.ADD;
1272       END;
1273 
1274       BEGIN
1275         l_single_row_attrs.DESCRIPTIVE_SIZE := j.DESCRIPTIVE_SIZE;
1276       EXCEPTION WHEN l_conversion_error THEN
1277         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DESCRIPTIVE_SIZE');
1278         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1279         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1280         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DESCRIPTIVE_SIZE);
1281         FND_MSG_PUB.ADD;
1282       END;
1283 
1284       BEGIN
1285         l_single_row_attrs.FUNCTIONAL_NAME := j.FUNCTIONAL_NAME;
1286       EXCEPTION WHEN l_conversion_error THEN
1287         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'FUNCTIONAL_NAME');
1288         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1289         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1290         FND_MESSAGE.Set_Token('ATTR_VALUE', j.FUNCTIONAL_NAME);
1291         FND_MSG_PUB.ADD;
1292       END;
1293 
1294       BEGIN
1295         l_single_row_attrs.TRADE_ITEM_FORM_DESCRIPTION := j.TRADE_ITEM_FORM_DESCRIPTION;
1296       EXCEPTION WHEN l_conversion_error THEN
1297         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'TRADE_ITEM_FORM_DESCRIPTION');
1298         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1299         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1300         FND_MESSAGE.Set_Token('ATTR_VALUE', j.TRADE_ITEM_FORM_DESCRIPTION);
1301         FND_MSG_PUB.ADD;
1302       END;
1303 
1304       BEGIN
1305         l_single_row_attrs.WARRANTY_DESCRIPTION := j.WARRANTY_DESCRIPTION;
1306       EXCEPTION WHEN l_conversion_error THEN
1307         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'WARRANTY_DESCRIPTION');
1308         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1309         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1310         FND_MESSAGE.Set_Token('ATTR_VALUE', j.WARRANTY_DESCRIPTION);
1311         FND_MSG_PUB.ADD;
1312       END;
1313 
1314       BEGIN
1315         l_single_row_attrs.TRADE_ITEM_FINISH_DESCRIPTION := j.TRADE_ITEM_FINISH_DESCRIPTION;
1316       EXCEPTION WHEN l_conversion_error THEN
1317         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'TRADE_ITEM_FINISH_DESCRIPTION');
1318         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1319         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1320         FND_MESSAGE.Set_Token('ATTR_VALUE', j.TRADE_ITEM_FINISH_DESCRIPTION);
1321         FND_MSG_PUB.ADD;
1322       END;
1323 
1324       BEGIN
1325         l_single_row_attrs.DESCRIPTION_SHORT := j.DESCRIPTION_SHORT;
1326       EXCEPTION WHEN l_conversion_error THEN
1327         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DESCRIPTION_SHORT');
1328         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1329         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1330         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DESCRIPTION_SHORT);
1331         FND_MSG_PUB.ADD;
1332       END;
1333 
1334       BEGIN
1335         l_single_row_attrs.IS_BARCODE_SYMBOLOGY_DERIVABLE := j.IS_BARCODE_SYMBOLOGY_DERIVABLE;
1336       EXCEPTION WHEN l_conversion_error THEN
1337         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_BARCODE_SYMBOLOGY_DERIVABLE');
1338         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1339         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1340         FND_MESSAGE.Set_Token('ATTR_VALUE', j.IS_BARCODE_SYMBOLOGY_DERIVABLE);
1341         FND_MSG_PUB.ADD;
1342       END;
1343     END LOOP; -- end loop single row attributes
1344 
1345     Debug_Msg('Finished Populating local array for Single Row Attributes');
1346     k := 1;
1347     FOR j IN c_intf_multi_row_attrs(p_inventory_item_id, p_organization_id) LOOP
1348       l_multi_row_attrs(k).LANGUAGE_CODE := USERENV('LANG');
1349 
1350       BEGIN
1351         l_multi_row_attrs(k).MANUFACTURER_GLN := j.MANUFACTURER_GLN;
1352       EXCEPTION WHEN l_conversion_error THEN
1353         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'MANUFACTURER_GLN');
1354         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1355         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1356         FND_MESSAGE.Set_Token('ATTR_VALUE', j.MANUFACTURER_GLN);
1357         FND_MSG_PUB.ADD;
1358       END;
1359 
1360       BEGIN
1361         l_multi_row_attrs(k).MANUFACTURER_ID := j.MANUFACTURER_ID;
1362         IF j.MANUFACTURER_ID <> G_MISS_NUM THEN
1363           l_manufacturer_id := j.MANUFACTURER_ID;
1364         END IF;
1365       EXCEPTION WHEN l_conversion_error THEN
1366         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'MANUFACTURER_ID');
1367         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1368         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1369         FND_MESSAGE.Set_Token('ATTR_VALUE', j.MANUFACTURER_ID);
1370         FND_MSG_PUB.ADD;
1371       END;
1372 
1373       BEGIN
1374         l_multi_row_attrs(k).BAR_CODE_TYPE := j.BAR_CODE_TYPE;
1375       EXCEPTION WHEN l_conversion_error THEN
1376         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'BAR_CODE_TYPE');
1377         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1378         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1379         FND_MESSAGE.Set_Token('ATTR_VALUE', j.BAR_CODE_TYPE);
1380         FND_MSG_PUB.ADD;
1381       END;
1382 
1383       BEGIN
1384         l_multi_row_attrs(k).COLOR_CODE_LIST_AGENCY := j.COLOR_CODE_LIST_AGENCY;
1385       EXCEPTION WHEN l_conversion_error THEN
1386         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'COLOR_CODE_LIST_AGENCY');
1387         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1388         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1389         FND_MESSAGE.Set_Token('ATTR_VALUE', j.COLOR_CODE_LIST_AGENCY);
1390         FND_MSG_PUB.ADD;
1391       END;
1392 
1393       BEGIN
1394         l_multi_row_attrs(k).COLOR_CODE_VALUE := j.COLOR_CODE_VALUE;
1395       EXCEPTION WHEN l_conversion_error THEN
1396         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'COLOR_CODE_VALUE');
1397         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1398         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1399         FND_MESSAGE.Set_Token('ATTR_VALUE', j.COLOR_CODE_VALUE);
1400         FND_MSG_PUB.ADD;
1401       END;
1402 
1403       BEGIN
1404         l_multi_row_attrs(k).CLASS_OF_DANGEROUS_CODE := j.CLASS_OF_DANGEROUS_CODE;
1405       EXCEPTION WHEN l_conversion_error THEN
1406         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'CLASS_OF_DANGEROUS_CODE');
1407         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1408         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1409         FND_MESSAGE.Set_Token('ATTR_VALUE', j.CLASS_OF_DANGEROUS_CODE);
1410         FND_MSG_PUB.ADD;
1411       END;
1412 
1413       BEGIN
1414         l_multi_row_attrs(k).DANGEROUS_GOODS_MARGIN_NUMBER := j.DANGEROUS_GOODS_MARGIN_NUMBER;
1415       EXCEPTION WHEN l_conversion_error THEN
1416         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_MARGIN_NUMBER');
1417         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1418         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1419         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DANGEROUS_GOODS_MARGIN_NUMBER);
1420         FND_MSG_PUB.ADD;
1421       END;
1422 
1423       BEGIN
1424         l_multi_row_attrs(k).DANGEROUS_GOODS_HAZARDOUS_CODE := j.DANGEROUS_GOODS_HAZARDOUS_CODE;
1425       EXCEPTION WHEN l_conversion_error THEN
1426         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_HAZARDOUS_CODE');
1427         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1428         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1429         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DANGEROUS_GOODS_HAZARDOUS_CODE);
1430         FND_MSG_PUB.ADD;
1431       END;
1432 
1433       BEGIN
1434         l_multi_row_attrs(k).DANGEROUS_GOODS_PACK_GROUP := j.DANGEROUS_GOODS_PACK_GROUP;
1435       EXCEPTION WHEN l_conversion_error THEN
1436         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_PACK_GROUP');
1437         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1438         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1439         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DANGEROUS_GOODS_PACK_GROUP);
1440         FND_MSG_PUB.ADD;
1441       END;
1442 
1443       BEGIN
1444         l_multi_row_attrs(k).DANGEROUS_GOODS_REG_CODE := j.DANGEROUS_GOODS_REG_CODE;
1445       EXCEPTION WHEN l_conversion_error THEN
1446         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_REG_CODE');
1447         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1448         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1449         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DANGEROUS_GOODS_REG_CODE);
1450         FND_MSG_PUB.ADD;
1451       END;
1452 
1453       BEGIN
1454         l_multi_row_attrs(k).DANGEROUS_GOODS_SHIPPING_NAME := j.DANGEROUS_GOODS_SHIPPING_NAME;
1455       EXCEPTION WHEN l_conversion_error THEN
1456         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_SHIPPING_NAME');
1457         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1458         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1459         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DANGEROUS_GOODS_SHIPPING_NAME);
1460         FND_MSG_PUB.ADD;
1461       END;
1462 
1463       BEGIN
1464         l_multi_row_attrs(k).UNITED_NATIONS_DANG_GOODS_NO := j.UNITED_NATIONS_DANG_GOODS_NO;
1465         IF j.UNITED_NATIONS_DANG_GOODS_NO <> G_MISS_NUM THEN
1466           l_united_nations_dang_goods_no := j.UNITED_NATIONS_DANG_GOODS_NO;
1467         END IF;
1468       EXCEPTION WHEN l_conversion_error THEN
1469         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'UNITED_NATIONS_DANG_GOODS_NO');
1470         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1471         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1472         FND_MESSAGE.Set_Token('ATTR_VALUE', j.UNITED_NATIONS_DANG_GOODS_NO);
1473         FND_MSG_PUB.ADD;
1474       END;
1475 
1476       BEGIN
1477         l_multi_row_attrs(k).FLASH_POINT_TEMP := j.FLASH_POINT_TEMP;
1478         IF j.FLASH_POINT_TEMP <> G_MISS_NUM THEN
1479           l_flash_point_temp := j.FLASH_POINT_TEMP;
1480         END IF;
1481       EXCEPTION WHEN l_conversion_error THEN
1482         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'FLASH_POINT_TEMP');
1483         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1484         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1485         FND_MESSAGE.Set_Token('ATTR_VALUE', j.FLASH_POINT_TEMP);
1486         FND_MSG_PUB.ADD;
1487       END;
1488 
1489       BEGIN
1490         l_multi_row_attrs(k).UOM_FLASH_POINT_TEMP := j.UOM_FLASH_POINT_TEMP;
1491       EXCEPTION WHEN l_conversion_error THEN
1492         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'UOM_FLASH_POINT_TEMP');
1493         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1494         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1495         FND_MESSAGE.Set_Token('ATTR_VALUE', j.UOM_FLASH_POINT_TEMP);
1496         FND_MSG_PUB.ADD;
1497       END;
1498 
1499       BEGIN
1500         l_multi_row_attrs(k).COUNTRY_OF_ORIGIN := j.COUNTRY_OF_ORIGIN;
1501       EXCEPTION WHEN l_conversion_error THEN
1502         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'COUNTRY_OF_ORIGIN');
1503         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1504         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1505         FND_MESSAGE.Set_Token('ATTR_VALUE', j.COUNTRY_OF_ORIGIN);
1506         FND_MSG_PUB.ADD;
1507       END;
1508 
1509       BEGIN
1510         l_multi_row_attrs(k).HARMONIZED_TARIFF_SYS_ID_CODE := j.HARMONIZED_TARIFF_SYS_ID_CODE;
1511         IF j.HARMONIZED_TARIFF_SYS_ID_CODE <> G_MISS_NUM THEN
1512           l_harmonized_tariff_sys_id_cd := j.HARMONIZED_TARIFF_SYS_ID_CODE;
1513         END IF;
1514       EXCEPTION WHEN l_conversion_error THEN
1515         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'HARMONIZED_TARIFF_SYS_ID_CODE');
1516         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1517         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1518         FND_MESSAGE.Set_Token('ATTR_VALUE', j.HARMONIZED_TARIFF_SYS_ID_CODE);
1519         FND_MSG_PUB.ADD;
1520       END;
1521 
1522       BEGIN
1523         l_multi_row_attrs(k).SIZE_CODE_LIST_AGENCY := j.SIZE_CODE_LIST_AGENCY;
1524       EXCEPTION WHEN l_conversion_error THEN
1525         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'SIZE_CODE_LIST_AGENCY');
1526         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1527         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1528         FND_MESSAGE.Set_Token('ATTR_VALUE', j.SIZE_CODE_LIST_AGENCY);
1529         FND_MSG_PUB.ADD;
1530       END;
1531 
1532       BEGIN
1533         l_multi_row_attrs(k).SIZE_CODE_VALUE := j.SIZE_CODE_VALUE;
1534       EXCEPTION WHEN l_conversion_error THEN
1535         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'SIZE_CODE_VALUE');
1536         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1537         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1538         FND_MESSAGE.Set_Token('ATTR_VALUE', j.SIZE_CODE_VALUE);
1539         FND_MSG_PUB.ADD;
1540       END;
1541 
1542       BEGIN
1543         l_multi_row_attrs(k).HANDLING_INSTRUCTIONS_CODE := j.HANDLING_INSTRUCTIONS_CODE;
1544       EXCEPTION WHEN l_conversion_error THEN
1545         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'HANDLING_INSTRUCTIONS_CODE');
1546         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1547         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1548         FND_MESSAGE.Set_Token('ATTR_VALUE', j.HANDLING_INSTRUCTIONS_CODE);
1549         FND_MSG_PUB.ADD;
1550       END;
1551 
1552       BEGIN
1553         l_multi_row_attrs(k).DANGEROUS_GOODS_TECHNICAL_NAME := j.DANGEROUS_GOODS_TECHNICAL_NAME;
1554       EXCEPTION WHEN l_conversion_error THEN
1555         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_TECHNICAL_NAME');
1556         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1557         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1558         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DANGEROUS_GOODS_TECHNICAL_NAME);
1559         FND_MSG_PUB.ADD;
1560       END;
1561 
1562       BEGIN
1563         l_multi_row_attrs(k).DELIVERY_METHOD_INDICATOR := j.DELIVERY_METHOD_INDICATOR;
1564       EXCEPTION WHEN l_conversion_error THEN
1565         l_attr_name := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DELIVERY_METHOD_INDICATOR');
1566         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_LENGTH_INVALID');
1567         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr_name);
1568         FND_MESSAGE.Set_Token('ATTR_VALUE', j.DELIVERY_METHOD_INDICATOR);
1569         FND_MSG_PUB.ADD;
1570       END;
1571 
1572       k := k + 1;
1573     END LOOP; -- end loop multi row attributes
1574 
1575     Debug_Msg('Finished Populating local array for Multi Row Attributes');
1576     x_singe_row_attrs_rec  := l_single_row_attrs ;
1577     x_multi_row_attrs_tbl := l_multi_row_attrs ;
1578 
1579     FND_MSG_PUB.Count_And_Get('T', x_msg_count, x_msg_data);
1580     IF x_msg_count > 0 THEN
1581       x_return_status := 'E';
1582     ELSE
1583       x_return_status := 'S';
1584     END IF;
1585     Debug_Msg('Finished Get_Gdsn_Intf_Rows for Item,Org='||p_inventory_item_id||','||p_organization_id);
1586     Debug_Msg('Return Status = '||x_return_status);
1587   EXCEPTION WHEN OTHERS THEN
1588     x_return_status := 'U';
1589     x_msg_count := 1;
1590     x_msg_data := SQLERRM;
1591     Debug_Msg('Unexpected Error in Get_Gdsn_Intf_Rows - '||x_msg_data);
1592   END Get_Gdsn_Intf_Rows;
1593 
1594   /*
1595    ** This procedure validates the interface table rows for UCCnet attributes
1596    */
1597   PROCEDURE Validate_Intf_Rows ( p_data_set_id IN  NUMBER
1598                                 ,p_entity_id NUMBER
1599                                 ,p_entity_code VARCHAR2
1600                                 ,p_add_errors_to_fnd_stack VARCHAR2
1601                                 ,x_return_status OUT NOCOPY VARCHAR2
1602                                )
1603   IS
1604     CURSOR c_intf_rows IS
1605       SELECT
1606         INVENTORY_ITEM_ID
1607        ,ORGANIZATION_ID
1608        ,ITEM_CATALOG_GROUP_ID
1609        ,SOURCE_SYSTEM_ID
1610        ,SOURCE_SYSTEM_REFERENCE
1611        ,MAX(TRANSACTION_ID)    AS TRANSACTION_ID
1612        ,MAX(CREATED_BY)        AS CREATED_BY
1613        ,MAX(CREATION_DATE)     AS CREATION_DATE
1614        ,MAX(LAST_UPDATED_BY)   AS LAST_UPDATED_BY
1615        ,MAX(LAST_UPDATE_DATE)  AS LAST_UPDATE_DATE
1616        ,MAX(LAST_UPDATE_LOGIN) AS LAST_UPDATE_LOGIN
1617       FROM EGO_ITM_USR_ATTR_INTRFC
1618       WHERE (( ATTR_GROUP_TYPE IN ('EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS') )
1619              OR
1620              ( ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP' AND ATTR_GROUP_INT_NAME LIKE 'EGOINT#_GDSN%' ESCAPE '#' )
1621             )
1622         AND DATA_SET_ID = p_data_set_id
1623         AND PROCESS_STATUS = 2
1624       GROUP BY INVENTORY_ITEM_ID, ORGANIZATION_ID, ITEM_CATALOG_GROUP_ID, SOURCE_SYSTEM_ID, SOURCE_SYSTEM_REFERENCE;
1625 
1626     l_return_status          VARCHAR2(10);
1627     l_msg_count              NUMBER;
1628     l_msg_data               VARCHAR2(4000);
1629     l_msg_text               VARCHAR2(4000);
1630     l_single_row_attrs       EGO_ITEM_PUB.UCCnet_Attrs_Singl_Row_Rec_Typ;
1631     l_multi_row_attrs        EGO_ITEM_PUB.UCCnet_Attrs_Multi_Row_Tbl_Typ;
1632   BEGIN
1633     Debug_Msg('Starting Validate_Intf_Rows');
1634     FOR i IN c_intf_rows LOOP
1635       Debug_Msg('Calling Get_Gdsn_Intf_Rows for Item, Org='||i.INVENTORY_ITEM_ID||','||i.ORGANIZATION_ID);
1636       Get_Gdsn_Intf_Rows(  p_data_set_id          => p_data_set_id
1637                           ,p_target_proc_status   => 2
1638                           ,p_inventory_item_id    => i.INVENTORY_ITEM_ID
1639                           ,p_organization_id      => i.ORGANIZATION_ID
1640                           ,p_ignore_delete        => 'Y'
1641                           ,x_singe_row_attrs_rec  => l_single_row_attrs
1642                           ,x_multi_row_attrs_tbl  => l_multi_row_attrs
1643                           ,x_return_status        => l_return_status
1644                           ,x_msg_count            => l_msg_count
1645                           ,x_msg_data             => l_msg_data
1646                         );
1647 
1648       x_return_status := l_return_status;
1649 
1650       IF l_return_status <> 'S' THEN
1651         Debug_Msg('Done with errors - Calling Get_Gdsn_Intf_Rows for Item, Org='||i.INVENTORY_ITEM_ID||','||i.ORGANIZATION_ID);
1652         UPDATE EGO_ITM_USR_ATTR_INTRFC
1653         SET PROCESS_STATUS = 3
1654         WHERE DATA_SET_ID = p_data_set_id
1655           AND (( ATTR_GROUP_TYPE IN ('EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS') )
1656                OR
1657                ( ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP' AND ATTR_GROUP_INT_NAME LIKE 'EGOINT#_GDSN%' ESCAPE '#' )
1658               )
1659           AND INVENTORY_ITEM_ID = i.INVENTORY_ITEM_ID
1660           AND ORGANIZATION_ID = i.ORGANIZATION_ID
1661           AND PROCESS_STATUS = 2;
1662 
1663         Debug_Msg('Marked Item as error in Interface table');
1664         IF l_msg_count > 0 AND l_return_status <> 'U' THEN
1665           FOR cnt IN 1..l_msg_count LOOP
1666             Debug_Msg('Error msg - '||cnt ||': '|| FND_MSG_PUB.Get(p_msg_index => cnt, p_encoded => 'F'));
1667             l_msg_text := FND_MSG_PUB.Get(p_msg_index => cnt, p_encoded => 'F');
1668             ERROR_HANDLER.Add_Error_Message
1669               (
1670                 p_message_text              => l_msg_text
1671                ,p_application_id            => 'EGO'
1672                ,p_message_type              => FND_API.G_RET_STS_ERROR
1673                ,p_row_identifier            => i.TRANSACTION_ID
1674                ,p_entity_id                 => p_entity_id
1675                ,p_table_name                => 'EGO_ITM_USR_ATTR_INTRFC'
1676                ,p_entity_code               => p_entity_code
1677                ,p_addto_fnd_stack           => p_add_errors_to_fnd_stack
1678               );
1679           END LOOP;
1680         ELSIF l_msg_count > 0 AND l_return_status = 'U' THEN
1681           Debug_Msg('Unexpected Error msg - '|| l_msg_data);
1682           l_msg_text := l_msg_data;
1683           ERROR_HANDLER.Add_Error_Message
1684             (
1685               p_message_text              => l_msg_text
1686              ,p_application_id            => 'EGO'
1687              ,p_message_type              => FND_API.G_RET_STS_ERROR
1688              ,p_row_identifier            => i.TRANSACTION_ID
1689              ,p_entity_id                 => p_entity_id
1690              ,p_table_name                => 'EGO_ITM_USR_ATTR_INTRFC'
1691              ,p_entity_code               => p_entity_code
1692              ,p_addto_fnd_stack           => p_add_errors_to_fnd_stack
1693             );
1694         END IF; -- IF l_msg_count
1695       ELSE
1696         Debug_Msg('Calling Validation API');
1697         l_return_status := NULL;
1698         x_return_status := l_return_status;
1699         l_msg_count := 0;
1700         l_msg_data := NULL;
1701         G_CALLED_FROM_INTF := 'Y';
1702         G_DATA_SET_ID := p_data_set_id;
1703 
1704         Validate_Attributes(
1705                i.INVENTORY_ITEM_ID -- p_inventory_item_id
1706               ,i.ORGANIZATION_ID   -- p_organization_id
1707               ,l_single_row_attrs  -- p_single_row_attrs_rec
1708               ,l_multi_row_attrs   -- p_multi_row_attrs_tbl
1709               ,NULL                -- p_extra_attrs_rec
1710               ,l_return_status     -- x_return_status
1711               ,l_msg_count         -- x_msg_count
1712               ,l_msg_data          -- x_msg_data
1713               );
1714 
1715         x_return_status := l_return_status;
1716         Debug_Msg('Finished Validation l_return_status, l_msg_count='||l_return_status||','||l_msg_count);
1717 
1718         IF l_return_status <> 'S' THEN
1719           UPDATE EGO_ITM_USR_ATTR_INTRFC
1720           SET PROCESS_STATUS = 3
1721           WHERE DATA_SET_ID = p_data_set_id
1722             AND (( ATTR_GROUP_TYPE IN ('EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS') )
1723                  OR
1724                  ( ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP' AND ATTR_GROUP_INT_NAME LIKE 'EGOINT#_GDSN%' ESCAPE '#' )
1725                 )
1726             AND INVENTORY_ITEM_ID = i.INVENTORY_ITEM_ID
1727             AND ORGANIZATION_ID = i.ORGANIZATION_ID
1728             AND PROCESS_STATUS = 2;
1729 
1730           Debug_Msg('Marked Item as error in Interface table');
1731 
1732           IF l_msg_count > 0 AND l_return_status <> 'U' THEN
1733             FOR cnt IN 1..l_msg_count LOOP
1734               Debug_Msg('Error msg - '||cnt ||': '|| FND_MSG_PUB.Get(p_msg_index => cnt, p_encoded => 'F'));
1735               l_msg_text := FND_MSG_PUB.Get(p_msg_index => cnt, p_encoded => 'F');
1736               ERROR_HANDLER.Add_Error_Message
1737                 (
1738                   p_message_text              => l_msg_text
1739                  ,p_application_id            => 'EGO'
1740                  ,p_message_type              => FND_API.G_RET_STS_ERROR
1741                  ,p_row_identifier            => i.TRANSACTION_ID
1742                  ,p_entity_id                 => p_entity_id
1743                  ,p_table_name                => 'EGO_ITM_USR_ATTR_INTRFC'
1744                  ,p_entity_code               => p_entity_code
1745                  ,p_addto_fnd_stack           => p_add_errors_to_fnd_stack
1746                 );
1747             END LOOP;
1748           ELSIF l_msg_count > 0 AND l_return_status = 'U' THEN
1749             Debug_Msg('Unexpected Error msg - '|| l_msg_data);
1750             l_msg_text := l_msg_data;
1751             ERROR_HANDLER.Add_Error_Message
1752               (
1753                 p_message_text              => l_msg_text
1754                ,p_application_id            => 'EGO'
1755                ,p_message_type              => FND_API.G_RET_STS_ERROR
1756                ,p_row_identifier            => i.TRANSACTION_ID
1757                ,p_entity_id                 => p_entity_id
1758                ,p_table_name                => 'EGO_ITM_USR_ATTR_INTRFC'
1759                ,p_entity_code               => p_entity_code
1760                ,p_addto_fnd_stack           => p_add_errors_to_fnd_stack
1761               );
1762           END IF; -- IF l_msg_count
1763         END IF; -- IF l_return_status <> 'S
1764       END IF; -- END IF l_return_status <> 'S' THEN
1765     END LOOP; -- end loop intf_rows
1766     Debug_Msg('Finished Validate_Intf_Rows');
1767   END Validate_Intf_Rows;
1768 
1769 
1770 
1771   /*
1772    ** This procedure validates the data passed in for UCCnet attributes
1773    */
1774   PROCEDURE Validate_Attributes (
1775               p_inventory_item_id    IN  NUMBER
1776              ,p_organization_id      IN  NUMBER
1777              ,p_singe_row_attrs_rec  IN  EGO_ITEM_PUB.UCCNET_ATTRS_SINGL_ROW_REC_TYP
1778              ,p_multi_row_attrs_tbl  IN  EGO_ITEM_PUB.UCCNET_ATTRS_MULTI_ROW_TBL_TYP
1779              ,p_extra_attrs_rec      IN  EGO_ITEM_PUB.UCCnet_Extra_Attrs_Rec_Typ
1780              ,x_return_status        OUT NOCOPY VARCHAR2
1781              ,x_msg_count            OUT NOCOPY NUMBER
1782              ,x_msg_data             OUT NOCOPY VARCHAR2
1783              )
1784   IS
1785     CURSOR c_prod_single_row_values IS
1786       SELECT
1787          msib.TRADE_ITEM_DESCRIPTOR
1788         ,gtn.BRAND_OWNER_GLN
1789         ,gtn.BRAND_OWNER_NAME
1790         ,gtn.EANUCC_CODE
1791         ,gtn.EANUCC_TYPE
1792         ,gtn.CATALOG_PRICE
1793         ,gtn.EFFECTIVE_START_DATE
1794         ,gtn.EFFECTIVE_END_DATE
1795         ,gtn.SUGGESTED_RETAIL_PRICE
1796         ,gtn.START_AVAILABILITY_DATE_TIME
1797         ,gtn.END_AVAILABILITY_DATE_TIME
1798         ,gtn.ORDER_QUANTITY_MAX
1799         ,gtn.ORDER_QUANTITY_MIN
1800         -- non-edtable at non-leaf
1801         ,gtn.ISSN_NUMBER
1802         ,gtn.ISBN_NUMBER
1803         ,gtn.PERCENT_OF_ALCOHOL_BY_VOL
1804         ,gtn.FAT_PERCENT_IN_DRY_MATTER
1805         ,gtn.GENERIC_INGREDIENT_STRGTH
1806         ,gtn.INGREDIENT_STRENGTH
1807         ,gtn.DEL_TO_DIST_CNTR_TEMP_MIN
1808         ,gtn.UOM_DEL_TO_DIST_CNTR_TEMP_MIN
1809         ,gtn.DEL_TO_DIST_CNTR_TEMP_MAX
1810         ,gtn.UOM_DEL_TO_DIST_CNTR_TEMP_MAX
1811         ,gtn.DELIVERY_TO_MRKT_TEMP_MIN
1812         ,gtn.UOM_DELIVERY_TO_MRKT_TEMP_MIN
1813         ,gtn.DELIVERY_TO_MRKT_TEMP_MAX
1814         ,gtn.UOM_DELIVERY_TO_MRKT_TEMP_MAX
1815         ,gtn.STORAGE_HANDLING_TEMP_MIN
1816         ,gtn.UOM_STORAGE_HANDLING_TEMP_MIN
1817         ,gtn.STORAGE_HANDLING_TEMP_MAX
1818         ,gtn.UOM_STORAGE_HANDLING_TEMP_MAX
1819         ,gtn.IS_PACK_MARKED_WITH_GREEN_DOT
1820         ,gtn.IS_PACK_MARKED_WITH_INGRED
1821         ,gtn.IS_INGREDIENT_IRRADIATED
1822         ,gtn.IS_RAW_MATERIAL_IRRADIATED
1823         ,gtn.IS_TRADE_ITEM_GENETICALLY_MOD
1824         ,gtn.IS_TRADE_ITEM_IRRADIATED
1825         ,gtn.SUB_BRAND
1826         ,gtn.TRADE_ITEM_COUPON
1827         ,gtn.TRADE_ITEM_FORM_DESCRIPTION
1828         ,gtn.HAS_BATCH_NUMBER
1829         ,gtn.IS_NON_SOLD_TRADE_RET_FLAG
1830         ,gtn.IS_TRADE_ITEM_MAR_REC_FLAG
1831         ,gtn.IS_PACK_MARKED_WITH_EXP_DATE
1832         ,gtn.FUNCTIONAL_NAME
1833         ,gtn.DIAMETER
1834         ,gtn.DRAINED_WEIGHT
1835         ,gtn.PEG_HORIZONTAL
1836         ,gtn.PEG_VERTICAL
1837         ,gtn.GENERIC_INGREDIENT
1838         ,gtn.UOM_NET_CONTENT
1839       FROM EGO_ITEM_GTN_ATTRS_VL gtn, MTL_SYSTEM_ITEMS_B msib
1840       WHERE gtn.INVENTORY_ITEM_ID(+) = msib.INVENTORY_ITEM_ID
1841         AND gtn.ORGANIZATION_ID(+) = msib.ORGANIZATION_ID
1842         AND msib.INVENTORY_ITEM_ID = p_inventory_item_id
1843         AND msib.ORGANIZATION_ID = p_organization_id;
1844 
1845     CURSOR c_prod_multi_row_values IS
1846       SELECT
1847          COLOR_CODE_LIST_AGENCY
1848         ,COLOR_CODE_VALUE
1849         ,MANUFACTURER_GLN
1850         ,MANUFACTURER_ID
1851         ,SIZE_CODE_LIST_AGENCY
1852         ,SIZE_CODE_VALUE
1853         ,CLASS_OF_DANGEROUS_CODE
1854         ,DANGEROUS_GOODS_MARGIN_NUMBER
1855         ,DANGEROUS_GOODS_HAZARDOUS_CODE
1856         ,DANGEROUS_GOODS_PACK_GROUP
1857         ,DANGEROUS_GOODS_REG_CODE
1858         ,DANGEROUS_GOODS_SHIPPING_NAME
1859         ,UNITED_NATIONS_DANG_GOODS_NO
1860         ,FLASH_POINT_TEMP
1861         ,DANGEROUS_GOODS_TECHNICAL_NAME
1862         ,COUNTRY_OF_ORIGIN
1863         ,HANDLING_INSTRUCTIONS_CODE
1864       FROM EGO_ITM_GTN_MUL_ATTRS_VL
1865       WHERE INVENTORY_ITEM_ID = p_inventory_item_id
1866         AND ORGANIZATION_ID = p_organization_id;
1867 
1868     l_prod_single_row_attrs       c_prod_single_row_values%ROWTYPE;
1869 
1870     l_trade_item_desc             MTL_SYSTEM_ITEMS_B.TRADE_ITEM_DESCRIPTOR%TYPE;
1871     l_gdsn_outbound_flag          MTL_SYSTEM_ITEMS_B.GDSN_OUTBOUND_ENABLED_FLAG%TYPE;
1872     l_is_used_in_packaging_hrchy  VARCHAR2(10);
1873     l_err_msg                     VARCHAR2(1000);
1874     l_err_code                    NUMBER;
1875     l_bgln_valid                  BOOLEAN;
1876     l_brand_owner_gln             NUMBER;
1877     l_eanucc_code_num             NUMBER;
1878     l_eanucc_type                 VARCHAR2(100);
1879     l_eanucc_code                 VARCHAR2(100);
1880     l_eanucc_valid                BOOLEAN;
1881     l_eanucc_code_length          NUMBER;
1882     l_eanucc_code_req_length      NUMBER;
1883     l_item_id                     NUMBER;
1884     l_item_number                 VARCHAR2(1000);
1885     l_attr1_disp                  VARCHAR2(1000);
1886     l_attr2_disp                  VARCHAR2(1000);
1887     l_gtid_disp                   VARCHAR2(1000);
1888     l_mgln_valid                  BOOLEAN;
1889     l_index                       BINARY_INTEGER;
1890     l_index1                      BINARY_INTEGER;
1891     l_is_primary_uom_base         VARCHAR2(2);
1892     l_unit_weight                 NUMBER;
1893     l_continue                    BOOLEAN;
1894     l_check_non_upd_attrs         BOOLEAN;
1895     l_validate_prod_rows          BOOLEAN;
1896     l_min_date_value              DATE;
1897     l_max_date_value              DATE;
1898     l_min_num_value               NUMBER;
1899     l_max_num_value               NUMBER;
1900     l_min_char_value              VARCHAR2(4000);
1901     l_max_char_value              VARCHAR2(4000);
1902 
1903 
1904     EANUCC_CODE_UG          CONSTANT VARCHAR2(2) := 'UG';
1905     EANUCC_CODE_UH          CONSTANT VARCHAR2(2) := 'UH';
1906     EANUCC_CODE_EN          CONSTANT VARCHAR2(2) := 'EN';
1907     EANUCC_CODE_UK          CONSTANT VARCHAR2(2) := 'UK';
1908     EANUCC_CODE_UP          CONSTANT VARCHAR2(2) := 'UP';
1909     EANUCC_CODE_UI          CONSTANT VARCHAR2(2) := 'UI';
1910     EANUCC_CODE_UD          CONSTANT VARCHAR2(2) := 'UD';
1911     EANUCC_CODE_UE          CONSTANT VARCHAR2(2) := 'UE';
1912     EANUCC_CODE_UA          CONSTANT VARCHAR2(2) := 'UA';
1913     EANUCC_CODE_UN          CONSTANT VARCHAR2(2) := 'UN';
1914     EANUCC_CODE_U2          CONSTANT VARCHAR2(2) := 'U2';
1915 
1916     EANUCC_CODE_UG_LENGTH   CONSTANT NUMBER := 12;
1917     EANUCC_CODE_UH_LENGTH   CONSTANT NUMBER := 14;
1918     EANUCC_CODE_EN_LENGTH   CONSTANT NUMBER := 13;
1919     EANUCC_CODE_UK_LENGTH   CONSTANT NUMBER := 14;
1920     EANUCC_CODE_UP_LENGTH   CONSTANT NUMBER := 12;
1921     EANUCC_CODE_UI_LENGTH   CONSTANT NUMBER := 11;
1922     EANUCC_CODE_UD_LENGTH   CONSTANT NUMBER := 12;
1923     EANUCC_CODE_UE_LENGTH   CONSTANT NUMBER := 12;
1924     EANUCC_CODE_UA_LENGTH   CONSTANT NUMBER := 12;
1925     EANUCC_CODE_UN_LENGTH   CONSTANT NUMBER := 12;
1926     EANUCC_CODE_U2_LENGTH   CONSTANT NUMBER := 13;
1927 
1928     -- variables to hold production values
1929     l_dngr_goods_margin_number       EGO_ITM_GTN_MUL_ATTRS_VL.DANGEROUS_GOODS_MARGIN_NUMBER%TYPE;
1930     l_dngr_goods_hazardous_code      EGO_ITM_GTN_MUL_ATTRS_VL.DANGEROUS_GOODS_HAZARDOUS_CODE%TYPE;
1931     l_dngr_goods_pack_group          EGO_ITM_GTN_MUL_ATTRS_VL.DANGEROUS_GOODS_PACK_GROUP%TYPE;
1932     l_dngr_goods_reg_code            EGO_ITM_GTN_MUL_ATTRS_VL.DANGEROUS_GOODS_REG_CODE%TYPE;
1933     l_dngr_goods_shipping_name       EGO_ITM_GTN_MUL_ATTRS_VL.DANGEROUS_GOODS_SHIPPING_NAME%TYPE;
1934     l_united_nations_dang_goods_no   EGO_ITM_GTN_MUL_ATTRS_VL.UNITED_NATIONS_DANG_GOODS_NO%TYPE;
1935     l_flash_point_temp               EGO_ITM_GTN_MUL_ATTRS_VL.FLASH_POINT_TEMP%TYPE;
1936     l_uom_flash_point_temp           EGO_ITM_GTN_MUL_ATTRS_VL.UOM_FLASH_POINT_TEMP%TYPE;
1937     l_dngr_goods_technical_name      EGO_ITM_GTN_MUL_ATTRS_VL.DANGEROUS_GOODS_TECHNICAL_NAME%TYPE;
1938     l_manufacturer_id                EGO_ITM_GTN_MUL_ATTRS_VL.MANUFACTURER_ID%TYPE;
1939     l_manufacturer_gln               EGO_ITM_GTN_MUL_ATTRS_VL.MANUFACTURER_GLN%TYPE;
1940   BEGIN
1941     l_continue := true;
1942     Debug_Msg('Starting GDSN Attributes Validations for Item,Org='||p_inventory_item_id||','||p_organization_id);
1943     Debug_Msg('Initializing the fnd error stack');
1944     -- initializing the fnd error stack
1945     FND_MSG_PUB.Initialize;
1946 
1947     Debug_Msg('Checking if Item is GDSN Enabled item');
1948 
1949     BEGIN
1950       SELECT GDSN_OUTBOUND_ENABLED_FLAG INTO l_gdsn_outbound_flag
1951       FROM MTL_SYSTEM_ITEMS_B
1952       WHERE INVENTORY_ITEM_ID = p_inventory_item_id
1953         AND ORGANIZATION_ID = p_organization_id;
1954     EXCEPTION WHEN NO_DATA_FOUND THEN
1955       IF NVL(G_CALLED_FROM_INTF, 'N') = 'Y' THEN
1956         BEGIN
1957           SELECT GDSN_OUTBOUND_ENABLED_FLAG INTO l_gdsn_outbound_flag
1958           FROM MTL_SYSTEM_ITEMS_INTERFACE msii
1959           WHERE SET_PROCESS_ID    = G_DATA_SET_ID
1960             AND PROCESS_FLAG      = 1
1961             AND INVENTORY_ITEM_ID = p_inventory_item_id
1962             AND ORGANIZATION_ID   = p_organization_id
1963             AND ROWNUM = 1;
1964         EXCEPTION WHEN NO_DATA_FOUND THEN
1965           l_gdsn_outbound_flag := 'N';
1966         END;
1967       ELSE
1968         l_gdsn_outbound_flag := 'N';
1969       END IF;
1970     END;
1971 
1972     IF NVL(l_gdsn_outbound_flag, 'N') = 'N' THEN
1973       Debug_Msg('Item is not a GDSN Enabled item, so returning');
1974       FND_MESSAGE.Set_Name('EGO', 'EGO_NOT_UCCNET_ITEM');
1975       FND_MSG_PUB.ADD;
1976       FND_MSG_PUB.Count_And_Get('T', x_msg_count, x_msg_data);
1977       x_return_status := 'E';
1978       RETURN;
1979     END IF;
1980 
1981     Debug_Msg('Item is GDSN Enabled item');
1982 
1983     -- fetching the single row attribute values from production table into local collection
1984     OPEN c_prod_single_row_values;
1985     FETCH c_prod_single_row_values INTO l_prod_single_row_attrs;
1986     CLOSE c_prod_single_row_values;
1987 
1988     IF NVL(G_CALLED_FROM_INTF, 'N') = 'Y' THEN
1989       BEGIN
1990         SELECT TRADE_ITEM_DESCRIPTOR INTO l_trade_item_desc
1991         FROM MTL_SYSTEM_ITEMS_INTERFACE msii
1992         WHERE SET_PROCESS_ID    = G_DATA_SET_ID
1993           AND PROCESS_FLAG      = 1
1994           AND INVENTORY_ITEM_ID = p_inventory_item_id
1995           AND ORGANIZATION_ID   = p_organization_id
1996           AND ROWNUM = 1;
1997       EXCEPTION WHEN NO_DATA_FOUND THEN
1998         l_trade_item_desc := NULL;
1999       END;
2000     ELSE
2001       l_trade_item_desc := NULL;
2002     END IF;
2003 
2004     l_trade_item_desc := NVL(l_trade_item_desc, l_prod_single_row_attrs.TRADE_ITEM_DESCRIPTOR);
2005     Debug_Msg('Trade Item Descriptor is '||l_trade_item_desc);
2006     Debug_Msg('Starting Validations');
2007     -- validation starts here
2008     -- 1. if trade item descriptor is not present then error
2009     Debug_Msg('1. if trade item descriptor is not present then error');
2010     l_gtid_disp := Get_Attribute_Display_Name('EGO_MASTER_ITEMS', 'TRADE_ITEM_DESCRIPTOR');
2011     IF l_trade_item_desc IS NULL
2012     THEN
2013       FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_MISSING');
2014       FND_MESSAGE.Set_Token('ATTR_NAME', l_gtid_disp);
2015       FND_MSG_PUB.ADD;
2016       l_continue := FALSE;
2017     END IF;
2018 
2019     -- 2. If trade item descriptor is not BASE_UNIT_OR_EACH then check for attributes (which are non editable)
2020     --    that they should be null
2021     Debug_Msg('2. If trade item descriptor is not BASE_UNIT_OR_EACH then check for attributes (which are non editable) that they should be null');
2022     Debug_Msg('GTID is - '||l_trade_item_desc);
2023 
2024     IF l_continue AND l_trade_item_desc <> 'BASE_UNIT_OR_EACH'
2025     THEN
2026       IF NVL(p_singe_row_attrs_rec.ISSN_NUMBER, G_MISS_CHAR) <> G_MISS_CHAR
2027           OR (NVL(p_singe_row_attrs_rec.ISSN_NUMBER, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2028               l_prod_single_row_attrs.ISSN_NUMBER IS NOT NULL AND l_validate_prod_rows)
2029       THEN
2030         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ISSN_NUMBER');
2031         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2032         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2033         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2034         FND_MSG_PUB.ADD;
2035       END IF;
2036 
2037       IF NVL(p_singe_row_attrs_rec.ISBN_NUMBER, G_MISS_CHAR) <> G_MISS_CHAR
2038           OR (NVL(p_singe_row_attrs_rec.ISBN_NUMBER, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2039               l_prod_single_row_attrs.ISBN_NUMBER IS NOT NULL AND l_validate_prod_rows)
2040       THEN
2041         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ISBN_NUMBER');
2042         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2043         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2044         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2045         FND_MSG_PUB.ADD;
2046       END IF;
2047 
2048       IF NVL(p_singe_row_attrs_rec.PERCENT_OF_ALCOHOL_BY_VOL, G_MISS_NUM) <> G_MISS_NUM
2049           OR (NVL(p_singe_row_attrs_rec.PERCENT_OF_ALCOHOL_BY_VOL, -1) <> G_MISS_NUM AND
2050               l_prod_single_row_attrs.PERCENT_OF_ALCOHOL_BY_VOL IS NOT NULL AND l_validate_prod_rows)
2051       THEN
2052         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PERCENT_OF_ALCOHOL_BY_VOL');
2053         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2054         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2055         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2056         FND_MSG_PUB.ADD;
2057       END IF;
2058 
2059       IF NVL(p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MAX, G_MISS_NUM) <> G_MISS_NUM
2060           OR (NVL(p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MAX, -1) <> G_MISS_NUM AND
2061               l_prod_single_row_attrs.STORAGE_HANDLING_TEMP_MAX IS NOT NULL AND l_validate_prod_rows)
2062       THEN
2063         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MAX');
2064         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2065         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2066         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2067         FND_MSG_PUB.ADD;
2068       END IF;
2069 
2070       IF NVL(p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MAX, G_MISS_CHAR) <> G_MISS_CHAR
2071           OR (NVL(p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MAX, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2072               l_prod_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX IS NOT NULL AND l_validate_prod_rows)
2073       THEN
2074         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MAX');
2075         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2076         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2077         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2078         FND_MSG_PUB.ADD;
2079       END IF;
2080 
2081       IF NVL(p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MIN, G_MISS_NUM) <> G_MISS_NUM
2082           OR (NVL(p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MIN, -1) <> G_MISS_NUM AND
2083               l_prod_single_row_attrs.STORAGE_HANDLING_TEMP_MIN IS NOT NULL AND l_validate_prod_rows)
2084       THEN
2085         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MIN');
2086         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2087         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2088         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2089         FND_MSG_PUB.ADD;
2090       END IF;
2091 
2092       IF NVL(p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MIN, G_MISS_CHAR) <> G_MISS_CHAR
2093           OR (NVL(p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MIN, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2094               l_prod_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN IS NOT NULL AND l_validate_prod_rows)
2095       THEN
2096         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MIN');
2097         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2098         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2099         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2100         FND_MSG_PUB.ADD;
2101       END IF;
2102 
2103       IF NVL(p_singe_row_attrs_rec.FAT_PERCENT_IN_DRY_MATTER, G_MISS_NUM) <> G_MISS_NUM
2104           OR (NVL(p_singe_row_attrs_rec.FAT_PERCENT_IN_DRY_MATTER, -1) <> G_MISS_NUM AND
2105               l_prod_single_row_attrs.FAT_PERCENT_IN_DRY_MATTER IS NOT NULL AND l_validate_prod_rows)
2106       THEN
2107         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'FAT_PERCENT_IN_DRY_MATTER');
2108         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2109         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2110         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2111         FND_MSG_PUB.ADD;
2112       END IF;
2113 
2114       IF NVL(p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MAX, G_MISS_NUM) <> G_MISS_NUM
2115           OR (NVL(p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MAX, -1) <> G_MISS_NUM AND
2116               l_prod_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MAX IS NOT NULL AND l_validate_prod_rows)
2117       THEN
2118         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MAX');
2119         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2120         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2121         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2122         FND_MSG_PUB.ADD;
2123       END IF;
2124 
2125       IF NVL(p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MAX, G_MISS_CHAR) <> G_MISS_CHAR
2126           OR (NVL(p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MAX, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2127               l_prod_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX IS NOT NULL AND l_validate_prod_rows)
2128       THEN
2129         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'UOM_DELIVERY_TO_MRKT_TEMP_MAX');
2130         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2131         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2132         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2133         FND_MSG_PUB.ADD;
2134       END IF;
2135 
2136       IF NVL(p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MIN, G_MISS_NUM) <> G_MISS_NUM
2137           OR (NVL(p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MIN, -1) <> G_MISS_NUM AND
2138               l_prod_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MIN IS NOT NULL AND l_validate_prod_rows)
2139       THEN
2140         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MIN');
2141         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2142         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2143         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2144         FND_MSG_PUB.ADD;
2145       END IF;
2146 
2147       IF NVL(p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MIN, G_MISS_CHAR) <> G_MISS_CHAR
2148           OR (NVL(p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MIN, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2149               l_prod_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN IS NOT NULL AND l_validate_prod_rows)
2150       THEN
2151         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MIN');
2152         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2153         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2154         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2155         FND_MSG_PUB.ADD;
2156       END IF;
2157 
2158       IF NVL(p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MAX, G_MISS_NUM) <> G_MISS_NUM
2159           OR (NVL(p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MAX, -1) <> G_MISS_NUM AND
2160               l_prod_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MAX IS NOT NULL AND l_validate_prod_rows)
2161       THEN
2162         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MAX');
2163         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2164         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2165         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2166         FND_MSG_PUB.ADD;
2167       END IF;
2168 
2169       IF NVL(p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MAX, G_MISS_CHAR) <> G_MISS_CHAR
2170           OR (NVL(p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MAX, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2171               l_prod_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX IS NOT NULL AND l_validate_prod_rows)
2172       THEN
2173         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MAX');
2174         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2175         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2176         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2177         FND_MSG_PUB.ADD;
2178       END IF;
2179 
2180       IF NVL(p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MIN, G_MISS_NUM) <> G_MISS_NUM
2181           OR (NVL(p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MIN, -1) <> G_MISS_NUM AND
2182               l_prod_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MIN IS NOT NULL AND l_validate_prod_rows)
2183       THEN
2184         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MIN');
2185         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2186         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2187         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2188         FND_MSG_PUB.ADD;
2189       END IF;
2190 
2191       IF NVL(p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MIN, G_MISS_CHAR) <> G_MISS_CHAR
2192           OR (NVL(p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MIN, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2193               l_prod_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN IS NOT NULL AND l_validate_prod_rows)
2194       THEN
2195         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MIN');
2196         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2197         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2198         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2199         FND_MSG_PUB.ADD;
2200       END IF;
2201 
2202       IF NVL(p_singe_row_attrs_rec.IS_PACK_MARKED_WITH_GREEN_DOT, G_MISS_CHAR) <> G_MISS_CHAR
2203           OR (NVL(p_singe_row_attrs_rec.IS_PACK_MARKED_WITH_GREEN_DOT, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2204               l_prod_single_row_attrs.IS_PACK_MARKED_WITH_GREEN_DOT IS NOT NULL AND l_validate_prod_rows)
2205       THEN
2206         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_PACK_MARKED_WITH_GREEN_DOT');
2207         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2208         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2209         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2210         FND_MSG_PUB.ADD;
2211       END IF;
2212 
2213       IF NVL(p_singe_row_attrs_rec.IS_PACK_MARKED_WITH_INGRED, G_MISS_CHAR) <> G_MISS_CHAR
2214           OR (NVL(p_singe_row_attrs_rec.IS_PACK_MARKED_WITH_INGRED, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2215               l_prod_single_row_attrs.IS_PACK_MARKED_WITH_INGRED IS NOT NULL AND l_validate_prod_rows)
2216       THEN
2217         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_PACK_MARKED_WITH_INGRED');
2218         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2219         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2220         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2221         FND_MSG_PUB.ADD;
2222       END IF;
2223 
2224       IF NVL(p_singe_row_attrs_rec.IS_INGREDIENT_IRRADIATED, G_MISS_CHAR) <> G_MISS_CHAR
2225           OR (NVL(p_singe_row_attrs_rec.IS_INGREDIENT_IRRADIATED, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2226               l_prod_single_row_attrs.IS_INGREDIENT_IRRADIATED IS NOT NULL AND l_validate_prod_rows)
2227       THEN
2228         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_INGREDIENT_IRRADIATED');
2229         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2230         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2231         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2232         FND_MSG_PUB.ADD;
2233       END IF;
2234 
2235       IF NVL(p_singe_row_attrs_rec.IS_RAW_MATERIAL_IRRADIATED, G_MISS_CHAR) <> G_MISS_CHAR
2236           OR (NVL(p_singe_row_attrs_rec.IS_RAW_MATERIAL_IRRADIATED, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2237               l_prod_single_row_attrs.IS_RAW_MATERIAL_IRRADIATED IS NOT NULL AND l_validate_prod_rows)
2238       THEN
2239         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_RAW_MATERIAL_IRRADIATED');
2240         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2241         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2242         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2243         FND_MSG_PUB.ADD;
2244       END IF;
2245 
2246       IF NVL(p_singe_row_attrs_rec.IS_TRADE_ITEM_GENETICALLY_MOD, G_MISS_CHAR) <> G_MISS_CHAR
2247           OR (NVL(p_singe_row_attrs_rec.IS_TRADE_ITEM_GENETICALLY_MOD, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2248               l_prod_single_row_attrs.IS_TRADE_ITEM_GENETICALLY_MOD IS NOT NULL AND l_validate_prod_rows)
2249       THEN
2250         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_GENETICALLY_MOD');
2251         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2252         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2253         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2254         FND_MSG_PUB.ADD;
2255       END IF;
2256 
2257       IF NVL(p_singe_row_attrs_rec.IS_TRADE_ITEM_IRRADIATED, G_MISS_CHAR) <> G_MISS_CHAR
2258           OR (NVL(p_singe_row_attrs_rec.IS_TRADE_ITEM_IRRADIATED, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2259               l_prod_single_row_attrs.IS_TRADE_ITEM_IRRADIATED IS NOT NULL AND l_validate_prod_rows)
2260       THEN
2261         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_IRRADIATED');
2262         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2263         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2264         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2265         FND_MSG_PUB.ADD;
2266       END IF;
2267 
2268       IF NVL(p_singe_row_attrs_rec.SUB_BRAND, G_MISS_CHAR) <> G_MISS_CHAR
2269           OR (NVL(p_singe_row_attrs_rec.SUB_BRAND, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2270               l_prod_single_row_attrs.SUB_BRAND IS NOT NULL AND l_validate_prod_rows)
2271       THEN
2272         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'SUB_BRAND');
2273         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2274         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2275         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2276         FND_MSG_PUB.ADD;
2277       END IF;
2278 
2279       IF NVL(p_singe_row_attrs_rec.TRADE_ITEM_COUPON, G_MISS_NUM) <> G_MISS_NUM
2280           OR (NVL(p_singe_row_attrs_rec.TRADE_ITEM_COUPON, -1) <> G_MISS_NUM AND
2281               l_prod_single_row_attrs.TRADE_ITEM_COUPON IS NOT NULL AND l_validate_prod_rows)
2282       THEN
2283         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'TRADE_ITEM_COUPON');
2284         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2285         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2286         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2287         FND_MSG_PUB.ADD;
2288       END IF;
2289 
2290       IF NVL(p_singe_row_attrs_rec.TRADE_ITEM_FORM_DESCRIPTION, G_MISS_CHAR) <> G_MISS_CHAR
2291           OR (NVL(p_singe_row_attrs_rec.TRADE_ITEM_FORM_DESCRIPTION, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2292               l_prod_single_row_attrs.TRADE_ITEM_FORM_DESCRIPTION IS NOT NULL AND l_validate_prod_rows)
2293       THEN
2294         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'TRADE_ITEM_FORM_DESCRIPTION');
2295         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2296         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2297         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2298         FND_MSG_PUB.ADD;
2299       END IF;
2300 
2301       IF NVL(p_singe_row_attrs_rec.HAS_BATCH_NUMBER, G_MISS_CHAR) <> G_MISS_CHAR
2302           OR (NVL(p_singe_row_attrs_rec.HAS_BATCH_NUMBER, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2303               l_prod_single_row_attrs.HAS_BATCH_NUMBER IS NOT NULL AND l_validate_prod_rows)
2304       THEN
2305         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'HAS_BATCH_NUMBER');
2306         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2307         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2308         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2309         FND_MSG_PUB.ADD;
2310       END IF;
2311 
2312       IF NVL(p_singe_row_attrs_rec.IS_NON_SOLD_TRADE_RET_FLAG, G_MISS_CHAR) <> G_MISS_CHAR
2313           OR (NVL(p_singe_row_attrs_rec.IS_NON_SOLD_TRADE_RET_FLAG, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2314               l_prod_single_row_attrs.IS_NON_SOLD_TRADE_RET_FLAG IS NOT NULL AND l_validate_prod_rows)
2315       THEN
2316         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_NON_SOLD_TRADE_RET_FLAG');
2317         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2318         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2319         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2320         FND_MSG_PUB.ADD;
2321       END IF;
2322 
2323       IF NVL(p_singe_row_attrs_rec.IS_TRADE_ITEM_MAR_REC_FLAG, G_MISS_CHAR) <> G_MISS_CHAR
2324           OR (NVL(p_singe_row_attrs_rec.IS_TRADE_ITEM_MAR_REC_FLAG, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2325               l_prod_single_row_attrs.IS_TRADE_ITEM_MAR_REC_FLAG IS NOT NULL AND l_validate_prod_rows)
2326       THEN
2327         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_TRADE_ITEM_MAR_REC_FLAG');
2328         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2329         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2330         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2331         FND_MSG_PUB.ADD;
2332       END IF;
2333 
2334       IF NVL(p_singe_row_attrs_rec.IS_PACK_MARKED_WITH_EXP_DATE, G_MISS_CHAR) <> G_MISS_CHAR
2335           OR (NVL(p_singe_row_attrs_rec.IS_PACK_MARKED_WITH_EXP_DATE, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2336               l_prod_single_row_attrs.IS_PACK_MARKED_WITH_EXP_DATE IS NOT NULL AND l_validate_prod_rows)
2337       THEN
2338         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'IS_PACK_MARKED_WITH_EXP_DATE');
2339         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2340         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2341         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2342         FND_MSG_PUB.ADD;
2343       END IF;
2344 
2345       IF NVL(p_singe_row_attrs_rec.FUNCTIONAL_NAME, G_MISS_CHAR) <> G_MISS_CHAR
2346           OR (NVL(p_singe_row_attrs_rec.FUNCTIONAL_NAME, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2347               l_prod_single_row_attrs.FUNCTIONAL_NAME IS NOT NULL AND l_validate_prod_rows)
2348       THEN
2349         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'FUNCTIONAL_NAME');
2350         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2351         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2352         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2353         FND_MSG_PUB.ADD;
2354       END IF;
2355 
2356       IF NVL(p_singe_row_attrs_rec.BRAND_OWNER_GLN, G_MISS_CHAR) <> G_MISS_CHAR
2357           OR (NVL(p_singe_row_attrs_rec.BRAND_OWNER_GLN, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2358               l_prod_single_row_attrs.BRAND_OWNER_GLN IS NOT NULL AND l_validate_prod_rows)
2359       THEN
2360         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_OWNER_GLN');
2361         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2362         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2363         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2364         FND_MSG_PUB.ADD;
2365       END IF;
2366 
2367       IF NVL(p_singe_row_attrs_rec.BRAND_OWNER_NAME, G_MISS_CHAR) <> G_MISS_CHAR
2368           OR (NVL(p_singe_row_attrs_rec.BRAND_OWNER_NAME, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2369               l_prod_single_row_attrs.BRAND_OWNER_NAME IS NOT NULL AND l_validate_prod_rows)
2370       THEN
2371         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_OWNER_NAME');
2372         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2373         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2374         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2375         FND_MSG_PUB.ADD;
2376       END IF;
2377 
2378       IF NVL(p_singe_row_attrs_rec.DIAMETER, G_MISS_NUM) <> G_MISS_NUM
2379           OR (NVL(p_singe_row_attrs_rec.DIAMETER, -1) <> G_MISS_NUM AND
2380               l_prod_single_row_attrs.DIAMETER IS NOT NULL AND l_validate_prod_rows)
2381       THEN
2382         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DIAMETER');
2383         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2384         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2385         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2386         FND_MSG_PUB.ADD;
2387       END IF;
2388 
2389       IF NVL(p_singe_row_attrs_rec.DRAINED_WEIGHT, G_MISS_NUM) <> G_MISS_NUM
2390           OR (NVL(p_singe_row_attrs_rec.DRAINED_WEIGHT, -1) <> G_MISS_NUM AND
2391               l_prod_single_row_attrs.DRAINED_WEIGHT IS NOT NULL AND l_validate_prod_rows)
2392       THEN
2393         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DRAINED_WEIGHT');
2394         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2395         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2396         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2397         FND_MSG_PUB.ADD;
2398       END IF;
2399 
2400       IF NVL(p_singe_row_attrs_rec.PEG_HORIZONTAL, G_MISS_NUM) <> G_MISS_NUM
2401           OR (NVL(p_singe_row_attrs_rec.PEG_HORIZONTAL, -1) <> G_MISS_NUM AND
2402               l_prod_single_row_attrs.PEG_HORIZONTAL IS NOT NULL AND l_validate_prod_rows)
2403       THEN
2404         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PEG_HORIZONTAL');
2405         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2406         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2407         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2408         FND_MSG_PUB.ADD;
2409       END IF;
2410 
2411       IF NVL(p_singe_row_attrs_rec.PEG_VERTICAL, G_MISS_NUM) <> G_MISS_NUM
2412           OR (NVL(p_singe_row_attrs_rec.PEG_VERTICAL, -1) <> G_MISS_NUM AND
2413               l_prod_single_row_attrs.PEG_VERTICAL IS NOT NULL AND l_validate_prod_rows)
2414       THEN
2415         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PEG_VERTICAL');
2416         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2417         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2418         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2419         FND_MSG_PUB.ADD;
2420       END IF;
2421 
2422       IF NVL(p_singe_row_attrs_rec.GENERIC_INGREDIENT, G_MISS_CHAR) <> G_MISS_CHAR
2423           OR (NVL(p_singe_row_attrs_rec.GENERIC_INGREDIENT, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2424               l_prod_single_row_attrs.GENERIC_INGREDIENT IS NOT NULL AND l_validate_prod_rows)
2425       THEN
2426         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'GENERIC_INGREDIENT');
2427         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2428         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2429         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2430         FND_MSG_PUB.ADD;
2431       END IF;
2432 
2433       IF NVL(p_singe_row_attrs_rec.GENERIC_INGREDIENT_STRGTH, G_MISS_NUM) <> G_MISS_NUM
2434           OR (NVL(p_singe_row_attrs_rec.GENERIC_INGREDIENT_STRGTH, -1) <> G_MISS_NUM AND
2435               l_prod_single_row_attrs.GENERIC_INGREDIENT_STRGTH IS NOT NULL AND l_validate_prod_rows)
2436       THEN
2437         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'GENERIC_INGREDIENT_STRGTH');
2438         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2439         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2440         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2441         FND_MSG_PUB.ADD;
2442       END IF;
2443 
2444       IF NVL(p_singe_row_attrs_rec.INGREDIENT_STRENGTH, G_MISS_CHAR) <> G_MISS_CHAR
2445           OR (NVL(p_singe_row_attrs_rec.INGREDIENT_STRENGTH, G_MISS_CHAR||'@') <> G_MISS_CHAR AND
2446               l_prod_single_row_attrs.INGREDIENT_STRENGTH IS NOT NULL AND l_validate_prod_rows)
2447       THEN
2448         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'INGREDIENT_STRENGTH');
2449         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2450         FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2451         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2452         FND_MSG_PUB.ADD;
2453       END IF;
2454 
2455       -- validating for multi row attributes
2456       -- validating the passed parameters
2457       IF p_multi_row_attrs_tbl.FIRST IS NOT NULL THEN
2458         l_index := p_multi_row_attrs_tbl.FIRST;
2459         WHILE l_index IS NOT NULL LOOP
2460           IF p_multi_row_attrs_tbl(l_index).TRANSACTION_TYPE <> 'DELETE' THEN
2461             IF NVL(p_multi_row_attrs_tbl(l_index).SIZE_CODE_VALUE, G_MISS_CHAR) <> G_MISS_CHAR THEN
2462               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'SIZE_CODE_VALUE');
2463               FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2464               FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2465               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2466               FND_MSG_PUB.ADD;
2467             END IF;
2468 
2469             IF NVL(p_multi_row_attrs_tbl(l_index).SIZE_CODE_LIST_AGENCY, G_MISS_CHAR) <> G_MISS_CHAR THEN
2470               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'SIZE_CODE_LIST_AGENCY');
2471               FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2472               FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2473               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2474               FND_MSG_PUB.ADD;
2475             END IF;
2476 
2477             IF NVL(p_multi_row_attrs_tbl(l_index).COUNTRY_OF_ORIGIN, G_MISS_CHAR) <> G_MISS_CHAR THEN
2478               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'COUNTRY_OF_ORIGIN');
2479               FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2480               FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2481               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2482               FND_MSG_PUB.ADD;
2483             END IF;
2484 
2485             IF NVL(p_multi_row_attrs_tbl(l_index).MANUFACTURER_ID, G_MISS_NUM) <> G_MISS_NUM THEN
2486               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'MANUFACTURER_ID');
2487               FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2488               FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2489               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2490               FND_MSG_PUB.ADD;
2491             END IF;
2492 
2493             IF NVL(p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN, G_MISS_CHAR) <> G_MISS_CHAR THEN
2494               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'MANUFACTURER_GLN');
2495               FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2496               FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2497               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2498               FND_MSG_PUB.ADD;
2499             END IF;
2500 
2501             IF NVL(p_multi_row_attrs_tbl(l_index).HANDLING_INSTRUCTIONS_CODE, G_MISS_CHAR) <> G_MISS_CHAR THEN
2502               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'HANDLING_INSTRUCTIONS_CODE');
2503               FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2504               FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2505               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2506               FND_MSG_PUB.ADD;
2507             END IF;
2508 
2509             IF NVL(p_multi_row_attrs_tbl(l_index).COLOR_CODE_LIST_AGENCY, G_MISS_CHAR) <> G_MISS_CHAR THEN
2510               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'COLOR_CODE_LIST_AGENCY');
2511               FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2512               FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2513               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2514               FND_MSG_PUB.ADD;
2515             END IF;
2516 
2517             IF NVL(p_multi_row_attrs_tbl(l_index).COLOR_CODE_VALUE, G_MISS_CHAR) <> G_MISS_CHAR THEN
2518               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'COLOR_CODE_VALUE');
2519               FND_MESSAGE.Set_Name('EGO', 'EGO_ATTR_NOT_EDITABLE');
2520               FND_MESSAGE.Set_Token('GTID', l_gtid_disp);
2521               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2522               FND_MSG_PUB.ADD;
2523             END IF;
2524           END IF; -- if i.transaction_type <> 'DELETE'
2525           l_index := p_multi_row_attrs_tbl.NEXT(l_index);
2526         END LOOP; -- end loop while
2527       END IF; -- if p_multi_row_attrs_tbl.FIRST is not null
2528     END IF; -- 2. end
2529 
2530     IF l_continue THEN
2531       -- 3. BrandOwnerGLN must be a number
2532       Debug_Msg('3. BrandOwnerGLN must be a number');
2533       l_bgln_valid := TRUE;
2534       IF NVL(p_singe_row_attrs_rec.BRAND_OWNER_GLN, G_MISS_CHAR) <> G_MISS_CHAR THEN
2535         BEGIN
2536           l_brand_owner_gln := TO_NUMBER(p_singe_row_attrs_rec.BRAND_OWNER_GLN);
2537         EXCEPTION WHEN VALUE_ERROR THEN
2538           l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_OWNER_GLN');
2539           FND_MESSAGE.Set_Name('EGO', 'EGO_BGLN_NOT_NUMBER');
2540           FND_MESSAGE.Set_Token('BGLN', l_attr1_disp);
2541           FND_MSG_PUB.ADD;
2542           l_bgln_valid := FALSE;
2543         END;
2544       END IF; -- 3.
2545 
2546       -- 4. Length of BrandOwnerGLN must be 13
2547       Debug_Msg('4. Length of BrandOwnerGLN must be 13');
2548       IF NVL(p_singe_row_attrs_rec.BRAND_OWNER_GLN, G_MISS_CHAR) <> G_MISS_CHAR
2549           AND LENGTH(p_singe_row_attrs_rec.BRAND_OWNER_GLN) <> 13 THEN
2550         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_OWNER_GLN');
2551         FND_MESSAGE.Set_Name('EGO', 'EGO_BGLN_INCORRECT_LENGTH');
2552         FND_MESSAGE.Set_Token('BGLN', l_attr1_disp);
2553         FND_MSG_PUB.ADD;
2554         l_bgln_valid := FALSE;
2555       END IF; -- 4.
2556 
2557       -- 5. BrandOwnerGLN must have a valid check digit
2558       Debug_Msg('5. BrandOwnerGLN must have a valid check digit');
2559       IF l_bgln_valid AND NVL(p_singe_row_attrs_rec.BRAND_OWNER_GLN , G_MISS_CHAR) <> G_MISS_CHAR
2560           AND Is_Check_Digit_Invalid(p_singe_row_attrs_rec.BRAND_OWNER_GLN) THEN
2561         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_OWNER_GLN');
2562         FND_MESSAGE.Set_Name('EGO', 'EGO_BGLN_CHECKDIGIT_INVALID');
2563         FND_MESSAGE.Set_Token('BGLN', l_attr1_disp);
2564         FND_MSG_PUB.ADD;
2565       END IF; -- 5.
2566 
2567       -- 6. BrandOwnerGLN and BrandOwnerName must co-exist
2568       Debug_Msg('6. BrandOwnerGLN and BrandOwnerName must co-exist');
2569       IF (NVL(p_singe_row_attrs_rec.BRAND_OWNER_GLN, l_prod_single_row_attrs.BRAND_OWNER_GLN) IS NOT NULL
2570            AND NVL(p_singe_row_attrs_rec.BRAND_OWNER_GLN, G_MISS_CHAR) <> G_MISS_CHAR
2571            AND (NVL(p_singe_row_attrs_rec.BRAND_OWNER_NAME, l_prod_single_row_attrs.BRAND_OWNER_NAME) IS NULL
2572                 OR p_singe_row_attrs_rec.BRAND_OWNER_NAME = G_MISS_CHAR) )
2573          OR
2574          (NVL(p_singe_row_attrs_rec.BRAND_OWNER_NAME, l_prod_single_row_attrs.BRAND_OWNER_NAME) IS NOT NULL
2575            AND NVL(p_singe_row_attrs_rec.BRAND_OWNER_NAME, G_MISS_CHAR) <> G_MISS_CHAR
2576            AND (NVL(p_singe_row_attrs_rec.BRAND_OWNER_GLN, l_prod_single_row_attrs.BRAND_OWNER_GLN) IS NULL
2577                 OR p_singe_row_attrs_rec.BRAND_OWNER_GLN = G_MISS_CHAR) ) THEN
2578         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_OWNER_GLN');
2579         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'BRAND_OWNER_NAME');
2580         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTRS_MUST_COEXIST');
2581         FND_MESSAGE.Set_Token('ATTR1', l_attr1_disp);
2582         FND_MESSAGE.Set_Token('ATTR2', l_attr2_disp);
2583         FND_MSG_PUB.ADD;
2584       END IF; -- 6.
2585 
2586       -- 7. EanuccCode and EanuccType must co-exist
2587       Debug_Msg('7. EanuccCode and EanuccType must co-exist');
2588       IF (NVL(p_singe_row_attrs_rec.EANUCC_CODE, l_prod_single_row_attrs.EANUCC_CODE) IS NOT NULL
2589            AND NVL(p_singe_row_attrs_rec.EANUCC_CODE, G_MISS_CHAR) <> G_MISS_CHAR
2590            AND (NVL(p_singe_row_attrs_rec.EANUCC_TYPE, l_prod_single_row_attrs.EANUCC_TYPE) IS NULL
2591                 OR p_singe_row_attrs_rec.EANUCC_TYPE = G_MISS_CHAR) )
2592          OR
2593          (NVL(p_singe_row_attrs_rec.EANUCC_TYPE, l_prod_single_row_attrs.EANUCC_TYPE) IS NOT NULL
2594            AND NVL(p_singe_row_attrs_rec.EANUCC_TYPE, G_MISS_CHAR) <> G_MISS_CHAR
2595            AND (NVL(p_singe_row_attrs_rec.EANUCC_CODE, l_prod_single_row_attrs.EANUCC_CODE) IS NULL
2596                 OR p_singe_row_attrs_rec.EANUCC_CODE = G_MISS_CHAR) ) THEN
2597         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_CODE');
2598         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_TYPE');
2599         FND_MESSAGE.Set_Name('EGO', 'EGO_ATTRS_MUST_COEXIST');
2600         FND_MESSAGE.Set_Token('ATTR1', l_attr1_disp);
2601         FND_MESSAGE.Set_Token('ATTR2', l_attr2_disp);
2602         FND_MSG_PUB.ADD;
2603       END IF; -- 7.
2604 
2605       -- 8. EanuccCode must be number
2606       Debug_Msg('8. EanuccCode must be number');
2607       l_eanucc_valid := TRUE;
2608       IF NVL(p_singe_row_attrs_rec.EANUCC_CODE, G_MISS_CHAR) <> G_MISS_CHAR THEN
2609         BEGIN
2610           l_eanucc_code_num := TO_NUMBER(p_singe_row_attrs_rec.EANUCC_CODE);
2611         EXCEPTION WHEN VALUE_ERROR THEN
2612           l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_CODE');
2613           FND_MESSAGE.Set_Name('EGO', 'EGO_EANUCC_CODE_INVALID_NUMBER');
2614           FND_MESSAGE.Set_Token('EANUCC_CODE', l_attr1_disp);
2615           FND_MSG_PUB.ADD;
2616           l_eanucc_valid := FALSE;
2617         END;
2618       END IF; -- 8.
2619 
2620       -- 9. Length of EanuccCode must be equal to that specified by EanuccType
2621       Debug_Msg('9. Length of EanuccCode must be equal to that specified by EanuccType');
2622       l_eanucc_code := NVL(p_singe_row_attrs_rec.EANUCC_CODE, l_prod_single_row_attrs.EANUCC_CODE);
2623       l_eanucc_type := NVL(p_singe_row_attrs_rec.EANUCC_TYPE, l_prod_single_row_attrs.EANUCC_TYPE);
2624       IF l_eanucc_code = G_MISS_CHAR THEN
2625         l_eanucc_code := NULL;
2626       END IF;
2627       IF l_eanucc_type = G_MISS_CHAR THEN
2628         l_eanucc_type := NULL;
2629       END IF;
2630 
2631       IF l_eanucc_code IS NOT NULL AND l_eanucc_type IS NOT NULL THEN
2632         l_eanucc_code_length := LENGTH(l_eanucc_code);
2633         IF (EANUCC_CODE_UG = l_eanucc_type AND EANUCC_CODE_UG_LENGTH <> l_eanucc_code_length) OR
2634              (EANUCC_CODE_UH = l_eanucc_type AND EANUCC_CODE_UH_LENGTH <> l_eanucc_code_length) OR
2635              (EANUCC_CODE_EN = l_eanucc_type AND EANUCC_CODE_EN_LENGTH <> l_eanucc_code_length) OR
2636              (EANUCC_CODE_UK = l_eanucc_type AND EANUCC_CODE_UK_LENGTH <> l_eanucc_code_length) OR
2637              (EANUCC_CODE_UP = l_eanucc_type AND EANUCC_CODE_UP_LENGTH <> l_eanucc_code_length) OR
2638              (EANUCC_CODE_UI = l_eanucc_type AND EANUCC_CODE_UI_LENGTH <> l_eanucc_code_length) OR
2639              (EANUCC_CODE_UD = l_eanucc_type AND EANUCC_CODE_UD_LENGTH <> l_eanucc_code_length) OR
2640              (EANUCC_CODE_UE = l_eanucc_type AND EANUCC_CODE_UE_LENGTH <> l_eanucc_code_length) OR
2641              (EANUCC_CODE_UA = l_eanucc_type AND EANUCC_CODE_UA_LENGTH <> l_eanucc_code_length) OR
2642              (EANUCC_CODE_UN = l_eanucc_type AND EANUCC_CODE_UN_LENGTH <> l_eanucc_code_length) OR
2643              (EANUCC_CODE_U2 = l_eanucc_type AND EANUCC_CODE_U2_LENGTH <> l_eanucc_code_length) THEN
2644           l_eanucc_code_req_length := 0;
2645           IF EANUCC_CODE_UG = l_eanucc_type THEN
2646             l_eanucc_code_req_length := EANUCC_CODE_UG_LENGTH;
2647           ELSIF EANUCC_CODE_UH = l_eanucc_type THEN
2648             l_eanucc_code_req_length := EANUCC_CODE_UH_LENGTH;
2649           ELSIF EANUCC_CODE_EN = l_eanucc_type THEN
2650             l_eanucc_code_req_length := EANUCC_CODE_EN_LENGTH;
2651           ELSIF EANUCC_CODE_UK = l_eanucc_type THEN
2652             l_eanucc_code_req_length := EANUCC_CODE_UK_LENGTH;
2653           ELSIF EANUCC_CODE_UP = l_eanucc_type THEN
2654             l_eanucc_code_req_length := EANUCC_CODE_UP_LENGTH;
2655           ELSIF EANUCC_CODE_UI = l_eanucc_type THEN
2656             l_eanucc_code_req_length := EANUCC_CODE_UI_LENGTH;
2657           ELSIF EANUCC_CODE_UD = l_eanucc_type THEN
2658             l_eanucc_code_req_length := EANUCC_CODE_UD_LENGTH;
2659           ELSIF EANUCC_CODE_UE = l_eanucc_type THEN
2660             l_eanucc_code_req_length := EANUCC_CODE_UE_LENGTH;
2661           ELSIF EANUCC_CODE_UA = l_eanucc_type THEN
2662             l_eanucc_code_req_length := EANUCC_CODE_UA_LENGTH;
2663           ELSIF EANUCC_CODE_UN = l_eanucc_type THEN
2664             l_eanucc_code_req_length := EANUCC_CODE_UN_LENGTH;
2665           ELSIF EANUCC_CODE_U2 = l_eanucc_type THEN
2666             l_eanucc_code_req_length := EANUCC_CODE_U2_LENGTH;
2667           END IF;
2668 
2669           l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_CODE');
2670           l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_TYPE');
2671           FND_MESSAGE.Set_Name('EGO', 'EGO_EANUCC_CODE_INVALID_LENGTH');
2672           FND_MESSAGE.Set_Token('EANUCC_CODE', l_attr1_disp);
2673           FND_MESSAGE.Set_Token('LENGTH', l_eanucc_code_req_length);
2674           FND_MESSAGE.Set_Token('EANUCC_TYPE', l_attr2_disp);
2675           FND_MSG_PUB.ADD;
2676           l_eanucc_valid := FALSE;
2677         END IF;
2678       END IF; -- 9.
2679 
2680       -- 10. EanuccCode can not start with 098 or 099
2681       Debug_Msg('10. EanuccCode can not start with 098 or 099');
2682       IF SUBSTR(p_singe_row_attrs_rec.EANUCC_CODE, 1, 3) IN ('098', '099') THEN
2683         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_CODE');
2684         FND_MESSAGE.Set_Name('EGO', 'EGO_EANUCC_1TO3DIGIT_INVALID');
2685         FND_MESSAGE.Set_Token('EANUCC_CODE', l_attr1_disp);
2686         FND_MSG_PUB.ADD;
2687         l_eanucc_valid := FALSE;
2688       END IF; -- 10.
2689 
2690       -- 11. EanuccCode must have a valid check digit
2691       Debug_Msg('11. EanuccCode must have a valid check digit');
2692       IF l_eanucc_valid AND NVL(p_singe_row_attrs_rec.EANUCC_CODE, G_MISS_CHAR) <> G_MISS_CHAR
2693            AND Is_Check_Digit_Invalid(p_singe_row_attrs_rec.EANUCC_CODE) THEN
2694         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_CODE');
2695         FND_MESSAGE.Set_Name('EGO', 'EGO_EANUCC_CHECKDIGIT_INVALID');
2696         FND_MESSAGE.Set_Token('EANUCC_CODE', l_attr1_disp);
2697         FND_MSG_PUB.ADD;
2698         l_eanucc_valid := FALSE;
2699       END IF; -- 11.
2700 
2701       -- 12. EanuccCode and EanuccType must be unique
2702       Debug_Msg('12. EanuccCode and EanuccType must be unique');
2703       IF l_eanucc_valid AND l_eanucc_code IS NOT NULL AND l_eanucc_type IS NOT NULL THEN
2704         BEGIN
2705           SELECT MSIK.INVENTORY_ITEM_ID, CONCATENATED_SEGMENTS INTO l_item_id, l_item_number
2706           FROM MTL_SYSTEM_ITEMS_KFV MSIK, EGO_ITEM_GTN_ATTRS_B EGA
2707           WHERE EGA.INVENTORY_ITEM_ID = MSIK.INVENTORY_ITEM_ID
2708             AND EGA.ORGANIZATION_ID = MSIK.ORGANIZATION_ID
2709             AND EGA.EANUCC_CODE = l_eanucc_code
2710             AND EGA.EANUCC_TYPE = l_eanucc_type
2711             AND ROWNUM = 1;
2712 
2713           IF (l_item_id <> p_inventory_item_id) THEN
2714             l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_CODE');
2715             l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_TYPE');
2716             FND_MESSAGE.Set_Name('EGO', 'EGO_EANUCC_NOT_UNIQUE');
2717             FND_MESSAGE.Set_Token('EANUCC_CODE', l_attr1_disp);
2718             FND_MESSAGE.Set_Token('EANUCC_TYPE', l_attr2_disp);
2719             FND_MESSAGE.Set_Token('ITEM', l_item_number);
2720             FND_MSG_PUB.ADD;
2721           END IF;
2722         EXCEPTION WHEN NO_DATA_FOUND THEN
2723           IF NVL(G_CALLED_FROM_INTF, 'N') = 'Y' THEN
2724             BEGIN
2725               SELECT INVENTORY_ITEM_ID, ITEM_NUMBER INTO l_item_id, l_item_number
2726               FROM
2727               (
2728                 SELECT
2729                   INVENTORY_ITEM_ID,
2730                   ITEM_NUMBER,
2731                   MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'Eanucc_Code', ATTR_VALUE_STR, null), null)) AS EANUCC_CODE,
2732                   MAX(DECODE(ATTR_GROUP_INT_NAME, 'Trade_Item_Description', DECODE(ATTR_INT_NAME, 'EANUCC_Type', ATTR_VALUE_STR, null), null)) AS EANUCC_TYPE
2733                 FROM EGO_ITM_USR_ATTR_INTRFC
2734                 WHERE ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_ATTRS'
2735                   AND DATA_SET_ID = G_DATA_SET_ID
2736                   AND PROCESS_STATUS = 2
2737                   AND INVENTORY_ITEM_ID <> p_inventory_item_id
2738                 GROUP BY INVENTORY_ITEM_ID, ITEM_NUMBER
2739               )
2740               WHERE EANUCC_CODE = l_eanucc_code
2741                 AND EANUCC_TYPE = l_eanucc_type
2742                 AND ROWNUM = 1;
2743 
2744               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_CODE');
2745               l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EANUCC_TYPE');
2746               FND_MESSAGE.Set_Name('EGO', 'EGO_EANUCC_NOT_UNIQUE');
2747               FND_MESSAGE.Set_Token('EANUCC_CODE', l_attr1_disp);
2748               FND_MESSAGE.Set_Token('EANUCC_TYPE', l_attr2_disp);
2749               FND_MESSAGE.Set_Token('ITEM', l_item_number);
2750               FND_MSG_PUB.ADD;
2751             EXCEPTION WHEN NO_DATA_FOUND THEN
2752               NULL;
2753             END;
2754           END IF; --IF NVL(G_CALLED_FROM_INTF, 'N') = 'Y' THEN
2755         END;
2756       END IF; -- 12.
2757 
2758       -- 13. If Catalog Price is specified, Effective Start Date has to be specified
2759       Debug_Msg('13. If Catalog Price is specified, Effective Start Date has to be specified');
2760       IF (NVL(p_singe_row_attrs_rec.CATALOG_PRICE, l_prod_single_row_attrs.CATALOG_PRICE) IS NOT NULL
2761            AND NVL(p_singe_row_attrs_rec.CATALOG_PRICE, G_MISS_NUM) <> G_MISS_NUM
2762            AND (NVL(p_singe_row_attrs_rec.EFFECTIVE_START_DATE, l_prod_single_row_attrs.EFFECTIVE_START_DATE) IS NULL
2763                 OR p_singe_row_attrs_rec.EFFECTIVE_START_DATE = G_MISS_DATE) ) THEN
2764         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EFFECTIVE_START_DATE');
2765         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'CATALOG_PRICE');
2766         FND_MESSAGE.Set_Name('EGO', 'EGO_EFFSTARTDT_REQD');
2767         FND_MESSAGE.Set_Token('EFF_ST_DT', l_attr1_disp);
2768         FND_MESSAGE.Set_Token('RETAIL_CATALOG', l_attr2_disp);
2769         FND_MSG_PUB.ADD;
2770       END IF; -- 13.
2771 
2772       -- 14. If Suggested Retail Price is specified, Effective Start Date has to be specified
2773       Debug_Msg('14. If Suggested Retail Price is specified, Effective Start Date has to be specified');
2774       IF (NVL(p_singe_row_attrs_rec.SUGGESTED_RETAIL_PRICE, l_prod_single_row_attrs.SUGGESTED_RETAIL_PRICE) IS NOT NULL
2775            AND NVL(p_singe_row_attrs_rec.SUGGESTED_RETAIL_PRICE, G_MISS_NUM) <> G_MISS_NUM
2776            AND (NVL(p_singe_row_attrs_rec.EFFECTIVE_START_DATE, l_prod_single_row_attrs.EFFECTIVE_START_DATE) IS NULL
2777                 OR p_singe_row_attrs_rec.EFFECTIVE_START_DATE = G_MISS_DATE) ) THEN
2778         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EFFECTIVE_START_DATE');
2779         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'SUGGESTED_RETAIL_PRICE');
2780         FND_MESSAGE.Set_Name('EGO', 'EGO_EFFSTARTDT_REQD');
2781         FND_MESSAGE.Set_Token('EFF_ST_DT', l_attr1_disp);
2782         FND_MESSAGE.Set_Token('RETAIL_CATALOG', l_attr2_disp);
2783         FND_MSG_PUB.ADD;
2784       END IF; -- 14.
2785 
2786       -- validating multi row attributes
2787       IF p_multi_row_attrs_tbl.FIRST IS NOT NULL THEN
2788         l_index := p_multi_row_attrs_tbl.FIRST;
2789         WHILE l_index IS NOT NULL LOOP
2790           -- 15. If any of the Hazardous attributes are populated then all are required
2791           Debug_Msg('15. If any of the Hazardous attributes are populated then all are required');
2792           l_dngr_goods_margin_number := NULL;
2793           l_dngr_goods_hazardous_code := NULL;
2794           l_dngr_goods_pack_group := NULL;
2795           l_dngr_goods_reg_code := NULL;
2796           l_dngr_goods_shipping_name := NULL;
2797           l_united_nations_dang_goods_no := NULL;
2798           l_flash_point_temp := NULL;
2799           l_uom_flash_point_temp := NULL;
2800           l_dngr_goods_technical_name := NULL;
2801           IF p_multi_row_attrs_tbl(l_index).CLASS_OF_DANGEROUS_CODE <> G_MISS_CHAR AND
2802              p_multi_row_attrs_tbl(l_index).CLASS_OF_DANGEROUS_CODE IS NOT NULL
2803           THEN
2804             BEGIN
2805               SELECT
2806                 DANGEROUS_GOODS_MARGIN_NUMBER,
2807                 DANGEROUS_GOODS_HAZARDOUS_CODE,
2808                 DANGEROUS_GOODS_PACK_GROUP,
2809                 DANGEROUS_GOODS_REG_CODE,
2810                 DANGEROUS_GOODS_SHIPPING_NAME,
2811                 UNITED_NATIONS_DANG_GOODS_NO,
2812                 FLASH_POINT_TEMP,
2813                 UOM_FLASH_POINT_TEMP,
2814                 DANGEROUS_GOODS_TECHNICAL_NAME
2815               INTO
2816                 l_dngr_goods_margin_number,
2817                 l_dngr_goods_hazardous_code,
2818                 l_dngr_goods_pack_group,
2819                 l_dngr_goods_reg_code,
2820                 l_dngr_goods_shipping_name,
2821                 l_united_nations_dang_goods_no,
2822                 l_flash_point_temp,
2823                 l_uom_flash_point_temp,
2824                 l_dngr_goods_technical_name
2825               FROM EGO_ITM_GTN_MUL_ATTRS_VL eigmav, EGO_ATTR_GROUPS_V eagv
2826               WHERE eigmav.INVENTORY_ITEM_ID = p_inventory_item_id
2827                 AND eigmav.ORGANIZATION_ID = p_organization_id
2828                 AND eigmav.ATTR_GROUP_ID = eagv.ATTR_GROUP_ID
2829                 AND eagv.ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_MULTI_ATTRS'
2830                 AND eagv.APPLICATION_ID = EGO_APPL_ID
2831                 AND eagv.ATTR_GROUP_NAME = 'Hazardous_Information'
2832                 AND eigmav.CLASS_OF_DANGEROUS_CODE = p_multi_row_attrs_tbl(l_index).CLASS_OF_DANGEROUS_CODE;
2833             EXCEPTION WHEN NO_DATA_FOUND THEN
2834               NULL;
2835             END;
2836           END IF; --IF p_multi_row_attrs_tbl(l_index).CLASS_OF_DANGEROUS_CO
2837 
2838           IF (NVL(p_multi_row_attrs_tbl(l_index).CLASS_OF_DANGEROUS_CODE, G_MISS_CHAR) <> G_MISS_CHAR OR
2839               NVL(p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_MARGIN_NUMBER, G_MISS_CHAR) <> G_MISS_CHAR OR
2840               NVL(p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE, G_MISS_CHAR) <> G_MISS_CHAR OR
2841               NVL(p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_PACK_GROUP, G_MISS_CHAR) <> G_MISS_CHAR OR
2842               NVL(p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_REG_CODE, G_MISS_CHAR) <> G_MISS_CHAR OR
2843               NVL(p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_SHIPPING_NAME, G_MISS_CHAR) <> G_MISS_CHAR OR
2844               NVL(p_multi_row_attrs_tbl(l_index).UNITED_NATIONS_DANG_GOODS_NO, G_MISS_NUM) <> G_MISS_NUM OR
2845               NVL(p_multi_row_attrs_tbl(l_index).FLASH_POINT_TEMP, G_MISS_NUM) <> G_MISS_NUM OR
2846               NVL(p_multi_row_attrs_tbl(l_index).UOM_FLASH_POINT_TEMP, G_MISS_CHAR) <> G_MISS_CHAR OR
2847               NVL(p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_TECHNICAL_NAME, G_MISS_CHAR) <> G_MISS_CHAR
2848              )
2849           THEN
2850             IF NVL(p_multi_row_attrs_tbl(l_index).CLASS_OF_DANGEROUS_CODE, G_MISS_CHAR) = G_MISS_CHAR THEN
2851               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'CLASS_OF_DANGEROUS_CODE');
2852               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2853               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2854               FND_MSG_PUB.ADD;
2855             END IF;
2856 
2857             IF (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_MARGIN_NUMBER = G_MISS_CHAR OR
2858                 (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_MARGIN_NUMBER IS NULL
2859                  AND l_dngr_goods_margin_number IS NULL)
2860                )
2861             THEN
2862               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_MARGIN_NUMBER');
2863               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2864               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2865               FND_MSG_PUB.ADD;
2866             END IF;
2867 
2868             IF (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE = G_MISS_CHAR OR
2869                 (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE IS NULL
2870                  AND l_dngr_goods_hazardous_code IS NULL)
2871                )
2872             THEN
2873               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_HAZARDOUS_CODE');
2874               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2875               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2876               FND_MSG_PUB.ADD;
2877             END IF;
2878 
2879             IF (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_PACK_GROUP = G_MISS_CHAR OR
2880                 (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_PACK_GROUP IS NULL
2881                  AND l_dngr_goods_pack_group IS NULL)
2882                )
2883             THEN
2884               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_PACK_GROUP');
2885               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2886               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2887               FND_MSG_PUB.ADD;
2888             END IF;
2889 
2890             IF (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_REG_CODE = G_MISS_CHAR OR
2891                 (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_REG_CODE IS NULL
2892                  AND l_dngr_goods_reg_code IS NULL)
2893                )
2894             THEN
2895               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_REG_CODE');
2896               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2897               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2898               FND_MSG_PUB.ADD;
2899             END IF;
2900 
2901             IF (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_SHIPPING_NAME = G_MISS_CHAR OR
2902                 (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_SHIPPING_NAME IS NULL
2903                  AND l_dngr_goods_shipping_name IS NULL)
2904                )
2905             THEN
2906               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_SHIPPING_NAME');
2907               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2908               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2909               FND_MSG_PUB.ADD;
2910             END IF;
2911 
2912             IF (p_multi_row_attrs_tbl(l_index).UNITED_NATIONS_DANG_GOODS_NO = G_MISS_NUM OR
2913                 (p_multi_row_attrs_tbl(l_index).UNITED_NATIONS_DANG_GOODS_NO IS NULL
2914                  AND l_united_nations_dang_goods_no IS NULL)
2915                )
2916             THEN
2917               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'UNITED_NATIONS_DANG_GOODS_NO');
2918               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2919               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2920               FND_MSG_PUB.ADD;
2921             END IF;
2922 
2923             IF (p_multi_row_attrs_tbl(l_index).FLASH_POINT_TEMP = G_MISS_NUM OR
2924                 (p_multi_row_attrs_tbl(l_index).FLASH_POINT_TEMP IS NULL
2925                  AND l_flash_point_temp IS NULL)
2926                )
2927             THEN
2928               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'FLASH_POINT_TEMP');
2929               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2930               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2931               FND_MSG_PUB.ADD;
2932             END IF;
2933 
2934             IF (p_multi_row_attrs_tbl(l_index).UOM_FLASH_POINT_TEMP = G_MISS_CHAR OR
2935                 (p_multi_row_attrs_tbl(l_index).UOM_FLASH_POINT_TEMP IS NULL
2936                  AND l_uom_flash_point_temp IS NULL)
2937                )
2938             THEN
2939               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'UOM_FLASH_POINT_TEMP');
2940               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2941               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2942               FND_MSG_PUB.ADD;
2943             END IF;
2944 
2945             IF (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_TECHNICAL_NAME = G_MISS_CHAR OR
2946                 (p_multi_row_attrs_tbl(l_index).DANGEROUS_GOODS_TECHNICAL_NAME IS NULL
2947                  AND l_dngr_goods_technical_name IS NULL)
2948                )
2949             THEN
2950               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'DANGEROUS_GOODS_TECHNICAL_NAME');
2951               FND_MESSAGE.Set_Name('EGO', 'EGO_MISSING_HAZ_ATTR');
2952               FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
2953               FND_MSG_PUB.ADD;
2954             END IF;
2955           END IF; -- 15.
2956 
2957           -- 16. ColorCodeListAgency and ColorCodeValue must co-exist
2958           Debug_Msg('16. ColorCodeListAgency and ColorCodeValue must co-exist');
2959           IF (p_multi_row_attrs_tbl(l_index).COLOR_CODE_LIST_AGENCY IS NOT NULL
2960                AND NVL(p_multi_row_attrs_tbl(l_index).COLOR_CODE_LIST_AGENCY, G_MISS_CHAR) <> G_MISS_CHAR
2961                AND NVL(p_multi_row_attrs_tbl(l_index).COLOR_CODE_VALUE, G_MISS_CHAR) = G_MISS_CHAR)
2962              OR
2963              (p_multi_row_attrs_tbl(l_index).COLOR_CODE_VALUE IS NOT NULL
2964                AND NVL(p_multi_row_attrs_tbl(l_index).COLOR_CODE_VALUE, G_MISS_CHAR) <> G_MISS_CHAR
2965                AND NVL(p_multi_row_attrs_tbl(l_index).COLOR_CODE_LIST_AGENCY, G_MISS_CHAR) = G_MISS_CHAR) THEN
2966             l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'COLOR_CODE_LIST_AGENCY');
2967             l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'COLOR_CODE_VALUE');
2968             FND_MESSAGE.Set_Name('EGO', 'EGO_ATTRS_MUST_COEXIST');
2969             FND_MESSAGE.Set_Token('ATTR1', l_attr1_disp);
2970             FND_MESSAGE.Set_Token('ATTR2', l_attr2_disp);
2971             FND_MSG_PUB.ADD;
2972           END IF; -- 16.
2973 
2974           -- 17. Size Code value and Size Code List Agency must coexist
2975           Debug_Msg('17. Size Code value and Size Code List Agency must coexist');
2976           IF (p_multi_row_attrs_tbl(l_index).SIZE_CODE_LIST_AGENCY IS NOT NULL
2977                AND NVL(p_multi_row_attrs_tbl(l_index).SIZE_CODE_LIST_AGENCY, G_MISS_CHAR) <> G_MISS_CHAR
2978                AND NVL(p_multi_row_attrs_tbl(l_index).SIZE_CODE_VALUE, G_MISS_CHAR) = G_MISS_CHAR)
2979              OR
2980              (p_multi_row_attrs_tbl(l_index).SIZE_CODE_VALUE IS NOT NULL
2981                AND NVL(p_multi_row_attrs_tbl(l_index).SIZE_CODE_VALUE, G_MISS_CHAR) <> G_MISS_CHAR
2982                AND NVL(p_multi_row_attrs_tbl(l_index).SIZE_CODE_LIST_AGENCY, G_MISS_CHAR) = G_MISS_CHAR) THEN
2983             l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'SIZE_CODE_LIST_AGENCY');
2984             l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'SIZE_CODE_VALUE');
2985             FND_MESSAGE.Set_Name('EGO', 'EGO_ATTRS_MUST_COEXIST');
2986             FND_MESSAGE.Set_Token('ATTR1', l_attr1_disp);
2987             FND_MESSAGE.Set_Token('ATTR2', l_attr2_disp);
2988             FND_MSG_PUB.ADD;
2989           END IF; -- 17.
2990 
2991           -- 18. ManufacturerGLN and ManufacturerName must coexist
2992           Debug_Msg('18. ManufacturerGLN and ManufacturerName must coexist');
2993           l_manufacturer_id := NULL;
2994           IF p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN IS NOT NULL THEN
2995             BEGIN
2996               SELECT MANUFACTURER_ID INTO l_manufacturer_id
2997               FROM EGO_ITM_GTN_MUL_ATTRS_VL eigmav, EGO_ATTR_GROUPS_V eagv
2998               WHERE eigmav.INVENTORY_ITEM_ID = p_inventory_item_id
2999                 AND eigmav.ORGANIZATION_ID = p_organization_id
3000                 AND eigmav.ATTR_GROUP_ID = eagv.ATTR_GROUP_ID
3001                 AND eagv.ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_MULTI_ATTRS'
3002                 AND eagv.APPLICATION_ID = EGO_APPL_ID
3003                 AND eagv.ATTR_GROUP_NAME = 'Manufacturing_Info'
3004                 AND eigmav.MANUFACTURER_GLN = p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN;
3005             EXCEPTION WHEN NO_DATA_FOUND THEN
3006               NULL;
3007             END;
3008           END IF; --IF p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN IS NOT NULL THEN
3009 
3010           IF (p_multi_row_attrs_tbl(l_index).MANUFACTURER_ID IS NOT NULL
3011                AND NVL(p_multi_row_attrs_tbl(l_index).MANUFACTURER_ID, G_MISS_NUM) <> G_MISS_NUM
3012                AND NVL(p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN, G_MISS_CHAR) = G_MISS_CHAR
3013              )
3014              OR
3015              (p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN IS NOT NULL
3016                AND NVL(p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN, G_MISS_CHAR) <> G_MISS_CHAR
3017                AND (p_multi_row_attrs_tbl(l_index).MANUFACTURER_ID = G_MISS_NUM OR
3018                     (p_multi_row_attrs_tbl(l_index).MANUFACTURER_ID IS NULL AND l_manufacturer_id IS NULL)
3019                    )
3020              )
3021           THEN
3022             l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'MANUFACTURER_GLN');
3023             l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'MANUFACTURER_ID');
3024             FND_MESSAGE.Set_Name('EGO', 'EGO_ATTRS_MUST_COEXIST');
3025             FND_MESSAGE.Set_Token('ATTR1', l_attr1_disp);
3026             FND_MESSAGE.Set_Token('ATTR2', l_attr2_disp);
3027             FND_MSG_PUB.ADD;
3028           END IF; -- 18.
3029 
3030           -- 19. ManufacturerGLN must be a number
3031           Debug_Msg('19. ManufacturerGLN must be a number');
3032           l_mgln_valid := TRUE;
3033           IF NVL(p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN, G_MISS_CHAR) <> G_MISS_CHAR THEN
3034             BEGIN
3035               l_manufacturer_gln := TO_NUMBER(p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN);
3036             EXCEPTION WHEN VALUE_ERROR THEN
3037               l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'MANUFACTURER_GLN');
3038               FND_MESSAGE.Set_Name('EGO', 'EGO_MGLN_NOT_NUMBER');
3039               FND_MESSAGE.Set_Token('MGLN_VALUE', p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN);
3040               FND_MESSAGE.Set_Token('MGLN', l_attr1_disp);
3041               FND_MSG_PUB.ADD;
3042               l_mgln_valid := FALSE;
3043             END;
3044           END IF; -- 19.
3045 
3046           -- 20. Length of ManufacturerGLN must be 13
3047           Debug_Msg('20. Length of ManufacturerGLN must be 13');
3048           IF NVL(p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN, G_MISS_CHAR) <> G_MISS_CHAR
3049               AND LENGTH(p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN) <> 13 THEN
3050             l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'MANUFACTURER_GLN');
3051             FND_MESSAGE.Set_Name('EGO', 'EGO_MGLN_INCORRECT_LENGTH');
3052             FND_MESSAGE.Set_Token('MGLN_VALUE', p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN);
3053             FND_MESSAGE.Set_Token('MGLN', l_attr1_disp);
3054             FND_MSG_PUB.ADD;
3055             l_mgln_valid := FALSE;
3056           END IF; -- 20.
3057 
3058           -- 21. ManufacturerGLN must have a valid check digit
3059           Debug_Msg('21. ManufacturerGLN must have a valid check digit');
3060           IF l_mgln_valid AND NVL(p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN, G_MISS_CHAR) <> G_MISS_CHAR
3061                 AND Is_Check_Digit_Invalid(p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN) THEN
3062             l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_MULTI_ATTRS', 'MANUFACTURER_GLN');
3063             FND_MESSAGE.Set_Name('EGO', 'EGO_MGLN_CHECKDIGIT_INVALID');
3064             FND_MESSAGE.Set_Token('MGLN_VALUE', p_multi_row_attrs_tbl(l_index).MANUFACTURER_GLN);
3065             FND_MESSAGE.Set_Token('MGLN', l_attr1_disp);
3066             FND_MSG_PUB.ADD;
3067           END IF; -- 21.
3068           l_index := p_multi_row_attrs_tbl.NEXT(l_index);
3069         END LOOP; -- multi row validations
3070       END IF;
3071 
3072       -- 22. Uom is required for NET_CONTENT
3073       Debug_Msg('22. Uom is required for NET_CONTENT');
3074       IF NVL(p_singe_row_attrs_rec.NET_CONTENT, G_MISS_NUM) <> G_MISS_NUM
3075           AND (p_singe_row_attrs_rec.UOM_NET_CONTENT = G_MISS_CHAR
3076                OR (l_prod_single_row_attrs.UOM_NET_CONTENT IS NULL AND p_singe_row_attrs_rec.UOM_NET_CONTENT IS NULL)
3077               )
3078       THEN
3079         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'NET_CONTENT');
3080         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3081         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3082         FND_MSG_PUB.ADD;
3083       END IF; -- 22.
3084 
3085       -- 23. Uom is required for GROSS_WEIGHT
3086       Debug_Msg('23. Uom is required for GROSS_WEIGHT');
3087       IF NVL(p_singe_row_attrs_rec.GROSS_WEIGHT, G_MISS_NUM) <> G_MISS_NUM
3088           AND NVL(p_singe_row_attrs_rec.UOM_GROSS_WEIGHT, G_MISS_CHAR) = G_MISS_CHAR THEN
3089         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'GROSS_WEIGHT');
3090         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3091         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3092         FND_MSG_PUB.ADD;
3093       END IF; -- 23.
3094 
3095       -- 24. Uom is required for PEG_VERTICAL
3096       Debug_Msg('24. Uom is required for PEG_VERTICAL');
3097       IF NVL(p_singe_row_attrs_rec.PEG_VERTICAL, G_MISS_NUM) <> G_MISS_NUM
3098           AND NVL(p_singe_row_attrs_rec.UOM_PEG_VERTICAL, G_MISS_CHAR) = G_MISS_CHAR THEN
3099         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PEG_VERTICAL');
3100         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3101         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3102         FND_MSG_PUB.ADD;
3103       END IF; -- 24.
3104 
3105       -- 25. Uom is required for PEG_HORIZONTAL
3106       Debug_Msg('25. Uom is required for PEG_HORIZONTAL');
3107       IF NVL(p_singe_row_attrs_rec.PEG_HORIZONTAL, G_MISS_NUM) <> G_MISS_NUM
3108           AND NVL(p_singe_row_attrs_rec.UOM_PEG_HORIZONTAL, G_MISS_CHAR) = G_MISS_CHAR THEN
3109         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PEG_HORIZONTAL');
3110         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3111         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3112         FND_MSG_PUB.ADD;
3113       END IF; -- 25.
3114 
3115       -- 26. Uom is required for DRAINED_WEIGHT
3116       Debug_Msg('26. Uom is required for DRAINED_WEIGHT');
3117       IF NVL(p_singe_row_attrs_rec.DRAINED_WEIGHT, G_MISS_NUM) <> G_MISS_NUM
3118           AND NVL(p_singe_row_attrs_rec.UOM_DRAINED_WEIGHT, G_MISS_CHAR) = G_MISS_CHAR THEN
3119         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DRAINED_WEIGHT');
3120         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3121         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3122         FND_MSG_PUB.ADD;
3123       END IF; -- 26.
3124 
3125       -- 27. Uom is required for DIAMETER
3126       Debug_Msg('27. Uom is required for DIAMETER');
3127       IF NVL(p_singe_row_attrs_rec.DIAMETER, G_MISS_NUM) <> G_MISS_NUM
3128           AND NVL(p_singe_row_attrs_rec.UOM_DIAMETER, G_MISS_CHAR) = G_MISS_CHAR THEN
3129         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DIAMETER');
3130         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3131         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3132         FND_MSG_PUB.ADD;
3133       END IF; -- 27.
3134 
3135       -- 28. Uom is required for ORDERING_LEAD_TIME
3136       Debug_Msg('28. Uom is required for ORDERING_LEAD_TIME');
3137       IF NVL(p_singe_row_attrs_rec.ORDERING_LEAD_TIME, G_MISS_NUM) <> G_MISS_NUM
3138           AND NVL(p_singe_row_attrs_rec.UOM_ORDERING_LEAD_TIME, G_MISS_CHAR) = G_MISS_CHAR THEN
3139         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ORDERING_LEAD_TIME');
3140         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3141         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3142         FND_MSG_PUB.ADD;
3143       END IF; -- 28.
3144 
3145       -- 29. Uom is required for GENERIC_INGREDIENT_STRGTH
3146       Debug_Msg('29. Uom is required for GENERIC_INGREDIENT_STRGTH');
3147       IF NVL(p_singe_row_attrs_rec.GENERIC_INGREDIENT_STRGTH, G_MISS_NUM) <> G_MISS_NUM
3148           AND NVL(p_singe_row_attrs_rec.UOM_GENERIC_INGREDIENT_STRGTH, G_MISS_CHAR) = G_MISS_CHAR THEN
3149         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'GENERIC_INGREDIENT_STRGTH');
3150         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3151         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3152         FND_MSG_PUB.ADD;
3153       END IF; -- 29.
3154 
3155       -- 30. Uom is required for STACKING_WEIGHT_MAXIMUM
3156       Debug_Msg('30. Uom is required for STACKING_WEIGHT_MAXIMUM');
3157       IF NVL(p_singe_row_attrs_rec.STACKING_WEIGHT_MAXIMUM, G_MISS_NUM) <> G_MISS_NUM
3158           AND NVL(p_singe_row_attrs_rec.UOM_STACKING_WEIGHT_MAXIMUM, G_MISS_CHAR) = G_MISS_CHAR THEN
3159         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STACKING_WEIGHT_MAXIMUM');
3160         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3161         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3162         FND_MSG_PUB.ADD;
3163       END IF; -- 30.
3164 
3165       -- 31. Uom is required for PIECES_PER_TRADE_ITEM
3166       Debug_Msg('31. Uom is required for PIECES_PER_TRADE_ITEM');
3167       IF NVL(p_singe_row_attrs_rec.PIECES_PER_TRADE_ITEM, G_MISS_NUM) <> G_MISS_NUM
3168           AND NVL(p_singe_row_attrs_rec.UOM_PIECES_PER_TRADE_ITEM, G_MISS_CHAR) = G_MISS_CHAR THEN
3169         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'PIECES_PER_TRADE_ITEM');
3170         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3171         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3172         FND_MSG_PUB.ADD;
3173       END IF; -- 31.
3174 
3175       -- 32. Uom is required for NESTING_INCREMENT
3176       Debug_Msg('32. Uom is required for NESTING_INCREMENT');
3177       IF NVL(p_singe_row_attrs_rec.NESTING_INCREMENT, G_MISS_NUM) <> G_MISS_NUM
3178           AND NVL(p_singe_row_attrs_rec.UOM_NESTING_INCREMENT, G_MISS_CHAR) = G_MISS_CHAR THEN
3179         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'NESTING_INCREMENT');
3180         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3181         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3182         FND_MSG_PUB.ADD;
3183       END IF; -- 32.
3184 
3185       -- 33. Uom is required for DEL_TO_DIST_CNTR_TEMP_MIN
3186       Debug_Msg('33. Uom is required for DEL_TO_DIST_CNTR_TEMP_MIN');
3187       IF NVL(p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MIN, G_MISS_NUM) <> G_MISS_NUM
3188           AND (p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MIN = G_MISS_CHAR
3189                OR (l_prod_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN IS NULL
3190                    AND p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MIN IS NULL)
3191               )
3192       THEN
3193         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MIN');
3194         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3195         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3196         FND_MSG_PUB.ADD;
3197       END IF; -- 33.
3198 
3199       -- 34. Uom is required for DEL_TO_DIST_CNTR_TEMP_MAX
3200       Debug_Msg('34. Uom is required for DEL_TO_DIST_CNTR_TEMP_MAX');
3201       IF NVL(p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MAX, G_MISS_NUM) <> G_MISS_NUM
3202           AND (p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MAX = G_MISS_CHAR
3203                OR (l_prod_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX IS NULL
3204                    AND p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MAX IS NULL)
3205               )
3206       THEN
3207         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MAX');
3208         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3209         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3210         FND_MSG_PUB.ADD;
3211       END IF; -- 34.
3212 
3213       -- 35. Uom is required for DELIVERY_TO_MRKT_TEMP_MIN
3214       Debug_Msg('35. Uom is required for DELIVERY_TO_MRKT_TEMP_MIN');
3215       IF NVL(p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MIN, G_MISS_NUM) <> G_MISS_NUM
3216           AND (p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MIN = G_MISS_CHAR
3217                OR (l_prod_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN IS NULL
3218                    AND p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MIN IS NULL)
3219               )
3220       THEN
3221         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MIN');
3222         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3223         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3224         FND_MSG_PUB.ADD;
3225       END IF; -- 35.
3226 
3227       -- 36. Uom is required for DELIVERY_TO_MRKT_TEMP_MAX
3228       Debug_Msg('36. Uom is required for DELIVERY_TO_MRKT_TEMP_MAX');
3229       IF NVL(p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MAX, G_MISS_NUM) <> G_MISS_NUM
3230           AND (p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MAX = G_MISS_CHAR
3231                OR (l_prod_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX IS NULL
3232                    AND p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MAX IS NULL)
3233               )
3234       THEN
3235         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MAX');
3236         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3237         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3238         FND_MSG_PUB.ADD;
3239       END IF; -- 36.
3240 
3241       -- 37. Uom is required for STORAGE_HANDLING_TEMP_MIN
3242       Debug_Msg('37. Uom is required for STORAGE_HANDLING_TEMP_MIN');
3243       IF NVL(p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MIN, G_MISS_NUM) <> G_MISS_NUM
3244           AND (p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MIN = G_MISS_CHAR
3245                OR (l_prod_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN IS NULL
3246                    AND p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MIN IS NULL)
3247               )
3248       THEN
3249         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MIN');
3250         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3251         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3252         FND_MSG_PUB.ADD;
3253       END IF; -- 37.
3254 
3255       -- 38. Uom is required for STORAGE_HANDLING_TEMP_MAX
3256       Debug_Msg('38. Uom is required for STORAGE_HANDLING_TEMP_MAX');
3257       IF NVL(p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MAX, G_MISS_NUM) <> G_MISS_NUM
3258           AND (p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MAX = G_MISS_CHAR
3259                OR (l_prod_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX IS NULL
3260                    AND p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MAX IS NULL)
3261               )
3262       THEN
3263         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MAX');
3264         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_REQD');
3265         FND_MESSAGE.Set_Token('ATTR_NAME', l_attr1_disp);
3266         FND_MSG_PUB.ADD;
3267       END IF; -- 38.
3268 
3269       -- 39. start_availability_date_time can not be greater than end_availability_date_time
3270       Debug_Msg('39. START_AVAILABILITY_DATE_TIME can not be greater than END_AVAILABILITY_DATE_TIME');
3271       IF p_singe_row_attrs_rec.START_AVAILABILITY_DATE_TIME IS NULL THEN
3272         l_min_date_value := l_prod_single_row_attrs.START_AVAILABILITY_DATE_TIME;
3273       ELSIF p_singe_row_attrs_rec.START_AVAILABILITY_DATE_TIME = G_MISS_DATE THEN
3274         l_min_date_value := NULL;
3275       ELSE
3276         l_min_date_value := p_singe_row_attrs_rec.START_AVAILABILITY_DATE_TIME;
3277       END IF;
3278 
3279       IF p_singe_row_attrs_rec.END_AVAILABILITY_DATE_TIME IS NULL THEN
3280         l_max_date_value := l_prod_single_row_attrs.END_AVAILABILITY_DATE_TIME;
3281       ELSIF p_singe_row_attrs_rec.END_AVAILABILITY_DATE_TIME = G_MISS_DATE THEN
3282         l_max_date_value := NULL;
3283       ELSE
3284         l_max_date_value := p_singe_row_attrs_rec.END_AVAILABILITY_DATE_TIME;
3285       END IF;
3286 
3287       IF (l_min_date_value IS NOT NULL AND l_max_date_value IS NOT NULL AND l_min_date_value > l_max_date_value) OR
3288          (l_min_date_value IS NULL AND l_max_date_value IS NOT NULL)
3289       THEN
3290         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'START_AVAILABILITY_DATE_TIME');
3291         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'END_AVAILABILITY_DATE_TIME');
3292         FND_MESSAGE.Set_Name('EGO', 'EGO_MIN_GT_MAX');
3293         FND_MESSAGE.Set_Token('MIN_ATTR', l_attr1_disp);
3294         FND_MESSAGE.Set_Token('MAX_ATTR', l_attr2_disp);
3295         FND_MSG_PUB.ADD;
3296       END IF; -- 39.
3297 
3298       -- 40. EFFECTIVE_START_DATE can not be greater than EFFECTIVE_END_DATE
3299       Debug_Msg('40. EFFECTIVE_START_DATE can not be greater than EFFECTIVE_END_DATE');
3300       IF p_singe_row_attrs_rec.EFFECTIVE_START_DATE IS NULL THEN
3301         l_min_date_value := l_prod_single_row_attrs.EFFECTIVE_START_DATE;
3302       ELSIF p_singe_row_attrs_rec.EFFECTIVE_START_DATE = G_MISS_DATE THEN
3303         l_min_date_value := NULL;
3304       ELSE
3305         l_min_date_value := p_singe_row_attrs_rec.EFFECTIVE_START_DATE;
3306       END IF;
3307 
3308       IF p_singe_row_attrs_rec.EFFECTIVE_END_DATE IS NULL THEN
3309         l_max_date_value := l_prod_single_row_attrs.EFFECTIVE_END_DATE;
3310       ELSIF p_singe_row_attrs_rec.EFFECTIVE_END_DATE = G_MISS_DATE THEN
3311         l_max_date_value := NULL;
3312       ELSE
3313         l_max_date_value := p_singe_row_attrs_rec.EFFECTIVE_END_DATE;
3314       END IF;
3315 
3316       IF (l_min_date_value IS NOT NULL AND l_max_date_value IS NOT NULL AND l_min_date_value > l_max_date_value)
3317       THEN
3318         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EFFECTIVE_START_DATE');
3319         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'EFFECTIVE_END_DATE');
3320         FND_MESSAGE.Set_Name('EGO', 'EGO_MIN_GT_MAX');
3321         FND_MESSAGE.Set_Token('MIN_ATTR', l_attr1_disp);
3322         FND_MESSAGE.Set_Token('MAX_ATTR', l_attr2_disp);
3323         FND_MSG_PUB.ADD;
3324       END IF; -- 40.
3325 
3326       -- 41. order_quantity_min can not be greater than order_quantity_max
3327       Debug_Msg('41. ORDER_QUANTITY_MIN can not be greater than ORDER_QUANTITY_MAX');
3328       IF p_singe_row_attrs_rec.ORDER_QUANTITY_MIN IS NULL THEN
3329         l_min_num_value := l_prod_single_row_attrs.ORDER_QUANTITY_MIN;
3330       ELSIF p_singe_row_attrs_rec.ORDER_QUANTITY_MIN = G_MISS_NUM THEN
3331         l_min_num_value := NULL;
3332       ELSE
3333         l_min_num_value := p_singe_row_attrs_rec.ORDER_QUANTITY_MIN;
3334       END IF;
3335 
3336       IF p_singe_row_attrs_rec.ORDER_QUANTITY_MAX IS NULL THEN
3337         l_max_num_value := l_prod_single_row_attrs.ORDER_QUANTITY_MAX;
3338       ELSIF p_singe_row_attrs_rec.ORDER_QUANTITY_MAX = G_MISS_NUM THEN
3339         l_max_num_value := NULL;
3340       ELSE
3341         l_max_num_value := p_singe_row_attrs_rec.ORDER_QUANTITY_MAX;
3342       END IF;
3343 
3344       IF (l_min_num_value IS NOT NULL AND l_max_num_value IS NOT NULL AND l_min_num_value > l_max_num_value)
3345       THEN
3346         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ORDER_QUANTITY_MIN');
3347         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'ORDER_QUANTITY_MAX');
3348         FND_MESSAGE.Set_Name('EGO', 'EGO_MIN_GT_MAX');
3349         FND_MESSAGE.Set_Token('MIN_ATTR', l_attr1_disp);
3350         FND_MESSAGE.Set_Token('MAX_ATTR', l_attr2_disp);
3351         FND_MSG_PUB.ADD;
3352       END IF; -- 41.
3353 
3354       -- 42. DEL_TO_DIST_CNTR_TEMP_MIN can not be greater than DEL_TO_DIST_CNTR_TEMP_MAX
3355       Debug_Msg('42. DEL_TO_DIST_CNTR_TEMP_MIN can not be greater than DEL_TO_DIST_CNTR_TEMP_MAX');
3356       IF p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MIN IS NULL THEN
3357         l_min_num_value := l_prod_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MIN;
3358       ELSIF p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MIN = G_MISS_NUM THEN
3359         l_min_num_value := NULL;
3360       ELSE
3361         l_min_num_value := p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MIN;
3362       END IF;
3363 
3364       IF p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MAX IS NULL THEN
3365         l_max_num_value := l_prod_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MAX;
3366       ELSIF p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MAX = G_MISS_NUM THEN
3367         l_max_num_value := NULL;
3368       ELSE
3369         l_max_num_value := p_singe_row_attrs_rec.DEL_TO_DIST_CNTR_TEMP_MAX;
3370       END IF;
3371 
3372       IF (l_min_num_value IS NOT NULL AND l_max_num_value IS NOT NULL AND l_min_num_value > l_max_num_value)
3373       THEN
3374         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MIN');
3375         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MAX');
3376         FND_MESSAGE.Set_Name('EGO', 'EGO_MIN_GT_MAX');
3377         FND_MESSAGE.Set_Token('MIN_ATTR', l_attr1_disp);
3378         FND_MESSAGE.Set_Token('MAX_ATTR', l_attr2_disp);
3379         FND_MSG_PUB.ADD;
3380       END IF; -- 42.
3381 
3382       -- 42.1. uom for DEL_TO_DIST_CNTR_TEMP_MIN must be same that of DEL_TO_DIST_CNTR_TEMP_MAX
3383       Debug_Msg('42.1. uom for DEL_TO_DIST_CNTR_TEMP_MIN must be same that of DEL_TO_DIST_CNTR_TEMP_MAX');
3384       IF p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MIN IS NULL THEN
3385         l_min_char_value := l_prod_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN;
3386       ELSIF p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MIN = G_MISS_CHAR THEN
3387         l_min_char_value := NULL;
3388       ELSE
3389         l_min_char_value := p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MIN;
3390       END IF;
3391 
3392       IF p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MAX IS NULL THEN
3393         l_max_char_value := l_prod_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX;
3394       ELSIF p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MAX = G_MISS_CHAR THEN
3395         l_max_char_value := NULL;
3396       ELSE
3397         l_max_char_value := p_singe_row_attrs_rec.UOM_DEL_TO_DIST_CNTR_TEMP_MAX;
3398       END IF;
3399 
3400       IF (l_min_num_value IS NOT NULL AND l_max_num_value IS NOT NULL AND l_min_char_value <> l_max_char_value)
3401       THEN
3402         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MIN');
3403         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DEL_TO_DIST_CNTR_TEMP_MAX');
3404         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_MUST_BE_SAME');
3405         FND_MESSAGE.Set_Token('ATTR1', l_attr1_disp);
3406         FND_MESSAGE.Set_Token('ATTR2', l_attr2_disp);
3407         FND_MSG_PUB.ADD;
3408       END IF; -- 42.1.
3409 
3410       -- 43. DELIVERY_TO_MRKT_TEMP_MIN can not be greater than DELIVERY_TO_MRKT_TEMP_MAX
3411       Debug_Msg('43. DELIVERY_TO_MRKT_TEMP_MIN can not be greater than DELIVERY_TO_MRKT_TEMP_MAX');
3412       IF p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MIN IS NULL THEN
3413         l_min_num_value := l_prod_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MIN;
3414       ELSIF p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MIN = G_MISS_NUM THEN
3415         l_min_num_value := NULL;
3416       ELSE
3417         l_min_num_value := p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MIN;
3418       END IF;
3419 
3420       IF p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MAX IS NULL THEN
3421         l_max_num_value := l_prod_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MAX;
3422       ELSIF p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MAX = G_MISS_NUM THEN
3423         l_max_num_value := NULL;
3424       ELSE
3425         l_max_num_value := p_singe_row_attrs_rec.DELIVERY_TO_MRKT_TEMP_MAX;
3426       END IF;
3427 
3428       IF (l_min_num_value IS NOT NULL AND l_max_num_value IS NOT NULL AND l_min_num_value > l_max_num_value)
3429       THEN
3430         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MIN');
3431         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MAX');
3432         FND_MESSAGE.Set_Name('EGO', 'EGO_MIN_GT_MAX');
3433         FND_MESSAGE.Set_Token('MIN_ATTR', l_attr1_disp);
3434         FND_MESSAGE.Set_Token('MAX_ATTR', l_attr2_disp);
3435         FND_MSG_PUB.ADD;
3436       END IF; -- 43.
3437 
3438       -- 43.1. uom for DELIVERY_TO_MRKT_TEMP_MIN must be same that of DELIVERY_TO_MRKT_TEMP_MAX
3439       Debug_Msg('43.1. uom for DELIVERY_TO_MRKT_TEMP_MIN must be same that of DELIVERY_TO_MRKT_TEMP_MAX');
3440       IF p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MIN IS NULL THEN
3441         l_min_char_value := l_prod_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN;
3442       ELSIF p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MIN = G_MISS_CHAR THEN
3443         l_min_char_value := NULL;
3444       ELSE
3445         l_min_char_value := p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MIN;
3446       END IF;
3447 
3448       IF p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MAX IS NULL THEN
3449         l_max_char_value := l_prod_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX;
3450       ELSIF p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MAX = G_MISS_CHAR THEN
3451         l_max_char_value := NULL;
3452       ELSE
3453         l_max_char_value := p_singe_row_attrs_rec.UOM_DELIVERY_TO_MRKT_TEMP_MAX;
3454       END IF;
3455 
3456       IF (l_min_num_value IS NOT NULL AND l_max_num_value IS NOT NULL AND l_min_char_value <> l_max_char_value)
3457       THEN
3458         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MIN');
3459         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'DELIVERY_TO_MRKT_TEMP_MAX');
3460         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_MUST_BE_SAME');
3461         FND_MESSAGE.Set_Token('ATTR1', l_attr1_disp);
3462         FND_MESSAGE.Set_Token('ATTR2', l_attr2_disp);
3463         FND_MSG_PUB.ADD;
3464       END IF; -- 43.1.
3465 
3466       -- 44. STORAGE_HANDLING_TEMP_MIN can not be greater than STORAGE_HANDLING_TEMP_MAX
3467       Debug_Msg('44. STORAGE_HANDLING_TEMP_MIN can not be greater than STORAGE_HANDLING_TEMP_MAX');
3468       IF p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MIN IS NULL THEN
3469         l_min_num_value := l_prod_single_row_attrs.STORAGE_HANDLING_TEMP_MIN;
3470       ELSIF p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MIN = G_MISS_NUM THEN
3471         l_min_num_value := NULL;
3472       ELSE
3473         l_min_num_value := p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MIN;
3474       END IF;
3475 
3476       IF p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MAX IS NULL THEN
3477         l_max_num_value := l_prod_single_row_attrs.STORAGE_HANDLING_TEMP_MAX;
3478       ELSIF p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MAX = G_MISS_NUM THEN
3479         l_max_num_value := NULL;
3480       ELSE
3481         l_max_num_value := p_singe_row_attrs_rec.STORAGE_HANDLING_TEMP_MAX;
3482       END IF;
3483 
3484       IF (l_min_num_value IS NOT NULL AND l_max_num_value IS NOT NULL AND l_min_num_value > l_max_num_value)
3485       THEN
3486         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MIN');
3487         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MAX');
3488         FND_MESSAGE.Set_Name('EGO', 'EGO_MIN_GT_MAX');
3489         FND_MESSAGE.Set_Token('MIN_ATTR', l_attr1_disp);
3490         FND_MESSAGE.Set_Token('MAX_ATTR', l_attr2_disp);
3491         FND_MSG_PUB.ADD;
3492       END IF; -- 44.
3493 
3494       -- 44.1. uom for STORAGE_HANDLING_TEMP_MIN must be same that of STORAGE_HANDLING_TEMP_MAX
3495       Debug_Msg('44.1. uom for STORAGE_HANDLING_TEMP_MIN must be same that of STORAGE_HANDLING_TEMP_MAX');
3496       IF p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MIN IS NULL THEN
3497         l_min_char_value := l_prod_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN;
3498       ELSIF p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MIN = G_MISS_CHAR THEN
3499         l_min_char_value := NULL;
3500       ELSE
3501         l_min_char_value := p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MIN;
3502       END IF;
3503 
3504       IF p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MAX IS NULL THEN
3505         l_max_char_value := l_prod_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX;
3506       ELSIF p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MAX = G_MISS_CHAR THEN
3507         l_max_char_value := NULL;
3508       ELSE
3509         l_max_char_value := p_singe_row_attrs_rec.UOM_STORAGE_HANDLING_TEMP_MAX;
3510       END IF;
3511 
3512       IF (l_min_num_value IS NOT NULL AND l_max_num_value IS NOT NULL AND l_min_char_value <> l_max_char_value)
3513       THEN
3514         l_attr1_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MIN');
3515         l_attr2_disp := Get_Attribute_Display_Name('EGO_ITEM_GTIN_ATTRS', 'STORAGE_HANDLING_TEMP_MAX');
3516         FND_MESSAGE.Set_Name('EGO', 'EGO_UOM_MUST_BE_SAME');
3517         FND_MESSAGE.Set_Token('ATTR1', l_attr1_disp);
3518         FND_MESSAGE.Set_Token('ATTR2', l_attr2_disp);
3519         FND_MSG_PUB.ADD;
3520       END IF; -- 44.1.
3521     END IF; -- IF l_continue THEN
3522 
3523     FND_MSG_PUB.Count_And_Get('T', x_msg_count, x_msg_data);
3524     IF x_msg_count > 0 THEN
3525       x_return_status := 'E';
3526     ELSE
3527       x_return_status := 'S';
3528     END IF;
3529     Debug_Msg('Finished GDSN Attributes Validations for Item,Org='||p_inventory_item_id||','||p_organization_id);
3530     Debug_Msg('Return Status = '||x_return_status);
3531   EXCEPTION WHEN OTHERS THEN
3532     IF c_prod_single_row_values%ISOPEN THEN
3533       CLOSE c_prod_single_row_values;
3534     END IF;
3535     x_return_status := 'U';
3536     x_msg_count := 1;
3537     x_msg_data := SQLERRM;
3538     Debug_Msg('Unexpected Error in GDSN Attributes Validations - '||x_msg_data);
3539   END Validate_Attributes;
3540 
3541   /*
3542    *
3543    */
3544   PROCEDURE Do_Post_UCCnet_Attrs_Action ( p_data_set_id  IN  NUMBER
3545                                          ,p_entity_id   IN  NUMBER
3546                                          ,p_entity_code IN VARCHAR2
3547                                          ,p_add_errors_to_fnd_stack IN VARCHAR2) IS
3548     CURSOR c_intf_rows IS
3549       SELECT
3550         INVENTORY_ITEM_ID
3551        ,ORGANIZATION_ID
3552        ,ITEM_CATALOG_GROUP_ID
3553        ,MAX(TRANSACTION_ID) AS TRANSACTION_ID
3554       FROM EGO_ITM_USR_ATTR_INTRFC
3555       WHERE ATTR_GROUP_TYPE IN ('EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS')
3556         AND DATA_SET_ID = p_data_set_id
3557         AND PROCESS_STATUS = 2
3558       GROUP BY INVENTORY_ITEM_ID, ORGANIZATION_ID, ITEM_CATALOG_GROUP_ID;
3559 
3560     CURSOR c_intf_row_attrs(c_inventory_item_id IN NUMBER, c_organization_id IN NUMBER) IS
3561       SELECT
3562         eiuai.INVENTORY_ITEM_ID
3563        ,eiuai.ORGANIZATION_ID
3564        ,eav.ATTR_ID
3565        ,eiuai.ATTR_INT_NAME
3566        ,eiuai.ATTR_VALUE_STR
3567        ,eiuai.ATTR_VALUE_NUM
3568        ,eiuai.ATTR_VALUE_DATE
3569       FROM EGO_ITM_USR_ATTR_INTRFC eiuai, EGO_ATTRS_V eav
3570       WHERE eiuai.ATTR_GROUP_TYPE IN ('EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS')
3571         AND eiuai.ATTR_GROUP_TYPE = eav.ATTR_GROUP_TYPE
3572         AND eiuai.ATTR_GROUP_INT_NAME = eav.ATTR_GROUP_NAME
3573         AND eiuai.ATTR_INT_NAME = eav.ATTR_NAME
3574         AND eav.APPLICATION_ID = EGO_APPL_ID
3575         AND eiuai.DATA_SET_ID = p_data_set_id
3576         AND eiuai.PROCESS_STATUS = 2
3577         AND eiuai.INVENTORY_ITEM_ID = c_inventory_item_id
3578         AND eiuai.ORGANIZATION_ID = c_organization_id;
3579 
3580     CURSOR c_intf_extn_rows IS
3581       SELECT
3582         INVENTORY_ITEM_ID
3583        ,ORGANIZATION_ID
3584        ,ATTR_GROUP_INT_NAME
3585        ,MAX(TRANSACTION_ID) AS TRANSACTION_ID
3586       FROM EGO_ITM_USR_ATTR_INTRFC
3587       WHERE ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
3588         AND ATTR_GROUP_INT_NAME LIKE 'EGOINT#_GDSN%' ESCAPE '#'
3589         AND DATA_SET_ID = p_data_set_id
3590         AND PROCESS_STATUS = 2
3591       GROUP BY INVENTORY_ITEM_ID, ORGANIZATION_ID, ATTR_GROUP_INT_NAME;
3592 
3593     CURSOR c_intf_row_extn_attrs(c_inventory_item_id IN NUMBER, c_organization_id IN NUMBER, c_attr_group_name IN VARCHAR2) IS
3594       SELECT
3595         eiuai.INVENTORY_ITEM_ID
3596        ,eiuai.ORGANIZATION_ID
3597        ,eiuai.ATTR_INT_NAME
3598       FROM EGO_ITM_USR_ATTR_INTRFC eiuai
3599       WHERE eiuai.ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
3600         AND eiuai.ATTR_GROUP_INT_NAME = c_attr_group_name
3601         AND eiuai.DATA_SET_ID = p_data_set_id
3602         AND eiuai.PROCESS_STATUS = 2
3603         AND eiuai.INVENTORY_ITEM_ID = c_inventory_item_id
3604         AND eiuai.ORGANIZATION_ID = c_organization_id;
3605 
3606     l_attribute_names EGO_VARCHAR_TBL_TYPE := EGO_VARCHAR_TBL_TYPE(null);
3607     l_attr_diffs      EGO_USER_ATTR_DIFF_TABLE;
3608     l_pk_column_name_value_pairs EGO_COL_NAME_VALUE_PAIR_ARRAY;
3609     l_class_code_name_value_pairs EGO_COL_NAME_VALUE_PAIR_ARRAY;
3610     l_data_level_name_value_pairs EGO_COL_NAME_VALUE_PAIR_ARRAY;
3611     l_return_status      VARCHAR2(10);
3612     l_msg_count          NUMBER;
3613     l_msg_data           VARCHAR2(4000);
3614   BEGIN
3615     Debug_Msg('Starting Do_Post_UCCnet_Attrs_Action');
3616     FOR i IN c_intf_rows LOOP
3617       Debug_Msg('Starting Do_Post_UCCnet_Attrs_Action for Item,Org='||i.INVENTORY_ITEM_ID||','||i.ORGANIZATION_ID);
3618       l_attribute_names := EGO_VARCHAR_TBL_TYPE(null);
3619       l_attr_diffs := EGO_USER_ATTR_DIFF_TABLE();
3620       FOR j IN c_intf_row_attrs(i.INVENTORY_ITEM_ID, i.ORGANIZATION_ID) LOOP
3621         -- populating variable for passing to EGO_GTIN_PVT.PROCESS_ATTRIBUTE_UPDATES
3622         l_attribute_names.EXTEND;
3623         l_attribute_names(l_attribute_names.COUNT) := j.ATTR_INT_NAME;
3624         -- populating variable for passing to EGO_GTIN_PVT.Item_Propagate_Attributes
3625         l_attr_diffs.EXTEND();
3626         l_attr_diffs(l_attr_diffs.LAST) := EGO_USER_ATTR_DIFF_OBJ
3627             ( attr_id             => j.ATTR_ID
3628             , attr_name           => j.ATTR_INT_NAME
3629             , old_attr_value_str  => null
3630             , old_attr_value_num  => null
3631             , old_attr_value_date => null
3632             , old_attr_uom        => null
3633             , new_attr_value_str  => NVL(j.ATTR_VALUE_STR, G_MISS_CHAR)
3634             , new_attr_value_num  => NVL(j.ATTR_VALUE_NUM, G_MISS_NUM)
3635             , new_attr_value_date => NVL(j.ATTR_VALUE_DATE, G_MISS_DATE)
3636             , new_attr_uom        => null
3637             , unique_key_flag     => null
3638             , extension_id        => null
3639             );
3640       END LOOP;
3641 
3642       IF l_attribute_names.COUNT > 0 THEN
3643         Debug_Msg('Calling EGO_GTIN_PVT.PROCESS_ATTRIBUTE_UPDATES');
3644         EGO_GTIN_PVT.PROCESS_ATTRIBUTE_UPDATES(
3645           i.INVENTORY_ITEM_ID,
3646           i.ORGANIZATION_ID,
3647           l_attribute_names,
3648           FND_API.G_FALSE,
3649           l_return_status,
3650           l_msg_count,
3651           l_msg_data);
3652 
3653         Debug_Msg('Finished Calling EGO_GTIN_PVT.PROCESS_ATTRIBUTE_UPDATES with status='||l_return_status);
3654         IF l_return_status <> 'S' THEN
3655           ERROR_HANDLER.Add_Error_Message
3656             (
3657               p_message_text              => l_msg_data
3658              ,p_application_id            => 'EGO'
3659              ,p_message_type              => FND_API.G_RET_STS_ERROR
3660              ,p_row_identifier            => i.TRANSACTION_ID
3661              ,p_entity_id                 => p_entity_id
3662              ,p_table_name                => 'EGO_ITM_USR_ATTR_INTRFC'
3663              ,p_entity_code               => p_entity_code
3664              ,p_addto_fnd_stack           => p_add_errors_to_fnd_stack
3665             );
3666         END IF; -- end IF l_return_st
3667       END IF; -- end IF l_attribute_names.COUN
3668 
3669       IF l_attr_diffs.COUNT > 0 THEN
3670         Debug_Msg('Calling EGO_GTIN_PVT.Item_Propagate_Attributes');
3671         l_pk_column_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY
3672           ( EGO_COL_NAME_VALUE_PAIR_OBJ('INVENTORY_ITEM_ID', TO_CHAR(i.INVENTORY_ITEM_ID))
3673           , EGO_COL_NAME_VALUE_PAIR_OBJ('ORGANIZATION_ID', TO_CHAR(i.ORGANIZATION_ID))
3674           );
3675 
3676         l_class_code_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY
3677           (EGO_COL_NAME_VALUE_PAIR_OBJ('ITEM_CATALOG_GROUP_ID', to_char(i.ITEM_CATALOG_GROUP_ID)));
3678 
3679         l_data_level_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY(EGO_COL_NAME_VALUE_PAIR_OBJ('REVISION_ID', NULL));
3680 
3681         l_msg_data := NULL;
3682         EGO_GTIN_PVT.Item_Propagate_Attributes
3683               ( p_pk_column_name_value_pairs => l_pk_column_name_value_pairs
3684               , p_class_code_name_value_pairs => l_class_code_name_value_pairs
3685               , p_data_level_name_value_pairs => l_data_level_name_value_pairs
3686               , p_attr_diffs => l_attr_diffs
3687               , p_transaction_type => 'UPDATE'
3688               , x_error_message => l_msg_data
3689               );
3690         Debug_Msg('Finished Calling EGO_GTIN_PVT.Item_Propagate_Attributes with '||l_msg_data);
3691         IF l_msg_data IS NOT NULL THEN
3692           ERROR_HANDLER.Add_Error_Message
3693             (
3694               p_message_text              => l_msg_data
3695              ,p_application_id            => 'EGO'
3696              ,p_message_type              => FND_API.G_RET_STS_ERROR
3697              ,p_row_identifier            => i.TRANSACTION_ID
3698              ,p_entity_id                 => p_entity_id
3699              ,p_table_name                => 'EGO_ITM_USR_ATTR_INTRFC'
3700              ,p_entity_code               => p_entity_code
3701              ,p_addto_fnd_stack           => p_add_errors_to_fnd_stack
3702             );
3703         END IF; -- end IF l_msg_data
3704       END IF; --  end IF l_attr_diffs.
3705     END LOOP;
3706 
3707     -- processing GDSN extension attributes
3708     Debug_Msg('Processing GDSN Extension attributes ');
3709     FOR i IN c_intf_extn_rows LOOP
3710       Debug_Msg('Inventory_item_id, Organization_id, Attribute_Group_Name = '||i.INVENTORY_ITEM_ID||', '||i.ORGANIZATION_ID||', '||i.ATTR_GROUP_INT_NAME);
3711       l_attribute_names.DELETE;
3712       FOR j IN c_intf_row_extn_attrs(i.INVENTORY_ITEM_ID, i.ORGANIZATION_ID, i.ATTR_GROUP_INT_NAME) LOOP
3713         Debug_Msg('Adding Attribute - '||j.ATTR_INT_NAME);
3714         l_attribute_names.EXTEND;
3715         l_attribute_names(l_attribute_names.COUNT) := j.ATTR_INT_NAME;
3716       END LOOP; --FOR j IN c_intf_row_extn_attrs(i.INVENTORY_ITEM_ID, i.ORGANIZATION_ID, i.ATTR_GROUP_INT_NAME) LOOP
3717 
3718       -- calling PROCESS_EXTN_ATTRIBUTE_UPDATES
3719       IF l_attribute_names.COUNT > 0 THEN
3720         Debug_Msg('Calling EGO_GTIN_PVT.PROCESS_EXTN_ATTRIBUTE_UPDATES');
3721         EGO_GTIN_PVT.PROCESS_EXTN_ATTRIBUTE_UPDATES(
3722           i.INVENTORY_ITEM_ID,
3723           i.ORGANIZATION_ID,
3724           l_attribute_names,
3725           i.ATTR_GROUP_INT_NAME,
3726           FND_API.G_FALSE,
3727           l_return_status,
3728           l_msg_count,
3729           l_msg_data);
3730 
3731         Debug_Msg('Finished Calling EGO_GTIN_PVT.PROCESS_EXTN_ATTRIBUTE_UPDATES with status='||l_return_status);
3732         IF l_return_status <> 'S' THEN
3733           ERROR_HANDLER.Add_Error_Message
3734             (
3735               p_message_text              => l_msg_data
3736              ,p_application_id            => 'EGO'
3737              ,p_message_type              => FND_API.G_RET_STS_ERROR
3738              ,p_row_identifier            => i.TRANSACTION_ID
3739              ,p_entity_id                 => p_entity_id
3740              ,p_table_name                => 'EGO_ITM_USR_ATTR_INTRFC'
3741              ,p_entity_code               => p_entity_code
3742              ,p_addto_fnd_stack           => p_add_errors_to_fnd_stack
3743             );
3744         END IF; -- end IF l_return_st
3745       END IF; -- end IF l_attribute_names.COUN
3746     END LOOP; -- FOR i IN c_intf_extn_rows LOOP
3747     Debug_Msg('Done Processing GDSN Extension attributes ');
3748     Debug_Msg('Finished Do_Post_UCCnet_Attrs_Action');
3749   END Do_Post_UCCnet_Attrs_Action;
3750 
3751   /*
3752    */
3753   PROCEDURE Process_Multi_Row_AG(p_attr_group_name              VARCHAR2,
3754                                  p_pk_column_name_value_pairs   EGO_COL_NAME_VALUE_PAIR_ARRAY,
3755                                  p_class_code_name_value_pairs  EGO_COL_NAME_VALUE_PAIR_ARRAY,
3756                                  p_data_level_name_value_pairs  EGO_COL_NAME_VALUE_PAIR_ARRAY,
3757                                  p_extension_id                 NUMBER,
3758                                  p_transaction_type             VARCHAR2,
3759                                  p_attr_name_value_pairs        EGO_USER_ATTR_DATA_TABLE,
3760                                  x_return_status                OUT NOCOPY VARCHAR2,
3761                                  x_errorcode                    OUT NOCOPY NUMBER,
3762                                  x_msg_count                    OUT NOCOPY NUMBER,
3763                                  x_msg_data                     OUT NOCOPY VARCHAR2)
3764   IS
3765     l_mode  VARCHAR2(100);
3766     l_return_status      VARCHAR2(10);
3767     l_msg_count          NUMBER;
3768     l_msg_data           VARCHAR2(4000);
3769     l_errorcode          NUMBER;
3770   BEGIN
3771     Debug_Msg('Starting Process_Multi_Row_AG for AG - '||p_attr_group_name);
3772     IF p_extension_id IS NOT NULL AND NVL(p_transaction_type, 'X') <> 'DELETE' THEN
3773       l_mode := 'UPDATE';
3774     ELSIF p_transaction_type = 'DELETE' THEN
3775       l_mode := 'DELETE';
3776     ELSE
3777       l_mode := 'SYNC';
3778     END IF;
3779     Debug_Msg('Process_Multi_Row_AG extension_id - '||p_extension_id);
3780     Debug_Msg('Process_Multi_Row_AG p_transaction_type - '||p_transaction_type);
3781 
3782     EGO_USER_ATTRS_DATA_PVT.Process_Row (
3783             p_api_version                   => 1.0
3784            ,p_object_name                   => 'EGO_ITEM'
3785            ,p_application_id                => 431
3786            ,p_attr_group_type               => 'EGO_ITEM_GTIN_MULTI_ATTRS'
3787            ,p_attr_group_name               => p_attr_group_name
3788            ,p_validate_hierarchy            => FND_API.G_FALSE
3789            ,p_pk_column_name_value_pairs    => p_pk_column_name_value_pairs
3790            ,p_class_code_name_value_pairs   => p_class_code_name_value_pairs
3791            ,p_data_level_name_value_pairs   => p_data_level_name_value_pairs
3792            ,p_extension_id                  => p_extension_id
3793            ,p_attr_name_value_pairs         => p_attr_name_value_pairs
3794            ,p_entity_id                     => G_ENTITY_ID
3795            ,p_entity_index                  => G_ENTITY_INDEX
3796            ,p_entity_code                   => G_ENTITY_CODE
3797            ,p_mode                          => l_mode
3798            ,p_init_fnd_msg_list             => FND_API.G_TRUE
3799            ,p_add_errors_to_fnd_stack       => FND_API.G_TRUE
3800            ,p_commit                        => FND_API.G_FALSE
3801            ,x_return_status                 => l_return_status
3802            ,x_errorcode                     => l_errorcode
3803            ,x_msg_count                     => l_msg_count
3804            ,x_msg_data                      => l_msg_data
3805          );
3806     Debug_Msg('Finished Process_Multi_Row_AG with status - '||l_return_status);
3807 
3808     IF l_return_status <> 'S' THEN
3809       x_return_status := l_return_status;
3810       x_msg_count := l_msg_count;
3811       x_msg_data := l_msg_data;
3812       FOR cnt IN 1..l_msg_count LOOP
3813         Debug_Msg('Error msg - '||cnt ||': '|| FND_MSG_PUB.Get(p_msg_index => cnt, p_encoded => 'F'));
3814       END LOOP;
3815       Debug_Msg('Error msg - '|| l_msg_data);
3816     ELSE
3817       x_return_status := l_return_status;
3818       x_msg_count := l_msg_count;
3819       x_msg_data := l_msg_data;
3820     END IF;
3821   END Process_Multi_Row_AG;
3822 
3823   /*
3824    ** This procedure creates/updates the UCCnet attributes for an item
3825    */
3826   PROCEDURE Process_UCCnet_Attrs_For_Item (
3827           p_api_version                   IN   NUMBER
3828          ,p_inventory_item_id             IN   NUMBER
3829          ,p_organization_id               IN   NUMBER
3830          ,p_single_row_attrs_rec          IN   EGO_ITEM_PUB.UCCnet_Attrs_Singl_Row_Rec_Typ
3831          ,p_multi_row_attrs_table         IN   EGO_ITEM_PUB.UCCnet_Attrs_Multi_Row_Tbl_Typ
3832          ,p_check_policy                  IN   VARCHAR2   DEFAULT FND_API.G_TRUE
3833          ,p_entity_id                     IN   NUMBER     DEFAULT NULL
3834          ,p_entity_index                  IN   NUMBER     DEFAULT NULL
3835          ,p_entity_code                   IN   VARCHAR2   DEFAULT NULL
3836          ,p_init_error_handler            IN   VARCHAR2   DEFAULT FND_API.G_TRUE
3837          ,p_commit                        IN   VARCHAR2   DEFAULT FND_API.G_FALSE
3838          ,x_return_status                 OUT NOCOPY VARCHAR2
3839          ,x_errorcode                     OUT NOCOPY NUMBER
3840          ,x_msg_count                     OUT NOCOPY NUMBER
3841          ,x_msg_data                      OUT NOCOPY VARCHAR2) IS
3842 
3843     CURSOR c_uom_code IS
3844       SELECT a.APPLICATION_COLUMN_NAME, u.UOM_CODE
3845       FROM EGO_FND_DF_COL_USGS_EXT a, MTL_UNITS_OF_MEASURE_TL u
3846       WHERE a.UOM_CLASS = u.UOM_CLASS(+)
3847         AND u.BASE_UOM_FLAG(+) = 'Y'
3848         AND u.LANGUAGE(+) = USERENV('LANG')
3849         AND a.APPLICATION_ID = 431
3850         AND a.DESCRIPTIVE_FLEXFIELD_NAME IN ('EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS')
3851         AND a.APPLICATION_COLUMN_NAME IN (
3852                        'GROSS_WEIGHT'
3853                       ,'PEG_VERTICAL'
3854                       ,'PEG_HORIZONTAL'
3855                       ,'DRAINED_WEIGHT'
3856                       ,'DIAMETER'
3857                       ,'ORDERING_LEAD_TIME'
3858                       ,'GENERIC_INGREDIENT_STRGTH'
3859                       ,'STACKING_WEIGHT_MAXIMUM'
3860                       ,'PIECES_PER_TRADE_ITEM'
3861                       ,'NESTING_INCREMENT'
3862                       ,'DEL_TO_DIST_CNTR_TEMP_MIN'
3863                       ,'DEL_TO_DIST_CNTR_TEMP_MAX'
3864                       ,'DELIVERY_TO_MRKT_TEMP_MIN'
3865                       ,'DELIVERY_TO_MRKT_TEMP_MAX'
3866                       ,'STORAGE_HANDLING_TEMP_MIN'
3867                       ,'STORAGE_HANDLING_TEMP_MAX'
3868                       ,'FLASH_POINT_TEMP'
3869                       );
3870 
3871     CURSOR c_attr_metadata IS
3872       SELECT ATTR_GROUP_TYPE, ATTR_GROUP_NAME, ATTR_NAME, DATABASE_COLUMN
3873       FROM EGO_ATTRS_V
3874       WHERE ATTR_GROUP_TYPE IN ('EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS')
3875         AND APPLICATION_ID = EGO_APPL_ID;
3876 
3877     l_single_row_attrs   EGO_ITEM_PUB.UCCnet_Attrs_Singl_Row_Rec_Typ;
3878     l_multi_row_attrs    EGO_ITEM_PUB.UCCnet_Attrs_Multi_Row_Tbl_Typ;
3879     l_return_status      VARCHAR2(10);
3880     l_msg_count          NUMBER;
3881     l_msg_data           VARCHAR2(4000);
3882     l_failed_row_id_list VARCHAR2(4000);
3883     l_errorcode          NUMBER;
3884     l_index              BINARY_INTEGER;
3885 
3886     l_msg_text           VARCHAR2(4000);
3887     l_attributes_row_table            EGO_USER_ATTR_ROW_TABLE;
3888     l_attributes_data_table           EGO_USER_ATTR_DATA_TABLE;
3889     l_new_row            BOOLEAN;
3890     l_row_identifier     NUMBER;
3891     l_attribute_names    EGO_VARCHAR_TBL_TYPE := EGO_VARCHAR_TBL_TYPE(null);
3892     l_trade_item_desc    MTL_SYSTEM_ITEMS_B.TRADE_ITEM_DESCRIPTOR%TYPE;
3893     l_pk_column_name_value_pairs   EGO_COL_NAME_VALUE_PAIR_ARRAY;
3894     l_cc_column_name_value_pairs   EGO_COL_NAME_VALUE_PAIR_ARRAY;
3895     l_dl_column_name_value_pairs   EGO_COL_NAME_VALUE_PAIR_ARRAY;
3896     l_category_id        NUMBER;
3897 
3898     TYPE t_col_list_type IS TABLE OF NUMBER INDEX BY VARCHAR2(100);
3899     l_multi_row_cols     t_col_list_type;
3900 
3901     TYPE t_number_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3902 
3903     TYPE t_attr_row_type IS RECORD(
3904       ATTR_GROUP_NAME  VARCHAR2(100),
3905       ATTR_NAME        VARCHAR2(100));
3906 
3907     TYPE t_attr_meta_data_type IS TABLE OF t_attr_row_type INDEX BY VARCHAR2(100);
3908 
3909     l_single_row_attrs_metadata  t_attr_meta_data_type;
3910     l_multi_row_attrs_metadata   t_attr_meta_data_type;
3911     l_related_class_codes_list   VARCHAR2(150);
3912 
3913     /*
3914      * Private Function for Process_UCCnet_Attrs_For_Item
3915      */
3916     FUNCTION Create_Attrs_Row_Table(p_attr_group_type  VARCHAR2,
3917                                     p_attr_group_name  VARCHAR2,
3918                                     p_get_new_rowid    BOOLEAN,
3919                                     p_transaction_type VARCHAR2 DEFAULT NULL) RETURN NUMBER AS
3920       l_row_id NUMBER;
3921       l_index  BINARY_INTEGER;
3922       l_transaction_type VARCHAR2(100);
3923     BEGIN
3924       l_row_id := NULL;
3925       IF NVL(g_row_identifier, 0) = 0 THEN
3926         g_row_identifier := 100;
3927       END IF; --IF NVL(g_row_identifier, 0) = 0 THEN
3928 
3929       l_transaction_type := p_transaction_type;
3930       IF l_transaction_type IS NULL THEN
3931         l_transaction_type := 'SYNC';
3932       END IF; --IF p_transaction_type IS NULL THEN
3933 
3934       IF l_attributes_row_table.FIRST IS NOT NULL THEN
3935         l_index := l_attributes_row_table.FIRST;
3936         WHILE l_index IS NOT NULL LOOP
3937           IF l_attributes_row_table(l_index).ATTR_GROUP_TYPE = p_attr_group_type
3938               AND l_attributes_row_table(l_index).ATTR_GROUP_NAME = p_attr_group_name
3939               AND p_get_new_rowid = FALSE THEN
3940             l_row_id := l_attributes_row_table(l_index).ROW_IDENTIFIER;
3941           END IF; --IF l_attributes_row_table(l_i
3942           l_index := l_attributes_row_table.NEXT(l_index);
3943         END LOOP; -- end loop while
3944 
3945         IF l_row_id IS NULL THEN
3946           Debug_Msg('Creating Attrs Row Table for Attribute Group - '||p_attr_group_name||', with transaction type - '||l_transaction_type);
3947           l_attributes_row_table.EXTEND;
3948           l_attributes_row_table(l_attributes_row_table.COUNT) := EGO_USER_ATTR_ROW_OBJ(
3949                                                                         g_row_identifier   -- ROW_IDENTIFIER
3950                                                                       , NULL               -- ATTR_GROUP_ID
3951                                                                       , EGO_APPL_ID        -- ATTR_GROUP_APP_ID
3952                                                                       , p_attr_group_type  -- ATTR_GROUP_TYPE
3953                                                                       , p_attr_group_name  -- ATTR_GROUP_NAME
3954                                                                       , 'ITEM_LEVEL'       -- DATA_LEVEL (R12-C)
3955                                                                       , NULL               -- DATA_LEVEL_1
3956                                                                       , NULL               -- DATA_LEVEL_2
3957                                                                       , NULL               -- DATA_LEVEL_3
3958                                                                       , NULL               -- DATA_LEVEL_4 (R12-C)
3959                                                                       , NULL               -- DATA_LEVEL_5 (R12-C)
3960                                                                       , l_transaction_type -- TRANSACTION_TYPE
3961                                                                       );
3962           l_row_id := g_row_identifier;
3963           g_row_identifier := g_row_identifier + 1;
3964         END IF; --IF l_row_id IS NULL THEN
3965       ELSE
3966         Debug_Msg('Creating Attrs Row Table for Attribute Group.. - '||p_attr_group_name||', with transaction type - '||l_transaction_type);
3967         l_attributes_row_table.EXTEND;
3968         l_attributes_row_table(l_attributes_row_table.COUNT) := EGO_USER_ATTR_ROW_OBJ(
3969                                                                         g_row_identifier   -- ROW_IDENTIFIER
3970                                                                       , NULL               -- ATTR_GROUP_ID
3971                                                                       , EGO_APPL_ID        -- ATTR_GROUP_APP_ID
3972                                                                       , p_attr_group_type  -- ATTR_GROUP_TYPE
3973                                                                       , p_attr_group_name  -- ATTR_GROUP_NAME
3974                                                                       , 'ITEM_LEVEL'       -- DATA_LEVEL (R12-C)
3975                                                                       , NULL               -- DATA_LEVEL_1
3976                                                                       , NULL               -- DATA_LEVEL_2
3977                                                                       , NULL               -- DATA_LEVEL_3
3978                                                                       , NULL               -- DATA_LEVEL_4 (R12-C)
3979                                                                       , NULL               -- DATA_LEVEL_5 (R12-C)
3980                                                                       , l_transaction_type -- TRANSACTION_TYPE
3981                                                                       );
3982         l_row_id := g_row_identifier;
3983         g_row_identifier := g_row_identifier + 1;
3984       END IF; --IF l_attributes_row_table.FIRST IS
3985       RETURN l_row_id;
3986     END Create_Attrs_Row_Table;
3987 
3988   BEGIN
3989     IF FND_API.To_Boolean(p_init_error_handler) THEN
3990       ERROR_HANDLER.Initialize;
3991       ERROR_HANDLER.Set_Bo_Identifier(EGO_USER_ATTRS_DATA_PVT.G_BO_IDENTIFIER);
3992       Debug_Msg('Initialized error handler');
3993     END IF;
3994     Debug_Msg('Starting Process_UCCnet_Attrs_For_Item for Item,Org='||p_inventory_item_id||','||p_organization_id);
3995 
3996     l_single_row_attrs := p_single_row_attrs_rec;
3997     l_multi_row_attrs := p_multi_row_attrs_table;
3998     G_ENTITY_ID := p_entity_id;
3999     G_ENTITY_INDEX := p_entity_index;
4000     G_ENTITY_CODE := p_entity_code;
4001 
4002     -- Bug: 5526085 added not null check
4003     IF l_multi_row_attrs.FIRST IS NOT NULL THEN
4004       Debug_Msg('Following are the multi-row attribute values ...');
4005       FOR i IN l_multi_row_attrs.FIRST..l_multi_row_attrs.LAST LOOP
4006         Debug_Msg('l_multi_row_attrs('||i||').EXTENSION_ID - '||l_multi_row_attrs(i).EXTENSION_ID);
4007         Debug_Msg('l_multi_row_attrs('||i||').TRANSACTION_TYPE - '||l_multi_row_attrs(i).TRANSACTION_TYPE);
4008         Debug_Msg('l_multi_row_attrs('||i||').MANUFACTURER_GLN - '||l_multi_row_attrs(i).MANUFACTURER_GLN);
4009         Debug_Msg('l_multi_row_attrs('||i||').MANUFACTURER_ID - '||l_multi_row_attrs(i).MANUFACTURER_ID);
4010         Debug_Msg('l_multi_row_attrs('||i||').BAR_CODE_TYPE - '||l_multi_row_attrs(i).BAR_CODE_TYPE);
4011         Debug_Msg('l_multi_row_attrs('||i||').COLOR_CODE_LIST_AGENCY - '||l_multi_row_attrs(i).COLOR_CODE_LIST_AGENCY);
4012         Debug_Msg('l_multi_row_attrs('||i||').COLOR_CODE_VALUE - '||l_multi_row_attrs(i).COLOR_CODE_VALUE);
4013         Debug_Msg('l_multi_row_attrs('||i||').CLASS_OF_DANGEROUS_CODE - '||l_multi_row_attrs(i).CLASS_OF_DANGEROUS_CODE);
4014         Debug_Msg('l_multi_row_attrs('||i||').DANGEROUS_GOODS_MARGIN_NUMBER - '||l_multi_row_attrs(i).DANGEROUS_GOODS_MARGIN_NUMBER);
4015         Debug_Msg('l_multi_row_attrs('||i||').DANGEROUS_GOODS_HAZARDOUS_CODE - '||l_multi_row_attrs(i).DANGEROUS_GOODS_HAZARDOUS_CODE);
4016         Debug_Msg('l_multi_row_attrs('||i||').DANGEROUS_GOODS_PACK_GROUP - '||l_multi_row_attrs(i).DANGEROUS_GOODS_PACK_GROUP);
4017         Debug_Msg('l_multi_row_attrs('||i||').DANGEROUS_GOODS_REG_CODE - '||l_multi_row_attrs(i).DANGEROUS_GOODS_REG_CODE);
4018         Debug_Msg('l_multi_row_attrs('||i||').DANGEROUS_GOODS_SHIPPING_NAME - '||l_multi_row_attrs(i).DANGEROUS_GOODS_SHIPPING_NAME);
4019         Debug_Msg('l_multi_row_attrs('||i||').UNITED_NATIONS_DANG_GOODS_NO - '||l_multi_row_attrs(i).UNITED_NATIONS_DANG_GOODS_NO);
4020         Debug_Msg('l_multi_row_attrs('||i||').FLASH_POINT_TEMP - '||l_multi_row_attrs(i).FLASH_POINT_TEMP);
4021         Debug_Msg('l_multi_row_attrs('||i||').UOM_FLASH_POINT_TEMP - '||l_multi_row_attrs(i).UOM_FLASH_POINT_TEMP);
4022         Debug_Msg('l_multi_row_attrs('||i||').COUNTRY_OF_ORIGIN - '||l_multi_row_attrs(i).COUNTRY_OF_ORIGIN);
4023         Debug_Msg('l_multi_row_attrs('||i||').HARMONIZED_TARIFF_SYS_ID_CODE - '||l_multi_row_attrs(i).HARMONIZED_TARIFF_SYS_ID_CODE);
4024         Debug_Msg('l_multi_row_attrs('||i||').SIZE_CODE_LIST_AGENCY - '||l_multi_row_attrs(i).SIZE_CODE_LIST_AGENCY);
4025         Debug_Msg('l_multi_row_attrs('||i||').SIZE_CODE_VALUE - '||l_multi_row_attrs(i).SIZE_CODE_VALUE);
4026         Debug_Msg('l_multi_row_attrs('||i||').HANDLING_INSTRUCTIONS_CODE - '||l_multi_row_attrs(i).HANDLING_INSTRUCTIONS_CODE);
4027         Debug_Msg('l_multi_row_attrs('||i||').DANGEROUS_GOODS_TECHNICAL_NAME - '||l_multi_row_attrs(i).DANGEROUS_GOODS_TECHNICAL_NAME);
4028         Debug_Msg('l_multi_row_attrs('||i||').DELIVERY_METHOD_INDICATOR - '||l_multi_row_attrs(i).DELIVERY_METHOD_INDICATOR);
4029       END LOOP;
4030     END IF;
4031 
4032     SELECT ITEM_CATALOG_GROUP_ID INTO l_category_id
4033     FROM MTL_SYSTEM_ITEMS_B
4034     WHERE INVENTORY_ITEM_ID = p_inventory_item_id
4035       AND ORGANIZATION_ID = p_organization_id;
4036 
4037     l_pk_column_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY( EGO_COL_NAME_VALUE_PAIR_OBJ( 'INVENTORY_ITEM_ID' , TO_CHAR(p_inventory_item_id))
4038                                                                   ,EGO_COL_NAME_VALUE_PAIR_OBJ( 'ORGANIZATION_ID' , TO_CHAR(p_organization_id) ) );
4039 
4040     -- Bug: 5523366
4041     EGO_ITEM_PVT.Get_Related_Class_Codes(
4042          p_classification_code      => l_category_id
4043        , x_related_class_codes_list => l_related_class_codes_list );
4044 
4045     l_cc_column_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY(
4046                                           EGO_COL_NAME_VALUE_PAIR_OBJ( 'ITEM_CATALOG_GROUP_ID' , TO_CHAR(l_category_id) )
4047                                         , EGO_COL_NAME_VALUE_PAIR_OBJ( 'RELATED_CLASS_CODE_LIST_1' , l_related_class_codes_list ));
4048 
4049     l_dl_column_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY(EGO_COL_NAME_VALUE_PAIR_OBJ( 'REVISION_ID' , NULL));
4050 
4051     Debug_Msg('Checking the Trade Item Descriptor');
4052     BEGIN
4053       SELECT TRADE_ITEM_DESCRIPTOR INTO l_trade_item_desc
4054       FROM MTL_SYSTEM_ITEMS_B
4055       WHERE INVENTORY_ITEM_ID = p_inventory_item_id
4056         AND ORGANIZATION_ID = p_organization_id;
4057     EXCEPTION WHEN NO_DATA_FOUND THEN
4058       l_trade_item_desc := NULL;
4059     END;
4060     Debug_Msg('Production Trade Item Descriptor is '||l_trade_item_desc);
4061 
4062     Debug_Msg('Populating Unit Of Measures');
4063     FOR i IN c_uom_code LOOP
4064       IF i.APPLICATION_COLUMN_NAME = 'GROSS_WEIGHT'
4065           AND l_single_row_attrs.UOM_GROSS_WEIGHT IS NULL AND l_single_row_attrs.GROSS_WEIGHT IS NOT NULL THEN
4066         l_single_row_attrs.UOM_GROSS_WEIGHT := i.UOM_CODE;
4067       ELSIF i.APPLICATION_COLUMN_NAME = 'PEG_VERTICAL'
4068           AND l_single_row_attrs.UOM_PEG_VERTICAL IS NULL AND l_single_row_attrs.PEG_VERTICAL IS NOT NULL THEN
4069         l_single_row_attrs.UOM_PEG_VERTICAL := i.UOM_CODE;
4070       ELSIF i.APPLICATION_COLUMN_NAME = 'PEG_HORIZONTAL'
4071           AND l_single_row_attrs.UOM_PEG_HORIZONTAL IS NULL AND l_single_row_attrs.PEG_HORIZONTAL IS NOT NULL THEN
4072         l_single_row_attrs.UOM_PEG_HORIZONTAL := i.UOM_CODE;
4073       ELSIF i.APPLICATION_COLUMN_NAME = 'DRAINED_WEIGHT'
4074           AND l_single_row_attrs.UOM_DRAINED_WEIGHT IS NULL AND l_single_row_attrs.DRAINED_WEIGHT IS NOT NULL THEN
4075         l_single_row_attrs.UOM_DRAINED_WEIGHT := i.UOM_CODE;
4076       ELSIF i.APPLICATION_COLUMN_NAME = 'DIAMETER'
4077           AND l_single_row_attrs.UOM_DIAMETER IS NULL AND l_single_row_attrs.DIAMETER IS NOT NULL THEN
4078         l_single_row_attrs.UOM_DIAMETER := i.UOM_CODE;
4079       ELSIF i.APPLICATION_COLUMN_NAME = 'ORDERING_LEAD_TIME'
4080           AND l_single_row_attrs.UOM_ORDERING_LEAD_TIME IS NULL AND l_single_row_attrs.ORDERING_LEAD_TIME IS NOT NULL THEN
4081         l_single_row_attrs.UOM_ORDERING_LEAD_TIME := i.UOM_CODE;
4082       ELSIF i.APPLICATION_COLUMN_NAME = 'GENERIC_INGREDIENT_STRGTH'
4083           AND l_single_row_attrs.UOM_GENERIC_INGREDIENT_STRGTH IS NULL AND l_single_row_attrs.GENERIC_INGREDIENT_STRGTH IS NOT NULL THEN
4084         l_single_row_attrs.UOM_GENERIC_INGREDIENT_STRGTH := i.UOM_CODE;
4085       ELSIF i.APPLICATION_COLUMN_NAME = 'STACKING_WEIGHT_MAXIMUM'
4086           AND l_single_row_attrs.UOM_STACKING_WEIGHT_MAXIMUM IS NULL AND l_single_row_attrs.STACKING_WEIGHT_MAXIMUM IS NOT NULL THEN
4087         l_single_row_attrs.UOM_STACKING_WEIGHT_MAXIMUM := i.UOM_CODE;
4088       ELSIF i.APPLICATION_COLUMN_NAME = 'PIECES_PER_TRADE_ITEM'
4089           AND l_single_row_attrs.UOM_PIECES_PER_TRADE_ITEM IS NULL AND l_single_row_attrs.PIECES_PER_TRADE_ITEM IS NOT NULL THEN
4090         l_single_row_attrs.UOM_PIECES_PER_TRADE_ITEM := i.UOM_CODE;
4091       ELSIF i.APPLICATION_COLUMN_NAME = 'NESTING_INCREMENT'
4092           AND l_single_row_attrs.UOM_NESTING_INCREMENT IS NULL AND l_single_row_attrs.NESTING_INCREMENT IS NOT NULL THEN
4093         l_single_row_attrs.UOM_NESTING_INCREMENT := i.UOM_CODE;
4094       ELSIF i.APPLICATION_COLUMN_NAME = 'DEL_TO_DIST_CNTR_TEMP_MIN'
4095           AND l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN IS NULL AND l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MIN IS NOT NULL THEN
4096         l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN := i.UOM_CODE;
4097       ELSIF i.APPLICATION_COLUMN_NAME = 'DEL_TO_DIST_CNTR_TEMP_MAX'
4098           AND l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX IS NULL AND l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MAX IS NOT NULL THEN
4099         l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX := i.UOM_CODE;
4100       ELSIF i.APPLICATION_COLUMN_NAME = 'DELIVERY_TO_MRKT_TEMP_MIN'
4101           AND l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN IS NULL AND l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MIN IS NOT NULL THEN
4102         l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN := i.UOM_CODE;
4103       ELSIF i.APPLICATION_COLUMN_NAME = 'DELIVERY_TO_MRKT_TEMP_MAX'
4104           AND l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX IS NULL AND l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MAX IS NOT NULL THEN
4105         l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX := i.UOM_CODE;
4106       ELSIF i.APPLICATION_COLUMN_NAME = 'STORAGE_HANDLING_TEMP_MIN'
4107           AND l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN IS NULL AND l_single_row_attrs.STORAGE_HANDLING_TEMP_MIN IS NOT NULL THEN
4108         l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN := i.UOM_CODE;
4109       ELSIF i.APPLICATION_COLUMN_NAME = 'STORAGE_HANDLING_TEMP_MAX'
4110           AND l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX IS NULL AND l_single_row_attrs.STORAGE_HANDLING_TEMP_MAX IS NOT NULL THEN
4111         l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX := i.UOM_CODE;
4112       ELSIF i.APPLICATION_COLUMN_NAME = 'FLASH_POINT_TEMP' AND l_multi_row_attrs.FIRST IS NOT NULL THEN
4113         l_index := l_multi_row_attrs.FIRST;
4114         WHILE l_index IS NOT NULL LOOP
4115           IF l_multi_row_attrs(l_index).FLASH_POINT_TEMP IS NOT NULL AND l_multi_row_attrs(l_index).UOM_FLASH_POINT_TEMP IS NULL THEN
4116             l_multi_row_attrs(l_index).UOM_FLASH_POINT_TEMP := i.UOM_CODE;
4117           END IF;
4118           l_index := l_multi_row_attrs.NEXT(l_index);
4119         END LOOP;
4120       END IF;
4121     END LOOP;
4122 
4123     Debug_Msg('Calling Validate_Attributes');
4124     Validate_Attributes(
4125            p_inventory_item_id     -- p_inventory_item_id
4126           ,p_organization_id       -- p_organization_id
4127           ,l_single_row_attrs      -- p_single_row_attrs_rec
4128           ,l_multi_row_attrs       -- p_multi_row_attrs_tbl
4129           ,null                    -- p_extra_attrs_rec
4130           ,l_return_status         -- x_return_status
4131           ,l_msg_count             -- x_msg_count
4132           ,l_msg_data              -- x_msg_data
4133           );
4134 
4135     Debug_Msg('After Validate_Attributes, Return_Status='||l_return_status);
4136     IF l_return_status <> 'S' THEN
4137       x_return_status := l_return_status;
4138       x_msg_count := l_msg_count;
4139       x_msg_data := l_msg_data;
4140       IF l_msg_count > 0 AND l_return_status <> 'U' THEN
4141         FOR cnt IN 1..l_msg_count LOOP
4142           Debug_Msg('Error msg - '||cnt ||': '|| FND_MSG_PUB.Get(p_msg_index => cnt, p_encoded => 'F'));
4143           l_msg_text := FND_MSG_PUB.Get(p_msg_index => cnt, p_encoded => 'F');
4144           ERROR_HANDLER.Add_Error_Message
4145             (
4146               p_message_text                  => l_msg_text
4147              ,p_application_id                => 'EGO'
4148              ,p_message_type                  => FND_API.G_RET_STS_ERROR
4149              ,p_row_identifier                => p_inventory_item_id
4150              ,p_entity_id                     => p_entity_id
4151              ,p_entity_index                  => p_entity_index
4152              ,p_entity_code                   => p_entity_code
4153             );
4154         END LOOP;
4155       ELSIF l_msg_count > 0 AND l_return_status = 'U' THEN
4156         Debug_Msg('Error msg - '|| l_msg_data);
4157         l_msg_text := l_msg_data;
4158         ERROR_HANDLER.Add_Error_Message
4159           (
4160             p_message_text                  => l_msg_text
4161            ,p_application_id                => 'EGO'
4162            ,p_message_type                  => FND_API.G_RET_STS_ERROR
4163            ,p_row_identifier                => p_inventory_item_id
4164            ,p_entity_id                     => p_entity_id
4165            ,p_entity_index                  => p_entity_index
4166            ,p_entity_code                   => p_entity_code
4167           );
4168       END IF; -- IF l_msg_count
4169 
4170       IF (FND_API.To_Boolean(p_init_error_handler)) THEN
4171         ERROR_HANDLER.Log_Error
4172          (p_write_err_to_inttable    => 'Y'
4173          ,p_write_err_to_conclog     => 'N'
4174          ,p_write_err_to_debugfile   => ERROR_HANDLER.Get_Debug()
4175         );
4176       END IF;
4177       Debug_Msg('Returning from Process_UCCnet_Attrs_For_Item');
4178       RETURN;
4179     END IF; -- IF l_return_status <> 'S
4180 
4181     l_attributes_row_table := EGO_USER_ATTR_ROW_TABLE();
4182     l_attributes_data_table := EGO_USER_ATTR_DATA_TABLE();
4183 
4184     Debug_Msg('Populating Attributes metadata into local array');
4185     FOR i IN c_attr_metadata LOOP
4186       IF i.ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_ATTRS' THEN
4187         l_single_row_attrs_metadata(i.DATABASE_COLUMN).ATTR_GROUP_NAME := i.ATTR_GROUP_NAME;
4188         l_single_row_attrs_metadata(i.DATABASE_COLUMN).ATTR_NAME := i.ATTR_NAME;
4189       ELSIF i.ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_MULTI_ATTRS' THEN
4190         l_multi_row_attrs_metadata(i.DATABASE_COLUMN).ATTR_GROUP_NAME := i.ATTR_GROUP_NAME;
4191         l_multi_row_attrs_metadata(i.DATABASE_COLUMN).ATTR_NAME := i.ATTR_NAME;
4192       END IF;
4193     END LOOP;
4194 
4195     Debug_Msg('Populating single row attributes');
4196     -- Populating single row attributes
4197     IF l_single_row_attrs.BRAND_NAME IS NOT NULL THEN
4198       IF l_single_row_attrs.BRAND_NAME = G_MISS_CHAR THEN
4199         l_single_row_attrs.BRAND_NAME := NULL;
4200       END IF;
4201       Debug_Msg('Creating Attribute Data Object for BRAND_NAME - '||l_single_row_attrs.BRAND_NAME);
4202       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4203                                                   l_single_row_attrs_metadata('BRAND_NAME').ATTR_GROUP_NAME,
4204                                                   FALSE);
4205       l_attributes_data_table.EXTEND;
4206       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4207                                                                  l_row_identifier,
4208                                                                  l_single_row_attrs_metadata('BRAND_NAME').ATTR_NAME,
4209                                                                  l_single_row_attrs.BRAND_NAME,
4210                                                                  NULL, NULL, NULL, NULL, NULL);
4211       l_attribute_names.EXTEND;
4212       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('BRAND_NAME').ATTR_NAME;
4213     END IF;
4214 
4215     IF l_single_row_attrs.INVOICE_NAME IS NOT NULL THEN
4216       IF l_single_row_attrs.INVOICE_NAME = G_MISS_CHAR THEN
4217         l_single_row_attrs.INVOICE_NAME := NULL;
4218       END IF;
4219       Debug_Msg('Creating Attribute Data Object for INVOICE_NAME - '||l_single_row_attrs.INVOICE_NAME);
4220       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4221                                                   l_single_row_attrs_metadata('INVOICE_NAME').ATTR_GROUP_NAME,
4222                                                   FALSE);
4223       l_attributes_data_table.EXTEND;
4224       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4225                                                                  l_row_identifier,
4226                                                                  l_single_row_attrs_metadata('INVOICE_NAME').ATTR_NAME,
4227                                                                  l_single_row_attrs.INVOICE_NAME,
4228                                                                  NULL, NULL, NULL, NULL, NULL);
4229       l_attribute_names.EXTEND;
4230       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('INVOICE_NAME').ATTR_NAME;
4231     END IF;
4232 
4233     IF l_single_row_attrs.SUB_BRAND IS NOT NULL THEN
4234       IF l_single_row_attrs.SUB_BRAND = G_MISS_CHAR THEN
4235         l_single_row_attrs.SUB_BRAND := NULL;
4236       END IF;
4237       Debug_Msg('Creating Attribute Data Object for SUB_BRAND - '||l_single_row_attrs.SUB_BRAND);
4238       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4239                                                   l_single_row_attrs_metadata('SUB_BRAND').ATTR_GROUP_NAME,
4240                                                   FALSE);
4241       l_attributes_data_table.EXTEND;
4242       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4243                                                                  l_row_identifier,
4244                                                                  l_single_row_attrs_metadata('SUB_BRAND').ATTR_NAME,
4245                                                                  l_single_row_attrs.SUB_BRAND,
4246                                                                  NULL, NULL, NULL, NULL, NULL);
4247       l_attribute_names.EXTEND;
4248       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('SUB_BRAND').ATTR_NAME;
4249     END IF;
4250 
4251     IF l_single_row_attrs.EANUCC_CODE IS NOT NULL THEN
4252       IF l_single_row_attrs.EANUCC_CODE = G_MISS_CHAR THEN
4253         l_single_row_attrs.EANUCC_CODE := NULL;
4254       END IF;
4255       Debug_Msg('Creating Attribute Data Object for EANUCC_CODE - '||l_single_row_attrs.EANUCC_CODE);
4256       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4257                                                   l_single_row_attrs_metadata('EANUCC_CODE').ATTR_GROUP_NAME,
4258                                                   FALSE);
4259       l_attributes_data_table.EXTEND;
4260       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4261                                                                  l_row_identifier,
4262                                                                  l_single_row_attrs_metadata('EANUCC_CODE').ATTR_NAME,
4263                                                                  l_single_row_attrs.EANUCC_CODE,
4264                                                                  NULL, NULL, NULL, NULL, NULL);
4265       l_attribute_names.EXTEND;
4266       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('EANUCC_CODE').ATTR_NAME;
4267     END IF;
4268 
4269     IF l_single_row_attrs.EANUCC_TYPE IS NOT NULL THEN
4270       IF l_single_row_attrs.EANUCC_TYPE = G_MISS_CHAR THEN
4271         l_single_row_attrs.EANUCC_TYPE := NULL;
4272       END IF;
4273       Debug_Msg('Creating Attribute Data Object for EANUCC_TYPE - '||l_single_row_attrs.EANUCC_TYPE);
4274       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4275                                                   l_single_row_attrs_metadata('EANUCC_TYPE').ATTR_GROUP_NAME,
4276                                                   FALSE);
4277       l_attributes_data_table.EXTEND;
4278       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4279                                                                  l_row_identifier,
4280                                                                  l_single_row_attrs_metadata('EANUCC_TYPE').ATTR_NAME,
4281                                                                  l_single_row_attrs.EANUCC_TYPE,
4282                                                                  NULL, NULL, NULL, NULL, NULL);
4283       l_attribute_names.EXTEND;
4284       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('EANUCC_TYPE').ATTR_NAME;
4285     END IF;
4286 
4287     IF l_single_row_attrs.DESCRIPTION_SHORT IS NOT NULL THEN
4288       IF l_single_row_attrs.DESCRIPTION_SHORT = G_MISS_CHAR THEN
4289         l_single_row_attrs.DESCRIPTION_SHORT := NULL;
4290       END IF;
4291       Debug_Msg('Creating Attribute Data Object for DESCRIPTION_SHORT - '||l_single_row_attrs.DESCRIPTION_SHORT);
4292       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4293                                                   l_single_row_attrs_metadata('DESCRIPTION_SHORT').ATTR_GROUP_NAME,
4294                                                   FALSE);
4295       l_attributes_data_table.EXTEND;
4296       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4297                                                                  l_row_identifier,
4298                                                                  l_single_row_attrs_metadata('DESCRIPTION_SHORT').ATTR_NAME,
4299                                                                  l_single_row_attrs.DESCRIPTION_SHORT,
4300                                                                  NULL, NULL, NULL, NULL, NULL);
4301       l_attribute_names.EXTEND;
4302       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DESCRIPTION_SHORT').ATTR_NAME;
4303     END IF;
4304 
4305     IF l_single_row_attrs.TRADE_ITEM_COUPON IS NOT NULL THEN
4306       IF l_single_row_attrs.TRADE_ITEM_COUPON = G_MISS_NUM THEN
4307         l_single_row_attrs.TRADE_ITEM_COUPON := NULL;
4308       END IF;
4309       Debug_Msg('Creating Attribute Data Object for TRADE_ITEM_COUPON - '||l_single_row_attrs.TRADE_ITEM_COUPON);
4310       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4311                                                   l_single_row_attrs_metadata('TRADE_ITEM_COUPON').ATTR_GROUP_NAME,
4312                                                   FALSE);
4313       l_attributes_data_table.EXTEND;
4314       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4315                                                                  l_row_identifier,
4316                                                                  l_single_row_attrs_metadata('TRADE_ITEM_COUPON').ATTR_NAME,
4317                                                                  NULL,
4318                                                                  l_single_row_attrs.TRADE_ITEM_COUPON,
4319                                                                  NULL, NULL, NULL, NULL);
4320       l_attribute_names.EXTEND;
4321       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('TRADE_ITEM_COUPON').ATTR_NAME;
4322     END IF;
4323 
4324     IF l_single_row_attrs.TRADE_ITEM_FORM_DESCRIPTION IS NOT NULL THEN
4325       IF l_single_row_attrs.TRADE_ITEM_FORM_DESCRIPTION = G_MISS_CHAR THEN
4326         l_single_row_attrs.TRADE_ITEM_FORM_DESCRIPTION := NULL;
4327       END IF;
4328       Debug_Msg('Creating Attribute Data Object for TRADE_ITEM_FORM_DESCRIPTION - '||l_single_row_attrs.TRADE_ITEM_FORM_DESCRIPTION);
4329       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4330                                                   l_single_row_attrs_metadata('TRADE_ITEM_FORM_DESCRIPTION').ATTR_GROUP_NAME,
4331                                                   FALSE);
4332       l_attributes_data_table.EXTEND;
4333       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4334                                                                  l_row_identifier,
4335                                                                  l_single_row_attrs_metadata('TRADE_ITEM_FORM_DESCRIPTION').ATTR_NAME,
4336                                                                  l_single_row_attrs.TRADE_ITEM_FORM_DESCRIPTION,
4337                                                                  NULL, NULL, NULL, NULL, NULL);
4338       l_attribute_names.EXTEND;
4339       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('TRADE_ITEM_FORM_DESCRIPTION').ATTR_NAME;
4340     END IF;
4341 
4342     IF l_single_row_attrs.FUNCTIONAL_NAME IS NOT NULL THEN
4343       IF l_single_row_attrs.FUNCTIONAL_NAME = G_MISS_CHAR THEN
4344         l_single_row_attrs.FUNCTIONAL_NAME := NULL;
4345       END IF;
4346       Debug_Msg('Creating Attribute Data Object for FUNCTIONAL_NAME - '||l_single_row_attrs.FUNCTIONAL_NAME);
4347       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4348                                                   l_single_row_attrs_metadata('FUNCTIONAL_NAME').ATTR_GROUP_NAME,
4349                                                   FALSE);
4350       l_attributes_data_table.EXTEND;
4351       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4352                                                                  l_row_identifier,
4353                                                                  l_single_row_attrs_metadata('FUNCTIONAL_NAME').ATTR_NAME,
4354                                                                  l_single_row_attrs.FUNCTIONAL_NAME,
4355                                                                  NULL, NULL, NULL, NULL, NULL);
4356       l_attribute_names.EXTEND;
4357       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('FUNCTIONAL_NAME').ATTR_NAME;
4358     END IF;
4359 
4360     IF l_single_row_attrs.IS_BARCODE_SYMBOLOGY_DERIVABLE IS NOT NULL THEN
4361       IF l_single_row_attrs.IS_BARCODE_SYMBOLOGY_DERIVABLE = G_MISS_CHAR THEN
4362         l_single_row_attrs.IS_BARCODE_SYMBOLOGY_DERIVABLE := NULL;
4363       END IF;
4364       Debug_Msg('Creating Attribute Data Object for IS_BARCODE_SYMBOLOGY_DERIVABLE - '||l_single_row_attrs.IS_BARCODE_SYMBOLOGY_DERIVABLE);
4365       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4366                                                   l_single_row_attrs_metadata('IS_BARCODE_SYMBOLOGY_DERIVABLE').ATTR_GROUP_NAME,
4367                                                   FALSE);
4368       l_attributes_data_table.EXTEND;
4369       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4370                                                                  l_row_identifier,
4371                                                                  l_single_row_attrs_metadata('IS_BARCODE_SYMBOLOGY_DERIVABLE').ATTR_NAME,
4372                                                                  l_single_row_attrs.IS_BARCODE_SYMBOLOGY_DERIVABLE,
4373                                                                  NULL, NULL, NULL, NULL, NULL);
4374       l_attribute_names.EXTEND;
4375       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_BARCODE_SYMBOLOGY_DERIVABLE').ATTR_NAME;
4376     END IF;
4377 
4378     IF l_single_row_attrs.BRAND_OWNER_GLN IS NOT NULL THEN
4379       IF l_single_row_attrs.BRAND_OWNER_GLN = G_MISS_CHAR THEN
4380         l_single_row_attrs.BRAND_OWNER_GLN := NULL;
4381       END IF;
4382       Debug_Msg('Creating Attribute Data Object for BRAND_OWNER_GLN - '||l_single_row_attrs.BRAND_OWNER_GLN);
4383       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4384                                                   l_single_row_attrs_metadata('BRAND_OWNER_GLN').ATTR_GROUP_NAME,
4385                                                   FALSE);
4386       l_attributes_data_table.EXTEND;
4387       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4388                                                                  l_row_identifier,
4389                                                                  l_single_row_attrs_metadata('BRAND_OWNER_GLN').ATTR_NAME,
4390                                                                  l_single_row_attrs.BRAND_OWNER_GLN,
4391                                                                  NULL, NULL, NULL, NULL, NULL);
4392       l_attribute_names.EXTEND;
4393       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('BRAND_OWNER_GLN').ATTR_NAME;
4394     END IF;
4395 
4396     IF l_single_row_attrs.BRAND_OWNER_NAME IS NOT NULL THEN
4397       IF l_single_row_attrs.BRAND_OWNER_NAME = G_MISS_CHAR THEN
4398         l_single_row_attrs.BRAND_OWNER_NAME := NULL;
4399       END IF;
4400       Debug_Msg('Creating Attribute Data Object for BRAND_OWNER_NAME - '||l_single_row_attrs.BRAND_OWNER_NAME);
4401       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4402                                                   l_single_row_attrs_metadata('BRAND_OWNER_NAME').ATTR_GROUP_NAME,
4403                                                   FALSE);
4404       l_attributes_data_table.EXTEND;
4405       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4406                                                                  l_row_identifier,
4407                                                                  l_single_row_attrs_metadata('BRAND_OWNER_NAME').ATTR_NAME,
4408                                                                  l_single_row_attrs.BRAND_OWNER_NAME,
4409                                                                  NULL, NULL, NULL, NULL, NULL);
4410       l_attribute_names.EXTEND;
4411       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('BRAND_OWNER_NAME').ATTR_NAME;
4412     END IF;
4413 
4414     IF l_single_row_attrs.NET_CONTENT IS NOT NULL THEN
4415       IF l_single_row_attrs.NET_CONTENT = G_MISS_NUM THEN
4416         l_single_row_attrs.NET_CONTENT := NULL;
4417       END IF;
4418       Debug_Msg('Creating Attribute Data Object for NET_CONTENT - '||l_single_row_attrs.NET_CONTENT);
4419       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4420                                                   l_single_row_attrs_metadata('NET_CONTENT').ATTR_GROUP_NAME,
4421                                                   FALSE);
4422       l_attributes_data_table.EXTEND;
4423       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4424                                                                  l_row_identifier,
4425                                                                  l_single_row_attrs_metadata('NET_CONTENT').ATTR_NAME,
4426                                                                  NULL,
4427                                                                  l_single_row_attrs.NET_CONTENT,
4428                                                                  NULL, NULL, NULL, NULL);
4429       l_attribute_names.EXTEND;
4430       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('NET_CONTENT').ATTR_NAME;
4431     END IF;
4432 
4433     IF l_single_row_attrs.GROSS_WEIGHT IS NOT NULL THEN
4434       IF l_single_row_attrs.GROSS_WEIGHT = G_MISS_NUM THEN
4435         l_single_row_attrs.GROSS_WEIGHT := NULL;
4436       END IF;
4437       IF l_single_row_attrs.UOM_GROSS_WEIGHT = G_MISS_CHAR THEN
4438         l_single_row_attrs.UOM_GROSS_WEIGHT := NULL;
4439       END IF;
4440       Debug_Msg('Creating Attribute Data Object for GROSS_WEIGHT - '||l_single_row_attrs.GROSS_WEIGHT);
4441       Debug_Msg('Creating Attribute Data Object for UOM_GROSS_WEIGHT - '||l_single_row_attrs.UOM_GROSS_WEIGHT);
4442 
4443       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4444                                                   l_single_row_attrs_metadata('GROSS_WEIGHT').ATTR_GROUP_NAME,
4445                                                   FALSE);
4446       l_attributes_data_table.EXTEND;
4447       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4448                                                                  l_row_identifier,
4449                                                                  l_single_row_attrs_metadata('GROSS_WEIGHT').ATTR_NAME,
4450                                                                  NULL,
4451                                                                  l_single_row_attrs.GROSS_WEIGHT,
4452                                                                  NULL, NULL, l_single_row_attrs.UOM_GROSS_WEIGHT, NULL);
4453       l_attribute_names.EXTEND;
4454       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('GROSS_WEIGHT').ATTR_NAME;
4455     END IF;
4456 
4457     IF l_single_row_attrs.UOM_NET_CONTENT IS NOT NULL THEN
4458       IF l_single_row_attrs.UOM_NET_CONTENT = G_MISS_CHAR THEN
4459         l_single_row_attrs.UOM_NET_CONTENT := NULL;
4460       END IF;
4461       Debug_Msg('Creating Attribute Data Object for UOM_NET_CONTENT - '||l_single_row_attrs.UOM_NET_CONTENT);
4462       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4463                                                   l_single_row_attrs_metadata('UOM_NET_CONTENT').ATTR_GROUP_NAME,
4464                                                   FALSE);
4465       l_attributes_data_table.EXTEND;
4466       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4467                                                                  l_row_identifier,
4468                                                                  l_single_row_attrs_metadata('UOM_NET_CONTENT').ATTR_NAME,
4469                                                                  l_single_row_attrs.UOM_NET_CONTENT,
4470                                                                  NULL, NULL, NULL, NULL, NULL);
4471       l_attribute_names.EXTEND;
4472       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('UOM_NET_CONTENT').ATTR_NAME;
4473     END IF;
4474 
4475     IF l_single_row_attrs.DIAMETER IS NOT NULL THEN
4476       IF l_single_row_attrs.DIAMETER = G_MISS_NUM THEN
4477         l_single_row_attrs.DIAMETER := NULL;
4478       END IF;
4479       IF l_single_row_attrs.UOM_DIAMETER = G_MISS_CHAR THEN
4480         l_single_row_attrs.UOM_DIAMETER := NULL;
4481       END IF;
4482       Debug_Msg('Creating Attribute Data Object for DIAMETER - '||l_single_row_attrs.DIAMETER);
4483       Debug_Msg('Creating Attribute Data Object for UOM_DIAMETER - '||l_single_row_attrs.UOM_DIAMETER);
4484 
4485       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4486                                                   l_single_row_attrs_metadata('DIAMETER').ATTR_GROUP_NAME,
4487                                                   FALSE);
4488       l_attributes_data_table.EXTEND;
4489       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4490                                                                  l_row_identifier,
4491                                                                  l_single_row_attrs_metadata('DIAMETER').ATTR_NAME,
4492                                                                  NULL,
4493                                                                  l_single_row_attrs.DIAMETER,
4494                                                                  NULL, NULL, l_single_row_attrs.UOM_DIAMETER, NULL);
4495       l_attribute_names.EXTEND;
4496       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DIAMETER').ATTR_NAME;
4497     END IF;
4498 
4499     IF l_single_row_attrs.DEPT_OF_TRNSPRT_DANG_GOODS_NUM IS NOT NULL THEN
4500       IF l_single_row_attrs.DEPT_OF_TRNSPRT_DANG_GOODS_NUM = G_MISS_CHAR THEN
4501         l_single_row_attrs.DEPT_OF_TRNSPRT_DANG_GOODS_NUM := NULL;
4502       END IF;
4503       Debug_Msg('Creating Attribute Data Object for DEPT_OF_TRNSPRT_DANG_GOODS_NUM - '||l_single_row_attrs.DEPT_OF_TRNSPRT_DANG_GOODS_NUM);
4504       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4505                                                   l_single_row_attrs_metadata('DEPT_OF_TRNSPRT_DANG_GOODS_NUM').ATTR_GROUP_NAME,
4506                                                   FALSE);
4507       l_attributes_data_table.EXTEND;
4508       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4509                                                                  l_row_identifier,
4510                                                                  l_single_row_attrs_metadata('DEPT_OF_TRNSPRT_DANG_GOODS_NUM').ATTR_NAME,
4511                                                                  l_single_row_attrs.DEPT_OF_TRNSPRT_DANG_GOODS_NUM,
4512                                                                  NULL, NULL, NULL, NULL, NULL);
4513       l_attribute_names.EXTEND;
4514       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DEPT_OF_TRNSPRT_DANG_GOODS_NUM').ATTR_NAME;
4515     END IF;
4516 
4517     IF l_single_row_attrs.RETURN_GOODS_POLICY IS NOT NULL THEN
4518       IF l_single_row_attrs.RETURN_GOODS_POLICY = G_MISS_CHAR THEN
4519         l_single_row_attrs.RETURN_GOODS_POLICY := NULL;
4520       END IF;
4521       Debug_Msg('Creating Attribute Data Object for RETURN_GOODS_POLICY - '||l_single_row_attrs.RETURN_GOODS_POLICY);
4522       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4523                                                   l_single_row_attrs_metadata('RETURN_GOODS_POLICY').ATTR_GROUP_NAME,
4524                                                   FALSE);
4525       l_attributes_data_table.EXTEND;
4526       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4527                                                                  l_row_identifier,
4528                                                                  l_single_row_attrs_metadata('RETURN_GOODS_POLICY').ATTR_NAME,
4529                                                                  l_single_row_attrs.RETURN_GOODS_POLICY,
4530                                                                  NULL, NULL, NULL, NULL, NULL);
4531       l_attribute_names.EXTEND;
4532       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('RETURN_GOODS_POLICY').ATTR_NAME;
4533     END IF;
4534 
4535     IF l_single_row_attrs.EFFECTIVE_END_DATE IS NOT NULL THEN
4536       IF l_single_row_attrs.EFFECTIVE_END_DATE = G_MISS_DATE THEN
4537         l_single_row_attrs.EFFECTIVE_END_DATE := NULL;
4538       END IF;
4539       Debug_Msg('Creating Attribute Data Object for EFFECTIVE_END_DATE - '||l_single_row_attrs.EFFECTIVE_END_DATE);
4540       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4541                                                   l_single_row_attrs_metadata('EFFECTIVE_END_DATE').ATTR_GROUP_NAME,
4542                                                   FALSE);
4543       l_attributes_data_table.EXTEND;
4544       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4545                                                                  l_row_identifier,
4546                                                                  l_single_row_attrs_metadata('EFFECTIVE_END_DATE').ATTR_NAME,
4547                                                                  NULL, NULL,
4548                                                                  l_single_row_attrs.EFFECTIVE_END_DATE,
4549                                                                  NULL, NULL, NULL);
4550       l_attribute_names.EXTEND;
4551       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('EFFECTIVE_END_DATE').ATTR_NAME;
4552     END IF;
4553 
4554     IF l_single_row_attrs.SUGGESTED_RETAIL_PRICE IS NOT NULL THEN
4555       IF l_single_row_attrs.SUGGESTED_RETAIL_PRICE = G_MISS_NUM THEN
4556         l_single_row_attrs.SUGGESTED_RETAIL_PRICE := NULL;
4557       END IF;
4558       Debug_Msg('Creating Attribute Data Object for SUGGESTED_RETAIL_PRICE - '||l_single_row_attrs.SUGGESTED_RETAIL_PRICE);
4559       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4560                                                   l_single_row_attrs_metadata('SUGGESTED_RETAIL_PRICE').ATTR_GROUP_NAME,
4561                                                   FALSE);
4562       l_attributes_data_table.EXTEND;
4563       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4564                                                                  l_row_identifier,
4565                                                                  l_single_row_attrs_metadata('SUGGESTED_RETAIL_PRICE').ATTR_NAME,
4566                                                                  NULL,
4567                                                                  l_single_row_attrs.SUGGESTED_RETAIL_PRICE,
4568                                                                  NULL, NULL, NULL, NULL);
4569       l_attribute_names.EXTEND;
4570       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('SUGGESTED_RETAIL_PRICE').ATTR_NAME;
4571     END IF;
4572 
4573     IF l_single_row_attrs.IS_TRADE_ITEM_A_CONSUMER_UNIT IS NOT NULL THEN
4574       IF l_single_row_attrs.IS_TRADE_ITEM_A_CONSUMER_UNIT = G_MISS_CHAR THEN
4575         l_single_row_attrs.IS_TRADE_ITEM_A_CONSUMER_UNIT := NULL;
4576       END IF;
4577       Debug_Msg('Creating Attribute Data Object for IS_TRADE_ITEM_A_CONSUMER_UNIT - '||l_single_row_attrs.IS_TRADE_ITEM_A_CONSUMER_UNIT);
4578       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4579                                                   l_single_row_attrs_metadata('IS_TRADE_ITEM_A_CONSUMER_UNIT').ATTR_GROUP_NAME,
4580                                                   FALSE);
4581       l_attributes_data_table.EXTEND;
4582       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4583                                                                  l_row_identifier,
4584                                                                  l_single_row_attrs_metadata('IS_TRADE_ITEM_A_CONSUMER_UNIT').ATTR_NAME,
4585                                                                  l_single_row_attrs.IS_TRADE_ITEM_A_CONSUMER_UNIT,
4586                                                                  NULL, NULL, NULL, NULL, NULL);
4587       l_attribute_names.EXTEND;
4588       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_TRADE_ITEM_A_CONSUMER_UNIT').ATTR_NAME;
4589     END IF;
4590 
4591     IF l_single_row_attrs.IS_TRADE_ITEM_A_BASE_UNIT IS NOT NULL THEN
4592       IF l_single_row_attrs.IS_TRADE_ITEM_A_BASE_UNIT = G_MISS_CHAR THEN
4593         l_single_row_attrs.IS_TRADE_ITEM_A_BASE_UNIT := NULL;
4594       END IF;
4595       Debug_Msg('Creating Attribute Data Object for IS_TRADE_ITEM_A_BASE_UNIT - '||l_single_row_attrs.IS_TRADE_ITEM_A_BASE_UNIT);
4596       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4597                                                   l_single_row_attrs_metadata('IS_TRADE_ITEM_A_BASE_UNIT').ATTR_GROUP_NAME,
4598                                                   FALSE);
4599       l_attributes_data_table.EXTEND;
4600       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4601                                                                  l_row_identifier,
4602                                                                  l_single_row_attrs_metadata('IS_TRADE_ITEM_A_BASE_UNIT').ATTR_NAME,
4603                                                                  l_single_row_attrs.IS_TRADE_ITEM_A_BASE_UNIT,
4604                                                                  NULL, NULL, NULL, NULL, NULL);
4605       l_attribute_names.EXTEND;
4606       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_TRADE_ITEM_A_BASE_UNIT').ATTR_NAME;
4607     END IF;
4608 
4609     IF l_single_row_attrs.IS_TRADE_ITEM_A_VARIABLE_UNIT IS NOT NULL THEN
4610       IF l_single_row_attrs.IS_TRADE_ITEM_A_VARIABLE_UNIT = G_MISS_CHAR THEN
4611         l_single_row_attrs.IS_TRADE_ITEM_A_VARIABLE_UNIT := NULL;
4612       END IF;
4613       Debug_Msg('Creating Attribute Data Object for IS_TRADE_ITEM_A_VARIABLE_UNIT - '||l_single_row_attrs.IS_TRADE_ITEM_A_VARIABLE_UNIT);
4614       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4615                                                   l_single_row_attrs_metadata('IS_TRADE_ITEM_A_VARIABLE_UNIT').ATTR_GROUP_NAME,
4616                                                   FALSE);
4617       l_attributes_data_table.EXTEND;
4618       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4619                                                                  l_row_identifier,
4620                                                                  l_single_row_attrs_metadata('IS_TRADE_ITEM_A_VARIABLE_UNIT').ATTR_NAME,
4621                                                                  l_single_row_attrs.IS_TRADE_ITEM_A_VARIABLE_UNIT,
4622                                                                  NULL, NULL, NULL, NULL, NULL);
4623       l_attribute_names.EXTEND;
4624       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_TRADE_ITEM_A_VARIABLE_UNIT').ATTR_NAME;
4625     END IF;
4626 
4627     IF l_single_row_attrs.IS_NET_CONTENT_DEC_FLAG IS NOT NULL THEN
4628       IF l_single_row_attrs.IS_NET_CONTENT_DEC_FLAG = G_MISS_CHAR THEN
4629         l_single_row_attrs.IS_NET_CONTENT_DEC_FLAG := NULL;
4630       END IF;
4631       Debug_Msg('Creating Attribute Data Object for IS_NET_CONTENT_DEC_FLAG - '||l_single_row_attrs.IS_NET_CONTENT_DEC_FLAG);
4632       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4633                                                   l_single_row_attrs_metadata('IS_NET_CONTENT_DEC_FLAG').ATTR_GROUP_NAME,
4634                                                   FALSE);
4635       l_attributes_data_table.EXTEND;
4636       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4637                                                                  l_row_identifier,
4638                                                                  l_single_row_attrs_metadata('IS_NET_CONTENT_DEC_FLAG').ATTR_NAME,
4639                                                                  l_single_row_attrs.IS_NET_CONTENT_DEC_FLAG,
4640                                                                  NULL, NULL, NULL, NULL, NULL);
4641       l_attribute_names.EXTEND;
4642       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_NET_CONTENT_DEC_FLAG').ATTR_NAME;
4643     END IF;
4644 
4645     IF l_single_row_attrs.DRAINED_WEIGHT IS NOT NULL THEN
4646       IF l_single_row_attrs.DRAINED_WEIGHT = G_MISS_NUM THEN
4647         l_single_row_attrs.DRAINED_WEIGHT := NULL;
4648       END IF;
4649       IF l_single_row_attrs.UOM_DRAINED_WEIGHT = G_MISS_CHAR THEN
4650         l_single_row_attrs.UOM_DRAINED_WEIGHT := NULL;
4651       END IF;
4652       Debug_Msg('Creating Attribute Data Object for DRAINED_WEIGHT - '||l_single_row_attrs.DRAINED_WEIGHT);
4653       Debug_Msg('Creating Attribute Data Object for UOM_DRAINED_WEIGHT - '||l_single_row_attrs.UOM_DRAINED_WEIGHT);
4654 
4655       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4656                                                   l_single_row_attrs_metadata('DRAINED_WEIGHT').ATTR_GROUP_NAME,
4657                                                   FALSE);
4658       l_attributes_data_table.EXTEND;
4659       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4660                                                                  l_row_identifier,
4661                                                                  l_single_row_attrs_metadata('DRAINED_WEIGHT').ATTR_NAME,
4662                                                                  NULL,
4663                                                                  l_single_row_attrs.DRAINED_WEIGHT,
4664                                                                  NULL, NULL, l_single_row_attrs.UOM_DRAINED_WEIGHT, NULL);
4665       l_attribute_names.EXTEND;
4666       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DRAINED_WEIGHT').ATTR_NAME;
4667     END IF;
4668 
4669     IF l_single_row_attrs.PEG_HORIZONTAL IS NOT NULL THEN
4670       IF l_single_row_attrs.PEG_HORIZONTAL = G_MISS_NUM THEN
4671         l_single_row_attrs.PEG_HORIZONTAL := NULL;
4672       END IF;
4673       IF l_single_row_attrs.UOM_PEG_HORIZONTAL = G_MISS_CHAR THEN
4674         l_single_row_attrs.UOM_PEG_HORIZONTAL := NULL;
4675       END IF;
4676       Debug_Msg('Creating Attribute Data Object for PEG_HORIZONTAL - '||l_single_row_attrs.PEG_HORIZONTAL);
4677       Debug_Msg('Creating Attribute Data Object for UOM_PEG_HORIZONTAL - '||l_single_row_attrs.UOM_PEG_HORIZONTAL);
4678 
4679       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4680                                                   l_single_row_attrs_metadata('PEG_HORIZONTAL').ATTR_GROUP_NAME,
4681                                                   FALSE);
4682       l_attributes_data_table.EXTEND;
4683       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4684                                                                  l_row_identifier,
4685                                                                  l_single_row_attrs_metadata('PEG_HORIZONTAL').ATTR_NAME,
4686                                                                  NULL,
4687                                                                  l_single_row_attrs.PEG_HORIZONTAL,
4688                                                                  NULL, NULL, l_single_row_attrs.UOM_PEG_HORIZONTAL, NULL);
4689       l_attribute_names.EXTEND;
4690       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('PEG_HORIZONTAL').ATTR_NAME;
4691     END IF;
4692 
4693     IF l_single_row_attrs.PEG_VERTICAL IS NOT NULL THEN
4694       IF l_single_row_attrs.PEG_VERTICAL = G_MISS_NUM THEN
4695         l_single_row_attrs.PEG_VERTICAL := NULL;
4696       END IF;
4697       IF l_single_row_attrs.UOM_PEG_VERTICAL = G_MISS_CHAR THEN
4698         l_single_row_attrs.UOM_PEG_VERTICAL := NULL;
4699       END IF;
4700       Debug_Msg('Creating Attribute Data Object for PEG_VERTICAL - '||l_single_row_attrs.PEG_VERTICAL);
4701       Debug_Msg('Creating Attribute Data Object for UOM_PEG_VERTICAL - '||l_single_row_attrs.UOM_PEG_VERTICAL);
4702 
4703       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4704                                                   l_single_row_attrs_metadata('PEG_VERTICAL').ATTR_GROUP_NAME,
4705                                                   FALSE);
4706       l_attributes_data_table.EXTEND;
4707       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4708                                                                  l_row_identifier,
4709                                                                  l_single_row_attrs_metadata('PEG_VERTICAL').ATTR_NAME,
4710                                                                  NULL,
4711                                                                  l_single_row_attrs.PEG_VERTICAL,
4712                                                                  NULL, NULL, l_single_row_attrs.UOM_PEG_VERTICAL, NULL);
4713       l_attribute_names.EXTEND;
4714       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('PEG_VERTICAL').ATTR_NAME;
4715     END IF;
4716 
4717     IF l_single_row_attrs.IS_TRADE_ITEM_INFO_PRIVATE IS NOT NULL THEN
4718       IF l_single_row_attrs.IS_TRADE_ITEM_INFO_PRIVATE = G_MISS_CHAR THEN
4719         l_single_row_attrs.IS_TRADE_ITEM_INFO_PRIVATE := NULL;
4720       END IF;
4721       Debug_Msg('Creating Attribute Data Object for IS_TRADE_ITEM_INFO_PRIVATE - '||l_single_row_attrs.IS_TRADE_ITEM_INFO_PRIVATE);
4722       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4723                                                   l_single_row_attrs_metadata('IS_TRADE_ITEM_INFO_PRIVATE').ATTR_GROUP_NAME,
4724                                                   FALSE);
4725       l_attributes_data_table.EXTEND;
4726       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4727                                                                  l_row_identifier,
4728                                                                  l_single_row_attrs_metadata('IS_TRADE_ITEM_INFO_PRIVATE').ATTR_NAME,
4729                                                                  l_single_row_attrs.IS_TRADE_ITEM_INFO_PRIVATE,
4730                                                                  NULL, NULL, NULL, NULL, NULL);
4731       l_attribute_names.EXTEND;
4732       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_TRADE_ITEM_INFO_PRIVATE').ATTR_NAME;
4733     END IF;
4734 
4735     IF l_single_row_attrs.QUANTITY_OF_COMP_LAY_ITEM IS NOT NULL THEN
4736       IF l_single_row_attrs.QUANTITY_OF_COMP_LAY_ITEM = G_MISS_NUM THEN
4737         l_single_row_attrs.QUANTITY_OF_COMP_LAY_ITEM := NULL;
4738       END IF;
4739       Debug_Msg('Creating Attribute Data Object for QUANTITY_OF_COMP_LAY_ITEM - '||l_single_row_attrs.QUANTITY_OF_COMP_LAY_ITEM);
4740       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4741                                                   l_single_row_attrs_metadata('QUANTITY_OF_COMP_LAY_ITEM').ATTR_GROUP_NAME,
4742                                                   FALSE);
4743       l_attributes_data_table.EXTEND;
4744       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4745                                                                  l_row_identifier,
4746                                                                  l_single_row_attrs_metadata('QUANTITY_OF_COMP_LAY_ITEM').ATTR_NAME,
4747                                                                  NULL,
4748                                                                  l_single_row_attrs.QUANTITY_OF_COMP_LAY_ITEM,
4749                                                                  NULL, NULL, NULL, NULL);
4750       l_attribute_names.EXTEND;
4751       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('QUANTITY_OF_COMP_LAY_ITEM').ATTR_NAME;
4752     END IF;
4753 
4754     IF l_single_row_attrs.GENERIC_INGREDIENT IS NOT NULL THEN
4755       IF l_single_row_attrs.GENERIC_INGREDIENT = G_MISS_CHAR THEN
4756         l_single_row_attrs.GENERIC_INGREDIENT := NULL;
4757       END IF;
4758       Debug_Msg('Creating Attribute Data Object for GENERIC_INGREDIENT - '||l_single_row_attrs.GENERIC_INGREDIENT);
4759       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4760                                                   l_single_row_attrs_metadata('GENERIC_INGREDIENT').ATTR_GROUP_NAME,
4761                                                   FALSE);
4762       l_attributes_data_table.EXTEND;
4763       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4764                                                                  l_row_identifier,
4765                                                                  l_single_row_attrs_metadata('GENERIC_INGREDIENT').ATTR_NAME,
4766                                                                  l_single_row_attrs.GENERIC_INGREDIENT,
4767                                                                  NULL, NULL, NULL, NULL, NULL);
4768       l_attribute_names.EXTEND;
4769       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('GENERIC_INGREDIENT').ATTR_NAME;
4770     END IF;
4771 
4772     IF l_single_row_attrs.GENERIC_INGREDIENT_STRGTH IS NOT NULL THEN
4773       IF l_single_row_attrs.GENERIC_INGREDIENT_STRGTH = G_MISS_NUM THEN
4774         l_single_row_attrs.GENERIC_INGREDIENT_STRGTH := NULL;
4775       END IF;
4776       IF l_single_row_attrs.UOM_GENERIC_INGREDIENT_STRGTH = G_MISS_CHAR THEN
4777         l_single_row_attrs.UOM_GENERIC_INGREDIENT_STRGTH := NULL;
4778       END IF;
4779       Debug_Msg('Creating Attribute Data Object for GENERIC_INGREDIENT_STRGTH - '||l_single_row_attrs.GENERIC_INGREDIENT_STRGTH);
4780       Debug_Msg('Creating Attribute Data Object for UOM_GENERIC_INGREDIENT_STRGTH - '||l_single_row_attrs.UOM_GENERIC_INGREDIENT_STRGTH);
4781 
4782       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4783                                                   l_single_row_attrs_metadata('GENERIC_INGREDIENT_STRGTH').ATTR_GROUP_NAME,
4784                                                   FALSE);
4785       l_attributes_data_table.EXTEND;
4786       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4787                                                                  l_row_identifier,
4788                                                                  l_single_row_attrs_metadata('GENERIC_INGREDIENT_STRGTH').ATTR_NAME,
4789                                                                  NULL,
4790                                                                  l_single_row_attrs.GENERIC_INGREDIENT_STRGTH,
4791                                                                  NULL, NULL, l_single_row_attrs.UOM_GENERIC_INGREDIENT_STRGTH, NULL);
4792       l_attribute_names.EXTEND;
4793       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('GENERIC_INGREDIENT_STRGTH').ATTR_NAME;
4794     END IF;
4795 
4796     IF l_single_row_attrs.INGREDIENT_STRENGTH IS NOT NULL THEN
4797       IF l_single_row_attrs.INGREDIENT_STRENGTH = G_MISS_CHAR THEN
4798         l_single_row_attrs.INGREDIENT_STRENGTH := NULL;
4799       END IF;
4800       Debug_Msg('Creating Attribute Data Object for INGREDIENT_STRENGTH - '||l_single_row_attrs.INGREDIENT_STRENGTH);
4801       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4802                                                   l_single_row_attrs_metadata('INGREDIENT_STRENGTH').ATTR_GROUP_NAME,
4803                                                   FALSE);
4804       l_attributes_data_table.EXTEND;
4805       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4806                                                                  l_row_identifier,
4807                                                                  l_single_row_attrs_metadata('INGREDIENT_STRENGTH').ATTR_NAME,
4808                                                                  l_single_row_attrs.INGREDIENT_STRENGTH,
4809                                                                  NULL, NULL, NULL, NULL, NULL);
4810       l_attribute_names.EXTEND;
4811       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('INGREDIENT_STRENGTH').ATTR_NAME;
4812     END IF;
4813 
4814     IF l_single_row_attrs.EFFECTIVE_START_DATE IS NOT NULL THEN
4815       IF l_single_row_attrs.EFFECTIVE_START_DATE = G_MISS_DATE THEN
4816         l_single_row_attrs.EFFECTIVE_START_DATE := NULL;
4817       END IF;
4818       Debug_Msg('Creating Attribute Data Object for EFFECTIVE_START_DATE - '||l_single_row_attrs.EFFECTIVE_START_DATE);
4819       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4820                                                   l_single_row_attrs_metadata('EFFECTIVE_START_DATE').ATTR_GROUP_NAME,
4821                                                   FALSE);
4822       l_attributes_data_table.EXTEND;
4823       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4824                                                                  l_row_identifier,
4825                                                                  l_single_row_attrs_metadata('EFFECTIVE_START_DATE').ATTR_NAME,
4826                                                                  NULL, NULL,
4827                                                                  l_single_row_attrs.EFFECTIVE_START_DATE,
4828                                                                  NULL, NULL, NULL);
4829       l_attribute_names.EXTEND;
4830       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('EFFECTIVE_START_DATE').ATTR_NAME;
4831     END IF;
4832 
4833     IF l_single_row_attrs.CATALOG_PRICE IS NOT NULL THEN
4834       IF l_single_row_attrs.CATALOG_PRICE = G_MISS_NUM THEN
4835         l_single_row_attrs.CATALOG_PRICE := NULL;
4836       END IF;
4837       Debug_Msg('Creating Attribute Data Object for CATALOG_PRICE - '||l_single_row_attrs.CATALOG_PRICE);
4838       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4839                                                   l_single_row_attrs_metadata('CATALOG_PRICE').ATTR_GROUP_NAME,
4840                                                   FALSE);
4841       l_attributes_data_table.EXTEND;
4842       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4843                                                                  l_row_identifier,
4844                                                                  l_single_row_attrs_metadata('CATALOG_PRICE').ATTR_NAME,
4845                                                                  NULL,
4846                                                                  l_single_row_attrs.CATALOG_PRICE,
4847                                                                  NULL, NULL, NULL, NULL);
4848       l_attribute_names.EXTEND;
4849       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('CATALOG_PRICE').ATTR_NAME;
4850     END IF;
4851 
4852     IF l_single_row_attrs.START_AVAILABILITY_DATE_TIME IS NOT NULL THEN
4853       IF l_single_row_attrs.START_AVAILABILITY_DATE_TIME = G_MISS_DATE THEN
4854         l_single_row_attrs.START_AVAILABILITY_DATE_TIME := NULL;
4855       END IF;
4856       Debug_Msg('Creating Attribute Data Object for START_AVAILABILITY_DATE_TIME - '||l_single_row_attrs.START_AVAILABILITY_DATE_TIME);
4857       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4858                                                   l_single_row_attrs_metadata('START_AVAILABILITY_DATE_TIME').ATTR_GROUP_NAME,
4859                                                   FALSE);
4860       l_attributes_data_table.EXTEND;
4861       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4862                                                                  l_row_identifier,
4863                                                                  l_single_row_attrs_metadata('START_AVAILABILITY_DATE_TIME').ATTR_NAME,
4864                                                                  NULL, NULL,
4865                                                                  l_single_row_attrs.START_AVAILABILITY_DATE_TIME,
4866                                                                  NULL, NULL, NULL);
4867       l_attribute_names.EXTEND;
4868       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('START_AVAILABILITY_DATE_TIME').ATTR_NAME;
4869     END IF;
4870 
4871     IF l_single_row_attrs.CONSUMER_AVAIL_DATE_TIME IS NOT NULL THEN
4872       IF l_single_row_attrs.CONSUMER_AVAIL_DATE_TIME = G_MISS_DATE THEN
4873         l_single_row_attrs.CONSUMER_AVAIL_DATE_TIME := NULL;
4874       END IF;
4875       Debug_Msg('Creating Attribute Data Object for CONSUMER_AVAIL_DATE_TIME - '||l_single_row_attrs.CONSUMER_AVAIL_DATE_TIME);
4876       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4877                                                   l_single_row_attrs_metadata('CONSUMER_AVAIL_DATE_TIME').ATTR_GROUP_NAME,
4878                                                   FALSE);
4879       l_attributes_data_table.EXTEND;
4880       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4881                                                                  l_row_identifier,
4882                                                                  l_single_row_attrs_metadata('CONSUMER_AVAIL_DATE_TIME').ATTR_NAME,
4883                                                                  NULL, NULL,
4884                                                                  l_single_row_attrs.CONSUMER_AVAIL_DATE_TIME,
4885                                                                  NULL, NULL, NULL);
4886       l_attribute_names.EXTEND;
4887       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('CONSUMER_AVAIL_DATE_TIME').ATTR_NAME;
4888     END IF;
4889 
4890     IF l_single_row_attrs.ORDERING_LEAD_TIME IS NOT NULL THEN
4891       IF l_single_row_attrs.ORDERING_LEAD_TIME = G_MISS_NUM THEN
4892         l_single_row_attrs.ORDERING_LEAD_TIME := NULL;
4893       END IF;
4894       IF l_single_row_attrs.UOM_ORDERING_LEAD_TIME = G_MISS_CHAR THEN
4895         l_single_row_attrs.UOM_ORDERING_LEAD_TIME := NULL;
4896       END IF;
4897       Debug_Msg('Creating Attribute Data Object for ORDERING_LEAD_TIME - '||l_single_row_attrs.ORDERING_LEAD_TIME);
4898       Debug_Msg('Creating Attribute Data Object for UOM_ORDERING_LEAD_TIME - '||l_single_row_attrs.UOM_ORDERING_LEAD_TIME);
4899 
4900       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4901                                                   l_single_row_attrs_metadata('ORDERING_LEAD_TIME').ATTR_GROUP_NAME,
4902                                                   FALSE);
4903       l_attributes_data_table.EXTEND;
4904       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4905                                                                  l_row_identifier,
4906                                                                  l_single_row_attrs_metadata('ORDERING_LEAD_TIME').ATTR_NAME,
4907                                                                  NULL,
4908                                                                  l_single_row_attrs.ORDERING_LEAD_TIME,
4909                                                                  NULL, NULL, l_single_row_attrs.UOM_ORDERING_LEAD_TIME, NULL);
4910       l_attribute_names.EXTEND;
4911       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('ORDERING_LEAD_TIME').ATTR_NAME;
4912     END IF;
4913 
4914     IF l_single_row_attrs.ORDER_QUANTITY_MAX IS NOT NULL THEN
4915       IF l_single_row_attrs.ORDER_QUANTITY_MAX = G_MISS_NUM THEN
4916         l_single_row_attrs.ORDER_QUANTITY_MAX := NULL;
4917       END IF;
4918       Debug_Msg('Creating Attribute Data Object for ORDER_QUANTITY_MAX - '||l_single_row_attrs.ORDER_QUANTITY_MAX);
4919       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4920                                                   l_single_row_attrs_metadata('ORDER_QUANTITY_MAX').ATTR_GROUP_NAME,
4921                                                   FALSE);
4922       l_attributes_data_table.EXTEND;
4923       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4924                                                                  l_row_identifier,
4925                                                                  l_single_row_attrs_metadata('ORDER_QUANTITY_MAX').ATTR_NAME,
4926                                                                  NULL,
4927                                                                  l_single_row_attrs.ORDER_QUANTITY_MAX,
4928                                                                  NULL, NULL, NULL, NULL);
4929       l_attribute_names.EXTEND;
4930       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('ORDER_QUANTITY_MAX').ATTR_NAME;
4931     END IF;
4932 
4933     IF l_single_row_attrs.MATERIAL_SAFETY_DATA_SHEET_NO IS NOT NULL THEN
4934       IF l_single_row_attrs.MATERIAL_SAFETY_DATA_SHEET_NO = G_MISS_CHAR THEN
4935         l_single_row_attrs.MATERIAL_SAFETY_DATA_SHEET_NO := NULL;
4936       END IF;
4937       Debug_Msg('Creating Attribute Data Object for MATERIAL_SAFETY_DATA_SHEET_NO - '||l_single_row_attrs.MATERIAL_SAFETY_DATA_SHEET_NO);
4938       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4939                                                   l_single_row_attrs_metadata('MATERIAL_SAFETY_DATA_SHEET_NO').ATTR_GROUP_NAME,
4940                                                   FALSE);
4941       l_attributes_data_table.EXTEND;
4942       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4943                                                                  l_row_identifier,
4944                                                                  l_single_row_attrs_metadata('MATERIAL_SAFETY_DATA_SHEET_NO').ATTR_NAME,
4945                                                                  l_single_row_attrs.MATERIAL_SAFETY_DATA_SHEET_NO,
4946                                                                  NULL, NULL, NULL, NULL, NULL);
4947       l_attribute_names.EXTEND;
4948       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('MATERIAL_SAFETY_DATA_SHEET_NO').ATTR_NAME;
4949     END IF;
4950 
4951     IF l_single_row_attrs.EFFECTIVE_DATE IS NOT NULL THEN
4952       IF l_single_row_attrs.EFFECTIVE_DATE = G_MISS_DATE THEN
4953         l_single_row_attrs.EFFECTIVE_DATE := NULL;
4954       END IF;
4955       Debug_Msg('Creating Attribute Data Object for EFFECTIVE_DATE - '||l_single_row_attrs.EFFECTIVE_DATE);
4956       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4957                                                   l_single_row_attrs_metadata('EFFECTIVE_DATE').ATTR_GROUP_NAME,
4958                                                   FALSE);
4959       l_attributes_data_table.EXTEND;
4960       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4961                                                                  l_row_identifier,
4962                                                                  l_single_row_attrs_metadata('EFFECTIVE_DATE').ATTR_NAME,
4963                                                                  NULL, NULL,
4964                                                                  l_single_row_attrs.EFFECTIVE_DATE,
4965                                                                  NULL, NULL, NULL);
4966       l_attribute_names.EXTEND;
4967       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('EFFECTIVE_DATE').ATTR_NAME;
4968     END IF;
4969 
4970     IF l_single_row_attrs.END_AVAILABILITY_DATE_TIME IS NOT NULL THEN
4971       IF l_single_row_attrs.END_AVAILABILITY_DATE_TIME = G_MISS_DATE THEN
4972         l_single_row_attrs.END_AVAILABILITY_DATE_TIME := NULL;
4973       END IF;
4974       Debug_Msg('Creating Attribute Data Object for END_AVAILABILITY_DATE_TIME - '||l_single_row_attrs.END_AVAILABILITY_DATE_TIME);
4975       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4976                                                   l_single_row_attrs_metadata('END_AVAILABILITY_DATE_TIME').ATTR_GROUP_NAME,
4977                                                   FALSE);
4978       l_attributes_data_table.EXTEND;
4979       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4980                                                                  l_row_identifier,
4981                                                                  l_single_row_attrs_metadata('END_AVAILABILITY_DATE_TIME').ATTR_NAME,
4982                                                                  NULL, NULL,
4983                                                                  l_single_row_attrs.END_AVAILABILITY_DATE_TIME,
4984                                                                  NULL, NULL, NULL);
4985       l_attribute_names.EXTEND;
4986       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('END_AVAILABILITY_DATE_TIME').ATTR_NAME;
4987     END IF;
4988 
4989     IF l_single_row_attrs.ORDER_QUANTITY_MIN IS NOT NULL THEN
4990       IF l_single_row_attrs.ORDER_QUANTITY_MIN = G_MISS_NUM THEN
4991         l_single_row_attrs.ORDER_QUANTITY_MIN := NULL;
4992       END IF;
4993       Debug_Msg('Creating Attribute Data Object for ORDER_QUANTITY_MIN - '||l_single_row_attrs.ORDER_QUANTITY_MIN);
4994       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
4995                                                   l_single_row_attrs_metadata('ORDER_QUANTITY_MIN').ATTR_GROUP_NAME,
4996                                                   FALSE);
4997       l_attributes_data_table.EXTEND;
4998       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
4999                                                                  l_row_identifier,
5000                                                                  l_single_row_attrs_metadata('ORDER_QUANTITY_MIN').ATTR_NAME,
5001                                                                  NULL,
5002                                                                  l_single_row_attrs.ORDER_QUANTITY_MIN,
5003                                                                  NULL, NULL, NULL, NULL);
5004       l_attribute_names.EXTEND;
5005       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('ORDER_QUANTITY_MIN').ATTR_NAME;
5006     END IF;
5007 
5008     IF l_single_row_attrs.ORDER_SIZING_FACTOR IS NOT NULL THEN
5009       IF l_single_row_attrs.ORDER_SIZING_FACTOR = G_MISS_NUM THEN
5010         l_single_row_attrs.ORDER_SIZING_FACTOR := NULL;
5011       END IF;
5012       Debug_Msg('Creating Attribute Data Object for ORDER_SIZING_FACTOR - '||l_single_row_attrs.ORDER_SIZING_FACTOR);
5013       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5014                                                   l_single_row_attrs_metadata('ORDER_SIZING_FACTOR').ATTR_GROUP_NAME,
5015                                                   FALSE);
5016       l_attributes_data_table.EXTEND;
5017       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5018                                                                  l_row_identifier,
5019                                                                  l_single_row_attrs_metadata('ORDER_SIZING_FACTOR').ATTR_NAME,
5020                                                                  NULL,
5021                                                                  l_single_row_attrs.ORDER_SIZING_FACTOR,
5022                                                                  NULL, NULL, NULL, NULL);
5023       l_attribute_names.EXTEND;
5024       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('ORDER_SIZING_FACTOR').ATTR_NAME;
5025     END IF;
5026 
5027     IF l_single_row_attrs.ORDER_QUANTITY_MULTIPLE IS NOT NULL THEN
5028       IF l_single_row_attrs.ORDER_QUANTITY_MULTIPLE = G_MISS_NUM THEN
5029         l_single_row_attrs.ORDER_QUANTITY_MULTIPLE := NULL;
5030       END IF;
5031       Debug_Msg('Creating Attribute Data Object for ORDER_QUANTITY_MULTIPLE - '||l_single_row_attrs.ORDER_QUANTITY_MULTIPLE);
5032       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5033                                                   l_single_row_attrs_metadata('ORDER_QUANTITY_MULTIPLE').ATTR_GROUP_NAME,
5034                                                   FALSE);
5035       l_attributes_data_table.EXTEND;
5036       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5037                                                                  l_row_identifier,
5038                                                                  l_single_row_attrs_metadata('ORDER_QUANTITY_MULTIPLE').ATTR_NAME,
5039                                                                  NULL,
5040                                                                  l_single_row_attrs.ORDER_QUANTITY_MULTIPLE,
5041                                                                  NULL, NULL, NULL, NULL);
5042       l_attribute_names.EXTEND;
5043       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('ORDER_QUANTITY_MULTIPLE').ATTR_NAME;
5044     END IF;
5045 
5046     IF l_single_row_attrs.DESCRIPTIVE_SIZE IS NOT NULL THEN
5047       IF l_single_row_attrs.DESCRIPTIVE_SIZE = G_MISS_CHAR THEN
5048         l_single_row_attrs.DESCRIPTIVE_SIZE := NULL;
5049       END IF;
5050       Debug_Msg('Creating Attribute Data Object for DESCRIPTIVE_SIZE - '||l_single_row_attrs.DESCRIPTIVE_SIZE);
5051       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5052                                                   l_single_row_attrs_metadata('DESCRIPTIVE_SIZE').ATTR_GROUP_NAME,
5053                                                   FALSE);
5054       l_attributes_data_table.EXTEND;
5055       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5056                                                                  l_row_identifier,
5057                                                                  l_single_row_attrs_metadata('DESCRIPTIVE_SIZE').ATTR_NAME,
5058                                                                  l_single_row_attrs.DESCRIPTIVE_SIZE,
5059                                                                  NULL, NULL, NULL, NULL, NULL);
5060       l_attribute_names.EXTEND;
5061       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DESCRIPTIVE_SIZE').ATTR_NAME;
5062     END IF;
5063 
5064     IF l_single_row_attrs.DEGREE_OF_ORIGINAL_WORT IS NOT NULL THEN
5065       IF l_single_row_attrs.DEGREE_OF_ORIGINAL_WORT = G_MISS_CHAR THEN
5066         l_single_row_attrs.DEGREE_OF_ORIGINAL_WORT := NULL;
5067       END IF;
5068       Debug_Msg('Creating Attribute Data Object for DEGREE_OF_ORIGINAL_WORT - '||l_single_row_attrs.DEGREE_OF_ORIGINAL_WORT);
5069       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5070                                                   l_single_row_attrs_metadata('DEGREE_OF_ORIGINAL_WORT').ATTR_GROUP_NAME,
5071                                                   FALSE);
5072       l_attributes_data_table.EXTEND;
5073       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5074                                                                  l_row_identifier,
5075                                                                  l_single_row_attrs_metadata('DEGREE_OF_ORIGINAL_WORT').ATTR_NAME,
5076                                                                  l_single_row_attrs.DEGREE_OF_ORIGINAL_WORT,
5077                                                                  NULL, NULL, NULL, NULL, NULL);
5078       l_attribute_names.EXTEND;
5079       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DEGREE_OF_ORIGINAL_WORT').ATTR_NAME;
5080     END IF;
5081 
5082     IF l_single_row_attrs.SECURITY_TAG_LOCATION IS NOT NULL THEN
5083       IF l_single_row_attrs.SECURITY_TAG_LOCATION = G_MISS_CHAR THEN
5084         l_single_row_attrs.SECURITY_TAG_LOCATION := NULL;
5085       END IF;
5086       Debug_Msg('Creating Attribute Data Object for SECURITY_TAG_LOCATION - '||l_single_row_attrs.SECURITY_TAG_LOCATION);
5087       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5088                                                   l_single_row_attrs_metadata('SECURITY_TAG_LOCATION').ATTR_GROUP_NAME,
5089                                                   FALSE);
5090       l_attributes_data_table.EXTEND;
5091       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5092                                                                  l_row_identifier,
5093                                                                  l_single_row_attrs_metadata('SECURITY_TAG_LOCATION').ATTR_NAME,
5094                                                                  l_single_row_attrs.SECURITY_TAG_LOCATION,
5095                                                                  NULL, NULL, NULL, NULL, NULL);
5096       l_attribute_names.EXTEND;
5097       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('SECURITY_TAG_LOCATION').ATTR_NAME;
5098     END IF;
5099 
5100     IF l_single_row_attrs.PIECES_PER_TRADE_ITEM IS NOT NULL THEN
5101       IF l_single_row_attrs.PIECES_PER_TRADE_ITEM = G_MISS_NUM THEN
5102         l_single_row_attrs.PIECES_PER_TRADE_ITEM := NULL;
5103       END IF;
5104       IF l_single_row_attrs.UOM_PIECES_PER_TRADE_ITEM = G_MISS_CHAR THEN
5105         l_single_row_attrs.UOM_PIECES_PER_TRADE_ITEM := NULL;
5106       END IF;
5107       Debug_Msg('Creating Attribute Data Object for PIECES_PER_TRADE_ITEM - '||l_single_row_attrs.PIECES_PER_TRADE_ITEM);
5108       Debug_Msg('Creating Attribute Data Object for UOM_PIECES_PER_TRADE_ITEM - '||l_single_row_attrs.UOM_PIECES_PER_TRADE_ITEM);
5109 
5110       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5111                                                   l_single_row_attrs_metadata('PIECES_PER_TRADE_ITEM').ATTR_GROUP_NAME,
5112                                                   FALSE);
5113       l_attributes_data_table.EXTEND;
5114       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5115                                                                  l_row_identifier,
5116                                                                  l_single_row_attrs_metadata('PIECES_PER_TRADE_ITEM').ATTR_NAME,
5117                                                                  NULL,
5118                                                                  l_single_row_attrs.PIECES_PER_TRADE_ITEM,
5119                                                                  NULL, NULL, l_single_row_attrs.UOM_PIECES_PER_TRADE_ITEM, NULL);
5120       l_attribute_names.EXTEND;
5121       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('PIECES_PER_TRADE_ITEM').ATTR_NAME;
5122     END IF;
5123 
5124     IF l_single_row_attrs.NESTING_INCREMENT IS NOT NULL THEN
5125       IF l_single_row_attrs.NESTING_INCREMENT = G_MISS_NUM THEN
5126         l_single_row_attrs.NESTING_INCREMENT := NULL;
5127       END IF;
5128       IF l_single_row_attrs.UOM_NESTING_INCREMENT = G_MISS_CHAR THEN
5129         l_single_row_attrs.UOM_NESTING_INCREMENT := NULL;
5130       END IF;
5131       Debug_Msg('Creating Attribute Data Object for NESTING_INCREMENT - '||l_single_row_attrs.NESTING_INCREMENT);
5132       Debug_Msg('Creating Attribute Data Object for UOM_NESTING_INCREMENT - '||l_single_row_attrs.UOM_NESTING_INCREMENT);
5133 
5134       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5135                                                   l_single_row_attrs_metadata('NESTING_INCREMENT').ATTR_GROUP_NAME,
5136                                                   FALSE);
5137       l_attributes_data_table.EXTEND;
5138       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5139                                                                  l_row_identifier,
5140                                                                  l_single_row_attrs_metadata('NESTING_INCREMENT').ATTR_NAME,
5141                                                                  NULL,
5142                                                                  l_single_row_attrs.NESTING_INCREMENT,
5143                                                                  NULL, NULL, l_single_row_attrs.UOM_NESTING_INCREMENT, NULL);
5144       l_attribute_names.EXTEND;
5145       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('NESTING_INCREMENT').ATTR_NAME;
5146     END IF;
5147 
5148     IF l_single_row_attrs.IS_OUT_OF_BOX_PROVIDED IS NOT NULL THEN
5149       IF l_single_row_attrs.IS_OUT_OF_BOX_PROVIDED = G_MISS_CHAR THEN
5150         l_single_row_attrs.IS_OUT_OF_BOX_PROVIDED := NULL;
5151       END IF;
5152       Debug_Msg('Creating Attribute Data Object for IS_OUT_OF_BOX_PROVIDED - '||l_single_row_attrs.IS_OUT_OF_BOX_PROVIDED);
5153       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5154                                                   l_single_row_attrs_metadata('IS_OUT_OF_BOX_PROVIDED').ATTR_GROUP_NAME,
5155                                                   FALSE);
5156       l_attributes_data_table.EXTEND;
5157       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5158                                                                  l_row_identifier,
5159                                                                  l_single_row_attrs_metadata('IS_OUT_OF_BOX_PROVIDED').ATTR_NAME,
5160                                                                  l_single_row_attrs.IS_OUT_OF_BOX_PROVIDED,
5161                                                                  NULL, NULL, NULL, NULL, NULL);
5162       l_attribute_names.EXTEND;
5163       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_OUT_OF_BOX_PROVIDED').ATTR_NAME;
5164     END IF;
5165 
5166     IF l_single_row_attrs.URL_FOR_WARRANTY IS NOT NULL THEN
5167       IF l_single_row_attrs.URL_FOR_WARRANTY = G_MISS_CHAR THEN
5168         l_single_row_attrs.URL_FOR_WARRANTY := NULL;
5169       END IF;
5170       Debug_Msg('Creating Attribute Data Object for URL_FOR_WARRANTY - '||l_single_row_attrs.URL_FOR_WARRANTY);
5171       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5172                                                   l_single_row_attrs_metadata('URL_FOR_WARRANTY').ATTR_GROUP_NAME,
5173                                                   FALSE);
5174       l_attributes_data_table.EXTEND;
5175       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5176                                                                  l_row_identifier,
5177                                                                  l_single_row_attrs_metadata('URL_FOR_WARRANTY').ATTR_NAME,
5178                                                                  l_single_row_attrs.URL_FOR_WARRANTY,
5179                                                                  NULL, NULL, NULL, NULL, NULL);
5180       l_attribute_names.EXTEND;
5181       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('URL_FOR_WARRANTY').ATTR_NAME;
5182     END IF;
5183 
5184     IF l_single_row_attrs.WARRANTY_DESCRIPTION IS NOT NULL THEN
5185       IF l_single_row_attrs.WARRANTY_DESCRIPTION = G_MISS_CHAR THEN
5186         l_single_row_attrs.WARRANTY_DESCRIPTION := NULL;
5187       END IF;
5188       Debug_Msg('Creating Attribute Data Object for WARRANTY_DESCRIPTION - '||l_single_row_attrs.WARRANTY_DESCRIPTION);
5189       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5190                                                   l_single_row_attrs_metadata('WARRANTY_DESCRIPTION').ATTR_GROUP_NAME,
5191                                                   FALSE);
5192       l_attributes_data_table.EXTEND;
5193       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5194                                                                  l_row_identifier,
5195                                                                  l_single_row_attrs_metadata('WARRANTY_DESCRIPTION').ATTR_NAME,
5196                                                                  l_single_row_attrs.WARRANTY_DESCRIPTION,
5197                                                                  NULL, NULL, NULL, NULL, NULL);
5198       l_attribute_names.EXTEND;
5199       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('WARRANTY_DESCRIPTION').ATTR_NAME;
5200     END IF;
5201 
5202     IF l_single_row_attrs.TRADE_ITEM_FINISH_DESCRIPTION IS NOT NULL THEN
5203       IF l_single_row_attrs.TRADE_ITEM_FINISH_DESCRIPTION = G_MISS_CHAR THEN
5204         l_single_row_attrs.TRADE_ITEM_FINISH_DESCRIPTION := NULL;
5205       END IF;
5206       Debug_Msg('Creating Attribute Data Object for TRADE_ITEM_FINISH_DESCRIPTION - '||l_single_row_attrs.TRADE_ITEM_FINISH_DESCRIPTION);
5207       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5208                                                   l_single_row_attrs_metadata('TRADE_ITEM_FINISH_DESCRIPTION').ATTR_GROUP_NAME,
5209                                                   FALSE);
5210       l_attributes_data_table.EXTEND;
5211       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5212                                                                  l_row_identifier,
5213                                                                  l_single_row_attrs_metadata('TRADE_ITEM_FINISH_DESCRIPTION').ATTR_NAME,
5214                                                                  l_single_row_attrs.TRADE_ITEM_FINISH_DESCRIPTION,
5215                                                                  NULL, NULL, NULL, NULL, NULL);
5216       l_attribute_names.EXTEND;
5217       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('TRADE_ITEM_FINISH_DESCRIPTION').ATTR_NAME;
5218     END IF;
5219 
5220     IF l_single_row_attrs.STACKING_WEIGHT_MAXIMUM IS NOT NULL THEN
5221       IF l_single_row_attrs.STACKING_WEIGHT_MAXIMUM = G_MISS_NUM THEN
5222         l_single_row_attrs.STACKING_WEIGHT_MAXIMUM := NULL;
5223       END IF;
5224       IF l_single_row_attrs.UOM_STACKING_WEIGHT_MAXIMUM = G_MISS_CHAR THEN
5225         l_single_row_attrs.UOM_STACKING_WEIGHT_MAXIMUM := NULL;
5226       END IF;
5227       Debug_Msg('Creating Attribute Data Object for STACKING_WEIGHT_MAXIMUM - '||l_single_row_attrs.STACKING_WEIGHT_MAXIMUM);
5228       Debug_Msg('Creating Attribute Data Object for UOM_STACKING_WEIGHT_MAXIMUM - '||l_single_row_attrs.UOM_STACKING_WEIGHT_MAXIMUM);
5229 
5230       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5231                                                   l_single_row_attrs_metadata('STACKING_WEIGHT_MAXIMUM').ATTR_GROUP_NAME,
5232                                                   FALSE);
5233       l_attributes_data_table.EXTEND;
5234       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5235                                                                  l_row_identifier,
5236                                                                  l_single_row_attrs_metadata('STACKING_WEIGHT_MAXIMUM').ATTR_NAME,
5237                                                                  NULL,
5238                                                                  l_single_row_attrs.STACKING_WEIGHT_MAXIMUM,
5239                                                                  NULL, NULL, l_single_row_attrs.UOM_STACKING_WEIGHT_MAXIMUM, NULL);
5240       l_attribute_names.EXTEND;
5241       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('STACKING_WEIGHT_MAXIMUM').ATTR_NAME;
5242     END IF;
5243 
5244     IF l_single_row_attrs.IS_PACK_MARKED_WITH_EXP_DATE IS NOT NULL THEN
5245       IF l_single_row_attrs.IS_PACK_MARKED_WITH_EXP_DATE = G_MISS_CHAR THEN
5246         l_single_row_attrs.IS_PACK_MARKED_WITH_EXP_DATE := NULL;
5247       END IF;
5248       Debug_Msg('Creating Attribute Data Object for IS_PACK_MARKED_WITH_EXP_DATE - '||l_single_row_attrs.IS_PACK_MARKED_WITH_EXP_DATE);
5249       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5250                                                   l_single_row_attrs_metadata('IS_PACK_MARKED_WITH_EXP_DATE').ATTR_GROUP_NAME,
5251                                                   FALSE);
5252       l_attributes_data_table.EXTEND;
5253       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5254                                                                  l_row_identifier,
5255                                                                  l_single_row_attrs_metadata('IS_PACK_MARKED_WITH_EXP_DATE').ATTR_NAME,
5256                                                                  l_single_row_attrs.IS_PACK_MARKED_WITH_EXP_DATE,
5257                                                                  NULL, NULL, NULL, NULL, NULL);
5258       l_attribute_names.EXTEND;
5259       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_PACK_MARKED_WITH_EXP_DATE').ATTR_NAME;
5260     END IF;
5261 
5262     IF l_single_row_attrs.IS_PACK_MARKED_WITH_GREEN_DOT IS NOT NULL THEN
5263       IF l_single_row_attrs.IS_PACK_MARKED_WITH_GREEN_DOT = G_MISS_CHAR THEN
5264         l_single_row_attrs.IS_PACK_MARKED_WITH_GREEN_DOT := NULL;
5265       END IF;
5266       Debug_Msg('Creating Attribute Data Object for IS_PACK_MARKED_WITH_GREEN_DOT - '||l_single_row_attrs.IS_PACK_MARKED_WITH_GREEN_DOT);
5267       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5268                                                   l_single_row_attrs_metadata('IS_PACK_MARKED_WITH_GREEN_DOT').ATTR_GROUP_NAME,
5269                                                   FALSE);
5270       l_attributes_data_table.EXTEND;
5271       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5272                                                                  l_row_identifier,
5273                                                                  l_single_row_attrs_metadata('IS_PACK_MARKED_WITH_GREEN_DOT').ATTR_NAME,
5274                                                                  l_single_row_attrs.IS_PACK_MARKED_WITH_GREEN_DOT,
5275                                                                  NULL, NULL, NULL, NULL, NULL);
5276       l_attribute_names.EXTEND;
5277       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_PACK_MARKED_WITH_GREEN_DOT').ATTR_NAME;
5278     END IF;
5279 
5280     IF l_single_row_attrs.IS_PACK_MARKED_WITH_INGRED IS NOT NULL THEN
5281       IF l_single_row_attrs.IS_PACK_MARKED_WITH_INGRED = G_MISS_CHAR THEN
5282         l_single_row_attrs.IS_PACK_MARKED_WITH_INGRED := NULL;
5283       END IF;
5284       Debug_Msg('Creating Attribute Data Object for IS_PACK_MARKED_WITH_INGRED - '||l_single_row_attrs.IS_PACK_MARKED_WITH_INGRED);
5285       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5286                                                   l_single_row_attrs_metadata('IS_PACK_MARKED_WITH_INGRED').ATTR_GROUP_NAME,
5287                                                   FALSE);
5288       l_attributes_data_table.EXTEND;
5289       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5290                                                                  l_row_identifier,
5291                                                                  l_single_row_attrs_metadata('IS_PACK_MARKED_WITH_INGRED').ATTR_NAME,
5292                                                                  l_single_row_attrs.IS_PACK_MARKED_WITH_INGRED,
5293                                                                  NULL, NULL, NULL, NULL, NULL);
5294       l_attribute_names.EXTEND;
5295       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_PACK_MARKED_WITH_INGRED').ATTR_NAME;
5296     END IF;
5297 
5298     IF l_single_row_attrs.IS_PACKAGE_MARKED_AS_REC IS NOT NULL THEN
5299       IF l_single_row_attrs.IS_PACKAGE_MARKED_AS_REC = G_MISS_CHAR THEN
5300         l_single_row_attrs.IS_PACKAGE_MARKED_AS_REC := NULL;
5301       END IF;
5302       Debug_Msg('Creating Attribute Data Object for IS_PACKAGE_MARKED_AS_REC - '||l_single_row_attrs.IS_PACKAGE_MARKED_AS_REC);
5303       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5304                                                   l_single_row_attrs_metadata('IS_PACKAGE_MARKED_AS_REC').ATTR_GROUP_NAME,
5305                                                   FALSE);
5306       l_attributes_data_table.EXTEND;
5307       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5308                                                                  l_row_identifier,
5309                                                                  l_single_row_attrs_metadata('IS_PACKAGE_MARKED_AS_REC').ATTR_NAME,
5310                                                                  l_single_row_attrs.IS_PACKAGE_MARKED_AS_REC,
5311                                                                  NULL, NULL, NULL, NULL, NULL);
5312       l_attribute_names.EXTEND;
5313       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_PACKAGE_MARKED_AS_REC').ATTR_NAME;
5314     END IF;
5315 
5316     IF l_single_row_attrs.IS_PACKAGE_MARKED_RET IS NOT NULL THEN
5317       IF l_single_row_attrs.IS_PACKAGE_MARKED_RET = G_MISS_CHAR THEN
5318         l_single_row_attrs.IS_PACKAGE_MARKED_RET := NULL;
5319       END IF;
5320       Debug_Msg('Creating Attribute Data Object for IS_PACKAGE_MARKED_RET - '||l_single_row_attrs.IS_PACKAGE_MARKED_RET);
5321       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5322                                                   l_single_row_attrs_metadata('IS_PACKAGE_MARKED_RET').ATTR_GROUP_NAME,
5323                                                   FALSE);
5324       l_attributes_data_table.EXTEND;
5325       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5326                                                                  l_row_identifier,
5327                                                                  l_single_row_attrs_metadata('IS_PACKAGE_MARKED_RET').ATTR_NAME,
5328                                                                  l_single_row_attrs.IS_PACKAGE_MARKED_RET,
5329                                                                  NULL, NULL, NULL, NULL, NULL);
5330       l_attribute_names.EXTEND;
5331       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_PACKAGE_MARKED_RET').ATTR_NAME;
5332     END IF;
5333 
5334     IF l_single_row_attrs.FAT_PERCENT_IN_DRY_MATTER IS NOT NULL THEN
5335       IF l_single_row_attrs.FAT_PERCENT_IN_DRY_MATTER = G_MISS_NUM THEN
5336         l_single_row_attrs.FAT_PERCENT_IN_DRY_MATTER := NULL;
5337       END IF;
5338       Debug_Msg('Creating Attribute Data Object for FAT_PERCENT_IN_DRY_MATTER - '||l_single_row_attrs.FAT_PERCENT_IN_DRY_MATTER);
5339       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5340                                                   l_single_row_attrs_metadata('FAT_PERCENT_IN_DRY_MATTER').ATTR_GROUP_NAME,
5341                                                   FALSE);
5342       l_attributes_data_table.EXTEND;
5343       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5344                                                                  l_row_identifier,
5345                                                                  l_single_row_attrs_metadata('FAT_PERCENT_IN_DRY_MATTER').ATTR_NAME,
5346                                                                  NULL,
5347                                                                  l_single_row_attrs.FAT_PERCENT_IN_DRY_MATTER,
5348                                                                  NULL, NULL, NULL, NULL);
5349       l_attribute_names.EXTEND;
5350       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('FAT_PERCENT_IN_DRY_MATTER').ATTR_NAME;
5351     END IF;
5352 
5353     IF l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MIN IS NOT NULL THEN
5354       IF l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MIN = G_MISS_NUM THEN
5355         l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MIN := NULL;
5356       END IF;
5357       Debug_Msg('Creating Attribute Data Object for DEL_TO_DIST_CNTR_TEMP_MIN - '||l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MIN);
5358       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5359                                                   l_single_row_attrs_metadata('DEL_TO_DIST_CNTR_TEMP_MIN').ATTR_GROUP_NAME,
5360                                                   FALSE);
5361       l_attributes_data_table.EXTEND;
5362       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5363                                                                  l_row_identifier,
5364                                                                  l_single_row_attrs_metadata('DEL_TO_DIST_CNTR_TEMP_MIN').ATTR_NAME,
5365                                                                  NULL,
5366                                                                  l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MIN,
5367                                                                  NULL, NULL, NULL, NULL);
5368       l_attribute_names.EXTEND;
5369       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DEL_TO_DIST_CNTR_TEMP_MIN').ATTR_NAME;
5370     END IF;
5371 
5372     IF l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN IS NOT NULL THEN
5373       IF l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN = G_MISS_CHAR THEN
5374         l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN := NULL;
5375       END IF;
5376       Debug_Msg('Creating Attribute Data Object for UOM_DEL_TO_DIST_CNTR_TEMP_MIN - '||l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN);
5377       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5378                                                   l_single_row_attrs_metadata('UOM_DEL_TO_DIST_CNTR_TEMP_MIN').ATTR_GROUP_NAME,
5379                                                   FALSE);
5380       l_attributes_data_table.EXTEND;
5381       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5382                                                                  l_row_identifier,
5383                                                                  l_single_row_attrs_metadata('UOM_DEL_TO_DIST_CNTR_TEMP_MIN').ATTR_NAME,
5384                                                                  l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MIN,
5385                                                                  NULL, NULL, NULL, NULL, NULL);
5386       l_attribute_names.EXTEND;
5387       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('UOM_DEL_TO_DIST_CNTR_TEMP_MIN').ATTR_NAME;
5388     END IF;
5389 
5390     IF l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MAX IS NOT NULL THEN
5391       IF l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MAX = G_MISS_NUM THEN
5392         l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MAX := NULL;
5393       END IF;
5394       Debug_Msg('Creating Attribute Data Object for DEL_TO_DIST_CNTR_TEMP_MAX - '||l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MAX);
5395       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5396                                                   l_single_row_attrs_metadata('DEL_TO_DIST_CNTR_TEMP_MAX').ATTR_GROUP_NAME,
5397                                                   FALSE);
5398       l_attributes_data_table.EXTEND;
5399       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5400                                                                  l_row_identifier,
5401                                                                  l_single_row_attrs_metadata('DEL_TO_DIST_CNTR_TEMP_MAX').ATTR_NAME,
5402                                                                  NULL,
5403                                                                  l_single_row_attrs.DEL_TO_DIST_CNTR_TEMP_MAX,
5404                                                                  NULL, NULL, NULL, NULL);
5405       l_attribute_names.EXTEND;
5406       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DEL_TO_DIST_CNTR_TEMP_MAX').ATTR_NAME;
5407     END IF;
5408 
5409     IF l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX IS NOT NULL THEN
5410       IF l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX = G_MISS_CHAR THEN
5411         l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX := NULL;
5412       END IF;
5413       Debug_Msg('Creating Attribute Data Object for UOM_DEL_TO_DIST_CNTR_TEMP_MAX - '||l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX);
5414       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5415                                                   l_single_row_attrs_metadata('UOM_DEL_TO_DIST_CNTR_TEMP_MAX').ATTR_GROUP_NAME,
5416                                                   FALSE);
5417       l_attributes_data_table.EXTEND;
5418       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5419                                                                  l_row_identifier,
5420                                                                  l_single_row_attrs_metadata('UOM_DEL_TO_DIST_CNTR_TEMP_MAX').ATTR_NAME,
5421                                                                  l_single_row_attrs.UOM_DEL_TO_DIST_CNTR_TEMP_MAX,
5422                                                                  NULL, NULL, NULL, NULL, NULL);
5423       l_attribute_names.EXTEND;
5424       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('UOM_DEL_TO_DIST_CNTR_TEMP_MAX').ATTR_NAME;
5425     END IF;
5426 
5427     IF l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MIN IS NOT NULL THEN
5428       IF l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MIN = G_MISS_NUM THEN
5429         l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MIN := NULL;
5430       END IF;
5431       Debug_Msg('Creating Attribute Data Object for DELIVERY_TO_MRKT_TEMP_MIN - '||l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MIN);
5432       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5433                                                   l_single_row_attrs_metadata('DELIVERY_TO_MRKT_TEMP_MIN').ATTR_GROUP_NAME,
5434                                                   FALSE);
5435       l_attributes_data_table.EXTEND;
5436       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5437                                                                  l_row_identifier,
5438                                                                  l_single_row_attrs_metadata('DELIVERY_TO_MRKT_TEMP_MIN').ATTR_NAME,
5439                                                                  NULL,
5440                                                                  l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MIN,
5441                                                                  NULL, NULL, NULL, NULL);
5442       l_attribute_names.EXTEND;
5443       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DELIVERY_TO_MRKT_TEMP_MIN').ATTR_NAME;
5444     END IF;
5445 
5446     IF l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN IS NOT NULL THEN
5447       IF l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN = G_MISS_CHAR THEN
5448         l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN := NULL;
5449       END IF;
5450       Debug_Msg('Creating Attribute Data Object for UOM_DELIVERY_TO_MRKT_TEMP_MIN - '||l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN);
5451       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5452                                                   l_single_row_attrs_metadata('UOM_DELIVERY_TO_MRKT_TEMP_MIN').ATTR_GROUP_NAME,
5453                                                   FALSE);
5454       l_attributes_data_table.EXTEND;
5455       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5456                                                                  l_row_identifier,
5457                                                                  l_single_row_attrs_metadata('UOM_DELIVERY_TO_MRKT_TEMP_MIN').ATTR_NAME,
5458                                                                  l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MIN,
5459                                                                  NULL, NULL, NULL, NULL, NULL);
5460       l_attribute_names.EXTEND;
5461       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('UOM_DELIVERY_TO_MRKT_TEMP_MIN').ATTR_NAME;
5462     END IF;
5463 
5464     IF l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MAX IS NOT NULL THEN
5465       IF l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MAX = G_MISS_NUM THEN
5466         l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MAX := NULL;
5467       END IF;
5468       Debug_Msg('Creating Attribute Data Object for DELIVERY_TO_MRKT_TEMP_MAX - '||l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MAX);
5469       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5470                                                   l_single_row_attrs_metadata('DELIVERY_TO_MRKT_TEMP_MAX').ATTR_GROUP_NAME,
5471                                                   FALSE);
5472       l_attributes_data_table.EXTEND;
5473       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5474                                                                  l_row_identifier,
5475                                                                  l_single_row_attrs_metadata('DELIVERY_TO_MRKT_TEMP_MAX').ATTR_NAME,
5476                                                                  NULL,
5477                                                                  l_single_row_attrs.DELIVERY_TO_MRKT_TEMP_MAX,
5478                                                                  NULL, NULL, NULL, NULL);
5479       l_attribute_names.EXTEND;
5480       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('DELIVERY_TO_MRKT_TEMP_MAX').ATTR_NAME;
5481     END IF;
5482 
5483     IF l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX IS NOT NULL THEN
5484       IF l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX = G_MISS_CHAR THEN
5485         l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX := NULL;
5486       END IF;
5487       Debug_Msg('Creating Attribute Data Object for UOM_DELIVERY_TO_MRKT_TEMP_MAX - '||l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX);
5488       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5489                                                   l_single_row_attrs_metadata('UOM_DELIVERY_TO_MRKT_TEMP_MAX').ATTR_GROUP_NAME,
5490                                                   FALSE);
5491       l_attributes_data_table.EXTEND;
5492       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5493                                                                  l_row_identifier,
5494                                                                  l_single_row_attrs_metadata('UOM_DELIVERY_TO_MRKT_TEMP_MAX').ATTR_NAME,
5495                                                                  l_single_row_attrs.UOM_DELIVERY_TO_MRKT_TEMP_MAX,
5496                                                                  NULL, NULL, NULL, NULL, NULL);
5497       l_attribute_names.EXTEND;
5498       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('UOM_DELIVERY_TO_MRKT_TEMP_MAX').ATTR_NAME;
5499     END IF;
5500 
5501     IF l_single_row_attrs.STORAGE_HANDLING_TEMP_MIN IS NOT NULL THEN
5502       IF l_single_row_attrs.STORAGE_HANDLING_TEMP_MIN = G_MISS_NUM THEN
5503         l_single_row_attrs.STORAGE_HANDLING_TEMP_MIN := NULL;
5504       END IF;
5505       Debug_Msg('Creating Attribute Data Object for STORAGE_HANDLING_TEMP_MIN - '||l_single_row_attrs.STORAGE_HANDLING_TEMP_MIN);
5506       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5507                                                   l_single_row_attrs_metadata('STORAGE_HANDLING_TEMP_MIN').ATTR_GROUP_NAME,
5508                                                   FALSE);
5509       l_attributes_data_table.EXTEND;
5510       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5511                                                                  l_row_identifier,
5512                                                                  l_single_row_attrs_metadata('STORAGE_HANDLING_TEMP_MIN').ATTR_NAME,
5513                                                                  NULL,
5514                                                                  l_single_row_attrs.STORAGE_HANDLING_TEMP_MIN,
5515                                                                  NULL, NULL, NULL, NULL);
5516       l_attribute_names.EXTEND;
5517       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('STORAGE_HANDLING_TEMP_MIN').ATTR_NAME;
5518     END IF;
5519 
5520     IF l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN IS NOT NULL THEN
5521       IF l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN = G_MISS_CHAR THEN
5522         l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN := NULL;
5523       END IF;
5524       Debug_Msg('Creating Attribute Data Object for UOM_STORAGE_HANDLING_TEMP_MIN - '||l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN);
5525       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5526                                                   l_single_row_attrs_metadata('UOM_STORAGE_HANDLING_TEMP_MIN').ATTR_GROUP_NAME,
5527                                                   FALSE);
5528       l_attributes_data_table.EXTEND;
5529       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5530                                                                  l_row_identifier,
5531                                                                  l_single_row_attrs_metadata('UOM_STORAGE_HANDLING_TEMP_MIN').ATTR_NAME,
5532                                                                  l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MIN,
5533                                                                  NULL, NULL, NULL, NULL, NULL);
5534       l_attribute_names.EXTEND;
5535       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('UOM_STORAGE_HANDLING_TEMP_MIN').ATTR_NAME;
5536     END IF;
5537 
5538     IF l_single_row_attrs.STORAGE_HANDLING_TEMP_MAX IS NOT NULL THEN
5539       IF l_single_row_attrs.STORAGE_HANDLING_TEMP_MAX = G_MISS_NUM THEN
5540         l_single_row_attrs.STORAGE_HANDLING_TEMP_MAX := NULL;
5541       END IF;
5542       Debug_Msg('Creating Attribute Data Object for STORAGE_HANDLING_TEMP_MAX - '||l_single_row_attrs.STORAGE_HANDLING_TEMP_MAX);
5543       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5544                                                   l_single_row_attrs_metadata('STORAGE_HANDLING_TEMP_MAX').ATTR_GROUP_NAME,
5545                                                   FALSE);
5546       l_attributes_data_table.EXTEND;
5547       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5548                                                                  l_row_identifier,
5549                                                                  l_single_row_attrs_metadata('STORAGE_HANDLING_TEMP_MAX').ATTR_NAME,
5550                                                                  NULL,
5551                                                                  l_single_row_attrs.STORAGE_HANDLING_TEMP_MAX,
5552                                                                  NULL, NULL, NULL, NULL);
5553       l_attribute_names.EXTEND;
5554       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('STORAGE_HANDLING_TEMP_MAX').ATTR_NAME;
5555     END IF;
5556 
5557     IF l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX IS NOT NULL THEN
5558       IF l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX = G_MISS_CHAR THEN
5559         l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX := NULL;
5560       END IF;
5561       Debug_Msg('Creating Attribute Data Object for UOM_STORAGE_HANDLING_TEMP_MAX - '||l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX);
5562       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5563                                                   l_single_row_attrs_metadata('UOM_STORAGE_HANDLING_TEMP_MAX').ATTR_GROUP_NAME,
5564                                                   FALSE);
5565       l_attributes_data_table.EXTEND;
5566       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5567                                                                  l_row_identifier,
5568                                                                  l_single_row_attrs_metadata('UOM_STORAGE_HANDLING_TEMP_MAX').ATTR_NAME,
5569                                                                  l_single_row_attrs.UOM_STORAGE_HANDLING_TEMP_MAX,
5570                                                                  NULL, NULL, NULL, NULL, NULL);
5571       l_attribute_names.EXTEND;
5572       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('UOM_STORAGE_HANDLING_TEMP_MAX').ATTR_NAME;
5573     END IF;
5574 
5575     IF l_single_row_attrs.RETAIL_PRICE_ON_TRADE_ITEM IS NOT NULL THEN
5576       IF l_single_row_attrs.RETAIL_PRICE_ON_TRADE_ITEM = G_MISS_NUM THEN
5577         l_single_row_attrs.RETAIL_PRICE_ON_TRADE_ITEM := NULL;
5578       END IF;
5579       Debug_Msg('Creating Attribute Data Object for RETAIL_PRICE_ON_TRADE_ITEM - '||l_single_row_attrs.RETAIL_PRICE_ON_TRADE_ITEM);
5580       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5581                                                   l_single_row_attrs_metadata('RETAIL_PRICE_ON_TRADE_ITEM').ATTR_GROUP_NAME,
5582                                                   FALSE);
5583       l_attributes_data_table.EXTEND;
5584       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5585                                                                  l_row_identifier,
5586                                                                  l_single_row_attrs_metadata('RETAIL_PRICE_ON_TRADE_ITEM').ATTR_NAME,
5587                                                                  NULL,
5588                                                                  l_single_row_attrs.RETAIL_PRICE_ON_TRADE_ITEM,
5589                                                                  NULL, NULL, NULL, NULL);
5590       l_attribute_names.EXTEND;
5591       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('RETAIL_PRICE_ON_TRADE_ITEM').ATTR_NAME;
5592     END IF;
5593 
5594     IF l_single_row_attrs.PERCENT_OF_ALCOHOL_BY_VOL IS NOT NULL THEN
5595       IF l_single_row_attrs.PERCENT_OF_ALCOHOL_BY_VOL = G_MISS_NUM THEN
5596         l_single_row_attrs.PERCENT_OF_ALCOHOL_BY_VOL := NULL;
5597       END IF;
5598       Debug_Msg('Creating Attribute Data Object for PERCENT_OF_ALCOHOL_BY_VOL - '||l_single_row_attrs.PERCENT_OF_ALCOHOL_BY_VOL);
5599       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5600                                                   l_single_row_attrs_metadata('PERCENT_OF_ALCOHOL_BY_VOL').ATTR_GROUP_NAME,
5601                                                   FALSE);
5602       l_attributes_data_table.EXTEND;
5603       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5604                                                                  l_row_identifier,
5605                                                                  l_single_row_attrs_metadata('PERCENT_OF_ALCOHOL_BY_VOL').ATTR_NAME,
5606                                                                  NULL,
5607                                                                  l_single_row_attrs.PERCENT_OF_ALCOHOL_BY_VOL,
5608                                                                  NULL, NULL, NULL, NULL);
5609       l_attribute_names.EXTEND;
5610       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('PERCENT_OF_ALCOHOL_BY_VOL').ATTR_NAME;
5611     END IF;
5612 
5613     IF l_single_row_attrs.ISBN_NUMBER IS NOT NULL THEN
5614       IF l_single_row_attrs.ISBN_NUMBER = G_MISS_CHAR THEN
5615         l_single_row_attrs.ISBN_NUMBER := NULL;
5616       END IF;
5617       Debug_Msg('Creating Attribute Data Object for ISBN_NUMBER - '||l_single_row_attrs.ISBN_NUMBER);
5618       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5619                                                   l_single_row_attrs_metadata('ISBN_NUMBER').ATTR_GROUP_NAME,
5620                                                   FALSE);
5621       l_attributes_data_table.EXTEND;
5622       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5623                                                                  l_row_identifier,
5624                                                                  l_single_row_attrs_metadata('ISBN_NUMBER').ATTR_NAME,
5625                                                                  l_single_row_attrs.ISBN_NUMBER,
5626                                                                  NULL, NULL, NULL, NULL, NULL);
5627       l_attribute_names.EXTEND;
5628       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('ISBN_NUMBER').ATTR_NAME;
5629     END IF;
5630 
5631     IF l_single_row_attrs.ISSN_NUMBER IS NOT NULL THEN
5632       IF l_single_row_attrs.ISSN_NUMBER = G_MISS_CHAR THEN
5633         l_single_row_attrs.ISSN_NUMBER := NULL;
5634       END IF;
5635       Debug_Msg('Creating Attribute Data Object for ISSN_NUMBER - '||l_single_row_attrs.ISSN_NUMBER);
5636       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5637                                                   l_single_row_attrs_metadata('ISSN_NUMBER').ATTR_GROUP_NAME,
5638                                                   FALSE);
5639       l_attributes_data_table.EXTEND;
5640       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5641                                                                  l_row_identifier,
5642                                                                  l_single_row_attrs_metadata('ISSN_NUMBER').ATTR_NAME,
5643                                                                  l_single_row_attrs.ISSN_NUMBER,
5644                                                                  NULL, NULL, NULL, NULL, NULL);
5645       l_attribute_names.EXTEND;
5646       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('ISSN_NUMBER').ATTR_NAME;
5647     END IF;
5648 
5649     IF l_single_row_attrs.IS_INGREDIENT_IRRADIATED IS NOT NULL THEN
5650       IF l_single_row_attrs.IS_INGREDIENT_IRRADIATED = G_MISS_CHAR THEN
5651         l_single_row_attrs.IS_INGREDIENT_IRRADIATED := NULL;
5652       END IF;
5653       Debug_Msg('Creating Attribute Data Object for IS_INGREDIENT_IRRADIATED - '||l_single_row_attrs.IS_INGREDIENT_IRRADIATED);
5654       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5655                                                   l_single_row_attrs_metadata('IS_INGREDIENT_IRRADIATED').ATTR_GROUP_NAME,
5656                                                   FALSE);
5657       l_attributes_data_table.EXTEND;
5658       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5659                                                                  l_row_identifier,
5660                                                                  l_single_row_attrs_metadata('IS_INGREDIENT_IRRADIATED').ATTR_NAME,
5661                                                                  l_single_row_attrs.IS_INGREDIENT_IRRADIATED,
5662                                                                  NULL, NULL, NULL, NULL, NULL);
5663       l_attribute_names.EXTEND;
5664       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_INGREDIENT_IRRADIATED').ATTR_NAME;
5665     END IF;
5666 
5667     IF l_single_row_attrs.IS_RAW_MATERIAL_IRRADIATED IS NOT NULL THEN
5668       IF l_single_row_attrs.IS_RAW_MATERIAL_IRRADIATED = G_MISS_CHAR THEN
5669         l_single_row_attrs.IS_RAW_MATERIAL_IRRADIATED := NULL;
5670       END IF;
5671       Debug_Msg('Creating Attribute Data Object for IS_RAW_MATERIAL_IRRADIATED - '||l_single_row_attrs.IS_RAW_MATERIAL_IRRADIATED);
5672       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5673                                                   l_single_row_attrs_metadata('IS_RAW_MATERIAL_IRRADIATED').ATTR_GROUP_NAME,
5674                                                   FALSE);
5675       l_attributes_data_table.EXTEND;
5676       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5677                                                                  l_row_identifier,
5678                                                                  l_single_row_attrs_metadata('IS_RAW_MATERIAL_IRRADIATED').ATTR_NAME,
5679                                                                  l_single_row_attrs.IS_RAW_MATERIAL_IRRADIATED,
5680                                                                  NULL, NULL, NULL, NULL, NULL);
5681       l_attribute_names.EXTEND;
5682       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_RAW_MATERIAL_IRRADIATED').ATTR_NAME;
5683     END IF;
5684 
5685     IF l_single_row_attrs.IS_TRADE_ITEM_GENETICALLY_MOD IS NOT NULL THEN
5686       IF l_single_row_attrs.IS_TRADE_ITEM_GENETICALLY_MOD = G_MISS_CHAR THEN
5687         l_single_row_attrs.IS_TRADE_ITEM_GENETICALLY_MOD := NULL;
5688       END IF;
5689       Debug_Msg('Creating Attribute Data Object for IS_TRADE_ITEM_GENETICALLY_MOD - '||l_single_row_attrs.IS_TRADE_ITEM_GENETICALLY_MOD);
5690       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5691                                                   l_single_row_attrs_metadata('IS_TRADE_ITEM_GENETICALLY_MOD').ATTR_GROUP_NAME,
5692                                                   FALSE);
5693       l_attributes_data_table.EXTEND;
5694       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5695                                                                  l_row_identifier,
5696                                                                  l_single_row_attrs_metadata('IS_TRADE_ITEM_GENETICALLY_MOD').ATTR_NAME,
5697                                                                  l_single_row_attrs.IS_TRADE_ITEM_GENETICALLY_MOD,
5698                                                                  NULL, NULL, NULL, NULL, NULL);
5699       l_attribute_names.EXTEND;
5700       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_TRADE_ITEM_GENETICALLY_MOD').ATTR_NAME;
5701     END IF;
5702 
5703     IF l_single_row_attrs.IS_TRADE_ITEM_IRRADIATED IS NOT NULL THEN
5704       IF l_single_row_attrs.IS_TRADE_ITEM_IRRADIATED = G_MISS_CHAR THEN
5705         l_single_row_attrs.IS_TRADE_ITEM_IRRADIATED := NULL;
5706       END IF;
5707       Debug_Msg('Creating Attribute Data Object for IS_TRADE_ITEM_IRRADIATED - '||l_single_row_attrs.IS_TRADE_ITEM_IRRADIATED);
5708       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5709                                                   l_single_row_attrs_metadata('IS_TRADE_ITEM_IRRADIATED').ATTR_GROUP_NAME,
5710                                                   FALSE);
5711       l_attributes_data_table.EXTEND;
5712       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5713                                                                  l_row_identifier,
5714                                                                  l_single_row_attrs_metadata('IS_TRADE_ITEM_IRRADIATED').ATTR_NAME,
5715                                                                  l_single_row_attrs.IS_TRADE_ITEM_IRRADIATED,
5716                                                                  NULL, NULL, NULL, NULL, NULL);
5717       l_attribute_names.EXTEND;
5718       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_TRADE_ITEM_IRRADIATED').ATTR_NAME;
5719     END IF;
5720 
5721     IF l_single_row_attrs.IS_TRADE_ITEM_RECALLED IS NOT NULL THEN
5722       IF l_single_row_attrs.IS_TRADE_ITEM_RECALLED = G_MISS_CHAR THEN
5723         l_single_row_attrs.IS_TRADE_ITEM_RECALLED := NULL;
5724       END IF;
5725       Debug_Msg('Creating Attribute Data Object for IS_TRADE_ITEM_RECALLED - '||l_single_row_attrs.IS_TRADE_ITEM_RECALLED);
5726       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5727                                                   l_single_row_attrs_metadata('IS_TRADE_ITEM_RECALLED').ATTR_GROUP_NAME,
5728                                                   FALSE);
5729       l_attributes_data_table.EXTEND;
5730       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5731                                                                  l_row_identifier,
5732                                                                  l_single_row_attrs_metadata('IS_TRADE_ITEM_RECALLED').ATTR_NAME,
5733                                                                  l_single_row_attrs.IS_TRADE_ITEM_RECALLED,
5734                                                                  NULL, NULL, NULL, NULL, NULL);
5735       l_attribute_names.EXTEND;
5736       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_TRADE_ITEM_RECALLED').ATTR_NAME;
5737     END IF;
5738 
5739     IF l_single_row_attrs.MODEL_NUMBER IS NOT NULL THEN
5740       IF l_single_row_attrs.MODEL_NUMBER = G_MISS_CHAR THEN
5741         l_single_row_attrs.MODEL_NUMBER := NULL;
5742       END IF;
5743       Debug_Msg('Creating Attribute Data Object for MODEL_NUMBER - '||l_single_row_attrs.MODEL_NUMBER);
5744       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5745                                                   l_single_row_attrs_metadata('MODEL_NUMBER').ATTR_GROUP_NAME,
5746                                                   FALSE);
5747       l_attributes_data_table.EXTEND;
5748       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5749                                                                  l_row_identifier,
5750                                                                  l_single_row_attrs_metadata('MODEL_NUMBER').ATTR_NAME,
5751                                                                  l_single_row_attrs.MODEL_NUMBER,
5752                                                                  NULL, NULL, NULL, NULL, NULL);
5753       l_attribute_names.EXTEND;
5754       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('MODEL_NUMBER').ATTR_NAME;
5755     END IF;
5756 
5757     IF l_single_row_attrs.QUANITY_OF_ITEM_IN_LAYER IS NOT NULL THEN
5758       IF l_single_row_attrs.QUANITY_OF_ITEM_IN_LAYER = G_MISS_NUM THEN
5759         l_single_row_attrs.QUANITY_OF_ITEM_IN_LAYER := NULL;
5760       END IF;
5761       Debug_Msg('Creating Attribute Data Object for QUANITY_OF_ITEM_IN_LAYER - '||l_single_row_attrs.QUANITY_OF_ITEM_IN_LAYER);
5762       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5763                                                   l_single_row_attrs_metadata('QUANITY_OF_ITEM_IN_LAYER').ATTR_GROUP_NAME,
5764                                                   FALSE);
5765       l_attributes_data_table.EXTEND;
5766       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5767                                                                  l_row_identifier,
5768                                                                  l_single_row_attrs_metadata('QUANITY_OF_ITEM_IN_LAYER').ATTR_NAME,
5769                                                                  NULL,
5770                                                                  l_single_row_attrs.QUANITY_OF_ITEM_IN_LAYER,
5771                                                                  NULL, NULL, NULL, NULL);
5772       l_attribute_names.EXTEND;
5773       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('QUANITY_OF_ITEM_IN_LAYER').ATTR_NAME;
5774     END IF;
5775 
5776     IF l_single_row_attrs.QUANTITY_OF_ITEM_INNER_PACK IS NOT NULL THEN
5777       IF l_single_row_attrs.QUANTITY_OF_ITEM_INNER_PACK = G_MISS_NUM THEN
5778         l_single_row_attrs.QUANTITY_OF_ITEM_INNER_PACK := NULL;
5779       END IF;
5780       Debug_Msg('Creating Attribute Data Object for QUANTITY_OF_ITEM_INNER_PACK - '||l_single_row_attrs.QUANTITY_OF_ITEM_INNER_PACK);
5781       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5782                                                   l_single_row_attrs_metadata('QUANTITY_OF_ITEM_INNER_PACK').ATTR_GROUP_NAME,
5783                                                   FALSE);
5784       l_attributes_data_table.EXTEND;
5785       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5786                                                                  l_row_identifier,
5787                                                                  l_single_row_attrs_metadata('QUANTITY_OF_ITEM_INNER_PACK').ATTR_NAME,
5788                                                                  NULL,
5789                                                                  l_single_row_attrs.QUANTITY_OF_ITEM_INNER_PACK,
5790                                                                  NULL, NULL, NULL, NULL);
5791       l_attribute_names.EXTEND;
5792       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('QUANTITY_OF_ITEM_INNER_PACK').ATTR_NAME;
5793     END IF;
5794 
5795     IF l_single_row_attrs.QUANTITY_OF_INNER_PACK IS NOT NULL THEN
5796       IF l_single_row_attrs.QUANTITY_OF_INNER_PACK = G_MISS_NUM THEN
5797         l_single_row_attrs.QUANTITY_OF_INNER_PACK := NULL;
5798       END IF;
5799       Debug_Msg('Creating Attribute Data Object for QUANTITY_OF_INNER_PACK - '||l_single_row_attrs.QUANTITY_OF_INNER_PACK);
5800       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5801                                                   l_single_row_attrs_metadata('QUANTITY_OF_INNER_PACK').ATTR_GROUP_NAME,
5802                                                   FALSE);
5803       l_attributes_data_table.EXTEND;
5804       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5805                                                                  l_row_identifier,
5806                                                                  l_single_row_attrs_metadata('QUANTITY_OF_INNER_PACK').ATTR_NAME,
5807                                                                  NULL,
5808                                                                  l_single_row_attrs.QUANTITY_OF_INNER_PACK,
5809                                                                  NULL, NULL, NULL, NULL);
5810       l_attribute_names.EXTEND;
5811       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('QUANTITY_OF_INNER_PACK').ATTR_NAME;
5812     END IF;
5813 
5814     IF l_single_row_attrs.HAS_BATCH_NUMBER IS NOT NULL THEN
5815       IF l_single_row_attrs.HAS_BATCH_NUMBER = G_MISS_CHAR THEN
5816         l_single_row_attrs.HAS_BATCH_NUMBER := NULL;
5817       END IF;
5818       Debug_Msg('Creating Attribute Data Object for HAS_BATCH_NUMBER - '||l_single_row_attrs.HAS_BATCH_NUMBER);
5819       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5820                                                   l_single_row_attrs_metadata('HAS_BATCH_NUMBER').ATTR_GROUP_NAME,
5821                                                   FALSE);
5822       l_attributes_data_table.EXTEND;
5823       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5824                                                                  l_row_identifier,
5825                                                                  l_single_row_attrs_metadata('HAS_BATCH_NUMBER').ATTR_NAME,
5826                                                                  l_single_row_attrs.HAS_BATCH_NUMBER,
5827                                                                  NULL, NULL, NULL, NULL, NULL);
5828       l_attribute_names.EXTEND;
5829       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('HAS_BATCH_NUMBER').ATTR_NAME;
5830     END IF;
5831 
5832     IF l_single_row_attrs.IS_NON_SOLD_TRADE_RET_FLAG IS NOT NULL THEN
5833       IF l_single_row_attrs.IS_NON_SOLD_TRADE_RET_FLAG = G_MISS_CHAR THEN
5834         l_single_row_attrs.IS_NON_SOLD_TRADE_RET_FLAG := NULL;
5835       END IF;
5836       Debug_Msg('Creating Attribute Data Object for IS_NON_SOLD_TRADE_RET_FLAG - '||l_single_row_attrs.IS_NON_SOLD_TRADE_RET_FLAG);
5837       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5838                                                   l_single_row_attrs_metadata('IS_NON_SOLD_TRADE_RET_FLAG').ATTR_GROUP_NAME,
5839                                                   FALSE);
5840       l_attributes_data_table.EXTEND;
5841       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5842                                                                  l_row_identifier,
5843                                                                  l_single_row_attrs_metadata('IS_NON_SOLD_TRADE_RET_FLAG').ATTR_NAME,
5844                                                                  l_single_row_attrs.IS_NON_SOLD_TRADE_RET_FLAG,
5845                                                                  NULL, NULL, NULL, NULL, NULL);
5846       l_attribute_names.EXTEND;
5847       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_NON_SOLD_TRADE_RET_FLAG').ATTR_NAME;
5848     END IF;
5849 
5850     IF l_single_row_attrs.IS_TRADE_ITEM_MAR_REC_FLAG IS NOT NULL THEN
5851       IF l_single_row_attrs.IS_TRADE_ITEM_MAR_REC_FLAG = G_MISS_CHAR THEN
5852         l_single_row_attrs.IS_TRADE_ITEM_MAR_REC_FLAG := NULL;
5853       END IF;
5854       Debug_Msg('Creating Attribute Data Object for IS_TRADE_ITEM_MAR_REC_FLAG - '||l_single_row_attrs.IS_TRADE_ITEM_MAR_REC_FLAG);
5855       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5856                                                   l_single_row_attrs_metadata('IS_TRADE_ITEM_MAR_REC_FLAG').ATTR_GROUP_NAME,
5857                                                   FALSE);
5858       l_attributes_data_table.EXTEND;
5859       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5860                                                                  l_row_identifier,
5861                                                                  l_single_row_attrs_metadata('IS_TRADE_ITEM_MAR_REC_FLAG').ATTR_NAME,
5862                                                                  l_single_row_attrs.IS_TRADE_ITEM_MAR_REC_FLAG,
5863                                                                  NULL, NULL, NULL, NULL, NULL);
5864       l_attribute_names.EXTEND;
5865       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('IS_TRADE_ITEM_MAR_REC_FLAG').ATTR_NAME;
5866     END IF;
5867 
5868     IF l_single_row_attrs.STACKING_FACTOR IS NOT NULL THEN
5869       IF l_single_row_attrs.STACKING_FACTOR = G_MISS_NUM THEN
5870         l_single_row_attrs.STACKING_FACTOR := NULL;
5871       END IF;
5872       Debug_Msg('Creating Attribute Data Object for STACKING_FACTOR - '||l_single_row_attrs.STACKING_FACTOR);
5873       l_row_identifier := Create_Attrs_Row_Table('EGO_ITEM_GTIN_ATTRS',
5874                                                   l_single_row_attrs_metadata('STACKING_FACTOR').ATTR_GROUP_NAME,
5875                                                   FALSE);
5876       l_attributes_data_table.EXTEND;
5877       l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5878                                                                  l_row_identifier,
5879                                                                  l_single_row_attrs_metadata('STACKING_FACTOR').ATTR_NAME,
5880                                                                  NULL,
5881                                                                  l_single_row_attrs.STACKING_FACTOR,
5882                                                                  NULL, NULL, NULL, NULL);
5883       l_attribute_names.EXTEND;
5884       l_attribute_names(l_attribute_names.COUNT) := l_single_row_attrs_metadata('STACKING_FACTOR').ATTR_NAME;
5885     END IF;
5886 
5887     Debug_Msg('Calling EGO_ITEM_PUB.Process_User_Attrs_For_Item');
5888     EGO_ITEM_PVT.Process_User_Attrs_For_Item(
5889         p_api_version                   => 1.0
5890        ,p_inventory_item_id             => p_inventory_item_id
5891        ,p_organization_id               => p_organization_id
5892        ,p_attributes_row_table          => l_attributes_row_table
5893        ,p_attributes_data_table         => l_attributes_data_table
5894        ,p_do_policy_check               => p_check_policy
5895        ,p_validate_hierarchy            => FND_API.G_FALSE
5896        ,p_entity_id                     => p_entity_id
5897        ,p_entity_index                  => p_entity_index
5898        ,p_entity_code                   => p_entity_code
5899        ,p_init_error_handler            => p_init_error_handler
5900        ,p_init_fnd_msg_list             => FND_API.G_FALSE
5901        ,p_add_errors_to_fnd_stack       => FND_API.G_TRUE
5902        ,p_commit                        => FND_API.G_FALSE
5903        ,x_failed_row_id_list            => l_failed_row_id_list
5904        ,x_return_status                 => l_return_status
5905        ,x_errorcode                     => l_errorcode
5906        ,x_msg_count                     => l_msg_count
5907        ,x_msg_data                      => l_msg_data);
5908 
5909     Debug_Msg('Finished EGO_ITEM_PVT.Process_User_Attrs_For_Item with status - '||l_return_status);
5910 
5911     IF l_return_status <> 'S' THEN
5912       x_return_status := l_return_status;
5913       x_msg_count := l_msg_count;
5914       x_msg_data := l_msg_data;
5915       FOR cnt IN 1..l_msg_count LOOP
5916         Debug_Msg('Error msg - '||cnt ||': '|| FND_MSG_PUB.Get(p_msg_index => cnt, p_encoded => 'F'));
5917       END LOOP;
5918       Debug_Msg('Error msg - '|| l_msg_data);
5919     ELSIF l_return_status = 'S' THEN
5920       Debug_Msg('Singe Row Attributes (and deletion of multi-row attributes) processing is successful');
5921       Debug_Msg('Processing multi row attributes');
5922       IF l_multi_row_attrs.FIRST IS NOT NULL THEN
5923         Debug_Msg('Multi row attributes EXIST');
5924         l_index := l_multi_row_attrs.FIRST;
5925         WHILE l_index IS NOT NULL LOOP
5926           Debug_Msg('Processing row# - '||l_index);
5927           -- processing attribute group - Manufacturing_Info
5928           IF l_multi_row_attrs(l_index).MANUFACTURER_ID IS NOT NULL OR l_multi_row_attrs(l_index).MANUFACTURER_GLN IS NOT NULL
5929           THEN
5930             l_attributes_data_table.DELETE;
5931             IF l_multi_row_attrs(l_index).MANUFACTURER_ID IS NOT NULL
5932             THEN
5933               Debug_Msg('Creating Attribute Data Object for MANUFACTURER_ID - '||l_multi_row_attrs(l_index).MANUFACTURER_ID);
5934               IF l_multi_row_attrs(l_index).MANUFACTURER_ID = G_MISS_NUM THEN
5935                 l_multi_row_attrs(l_index).MANUFACTURER_ID := NULL;
5936               END IF;
5937               l_attributes_data_table.EXTEND;
5938               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5939                                                                          1,
5940                                                                          l_multi_row_attrs_metadata('MANUFACTURER_ID').ATTR_NAME,
5941                                                                          NULL,
5942                                                                          l_multi_row_attrs(l_index).MANUFACTURER_ID,
5943                                                                          NULL, NULL, NULL, NULL);
5944               l_attribute_names.EXTEND;
5945               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('MANUFACTURER_ID').ATTR_NAME;
5946             END IF;
5947 
5948             IF l_multi_row_attrs(l_index).MANUFACTURER_GLN IS NOT NULL
5949             THEN
5950               Debug_Msg('Creating Attribute Data Object for MANUFACTURER_GLN - '||l_multi_row_attrs(l_index).MANUFACTURER_GLN);
5951               IF l_multi_row_attrs(l_index).MANUFACTURER_GLN = G_MISS_CHAR THEN
5952                 l_multi_row_attrs(l_index).MANUFACTURER_GLN := NULL;
5953               END IF;
5954               l_attributes_data_table.EXTEND;
5955               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5956                                                                          1,
5957                                                                          l_multi_row_attrs_metadata('MANUFACTURER_GLN').ATTR_NAME,
5958                                                                          l_multi_row_attrs(l_index).MANUFACTURER_GLN,
5959                                                                          NULL, NULL, NULL, NULL, NULL);
5960               l_attribute_names.EXTEND;
5961               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('MANUFACTURER_GLN').ATTR_NAME;
5962             END IF;
5963 
5964             -- processing this AG
5965             Process_Multi_Row_AG(p_attr_group_name              => l_multi_row_attrs_metadata('MANUFACTURER_ID').ATTR_GROUP_NAME,
5966                                  p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs,
5967                                  p_class_code_name_value_pairs  => l_cc_column_name_value_pairs,
5968                                  p_data_level_name_value_pairs  => l_dl_column_name_value_pairs,
5969                                  p_extension_id                 => l_multi_row_attrs(l_index).EXTENSION_ID,
5970                                  p_transaction_type             => l_multi_row_attrs(l_index).TRANSACTION_TYPE,
5971                                  p_attr_name_value_pairs        => l_attributes_data_table,
5972                                  x_return_status                => l_return_status,
5973                                  x_errorcode                    => l_errorcode,
5974                                  x_msg_count                    => l_msg_count,
5975                                  x_msg_data                     => l_msg_data);
5976 
5977             IF l_return_status <> 'S' THEN
5978               x_return_status := l_return_status;
5979               x_msg_count := l_msg_count;
5980               x_msg_data := l_msg_data;
5981               RETURN;
5982             END IF;
5983           END IF; -- IF l_multi_row_attrs(l_index).MANUFACTURER_ID IS NOT NULL OR
5984 
5985           -- processing attribute group - Country_Of_Origin
5986           IF l_multi_row_attrs(l_index).COUNTRY_OF_ORIGIN IS NOT NULL THEN
5987             Debug_Msg('Creating Attribute Data Object for COUNTRY_OF_ORIGIN - '||l_multi_row_attrs(l_index).COUNTRY_OF_ORIGIN);
5988             IF l_multi_row_attrs(l_index).COUNTRY_OF_ORIGIN = G_MISS_CHAR THEN
5989               l_multi_row_attrs(l_index).COUNTRY_OF_ORIGIN := NULL;
5990             END IF;
5991 
5992             l_attributes_data_table.DELETE;
5993             l_attributes_data_table.EXTEND;
5994             l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
5995                                                                        1,
5996                                                                        l_multi_row_attrs_metadata('COUNTRY_OF_ORIGIN').ATTR_NAME,
5997                                                                        l_multi_row_attrs(l_index).COUNTRY_OF_ORIGIN,
5998                                                                        NULL, NULL, NULL, NULL, NULL);
5999             l_attribute_names.EXTEND;
6000             l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('COUNTRY_OF_ORIGIN').ATTR_NAME;
6001 
6002             -- processing this AG
6003             Process_Multi_Row_AG(p_attr_group_name              => l_multi_row_attrs_metadata('COUNTRY_OF_ORIGIN').ATTR_GROUP_NAME,
6004                                  p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs,
6005                                  p_class_code_name_value_pairs  => l_cc_column_name_value_pairs,
6006                                  p_data_level_name_value_pairs  => l_dl_column_name_value_pairs,
6007                                  p_extension_id                 => l_multi_row_attrs(l_index).EXTENSION_ID,
6008                                  p_transaction_type             => l_multi_row_attrs(l_index).TRANSACTION_TYPE,
6009                                  p_attr_name_value_pairs        => l_attributes_data_table,
6010                                  x_return_status                => l_return_status,
6011                                  x_errorcode                    => l_errorcode,
6012                                  x_msg_count                    => l_msg_count,
6013                                  x_msg_data                     => l_msg_data);
6014 
6015             IF l_return_status <> 'S' THEN
6016               x_return_status := l_return_status;
6017               x_msg_count := l_msg_count;
6018               x_msg_data := l_msg_data;
6019               RETURN;
6020             END IF;
6021           END IF; -- IF l_multi_row_attrs(l_index).COUNTRY_OF_ORIGIN IS NOT NULL THEN
6022 
6023           -- processing attribute group - TRADE_ITEM_HARMN_SYS_IDENT
6024           IF l_multi_row_attrs(l_index).HARMONIZED_TARIFF_SYS_ID_CODE IS NOT NULL THEN
6025             Debug_Msg('Creating Attribute Data Object for HARMONIZED_TARIFF_SYS_ID_CODE - '||l_multi_row_attrs(l_index).HARMONIZED_TARIFF_SYS_ID_CODE);
6026             IF l_multi_row_attrs(l_index).HARMONIZED_TARIFF_SYS_ID_CODE = G_MISS_NUM THEN
6027               l_multi_row_attrs(l_index).HARMONIZED_TARIFF_SYS_ID_CODE := NULL;
6028             END IF;
6029 
6030             l_attributes_data_table.DELETE;
6031             l_attributes_data_table.EXTEND;
6032             l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6033                                                                        1,
6034                                                                        l_multi_row_attrs_metadata('HARMONIZED_TARIFF_SYS_ID_CODE').ATTR_NAME,
6035                                                                        NULL,
6036                                                                        l_multi_row_attrs(l_index).HARMONIZED_TARIFF_SYS_ID_CODE,
6037                                                                        NULL, NULL, NULL, NULL);
6038             l_attribute_names.EXTEND;
6039             l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('HARMONIZED_TARIFF_SYS_ID_CODE').ATTR_NAME;
6040 
6041             -- processing this AG
6042             Process_Multi_Row_AG(p_attr_group_name              => l_multi_row_attrs_metadata('HARMONIZED_TARIFF_SYS_ID_CODE').ATTR_GROUP_NAME,
6043                                  p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs,
6044                                  p_class_code_name_value_pairs  => l_cc_column_name_value_pairs,
6045                                  p_data_level_name_value_pairs  => l_dl_column_name_value_pairs,
6046                                  p_extension_id                 => l_multi_row_attrs(l_index).EXTENSION_ID,
6047                                  p_transaction_type             => l_multi_row_attrs(l_index).TRANSACTION_TYPE,
6048                                  p_attr_name_value_pairs        => l_attributes_data_table,
6049                                  x_return_status                => l_return_status,
6050                                  x_errorcode                    => l_errorcode,
6051                                  x_msg_count                    => l_msg_count,
6052                                  x_msg_data                     => l_msg_data);
6053 
6054             IF l_return_status <> 'S' THEN
6055               x_return_status := l_return_status;
6056               x_msg_count := l_msg_count;
6057               x_msg_data := l_msg_data;
6058               RETURN;
6059             END IF;
6060           END IF; -- IF l_multi_row_attrs(l_index).HARMONIZED_TARIFF_SYS_ID_CODE IS NOT NULL THEN
6061 
6062           -- processing attribute group - Size_Description
6063           IF l_multi_row_attrs(l_index).SIZE_CODE_LIST_AGENCY IS NOT NULL OR l_multi_row_attrs(l_index).SIZE_CODE_VALUE IS NOT NULL
6064           THEN
6065             l_attributes_data_table.DELETE;
6066             IF l_multi_row_attrs(l_index).SIZE_CODE_LIST_AGENCY IS NOT NULL THEN
6067               Debug_Msg('Creating Attribute Data Object for SIZE_CODE_LIST_AGENCY - '||l_multi_row_attrs(l_index).SIZE_CODE_LIST_AGENCY);
6068               IF l_multi_row_attrs(l_index).SIZE_CODE_LIST_AGENCY = G_MISS_CHAR THEN
6069                 l_multi_row_attrs(l_index).SIZE_CODE_LIST_AGENCY := NULL;
6070               END IF;
6071 
6072               l_attributes_data_table.EXTEND;
6073               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6074                                                                          1,
6075                                                                          l_multi_row_attrs_metadata('SIZE_CODE_LIST_AGENCY').ATTR_NAME,
6076                                                                          l_multi_row_attrs(l_index).SIZE_CODE_LIST_AGENCY,
6077                                                                          NULL, NULL, NULL, NULL, NULL);
6078               l_attribute_names.EXTEND;
6079               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('SIZE_CODE_LIST_AGENCY').ATTR_NAME;
6080             END IF; -- IF l_multi_row_attrs(l_index).SIZE_CODE_LIST_AGENCY IS NOT NULL THEN
6081 
6082             IF l_multi_row_attrs(l_index).SIZE_CODE_VALUE IS NOT NULL THEN
6083               Debug_Msg('Creating Attribute Data Object for SIZE_CODE_VALUE - '||l_multi_row_attrs(l_index).SIZE_CODE_VALUE);
6084               IF l_multi_row_attrs(l_index).SIZE_CODE_VALUE = G_MISS_CHAR THEN
6085                 l_multi_row_attrs(l_index).SIZE_CODE_VALUE := NULL;
6086               END IF;
6087 
6088               l_attributes_data_table.EXTEND;
6089               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6090                                                                          1,
6091                                                                          l_multi_row_attrs_metadata('SIZE_CODE_VALUE').ATTR_NAME,
6092                                                                          l_multi_row_attrs(l_index).SIZE_CODE_VALUE,
6093                                                                          NULL, NULL, NULL, NULL, NULL);
6094               l_attribute_names.EXTEND;
6095               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('SIZE_CODE_VALUE').ATTR_NAME;
6096             END IF; -- IF l_multi_row_attrs(l_index).SIZE_CODE_VALUE IS NOT NULL THEN
6097 
6098             -- processing this AG
6099             Process_Multi_Row_AG(p_attr_group_name              => l_multi_row_attrs_metadata('SIZE_CODE_VALUE').ATTR_GROUP_NAME,
6100                                  p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs,
6101                                  p_class_code_name_value_pairs  => l_cc_column_name_value_pairs,
6102                                  p_data_level_name_value_pairs  => l_dl_column_name_value_pairs,
6103                                  p_extension_id                 => l_multi_row_attrs(l_index).EXTENSION_ID,
6104                                  p_transaction_type             => l_multi_row_attrs(l_index).TRANSACTION_TYPE,
6105                                  p_attr_name_value_pairs        => l_attributes_data_table,
6106                                  x_return_status                => l_return_status,
6107                                  x_errorcode                    => l_errorcode,
6108                                  x_msg_count                    => l_msg_count,
6109                                  x_msg_data                     => l_msg_data);
6110 
6111             IF l_return_status <> 'S' THEN
6112               x_return_status := l_return_status;
6113               x_msg_count := l_msg_count;
6114               x_msg_data := l_msg_data;
6115               RETURN;
6116             END IF;
6117           END IF; -- IF l_multi_row_attrs(l_index).SIZE_CODE_LIST_AGENCY IS NOT NULL OR l_
6118 
6119           -- processing attribute group - Delivery_Method_Indicator
6120           IF l_multi_row_attrs(l_index).DELIVERY_METHOD_INDICATOR IS NOT NULL THEN
6121             Debug_Msg('Creating Attribute Data Object for DELIVERY_METHOD_INDICATOR - '||l_multi_row_attrs(l_index).DELIVERY_METHOD_INDICATOR);
6122             IF l_multi_row_attrs(l_index).DELIVERY_METHOD_INDICATOR = G_MISS_CHAR THEN
6123               l_multi_row_attrs(l_index).DELIVERY_METHOD_INDICATOR := NULL;
6124             END IF;
6125 
6126             l_attributes_data_table.DELETE;
6127             l_attributes_data_table.EXTEND;
6128             l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6129                                                                        1,
6130                                                                        l_multi_row_attrs_metadata('DELIVERY_METHOD_INDICATOR').ATTR_NAME,
6131                                                                        l_multi_row_attrs(l_index).DELIVERY_METHOD_INDICATOR,
6132                                                                        NULL, NULL, NULL, NULL, NULL);
6133             l_attribute_names.EXTEND;
6134             l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('DELIVERY_METHOD_INDICATOR').ATTR_NAME;
6135 
6136             -- processing this AG
6137             Process_Multi_Row_AG(p_attr_group_name              => l_multi_row_attrs_metadata('DELIVERY_METHOD_INDICATOR').ATTR_GROUP_NAME,
6138                                  p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs,
6139                                  p_class_code_name_value_pairs  => l_cc_column_name_value_pairs,
6140                                  p_data_level_name_value_pairs  => l_dl_column_name_value_pairs,
6141                                  p_extension_id                 => l_multi_row_attrs(l_index).EXTENSION_ID,
6142                                  p_transaction_type             => l_multi_row_attrs(l_index).TRANSACTION_TYPE,
6143                                  p_attr_name_value_pairs        => l_attributes_data_table,
6144                                  x_return_status                => l_return_status,
6145                                  x_errorcode                    => l_errorcode,
6146                                  x_msg_count                    => l_msg_count,
6147                                  x_msg_data                     => l_msg_data);
6148 
6149             IF l_return_status <> 'S' THEN
6150               x_return_status := l_return_status;
6151               x_msg_count := l_msg_count;
6152               x_msg_data := l_msg_data;
6153               RETURN;
6154             END IF;
6155           END IF; -- IF l_multi_row_attrs(l_index).DELIVERY_METHOD_INDICATOR IS NOT NULL THEN
6156 
6157           -- processing attribute group - Handling_Information
6158           IF l_multi_row_attrs(l_index).HANDLING_INSTRUCTIONS_CODE IS NOT NULL THEN
6159             Debug_Msg('Creating Attribute Data Object for HANDLING_INSTRUCTIONS_CODE - '||l_multi_row_attrs(l_index).HANDLING_INSTRUCTIONS_CODE);
6160             IF l_multi_row_attrs(l_index).HANDLING_INSTRUCTIONS_CODE = G_MISS_CHAR THEN
6161               l_multi_row_attrs(l_index).HANDLING_INSTRUCTIONS_CODE := NULL;
6162             END IF;
6163 
6164             l_attributes_data_table.DELETE;
6165             l_attributes_data_table.EXTEND;
6166             l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6167                                                                        1,
6168                                                                        l_multi_row_attrs_metadata('HANDLING_INSTRUCTIONS_CODE').ATTR_NAME,
6169                                                                        l_multi_row_attrs(l_index).HANDLING_INSTRUCTIONS_CODE,
6170                                                                        NULL, NULL, NULL, NULL, NULL);
6171             l_attribute_names.EXTEND;
6172             l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('HANDLING_INSTRUCTIONS_CODE').ATTR_NAME;
6173 
6174             -- processing this AG
6175             Process_Multi_Row_AG(p_attr_group_name              => l_multi_row_attrs_metadata('HANDLING_INSTRUCTIONS_CODE').ATTR_GROUP_NAME,
6176                                  p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs,
6177                                  p_class_code_name_value_pairs  => l_cc_column_name_value_pairs,
6178                                  p_data_level_name_value_pairs  => l_dl_column_name_value_pairs,
6179                                  p_extension_id                 => l_multi_row_attrs(l_index).EXTENSION_ID,
6180                                  p_transaction_type             => l_multi_row_attrs(l_index).TRANSACTION_TYPE,
6181                                  p_attr_name_value_pairs        => l_attributes_data_table,
6182                                  x_return_status                => l_return_status,
6183                                  x_errorcode                    => l_errorcode,
6184                                  x_msg_count                    => l_msg_count,
6185                                  x_msg_data                     => l_msg_data);
6186 
6187             IF l_return_status <> 'S' THEN
6188               x_return_status := l_return_status;
6189               x_msg_count := l_msg_count;
6190               x_msg_data := l_msg_data;
6191               RETURN;
6192             END IF;
6193           END IF; -- IF l_multi_row_attrs(l_index).HANDLING_INSTRUCTIONS_CODE IS NOT NULL THEN
6194 
6195           -- processing attribute group - Hazardous_Information
6196           IF l_multi_row_attrs(l_index).CLASS_OF_DANGEROUS_CODE IS NOT NULL OR
6197              l_multi_row_attrs(l_index).DANGEROUS_GOODS_MARGIN_NUMBER IS NOT NULL OR
6198              l_multi_row_attrs(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE IS NOT NULL OR
6199              l_multi_row_attrs(l_index).DANGEROUS_GOODS_PACK_GROUP IS NOT NULL OR
6200              l_multi_row_attrs(l_index).DANGEROUS_GOODS_REG_CODE IS NOT NULL OR
6201              l_multi_row_attrs(l_index).DANGEROUS_GOODS_SHIPPING_NAME IS NOT NULL OR
6202              l_multi_row_attrs(l_index).DANGEROUS_GOODS_TECHNICAL_NAME IS NOT NULL OR
6203              l_multi_row_attrs(l_index).UNITED_NATIONS_DANG_GOODS_NO IS NOT NULL OR
6204              l_multi_row_attrs(l_index).FLASH_POINT_TEMP IS NOT NULL OR
6205              l_multi_row_attrs(l_index).UOM_FLASH_POINT_TEMP IS NOT NULL
6206           THEN
6207             l_attributes_data_table.DELETE;
6208             IF l_multi_row_attrs(l_index).CLASS_OF_DANGEROUS_CODE IS NOT NULL THEN
6209               Debug_Msg('Creating Attribute Data Object for CLASS_OF_DANGEROUS_CODE - '||l_multi_row_attrs(l_index).CLASS_OF_DANGEROUS_CODE);
6210               IF l_multi_row_attrs(l_index).CLASS_OF_DANGEROUS_CODE = G_MISS_CHAR THEN
6211                 l_multi_row_attrs(l_index).CLASS_OF_DANGEROUS_CODE := NULL;
6212               END IF;
6213 
6214               l_attributes_data_table.EXTEND;
6215               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6216                                                                          1,
6217                                                                          l_multi_row_attrs_metadata('CLASS_OF_DANGEROUS_CODE').ATTR_NAME,
6218                                                                          l_multi_row_attrs(l_index).CLASS_OF_DANGEROUS_CODE,
6219                                                                          NULL, NULL, NULL, NULL, NULL);
6220               l_attribute_names.EXTEND;
6221               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('CLASS_OF_DANGEROUS_CODE').ATTR_NAME;
6222             END IF; -- IF l_multi_row_attrs(l_index).CLASS_OF_DANGEROUS_CODE IS NOT NULL THEN
6223 
6224             IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_MARGIN_NUMBER IS NOT NULL THEN
6225               Debug_Msg('Creating Attribute Data Object for DANGEROUS_GOODS_MARGIN_NUMBER - '||l_multi_row_attrs(l_index).DANGEROUS_GOODS_MARGIN_NUMBER);
6226               IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_MARGIN_NUMBER = G_MISS_CHAR THEN
6227                 l_multi_row_attrs(l_index).DANGEROUS_GOODS_MARGIN_NUMBER := NULL;
6228               END IF;
6229 
6230               l_attributes_data_table.EXTEND;
6231               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6232                                                                          1,
6233                                                                          l_multi_row_attrs_metadata('DANGEROUS_GOODS_MARGIN_NUMBER').ATTR_NAME,
6234                                                                          l_multi_row_attrs(l_index).DANGEROUS_GOODS_MARGIN_NUMBER,
6235                                                                          NULL, NULL, NULL, NULL, NULL);
6236               l_attribute_names.EXTEND;
6237               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('DANGEROUS_GOODS_MARGIN_NUMBER').ATTR_NAME;
6238             END IF; --IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_MARGIN_NUMBER IS NOT NULL THEN
6239 
6240             IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE IS NOT NULL THEN
6241               Debug_Msg('Creating Attribute Data Object for DANGEROUS_GOODS_HAZARDOUS_CODE - '||l_multi_row_attrs(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE);
6242               IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE = G_MISS_CHAR THEN
6243                 l_multi_row_attrs(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE := NULL;
6244               END IF;
6245 
6246               l_attributes_data_table.EXTEND;
6247               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6248                                                                          1,
6249                                                                          l_multi_row_attrs_metadata('DANGEROUS_GOODS_HAZARDOUS_CODE').ATTR_NAME,
6250                                                                          l_multi_row_attrs(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE,
6251                                                                          NULL, NULL, NULL, NULL, NULL);
6252               l_attribute_names.EXTEND;
6253               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('DANGEROUS_GOODS_HAZARDOUS_CODE').ATTR_NAME;
6254             END IF; --IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_HAZARDOUS_CODE IS NOT NULL THEN
6255 
6256             IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_PACK_GROUP IS NOT NULL THEN
6257               Debug_Msg('Creating Attribute Data Object for DANGEROUS_GOODS_PACK_GROUP - '||l_multi_row_attrs(l_index).DANGEROUS_GOODS_PACK_GROUP);
6258               IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_PACK_GROUP = G_MISS_CHAR THEN
6259                 l_multi_row_attrs(l_index).DANGEROUS_GOODS_PACK_GROUP := NULL;
6260               END IF;
6261               l_attributes_data_table.EXTEND;
6262               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6263                                                                          1,
6264                                                                          l_multi_row_attrs_metadata('DANGEROUS_GOODS_PACK_GROUP').ATTR_NAME,
6265                                                                          l_multi_row_attrs(l_index).DANGEROUS_GOODS_PACK_GROUP,
6266                                                                          NULL, NULL, NULL, NULL, NULL);
6267               l_attribute_names.EXTEND;
6268               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('DANGEROUS_GOODS_PACK_GROUP').ATTR_NAME;
6269             END IF; --IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_PACK_GROUP IS NOT NULL THEN
6270 
6271             IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_REG_CODE IS NOT NULL THEN
6272               Debug_Msg('Creating Attribute Data Object for DANGEROUS_GOODS_REG_CODE - '||l_multi_row_attrs(l_index).DANGEROUS_GOODS_REG_CODE);
6273               IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_REG_CODE = G_MISS_CHAR THEN
6274                 l_multi_row_attrs(l_index).DANGEROUS_GOODS_REG_CODE := NULL;
6275               END IF;
6276               l_attributes_data_table.EXTEND;
6277               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6278                                                                          1,
6279                                                                          l_multi_row_attrs_metadata('DANGEROUS_GOODS_REG_CODE').ATTR_NAME,
6280                                                                          l_multi_row_attrs(l_index).DANGEROUS_GOODS_REG_CODE,
6281                                                                          NULL, NULL, NULL, NULL, NULL);
6282               l_attribute_names.EXTEND;
6283               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('DANGEROUS_GOODS_REG_CODE').ATTR_NAME;
6284             END IF; --IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_REG_CODE IS NOT NULL THEN
6285 
6286             IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_SHIPPING_NAME IS NOT NULL THEN
6287               Debug_Msg('Creating Attribute Data Object for DANGEROUS_GOODS_SHIPPING_NAME - '||l_multi_row_attrs(l_index).DANGEROUS_GOODS_SHIPPING_NAME);
6288               IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_SHIPPING_NAME = G_MISS_CHAR THEN
6289                 l_multi_row_attrs(l_index).DANGEROUS_GOODS_SHIPPING_NAME := NULL;
6290               END IF;
6291               l_attributes_data_table.EXTEND;
6292               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6293                                                                          1,
6294                                                                          l_multi_row_attrs_metadata('DANGEROUS_GOODS_SHIPPING_NAME').ATTR_NAME,
6295                                                                          l_multi_row_attrs(l_index).DANGEROUS_GOODS_SHIPPING_NAME,
6296                                                                          NULL, NULL, NULL, NULL, NULL);
6297               l_attribute_names.EXTEND;
6298               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('DANGEROUS_GOODS_SHIPPING_NAME').ATTR_NAME;
6299             END IF; --IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_SHIPPING_NAME IS NOT NULL THEN
6300 
6301             IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_TECHNICAL_NAME IS NOT NULL THEN
6302               Debug_Msg('Creating Attribute Data Object for DANGEROUS_GOODS_TECHNICAL_NAME - '||l_multi_row_attrs(l_index).DANGEROUS_GOODS_TECHNICAL_NAME);
6303               IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_TECHNICAL_NAME = G_MISS_CHAR THEN
6304                 l_multi_row_attrs(l_index).DANGEROUS_GOODS_TECHNICAL_NAME := NULL;
6305               END IF;
6306               l_attributes_data_table.EXTEND;
6307               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6308                                                                          1,
6309                                                                          l_multi_row_attrs_metadata('DANGEROUS_GOODS_TECHNICAL_NAME').ATTR_NAME,
6310                                                                          l_multi_row_attrs(l_index).DANGEROUS_GOODS_TECHNICAL_NAME,
6311                                                                          NULL, NULL, NULL, NULL, NULL);
6312               l_attribute_names.EXTEND;
6313               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('DANGEROUS_GOODS_TECHNICAL_NAME').ATTR_NAME;
6314             END IF; --IF l_multi_row_attrs(l_index).DANGEROUS_GOODS_TECHNICAL_NAME IS NOT NULL THEN
6315 
6316             IF l_multi_row_attrs(l_index).UNITED_NATIONS_DANG_GOODS_NO IS NOT NULL THEN
6317               Debug_Msg('Creating Attribute Data Object for UNITED_NATIONS_DANG_GOODS_NO - '||l_multi_row_attrs(l_index).UNITED_NATIONS_DANG_GOODS_NO);
6318               IF l_multi_row_attrs(l_index).UNITED_NATIONS_DANG_GOODS_NO = G_MISS_NUM THEN
6319                 l_multi_row_attrs(l_index).UNITED_NATIONS_DANG_GOODS_NO := NULL;
6320               END IF;
6321               l_attributes_data_table.EXTEND;
6322               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6323                                                                          1,
6324                                                                          l_multi_row_attrs_metadata('UNITED_NATIONS_DANG_GOODS_NO').ATTR_NAME,
6325                                                                          NULL,
6326                                                                          l_multi_row_attrs(l_index).UNITED_NATIONS_DANG_GOODS_NO,
6327                                                                          NULL, NULL, NULL, NULL);
6328               l_attribute_names.EXTEND;
6329               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('UNITED_NATIONS_DANG_GOODS_NO').ATTR_NAME;
6330             END IF; --IF l_multi_row_attrs(l_index).UNITED_NATIONS_DANG_GOODS_NO IS NOT NULL THEN
6331 
6332             IF l_multi_row_attrs(l_index).FLASH_POINT_TEMP IS NOT NULL THEN
6333               Debug_Msg('Creating Attribute Data Object for FLASH_POINT_TEMP - '||l_multi_row_attrs(l_index).FLASH_POINT_TEMP);
6334               IF l_multi_row_attrs(l_index).FLASH_POINT_TEMP = G_MISS_NUM THEN
6335                 l_multi_row_attrs(l_index).FLASH_POINT_TEMP := NULL;
6336               END IF;
6337               l_attributes_data_table.EXTEND;
6338               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6339                                                                          1,
6340                                                                          l_multi_row_attrs_metadata('FLASH_POINT_TEMP').ATTR_NAME,
6341                                                                          NULL,
6342                                                                          l_multi_row_attrs(l_index).FLASH_POINT_TEMP,
6343                                                                          NULL, NULL, NULL, NULL);
6344               l_attribute_names.EXTEND;
6345               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('FLASH_POINT_TEMP').ATTR_NAME;
6346             END IF; --IF l_multi_row_attrs(l_index).FLASH_POINT_TEMP IS NOT NULL THEN
6347 
6348             IF l_multi_row_attrs(l_index).UOM_FLASH_POINT_TEMP IS NOT NULL THEN
6349               Debug_Msg('Creating Attribute Data Object for UOM_FLASH_POINT_TEMP - '||l_multi_row_attrs(l_index).UOM_FLASH_POINT_TEMP);
6350               IF l_multi_row_attrs(l_index).UOM_FLASH_POINT_TEMP = G_MISS_CHAR THEN
6351                 l_multi_row_attrs(l_index).UOM_FLASH_POINT_TEMP := NULL;
6352               END IF;
6353               l_attributes_data_table.EXTEND;
6354               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6355                                                                          1,
6356                                                                          l_multi_row_attrs_metadata('UOM_FLASH_POINT_TEMP').ATTR_NAME,
6357                                                                          l_multi_row_attrs(l_index).UOM_FLASH_POINT_TEMP,
6358                                                                          NULL, NULL, NULL, NULL, NULL);
6359               l_attribute_names.EXTEND;
6360               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('UOM_FLASH_POINT_TEMP').ATTR_NAME;
6361             END IF; --IF l_multi_row_attrs(l_index).UOM_FLASH_POINT_TEMP IS NOT NULL THEN
6362 
6363             -- processing this AG
6364             Process_Multi_Row_AG(p_attr_group_name              => l_multi_row_attrs_metadata('DANGEROUS_GOODS_TECHNICAL_NAME').ATTR_GROUP_NAME,
6365                                  p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs,
6366                                  p_class_code_name_value_pairs  => l_cc_column_name_value_pairs,
6367                                  p_data_level_name_value_pairs  => l_dl_column_name_value_pairs,
6368                                  p_extension_id                 => l_multi_row_attrs(l_index).EXTENSION_ID,
6369                                  p_transaction_type             => l_multi_row_attrs(l_index).TRANSACTION_TYPE,
6370                                  p_attr_name_value_pairs        => l_attributes_data_table,
6371                                  x_return_status                => l_return_status,
6372                                  x_errorcode                    => l_errorcode,
6373                                  x_msg_count                    => l_msg_count,
6374                                  x_msg_data                     => l_msg_data);
6375 
6376             IF l_return_status <> 'S' THEN
6377               x_return_status := l_return_status;
6378               x_msg_count := l_msg_count;
6379               x_msg_data := l_msg_data;
6380               RETURN;
6381             END IF;
6382           END IF;
6383 
6384           -- processing attribute group - Bar_Code
6385           IF l_multi_row_attrs(l_index).BAR_CODE_TYPE IS NOT NULL THEN
6386             Debug_Msg('Creating Attribute Data Object for BAR_CODE_TYPE - '||l_multi_row_attrs(l_index).BAR_CODE_TYPE);
6387             IF l_multi_row_attrs(l_index).BAR_CODE_TYPE = G_MISS_CHAR THEN
6388               l_multi_row_attrs(l_index).BAR_CODE_TYPE := NULL;
6389             END IF;
6390             l_attributes_data_table.DELETE;
6391             l_attributes_data_table.EXTEND;
6392             l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6393                                                                        1,
6394                                                                        l_multi_row_attrs_metadata('BAR_CODE_TYPE').ATTR_NAME,
6395                                                                        l_multi_row_attrs(l_index).BAR_CODE_TYPE,
6396                                                                        NULL, NULL, NULL, NULL, NULL);
6397             l_attribute_names.EXTEND;
6398             l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('BAR_CODE_TYPE').ATTR_NAME;
6399 
6400             -- processing this AG
6401             Process_Multi_Row_AG(p_attr_group_name              => l_multi_row_attrs_metadata('BAR_CODE_TYPE').ATTR_GROUP_NAME,
6402                                  p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs,
6403                                  p_class_code_name_value_pairs  => l_cc_column_name_value_pairs,
6404                                  p_data_level_name_value_pairs  => l_dl_column_name_value_pairs,
6405                                  p_extension_id                 => l_multi_row_attrs(l_index).EXTENSION_ID,
6406                                  p_transaction_type             => l_multi_row_attrs(l_index).TRANSACTION_TYPE,
6407                                  p_attr_name_value_pairs        => l_attributes_data_table,
6408                                  x_return_status                => l_return_status,
6409                                  x_errorcode                    => l_errorcode,
6410                                  x_msg_count                    => l_msg_count,
6411                                  x_msg_data                     => l_msg_data);
6412 
6413             IF l_return_status <> 'S' THEN
6414               x_return_status := l_return_status;
6415               x_msg_count := l_msg_count;
6416               x_msg_data := l_msg_data;
6417               RETURN;
6418             END IF;
6419           END IF; --IF l_multi_row_attrs(l_index).BAR_CODE_TYPE IS NOT NULL THEN
6420 
6421           -- processing attribute group - Gtin_Color_Description
6422           IF l_multi_row_attrs(l_index).COLOR_CODE_VALUE IS NOT NULL OR
6423              l_multi_row_attrs(l_index).COLOR_CODE_LIST_AGENCY IS NOT NULL
6424           THEN
6425             l_attributes_data_table.DELETE;
6426             IF l_multi_row_attrs(l_index).COLOR_CODE_VALUE IS NOT NULL THEN
6427               Debug_Msg('Creating Attribute Data Object for COLOR_CODE_VALUE - '||l_multi_row_attrs(l_index).COLOR_CODE_VALUE);
6428               IF l_multi_row_attrs(l_index).COLOR_CODE_VALUE = G_MISS_CHAR THEN
6429                 l_multi_row_attrs(l_index).COLOR_CODE_VALUE := NULL;
6430               END IF;
6431               l_attributes_data_table.EXTEND;
6432               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6433                                                                          1,
6434                                                                          l_multi_row_attrs_metadata('COLOR_CODE_VALUE').ATTR_NAME,
6435                                                                          l_multi_row_attrs(l_index).COLOR_CODE_VALUE,
6436                                                                          NULL, NULL, NULL, NULL, NULL);
6437               l_attribute_names.EXTEND;
6438               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('COLOR_CODE_VALUE').ATTR_NAME;
6439             END IF; --IF l_multi_row_attrs(l_index).COLOR_CODE_VALUE IS NOT NULL THEN
6440 
6441             IF l_multi_row_attrs(l_index).COLOR_CODE_LIST_AGENCY IS NOT NULL THEN
6442               Debug_Msg('Creating Attribute Data Object for COLOR_CODE_LIST_AGENCY - '||l_multi_row_attrs(l_index).COLOR_CODE_LIST_AGENCY);
6443               IF l_multi_row_attrs(l_index).COLOR_CODE_LIST_AGENCY = G_MISS_CHAR THEN
6444                 l_multi_row_attrs(l_index).COLOR_CODE_LIST_AGENCY := NULL;
6445               END IF;
6446               l_attributes_data_table.EXTEND;
6447               l_attributes_data_table(l_attributes_data_table.COUNT) := EGO_USER_ATTR_DATA_OBJ(
6448                                                                          1,
6449                                                                          l_multi_row_attrs_metadata('COLOR_CODE_LIST_AGENCY').ATTR_NAME,
6450                                                                          l_multi_row_attrs(l_index).COLOR_CODE_LIST_AGENCY,
6451                                                                          NULL, NULL, NULL, NULL, NULL);
6452               l_attribute_names.EXTEND;
6453               l_attribute_names(l_attribute_names.COUNT) := l_multi_row_attrs_metadata('COLOR_CODE_LIST_AGENCY').ATTR_NAME;
6454             END IF; --IF l_multi_row_attrs(l_index).COLOR_CODE_LIST_AGENCY IS NOT NULL THEN
6455 
6456             -- processing this AG
6457             Process_Multi_Row_AG(p_attr_group_name              => l_multi_row_attrs_metadata('COLOR_CODE_LIST_AGENCY').ATTR_GROUP_NAME,
6458                                  p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs,
6459                                  p_class_code_name_value_pairs  => l_cc_column_name_value_pairs,
6460                                  p_data_level_name_value_pairs  => l_dl_column_name_value_pairs,
6461                                  p_extension_id                 => l_multi_row_attrs(l_index).EXTENSION_ID,
6462                                  p_transaction_type             => l_multi_row_attrs(l_index).TRANSACTION_TYPE,
6463                                  p_attr_name_value_pairs        => l_attributes_data_table,
6464                                  x_return_status                => l_return_status,
6465                                  x_errorcode                    => l_errorcode,
6466                                  x_msg_count                    => l_msg_count,
6467                                  x_msg_data                     => l_msg_data);
6468 
6469             IF l_return_status <> 'S' THEN
6470               x_return_status := l_return_status;
6471               x_msg_count := l_msg_count;
6472               x_msg_data := l_msg_data;
6473               RETURN;
6474             END IF;
6475           END IF; --IF l_multi_row_attrs(l_index).COLOR_CODE_VALUE IS NOT NULL OR
6476 
6477           l_index := l_multi_row_attrs.NEXT(l_index);
6478         END LOOP; -- end while
6479       END IF; -- IF p_multi_row_attrs_table.FIRST IS NOT NULL THEN
6480       Debug_Msg('Done, Processing multi row attributes');
6481 
6482       IF l_attribute_names.COUNT > 0 THEN
6483         Debug_Msg('Calling EGO_GTIN_PVT.PROCESS_ATTRIBUTE_UPDATES');
6484         EGO_GTIN_PVT.PROCESS_ATTRIBUTE_UPDATES(
6485           p_inventory_item_id,
6486           p_organization_id,
6487           l_attribute_names,
6488           FND_API.G_FALSE,
6489           l_return_status,
6490           l_msg_count,
6491           l_msg_data);
6492 
6493         Debug_Msg('Finished Calling EGO_GTIN_PVT.PROCESS_ATTRIBUTE_UPDATES with status='||l_return_status);
6494         IF l_return_status <> 'S' THEN
6495           Debug_Msg('Error msg - '|| l_msg_data);
6496           IF FND_API.To_Boolean(p_init_error_handler) THEN
6497             ERROR_HANDLER.Initialize;
6498             ERROR_HANDLER.Set_Bo_Identifier(EGO_USER_ATTRS_DATA_PVT.G_BO_IDENTIFIER);
6499           END IF;
6500           ERROR_HANDLER.Add_Error_Message
6501             (
6502               p_message_text                  => l_msg_text
6503              ,p_application_id                => 'EGO'
6504              ,p_message_type                  => FND_API.G_RET_STS_ERROR
6505              ,p_row_identifier                => p_inventory_item_id
6506              ,p_entity_id                     => p_entity_id
6507              ,p_entity_index                  => p_entity_index
6508              ,p_entity_code                   => p_entity_code
6509             );
6510           IF (FND_API.To_Boolean(p_init_error_handler)) THEN
6511             ERROR_HANDLER.Log_Error
6512              (p_write_err_to_inttable    => 'Y'
6513              ,p_write_err_to_debugfile   => ERROR_HANDLER.Get_Debug()
6514             );
6515           END IF;
6516         END IF; -- end IF l_return_status <> 'S' THEN
6517       END IF; --IF l_attribute_names.COUNT > 0 THEN
6518       x_return_status := l_return_status;
6519       x_msg_count := l_msg_count;
6520       x_msg_data := l_msg_data;
6521     END IF; -- IF l_return_status <> 'S
6522 
6523     IF FND_API.To_Boolean(p_commit) THEN
6524       Debug_Msg('p_commit is TRUE, so commiting');
6525       COMMIT;
6526     END IF;
6527 
6528     Debug_Msg('Finished Process_UCCnet_Attrs_For_Item');
6529   EXCEPTION WHEN OTHERS THEN
6530     x_return_status := 'U';
6531     x_msg_count := 1;
6532     x_msg_data := SQLERRM;
6533     Debug_Msg('Unexpected Error in Process_UCCnet_Attrs_For_Item - '||x_msg_data);
6534     IF FND_API.To_Boolean(p_commit) THEN
6535       COMMIT;
6536     END IF;
6537   END Process_UCCnet_Attrs_For_Item;
6538 
6539 END EGO_GTIN_ATTRS_PVT;