Difference Smart Sync - Generic Sync
Hi all,
sorry for this simple and maybe stupid question, but I am a newbie in this topic. Can anybody tell me the differnce between generic sync and smart sync and when do i have to use them? Can they be used mixed or only one of them?
Thanks in advance for getting light in my darkness.
Michael
hello Michael,
On the client-side's view:
GenericSync is a lower layer that is responsible for data transport, connection and configuration updates.
SmartSync is another layer working on top of the GenericSync. In other words, SmartSync layer is just a GenericSync application that offers a wide-variety of features thru the SmartSync apis.
Yes you could mix GenericSync and SmartSync features in your application.
regards
jo
Similar Messages
-
How to see the data in data containers when working on Generic Sync ?
Hi All,
I am working on Mobile Sales For HandHeld Generic Sync based application. To check the data transafer from Mi Client > MI server> CRM backend, we are using Generic Sync Queue Monitor in NWA. But how to check the actual dara in data containers showed on the monitor? Any specific transaction ( e.g. merep_mon for smart sync) to chk the same?
Thanks & regards,
Rucha AtreHi,
This is a tedious process of viewing the data in the containers since there is no tool to monitor the same. The data sent from the client is stored MESYHEAD and MESYBODY. Once the entire processing is completed then the entries from this table is deleted. If the processing has failed or not taken place then the entries will in this table.
Data Containers will name value pairs with field name and data in the data field. This table will also contain data from smart sync applications.
Thanks..
Preetham S -
Authentication on MI Server + Generic SYnc
Hi,
When we call a RFC by Generic Sync, if i call this RFC 10 times, MI Client do the authentication (user+password) on MI Server 10 times? If yes, is there a way to increase the performance to do this authentication?
Other... If a user is add in 10 devices, if he needs update password, Will he need update in this 10 devices?
Or there is a way to do the authentication online on MI Server?
Regards,
Bruno
Message was edited by:
Bruno Ambrozio
Message was edited by:
Bruno AmbrozioHi Nameeta,
This synchronization time is with Windows Mobile 2003...
10 seconds
MI Client -
> MI Server
<----
2 seconds
But, using the same WLAN, the tests with Windows Desktop are very differences...
3 seconds
MI Client -
> MI Server
<----
2 seconds
I know that the hardware of Windows Mobile is less powefull than Windows Desktop, but how i said the WLAN is the same... i would like to understand the large difference...
Thanks for your attention.
Regards,
Bruno -
Problem with persistence in Generic Sync application
Hi:
We are developing an application which runson SAP Mi 2.5, SP 18,
Windows Mobile 5.0 and Generic Sync for PDAs.
We need persistence in our application. We tried with persistence API but
we found a problem and we send a message to SAP. Until we can solve
this issue we must implement persistence in other way to satisfy our customer requierements
Since now,we have implemented persistence with files but the performance of this solution does not meet our customer requirements (the search of data in the PDA is very slow).
We are thinking in another solution, which consists on using
Syncbos.Using this alternative, before making a generic sync, and
executing the code shown below:
SmartSyncRuntime.getInstance().getSyncBoDescriptorFacade
().getAllSyncBoDescriptors()
the returned syncBOS are those which I have defined in XML. On the
contrary, after making a generic sync, executing the same code, the
returned syncbos ARE NOT those whic I have defined in XML. The only
return that I get is the MIAUTH.
Any other ideas?
Thanks
Kind Regardshi satur,
there are some things to take care if you want to use the persistence layer of the
SmartSync layer from your GenericSync app.
first, you have to let the MI client think that your application is using the
SmartSync functionality. this can be achieved by just including a dummy metadata
meRepMeta.xml file in the war archive during the deployment process. once the
MI client framework sees this during the installation, it will set a flag on the MSD
that your app is a smartsync.
second, if your app is considered a smartsync, MI will generate the delta request
and upload messages for your data if ever you have your SyncBo defined in the
metadata. Since you don't want such functionalities to be ON, i would suggest to
mark all your SyncBo as local ones; i.e. using attributes suppressDownload=true
and suppressUpload=true. this way, the MI framework will skip creating the requests
and delta upload messages for your app during the synchronization process.
third, your application has to have the syncEventListener implementation to get
notification when the Sync button (or event) was initiated. if you don't want your
app to be notified, you may just add synchronization button within your application
that will call your data manager to prepare your containers (i.e. retrieving the newly
inserted syncbo, modified syncbos and the list of deleted ones -> genericSync
containers) and to call the synchronizeWithBackend method.
fourth, you need to have the inboundProcessor that will parse your data and insert
them a SyncBo into your local database.
having tried this but i guess it might work...
regards
jo -
Generic Sync Application and Persistence DB2e
Hi all,
I have a generic sync application. I need persistence and so, I have created a xml file with many syncbo to manage the persistence with db2e. If I execute the statement before the synchronization:
SmartSyncRuntime.getInstance().getSyncBoDescriptorFacade().getAllSyncBoDescriptors().size()
the result is five (because I have five syncbo).
But when I do a generic synchronization and I try to store data of this synchronization into syncbo, I get an exception because only there is one syncbo.
In fact, the previous statement returns only one synbo. This syncbo is called MIAUTH and I don´t have defined it.
How can I solve this issue? Thanks a lot.
Regards,Hi all,
I know it is better to use persistence API than syncbos in generic sync application but we have many problems with persistence API and SP versions. While SAP solve our problems we are searching any alternative.
We use MVC and after doing generic synchronization, if the application generates a event and navigate to other jsp and in it, the application generates other event, I get all of my syncbos.
How could I simulate it, after generic sync finishes, in the same method by code? Any ideas?
Thanks and Regads. -
Problem in Generic Sync example
Hi
I downloaded the generic sync templete from the MDK documentation and deployed it to my MI client but when i try to get the information from the WEBAS it is giving the following error
Error: 500
Location: /SAMPLE_GENERICSYNC/start
Internal Servlet Error:
java.lang.NullPointerException
at com.sap.ip.me.sync.SyncHeader.(Unknown Source)
at com.sap.ip.me.sync.SyncOutboundContainer.(Unknown Source)
at com.sap.ip.me.sync.SyncOutboundContainer.(Unknown Source)
at com.sap.ip.me.sync.ContainerFactory.createOutboundContainer(Unknown Source)
at genericsyncexample1.GenericSyncExample.getUserInfo(Unknown Source)
at genericsyncexample1.GenericSyncExample.doHandleEvent(Unknown Source)
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)
at org.apache.tomcat.core.Handler.service(Handler.java:287)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:806)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:752)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:213)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
at java.lang.Thread.run(Thread.java:479)
The Trace error from the MI Client is
E There is no MSD for current application (genericsync_simple)
how do i set the MSD for the Application?
do i have to make any changes to the template and then deploye or is there anything missing in the SAP WebAS installed?
i also checked the BWAFMAPP table for the method name "MDK_USER_INFO_READ"
Thanks and Regards
GopiHi Gopi!
You are getting the following error from the Trace error from the MI Client is
"E There is no MSD for current application "(genericsync_simple)
Is that right?
(1) Log On to MI Web Console, Verify you have Uploaded the Mobile Component "genericsync_simple" correctly in the MI WebConsole.Since you have deployed the application in MI Client you should have your MCD Description here.Make sure the deployment info is correct.
(2) Log on to SAP MI Server and go to transaction MCD and then display your MCD "genericsync_simple' and make sure the information provided under Deployment Tab matches correctly with your info in MI Web Console.It should be the same.
(3) You have already checked table BWAFMAPP for method MDK_USER_INFO_READ and make sure you have the correct BAPI Wrapper assigned here.You are fine here i guess.
(4)Verify that table MEMAPPDEST has the correct RFC Destination defined for the Method MDK_USER_INFO_READ.
(5) Did you Re-Start your MI Client after the First Sync that deployed the application in your MI Client.
Setting up MCD is part of Step 1 and 2.You should have completed it already.
Let me know your results.
Thanks
Gisk
Message was edited by: Sivakumar Ganesan(Gisk) -
Problem with Generic Sync after upgrade
Hi guru,
I have this problem:
I have done a upgrade ME2.1 -> MI2.5 SP18.
I have a simple Generic sync application that using a simple Function Module:
<b>
function Z_ME_TEST_CONNECTION.
""Interfaccia locale:
*" EXPORTING
*" VALUE(STATUS) LIKE BWAFSYHEAD-STATUS
*" TABLES
*" INBOUND_CONTAINER STRUCTURE BWAFCONT
*" OUTBOUND_CONTAINER STRUCTURE BWAFCONT
perform CALL_OFFLINE_ME_METHOD using 'TEST_CONNECTION'
INBOUND_CONTAINER[]
OUTBOUND_CONTAINER[].
OUTBOUND_CONTAINER-FIELDNAME = 'RESULT_CONNECTION' .
OUTBOUND_CONTAINER-LINENUMBER = 0 .
OUTBOUND_CONTAINER-FIELDVALUE = 'OK'.
append OUTBOUND_CONTAINER.
endfunction.</b>
When i synchronize my mobile client it returns back
<b>"EWAF 001Could not execute method Z_ME_TEST_CONNECTION"</b>
Can anybody help me in resolving this?Hi Sivakumar, I have write the my FM in the BWAFMAPP and the RFC destination in MEMAPPDEST but i have tha same error.
This is my simple method in my application:
<b>public String testSync(String userName) {
String errormessage = null;
try {
// get user out of the SyncSettings
String user = Configuration.getInstance().getProperty(PropertyKeys.SYNCSETTINGS_USER, userName);
OutboundContainerFactory outfactory = OutboundContainerFactory.getInstance();
if (outfactory == null) {
errormessage = "testSync->OutboundContainerFactory.getInstance failed";
} else {
OutboundContainer out = outfactory.createOutboundContainer(
VisibilityType.SEPARATED,
R3_METHOD_TEST_SYNC,
OutboundContainer.TYPE_REQUEST);
// add the name that has been typed into the JSP
out.addItem(DC_I_USER_NAME, user.toUpperCase());
out.addItem(DC_I_NUMBER_OF_LINES,"0");
out.close();
// Start Sync
SyncManager.getInstance().synchronizeWithBackend(VisibilityType.SEPARATED);
catch (SyncException ex) {
errormessage = ex.getMessage();
catch (IllegalArgumentException ex) {
errormessage = ex.getMessage();
catch (Exception ex) {
errormessage = ex.getMessage();
finally {
System.out.println("testSync: errormessage="+errormessage);
return errormessage;
}</b>
You have anathor idea?
Thanks -
Is it posible migrate Generic Sync App from 2.5 to 7.1?
Hi,
is it posible migrate generic sync app genericsync_simple.war (from 2.5 sp16) to SAP NW Mobile 7.1??
Thanks,
RobertoHi Veera,
Yes, I do the steps that you tell me. I follow the Migration Guide offers by SAP.
I check the DO GENERIC_SYNC_C2S and GENERIC_SYNC_S2C and it was OK.
I check the destination and it was OK.
I check the new entries in corresponding tables, and it was OK.
When I sync, I can see in "Client Communication Session Monitoring", inside Seesion Information, one line of type Post Messages and it have a message of data object GENERIC_SYNC_C2S. But if I select "Go to message monitoring" it haven´t nothing.
But in message monitoring i can´t see the data object GENERIC_SYNC_C2S or GENERIC_SYNC_S2C
Any idea please?
Regards,
Roberto -
Hi,
i am an absoulte newbie in this area of mobile infrastructure.
I want to know if it is possible to call a BAPI in the backend from a JSP application with generic sync?
If yes, how does it work?
If no, how can i use that BAPIS anyway?
Thanx
Tim
Message was edited by: Tim Nees
Message was edited by: Tim NeesHi,
please check the following example in the MDK:
http://media.sdn.sap.com/public/html/submitted_docs/MI/MDK_2.5/content/appdev/genericsync/introduction.html
To generate wrapper modules for your bapis check out the transaction ME_WIZARD.
Rgds Thomas -
Programming generic sync with the MDK in 6.20
Has anyone been able to get the generic sync examples provided with the MDK working - GenericSyncExample.java in particular?
I imported and compiled the example without a problem but when I run it I get teh foll dump. Unfortunately the source code is not provided for the section which dumps so I cannot debug further...
Thanks
Ratna
2004-12-17 14:47:47 - Ctx( /NEWPROJECT ): Exception in: R( /NEWPROJECT + /start + null) - java.lang.NullPointerException
at com.sap.ip.me.sync.SyncHeader.<init>(Unknown Source)
at com.sap.ip.me.sync.SyncOutboundContainer.<init>(Unknown Source)
at com.sap.ip.me.sync.SyncOutboundContainer.<init>(Unknown Source)
at com.sap.ip.me.sync.ContainerFactory.createOutboundContainer(Unknown Source)
at genericsyncexample1.GenericSyncExample.getUserInfo(GenericSyncExample.java:124)
at genericsyncexample1.GenericSyncExample.doHandleEvent(GenericSyncExample.java:81)
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)
at org.apache.tomcat.core.Handler.service(Handler.java:287)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:806)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:752)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:213)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
at java.lang.Thread.run(Thread.java:479)Hello Ratna,
please be aware of the fact that a generic sync application needs a mobile solution descriptor (MSD) When you look at ther trace file in the log-directory of SAP ME you should find a similar entry:
"There is no MSD for current application (genericSyncExample)"
The missing MSD results in a missing conversation ID which leads to the NullpointerException that effectively is thrown in the class
ConversationIdHandler.getCurrentConversationId().
My current understanding is that the only way to get a MSD assigned, is to upload the application to the web console and install it from there on the client device.
However, this means that launching a genSync ME application from Eclipse is useless. I am wondering, if this is the way it was intended to be....
Best regards,
Tim -
Generic Sync: How to register 2 Outbound Methods
Hello,
i am developing a generic sync application.
I have registered a method for inbound+outbound.
It works well.Now i have a second method in the same application. I made the mapping in BWAFMAPP,but when i try to create a outbound container for the method,i get the exeption method is not registerd.
Coding: outfactory.createOutboundContainer(VisibilityType.USER_SHARED,2_METHOD,outboundContainer.TYPE_REQUEST);
I think i have to do something in doInitialize() for the second container ,but i don't know exactly what.
Can anyone help me?
RegardsHi,
go create a new class like this one:
import com.sap.ip.me.api.sync.InboundContainer;
import com.sap.ip.me.api.sync.InboundProcessor;
public class MyProc implements InboundProcessor {
public String getMethodName() {
return "R3_2_METHOD";
public void process(InboundContainer inboundContainer) {
System.out.println("Container for " + getMethodName() + " came in...");
then, register it at the Registry like this:
InboundProcessor i = new MyProc();
InboundProcessorRegistry.getInstance().register(i);
Cheers, Stefan -
Generic sync not work correctly
Hi,
We are trying to get the inbound container in Java application, we use the method
GetElementsWithFieldName(String) in the object InboundContainer, this method returns an array that has only one entry, but really the wrapper function in R3 returns 6500 entries.
Best regards.
Thanks all.
SCZhi Satur,
Is your Generic Sync Application Synchronous? you may find it in using the OutBoundContainer Type. if it is TYPE_OUTBOUND its asynchronous otherwise (TYPE_REQUEST) its synchronous. The same information can be found in MESYHEAD table entries too.
If it is Asynchrnous, then the MESYBODY Containers won't get deleted unless you sync from the client. if it is synchronous, it will disappear immediately.
I suggest your application be ASynchronous and check the same. If it still happens, there's some problem with your middleware. It is not taking the container as ASynchronous Processing. You'll have to go all over your Post-Installation Settings to check if all are right. (Tedious process indeed)
If it is synchrnous and your client is not receiving all the entries, the problem is with your receiver code handling. check your Process() method.
Regards
Ak. -
Generic sync issue, MI70SP14P5
Hi
Sometimes my generic sync unexpectedly stops on the mobile client on a PDA.
I have a JSP-application running in IBrowse on Intermec PDA. I know the PDA is connected as I have a remote connection open at the same time I was testing this.
This is from the trace.txt, does anyone know what it mean?
D End: Dumping file /MI/sync/(SHARED)/out/package.out
I Outbound file size for user (SHARED) is 2038
P Do not use http proxy (system properties update)
P Use following gateway for synchronization: https://mobizcm2.yara.com:443
I GzipDataCompression: Gzip data compression is switched on
P Sending outbound file compressed to server.
P Outbound file was compressedly sent.
I HttpSynchronizer caught exception java.net.SocketException: Unexpected end of file from server
java.net.SocketException: Unexpected end of file from server
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.b()
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.a()
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.b()
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.a()
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection.getInputStream()
at com.sap.ip.me.sync.HTTPSynchronizer.getInputStreamViaTimeOutOrNot()
at com.sap.ip.me.sync.HTTPSynchronizer.synchronize()
at com.sap.ip.me.sync.HTTPSynchronizer.synchronize()
at com.sap.ip.me.sync.HTTPSynchronizer.exchangeData()
at com.sap.ip.me.sync.SyncManagerImpl.processSyncCycle()
at com.sap.ip.me.sync.SyncManagerImpl.syncForUser()
at com.sap.ip.me.sync.SyncManagerImpl.processSynchronization()
at com.sap.ip.me.sync.SyncManagerImpl.synchronizeWithBackend()
at com.sap.ip.me.sync.SyncManagerImpl.synchronizeWithBackend()
at com.sap.ip.me.api.sync.SyncManager.synchronizeWithBackend()
at com.yara.industrial.yaraapp.sync.TestconnSynchronizationProvider.doSync()
at com.yara.industrial.yaraapp.bl.TestconnBl.checkConn()
at com.yara.industrial.yaraapp.sync.SyncHandling.Synchronize()
at com.yara.industrial.yaraapp.SyncServlet.doHandleEvent()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doGetThreadSafe()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doGet()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doPost()
at javax.servlet.http.HttpServlet.service()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.service()
at javax.servlet.http.HttpServlet.service()
at org.apache.tomcat.core.ServletWrapper.doService()
at org.apache.tomcat.core.Handler.service()
at org.apache.tomcat.core.ServletWrapper.service()
at org.apache.tomcat.core.ContextManager.internalService()
at org.apache.tomcat.core.ContextManager.service()
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection()
at org.apache.tomcat.service.TcpWorkerThread.runIt()
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run()
at java.lang.Thread.run()
Regs
ØyvindThank you Oliver!
I will test it and let you know if this is working better.
Regs
Øyvind -
Smart Playlists not syncing correctly to iPhone/iPad with iTunes Match
My manual playlists are syncing correctly to both devices, but smart playlists are a mess. They don't seem to match any criteria that they are created with, especially song limits. However, smart playlists are syncing correctly in iTunes on multiple computers. This is really frustrating because 99% of my playlists I listen to are smart ones. Anyone know of how to fix this? Apple, do you have any information on this or when it would be fixed?
Guys, I might have our "life savior" solution!!! (not 100% sure yet...)
I activated iTunes Match this morning.
Everything worked well apart from my smart playlists which cannot be found on my iphone/ipad anymore.
And yes, they relied on other lists...
BUT
A few smart playlists remained!!! (although they also rely on other lists)
So, after a bit of soul searching, here's my conclusion.
Those smart playlists that remained were actually dependant on "folders" which contain lists!
SO
I havn't tested yet (cause I'm at work), but if you put a list you wish to refer to in a folder, you should then be able to refer the smart list to the folder and not the actual list; and hopefully the smart list should then get synced!!!
Let me know if that works for you! -
Aperture Smart Album not Syncing with iPhone
I have my photos checked to sync from Aperture to my iPhone. The Projects that I have selected sync fine, but I have a smart album checked and the smart album does not sync. What can I do to get the smart album to sync?
KevinI have my photos checked to sync from Aperture to my iPhone. The Projects that I have selected sync fine, but I have a smart album checked and the smart album does not sync. What can I do to get the smart album to sync?
Kevin
Maybe you are looking for
-
Cannot publish from iWeb 08 after upgrading to Leopard
When I click on Publish from iWeb I first get a window .Mac Information asking me to login and a smaller window saying "logging in to iWeb". I click on sign in button from .Mac Information window and then get the System Preferences window telling me
-
FCP X Animated Titles Error - Help!
My OSX is 10.6.8, FCP X 10.0.7 I am working on a trianing project for the last few months. It was working fine until i installed a software patch for FCPX which came through the apple software update. (well this is my assumption and i am not an exper
-
I've lost the ability to see my second monitor
After installing Mavericks
-
Can i make a custom size movie like 900x269
Im trying to make a movie that is that size can i do it with imovie?
-
Unknown purchases in iTunes store india
I received a mail stating that i had made some purchases amounting 7000 rupees. But i did not make those purchases. I removed the billing details from my account now. how can i report this and get a refund for fraudery if possible?