Thursday, 24 October 2019

Master - Child Conflict in one of these Attributes - Inventory while doing Master Org To Child Org Transfer Error

Count the Invalid  Attributes Default.

SELECT COUNT(*) CATALOG_STATUS_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE CATALOG_STATUS_FLAG IS NULL;
SELECT COUNT(*) COLLATERAL_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE COLLATERAL_FLAG IS NULL;
SELECT COUNT(*) CONTAINER_ITEM_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE CONTAINER_ITEM_FLAG IS NULL;
SELECT COUNT(*) DOWNLOADABLE_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE DOWNLOADABLE_FLAG IS NULL;
SELECT COUNT(*) DRP_PLANNED_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE DRP_PLANNED_FLAG IS NULL;
SELECT COUNT(*) ELECTRONIC_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE ELECTRONIC_FLAG IS NULL;
SELECT COUNT(*) EQUIPMENT_TYPE FROM MTL_SYSTEM_ITEMS_B WHERE EQUIPMENT_TYPE IS NULL;
SELECT COUNT(*) EVENT_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE EVENT_FLAG IS NULL;
SELECT COUNT(*) INDIVISIBLE_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE INDIVISIBLE_FLAG IS NULL;
SELECT COUNT(*) LOT_DIVISIBLE_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE LOT_DIVISIBLE_FLAG IS NULL;
SELECT COUNT(*) LOT_MERGE_ENABLED FROM MTL_SYSTEM_ITEMS_B WHERE LOT_MERGE_ENABLED IS NULL;
SELECT COUNT(*) LOT_SPLIT_ENABLED FROM MTL_SYSTEM_ITEMS_B WHERE LOT_SPLIT_ENABLED IS NULL;
SELECT COUNT(*) LOT_STATUS_ENABLED FROM MTL_SYSTEM_ITEMS_B WHERE LOT_STATUS_ENABLED IS NULL;
SELECT COUNT(*) LOT_TRANSLATE_ENABLED FROM MTL_SYSTEM_ITEMS_B WHERE LOT_TRANSLATE_ENABLED IS NULL;
SELECT COUNT(*) MRP_CALCULATE_ATP_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE MRP_CALCULATE_ATP_FLAG IS NULL;
SELECT COUNT(*) RECIPE_ENABLED_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE RECIPE_ENABLED_FLAG IS NULL;
SELECT COUNT(*) SERIAL_STATUS_ENABLED FROM MTL_SYSTEM_ITEMS_B WHERE SERIAL_STATUS_ENABLED IS NULL;
SELECT COUNT(*) SERIAL_TAGGING_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE SERIAL_TAGGING_FLAG IS NULL;
SELECT COUNT(*) VEHICLE_ITEM_FLAG FROM MTL_SYSTEM_ITEMS_B WHERE VEHICLE_ITEM_FLAG IS NULL;
_________________________________________________________________________________
_________________________________________________________________________________

Master - Child Conflict in one of these Attributes: Type(WIP_SUPPLY_TYPE), Subinventory(WIP_SUPPLY_SUBINVENTORY), Primary UOM Code(PRIMARY_UOM_CODE), Primary Unit Of Measure(PRIMARY_UNIT_OF_MEASURE), Conversions(ALLOWED_UNITS_LOOKUP_CODE), Cost Of Goods Sold Account(COST_OF_SALES_ACCOUNT), Sales Account(SALES_ACCOUNT).

check the we have to assign in master Level Or Org Level

Please check the Inventory - Setup - Item - Attributes control -- check in master org

For this above issue , Initially (PRIMARY_UNIT_OF_MEASURE) it was  master Level I changed to Org level


------------------------------------------------------------------------------------------------------------------------

Master - Child Conflict in one of these Attributes: Demant Time Fence(DEMAND_TIME_FENCE_CODE), Lead Time Lot Size(LEAD_TIME_LOT_SIZE), Standard Lot Size(STD_LOT_SIZE), Cumulative Manufacturing(CUM_MANUFACTURING_LEAD_TIME), Overrun Percentage(OVERRUN_PERCENTAGE), Calculation ATP(MRP_CALCULATE_ATP_FLAG), Positive Acceptable Rate(ACCEPTABLE_RATE_INCREASE), Negative Acceptable Rate(ACCEPTABLE_RATE_DECREASE).


For this issue I used below query to update mtl_system_items_b . Before that take back up file and check. It will get resloved.

========================================================================

set verify off
WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
WHENEVER OSERROR EXIT FAILURE ROLLBACK;


set timing on;
set serveroutput on;
DECLARE
  l_task     VARCHAR2(30) := 'update_bigtable';
  l_sql_stmt VARCHAR2(32767);
  l_try      NUMBER;
  l_status   NUMBER;
BEGIN
  DBMS_PARALLEL_EXECUTE.create_task (task_name => l_task);
  DBMS_PARALLEL_EXECUTE.create_chunks_by_rowid(task_name => l_task,
                                                table_owner => 'INV',
                                                table_name => 'MTL_SYSTEM_ITEMS_B',
                                                by_row => TRUE,
                                                chunk_size => 10000);
  l_sql_stmt := 'UPDATE MTL_SYSTEM_ITEMS_B SET
                      CATALOG_STATUS_FLAG = CASE WHEN CATALOG_STATUS_FLAG IS NULL THEN ''N'' ELSE CATALOG_STATUS_FLAG END,
                      COLLATERAL_FLAG = CASE WHEN COLLATERAL_FLAG IS NULL THEN ''N'' ELSE COLLATERAL_FLAG END,
                      CONTAINER_ITEM_FLAG = CASE WHEN CONTAINER_ITEM_FLAG IS NULL THEN ''N'' ELSE CONTAINER_ITEM_FLAG END,
                      DOWNLOADABLE_FLAG = CASE WHEN DOWNLOADABLE_FLAG IS NULL THEN ''N'' ELSE DOWNLOADABLE_FLAG END,
                      ELECTRONIC_FLAG = CASE WHEN ELECTRONIC_FLAG IS NULL THEN ''N'' ELSE ELECTRONIC_FLAG END,
                      EVENT_FLAG = CASE WHEN EVENT_FLAG IS NULL THEN ''N'' ELSE EVENT_FLAG END,
                      INDIVISIBLE_FLAG = CASE WHEN INDIVISIBLE_FLAG IS NULL THEN ''N'' ELSE INDIVISIBLE_FLAG END,
                      MRP_CALCULATE_ATP_FLAG = CASE WHEN MRP_CALCULATE_ATP_FLAG IS NULL THEN ''N'' ELSE MRP_CALCULATE_ATP_FLAG END,
                      VEHICLE_ITEM_FLAG = CASE WHEN VEHICLE_ITEM_FLAG IS NULL THEN ''N'' ELSE VEHICLE_ITEM_FLAG END,
                      RECIPE_ENABLED_FLAG = CASE WHEN RECIPE_ENABLED_FLAG IS NULL THEN ''N'' ELSE RECIPE_ENABLED_FLAG END,
                      BOM_ENABLED_FLAG = CASE WHEN BOM_ENABLED_FLAG IS NULL THEN ''N'' ELSE BOM_ENABLED_FLAG END,
                      LOT_STATUS_ENABLED = CASE WHEN LOT_STATUS_ENABLED IS NULL THEN ''N'' ELSE LOT_STATUS_ENABLED END,
                      SERIAL_STATUS_ENABLED = CASE WHEN SERIAL_STATUS_ENABLED IS NULL THEN ''N'' ELSE SERIAL_STATUS_ENABLED END,
                      LOT_DIVISIBLE_FLAG = CASE WHEN LOT_DIVISIBLE_FLAG IS NULL THEN ''N'' ELSE LOT_DIVISIBLE_FLAG END,
                      LOT_SPLIT_ENABLED = CASE WHEN LOT_SPLIT_ENABLED IS NULL THEN ''N'' ELSE LOT_SPLIT_ENABLED END,
                      LOT_MERGE_ENABLED = CASE WHEN LOT_MERGE_ENABLED IS NULL THEN ''N'' ELSE LOT_MERGE_ENABLED END,
                      LOT_TRANSLATE_ENABLED = CASE WHEN LOT_TRANSLATE_ENABLED IS NULL THEN ''N'' ELSE LOT_TRANSLATE_ENABLED END,
                      LOT_SUBSTITUTION_ENABLED = CASE WHEN LOT_SUBSTITUTION_ENABLED IS NULL THEN ''N'' ELSE LOT_SUBSTITUTION_ENABLED END,
                      BULK_PICKED_FLAG = CASE WHEN BULK_PICKED_FLAG IS NULL THEN ''N'' ELSE BULK_PICKED_FLAG END,
                      SERIAL_TAGGING_FLAG = CASE WHEN SERIAL_TAGGING_FLAG IS NULL THEN ''N'' ELSE SERIAL_TAGGING_FLAG END,
                      EQUIPMENT_TYPE = CASE WHEN EQUIPMENT_TYPE IS NULL THEN 2 ELSE EQUIPMENT_TYPE END,
  DRP_PLANNED_FLAG = CASE WHEN DRP_PLANNED_FLAG IS NULL THEN 2 ELSE DRP_PLANNED_FLAG END
                WHERE rowid BETWEEN :start_id AND :end_id';
             
  DBMS_PARALLEL_EXECUTE.run_task(task_name => l_task,
                                sql_stmt => l_sql_stmt,
                                language_flag => DBMS_SQL.NATIVE, parallel_level => 10);

  -- If there is error, RESUME it for at most 2 times.
    l_try := 0;
    l_status := DBMS_PARALLEL_EXECUTE.task_status(l_task);
    WHILE(l_try < 2 and l_status != DBMS_PARALLEL_EXECUTE.FINISHED)
    Loop
      l_try := l_try + 1;
      DBMS_PARALLEL_EXECUTE.resume_task(l_task);
      l_status := DBMS_PARALLEL_EXECUTE.task_status(l_task);
    END LOOP;
EXCEPTION
WHEN OTHERS THEN
  dbms_output.put_line('error occured during batch  UPDATE    ::'||SQLERRM||'--'||SQLCODE);
  dbms_output.put_line(dbms_utility.format_error_backtrace);
  DBMS_PARALLEL_EXECUTE.drop_task(l_task);
END;

/

EXIT;




set serveroutput on;
declare

        l_api_version                   NUMBER := 1.0;
        l_init_msg_list                 VARCHAR2(2) := FND_API.G_TRUE;
        l_commit             VARCHAR2(2) := FND_API.G_FALSE;
        x_message_list               Error_Handler.Error_Tbl_Type;
        x_return_status               VARCHAR2(2);
        x_msg_count                  NUMBER := 0;
   
        l_user_id             NUMBER := -1;
        l_resp_id             NUMBER := -1;
        l_application_id   NUMBER := -1;
       
        l_org_code           VARCHAR2(3)  := 'MTP' ;
        l_item_number    VARCHAR2(25) := 'AVS-000341';
        l_org_id         NUMBER ;
        l_item_id        NUMBER ;

        l_user_name                   VARCHAR2(30) := 'SYSADMIN';
        l_resp_name                   VARCHAR2(30) := 'Inventory - AVH';   

BEGIN

      -- Get the user_id
      SELECT user_id
      INTO l_user_id
      FROM fnd_user
      WHERE user_name = l_user_name;
   
      -- Get the application_id and responsibility_id
      SELECT application_id, responsibility_id
      INTO l_application_id, l_resp_id
      FROM fnd_responsibility_vl
      WHERE responsibility_name = l_resp_name;
   
      FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_resp_id, l_application_id);  -- MGRPLM / Development Manager / EGO
      dbms_output.put_line('Initialized applications context: '|| l_user_id || ' '|| l_resp_id ||' '|| l_application_id );
     
     select organization_id
     into l_org_id
     from mtl_parameters where organization_code = l_org_code ;
    
     select inventory_item_id
     into l_item_id
     from mtl_system_items_b where segment1 = l_item_number and rownum < 2;
     
     DBMS_OUTPUT.PUT_LINE('Inputs: Organization ID: '||l_org_id ||' Inventory Item ID: '|| l_item_id);
        
     -- call API to assign Items
     DBMS_OUTPUT.PUT_LINE('===========================================');
    DBMS_OUTPUT.PUT_LINE('Calling EGO_ITEM_PUB.Assign_Item_To_Org API');       
  
      EGO_ITEM_PUB.ASSIGN_ITEM_TO_ORG(
             P_API_VERSION          => l_api_version
          ,  P_INIT_MSG_LIST        => l_init_msg_list
          ,  P_COMMIT               => l_commit
          ,  P_INVENTORY_ITEM_ID    => l_item_id   -- Use INVENTORY_ITEM_ID, ORGANIZATION_ID instead of ITEM_NUMBER, ORGANIZATION_CODE
          ,  P_ITEM_NUMBER          => NULL 
          ,  P_ORGANIZATION_ID      => l_org_id
          ,  P_ORGANIZATION_CODE    => 'MTP'
          ,  P_PRIMARY_UOM_CODE     => 'EA'
          ,  X_RETURN_STATUS        => x_return_status
          ,  X_MSG_COUNT            => x_msg_count
        );
      
       DBMS_OUTPUT.PUT_LINE('=========================================');
       DBMS_OUTPUT.PUT_LINE('Return Status: '||x_return_status);

       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
          DBMS_OUTPUT.PUT_LINE('Error Messages :');
          Error_Handler.GET_MESSAGE_LIST(x_message_list=>x_message_list);
          FOR i IN 1..x_message_list.COUNT LOOP
             DBMS_OUTPUT.PUT_LINE(x_message_list(i).message_text);
          END LOOP;
       END IF;
       DBMS_OUTPUT.PUT_LINE('=========================================');      
        
EXCEPTION
        WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE('Exception Occured :');
          DBMS_OUTPUT.PUT_LINE(SQLCODE ||':'||SQLERRM);
          DBMS_OUTPUT.PUT_LINE('========================================');
END;

No comments:

Post a Comment