How to Filter Sales Order Detail Lines Using Customer Item Number (CITM) in Customer Service Inqury

Goal

The purpose of this document is to explain the limitation of search functionality in both P42101/W42101C [Manage Exiting Order] and P4210|W4210E [Customer Service Inquiry] to answer below inquiry,

Is there way to filter sales order details using customer item number in P4210|W4210E [Customer Service Inquiry] with below configuration,

1. Set Symbol Customer/Supplier (F41001.SYM5) for the branch/plant 'M30' (F41001.MCU)
2. Add Cross Reference for the customer 74242 using P4104 (Cross Reference) as below,
  - Cross-Reference Code Type = 'C' (F4104.XRT)
  - Cross Reference Item Number = 'COFFEE' (F4104.CITM)
  - Address Number = 74242 (F4104.AN8)
  - Eff Date = Today's date
  - Expired Date = 12/31/Default Value of DD Alias DCYR (or CENTCHG)

Address Number Xref Type Short Item No Expired Date Effective Date Customer/Supplier Item Number Description  2nd Item Number ...
74242 C 933290 12/31/25 03/23/18 COFFEE Blank coffee - blend KOPI-O  

3. Set the processing option of P4210|Version as below,
  - (Tab) 12-Order Inquiry
  - 7. Customer Cross Reference Type = 'C'

4. Enter customer's Item Number with symbol (= #COFFEE) in the column Item Number below,

Print Screen for Item Number in W4210E

Note: the check box may show additional column in Grid to show the Customer Item Number when it is set properly.

Solution

Currently, it is functioning as designed as exiting enhancement <Bug 10991876> - SEARCH IN P42101 FOR CUSTOMER - SAR: 8840258. As explained, it is very unlikely we implement this because of usability.

There are three different behaviors in P4210/P42101,


Example to parse customer item number to company's item number,
F4101 Get Item Master Row (X4101, VerifyAndGetItemMaster)
  GC Item Number -> BF szPrimaryItemNumber                                       /* IN: example: #COFFEE which is customer item number */
  VA evt_szBranchPlant_MCU -> BF szBranchPlant                                  /* IN: Detail Branch/Plant = M30 to resolve symbol # because this symbol can be different per branches */
   -> BF cSymbolidentifier                                                                  /* IN: To match symbol based on branch/plant - not only customer number but also any symbol */
  VA evt_mnShortItemNumber_ITM   FC Address Number -> BF mnAddressnumber                  /* IN: Sold To Address to build WHERE clause */
  "0" -> BF cReturnPtr                                                                                                 /* IN: Not to return pointer - otherwise it can cause memory leak */
  "1" -> BF cSuppressErrorMsg                                                                                      /* IN: 1 - Suppress Error, 0 - Do not Suppress - show error and stop processing */
  "1" -> BF cCallType                                                                                                  /* IN: Hard coded to control the routine */
  "1" -> BF cCrossRefMode                                                                                           /* IN: 0 or 1 to determine whether to read F4104 or not */
  FC Order Date -> BF jdExpirationDate                                                                          /* IN: Since there can be multiple rows for item number. F4101 : 4104 = 1 : many */

Note: the example of code will be discussed in different document to explain the usage of X4101.