当遇到MMTT Stuck ERROR ‘Total lot transaction does not match transaction quantity’ ,检查如下表格对应的LOT_NUMBER字段:
MTL_MATERIAL_TRANSACTIONS_TEMP
MTL_PHYSICAL_ADJUSTMENTS
MTL_PHYSICAL_INVENTORY_TAGS
如果对应的LOT_NUMBER字段是空的,并且查看MMTT对应的MTLT的记录为空,这需要手动写脚本插入MTLT记录以及UPDATE 对应表格的LOT_NUMBER字段。
MTL_TRANSACTION_LOTS_TEMP的数据大多数是从MTL_MATERIAL_TRANSACTIONS_TEMP那边继承过来的。
mtlt.transaction_temp_id = mmtt.transaction_temp_id
mtlt.group_header_id = mmtt.transaction_header_id
last_updated_by, created_by, last_update_login, request_id, program_application_id,program_id, transaction_quantity和primary_quantity 都是继承MMTT表格里面的数据。 对于status_id 那些字段,则是是从MTL_LOT_NUMBERS里面获取的。
可以通过下面的datafix 解决这个问题:
先更新几个表格的LOT_NUMBER字段,注意提供的lot_number必须有足够的onhand在库里面。
UPDATE MTL_MATERIAL_TRANSACTIONS_TEMP
SET LOT_NUMBER = 'IED-LCRM18'
,LAST_UPDATE_LOGIN = -18934520
WHERE TRANSACTION_TEMP_ID = 23965292
AND TRANSACTION_HEADER_ID = 24746069;
UPDATE MTL_PHYSICAL_ADJUSTMENTS
SET LOT_NUMBER = 'IED-LCRM18'
,LAST_UPDATE_LOGIN = -18934520
WHERE ADJUSTMENT_ID = 124998
AND ORGANIZATION_ID = 340
AND PHYSICAL_INVENTORY_ID = 5053;
UPDATE MTL_PHYSICAL_INVENTORY_TAGS
SET LOT_NUMBER = 'IED-LCRM18'
,LAST_UPDATE_LOGIN = -18934520
WHERE TAG_ID = 124357
AND PHYSICAL_INVENTORY_ID = 5053
AND ORGANIZATION_ID = 340
AND ADJUSTMENT_ID = 124998;
完成更新之后,插入对应的MTLT记录:
INSERT INTO MTL_TRANSACTION_LOTS_TEMP
(TRANSACTION_TEMP_ID
, LAST_UPDATE_DATE
, LAST_UPDATED_BY
, CREATION_DATE
, CREATED_BY
, LAST_UPDATE_LOGIN
, REQUEST_ID
, PROGRAM_APPLICATION_ID
, PROGRAM_ID
, PROGRAM_UPDATE_DATE
, TRANSACTION_QUANTITY
, PRIMARY_QUANTITY
, LOT_NUMBER
, LOT_EXPIRATION_DATE
, ERROR_CODE
, SERIAL_TRANSACTION_TEMP_ID
, GROUP_HEADER_ID
, PUT_AWAY_RULE_ID
, PICK_RULE_ID
, DESCRIPTION
, VENDOR_NAME
, SUPPLIER_LOT_NUMBER
, ORIGINATION_DATE
, DATE_CODE
, GRADE_CODE
, CHANGE_DATE
, MATURITY_DATE
, STATUS_ID
, RETEST_DATE
, AGE
, ITEM_SIZE
, COLOR
, VOLUME
, VOLUME_UOM
, PLACE_OF_ORIGIN
, BEST_BY_DATE
, LENGTH
, LENGTH_UOM
, RECYCLED_CONTENT
, THICKNESS
, THICKNESS_UOM
, WIDTH
, WIDTH_UOM
, CURL_WRINKLE_FOLD
, LOT_ATTRIBUTE_CATEGORY
, VENDOR_ID
, TERRITORY_CODE
, SUBLOT_NUM
, SECONDARY_QUANTITY
, SECONDARY_UNIT_OF_MEASURE
, QC_GRADE
, REASON_CODE
, PRODUCT_CODE
, PRODUCT_TRANSACTION_ID
, ATTRIBUTE_CATEGORY
, ATTRIBUTE1
, ATTRIBUTE2
, ATTRIBUTE3
, ATTRIBUTE4
, ATTRIBUTE5
, ATTRIBUTE6
, ATTRIBUTE7
, ATTRIBUTE8
, ATTRIBUTE9
, ATTRIBUTE10
, ATTRIBUTE11
, ATTRIBUTE12
, ATTRIBUTE13
, ATTRIBUTE14
, ATTRIBUTE15
, EXPIRATION_ACTION_CODE
, EXPIRATION_ACTION_DATE
, HOLD_DATE
, ORIGINATION_TYPE
, PARENT_LOT_NUMBER
, REASON_ID
, PARENT_OBJECT_TYPE
, PARENT_OBJECT_ID
, PARENT_OBJECT_NUMBER
, PARENT_OBJECT_TYPE2
, PARENT_OBJECT_ID2
, PARENT_OBJECT_NUMBER2
, PARENT_ITEM_ID
)
VALUES
(l_txn_temp_id
,sysdate
,l_last_updated_by
,sysdate
,l_created_by
,l_last_update_login
,l_request_id
,l_program_app_id
,l_program_id
,sysdate
,l_txn_qty
,l_txn_qty
,l_lot_number
,NULL
,NULL
,NULL
,l_txn_header_id
,NULL
,NULL
,NULL
,NULL
,NULL
,sysdate
,NULL
,NULL
,NULL
,NULL
,l_status_id
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,3
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL);
跑完插入的sql指令之后,commit一下。
然后更新stuck mmtt 记录状态:
UPDATE MTL_MATERIAL_TRANSACTIONS_TEMP
SET PROCESS_FLAG = 'Y',
LOCK_FLAG = 'N',
ERROR_CODE = NULL,
ERROR_EXPLANATION = NULL,
TRANSACTION_MODE = 3
WHERE TRANSACTION_TEMP_ID in (23965292);
最后重新launch inventory manager 就可以了。