Inventory Transaction MBF - XT4111Z1

Purpose of Document

Disclaimer: The audience for this note is someone with developer level knowledge.

In distribution and manufacturing module inventory transaction is crucial and this document is to explain how XT4111Z1 is utilized.

Note:

Table of Contents:




When XT4111Z1 is utilized?
Master business function XT4111Z1 is made up of below business functions:

Function Name Description Template Name Others
F4111EditLine F4111 Edit Line DXT4111Z1C Validate detail routine and write it into cache F41UI001
F41UI001ProcessInventoryCache F41UI001 Process Inventory Cache Record DXT4111Z1J This does not belong to general routine
F4111EndDocument F4111 End Document DXT4111Z1E Commit Caches to tables and call F4111ClearDetailStack
F4111ClearDetailStack F4111 Delete Work File DXT4111Z1I Delete cache not only F41UI001 but also all the caches created throughout transaction

Note:
BSFN F41UI001ProcessInventoryCache is not mandatory for inventory transaction routine rather this is used to access cache directly from a certain routines.

A. In accessing cache below 8 value will be used:
B. With cActionCode as below:
So cActionCode has to be 2, 4 and 5 (mostly cActionCode will be 4 to inquire exiting cache.





Where XT4111Z1 is utilized?
Generally inventory transaction is part of your daily business process. So only limited application may make use of XT4111Z1 directly.

Below applications can call XT4111Z1 directly (not through other MBF):

Apps Description Function
P31B67B Speed Actuals Subform - Additi Calling F4111EditLine (for validation purpose) and F4111ClearDetailStack
P4113 Inventory Transfer Calling F4111EditLine in clicking OK button to handle data in grid properly through WHILE loop
P415101 General Stock Movements Direct stock movement through XT4111Z1
P49660 Disposition Loads Calling F4111ClearDetailStack (in Cancel button)
R415021 Update Operational Reconciliat Direct stock movement/reconcile through XT4111Z1


Whereas general routine are to be:

Calling Called By Function (Description) Others
1. F4111EditLine B3100770 B3100770CompletionsEditDoc (F4801 Edit Document) P31114 - Work Order Completions
B3102080 Co_ByCompletionsEditLine (Co_By Completions Edit Line) P31114 - Work Order Completions
B3102270 F3111WOIssuesEditLine (F3111 WO Issues Edit Line) P31114 - Work Order Completions
P43250 - Receipt Routing Movement and Disposition
R17731 - Service Order Issue
B4208020 DoLineLevelInventorySales (Do Invoice Level Inventory Sales) R42800 - Sales Update
N4200790 F42UI05EditLine (F2UI05 Edit Line) P4205 - Shipment Confirmation
N4900540 DeliverConfirmEditLine (Deliever Confirm Edit Line) P49650 - Deliver Confirm
N4900730 DispositionLoadEditLine (Disposition Load Edit Line)
DispositionLoadIntCallInvServer (Disposition Load Internal Call Inventory Server)
P4960 - Work with Loads
P49650 - Deliver Confirm
P49660 - Disposition Loads
N4900780 LoadConfirmEditLine (Load Confirm Edit Line) P49640 - Transportation Load Confirmation
XT4113Z1 F4113FSEditLine (F4113 FS Edit Line) P4113 - Inventory Transfer
XT4114Z1 F4114EditLine (F4114 Edit Line) P4112 - Inventory Issues
P4114 - Inventory Adjustments
XT4116Z1 F4116FSEditLine (F4116 FS Edit Line) P4116 - Item Reclassificaitons
XT4312Z2 F4312EditLine (F4312 Edit Line Internal Functions) P4312 - PO Receipts
F41UI001ProcessInventoryCache B4100940 ReclassificationQtyBalances (Cache, Reclassification Cache Functions)
B4100950 F41UI001UpdateExpirationDate (F41UI001 Update Expiration Date)
F41UI001UpdateWMSLineNumber (F41UI001 Update WMS Line Number)
B4101340 UnloadF41UI001Cache (F41UI001 Upload Inventory Cache)
B4305310 CalcZeroBalance (Calculate Zero Balance)
XT4113Z1 F41UI001UnLoadInventoryCache (F41UI001 UnLoad Inventory Cache)
XT4114Z1 F4114EditLine (F4114 Edit Line)
XT4312Z2 F4312EditLine (IXT4312Z2_F4312EditLineInternalFunctions)
F4111EndDocument B3100770 B3100770CompletionsEndDoc (F4801 End Document)
B3102080 Co_ByCompletionsEndDoc (Co_By Completions End Doc)
B3102270 F3111WOIssuesEndDocument (F3111 WO Issues End Document)
B4208020 DoInvoiceLevelInventorySales (Do Invoice Level Inventory Sales)
N4200790 ShipConfirmEndDoc (Shipment Confirmation End Document)
N4900540 DeliverConfirmEndDocument (Deliever Confirm End Document)
N4900730 DispositionLoadEndItemMultiples Disposition Load End Doc)
N4900780 LoadConfirmEndDoc (Load Confirm End Doc)
XT4113Z1 F4113FSEndDoc (F4113 FS End Doc)
XT4114Z1 F4114EndDocument (F4114 End Document)
XT4116Z1 F4116FSEndDoc (F4116 FS End Doc)
XT4312Z1 F4312EndDoc (F43121 End Document)
F4111ClearDetailStack B3100770 B3100770CompletionsEditDoc (F4801 Edit Document)
B3102080 Co_ByCompletionsClearWorkFile (Co_By Completions Clear Work File)
Co_ByCompletionsEditLine (Co_By Completions Edit Line)
B3102270 F3111WOIssuesEditLine (F3111 WO Issues Edit Line)
F3111WOIssuesReleaseAllocatedRes (F3111 WO Issues Release Allocated Resources)
N4200790 F42UI05DeleteCache (F42UI05 Delete Cache)
N4900540 DeliverConfirmClearWorkFile (Deliever Confirm Clear Work File)
N4900730 DispositionLoadEditItem (Disposition Load Edit Item)
DispositionLoadEditLine (Disposition Load Edit Line)
DispositionLoadEndItemMultiples (Disposition Load End Item Multiples)
N4900780 LoadConfirmClearWorkFile (Load Confirm Clear Work File)
LoadConfirmEditLine (Load Confirm Edit Line)
XT4113Z1 F4113FSEditLine (F4113 FS Edit Line)
F4113FSClearWorkFile (F4113 FS Clear Work File)
XT4114Z1 F4114ClearDetailStack (F4114 Clear Detail Stack)
XT4116Z1 F4116FSClearWorkfile (F4116 FS Clear Workfile)
XT4312Z1 F4312ClearWorkFile (F43121 Delete Work File)

Note:





What does XT4111Z1 do?
XT4111Z1 validates input data and update/insert Item Location, Cardex and Cost information depends on the process you are on.

Data Structures of XT4111Z1:

In calling F4111EditLine and F4111EndDocument, mnTransactionProcessType (nTransaction in Code) are defined as below:

nTran Application Same
routine
Reference
1 P4112 - Inventory Issues XT4114Z1, N4900780
2 P4114 - Inventory Adjustment XT4114Z1, N4900730
3 P4113 - Inventory Transfer
P415101 - Bulk Stock Adjustment (Bulk Transfer)
4 P4312 - Purchase Order Receipt
P4314 - Voucher Match
P43253 - Routing Disposition
P43250 - Receipt Routing Movement and Disposition
4 & 15 XT4312Z2 without Serial Number
5 P4205 - Shipment Confirmation 5 & 19 N4200790
6 R41413 - Cycle Count Update
7 R41610 - Tag Count Update
8 P4242 - Transfer Order
9 P31114 - Work Order Completion without Receipt Routing
P31114 - Work Order Completions (Co_By)
9 & 20 B3102270, B3100770
B3102080
10 P31114 - Work Order Completions 9, 10 &20
11 P31113 - Work Order Inventory Issues
P31114 - Work Order Completions
P31115 - Co/By Product Completion Window
11&21 B3102270, B3100770
B3102080
12 P4116 - Inventory Reclassifiction
13 P4205 - Shipment Confirmation obsolete
14 P4205 - Shipment Confirmation 14 &19
15 P4312 - Purchase Order Receipt
P4314 - Voucher Match
P43253 - Routing Disposition
P43250 - Receipt Routing Movement and Disposition
4 & 15 XT4312Z2 with Serial Number
16 P49660 - Load Disposition


17 P49660 - Transportation Compartment - Based Load


18 P410151 - Tank to Tank Transfer =3
19 R42800 - Sales Update 14 & 19
20
DFM - Completion
9, 10 &20

21
DFM - Issue
11 & 21

Note:





How data gets validated?
Transaction by transaction (or calling application by application) actual routine can be different. Below is simplified validation routine:

nTrans Apps cUDC
Edit
cBranch
Plant
Edit
cGetBranch
Constants
cVerify
And
GetItem
cFormat
Location
cCheck
Item
Branch
cAllowItem
Branch
Add
cAllowItem
Location
Add
cCheck
Item
Cost
cQty
Conversion
cCalculate
Qty
CostExt
cCheck
Item
Price
cCheck
Qty
OnHand
cDecline
NonStock
Item
cCheck
Inv
Standard
Cost
Rec
cSerial
Number
Process
1 P4112 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
2, 8, & 16 P4114, P4242, P49660 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
3, 12 P4113 and From Side 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
P4113 and To Side 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1
P4116 and From Side 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
P4116 and To Side 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1
4 P4312, P4314, P43253, P43250 1 1 1 0 1 1 0 1 1 1 1 1 0 0 1 1
5, 13 P4205, R42800 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1
6, 7 R41413, R41610 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1
9, 10 P31112, P31114 (Completion) 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1
11 P31113, P3111 (Issue) 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1
14 P4205, P42800 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1
15 P4312, P4314, P43253, P43250 (In Routing) 1 1 1 0 1 1 0 1 1 1 1 1 0 0 0 0
17 Transportation Compartment - Based Load 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1
19 Manufacturing Variance Sales Order 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0
20 DFM - completion 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0
21 DFM - Issue 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0

Note


Detail Validation routines are:

Note:





What are the errors during validation?
Below are common errors:

Error
Code
Description Error
/Warning
Error Condition How to avoid error/warning?
078L Initialization of cache F41UI001 failed 1 IXT4111Z1_InitF41UI001Cache() F41UI001-JobNumber Cache is filled or job number is not retrieved
0159 Blank Field Invalid 1 mnQtyScrapped <> 0 AND szScrappedDocumentType = Blank Review jdedebug.log and determine which routine is faulty
0027 User Defined Code Error 1 If Transaction Unit Of Measure (TRUM) not blank AND If cLotProcessIndicator = '1' then RCD, LOTG, LOTS should not be blank Check UDC
0159 Blank Field Invalid 1 UDC 00/DT with szTransactionDocumentType Verify szTransactionDocumentType is defined in UDC 00/DT
0052 Business Unit Invalid 1 BranchPlantEdit = 1 AND szBranchPlant = Blank Populate Branch/Plant for detail line
1115 Company Currency Code Invalid 1 Where CurrencyProcessing is ON AND szCompany = Blank Verify Company in F0006 and Currency Code in F0010
0964 Branch/Plant Invalid 1 Pointer for idBranchConstantRecord is NULL Check Branch/Plant Constant (F41001) and Database Cache
4363 Null Pointer 1 Address for idF41001Address is NULL Check Branch/Plant Constant (F41001) and Database Cache
4363 Null Pointer 1 Address for idF4101Address is NULL Check Item Master (F4101)
4080 Branch / Plant and Item Inconsistant 1 stkt = N AND cDeclineNonStockItem = 1 Non stock item is not allowed for P4114, P4112, P4113, P4116, R41413 and R41610
0294 Item Branch Record Does Not Exist 1 &idF4102Ptr = NULL Check Item Branch (F4102)
121D Item Branch Record Not Found - WARNING 2 idF4102Ptr = 0 AND cAllowItemBranchAdd =1 Determine whether you need to create Item Branch on the fly
41IT Parent/Child Relationship Not Found 2 Set warning if the Item Branch record does not exists for the "To" Branch Plant of the Inventory Transfer and if the item is matrix child item Warning message (SAR 8967883)
4363 Null Pointer 1 idItemBranchRecord is NULL and cCheckItemBranch = 1 Check F4102 - Item Branch File
4363 Null Pointer 1 idF4102Ptr = NULL Check F4102 - Item Branch File
039H Standard Cost Not Set Up 1 cCheckInvStandardCostRec = 1 AND F41UI001.csmt = '07' and Not configured item jdeStricmp((JCHAR *) dsF41UI001.itcsmt, _J("07") There is no F4105 record for that Item
410G Standard Cost is Zero 2 There is a F4105 record but the cost = 0 Check value in F4105
013O2 Invalid combination of values 1 If process item (R) or configured item (C) AND Sales Inventory Cost Selection is (02) or (09), stop processing in Manufacturing Check Cost Type and Stocking Type
085D UOM Conversion TransactionUOM to F4101.uom1 Unsuccessful 1 Conversion not found Check F41002/F41003 depends on Branch/Plant Constant
3247 Cannot Hold Entire Quantity 1 99999999999.9999 < F41UI001.tqoh Adjust TQOH if it contains bogus value from F4101
0003 Blank Invalid 1 mnTransactionQuantity = 0 AND mnTransactionExtendedCost = 0 For Issues and Adjustments we are going to allow them to enter a line with zero quantity
31PC WARNING - Changing Cost 2 EPM Actual Costing - Check if the unit cost has been changed 02 is defined by Manufacturing Group as an actual costing Method Check condition
31PL Lot Is In Use 1 nWorkOrderCompletion AND nIsActualCostMethod AND !nNewLot End a new lot
4723 Quantity Restriction Exceeded for Item 1 During ship confirmationValidate the Converted transaction qty if the LotProcessType is '5', '6', or '7' (Serial Number) Enter valid serial number
1557 Negative Quantity on Hand 1 If the calling applications are Manufacture P31114 (Completions)or Manufacture P31113, P31111 (Issues), perform the quantity on-hand check Check F41021.PQOH
0855 Quantity Invalid 1 Meet 1557 condition AND cEditOnly = 1 MPM
0855 Quantity Invalid 1 If on the Item/ branch record the Check Availability = Yes, quantity availabilty will be checked Check F41021.PQOH
41010 Line causes a zero balance adjustment 1 If this is not a reversal and there is going to be a ZBA then verify that the user is not trying to enter multiple lines for the same item/branch/location/lot number (depending on the cost level). The ZBA will not be as accurate as possible unless all previous lines affecting the cost are added first Check condition
41010 Line causes a zero balance adjustment 1 If there is going to be a ZBA then verify that the user is not trying to enter multiple lines for the same item/branch/location/lot number (depending on the cost level). The ZBA will not be as accurate as possible unless all previous lines affecting the cost are added first Check condition
121I Configured Item Mismatch 1 All Configurator Items must have Configured String ID Error will always be set When transaction IN (9, 10, 20)
122G Configured Item Mismatch 1 All Configurator Items must have Configured String ID Error will always be set When transaction NOT IN (9, 10, 20)
46LP Invalid qyantity for license plate issue 1 nTransaction = 1 AND F41I001.pqoh>0 AND szFromLicensePlateNumber <> 0 Wrong Transaction

Note:





How related tables get updated?
By setting update flag per nTransaction (or application) flag is to be set as below:

n Applications cUpdate
Qty
cUpdateLot
Master
cWriteItem
Branch
cWriteItem
Location
cWriteItemCost cWrite
ItemPrice
cWrite
AexpHistory
cUpdate
CostLedger06
cWriteCardex
AllQty
Others
1, 2, 3, 12 P4114, P4112, P4113, P4116 1 1 1 1 1 1 0 1 1
4, 15 P4312, P43214, P43253, P43250 1 1 0 1 1 0 0 0 0
5, 13 P4205, P42800 - Sales Update/Shipped Confirmed 1 1 0 0 0 0 1 0 0
6 R41413 - Cycle Count Update 1 1 0 1 1 1 0 1 0
7 R41610 1 1 0 1 1 1 0 1 1
8 P4242 - Transfer Order 0 1 1 1 1 1 0 0 0
9, 10 P31111 and P31113 (completion) 1 1 0 1 1 1 0 0 0 P31111 Obsolete
11 P31112 and P31114 (Issue) 1 1 1 1 1 1 0 0 0 P31112 Obsolete
14 P4205, P42800 - Sales Update/Shipped Confirmed 1 1 0 1 0 0 1 0 0
17 Transportation Compartment Based Load 1 1 0 0 0 0 1 1 1
19 Manufacturing Accounting Records Update only F4111 0 0 0 0 0 0 0 0 1 Update Only F4111
20 DFM - completion 1 1 0 1 1 1 0 0 0
21 DFM - issue 1 0 1 1 1 1 0 0 0

Note. For Oracle's JD Edwards EnterpriseOne Demand Flow Manufacturing (DFM).


Detail update are:





How related tables are added/updated through End Doc?
Through F4111EditLine inventory cache (F41UI001) and G/L Cache (I09UI002, I09UI003) is created. Through End Doc routine cache will be committed to related tables.





What is routine to write F4111 (Cardex File)?

Any application listed above can call routine to write F4111 as below,
Application
|--- (Post OK button clicked) xxx End Doc Routine (for example XT4312Z1 - F4312EndDoc)
|--- F4111EndDocument (XT4111Z1 - F4111 End Document: To commit F41UI001 cache to F4111 via below routine)
|--- InventoryCardexShell (B4100050 - F4111 Format Item Ledger Record)
|--- WriteCardexRecord (B4100040 - F4111 Write Item Ledger: this routine inserts data into F4111)
|--- GetNextUniqueKeyID (X00022 - Get Next Unique Key ID)
|--- JDB_InsertTable()

Note: X00022 gets defined F00022.UKID for table F4111 through Locking API JDB_FetchKeyedForUpdate() and update F00022.UKID immediately through JDB_UpdateCurrent () based on *ROWID. So in normal situation duplication of F4111.UKID is very unlikely.


To discuss information further with Oracle experts and industry peers, we encourage you to review, join or start a discussion in the JDE1 Distribution Community.

To look at upcoming or archived Advisor Webcasts please see Advisor Webcast Details (Doc ID 548764.1) if your topic is not currently scheduled please suggest it.


<Internal_Only> mapping information into F41UI001 will be implemented
Business Function note for Edit Line will be handled in separate </Internal_Only> document