MWA Setup
This article will explain to you
a. Where the Mobile Web Apps config files are located
b. MWA Startup and Shutdown Scripts and how those are used
c. Directory Structure for MWA in both 11i and R12
d. How to develop and test your pages
e. Where the log files are created, and tips to debug MWA Applications
Configuration Files
-
mwa.cfg: This file has information about the DBC file location, Log Dir Location, Telnet Port no Location, Error Logging Level etc.
This info will be used by Mobile Applications on runtime. -
default_key.ini: This file is used to map the keys of the mobile device to some specific functionality.
Use the default file if you don’t want to customize anything. -
deviceIP.ini: This file maps the configuration files and host name with the mobile device
MWA server start-up and shutdown:
-
mwactl.sh: This file is used to start/stop the MWA listener on specific port.
Basically, if you develop and deploy a Mobile page into the instance, you have to bounce the MWA server by
stopping and starting the Listener at your port to see your changes.
Start/stopping Listener
Start:
mwactl.sh start
Stop :
mwactl.sh -login stop_force
File Location
Directory Structure in R11
$MWA_TOP/bin
$MWA_TOP/secure
Directory structure in R12
$INST_TOP/admin/scripts
$INST_TOP/admin/install
(eg)In R12, INST_TOP may look like:
/u01/appldev/DEV/inst/apps/DEV_w-oraap01
MWA GUI Client Setup
In order to simulate the Mobile Device on your PC, you have to do the following setup:
Step 1:
Create 2 directories say C:\MWA\lib and C:\MWA\log
Extract the files from the patch 4205328 into C:\MWA\lib
Step 2:
Download jdk1.1.8 from java.sun.com and place it in C:
Step 3:
Create a batch file say Start_MWA.bat with the following contents
set MWA_GUI_TOP=C:\MWA\
set JAVA_TOP=c:\jdk1.1.8
%JAVA_TOP%\bin\java -classpath %JAVA_TOP%\lib\classes.zip;%MWA_GUI_TOP%\lib\j4205328.zip oracle.apps.mwa.awt.client.StartGUI
Step 4:
Whenever you run this batch file, you must be able to see the GUI client for MWA
Development and Deployment:
The development of Mobile Applications can be done using any IDE like JDeveloper, Eclipse etc. After that in order to
test the application, we have to deploy it in the Apps instance say in a directory like $JAVA_TOP/xxx/custom/server.
In order to test it, we should have our own function in AOL. This function should refer to the Function Java Class
name of the Mobile Application
(eg) xxx.custom.server.CustomTestFunction
After doing so, we have to attach this function to submenu and then to the Mobile Navigation Menu
After doing so, your menu entry will come into your mobile application and you can test your new pages
MWA Error Logging and Debugging:
When you develop and test mobile applications, you may need to write some logging information which will be useful in debugging.
There are different levels of Logging that can be set for obtaining more debug information.
The different Log level from highest to lowest is as follows:
-
-
fatal
-
error
-
warning
-
debug
-
trace
-
This logging information can be set using the “mwa.LogLevel” variable in mwa.cfg file.
How to write logging information?
While we code, we can call the APIs to log the information. The methods used for logging can be found in the following Java helper class.
oracle.apps.inv.utilities.server.UtilFns
For example, we can use the following code snippets and based on the log level set, we can find this information from the log files.
UtilFns.trace("#########Trace Level Logs#########");
UtilFns.log("#########Log level logs#########");
UtilFns.error("#####Error Level logs#########");
There are lot of other utility APIs available in this helper class (UtilFns.java) which can be used for various other aspects.
Example code snippet for error logging:
public void fieldEntered(MWAEvent mwaevent)
{
UtilFns.trace("Inside Field Entered");
ses = mwaevent.getSession();
String s = UtilFns.fieldEnterSource(ses);
// Prints the Current Bean's ID
UtilFns.trace("CustomFListener:fieldEntered:fldName = " + s);
}
In the above snippet, we print a message “Inside Field Entered” when the user enters any field in the Mobile Application
Also, we print the name of the field using the line
UtilFns.trace("CustomFListener:fieldEntered:fldName = " + s);
Please note that, the above log messages can be found only when the log level is set to “trace” in mwa.cfg file.
Where to look for log information?
The log files are located under $INST_TOP/logs (in R12).
Mainly we will be using the following log files to see our log files.
All the log files start with Telnet_port_no as a prefix.
Example log files for port no 10240:
[appldev@w-oraap01 logs]$ pwd
/u01/appldev/DEV/inst/apps/DEV_w-oraap01/logs
[appldev@w-oraap01 logs]$ ls -al 10240*
-rw-r--r-- 1 appldev dba 255626 Feb 8 13:28 10240.INV.log
-rw-r--r-- 1 appldev dba 83 Feb 8 13:26 10240.sta
-rw-r--r-- 1 appldev dba 154063 Feb 8 13:50 10240.system.log
-rw-r--r-- 1 appldev dba 3296 Feb 4 11:11 10240.WMS.log
[appldev@w-oraap01 logs]$
All the log information written using the “UtilFns” will be located under .INV.log
All the system level log like page names, parameter passed to PLSQL APIs, LOVs etc can be found under .system.log
Easiest way to look at log files:
Since the volume of information written in the log file is huge, it is tough to go through the entire file.
A simpler way which I used to find the log information is to run the command
tail -f 10240.INV.log
By doing so, you can see the updated log information as and when you click on the fields on mobile application.
Comments
I am a recruiter
I am very much interested in Oracle Apps HRMS FUnctional Module
I did apps learning course from a private institute for Core HR and iRecruitment and OLM
I could get a relative idea on these modules. But when comming to realtime scenario I am feeling it very different
I want to be frank that I am planning to start entering into a consultant level as a fresher
but I dont have those opportunities
A tleast make me thorrow in Oracle Apps with any of the modules Focusing COre HR and Payroll
with real time examples
I have gone through your site and i appreciate that you share your knowledge with others too
And that made me dare to ask your help as I need it
please keep me updated posted to my email id for the first time atleast with a positive response
I will keep in touch
Thanks
Ra ghav
------------- --------------- --------------- --------------- --------------- -------
Hi,
Well date tracking isa feature in Oracle HRMS esp with all tables whose name send with _F eg:per_all_peop le_f .Now what happens here is we cannont purge a record what we can do is endate a record and if we need to create an extension eg: of an assignment then we end-date the assignment and on a new record that is appended to the table we create a new record with starting date after the eend date and can restate the assignment, used in cases of Re-hire after end of assignment or in the extension of assignment beyond the end date. It helps Oracle maintain historical data and hence the tables are data trackable
Thank s a lot for bringing this up.
oracle.app s.inv.utilities .server.UtilFns is a helper class which acts as a helper class for Mobile Application Utility APIs. It has Java wrappers for most of the common functionalities like LPN Generation, getting Lot Qty etc. What I mean here is has lot of other APIs apart from Error Logging
On the other hand,
java.lang.Obj ect
|
--java.io.Write r
|
--java.io.Print Writer
|
--oracle.apps.m wa.container.Lo gger
|
--oracle.apps.m wa.container.Fi leLogger
FileL ogger is dedicated Class for Error Logging.
Am not sure about the place it writes the log messages.It would be great if you provide some information about this.This would definitely give an better idea between the two types of logging.
Thank s and Regards,
Senthi l
Where as FileLogger is concerned it will log the error messaged into port.system.log file. you can user methods like .trace/ .error etc
I am in process of writing a documentation for this. I will publish this in near future.
Thanks and Regards,
Senthi l
becaus e i used UtilFns toooo but never seen it logging anything in INV.log file....
Can you paste the various variables and their values in mwa.cfg file?
Regardin g the profile options MWA: Debug Trace and MWA: Debug Level, I havent used them. May be they are reserved for future. If I get any useful info, I will update you.
Locat ion: FL
Duration: 3-6 months
Job description:
Our company is handling the global implementation of Oracle Applications for a multi-billion dollar European conglomerate. Their Application Systems are managed and we are in need for an Oracle Technical expert to assist in the Installation and Configuration of Oracle Mobile Supply Chain Applications.
This resource should be highly technical with extensive knowledge of the various server, labeling, printer, RF equipment, etc. Start date will be Mid-March and will continue for 3-6 months, possibly more. Some brief, occasional international travel, with expenses paid, may be required from time to time throughout the course of the project. Should be able to set up and configure both the software and the devices used.
Thanks and regards,
Jabast ion
630 928 1800 X 509
My client uses SSH instead of Telnet for security reasons.
We are implementing WMS for them and were asked to deply MWA on SSH.
Do u have any idea whether MWA can be deployed on SSH and Oracle provides support for that?
Thanks & Regards,
Saunak
I feel that as long as your mobile device support connecting to oracle via SSH there should not be any problem. You may need to check with DBA reagrding this. Can you brief a bit about "deloying MWA on SSH"?
Feel free to post any issues.
Thanks and Regards,
Senthi l
Thanks for ur quick response.
Curr enly client is using SSH for remote access to DB and Applications.
T hey are in strong opposition of using Telnet for any purpose.
Since MWA Telnet comes with Oracle WMS/MSCA. But I am not very sure if Oracle provides anything MWA SSH with WMS/MSCA.
Woul d appreciate ur response.
Than ks & Regards,
Saunak
I would suggest you to raise an SR and get this issue clarified with Oracle ... kindly update your findings ...
Thanks and Regards,
Senthi l
The MWA coming with the purchase of WMS/MSCA package from Oracle works with Telnet only and Oracle does provide support for that. To enable the communication SSH secured further configuration is required on the server side with port forwarding feature of SSH. The mobile device should also support SSH client to communicate with the SSH server. Oracle of course does not provide any support for SSH enabled MWA communication.
For further detail on the configuration you can refer the document 302174.1 in metalink.
Than ks & Regards,
Saunak
Thanks for the update.
Cheers ,
Senthil
inv_ui_i tem_lovs.get_it em_lov( );
Please help.
C an you please paste the error message you are getting?
Thank s and Regards,
Senthi l
I am new to Oracle Mobile Web Applications. I deployed the Helloworld Application successfully and can access the Page. But the problem is the Text Field is coming as READ ONLY (NOT EDITABLE).
Als o, I tried to create LOV Page, there also i am facing the following problem:
1) Instead of LOV, i am getting TextBox only.
2) The TextBox also NotEditable.
3) Also the Text Box is coming with the value - >[7m[0m
Please help me out.
Regards.
A.Malar Selvam.
Can you please send the code?
You can also open a new thread in our forum (http://apps2fusion.com/forums/viewforum.php?f=145) where you have options to upload scrrenshots/fil es
Thanks and Regards,
Senthil
We are on Oracle Apps 12.0.4 and need to default some fields values in PickLoad and PickDrop WMS pages. Oracle suggests that MWA Personalization framework option to customize these pages doesnt exists in R12 version 12.0.4.
Please suggest what best way to achieve this fuctionality as we have this in 11i.
Regards,
Vijay.
I heard that MWA personalization framework will be available in 12.1. If you plan to upgrade to 12.1 in near future, you can wait for that. (Of course you may need an official confirmation from Oracle for the same).
With 12.0.4, I beleive the only option would be to extend the std pages and acheive this functionality.
Thanks and Regards,
Senthi l
I am working on wms telnet customizations,
we are facing an issue , we are not able to open any of the custom java forms from the telnet.. Standard forms are working fine ..
for example stage move form which calls xxxStagemove.cl ass is not getting opened and we are able to see the error message in system log
[Tue Jan 20 10:58:27 EST 2009] (Thread-12) Couldn't load given class : oracle.apps.wms .td.server.GEPS StagingMoveFunc tion
java.lang. ClassNotFoundEx ception: oracle.apps.wms .td.server.GEPS StagingMoveFunc tion
But the class file and java file both are in place. This worked fine till now, but suddenly we r facing this issue
Please can input any comments .
Thanks,
Kira n
Can you please check whether the class files have r-w-x permissions?
T hanks and Regards,
Senthi l
Yes all the class files and java files have the 777 permissions, issue got resolved by DBA team.
Root cause for the issue was the environment config file, it was not pointing to the custom top of wms java files at all.
After correcting the file it started working .
Thanks,
Kiran
Nice to hear that your issue got resolved :)
Cheers,
Sen thil
Please explain little about "UtilFns.log"
W hat is LogTrace severity
Where is the log file stored in 11i.
Thanks & Regards
or we can also place it somewhere. If we place it say INV TOP then what classpath needs to be set and what needs to be given fnd_function form at WEB_HTML call.
UtilFns.lo g is used to write logging information for Mobile Applications.
L og Trace is similiar to FND Debug Level ... Which tells how much detailed log is needed.
In 11i, log files are store under $MWA_TOP/logs
F or placing the custom java class files in a different location, kindly speak with Oracle Apps DBA and make the necessary changes.
Hope this helps.
Thanks and Regards,
Senthi l
Here is the necessay info from my article:
"MWA GUI Client Setup
In order to simulate the Mobile Device on your PC, you have to do the following setup:
Step 1:
Create 2 directories say C:\MWA\lib and C:\MWA\log
Extr act the files from the patch 4205328 into C:\MWA\lib
Step 2:
Download jdk1.1.8 from java.sun.com and place it in C:
Step 3:
Create a batch file say Start_MWA.bat with the following contents
set MWA_GUI_TOP=C:\ MWA\
set JAVA_TOP=c:\jdk 1.1.8
JA;VA _TOP%in\java -classpath JA;VA_TOP%\l ib\classes.zip; MW;A_GUI_TOP %\lib\j4205328. zip oracle.apps.mwa .awt.client.Sta rtGUI
Step 4:
Whenever you run this batch file, you must be able to see the GUI client for MWA
"
Hope this helps.
Thanks and Regards,
Senthi l
I have modified a std MWA class (for cycle counting) and put it under oracle.apps.xxi nv.count.server , this directory structure is not under JAVA_TOP/classe s folder rather we have custom top called XXAMW_TOP. So the class files are in $XXAMW_TOP/java /classes/oracle /apps/xxinv/cou nt/server.
I have added $XXAMW_TOP/java /classes to adovars.env and bounced MWA service. still getting class not found exception.
N.B. there is 775 permission on class files from applmgr.
Could you please help me on what am I missing.
Mithu n
I think u need to set the classpath in unix box as well. type echo $CLASSPATH in unix box and see if it has path to your custom
java folder. If not please add that and bounce the server and give a try.
Hope this helps.
Thanks and Regards,
Senthi l
So now I log into unix as applmgr it shows the path in CLASSPATH variable.
For your information, if I ran
javah -v $XXAMW_TOP/java /classes/oracle /apps/xxinv/cou nt/server
It shows that it can load the classes as well.
Regards
Mithun
Can you please check the Java class name refered in the Function in AOL and the Java class in the error log.
Also, please paste the error log as well.
Thanks and Regards,
Senthi l
We did a nice workaround, just wanted to share in this forum, if someone face similar issue in future.
our directory structure are like this.
JAVA_TOP = /s01/apps/applm gr/esbdv001/app s/apps_st/comn/ java/classes
XX AMW_TOP = /s01/apps/applm gr/esbdv001/app s/apps_st/appl/ xxamw/12.0.0 (custom top)
we wanted to keep our custom java class files to $XXAMW_TOP/java /classes/oracle /apps/xxinv
So what we did is created symlink like below
# /s01/apps/applm gr/esbdv001/app s/apps_st/comn/ java/classes/or acle/apps]
# ls -l xxamw
lrwxrwxrw x 1 applmgr ldba 82 Mar 07 20:54 xxamw -> /s01/apps/applm gr/esbdv001/app s/apps_st/appl/ xxamw/12.0.0/java/classes/oracle/apps
# /s01/apps/applm gr/esbdv001/app s/apps_st/comn/ java/classes/or acle/apps]
and now we are giving the path in AOL function as oracle.apps.xxa mw.xxinv.count. server.XxCycleC ountFunction, and it work fine.
Mithun
Cheers,
Senthil
My previous issues of page customization got resolved and am now little comfortable in that. Thanks a ton again for that.
Now i have also got some morework for running the GUI on a RF device which has Windows CE as OS. I am facing problem in finding a JVM for my RF device can u provide me some details in this Area. Is any JVM for mobile device availaible for free.
Thanks
Kaukab
One of the readers of apps2fusion faced similiar issue and he sorted out to be a issue by installing the new tiny jvm CrEme v.4.2.
Hope this helps.
Thanks and Regards,
Senthi l
I have installed the Creme but I am not able to launch GUI.
Can somebody help me on this
Can you please look into the log files and see at wht point it throws the error message?
Thank s and Regards,
Senthi l
Can you please upload the source file and log files?
You can use our forums to upload files
http://apps2fusion.com/forums/viewforum.php?f=145
Thanks and Regards,
Senthi l
we are facing one issue with Handheld device where in not able to launch the GUI.throwing exception like exit code 1 and application is terminating.
OS of the Hand Held Device is Windows CE and installed JVM tinny CrEme
When i check the log file in the server ,showing the Information like below
[Thu Sep 10 16:56:19 EDT 2009] (Thread-44) PH: User null got disconnected...
[Thu Sep 10 16:56:19 EDT 2009] (Thread-44) PH: caught IOException
java.io.IOExce ption: -1 is read from input stream
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.readChar (ProtocolHandle r.java:1387)
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.readChar (ProtocolHandle r.java:1369)
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.readChar (ProtocolHandle r.java:1369)
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.readChar (ProtocolHandle r.java:1369)
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.readChar (ProtocolHandle r.java:1369)
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.readChar (ProtocolHandle r.java:1369)
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.readChar (ProtocolHandle r.java:1369)
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.readChar (ProtocolHandle r.java:1369)
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.enterHig hlight(Protocol Handler.java:20 13)
at oracle.apps.mwa .presentation.t elnet.ProtocolH andler.run(Prot ocolHandler.jav a:733)
[Thu Sep 10 16:56:21 EDT 2009] (Thread-10) ServerManagerLi stener: accept failed, closing socket
[Thu Sep 10 16:56:21 EDT 2009] (Thread-10) ServerManagerLi stener: socket closed, reopening
[Thu Sep 10 16:56:21 EDT 2009] (Thread-10) ServerManagerLi stener: socket reopened
Tried many ways but no sucess and comming to you if you have any solution for this
Pls help
Thanks
Sa tish.p
Do you face the same issue when you try to connect using Telnet or GUI client from your PC?
Please post your queries in our forum for wider audience
http://apps2fusion.com/forums/viewforum.php?f=145
Thanks and Regards,
Senthi l
I find your blog very informative. We have been using character based MWA on CK31 guns for years, now I am trying to install GUI MWA on these guns. I have installed crEme on CK31, and have installed GUI MWA on this guns. When we had character based MWA, we could scan the barcodes on CK31. Now that I have installed GUI, we can scan the barcodes, but when we use "TAB" or "ENTER" key, the scanned value disappears from the field.Not sure why this is happening. Is this a setup issue? Is there any guidance you can provide?
Thanks ,
Toral
I would recommend you to post this issue on our forum to get wider audience
http://apps2fusion.com/forums/viewforum.php?f=145
Thanks and Regards,
Senthi l
If we set the value of variable mwa.LogLevel=de bug , then what all debug messages we would be able to see?.
As You have mentioned that for different type of log levels, we need to provide different type of messages in the code like :
UtilFns.trace ("#########Trac e Level Logs#########") ;
UtilFns.log(" #########Log level logs#########") ;
UtilFns.error ("#####Error Level logs#########") ;
As we dont have any debug method in UtilFns class, so how this DEBUG log level behaves?
Thank s in Advance,
Thank s and Regards,
Abhish ek.
Am not sure of the behavior. I have to test it myself and get back to you.
Thanks and Regards,
Senthi l
Whil e starting the MWA server i am getting the following error in 12.1.1
Unable to determine MWA_TOP
Please make sure that MWA_TOP is defined...
How to define the MWA_TOP please guide...
Regar ds
Rajeev
If you are trying to start GUI version, you may have to put the following in a batch file and run it
set MWA_GUI_TOP=e:\ mwagui
set JAVA_TOP=e:\jdk 1.1.8
JA;VA_ TOP%in\java -classpath JA;VA_TOP%\l ib\classes.zip; MW;A_GUI_TOP %\lib\j4205328. zip oracle.apps.mwa .awt.client.Sta rtGUI
Where 'e:\mwagui' is the place where i have extracted the GUI patch.
hope this helps.
Thanks and Regards,
Senthi l
I am very new to this... Can u please give me an example to set $MWA_TOP
Thank s.... Rajeev...
There are some environmental variables set up when you login into Apps server. This is associated with user profile and normally done by Apps DBAs.
Can you explain me how you are trying to launch the MWA server and what are you trying to acheive?
Thank s and Regards,
Senthi l
I have done the EBS 12.1.1 successfully and its running and i know there has to be some env to be set in /home/oracle/.b ash_profile (Correct me if i am wrong). But i don't know how to do this. And i couldn't find any notes on post installation.
Could you please guide me on this...
I am trying to start MWA server using mwactl.sh start 10206 (10208,10210) and the dispacther (10803) using the startup script (782162.1 note in metalink)
Rega rds
Rajeev
Unfort unately I am not expert on that.
The MWA_TOP should be some thing similar to /u15/appsr12/ap ps_st/appl/mwa/ 12.0.0
to set MWA_TOP, you can execute follwoing commands on Unix box
MWA_TOP=/u 15/appsr12/apps _st/appl/mwa/12 .0.0
export MWA_TOP
Hope this helps.
Thanks and Regards,
Senthi l
Tha nks for the guidance Senthil.... I have set up the env variables in /home//.bash_pr ofile... Just including it here for the benefit of others... Once its done i have sourced the .bash_profile. Then i have sourced the "..env" file from APPL_TOP
And i have started mwactl.sh for all telnet ports but while starting the start_dispatche r its giving me the following error. Requested your advise
MWA Telnet Server Release: 1.0.8.4 [December 12th 2002]
/u02/orac le/orawms/apps/ apps_st/appl/mw a/12.0.0/bin/MW ADIS: error while loading shared libraries: libclntsh.so.10 .1: cannot open shared object file: No such file or directory
ENV Config in .bash_profile
= =============== ==
AD_TOP=/u02/ oracle//apps/ap ps_st/appl/ad/1 2.0.0; export AD_TOP
APPL_TOP =/u02/oracle//a pps/apps_st/app l; export APPL_TOP
COMMON _TOP=/u02/oracl e//apps/apps_st /comn; export COMMON_TOP
ORAC LE_HOME=/u02/or acle//apps/tech _st/10.1.2; export ORACLE_HOME
iAS _ORACLE_HOME=/u 02/oracle//apps /tech_st/10.1.3 ; export iAS_ORACLE_HOME
MWA_TOP=/u02/o racle//apps/app s_st/appl/mwa/1 2.0.0; export MWA_TOP
INST_TOP=/u02/ oracle//inst/ap ps/orawms_ebizs aasdb; export INST_TOP
OA_HTM L=/u02/oracle// apps/apps_st/co mn/webapps/oaco re/html; export OA_HTML
JAVA_TO P=/u02/oracle// apps/apps_st/co mn/java/classes ; export JAVA_TOP
JAVA_B ASE=/u02/oracle //apps/apps_st/ comn/java; export JAVA_BASE
PAT H=$PATH:$HOME/b in:/u02/oracle/ orawms/apps/tec h_st/10.1.2/jdk /jre/lib/i386:/ u02/oracle/oraw ms/apps/tech_st /10.1.2/jdk/jre /lib/i386/serve r:/u02/oracle/o rawms/apps/tech _st/10.1.2/jdk/ jre/lib/i386/na tive_threads:/u 02/oracle/orawm s/apps/tech_st/ 10.1.2/lib
exp ort PATH
========== ========
Do you get the same error when you try to connect via the GUI version?
Thank s and Regards,
Senthi l
Firstly, thank you for this immensely helpful writeup on MWA. The follow-up questions and their answers have also been as useful.
I have a requirement where I need to make the same change across several MWA screens. Basically, I need to make one field non-updateable. I was wondering if there is any central place (like say CUSTOM.pll in D2K Forms) where I can make this change instead of changing several java files.
Thanks in advance.
Regard s
-Girish
I am afraid there is no such feature available. If MWA Personalization is avaliable for your version of Oracle Apps, you can use that on individual pages. This saves you from programming.
T hanks and Regards,
Senthi l
Your article is very helpful. I tried to perform the same steps and when I access the Mobile test menu it get a message saying connection closed and the program exits. Is there anything that I am missing here.
Regards,
Girish Narne
Can you please look into the error log files and see where exactly it errors out?
Thanks and Regards,
Senthi l
I figured out the error and I am able to run the test page successfully. I have developed a custom page with couple of fields and thats working fine. My requirement is that when ever user opens the page if the Organization ID is null then it should prompt for org selection and after selection should continue to the page. Could you please provide some guidance on how to achieve this. Is there any standard page which we can call.
One more issue I have is based on your article I tried to locate the System.info log file to see the trace messages but could not find the file on the server. I am working R12 12.0.4 instance.
Than ks for your help.
Regards,
Girish.
Can you please say in which location are you looking? Are you able to look .INV.log file?
|n R12, Change arganization is a inbuilt feature.
Hope this helps.
Thanks and Regards.
Senthi l
I am looking for the log files in $INST_TOP/logs and this is directory given in the mwa.cfg file. I have the log level to trace but no files are seen in the directory both on application server and database server. Regarding the change organization, I have built a custom page and whenever the user directly navigates to the custom page system is not prompting to choose inventory organization. I would like to prompt the user to choose the organization if not already done. Is there a way to do this.
Thanks and Regards,
Girish .
Please make sure that you bounce the MWA server after you change the log level.
I am sure the log files are generated even without any info. Am not sure whether you look into right directory structure.
Fol low the same logic which is applied for prompting the Org name for Oracle std pages. You can acheive the same functionality.
Cheers,
Senthi l
Could you please give sample code to prompt for Org if you have any.
Thanks,
G irish.
public CustomOrgFuncti on() {
check_org = "";
setMenuConfirmM essage("US-Go to menu?");
mValidate = true;
}
public CustomOrgFuncti on(boolean flag) {
check_org = "";
setMenuConfirmM essage("US-Go to menu?");
mValidate = flag;
}
public void appEntered(MWAE vent mwaevent) throws AbortHandlerExc eption,
InterruptedHand lerException,
DefaultOnlyHand lerException {
Session session = mwaevent.getSes sion();
UtilFns.mLog = session.getLogg er();
setMenuConfirmM essage(UtilFns. getMessage(sess ion, "INV",
"INV_MWA_MENU_C ONF"));
if (session.getObj ect("ORGID") == null) {
session.putObje ct("MWA_FIRSTPA GENAME", m_firstPageName );
if (mValidate)
m_firstPageName =
"oracle.apps.in v.utilities.ser ver.ValidateOrg Page";
else
m_firstPageName =
"oracle.apps.in v.utilities.ser ver.InvOrganiza tionPageBean";
} else if (!check_org.equ als((String)ses sion.getValue(" ORGID")) &&
mValidate) {
check_org = (String)session .getValue("ORGI D");
Connection connection = session.getConn ection();
UtilFns.setOrgP arameters(sessi on);
UtilFns.setOrgC ontext(session) ;
AppsContext appscontext =
(AppsContext)(A ppsContext)sess ion.getObject(" CTX");
AppsProfileStor e appsprofilestor e =
(AppsProfileStor e)appscontext.getProfileStore();
boolean flag =
appsprofilestor e.setProfile("MFG_ORGANIZATION_ID", (String)ses sion.getObject( "ORGID"));
if (UtilFns.isTrac eOn)
UtilFns.trace(( new StringBuilder() ).append("OrgFu nction: AppEntered - MFG_ORGANIZATIO N_ID's value set ? ").append(flag) .toString());
String s =
(new Long(UtilFns.ge tSystemDate(con nection).getTim e())).toString( );
try {
String as[] =
{ "p_org_id", "p_transaction_ date", "x_period_id" };
String as1[] = { "I", "I", "O" };
String as2[] = { "N", "T", "N" };
String as3[] = { (String)session .getValue("ORGI D"), s };
Hashtable hashtable =
UtilFns.Process API(connection, "INV_INV_LOVS.t datechk", as,
as1, as2, as3);
String s1 = (String)hashtab le.get("x_perio d_id");
if (s1.equals("0") || s1.equals("-1") ) {
session.setStat usMessage(UtilF ns.getMessage(s ession, "INV",
"INV_NO_OPEN_PE RIOD"));
m_firstPageName =
"oracle.apps.in v.utilities.ser ver.ValidateOrg Page";
session.setRefr eshScreen(true) ;
} else if (UtilFns.isTrac eOn)
UtilFns.trace(" VALID PERIOD CHECK SUCCESS");
} catch (SQLException sqlexception) {
throw new AbortHandlerExc eption();
}
}
}
public void appExited(MWAEv ent mwaevent) throws AbortHandlerExc eption,
InterruptedHand lerException,
DefaultOnlyHand lerException {
}
public static String check_org;
private boolean mValidate;
}
Thanks for sharing the sample code.
Regards,
Girish
I have built a custom wms page with 4 fields in it. I have also added LOV's to the field using the plsql package ref cursor method. Everything is working fine except that the field navigations are not working properly. When ever a valid value is entered in the field and I tab from that field the LOV still pops up. Is there any handling that needs to be done in the field exited method. Thanks for your continuous support.
Regar ds,
Girish.
If you have the setValidateFrom LOV API to true for LOV, it will still popup and force you to select from the list of values.
Hope this helps.
Thanks and Regards,
Senthi l
Currently the setValidateFrom LOV is set to true and the lov pops up even if valid value is entered in the field. If I set the value to false then system will allow user to enter invalid values also which I dont want to happen. Is there any other way to handle this.
Thanks,
Girish.
I would like to share some information that I have gained while developing custom wms pages.
If we want to use setValidateFrom LOV(true) and still don't want the system to popup the LOV whenever a valid value is entered into the field, it can be done as below. I have taken an example of LPN field.
Step 1: Have the package procedure like below
CREATE OR REPLACE package APPS.XX_LOVS AS
PROCEDURE GET_LPN_LOV (x_lpn_no OUT NOCOPY t_ref_csr,p_lpn _no VARCHAR2);
END XX_LOVS;
CREAT E OR REPLACE package body APPS.XX_LOVS AS
PROCEDURE GET_LPN_LOV (x_lpn_no OUT NOCOPY t_ref_csr,p_lpn _no VARCHAR2)
IS
BE GIN
OPEN x_lpn_no FOR
select license_plate_n umber
from wms_license_pla te_numbers
WHER E license_plate_n umber like p_lpn_no;
EXCE PTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT _LINE('ERROR IN LPN LOV '|| SQLERRM);
END GET_LPN_LOV;
EN D XX_LOVS;
Step 2: Create the LOV field and set the properties as below.
mLPNNum = new LOVFieldBean();
mLPNNum.setName ("XX.LPNNUMBER" );
mLPNNum.setlovS tatement("XX_LO VS.GET_LPN_LOV" );
mLPNNum.setInpu tParameterTypes (new String[] { "C", "S" });
mLPNNum.setSubf ieldDisplays(ne w boolean[] { true });
mLPNNum.setSubf ieldPrompts(new String[] { "LPN Lov" });
mLPNNum.setInpu tParameters(new String[] {" ", "xxcus.oracle.a pps.mwa.server. xxCustomPage.XX .LPNNUMBER" });
mLPNNum.setValidateFrom LOV(true);
mLPNNum.setRequ ired(true);
H ope this helps.
Regards ,
Girish.
C heers,
Senthil
I want to add Cancel button to my custom wms page. I have used the below code, but the cursor does not come out of the required fields when I want to click the Cancel Button. I have also noticed that on the Standard pages whenever the cursor is moved to the Cancel Button the cursor icon changes which is not happening in my page. Please let me know if you have any solution for this.
mCancelBtn = new TdButton("XX.CA NCEL", "|END_OF_TRANSA CTION|");
mCancelBtn.setP rompt("Cancel") ;
mCancelBtn.setH idden(false);
mCancelBtn.setE nableAccelerato rKey(true);
addFieldBean(mC ancelBtn);
Reg ards,
Girish.
Looks like you are using the Std Class TdButton to create a button. Did u try with ButtonFieldBean ?
Here is a sample code snippet for Cancel - Field Exit event.
public void exitExited(MWAE vent mwaevent) throws AbortHandlerExc eption,
InterruptedHand lerException,
DefaultOnlyHand lerException {
UtilFns.trace(" Exit Pressed");
if (mwaevent.getAc tion().equals(" MWA_SUBMIT")) {
try {
if (mwaevent.getAc tion().equals(" MWA_SUBMIT")) {
mwaevent.getSes sion().setStatu sMessage(UtilFn s.getMessage(mw aevent.getSessi on(),
"WMS",
"WMS_TXN_CANCEL "));
pg.getExitBtn() .setNextPageNam e("|END_OF_TRAN SACTION|");
}
} catch (Exception e) {
UtilFns.error(" Error !!" + e.toString());
}
}
}
Thanks and Regards,
Senthi l
Thanks for the code. I was able to get my button to work with the TdButton. I am working customizing a standard page to hide a field. When I decode and see some of the standard pages WMAUtil.log is being used to log messsages which do not appear on the log file. Do you have any idea to enable this logging and where can I see the messages written using WMAUtil.log. Do you have any mail id where I can reach you.
Thanks,
G irish.
Am not sure of the WMAUtil Class .. may be we have to look into the source code and find out where it is writing into?
Thanks and Regards,
Senthi l
can you please tell me which version of jdevloper suppor MSCA/MWA framework
thanks &ragards
shaile ndra
It is not mandatory that you have to use Jdeveloper for MSCA. You can use any IDE as long as your Oracle Instance techstack compiiles your java source.
Hope this helps.
Thanks and Regards,
Senthi l
i have started my career in Oracle Apps
i am new to learn developing Reports
i hope that u peaple can help me
REP-1320:Pr ogram unit 'cf_5formula're ferences column with invalid ID:33
REP-1320: Program unit 'cf_5formula're ferences column with invalid ID:30
REP-1320: Program unit 'cf_5formula're ferences column with invalid ID:31
REP-1320: Program unit 'cf_5formula're ferences column with invalid ID:32
i am getting above err while i am running my report
in cf_5formula column i have pass the values to placeholder columns
Pls advise me what to do?
I am waiting for ur reply
Thanks in Advance
latha
How do I force the Org Code page before my custom page start?
Thank
If your Oracle Apps Implementation has MOAC implemented, it should popup for the first time when you log in. OrgFunction.jav a will have the logic to deal with it. Check the class oracle.apps.inv .utilities.serv er.ValidateOrgP age for more info.
Hope this helps.
Thanks and Regards,
Senthi l
This code does the job. Thank you
PhuTri
// get inventory org
Session oSession = mwaevent.getSes sion();
UtilFns.mLog = oSession.getLog ger();
setMenuConfirmM essage(UtilFns. getMessage(oSes sion, "INV", "INV_MWA_MENU_C ONF"));
if (oSession.getOb ject("ORGID") == null) {
oSession.putObj ect("MWA_FIRSTP AGENAME", m_firstPageName );
m_firstPageName = "oracle.apps.in v.utilities.ser ver.InvOrganiza tionPageBean";
}
We want to take trace of a seeded MWA form 'Mobile Pick Load - Mobile WMS Manual Picking'. The seeded java has following code :
if(UtilFns.is TraceOn)
UtilFns.trace(" TD: TaskSignonPage - Could not create savepoint");
We changed the degug level in mwa.cfg file to 'trace'. but the condition if(UtilFns.isTr aceOn) results in false and hence not able to get the trace file.
Please suggest how can i make this condition to be true.
Please help me on this.
Thananks :
Omkar
We want to take trace of a seeded MWA form 'Mobile Pick Load - Mobile WMS Manual Picking'. The seeded java has following code :
if(UtilFns.is TraceOn)
UtilFns.trace(" TD: TaskSignonPage - Could not create savepoint");
We changed the degug level in mwa.cfg file to 'trace'. but the condition if(UtilFns.isTr aceOn) results in false and hence not able to get the trace file.
Please suggest how can i make this condition to be true.
Please help me on this.
Thananks :
Omkar
I am just confused!! may be its because it is Friday :) ... If you make the set the debug level = trace, how come if(UtilFns.isTr aceOn) will be false?
Did you bounce the server after changing the trace level?
Kindly Clarify.
Thank s and Regards,
Senthi l
Thank s for your quick reply.
I just verified that the DBAs have not updated the mwa.cfg file yet.
But, according to you, if(UtilFns.isTr aceOn) will be true when we set the debug level to 'trace' rgt?
Also please confirm that, updating the cfg file is only option we have for changing the debug level.
Our DBAs are not comfortable changing the mwa.cfg file.
Do you foresee any potential dangers of updating this trace in production as well?
Thanks
Omkar
Updating trace level in production will lead to huge log files .... production system might run out of space !!... u might grab the log file and disable the logging ...
Hope this helps.
Thanks and Regards,
Senthi l
That helps a lot..
Thanks.
Omkar Lathkar
I have done the MWA setup in the PC.Its workig fine.Same thing I want to setup in the Windows Mobile 6.5 version.How we can do this.Please help me this.I am very eager to do this.I am Mobile Developer.
I have done in computer(PC)usi ng this
http://apps2fusion.com/at/43-ss/225-mwa-setup-testing-error-logging-and-debugging
I am looking forward your reply.
Please Help me
Regrads;
P iraba
set MWA_GUI_TOP = \JavaFX
set JAVA_TOP = \JavaFX\JavaFX. exe
JA;VA_TO P%in\java -classpath JA;VA_TOP%\l ib\classes.zip; MW;A_GUI_TOP %\lib\j4205328. zip oracle.apps.mwa .awt.client.Sta rtGUI
Which format will support. I tried with .cmd/.bat/.nt , but not working in the window mobile:
Its say "There is no application to run associated with MYWMA. Run first...."
Ple ase tell me what is the format we need to store. & I installed java called JAVAFX fro windows mobile 6.5.Please guide me this...
That is:
\Windows\CrEme in\CrEme.exe -Of -tiny -classpath \Windows\CrEme\ lib\AWTclasses. zip;\XONTMWA\li b\j4205328.zip oracle.apps.mwa .awt.client.Sta rtGUI
I saved MYMWA.cmd file after create this file & when I run on command file. i got error.
Please tell me ;;;
Help please
Its working fine with Windows Mobile :
Command is :
\Windows\CrEme in\CrEme.exe -Of -classpath \Windows\CrEme\ lib\AWTclasses. zip;\XONTMWA\li b\j4205328.zip oracle.apps.mwa .awt.client.Sta rtGUI
Wrong with -tiny.
Thanks You very much.
Regrads;
Piraba
How about JavaFX with a working .lnk file for the command file?
Thanks,
-Vince
I am new to MSCA and had went through your article and just started Desktop Mobile GUI. Host Name and Port will be my app server details rt?. I was also wandering about MWA server. Can you please provide more info on MWA Server. Is there any additional Hardware /setups/configu rations changes required (apart from mwactl.sh) on the apps server ?
Thanks in Advance
I am getting Nullpointer exception when trying to execute a package. Code errors out at cstmt.execute() ; step.
Logs are set at Error level. Below is the log from portno.inv.log file.
I have tried MWA listner recycle but tht does not resolve the issue.
Can you please let me know what can be the issue ?
logs
[Tue Jan 24 04:34:40 EST 2012] (Thread-16) ......6
[Tue Jan 24 04:34:40 EST 2012] (Thread-16) CATCH ERR = java.lang.NullP ointerException
[Tue Jan 24 04:34:40 EST 2012] (Thread-16) Error in callable statement null
public void print(MWAEvent mwaevent, TextFieldBean mTextBean) throws AbortHandlerExc eption
{
String strRequestId="0 ";
CallableStateme nt cstmt = null;
Session csession = mwaevent.getSes sion();
Connection con = csession.getCon nection();
try
{
cstmt = con.prepareCall (" {call XXXX_ASN_MOBILE _PKG.XXXX_SUBMI T_ASN_PRC(?,?)} ");
cstmt.setString (1,mTextBean.ge tValue());
cstmt.registerO utParameter(2,T ypes.VARCHAR);
UtilFns.error(" ......6");
cstmt.execute() ;
UtilFns.error(" ......7");
strRequestId = cstmt.getString ("p_request_id" ); // get output parameter
UtilFns.error(" ......8");
}catch (Exception e)
{
strRequestId="0 ";
e.printStackTra ce();
UtilFns.error(" CATCH ERR = " + e.getStackTrace () );
UtilFns.error(" Error in callable statement "+e.getMessage( ));
}
Thanks,
Bhavi n
DBA provided me activity logs which had detailed error message . I searched the error at metalink and found it occurs is some JDBC version.
Issue resolution - Removed curly braces in package call
Original code
cstmt = con.prepareCall (" { call XXXX_ASN_MOBILE _PKG.XXXX_SUBMI T_ASN_PRC(?,?) } ");
New code
cstmt = con.prepareCall (" call XXXX_ASN_MOBILE _PKG.XXXX_SUBMI T_ASN_PRC(?,?) ");
Metalink -
https://support.oracle.com/CSP/ui/flash.html#tab=KBHome(page=KBHome&id=()),(page=KBNavigator&id=(viewingMode=1143&bmDocTitle=NullPointerException or SQLException: ORA-00900: invalid SQL statement&bmDoc Type=PROBLEM&bm DocDsrc=KB&bmDo cID=293607.1&fr om=BOOKMARK))
I have created extension to alias receipt form, I have complied and deployed to custom top. But non of the changes are visible after I started the adapcctl.sh. Please help me on deployment procedure. Do we need to change the existing form function from Java top to custom top.
such detailed about my problem. You are amazing!
Thanks!
hours nowadays, yet I by no means found any fascinating article like yours.
It's lovely value enough for me. Personally, if all web owners and bloggers made good content
material as you probably did, the web can be much more useful than ever before.
wondering if you knew where I could get a captcha
plugin for my comment form? I'm using the same blog platform
as yours and I'm having problems finding one? Thanks a lot!
That is the very first time I frequented your web page and to this point?
I amazed with the research you made to make this
particular put up incredible. Excellent task!
de colores, realizada por cientos de niños, mientras que en el fondo se escuchaba la consigna "Viva la República Popular China".
Podemos hablar hasta de centros de mesas creados con globos y es que los globos le dan alegría a una
fiesta. Podemos personalizarte desde una decoración insólita para equipar tu escritorio,
hasta un accesorio de marroquinería que te acompañe a todas tus citas o un cojín personalizado con la
foto de tu perro o tu bonita familia, ¡ Podemos fabricarlos además en cartón o en noble
madera impresa. También puedes adquirir lienzos personalizados (sin bastidor), enmarcaciones en aluminio o madera, pósters
personalizados, fotos en madera, fotos en metacrilato, fotos en aluminio, fotos en cartón pluma, lonas publicitarias y otros productos originales como estores
personalizados, placas de metacrilato, biombos personalizados, roll
ups y otros productos para decoración. Confeccionamos todo tipo de regalos, con una enorme variedad que alcanza hasta unos 500 productos diferentes, a partir de las fotos y textos
que nos faciliten nuestros clientes. Sus piezas realistas y minifiguras, entre las que encontrarás al insustituible Luke
Skywalker, trasladará a todos los jugadores a las batallas galácticas
más importantes.
Whenever I take a look at your blog in Safari,
it looks fine however, if opening in Internet Explorer, it has some overlapping
issues. I merely wanted to give you a quick heads up! Other than that, wonderful
website!
what can I say… I procrastinate a lot and don't seem to
get anything done.
Keep up the superb works guys I've incorporated you guys to my personal blogroll.
site, and your views are nice in favor of new visitors.
I'm impressed! Extremely useful info specifically the last part :
) I deal with such information much. I used to be looking
for this certain information for a long time. Thanks and best of luck.
Search Engine Optimization? I'm trying to get my blog to
rank for some targeted keywords but I'm not seeing very good success.
If you know of any please share. Appreciate it!
useful facts to us, keep it up.
how can i subscribe for a blog website? The account aided me a acceptable deal.
I had been tiny bit acquainted of this your broadcast offered bright
clear idea
You have ended my four day lengthy hunt! God Bless
you man. Have a great day. Bye
time due to this wonderful read!! I definitely appreciated every bit of it and i also have you book marked to see new information in your website.
nice written and come with approximately all vital infos.
I'd like to see more posts like this .
you make running a blog look easy. The full glance of your website is excellent, let
alone the content material!
stuff prior to and you are simply too magnificent.
I really like what you've got here, really like
what you are saying and the way wherein you are saying it.
You're making it entertaining and you still take care of to stay it sensible.
I can not wait to learn far more from you. This is really a great web site.
of his web site, because here every data is quality based information.
read everthing at alone place.
Visit my blog; school ict suites: https://www.brookhouseuk.com/ict-suites/
now not actually a lot more smartly-liked than you might be now.
You're so intelligent. You realize thus significantly in the case of this topic, produced me personally believe it from a lot of numerous angles.
Its like men and women aren't interested until
it's one thing to do with Woman gaga! Your own stuffs nice.
Always deal with it up!
I do believe that you need to write more about this topic, it might not be a taboo matter but typically people do not speak about these
subjects. To the next! All the best!!
the other eхperts of this sectⲟr don't understand thіs.
Yoս should proceed your writіng. I am sure, you've a great readers'
base already!
Feel free too visait my web blog stairweⅼl ligһting: https://www.lumination.co.uk/Stairwell-Vault-Lights
be really something which I feel I would by no means understand.
It sort of feels too complicated and extremely extensive for me.
I am looking ahead on your subsequent post, I will attempt to
get the hang of it!
as well..
this paragraph, in my view its actually awesome
in favor of me.
I've loaded your blog in 3 completely different browsers and I
must say this blog loads a lot quicker then most. Can you suggest a good hosting provider at a fair price?
Many thanks, I appreciate it!
earlier technologies, it's remarkable article.
it. Look advanced to more added agreeable from you! By the way, how can we communicate?
you may be thinking of where to find Arroyo Alto Prep. This article will give you information about Irvington, Irvington and Bellarmine.
These schools are known for their academic excellence But what about the riding experience?
Are you looking for an adventure?
Prep for Sacred Heart
Arroyo Grande was swept by Sacred Heart Prep in Arroyo
in the nonleague girls' water polo match. Ashley Penner
scored two goals and assisted with three more. The Sacred Heart Prep girls water
soccer team will play St. Ignatius in a WCAL match on Wednesday.
In the previous match, SHP defeated Arroyo Grande
7-5 in the St. Francis Invitational.
Irvington
The Arroyo Alto neighborhood is a ideal place
to buy a home. This stunning home is views of the lake that are protected and a fantastic layout.
The living space is equipped with an open fireplace with gas, a boveda brick ceiling, a
pantry and an open-plan. The kitchen has stainless steel appliances and sliding glass doors that open to
a covered patio for indoor/outdoor living. The master bedroom features an ample walk-in closet and
its own patio with a covered area.
El Modena
El Modena High School is a California Distinguished School that opened its doors in 1966.
It has been serving East Orange for almost four decades.
It has graduated close to ten thousand students and the
alumni share a common bond. Here are five common memories of the
El Modena experience. Read on to learn more.
These are the most common comments we hear from
students regarding El Modena High School.
Bellarmine
In 1928, Bellarmine changed its name to the more contemporary "Bellarmine College Preparatory." The school was named in honor of the Jesuit of the sixteenth century, Robert Cardinal, who was
a canonized saint. The school's colors changed from white and
red Santa Clara to blue, which are the colors
of Saint Mary. The school's athletic program is listed among the top 10 in California.
Villa Park
In the year 1860, Villa Park was known as Mountain View and the Post Office refused to deliver mail to the area.
The town was roughly the same size as Anaheim and Orange in 1880.
Buggies and horses were the commonplace. Numerous orchards were discovered mostly of walnuts, grapes and citrus.
It was also the home of the first Miss Villa Park, Millicent Strahan.
St. Ignatius
Since 1886, St. Ignatius Catholic Jesuit high school has been helping to shape future leaders
through outstanding academics and athletics. Its commitment to academics and
faith is evident in the school's culture. Along with the academics, St.
Ignatius offers a variety of opportunities for students to improve
their education, such as the Summer Enrichment Program.
The athletics program offers young men in eighth grade a rich opportunity to learn more
about the game and their peers.
this site. I am hoping to view the same high-grade content by
you in the future as well. In truth, your creative writing abilities has motivated me to get my own website now ;)
and i own a similar one and i wwas just wondering
if you get a loot of spam responses? If so how do you
reduce it, any plugin or anything you can advise?
I get so mսch lately it's driving me insane so any assіѕtance is very much
appreciated.
My blog ρost; blocked drains hayes: https://hayes-drains.co.uk/
happy that you just shared this helpful info wwitһ us.
Please stay us upp tο date like this. Thank ʏou for sharing.
Look into myy homepаgе drainagе aylеsbury: https://aylesbury-drains.co.uk/drainage-aylesbury/
your websіte. Do you ever run into any browѕer compatibility problems?
A few of mmy blog readers hаve compⅼained about my website not working correctly
in Explorer but looks great in Opera. Do you have any tips to helρ fix tuis
problem?
Feel free to visit my site: blocked drains tгing: https://aylesbury-drains.co.uk/blocked-drains-tring/
good understanding yet.
RSS feed for comments to this post