By Kyle Thomas, Senior Consultant at Lucidity CG 
I was recently involved in a few projects that had similar objectives using the pre-processing barcode scanning functionality Oracle MSCA/MWA provides. Both projects wanted to manipulate a barcode scan and have it interact properly regardless of the Oracle MWA form the user was on. This required a “pre-processing” of the barcode scan. One of the projects required doing a lookup on the client’s legacy table and then returns either the new Oracle unique id or what was scanned from the barcode. The other project required the use of out-of-order scanning since the barcode used DFIs to determine various field types like quantity, item number, and lot number and parsed out the barcode. I found some documentation to do this but it seemed like it was in different Oracle supplied documents. So it felt like in order for me to grasp what I really needed to do I had to take all the documents, dissect them, and did a lot of trial and tribulations to get everything to work. So I felt the need to document my findings to help others who may come across something similar projects.
Debugging barcode scanning & Profile setup-
I highly recommend you read and setup debugging before you dive into developing your custom barcode scanning code. This is really a must when you are trying to debug what your code is doing. I would check out Senthil Shanmugam‘s article “MWA Setup, Testing, Error Logging and Debugging”. Senthil also provides some other great articles on MWA here you can read as well.
Log into your Apps and go to the Profile System Find System Profile Values: MWA% and modify the two attributes below.
MWA: Debug Trace = Yes
MWA: Pre-process scanned input = Yes
The above values need to be altered regardless of you using PL/SQL or JAVA.
PL/SQL Pre-Processing Scan
You need to decide if you’re going to use PL/SQL or JAVA. The pre-processing scan will try to call your JAVA class first. If it finds it then it will use that one and ignore your PL/SQL package.
-
In order to do any type of pre-process scanning you must have the above Pre-process scanned input set to Yes as above.
APPS.INV_PREPROCESS_SCAN.process_scan is the Oracle supplied package/procedure that is called before anything is done on the form. I will dissect my code later on in this article.
The only drawback to using the PL/SQL callout is that it does not support “out of order” scanning. This will be accomplished with the Java based custom scan manager.
NOTE – Your barcode gun must be setup to prefix the code that matches what is in your mfg.cfg. The default is CTRL+\ so you’ll need to check with your barcode gun manufacturer to add this. Your debug code will show you the below line if your code is being called:
[Tue Sep 02 15:52:10 CDT 2008] (Thread-28) Calling ScanManager.processScan
INV_PREPROCESS_SCAN
This PL/SQL procedure just basically does a legacy barcode cross-reference scan. It’s pretty straight forward.
CREATE OR REPLACE PACKAGE BODY APPS.INV_PREPROCESS_SCAN AS
PROCEDURE process_scan(x_return_status OUT nocopy VARCHAR2,
x_processed_value OUT nocopy VARCHAR2,
p_current_page_name IN VARCHAR2,
p_scanned_value IN VARCHAR2) IS
c_master_org number :=84; -- 84 is the master org
BEGIN
x_return_status := 'S';
BEGIN
-- Check for the new scanned barcode first
SELECT SEGMENT1||'.'||SEGMENT2 into x_processed_value
FROM
MTL_SYSTEM_ITEMS_B
WHERE SEGMENT1||'.'||SEGMENT2 = p_scanned_value
AND ORGANIZATION_ID = c_master_org;
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- Check the cross reference table
SELECT SEGMENT1||'.'||SEGMENT2 into x_processed_value
FROM
MTL_CROSS_REFERENCES_B a, MTL_SYSTEM_ITEMS_B b
WHERE a.INVENTORY_ITEM_ID = b.INVENTORY_ITEM_ID
AND a.cross_reference_type = 'Legacy Number'
AND a.CROSS_REFERENCE = p_scanned_value
AND b.ORGANIZATION_ID = c_master_org;
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- Return what was scanned
x_processed_value := p_scanned_value;
WHEN OTHERS THEN
-- Error that is returned to the text field to let the user\ -- know that there was a lookup error.
x_processed_value := 'ERR: CHK X-REF TBL!';
END process_scan;
END INV_PREPROCESS_SCAN;
/
Java Based Custom Scan Manager
-
You can use any IDE to create your CustomScanManager.class, but I used JDeveloper. In order for it to be called the pre-processing scanned input profile must be set to “Yes”. The .class file also needs to be placed in the $CUSTOM_DIRECTORY as specified by your DBA. Most people create a directory in the root of $JAVA_TOP (ex: $JAVA_TOP/xxx/custom). You must have a $CUSTOM_DIRECTORY set up in order for oracle to know where to look for your .class file.
NOTE – Your barcode gun must be setup to prefix the code that matches what is in your mfg.cfg. The default is CTRL+\ so you’ll need to check with your barcode gun manufacturer to add this. Your debug code will show you the below line if your code is being called:
[Tue Sep 02 15:52:10 CDT 2008] (Thread-28) Calling ScanManager.processScan
CustomScanManager
Business case overview: Our client needed the ability to scan an EAN-128 standard barcode (ie. (30)12 (91)XXX1601). (30) is set up as a DFI (Data Field Indicator) for all QTY type text fields and (91) is set up as the ITEM type text field. When the barcode is scanned regardless of what page the end-user is on it will populate either the QTY or the ITEM value. Please note that on most pages you will have to scan the same barcode multiple times depending on how the item & the quantity fields are populated. It doesn’t matter though which one appears first because it’s going to determine what fields are displayed initially when the scan occurs.
package xxx.custom;
import java.util.Vector;
import oracle.apps.mwa.beans.*;
import oracle.apps.mwa.container.FileLogger;
import oracle.apps.mwa.container.Session;
public class CustomScanManager
{
public static boolean isInputableField(FieldBean f)
{
return (f instanceof InputableFieldBean) && ((InputableFieldBean)f).isEditable();
}
public static String processScan(Session curtSession, PageBean curtPage, String val)
{
FileLogger.getSystemLogger().trace("CTM: Preprocessing the scan");
FieldBean curtBean = curtPage.getCurrentFieldBean();
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: curtBean: ").append(curtBean.toString()).toString());
FileLogger.getSystemLogger().trace("xxx: if (isInputableField(curtBean)) {");
if(isInputableField(curtBean))
{
int itemFieldIndex = curtPage.getCurrentFieldIndex();
String scanValue = val;
String itemValue = val;
String vQtyValue = "";
String qtyValue = "";
String curtFieldDFIs[] = null;
String vMyDFI = null;
int intemDFILength = 0;
String curtBeanName = curtBean.getName();
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: Current Field is field: ").append(curtBeanName).toString());
curtFieldDFIs = ((InputableFieldBean)curtBean).getDFIs();
int itemDFILength = 0;
FileLogger.getSystemLogger().trace("xxx: if (curtFieldDFIs != null) {");
FileLogger.getSystemLogger().trace((new StringBuilder()).append("* itemValue: ").append(itemValue).toString());
FileLogger.getSystemLogger().trace("// After stripping the DFI only the first 14 characters");
FileLogger.getSystemLogger().trace("// are for item Process the remaining characters for the");
FileLogger.getSystemLogger().trace("// remaining fields");
FileLogger.getSystemLogger().trace((new StringBuilder()).append("* itemValue.length(): ").append(itemValue.length()).toString());
FileLogger.getSystemLogger().trace((new StringBuilder()).append("* 14 + itemDFILength): ").append(14).append(itemDFILength).toString());
if(itemValue.length() > 7 + itemDFILength)
{
Vector fieldBeanList = curtPage.getFieldBeanList();
int qtyFieldIndex = 0;
int lotNumFieldIndex = 0;
int lotQtyFieldIndex = 0;
FileLogger.getSystemLogger().trace("// Get the index for the other three fields from the");
FileLogger.getSystemLogger().trace("// list of fields");
for(int i = itemFieldIndex; i < fieldBeanList.size(); i++)
{
String name = ((FieldBean)fieldBeanList.elementAt(i)).getName();
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: FieldBean Name: ").append(name).toString());
if(name != null && name.equals("INV.QTY"))
qtyFieldIndex = i;
}
FileLogger.getSystemLogger().trace((new StringBuilder()).append("* qtyFieldIndex: ").append(qtyFieldIndex).toString());
FileLogger.getSystemLogger().trace((new StringBuilder()).append("* lotNumFieldIndex: ").append(lotNumFieldIndex).toString());
FileLogger.getSystemLogger().trace((new StringBuilder()).append("* lotQtyFieldIndex: ").append(lotQtyFieldIndex).toString());
FileLogger.getSystemLogger().trace("// Get the value for the item field");
String remainingValue = itemValue.substring(14 + itemDFILength);
itemValue = itemValue.substring(7, itemValue.length());
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: Item value: ").append(itemValue).toString());
vQtyValue = scanValue.substring(0, 7);
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: vQtyValue: ").append(vQtyValue).toString());
FileLogger.getSystemLogger().trace("// searching qty field so set the value for the quantity");
if(qtyFieldIndex > 0)
{
FileLogger.getSystemLogger().trace("CTM: Found the qty field");
boolean doneQty = false;
String qtyFieldDFIs[] = null;
FieldBean qtyField = (FieldBean)fieldBeanList.elementAt(qtyFieldIndex);
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: qtyField ").append(qtyField).toString());
if(isInputableField(qtyField))
{
qtyFieldDFIs = ((InputableFieldBean)qtyField).getDFIs();
if(qtyFieldDFIs != null)
{
FileLogger.getSystemLogger().trace("CTM: Got the dfi for qty fld");
for(int j = 0; j < qtyFieldDFIs.length; j++)
{
int x = remainingValue.indexOf(qtyFieldDFIs[j]);
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: Item DFI Length: ").append(itemDFILength).toString());
if(x != 0)
continue;
qtyValue = remainingValue.substring(x + qtyFieldDFIs[j].length(), x + qtyFieldDFIs[j].length() + 6);
((InputableFieldBean)qtyField).setValue(qtyValue);
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: Qty value:").append(qtyValue).toString());
if(remainingValue.length() > qtyFieldDFIs[j].length() + 6)
{
doneQty = true;
remainingValue = remainingValue.substring(x + qtyFieldDFIs[j].length() + 6);
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: Remaining value:").append(remainingValue).toString());
} else
{
remainingValue = "";
}
break;
}
}
}
if(doneQty && lotNumFieldIndex > 0)
FileLogger.getSystemLogger().trace("CTM: Found the lot Num field");
}
FieldBean lotNumField = (FieldBean)fieldBeanList.elementAt(lotNumFieldIndex);
((InputableFieldBean)lotNumField).setValue(qtyValue);
String lotNumFieldDFIs[] = null;
if(isInputableField(lotNumField))
{
lotNumFieldDFIs = ((InputableFieldBean)lotNumField).getDFIs();
if(lotNumFieldDFIs != null)
{
for(int j = 0; j < lotNumFieldDFIs.length; j++)
{
int x = remainingValue.indexOf(lotNumFieldDFIs[j]);
if(x == 0)
{
String lotNumValue = remainingValue.substring(x + lotNumFieldDFIs[j].length());
((InputableFieldBean)lotNumField).setValue(lotNumValue);
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: Lot value:").append(lotNumValue).toString());
}
}
}
}
}
if(curtBeanName == "INV.ITEM")
{
itemValue = itemValue;
} else
{
itemValue = vQtyValue;
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: return vQtyValue: ").append(vQtyValue).toString());
itemValue = itemValue.trim();
}
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: return itemValue: ").append(itemValue).toString());
return itemValue;
} else
{
FileLogger.getSystemLogger().trace((new StringBuilder()).append("CTM: return val: ").append(val).toString());
return val;
}
}
public CustomScanManager()
{
}
}
The above is a generic custom Java class that I created based off of Oracles supplied CustomScanManager. I never got it working the way they intended so I modified the code into what I came up with above. The custom scan manager is triggered regardless of what form the scan is initiated on. My Java class will only take into account the QTY, and the iTEM # fields and will need to be modified in order to use other DFIs, but should this should be a fairly simple change.
The DFIs are set up in the AK Developer responsibility within ORACLE. These are the DFIs I set up based on Region ID = INVRESOURCETABLE. You can drill down into the Region Items and you can see that these are set up:
I have already defined the QTY fields that Oracle recommends and set them to DFI=(30) REQ=N and the Item to DFI=(91) REQ=N based off of their barcode they use in EAN-128 format.
Alloc Qty
Deliv Qty
Insp Qty
Avail Qty
…
Split Qty
Ret Qty
Any forms that are not putting QTY or ITEM # in the right place will have to be set up in the INVRESOURCETABLE with the appropriate DFI.
Here is an example that shows the CustomScanManager actually processing a page.
This also shows how you can use the MWA GUI emulator to mimic a barcode scan from the barcode gun.
Pick Confirm example



I hope this document helps you and please note that I may have left out some stuff. I’m just developing this document from memory. The java code could be cleaned up and probably done a lot of different ways as well. Sorry this is so long; I wanted to be as thorough as possible.
If you need consulting help in MSCA/MWA extensions/OAF customizations or any other consulting needs please contact us. You can also visit us at www.luciditycg.com
written by sinipiiro , March 11, 2009
Thanks for your post on this. It has been very helpful to one has little/no knowledge of mobile scanning etc. I posted a message in the forum re customizing the scan of a locator bar code. The bar code has no DFI/AI from what I can tell. Is it possible to reference
the telnet form/locator field in PL/SQL preprocessing scan? If not, do you know of any simple examples of java code that might accomplish this? thanks!!!
written by Bugs , June 17, 2009
Can somebody give me some help on how to use Loftware with Oracle Apps for barcode printing. Any documentation availaible or userguide will be very helpfull.
Thanks
Kaukab
written by jarun , November 04, 2009
>
> Recently for one of our esteemed customers we have moved the Oracle
> Applications 11.5.10 from Old Hardware to a New Hardware a month
> back.The old Hardware was running on RHEL AS3 OS and the new hardware
> is running in RHEL AS4 OS.Post move all the modules seems to be
> working without any issue.Now in the new hardware the MSCA is not
> working as expected there was a customization which we have
> implemented in the CustomScanManager
> .Java.The customization doesnt seem to be working eventhough the path
> where the customScanManager.Class file is present is available in both
> CLASS_PATH as well as the AF_CLASSPATH.The trace file shows as
> xxx.custom.CustomScanManager class not found, but
> OK.java.lang.ClassNotFoundException:
> xxx.custom.CustomScanManager.Kindly let me know how to solve this
> issue as the customer are not able to perform the transact move order
> and the stock taking is planned in couple of days.
>
> Your inputs are highly appreciated.
>
> Thanks in advance.
>
> Regards,
> Arun.
written by Kyle T. , November 05, 2009
Have you turned on logging in the MWA.cfg file? Does it even call the "preprocessing scan" line when you scan your barcode?
Also, you check your $CLASSPATH by doing echo $CLASSPATH. Make sure this is set at the apps tier level and not the database tier.
written by Kyle T. , November 05, 2009
I did notice one thing. It doesn't matter about the $CLASSPATH. It's the $CUSTOM_DIRECTORY that needs to be set in the .env file.
I bet what happened was AUTOCONFIG was ran and never applied the $CUSTOM_DIRECTORY variable.
I have mine set to: $CUSTOM_DIRECTORY/xxx/custom
So the $CUSTOM_DIRECTORY is basically the $JAVA_TOP as well.
Please let me know if this resolves your issue.
written by Kiran Gujjari , March 19, 2010
Where Can I locate oracle provided customScanManager class under $JAVA_TOP?
Thanks,
Kiran
written by Kiran Gujjari , March 23, 2010
Thanks for ur response,..
How does customscanmanager class will be picked up when we do a scan ? we need to make an entry of this class location somewhere?
I need to add some logic to this class(for ex when page is picking page and field is UOM field).
Thanks,
Kiran
written by Kiran Gujjari , March 30, 2010
Thanks for sharing this infomration with me, it helped me a lot.
Regards,
Kiran
written by Kiran Gujjari , April 07, 2010
I have developed CustomScanManager.class and placed it under standard java top $JAVA_TOP/xxx/custom
Mobile server bounced and able to see the changes with out any issue
Now I have moved the file to custom application top $ZBRWMS_TOP/java/jar/xxx/custom
Also we have added the custom path to the $CLASSPATH
CLASSPATH=$ZBRWMS_TOP/java/jar:$CLASSPATH
Mobile services bounced, but from system log file I can see below message
[Wed Apr 07 02:19:48 CDT 2010] (Thread-15) Trying to load custom class xxx.custom.CustomScanManager
[Wed Apr 07 02:19:48 CDT 2010] (Thread-15) xxx.custom.CustomScanManager class not found, but OK.java.lang.ClassNotFoundException: xxx.custom.CustomScanManager
Please suggest what changes to be done for path here.
Thanks,
Kiran
written by Kiran Gujjari , April 14, 2010
Initially I have tested this under $JAVA_TOP/xxx/custom , it worked fine.
I have moved same file to $ZBRWMS_TOP/java/jar/xxx/custom which is custom application top, I am getting ClassNotFoundException error.
DBA has added $ZBRWMS_TOP/java/jar to CLASSPATH, do we need to do any adittional tasks apart from adding path to CLASSPATH?
Thanks,
Kiran
written by Kiran Gujjari , May 10, 2010
How are u ? $CLASSPATH issue has been resolved now.
Please can you clarify on enabling the profile option "MWA: Pre-process scanned input".
Do we need this option to be enabled even on production instance after moving our changes?
In real time users will be doing transactions on hand held devices, so do we need to make the profile value to yes?
Thanks,
Kiran Gujjari
written by amondikar , July 24, 2010
1)Print a Specific extra checkdigit at the endof locator value on locator barcode lable
2) Paste these locator barcodes on bins
3) When the users scan the barcode the custom java class should check the check digt at the end of the barcode
4) The check digit should be compared with value of the check digit stored in locator flexfiled or any other custom table we can maintain
5) if this match the scan should be allowed to be displayed on handheld terminal otherwise an error should be shown.
I know R12 has some capability on check digit but we are on 11.5.10.2 and would like to know if MSCA customization like above can meet the requirement , if in principal this is possible we can then try in detail.
Thanks in advance.
written by Thomas Lee , August 08, 2010
I have done the following steps:
- Setup profile “MWA: Pre-process scanned input” = Yes
- Compile and put CustomScanManager.class to $CUSTOM_DIRECTORY/xxx/custom
- Add $CUSTOM_DIRECTORY to the classpath of the mobile server
After these work done, there is still no log from the CustomScanManager found in port.system.log.
Then I decompile ScanManager.class and add log message in both processScan() and invProcessScan() methods. And then I compile the class and then copy and replace the old one.
When I scan a barcode into the MSCA client on my barcode scanner, only ScanManager.invProcessScan() is called every time but not CustomScanManager.processScan().
Million thanks!
written by Moiz , August 25, 2010
I am currently working on Oracle WMS and MSCA implementation project. One requirement from client is
Single barcode ( 2-d barcode) is having following information in it,
1. Item Code
2 Lot Number
3 UOI (unit of issue)
4 Manufacture Name.
Now, Requirement is, In one barcode scan all above information should be populated onto respective field ( if present ) on current page.
Client does not want to scan four times barcode to populate above information into four different field.
Kindly let me know, how i can achieve this through CustomScanManager preprocessing functionality? Whether it can be achievable or not?
written by Moiz , August 28, 2010
For your response. Let me check and i will get back to you soon.
written by Sarah , September 24, 2010
I am very new to this, i just want to insert one record in database table as soon as scaning completes.
Please help to code this.
Regards,
Sarah
written by Sarah , September 24, 2010
i want it to be done in WMS page, so how to know the object name and field name to trigger my logic.
Regards,
Sarah
written by Sarah , September 24, 2010
written by Sarah , September 29, 2010
When i ran the java file it ened up with errors saying that oracle.apps.mwa.beans doesnot exist.
i set the CLASSPATH to MWA_TOP/java/jar.
Can any body help me on this.
Regards,
Sarah
written by Moiz , October 18, 2010
We have written java code for out of order scanning requirements.
Out of order scanning is working fine on Telnet ( on dektop as well as mobile device). But same is not working on Oracle GUI ( on Desktop and Mobile Device ).
Anybody has any clue? please help me out as it is major requirement for project and very limited time left for deadline.
written by Moiz , October 19, 2010
if you dont want to share your email id in public then just put a test mail to me i will send you lo files.
my email id is :- This e-mail address is being protected from spambots. You need JavaScript enabled to view it '> This e-mail address is being protected from spambots. You need JavaScript enabled to view it
Regards,
Moiz
written by Moiz , October 19, 2010
Sent.
Regards,
Moiz
written by Paras , October 26, 2010
I have done create a xxx.custom.CustomScanManager.class. However, while scanning from GUI client application is executing the InvScanManager.class instead of CustomScanManager.class.
If any body has clue. Thanks in advance
Regards,
Paras
written by Siva Venkat , December 09, 2010
I am new to MSCA, my client requires to scan & segregate the data for any format of Barcode, as it will facilitate them in case if their suppliers change their barcode format or if get new suppliers with new format of barcode.
Is this possible using custom bar code scan?
If not, any workarounds suggested?
Any body's help is highly appreciated.
Thanks
Sivenkat
written by Sunilglahoti , December 09, 2010
Currently i am wokring on WMS implementation project.We have requirement to scan 18 or 19 char barcode to recognize the Oracle internal item during picking process.
We explored the GTIN functionality, but it seems at allows only 14 char. Is is possible to scan a barcode of more than 14 char and then recognize the Oracle internal item.Would appreciate the quick response.
Thanks,
written by Mrigank Sharma , April 05, 2011
Can anyone please help me.
I am getting a strange issue. I am calling custom scan using a java callout. Everythin is in place. The issue is If i process a picking task using Telnet session on my desktop the Custom scan manager is call and i am getting the currect value But if i do the same process using my Handheld device it gives error as unable to load class
"> xxx.custom.CustomScanManager class not found, but
> OK.java.lang.ClassNotFoundException: £
But the problem is in the telnet session using CTRL + and then value is working fine.
Please help...:
written by Mrigank Sharma , April 05, 2011
I had a talk with Vendor who has supplied the Gun. they say that there is no setup to be done for scanning.
I am in two phase right now Oracle tells me that CTRL + simulated the scanning and the GUN vendor says the device just scans and puts the data back from WMS. Telnet session form desktop working fine with simulation so don't think Oracle will support on this point.
Do you have any idea what particular settting has to be done for Barcode Gun.
written by Mrigank Sharma , April 05, 2011
written by Jean Michel , May 09, 2011
is there a way to print bigger messages on screen? We need that when some message appears on screen, the size of this message is big enough to be seen on screen of the barcode scanner. I was wondering if it is also posible just hide all the components and let the message be the only element visible.
I hope you can help me, thanks in advance.
written by MKG , May 23, 2011
I have seen that you was able to successfully comple the "Out Of Order Scanning is working on Telnet but not working on Oracle GUI on desktop as well as mobile device" .I have smiliar requirement ,could you please help me in acheiving the same by providing the steps which you followed .
Regards,MKG
written by Phani , June 03, 2011
Thanks for your post on this,It has been very helpful to one has little/no knowledge of mobile scanning etc.
I am currently working on Oracle WMS and MSCA implementation Project.One requirement from client is
Single barcode is having the following information in it,
1.Item Num,
2.Lot Number
3.UOM
4.Lot Expiry Date
Now, requirement is, in one barcode scan the Item Number (on Pick Load Main Page) and Lot Number(on Pick Detail Page)
information should be populated onto respective fields,client does not want to scan two times barcode to populate above information
into two different fields on different pages.
kindly let me know,how i can achieve this thorugh CustomScanManager preprocessing functionality?whether it can be achievable or not?
Thanks
written by Dave Lesan , June 06, 2011
Example barcode text: |ITM199503|LOT7777|EXP02022011
Translation needed:
Item Number = 199503
Lot Number = 7777
Expiration Date = 02/02/2011
1) Can this be done?
2) Any additional guidance?
3) Other options to consider?
Thanks in advance for your assistance,
Dave Lesan
written by Pathfinder , September 02, 2011
This has been mentioned on another blogpost and it works:
http://applikast.blogspot.com/2011/08/oracle-msca-bar-code-preprocessing.html
written by Phu Tri Nguyen , September 09, 2011
This artical is very useful for us. Currently, our some of our barcodes contain three information: Serial No, then space, then lotcode, then space, then quantity. The delimitter is a space. I've struggle to find a solution to decode the string and this method seems very promising for us. However, I ran into some problems:
1) I set MWA: Pre-process scanned input profile to Yes. Then modified the PL*SQL package just to test the functionality and set x_processed_value variable in the package to some random values. But nothing seems to work. Do I have to restrt the server?
2) Where is mfg.cfg? I can only find mwa.cfg in the $INST_TOP/admin/install directory.
3) You also mentioned that the we must prefix the string with "CTRL+". Does that mean that we have to prefix all the barcodes that we want the system to perform preprocessing? I'm using Motorola MC9090 and cannot find "" character anywhere.
4) We don't want to change our existing barcode to have the prefix, is there any other options?
Thank you for your help.
PhuTri
written by Phu Tri Nguyen , September 13, 2011
I also modified APPS.INV_PREPROCESS_SCAN procedures and still it did not get call at all.
Of course, I set the "MWA: Pre-process scanned input" profile to yes. Bounce the server. What do I do wrong? Please help.
Thank you.
written by Niks , September 22, 2011
I am on a client site implementing MSCA without WMS.
Please answer some basic queries :-
a) The customer wants the Barcodes to be generated at the time when Item/Lot/PO is created.
What tool can we use to generate the Barcodes? Is there any internal Barcode Generation tool by
Oracle. Please let me know any details and documents u have other UG and IG's
b) How does Oracle recognise a particlaur info in the Barcode for MSCA?
Regards,
Nikhil
written by Mothi , June 14, 2012
were you able to figure out what is the ctrl + for motorola symbol 9090?
please reply
thanks,
Mothi
written by krsrasu , October 14, 2012
Could you update what are all the basic functional setup required for MSCA? Do all the items should be loaded in AK repository with DFI code? what are the check list from the functional and technical setup perpective of MSCA?
thanks in advance
written by shailendrasingh , May 10, 2013
i am currently facing an issue with PL/SQL Pre-Processing Scan after scanning the Field in Scanning mode on which we are executing the the SQL code ,after that scanner is not able to scan the next field.
If any body have any idea on this Request you to please share with me .
Regards,
Shailendra








Thanks for such a nice article. I worked in a WMS implementation but partially in setting up rules, barcode label printing. I would like to know about the task management and its setup. Could you help me in a document related to tasks.
Regardsm
Sravan.