P4114 Inventory Adjustment Issues an 'Item Number Invalid' with Flex Account - CASE STUDY

Purpose of Document

Table of Contents

This document is a case study only with general debugging methods.

Issue

P4114 (Inventory Adjustment) issues error with Flex Account on as below,

Item Number Invalid
A form level error has occurred.
CAUSE.... The Item Number entered does not exist in the Basic Item Master
(P4101).
ER Details:
Form                      P4114_W4114A
Control Id               1
Control Title            Grid
Event                     Row is Exit & Changed - Asynch
Line No                   61
BSFN Details:
    Source File         x4101.c
    Source Line        1321
    Error ID              026

Error representation in the JDEDEBUG

Same repeats in JDEDEBUG.log as below,
sql> SELECT IMITM, IMLITM, IMAITM, IMDSC1, IMDSC2, IMIFLA, IMTFLA, IMTMPL, IMSEG1, IMSEG2, IMSEG3, IMSEG4, IMSEG5, IMSEG6, IMSEG7, IMSEG8, IMSEG9, IMSEG0, IMMIC FROM PRODDTA.F4101 WHERE ( IMITM = 741386741386.000000 )
No More Data found (hRequest 0A6F44C0)

ERROR INFO JDEERR - ID= 0, Error= 0267 - x4101.c, Line= 1321

 Note:

As - Is Flex Account Setup using P40296 (Flex Rules Definition)

Flex Rule Definition - Flexible Sales Account Revisions

AAI Table Number    4124                  Company 00001

Document Type       IA

Seq Business Unit Subsidiary Subledger Item Cost Object Cost Type File Name Len Description Data Item Data Type
1 X           F4102 6 Category Code 7 SRP7  
2       X     F4102 8 Item Number - Short ITM  
3       X     F4102 8 Item Number - Short ITM  
4         3 P F4102 3 Commodity Class PRP1  
5         3 P F4102 3 Commodity Class PRP1  
6         4 G F4102 3 Supplier Rebate Code PRP3  
7         4 G F4102 3 Supplier Rebate Code PRP3  

Note:

 

How to debug the issue

To debug and resolve this type of issue,
1. Capture jdedebug.log (call object kernel log) with error

2. Look for error based on the error code represented in HTML client
  For instance, you may find "ERROR INFO JDEERR - ID= 0, Error= 0267 - x4101.c, Line= 1321" in jdedebug.log captured
  Get the function name based on c Source File X4101C which is GetItemMasterByShortItem

3. Look for the SELECT statement failed by scrolling up a few lines. Based on the function analyzed GetItemMasterByShortItem, which issues query as below (Issue SELECT using ITM 741386741386)
  SELECT IMITM, IMLITM, IMAITM, IMDSC1, IMDSC2, IMIFLA, IMTFLA, IMTMPL, IMSEG1, IMSEG2, IMSEG3, IMSEG4, IMSEG5, IMSEG6, IMSEG7, IMSEG8, IMSEG9, IMSEG0, IMMIC FROM PRODDTA.F4101 WHERE ( IMITM = 741386741386.000000 )
  No More Data found (hRequest 0A6F44C0)
  : This query fails because the mnIdentifierShortItem repeats twice

4. Determine the condition to write ITM. Only possible cause of repetition is Flex Account settings (Refer <Document ID 756543.1> - E1: 42: Flexible Accounting for Distribution (R42800/P4112/P4113/P4114/P4312/P4314/P43291/P40296) if you are interested in). Commonly Item number can be set using Flexible account setup to record F0911.ITM based on the value specified.

5. Review Flex set up using P40296 (or, table F4096).

6. Delete replicated lines unless you want to set it up item master for the same. For this example, the short item number exceeds the defined length but both SQL and Oracle DB shall not issue any error (you may hit hard error in DB2 environment) when the length exceeds 8 digits.
Seq Business Unit Subsidiary Subledger Item Cost Object Cost Type File Name Len Description Data Item Data Type

[To - Be] setting

Seq Business Unit Subsidiary Subledger Item Cost Object Cost Type File Name Len Description Data Item Data Type
1 X           F4102 6 Category Code 7 SRP7  
2       X     F4102 8 Item Number - Short ITM  
3         3 P F4102 3 Commodity Class PRP1  
4         4 G F4102 3 Supplier Rebate Code PRP3  

 

7. Delete Database Cache because F4096 is a member of Database Cache as defined in P98613

8. Test it again
  SELECT IMITM, IMLITM, IMAITM, IMDSC1, IMDSC2, IMIFLA, IMTFLA, IMTMPL, IMSEG1, IMSEG2, IMSEG3, IMSEG4, IMSEG5, IMSEG6, IMSEG7, IMSEG8, IMSEG9, IMSEG0, IMMIC FROM PRODDTA.F4101 WHERE ( IMITM = 741386.000000 )
  Fetched the record (hRequest 0A6F3FB0)
  : F0911.ITM = F4102.ITM will be written