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.
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 |
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) |
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 |
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 |
Detail Validation routines are:
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 |
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 |
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()
<Internal_Only> mapping information into F41UI001 will be implemented
Business Function note for Edit Line will be handled in separate </Internal_Only> document