Friday, August 31, 2012

Oracle R12 Lot Genealogy and Noetix

If, like me, you work in a process manufacturing* company one of the key things you need to worry about is lot genealogy. Put simply this is the process that a manufacturer uses to determine where the raw ingredients went. When you read about a product recall in the press this is the process the company will have gone through to trace where every product to be recalled went.

Here's a simple diagram of the process;

Simple Lot Genealogy

As is made (hopefully!) obvious in the diagram the main issue with reporting on Lot Genealogy is recursion. In Release 11 Oracle used to provide a lot genealogy report, it seems they have removed this report in Release 12 although the same information is available via the standard Oracle Forms (although if you have to file reports with the FDA or HMRC it's questionable how well "we've got it on the screen" will go down).

Each step in the above process is logged as an item transaction (amongst a lot of other events). There are four steps to the process;
  1. Which lots were created as a result of purchase order W?
  2. Which batches did lot X go into? 
  3. Which lots did batch Y go into?
  4. Which lots fulfilled sales order Z?
Working through these in turn and using the Noetix View INVG0_Lot_Transactions the SQL to see which lots were created by a receipt into inventory from a Purchase Order is;

SELECT ilt.lot_number
  FROM invg0_lot_transactions ilt
 WHERE 1 = 1
   AND ilt.PO_Number = 'XXX'
   AND ilt.transaction_type = 'PO Receipt';

Now the first thing you'll notice if you're familiar with the view is that I'm using a "PO Number" column - a column that doesn't exist in the basic view as provided by Noetix. In order to simplify not just Lot Genealogy but reporting in general we have added a number of customisations to this view. These are available as a single file here (via Google Docs). Strictly speaking it's not necessary to add these customisations as we could do it all in the script I'll show you below, but it does make it a great deal easier (for example do you prefer "DECODE( MATTR.TRANSACTION_SOURCE_TYPE_ID, 5, MATTR.Transaction_Source_ID, null)" or just Batch_Id?).

The second point, which batches did lot X go into, is a little more complicated as we are also at this stage looking to exclude batches where the lot was issues incorrectly and then fully returned (using the "WIP Issue" and "WIP Return" transaction types). See below for the SQL;

SELECT ilt.Batch_Number, SUM(ilt.TRANSACTION_QUANTITY)
  FROM invg0_lot_transactions ilt
 WHERE 1=1
   AND ilt.lot_number = 'XXX'
   AND ilt.Transaction_Source_Type = 'Job or Schedule'
   AND (ilt.transaction_type = 'WIP Issue' OR ilt.Transaction_Type = 'WIP Return') 
 GROUP BY ilt.batch_number
HAVING SUM(ilt.TRANSACTION_QUANTITY) < 0

The third point, which lots did batch X produce, goes back to the simple-style of the first

SELECT itd.LOT_NUMBER
  FROM invg0_lot_transactions itd
 WHERE 1=1
   AND itd.transaction_type = 'WIP Completion'
   AND itd.Transaction_Source_Type = 'Job or Schedule'
   AND itd.Batch_Number = 'XXX'

The key is "WIP Completion". Now this is where it gets a little interesting. With the SQL above we will pick up "Work in Progress" batches. These are where we have a multi-stage manufacturing process - such as granulation and then coating - and need to put the intermediary product on the system. So when the result of granulation is transported for coating it is stored on the system as a new batch and then the batch is emptied and input into the coating process - we could have filtered these out using the "WIP Completion Return" type in the same way we did above with WIP Issue/ WIP Return but the view I took when developing this is that correcting a mistake (as is the case with WIP Issue/ WIP Return) is different from materials passing through a batch as part of a process (WIP Completion). Hope that's clear?

The final part, which lots fulfil a sales order, is probably the simplest piece of SQL yet;

SELECT itd.LOT_NUMBER
  FROM invg0_lot_transactions itd
 WHERE 1=1
   AND itd.Sales_Order_Number = 'XXX'

Now we have the four parts of the story we need to work out lot genealogy it seems like it's just a simple matter of adding in a recursive lookup on batches to lots and we're there. And yes - you could do it that way but in my experience what you end up with is the recursion being done in different ways in different reports (for example if we are wanting to know where a raw material went in a report we might want to exclude packaging lots). You then find yourself having to "debug" a problem with a report and spending hours working out what this specific version of log genealogy is doing.

For this reason I have implemented a solution that processes the transactions as they are done and builds a cache of lot genealogy information (with a few bits of useful reporting information to prevent some of the more obvious lookups).

The first step is to build the tables. The three tables I'm using are;
  • Lot_Genealogy_Settings (this just holds a setting to record the last transaction processed),
  • Lot_Genealogy_WhereUsed (this holds the genealogy information from a "where used" perspective), and
  • Lot_Genealogy_Batch_Product (this holds a list of the products for each batch)
Starting with the simplest table the columns for Lot_Genealogy_Settings are;

Table Description: Lot_Genealogy_Settings

The creation script is available here (via Google Docs).

NOTE: You'll need to insert a single record to be picked up as the minimum transaction number (use -1) see the code for the package below to determine the values!

The columns for the Lot_Genealogy_Batch_Product are;

Table Description: Lot_Genealogy_Batch_Product
The creation script is available here (via Google Docs).

You'll notice when you look at the SQL that this table is indexed in order to speed up the retrieval of data. The time taken will depend on the amount of data you have but with the indexs (on this and the following table) the time taken to process eight months of data for us was about 3 minutes (that's approximately 571,000 lot transactions).

The final table (and the most important one) is Lot_Genealogy_WhereUsed, it's columns are;

Table Description: Lot_Genealogy_WhereUsed
The creation script for this table is available here (via Google Docs).

You'll notice that I'm creating all the tables in the NOETIX_SYS schema. The reason for this is fairly simple; as this package (and process) is dependant on Noetix and the Noetix Views will be rebuilt periodically I think it's better to have the creation script for the *package* (below) to be part of Noetix Regenerate; this way it gets automatically tested each time we do a build.

Now here's the script to create the package header;

create or replace package lot_genealogy is
  procedure doUpdate;
end lot_genealogy;

That's a little simple, here's the body;

create or replace package body lot_genealogy is

  procedure doUpdate as
    v_Exists               BOOLEAN;
    v_MaxTransactionNumber NUMBER;
  BEGIN
    -- SECTION 0100: Remove Any Existing Records From The Cache
    /*DELETE FROM NOETIX_SYS.Lot_Genealogy_WhereUsed;
    DELETE FROM NOETIX_SYS.LOT_GENEALOGY_BATCH_PRODUCT;
    COMMIT;
   
    UPDATE NOETIX_SYS.Lot_Genealogy_Settings LGS
       SET LGS.VALUE_NUMBER = -1
     WHERE LGS.Setting_Name = 'MAX_TRANS_NO';*/
 
    FOR v_Check IN (SELECT VALUE_NUMBER
                      FROM NOETIX_SYS.Lot_Genealogy_Settings LGS
                     WHERE LGS.Setting_Name = 'MAX_TRANS_NO') LOOP
      v_MaxTransactionNumber := v_Check.Value_Number;
    END LOOP;
 
    -- SECTION 1000: Process The Lot Transaction Records From INVG0_Lot_Transactions
    FOR v_Transaction IN (SELECT ilt.Transaction_Number,
                                 ilt.batch_number,
                                 ilt.transaction_quantity,
                                 ilt.lot_number,
                                 ilt.transaction_type,
                                 ilt.ITEM$Item,
                                 ilt.Item_Description,
                                 ilt.Item_Type_Code
                            FROM INVG0_LOT_TRANSACTIONS ilt
                           WHERE ilt.Transaction_Source_Type =
                                 'Job or Schedule'
                             AND (ilt.transaction_type = 'WIP Issue' OR
                                 --ilt.Transaction_Type = 'WIP Return' OR
                                 ilt.Transaction_Type = 'WIP Completion')
                             AND ilt.Transaction_Number >
                                 v_MaxTransactionNumber
                          --AND ilt.lot_number IN ('166130', '035598', '166127')
                          /*AND ilt.lot_number IN
                          ('029996',
                           '165507WIP',
                           '165507C1',
                           '165507',
                           '165583',
                           '167866WIP',
                           '167866',
                           '167951')*/
                          --AND ilt.transaction_number <= 2053180 -- For testing, about 6,000 records
                           ORDER BY ilt.Transaction_Number) LOOP
   
      -- SECTION 1100: Process WIP Completion Transaction
      -- NOTE: This section answers the question "What lots did batch X produce?"
      IF (v_Transaction.Transaction_Type = 'WIP Completion') THEN
        -- If we have already created records for this batch then we can update them with the new
        --   product UNLESS we already have a product for this batch
        UPDATE NOETIX_SYS.Lot_Genealogy_WhereUsed LGI
           SET LGI.PRODUCT_LOT_NUMBER       = v_Transaction.Lot_Number,
               LGI.Product_Item$item        = v_Transaction.Item$item,
               LGI.Product_Item_Description = v_Transaction.Item_Description,
               LGI.Product_Item_Type_Code   = v_Transaction.Item_Type_Code
         WHERE LGI.BATCH_NUMBER = v_Transaction.Batch_Number
           AND (LGI.PRODUCT_LOT_NUMBER IS NULL OR -- ... we haven't updated the product lot before
                LGI.PRODUCT_LOT_NUMBER = v_Transaction.Lot_Number); -- ... we have but this is the same
        IF SQL%ROWCOUNT = 0 THEN
          -- Nothing's been updated. New record?
          -- Insert the new record for each batch number where it already exists in the LG table (providing
          --  it doesn't already exist)
          INSERT INTO NOETIX_SYS.Lot_Genealogy_WhereUsed
            SELECT DISTINCT LGI.Master_Lot_Number, -- Mater_Lot_Number
                            LGI.INGRED_LOT_NUMBER, -- Ingred_Lot_Number
                            LGI.INGRED_ITEM$ITEM, -- INGRED_ITEM$ITEM
                            LGI.INGRED_ITEM_DESCRIPTION, -- INGRED_ITEM_DESCRIPTION
                            LGI.INGRED_ITEM_TYPE_CODE, -- INGRED_ITEM_TYPE_CODE
                            LGI.BATCH_NUMBER,
                            v_Transaction.Lot_Number, -- Product_Lot_Number
                            v_Transaction.ITEM$ITEM, -- PRODUCT_ITEM$ITEM
                            v_Transaction.ITEM_DESCRIPTION, -- PRODUCT_ITEM_DESCRIPTION
                            v_Transaction.ITEM_TYPE_CODE -- PRODUCT_ITEM_TYPE_CODE
              FROM NOETIX_SYS.Lot_Genealogy_WhereUsed LGI
             WHERE LGI.BATCH_NUMBER = v_Transaction.Batch_Number
               AND NOT EXISTS
             (SELECT 1
                      FROM NOETIX_SYS.Lot_Genealogy_WhereUsed LGI1
                     WHERE LGI1.MASTER_LOT_NUMBER = LGI.Master_Lot_Number
                       AND LGI1.Ingred_LOT_NUMBER = LGI.ingred_Lot_Number
                       AND LGI1.BATCH_NUMBER = LGI.Batch_Number
                       AND LGI1.PRODUCT_LOT_NUMBER =
                           v_Transaction.Lot_Number);
        END IF;
     
        -- In case this batch appears in another transaction later let's record
        --    what the completed products were
        INSERT INTO NOETIX_SYS.LOT_GENEALOGY_BATCH_PRODUCT
          SELECT v_Transaction.Batch_Number, -- Batch_Number,
                 v_Transaction.Lot_Number, -- Product_Lot_Number
                 v_Transaction.ITEM$Item, -- PRODUCT_ITEM$ITEM
                 v_Transaction.Item_Description, -- Product_Item_Description
                 v_Transaction.Item_Type_Code -- Product_Item_Type_Code
            FROM DUAL
           WHERE NOT EXISTS
           (SELECT 1
                    FROM NOETIX_SYS.     LGBP
                   WHERE LGBP.BATCH_NUMBER = v_Transaction.Batch_Number
                     AND LGBP.Product_Lot_Number = v_Transaction.Lot_Number);
      ELSIF (v_Transaction.Transaction_Type = 'WIP Issue') THEN
        v_Exists := False;
        -- Was this issue to the Batch reversed?
        FOR v_Check IN (SELECT 'X'
                          FROM INVG0_LOT_TRANSACTIONS ilt
                         WHERE ilt.Transaction_Source_Type =
                               'Job or Schedule'
                           AND ilt.Transaction_Type = 'WIP Return'
                           AND ilt.batch_number = v_Transaction.Batch_Number
                           and ilt.TRANSACTION_QUANTITY =
                               (v_Transaction.Transaction_Quantity * -1)
                           and ilt.LOT_NUMBER = v_Transaction.Lot_Number) LOOP
          v_Exists := True; -- Yes it was (WIP Issued in error)
        END LOOP;
     
        -- If the WIP Issue wasn't reversed ...
        IF (NOT v_Exists) THEN
          -- Get the batch product(s) (if we can) otherwise return NULL
          FOR v_Product IN (SELECT LGBP.PRODUCT_LOT_NUMBER,
                                   LGBP.PRODUCT_ITEM$ITEM,
                                   LGBP.PRODUCT_ITEM_DESCRIPTION,
                                   LGBP.PRODUCT_ITEM_TYPE_CODE
                              FROM NOETIX_SYS.LOT_GENEALOGY_BATCH_PRODUCT LGBP
                             WHERE LGBP.BATCH_NUMBER =
                                   v_Transaction.Batch_Number
                            UNION
                            SELECT NULL, NULL, NULL, NULL
                              FROM DUAL
                             WHERE NOT EXISTS
                             (SELECT 1
                                      FROM NOETIX_SYS.LOT_GENEALOGY_BATCH_PRODUCT LGBP
                                     WHERE LGBP.BATCH_NUMBER =
                                           v_Transaction.Batch_Number)) LOOP
            -- For each batch product create a LG record (if it doesn't already exist)
            INSERT INTO NOETIX_SYS.Lot_Genealogy_WhereUsed
              SELECT v_Transaction.Lot_Number, -- Master_Lot_Number
                     v_Transaction.Lot_Number, -- Ingred_Lot_Number
                     v_Transaction.Item$item, -- INGRED_ITEM$ITEM
                     v_Transaction.Item_Description, -- INGRED_ITEM_DESCRIPTION
                     v_Transaction.Item_Type_Code, -- INGRED_ITEM_TYPE_CODE
                     v_Transaction.Batch_Number, -- Batch_Number
                     v_Product.Product_Lot_Number, -- Product_Lot_Number
                     v_Product.PRODUCT_ITEM$ITEM, -- PRODUCT_ITEM$ITEM
                     v_Product.PRODUCT_ITEM_DESCRIPTION, -- PRODUCT_ITEM_DESCRIPTION
                     v_Product.PRODUCT_ITEM_TYPE_CODE -- PRODUCT_ITEM_TYPE_CODE
                FROM DUAL
               WHERE NOT EXISTS
               (SELECT 1
                        FROM NOETIX_SYS.Lot_Genealogy_WhereUsed LGI
                       WHERE LGI.MASTER_LOT_NUMBER =
                             v_Transaction.Lot_Number
                         AND LGI.Ingred_LOT_NUMBER =
                             v_Transaction.Lot_Number
                         AND LGI.Batch_Number = v_Transaction.Batch_Number
                         AND (v_Product.Product_Lot_Number IS NULL AND
                             LGI.PRODUCT_LOT_NUMBER IS NULL OR
                             v_Product.Product_Lot_Number =
                             LGI.PRODUCT_LOT_NUMBER));
            -- ... and add to existing master lot numbers with the same product lot
            INSERT INTO NOETIX_SYS.Lot_Genealogy_WhereUsed
              SELECT DISTINCT LGI.MASTER_LOT_NUMBER, -- Master_Lot_Number
                              v_Transaction.Lot_Number, -- Ingred_Lot_Number
                              v_Transaction.Item$item, -- INGRED_ITEM$ITEM
                              v_Transaction.Item_Description, -- INGRED_ITEM_DESCRIPTION
                              v_Transaction.Item_Type_Code, -- INGRED_ITEM_TYPE_CODE
                              v_Transaction.Batch_Number, -- Batch_Number
                              v_Product.Product_Lot_Number, -- Product_Lot_Number
                              v_Product.PRODUCT_ITEM$ITEM, -- PRODUCT_ITEM$ITEM
                              v_Product.PRODUCT_ITEM_DESCRIPTION, -- PRODUCT_ITEM_DESCRIPTION
                              v_Product.PRODUCT_ITEM_TYPE_CODE -- PRODUCT_ITEM_TYPE_CODE
                FROM NOETIX_SYS.Lot_Genealogy_WhereUsed LGI
               WHERE LGI.Product_Lot_Number = v_Transaction.Lot_Number
                 AND NOT EXISTS
               (SELECT 1
                        FROM NOETIX_SYS.Lot_Genealogy_WhereUsed LGI1
                       WHERE LGI1.MASTER_LOT_NUMBER = LGI.MASTER_LOT_NUMBER
                         AND LGI1.Ingred_LOT_NUMBER =
                             v_Transaction.Lot_Number
                         AND LGI1.Batch_Number = v_Transaction.Batch_Number
                         AND (v_Product.Product_Lot_Number IS NULL AND
                             LGI1.PRODUCT_LOT_NUMBER IS NULL OR
                             v_Product.Product_Lot_Number =
                             LGI1.PRODUCT_LOT_NUMBER));
          END LOOP;
        END IF;
      END IF;
      -- Record the transaction number we've just processed so we don't process it again
      v_MaxTransactionNumber := v_Transaction.Transaction_Number;
    END LOOP;
 
    -- Record the last transaction number we processed so we can go from there next time
    UPDATE NOETIX_SYS.Lot_Genealogy_Settings LGS
       SET LGS.VALUE_NUMBER = v_MaxTransactionNumber
     WHERE LGS.Setting_Name = 'MAX_TRANS_NO';
 
    COMMIT;
  end doUpdate;

end lot_genealogy;

Now you'll see that I've included a fair amount of comments on what the code is doing and also I've left in (but commented out) some of the debug lines I've been using. you can also tell my clear preference for using FOR ... LOOP instead of SELECT ... INTO statements (mainly so I don't have a temporary variable lying around or end up with a variable called v_Temp).

I hope this is fairly self-explanatory what it's doing. Let me know in the comments below if you have any questions or if anything is not clear.

*- Process Manufacturing means you take ingredients and you feed them into a process and make something as opposed to Discrete Manufacturing where you take parts and assemble them into something. The key difference is that you don't know how much (exactly) you will make in Process Manufacturing whereas for Discrete if you have all the parts of a car you will make precisely one car. Clear?

Thursday, August 23, 2012

PL/SQL: Using R12 Item Open Interface Tables

I'm sure we won't be the only company to need to do a batch update of all the existing Items (in INV.MTL_SYSTEM_ITEMS_B) so I thought I'd share this. Basically using the interface tables and Concurrent Request allows you to make updates to the existing reports in a controlled (and Oracle Approved) way.

I'm going to talk about doing an UPDATE but CREATE will work in pretty much the same way (for various reasons I'm not going to look at DELETE and I imagine - even if oracle supported it - most people would be in the same boat).

The first step is to identify the open interface table;
  • INV.MTL_System_items_Interface
First of all it's worth doing a quick SELECT * ... from the interface table and check to make sure it's empty before you start (ironically when writing this post I discovered two existing rows which had errored during our R12 upgrade 10 months ago so it's definitely worth a look!).

The columns from the MTL_System_Items_Interface table are listed at the every end of this post (just for your reference). The critical columns that have to have values in order for the update to work are;

Organization_Id
Process_Flag (must be 1)
Item_Number (of you can use SEGMENT1)
Transaction_Type (must be either UPDATE or CREATE)

Now if you want to insert records into the interface table it's probably best to use a SELECT as part of the SQL (i.e. have the rows you want to change listed in another table).

The SQL updates details on the item master from a table called PD_Item_Mst stored in a remove database across a database link (REMOTE_DATABASE). This updating flexfields in the item master (attributes 23,25,22, and 11). Here's the sample SQL;

INSERT INTO INV.MTL_SYSTEM_ITEMS_INTERFACE
  (ORGANIZATION_ID,
   PROCESS_FLAG,
   ITEM_NUMBER,
   TRANSACTION_TYPE,
   ATTRIBUTE23,
   ATTRIBUTE25,
   ATTRIBUTE22,
   ATTRIBUTE15)
  SELECT 1, -- organization_id
         1, -- process_flag
         item_no, -- item_number
         'UPDATE', -- transaction_type
         cd_flag, -- attribute23
         in_house, -- attribute25
         inv_class, -- attribute22
         DECODE(no_colours, 'INT', 98, 'CO', 97, 'FG', 99) -- attribute15
    FROM pd_item_mst@REMOTE_DATABASE


Once you've got the items loaded into the interface table you then need to log into Oracle e-Business Suite and perform the import.

Once you have logged in you'll need the "Inventory" reponsiiblity in order to make the changes. Once you have switched to the "Inventory" responsibility select Items then Import and finally "Import Items";

Importing Items


If, like us, you have multiple Organizations you will see the dialog above and have to pick which Organisation you wish to work with. When you've picked an Organization you will then be presented with the Concurrent Request screen;

Importing Items Concurrent Request
Make sure you have changed the Create or Update Option so that it is 1 for Inserting Items, and 2 for Updating Items. When you're ready click "Submit".

When completed check the INV.MTL_SYSTEM_ITEMS_INTERFACE table to see if any lines are remaining and are unprocessed. If any are unprocessed (erroring), then check in the INV.MTL_INTERFACE_ERRORS table for the reason.

Key to this working is that the ORG_ID in the lines is the same as the Concurrent Req (sounds obvious, but there is aflag which seems to indicate it will run for all orgs, but doesn’t). Also that the Transaction type in the lines matches the option in the concurrent request i.e. both Update, or both Create.

Hope you found this useful ...



List of Columns on the INV.MTL_System_Items_Interface table;
SQL> DESC INV.MTL_System_items_Interface
Name                           Type           Nullable Default Comments
------------------------------ -------------- -------- ------- --------
INVENTORY_ITEM_ID              NUMBER         Y                        
ORGANIZATION_ID                NUMBER         Y                        
LAST_UPDATE_DATE               DATE           Y                        
LAST_UPDATED_BY                NUMBER         Y                        
CREATION_DATE                  DATE           Y                        
CREATED_BY                     NUMBER         Y                        
LAST_UPDATE_LOGIN              NUMBER         Y                        
SUMMARY_FLAG                   VARCHAR2(1)    Y                        
ENABLED_FLAG                   VARCHAR2(1)    Y                        
START_DATE_ACTIVE              DATE           Y                        
END_DATE_ACTIVE                DATE           Y                        
DESCRIPTION                    VARCHAR2(240)  Y                        
BUYER_ID                       NUMBER         Y                        
ACCOUNTING_RULE_ID             NUMBER         Y                        
INVOICING_RULE_ID              NUMBER         Y                        
SEGMENT1                       VARCHAR2(40)   Y                        
SEGMENT2                       VARCHAR2(40)   Y                        
SEGMENT3                       VARCHAR2(40)   Y                        
SEGMENT4                       VARCHAR2(40)   Y                        
SEGMENT5                       VARCHAR2(40)   Y                        
SEGMENT6                       VARCHAR2(40)   Y                        
SEGMENT7                       VARCHAR2(40)   Y                        
SEGMENT8                       VARCHAR2(40)   Y                        
SEGMENT9                       VARCHAR2(40)   Y                        
SEGMENT10                      VARCHAR2(40)   Y                        
SEGMENT11                      VARCHAR2(40)   Y                        
SEGMENT12                      VARCHAR2(40)   Y                        
SEGMENT13                      VARCHAR2(40)   Y                        
SEGMENT14                      VARCHAR2(40)   Y                        
SEGMENT15                      VARCHAR2(40)   Y                        
SEGMENT16                      VARCHAR2(40)   Y                        
SEGMENT17                      VARCHAR2(40)   Y                        
SEGMENT18                      VARCHAR2(40)   Y                        
SEGMENT19                      VARCHAR2(40)   Y                        
SEGMENT20                      VARCHAR2(40)   Y                        
ATTRIBUTE_CATEGORY             VARCHAR2(30)   Y                        
ATTRIBUTE1                     VARCHAR2(240)  Y                        
ATTRIBUTE2                     VARCHAR2(240)  Y                        
ATTRIBUTE3                     VARCHAR2(240)  Y                        
ATTRIBUTE4                     VARCHAR2(240)  Y                        
ATTRIBUTE5                     VARCHAR2(240)  Y                        
ATTRIBUTE6                     VARCHAR2(240)  Y                        
ATTRIBUTE7                     VARCHAR2(240)  Y                        
ATTRIBUTE8                     VARCHAR2(240)  Y                        
ATTRIBUTE9                     VARCHAR2(240)  Y                        
ATTRIBUTE10                    VARCHAR2(240)  Y                        
ATTRIBUTE11                    VARCHAR2(240)  Y                        
ATTRIBUTE12                    VARCHAR2(240)  Y                        
ATTRIBUTE13                    VARCHAR2(240)  Y                        
ATTRIBUTE14                    VARCHAR2(240)  Y                        
ATTRIBUTE15                    VARCHAR2(240)  Y                        
PURCHASING_ITEM_FLAG           VARCHAR2(1)    Y                        
SHIPPABLE_ITEM_FLAG            VARCHAR2(1)    Y                        
CUSTOMER_ORDER_FLAG            VARCHAR2(1)    Y                        
INTERNAL_ORDER_FLAG            VARCHAR2(1)    Y                        
SERVICE_ITEM_FLAG              VARCHAR2(1)    Y                        
INVENTORY_ITEM_FLAG            VARCHAR2(1)    Y                        
ENG_ITEM_FLAG                  VARCHAR2(1)    Y                        
INVENTORY_ASSET_FLAG           VARCHAR2(1)    Y                        
PURCHASING_ENABLED_FLAG        VARCHAR2(1)    Y                        
CUSTOMER_ORDER_ENABLED_FLAG    VARCHAR2(1)    Y                        
INTERNAL_ORDER_ENABLED_FLAG    VARCHAR2(1)    Y                        
SO_TRANSACTIONS_FLAG           VARCHAR2(1)    Y                        
MTL_TRANSACTIONS_ENABLED_FLAG  VARCHAR2(1)    Y                        
STOCK_ENABLED_FLAG             VARCHAR2(1)    Y                        
BOM_ENABLED_FLAG               VARCHAR2(1)    Y                        
BUILD_IN_WIP_FLAG              VARCHAR2(1)    Y                        
REVISION_QTY_CONTROL_CODE      NUMBER         Y                        
ITEM_CATALOG_GROUP_ID          NUMBER         Y                        
CATALOG_STATUS_FLAG            VARCHAR2(1)    Y                        
RETURNABLE_FLAG                VARCHAR2(1)    Y                        
DEFAULT_SHIPPING_ORG           NUMBER         Y                        
COLLATERAL_FLAG                VARCHAR2(1)    Y                        
TAXABLE_FLAG                   VARCHAR2(1)    Y                        
QTY_RCV_EXCEPTION_CODE         VARCHAR2(25)   Y                        
ALLOW_ITEM_DESC_UPDATE_FLAG    VARCHAR2(1)    Y                        
INSPECTION_REQUIRED_FLAG       VARCHAR2(1)    Y                        
RECEIPT_REQUIRED_FLAG          VARCHAR2(1)    Y                        
MARKET_PRICE                   NUMBER         Y                        
HAZARD_CLASS_ID                NUMBER         Y                        
RFQ_REQUIRED_FLAG              VARCHAR2(1)    Y                        
QTY_RCV_TOLERANCE              NUMBER         Y                        
LIST_PRICE_PER_UNIT            NUMBER         Y                        
UN_NUMBER_ID                   NUMBER         Y                        
PRICE_TOLERANCE_PERCENT        NUMBER         Y                        
ASSET_CATEGORY_ID              NUMBER         Y                        
ROUNDING_FACTOR                NUMBER         Y                        
UNIT_OF_ISSUE                  VARCHAR2(25)   Y                        
ENFORCE_SHIP_TO_LOCATION_CODE  VARCHAR2(25)   Y                        
ALLOW_SUBSTITUTE_RECEIPTS_FLAG VARCHAR2(1)    Y                        
ALLOW_UNORDERED_RECEIPTS_FLAG  VARCHAR2(1)    Y                        
ALLOW_EXPRESS_DELIVERY_FLAG    VARCHAR2(1)    Y                        
DAYS_EARLY_RECEIPT_ALLOWED     NUMBER         Y                        
DAYS_LATE_RECEIPT_ALLOWED      NUMBER         Y                        
RECEIPT_DAYS_EXCEPTION_CODE    VARCHAR2(25)   Y                        
RECEIVING_ROUTING_ID           NUMBER         Y                        
INVOICE_CLOSE_TOLERANCE        NUMBER         Y                        
RECEIVE_CLOSE_TOLERANCE        NUMBER         Y                        
AUTO_LOT_ALPHA_PREFIX          VARCHAR2(30)   Y                        
START_AUTO_LOT_NUMBER          VARCHAR2(30)   Y                        
LOT_CONTROL_CODE               NUMBER         Y                        
SHELF_LIFE_CODE                NUMBER         Y                        
SHELF_LIFE_DAYS                NUMBER         Y                        
SERIAL_NUMBER_CONTROL_CODE     NUMBER         Y                        
START_AUTO_SERIAL_NUMBER       VARCHAR2(30)   Y                        
AUTO_SERIAL_ALPHA_PREFIX       VARCHAR2(30)   Y                        
SOURCE_TYPE                    NUMBER         Y                        
SOURCE_ORGANIZATION_ID         NUMBER         Y                        
SOURCE_SUBINVENTORY            VARCHAR2(10)   Y                        
EXPENSE_ACCOUNT                NUMBER         Y                        
ENCUMBRANCE_ACCOUNT            NUMBER         Y                        
RESTRICT_SUBINVENTORIES_CODE   NUMBER         Y                        
UNIT_WEIGHT                    NUMBER         Y                        
WEIGHT_UOM_CODE                VARCHAR2(3)    Y                        
VOLUME_UOM_CODE                VARCHAR2(3)    Y                        
UNIT_VOLUME                    NUMBER         Y                        
RESTRICT_LOCATORS_CODE         NUMBER         Y                        
LOCATION_CONTROL_CODE          NUMBER         Y                        
SHRINKAGE_RATE                 NUMBER         Y                        
ACCEPTABLE_EARLY_DAYS          NUMBER         Y                        
PLANNING_TIME_FENCE_CODE       NUMBER         Y                        
DEMAND_TIME_FENCE_CODE         NUMBER         Y                        
LEAD_TIME_LOT_SIZE             NUMBER         Y                        
STD_LOT_SIZE                   NUMBER         Y                        
CUM_MANUFACTURING_LEAD_TIME    NUMBER         Y                        
OVERRUN_PERCENTAGE             NUMBER         Y                        
MRP_CALCULATE_ATP_FLAG         VARCHAR2(1)    Y                        
ACCEPTABLE_RATE_INCREASE       NUMBER         Y                        
ACCEPTABLE_RATE_DECREASE       NUMBER         Y                        
CUMULATIVE_TOTAL_LEAD_TIME     NUMBER         Y                        
PLANNING_TIME_FENCE_DAYS       NUMBER         Y                        
DEMAND_TIME_FENCE_DAYS         NUMBER         Y                        
END_ASSEMBLY_PEGGING_FLAG      VARCHAR2(1)    Y                        
REPETITIVE_PLANNING_FLAG       VARCHAR2(1)    Y                        
PLANNING_EXCEPTION_SET         VARCHAR2(10)   Y                        
BOM_ITEM_TYPE                  NUMBER         Y                        
PICK_COMPONENTS_FLAG           VARCHAR2(1)    Y                        
REPLENISH_TO_ORDER_FLAG        VARCHAR2(1)    Y                        
BASE_ITEM_ID                   NUMBER         Y                        
ATP_COMPONENTS_FLAG            VARCHAR2(1)    Y                        
ATP_FLAG                       VARCHAR2(1)    Y                        
FIXED_LEAD_TIME                NUMBER         Y                        
VARIABLE_LEAD_TIME             NUMBER         Y                        
WIP_SUPPLY_LOCATOR_ID          NUMBER         Y                        
WIP_SUPPLY_TYPE                NUMBER         Y                        
WIP_SUPPLY_SUBINVENTORY        VARCHAR2(10)   Y                        
PRIMARY_UOM_CODE               VARCHAR2(3)    Y                        
PRIMARY_UNIT_OF_MEASURE        VARCHAR2(25)   Y                        
ALLOWED_UNITS_LOOKUP_CODE      NUMBER         Y                        
COST_OF_SALES_ACCOUNT          NUMBER         Y                        
SALES_ACCOUNT                  NUMBER         Y                        
DEFAULT_INCLUDE_IN_ROLLUP_FLAG VARCHAR2(1)    Y                        
INVENTORY_ITEM_STATUS_CODE     VARCHAR2(10)   Y                        
INVENTORY_PLANNING_CODE        NUMBER         Y                        
PLANNER_CODE                   VARCHAR2(10)   Y                        
PLANNING_MAKE_BUY_CODE         NUMBER         Y                        
FIXED_LOT_MULTIPLIER           NUMBER         Y                        
ROUNDING_CONTROL_TYPE          NUMBER         Y                        
CARRYING_COST                  NUMBER         Y                        
POSTPROCESSING_LEAD_TIME       NUMBER         Y                        
PREPROCESSING_LEAD_TIME        NUMBER         Y                        
FULL_LEAD_TIME                 NUMBER         Y                        
ORDER_COST                     NUMBER         Y                        
MRP_SAFETY_STOCK_PERCENT       NUMBER         Y                        
MRP_SAFETY_STOCK_CODE          NUMBER         Y                        
MIN_MINMAX_QUANTITY            NUMBER         Y                        
MAX_MINMAX_QUANTITY            NUMBER         Y                        
MINIMUM_ORDER_QUANTITY         NUMBER         Y                        
FIXED_ORDER_QUANTITY           NUMBER         Y                        
FIXED_DAYS_SUPPLY              NUMBER         Y                        
MAXIMUM_ORDER_QUANTITY         NUMBER         Y                        
ATP_RULE_ID                    NUMBER         Y                        
PICKING_RULE_ID                NUMBER         Y                        
RESERVABLE_TYPE                NUMBER         Y                        
POSITIVE_MEASUREMENT_ERROR     NUMBER         Y                        
NEGATIVE_MEASUREMENT_ERROR     NUMBER         Y                        
ENGINEERING_ECN_CODE           VARCHAR2(50)   Y                        
ENGINEERING_ITEM_ID            NUMBER         Y                        
ENGINEERING_DATE               DATE           Y                        
SERVICE_STARTING_DELAY         NUMBER         Y                        
VENDOR_WARRANTY_FLAG           VARCHAR2(1)    Y                        
SERVICEABLE_COMPONENT_FLAG     VARCHAR2(1)    Y                        
SERVICEABLE_PRODUCT_FLAG       VARCHAR2(1)    Y                        
BASE_WARRANTY_SERVICE_ID       NUMBER         Y                        
PAYMENT_TERMS_ID               NUMBER         Y                        
PREVENTIVE_MAINTENANCE_FLAG    VARCHAR2(1)    Y                        
PRIMARY_SPECIALIST_ID          NUMBER         Y                        
SECONDARY_SPECIALIST_ID        NUMBER         Y                        
SERVICEABLE_ITEM_CLASS_ID      NUMBER         Y                        
TIME_BILLABLE_FLAG             VARCHAR2(1)    Y                        
MATERIAL_BILLABLE_FLAG         VARCHAR2(30)   Y                        
EXPENSE_BILLABLE_FLAG          VARCHAR2(1)    Y                        
PRORATE_SERVICE_FLAG           VARCHAR2(1)    Y                        
COVERAGE_SCHEDULE_ID           NUMBER         Y                        
SERVICE_DURATION_PERIOD_CODE   VARCHAR2(10)   Y                        
SERVICE_DURATION               NUMBER         Y                        
WARRANTY_VENDOR_ID             NUMBER         Y                        
MAX_WARRANTY_AMOUNT            NUMBER         Y                        
RESPONSE_TIME_PERIOD_CODE      VARCHAR2(30)   Y                        
RESPONSE_TIME_VALUE            NUMBER         Y                        
NEW_REVISION_CODE              VARCHAR2(30)   Y                        
INVOICEABLE_ITEM_FLAG          VARCHAR2(1)    Y                        
TAX_CODE                       VARCHAR2(50)   Y                        
INVOICE_ENABLED_FLAG           VARCHAR2(1)    Y                        
MUST_USE_APPROVED_VENDOR_FLAG  VARCHAR2(1)    Y                        
REQUEST_ID                     NUMBER         Y                        
PROGRAM_APPLICATION_ID         NUMBER         Y                        
PROGRAM_ID                     NUMBER         Y                        
PROGRAM_UPDATE_DATE            DATE           Y                        
OUTSIDE_OPERATION_FLAG         VARCHAR2(1)    Y                        
OUTSIDE_OPERATION_UOM_TYPE     VARCHAR2(25)   Y                        
SAFETY_STOCK_BUCKET_DAYS       NUMBER         Y                        
AUTO_REDUCE_MPS                NUMBER(22)     Y                        
COSTING_ENABLED_FLAG           VARCHAR2(1)    Y                        
CYCLE_COUNT_ENABLED_FLAG       VARCHAR2(1)    Y                        
DEMAND_SOURCE_LINE             VARCHAR2(30)   Y                        
COPY_ITEM_ID                   NUMBER         Y                        
SET_ID                         VARCHAR2(10)   Y                        
REVISION                       VARCHAR2(3)    Y                        
AUTO_CREATED_CONFIG_FLAG       VARCHAR2(1)    Y                        
ITEM_TYPE                      VARCHAR2(30)   Y                        
MODEL_CONFIG_CLAUSE_NAME       VARCHAR2(10)   Y                        
SHIP_MODEL_COMPLETE_FLAG       VARCHAR2(1)    Y                        
MRP_PLANNING_CODE              NUMBER         Y                        
RETURN_INSPECTION_REQUIREMENT  NUMBER         Y                        
DEMAND_SOURCE_TYPE             NUMBER         Y                        
DEMAND_SOURCE_HEADER_ID        NUMBER         Y                        
TRANSACTION_ID                 NUMBER         Y                        
PROCESS_FLAG                   NUMBER         Y                        
ORGANIZATION_CODE              VARCHAR2(3)    Y                        
ITEM_NUMBER                    VARCHAR2(700)  Y                        
COPY_ITEM_NUMBER               VARCHAR2(81)   Y                        
TEMPLATE_ID                    NUMBER         Y                        
TEMPLATE_NAME                  VARCHAR2(30)   Y                        
COPY_ORGANIZATION_ID           NUMBER         Y                        
COPY_ORGANIZATION_CODE         VARCHAR2(3)    Y                        
ATO_FORECAST_CONTROL           NUMBER         Y                        
TRANSACTION_TYPE               VARCHAR2(10)   Y                        
MATERIAL_COST                  NUMBER         Y                        
MATERIAL_SUB_ELEM              VARCHAR2(10)   Y                        
MATERIAL_OH_RATE               NUMBER         Y                        
MATERIAL_OH_SUB_ELEM           VARCHAR2(10)   Y                        
MATERIAL_SUB_ELEM_ID           NUMBER         Y                        
MATERIAL_OH_SUB_ELEM_ID        NUMBER         Y                        
AUTO_REL_TIME_FENCE_CODE       NUMBER         Y                        
AUTO_REL_TIME_FENCE_DAYS       NUMBER         Y                        
CONTAINER_ITEM_FLAG            VARCHAR2(1)    Y                        
VEHICLE_ITEM_FLAG              VARCHAR2(1)    Y                        
MAXIMUM_LOAD_WEIGHT            NUMBER         Y                        
MINIMUM_FILL_PERCENT           NUMBER         Y                        
CONTAINER_TYPE_CODE            VARCHAR2(30)   Y                        
INTERNAL_VOLUME                NUMBER         Y                        
SET_PROCESS_ID                 NUMBER                  0               
CHECK_SHORTAGES_FLAG           VARCHAR2(1)    Y                        
RELEASE_TIME_FENCE_CODE        NUMBER         Y                        
RELEASE_TIME_FENCE_DAYS        NUMBER         Y                        
WH_UPDATE_DATE                 DATE           Y                        
PRODUCT_FAMILY_ITEM_ID         NUMBER         Y                        
PURCHASING_TAX_CODE            VARCHAR2(50)   Y                        
OVERCOMPLETION_TOLERANCE_TYPE  NUMBER         Y                        
OVERCOMPLETION_TOLERANCE_VALUE NUMBER         Y                        
EFFECTIVITY_CONTROL            NUMBER         Y                        
GLOBAL_ATTRIBUTE_CATEGORY      VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE1              VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE2              VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE3              VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE4              VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE5              VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE6              VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE7              VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE8              VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE9              VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE10             VARCHAR2(150)  Y                        
OVER_SHIPMENT_TOLERANCE        NUMBER         Y                        
UNDER_SHIPMENT_TOLERANCE       NUMBER         Y                        
OVER_RETURN_TOLERANCE          NUMBER         Y                        
UNDER_RETURN_TOLERANCE         NUMBER         Y                        
EQUIPMENT_TYPE                 NUMBER         Y                        
RECOVERED_PART_DISP_CODE       VARCHAR2(30)   Y                        
DEFECT_TRACKING_ON_FLAG        VARCHAR2(1)    Y                        
USAGE_ITEM_FLAG                VARCHAR2(1)    Y                        
EVENT_FLAG                     VARCHAR2(1)    Y                        
ELECTRONIC_FLAG                VARCHAR2(1)    Y                        
DOWNLOADABLE_FLAG              VARCHAR2(1)    Y                        
VOL_DISCOUNT_EXEMPT_FLAG       VARCHAR2(1)    Y                        
COUPON_EXEMPT_FLAG             VARCHAR2(1)    Y                        
COMMS_NL_TRACKABLE_FLAG        VARCHAR2(1)    Y                        
ASSET_CREATION_CODE            VARCHAR2(30)   Y                        
COMMS_ACTIVATION_REQD_FLAG     VARCHAR2(1)    Y                        
ORDERABLE_ON_WEB_FLAG          VARCHAR2(1)    Y                        
BACK_ORDERABLE_FLAG            VARCHAR2(1)    Y                        
WEB_STATUS                     VARCHAR2(30)   Y                        
INDIVISIBLE_FLAG               VARCHAR2(1)    Y                        
LONG_DESCRIPTION               VARCHAR2(4000) Y                        
DIMENSION_UOM_CODE             VARCHAR2(3)    Y                        
UNIT_LENGTH                    NUMBER         Y                        
UNIT_WIDTH                     NUMBER         Y                        
UNIT_HEIGHT                    NUMBER         Y                        
BULK_PICKED_FLAG               VARCHAR2(1)    Y                        
LOT_STATUS_ENABLED             VARCHAR2(1)    Y                        
DEFAULT_LOT_STATUS_ID          NUMBER         Y                        
SERIAL_STATUS_ENABLED          VARCHAR2(1)    Y                        
DEFAULT_SERIAL_STATUS_ID       NUMBER         Y                        
LOT_SPLIT_ENABLED              VARCHAR2(1)    Y                        
LOT_MERGE_ENABLED              VARCHAR2(1)    Y                        
INVENTORY_CARRY_PENALTY        NUMBER         Y                        
OPERATION_SLACK_PENALTY        NUMBER         Y                        
FINANCING_ALLOWED_FLAG         VARCHAR2(1)    Y                        
EAM_ITEM_TYPE                  NUMBER         Y                        
EAM_ACTIVITY_TYPE_CODE         VARCHAR2(30)   Y                        
EAM_ACTIVITY_CAUSE_CODE        VARCHAR2(30)   Y                        
EAM_ACT_NOTIFICATION_FLAG      VARCHAR2(1)    Y                        
EAM_ACT_SHUTDOWN_STATUS        VARCHAR2(30)   Y                        
DUAL_UOM_CONTROL               NUMBER         Y                        
SECONDARY_UOM_CODE             VARCHAR2(3)    Y                        
DUAL_UOM_DEVIATION_HIGH        NUMBER         Y                        
DUAL_UOM_DEVIATION_LOW         NUMBER         Y                        
CONTRACT_ITEM_TYPE_CODE        VARCHAR2(30)   Y                        
SUBSCRIPTION_DEPEND_FLAG       VARCHAR2(1)    Y                        
SERV_REQ_ENABLED_CODE          VARCHAR2(30)   Y                        
SERV_BILLING_ENABLED_FLAG      VARCHAR2(1)    Y                        
SERV_IMPORTANCE_LEVEL          NUMBER         Y                        
PLANNED_INV_POINT_FLAG         VARCHAR2(1)    Y                        
LOT_TRANSLATE_ENABLED          VARCHAR2(1)    Y                        
DEFAULT_SO_SOURCE_TYPE         VARCHAR2(30)   Y                        
CREATE_SUPPLY_FLAG             VARCHAR2(1)    Y                        
SUBSTITUTION_WINDOW_CODE       NUMBER         Y                        
SUBSTITUTION_WINDOW_DAYS       NUMBER         Y                        
IB_ITEM_INSTANCE_CLASS         VARCHAR2(30)   Y                        
CONFIG_MODEL_TYPE              VARCHAR2(30)   Y                        
LOT_SUBSTITUTION_ENABLED       VARCHAR2(1)    Y                        
MINIMUM_LICENSE_QUANTITY       NUMBER         Y                        
EAM_ACTIVITY_SOURCE_CODE       VARCHAR2(30)   Y                        
LIFECYCLE_ID                   NUMBER         Y                        
CURRENT_PHASE_ID               NUMBER         Y                        
TRACKING_QUANTITY_IND          VARCHAR2(30)   Y                        
ONT_PRICING_QTY_SOURCE         VARCHAR2(30)   Y                        
SECONDARY_DEFAULT_IND          VARCHAR2(30)   Y                        
VMI_MINIMUM_UNITS              NUMBER         Y                        
VMI_MINIMUM_DAYS               NUMBER         Y                        
VMI_MAXIMUM_UNITS              NUMBER         Y                        
VMI_MAXIMUM_DAYS               NUMBER         Y                        
VMI_FIXED_ORDER_QUANTITY       NUMBER         Y                        
SO_AUTHORIZATION_FLAG          NUMBER         Y                        
CONSIGNED_FLAG                 NUMBER         Y                        
ASN_AUTOEXPIRE_FLAG            NUMBER         Y                        
VMI_FORECAST_TYPE              NUMBER         Y                        
FORECAST_HORIZON               NUMBER         Y                        
EXCLUDE_FROM_BUDGET_FLAG       NUMBER         Y                        
DAYS_TGT_INV_SUPPLY            NUMBER         Y                        
DAYS_TGT_INV_WINDOW            NUMBER         Y                        
DAYS_MAX_INV_SUPPLY            NUMBER         Y                        
DAYS_MAX_INV_WINDOW            NUMBER         Y                        
DRP_PLANNED_FLAG               NUMBER         Y                        
CRITICAL_COMPONENT_FLAG        NUMBER         Y                        
CONTINOUS_TRANSFER             NUMBER         Y                        
CONVERGENCE                    NUMBER         Y                        
DIVERGENCE                     NUMBER         Y                        
CONFIG_ORGS                    VARCHAR2(30)   Y                        
CONFIG_MATCH                   VARCHAR2(30)   Y                        
ATTRIBUTE16                    VARCHAR2(240)  Y                        
ATTRIBUTE17                    VARCHAR2(240)  Y                        
ATTRIBUTE18                    VARCHAR2(240)  Y                        
ATTRIBUTE19                    VARCHAR2(240)  Y                        
ATTRIBUTE20                    VARCHAR2(240)  Y                        
ATTRIBUTE21                    VARCHAR2(240)  Y                        
ATTRIBUTE22                    VARCHAR2(240)  Y                        
ATTRIBUTE23                    VARCHAR2(240)  Y                        
ATTRIBUTE24                    VARCHAR2(240)  Y                        
ATTRIBUTE25                    VARCHAR2(240)  Y                        
ATTRIBUTE26                    VARCHAR2(240)  Y                        
ATTRIBUTE27                    VARCHAR2(240)  Y                        
ATTRIBUTE28                    VARCHAR2(240)  Y                        
ATTRIBUTE29                    VARCHAR2(240)  Y                        
ATTRIBUTE30                    VARCHAR2(240)  Y                        
CAS_NUMBER                     VARCHAR2(30)   Y                        
CHILD_LOT_FLAG                 VARCHAR2(1)    Y                        
CHILD_LOT_PREFIX               VARCHAR2(30)   Y                        
CHILD_LOT_STARTING_NUMBER      NUMBER         Y                        
CHILD_LOT_VALIDATION_FLAG      VARCHAR2(1)    Y                        
COPY_LOT_ATTRIBUTE_FLAG        VARCHAR2(1)    Y                        
DEFAULT_GRADE                  VARCHAR2(150)  Y                        
EXPIRATION_ACTION_CODE         VARCHAR2(32)   Y                        
EXPIRATION_ACTION_INTERVAL     NUMBER         Y                        
GRADE_CONTROL_FLAG             VARCHAR2(1)    Y                        
HAZARDOUS_MATERIAL_FLAG        VARCHAR2(1)    Y                        
HOLD_DAYS                      NUMBER         Y                        
LOT_DIVISIBLE_FLAG             VARCHAR2(1)    Y                        
MATURITY_DAYS                  NUMBER         Y                        
PARENT_CHILD_GENERATION_FLAG   VARCHAR2(1)    Y                        
PROCESS_COSTING_ENABLED_FLAG   VARCHAR2(1)    Y                        
PROCESS_EXECUTION_ENABLED_FLAG VARCHAR2(1)    Y                        
PROCESS_QUALITY_ENABLED_FLAG   VARCHAR2(1)    Y                        
PROCESS_SUPPLY_LOCATOR_ID      NUMBER         Y                        
PROCESS_SUPPLY_SUBINVENTORY    VARCHAR2(10)   Y                        
PROCESS_YIELD_LOCATOR_ID       NUMBER         Y                        
PROCESS_YIELD_SUBINVENTORY     VARCHAR2(10)   Y                        
RECIPE_ENABLED_FLAG            VARCHAR2(1)    Y                        
RETEST_INTERVAL                NUMBER         Y                        
CHARGE_PERIODICITY_CODE        VARCHAR2(3)    Y                        
REPAIR_LEADTIME                NUMBER         Y                        
REPAIR_YIELD                   NUMBER         Y                        
PREPOSITION_POINT              VARCHAR2(1)    Y                        
REPAIR_PROGRAM                 NUMBER         Y                        
SUBCONTRACTING_COMPONENT       NUMBER         Y                        
OUTSOURCED_ASSEMBLY            NUMBER         Y                        
SOURCE_SYSTEM_ID               NUMBER         Y                        
SOURCE_SYSTEM_REFERENCE        VARCHAR2(255)  Y                        
SOURCE_SYSTEM_REFERENCE_DESC   VARCHAR2(240)  Y                        
GLOBAL_TRADE_ITEM_NUMBER       VARCHAR2(14)   Y                        
CONFIRM_STATUS                 VARCHAR2(3)    Y                        
CHANGE_ID                      NUMBER         Y                        
CHANGE_LINE_ID                 NUMBER         Y                        
ITEM_CATALOG_GROUP_NAME        VARCHAR2(820)  Y                        
REVISION_IMPORT_POLICY         VARCHAR2(30)   Y                        
GTIN_DESCRIPTION               VARCHAR2(240)  Y                        
INTERFACE_TABLE_UNIQUE_ID      NUMBER         Y                        
GDSN_OUTBOUND_ENABLED_FLAG     VARCHAR2(1)    Y                        
TRADE_ITEM_DESCRIPTOR          VARCHAR2(35)   Y                        
STYLE_ITEM_ID                  NUMBER         Y                        
STYLE_ITEM_FLAG                VARCHAR2(1)    Y                        
STYLE_ITEM_NUMBER              VARCHAR2(700)  Y                        
COPY_REVISION_ID               NUMBER         Y                        
BUNDLE_ID                      NUMBER         Y                        
MESSAGE_TIMESTAMP              DATE           Y                        
MESSAGE_ID                     NUMBER         Y                        
OPERATION                      VARCHAR2(80)   Y                        
TOP_ITEM_FLAG                  VARCHAR2(1)    Y                        
GPC_CODE                       VARCHAR2(8)    Y                        
GLOBAL_ATTRIBUTE11             VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE12             VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE13             VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE14             VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE15             VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE16             VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE17             VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE18             VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE19             VARCHAR2(150)  Y                        
GLOBAL_ATTRIBUTE20             VARCHAR2(150)  Y