Change Encoding in Graphical Mapping

Hello guys,
I have an interface like File-> PI 7.1 -> Proxy
The problem is that some characters are not correct at the proxy, and I have an error when the proxy is executed.
I have at the sender file adapter the encoding ISO-8859-1, but the problem is that in my Operation mapping, I java a Java code, where I put iso-8859-1, and after a message mapping. After the java mapping the encoding is iso-8859-1, but after the message mapping and when the message arrives at the proxy is UTF-8.
There is any way to change the encoding during the message mapping or in the Proxy adapter? There is also the possibility to change the encoding at the ABAP code of the proxy?
Many thanks in advance.
Regards,
Xavi.

H Xavi,
--Unfortunately no because the standard format in PI is utf-8-
Try this http://www.dataxstream.com/2009/06/pi-message-mapping-editor-hidden-menu/
Also we cannot use XMLAnonymizer bean here as the receiver adapter is XI adapter
Regards
Suraj

Similar Messages

  • Changing encoding to "CP1252" in B2B Adapter

    Hi Experts,
    Issue is regarding the change in encoding to "CP1252".
    1) We are having special characters in our payload which were not read by UTF-8 so it was failing in mapping. After we changed the same to CP1252 using below XSL code it worked fine and passed through the system.
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="cp1252"/>
    <xsl:template match="/">
    <xsl:copy-of select="*"/>
    </xsl:template>
    </xsl:stylesheet>
    It worked fine after using XSL map.
    2) In Configuration, we have an option of character set(ISO-8815-15 or UTF-8) but its not working when we are using, For what this option is being used? I am not sure what gets changed if we are using this in AS2 Channel?
    3) XML Anonymizer bean is not working with AS2 adapter, its showing UTF-8 in the mapping. I think B2B doesn't support this bean.
    Please suggest an alternative to XSLT and Java mapping, as client requirement is that they want to have only graphical mapping and no other mapping is to be used.
    Thanks!
    Regards,
    Nidhi

    Hi Ruchir,
    Thanks for your reply.
    Setting encoding parameter is not working. Also, XSLT which i was using it worked 2 days back and now it is not working and failing with the same error.
    Error
    After analysing the audit log for the successful messages(two days back) i realised that the messages were in error with the same error as above, but after retrying the third time it was delivering successfully. But, today its failing after the third retry as well.
    I have a strong belief that encoding is not an issue, as I can see from the error that message subversion is having an issue and when I am changing it to EAN008 instead of SFTI01 it is working fine without any issue.
    Please suggest what needs to be done.
    Thanks,
    Nidhi

  • Urgent : Change Encoding type?

    Hi.
    It's urgent
    I wana change encoding type character with capital character.
    For reference, receiver file adapter write header like following... but must be changed large character...
    (not iso, must be changed "ISO")
           <?xml version="1.0" encoding="iso-8859-1" ?>
       ==> <?xml version="1.0" encoding="ISO-8859-1" ?>
    Regards.
    Message was edited by: ChangSeop Song

    hi,
    I suppose you already have a mapping?
    so you only want to change the result
    to have encoding="ISO-8859-1 right?
    you can use XSLT mapping to map
    your target xml document to xml document with ISO
    this is what you have to use: 
    <xsl:output method="xml" encoding="ISO-8859-1"/>
    have a look at my weblog in order to see how you can add sxlt mapping to your adapter (in the modules tab)
    /people/michal.krawczyk2/blog/2005/11/01/xi-xml-node-into-a-string-with-graphical-mapping
    obviously you can also use java or abap mapping
    but XSLT will be the fastest to develop
    Regards,
    michal
    <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions">XI FAQ - Frequently Asked Questions</a>

  • Bug in exists() function of XI Graphical Mapping Tool?

    Hi!
    If I connect a source field with the exists() function in XI Graphical Mapping Tool and the tag exists it returns TRUE, otherwise it returns FALSE, so everything works as expected.
    But I have to connect a user-defined function with exists(). The user-defined function will either calculate a value or set Resultset.SUPPRESS.
    If there is a value the exits() function returns TRUE, however if Resultset.SUPPRESS is set it does also return TRUE! This looks to me like a bug in exists() function. Shouldn't it always return FALSE if the input is Resultset.SUPPRESS?
    Regards, Tanja

    Hi Stefan!
    > The exists() function checks, if a queue is empty.
    > An empty queue is <b>not</b> represented by the
    > SUPPRESS value.
    > If inside a queue there is a SUPPRESS value, the
    > queue is <b>not</b> empty.
    Ok, so it's not a bug and the exists() function is working as expected.
    > If you want the exist() function after a UDF, provide
    > an empty queue, or easier: return the values "true"
    > or "false" directly from the UDF.
    Yes, that's how I actually solved the problem. The UDF was used at several places where the ResultList.SUPPRESS output was needed. So I copied the UDF and changed it so that the output was TRUE or FALSE instead.
    Regards, Tanja

  • Should we avoid Graphical mapping and stick with Java mapping?

    After developing mappings in XI for a month, I just don't see any good reasons to use Graphical mappings over Java mappings. Maybe some experienced users here can give me some valid reasons why we should choose Graphical mappings. Here is what I think:
    Disadvantages of Graphical mappings:
    1. No way to perform automated unit testings. This is probably the biggest reason I hate it. You can do some tests manually when you work in Integration Builder. But there is no way you can write some unit testing utilities to automate the task.
    2. Complexity. Even for some simple requirements, your Graphical mappings can become complicated and hard to understand. A lot of times, I find myself staring at several dozens of graphical nodes and try to understand what it does.
    3. Impossible to reuse. This is totally against the DRY (Don't repeat yourself) principle. For example, to generate messages for JDBC adapter, it is common to have two identical fields for primary keys: one in the access node and another in the key node. If you change the mapping logic in one, you have to remember to change the other.
    Advantage with Java mappings:
    1. Fully automated unit testing. You can create JUnit tests along with your Java mapping classes and use Maven or other build tools to perform automated unit testing.
    2. Your choice of XML parsing and binding. With Java mapping, you can choose any open source framework for XML parsing and binding. For example, with XMLBeans, I can convert XML input message to a Java object, transform to another Java object and write to output message. And each Java object is generated from its corresponding XML schema.
    3. Highly reusable. We can use fundamental object-oriented designs to create highly reusable mapping components.
    4. Better version control. Since the mappings are just Java classes, we can use CVS or SVN to track code changes.
    5. Better build tools. We can fully utilize build tools like Ant and Maven to automate the build, unit tests, or even generate documents and mapping web sites.
    So do you guys agree? Maybe I am still new to XI or I am missing some important things. But at this point, I just don't see why I should use Graphical mappings. Is there anyone developing XI interfaces completely with Java mappings?
    Thanks in advance for any comments!
    Kenny Cheang

    Hi Suraj,
    > Since its graphical the blocks will take space, but
    > there is always an adavntage of processing time.
    > Ebven though it may appear bigger, it will take less
    > time as compared with Java code (for the same
    > mapping).
    Could you explain more why the graphical mapping has better performance? I thought the graphical mapping is compiled into a Java class in the runtime anyway.
    > Yes thats there, but same goes with Java mapping too
    > right (if you haven't mentioned it as constants)
    I mainly think about inheritance. If I have to build 10 interfaces and they all have some common behavior, I can create a base interface class to encapsulate the common logic. But with graphical mapping, you have to duplicate them in each interface.
    > Disadvantages of Java mapping:
    > 1. Performance
    Same as above. I just don't see why Java has worse performance. I actually think Java should have better performance. You can optimize the code anyway you want. In some cases, you have to use queue functions in graphical mapping but it's not necessary in Java.
    > 2. All might not be well versed with Java Code(though
    > everyone may know basic java) .
    I am not asking everyone to abandon graphical mapping. I am just wondering which one is better when you have skills for both.
    > 3. Lot of standard functions are available in GM
    > which you can choose, but you have to remember the
    > exact code for those in Java mapping.
    You can create functions in Java too. All you have to do is to remember the function name.
    Kenny

  • Create Attachment within Graphical Mapping using UDF

    Hi!
    We want to create an attachment witihn a graphical mapping using an UDF function.
    I use that function:
    public String addAttachment(String filename, String mimeType, String content, Container container) throws StreamTransformationException{
         BASE64Decoder decoder=new BASE64Decoder();
         try {
              GlobalContainer globalContainer = container.getGlobalContainer();
              OutputAttachments outputAttachments = globalContainer.getOutputAttachments();
              Attachment attachments = outputAttachments.create(filename, mimeType,decoder.decodeBuffer(content));
              outputAttachments.setAttachment(attachments);
              return "Adde1: "+filename;
         } catch (Exception e) {
              return e.toString();
    (SDN helped me much in creating that
    This function has no compiling errors, anything workes fine:
    It takes 3 input-parameters, see also: http://help.sap.com/javadocs/pi/SP3/xpi/com/sap/aii/mapping/api/OutputAttachments.html
    filename (ok, more or less contentID)
    mimeType (more or less contentType)
    content: Base64-encoded String which should be set as content
    In my sample I use the following constants for that function:
    filename = "fn1.txt"
    mimeType="application/xml"
    content = "UG9seWZvbiB6d2l0c2NoZXJuZCBhw59lbiBNw6R4Y2hlbnMgVsO2Z2VsIFLDvGJlbiwgSm9naHVydCB1bmQgUXVhcms=" --> cames directly from http://de.wikipedia.org/wiki/Base64
    When using the message, I got this error within SXMB_MONI:
    <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Could not queue receive for
    message 0022642d-b106-02df-8e8c-f41c243bd112(INBOUND). Reason: java.lang.NullPointerException: while trying to
    invoke the method com.sap.aii.af.sdk.xi.lang.Binary.getBytes() of an object returned from
    com.sap.aii.af.sdk.xi.mo.xmb.XMBPayload.getContent()</SAP:AdditionalText>
    This looks pretty much the same as Add Attachment from ABAP Mapping but this tread is also not answered.
    Adding attachment from PI level looks also in that direction, again, no answer.
    So, I was wondering if someone has solved such problem?

    Hi Divyesh!
    We did it that way:
    1. Choosing the XML-Mailstructure as Destination as described in Configuring the Receiver Mail Adapter - Advanced Adapter Engine - SAP Library -  Example (XI payload with mail package)
    2. now we have created a UDF for creating the "content"
    public void getContent(String[] text, String[] attFname, String[] attType, String[] attContent, ResultList result, Container container) throws StreamTransformationException{
    // vergleich ob alle att-Arrays selbe anzahl haben
    if (attFname.length!=attType.length || attFname.length!=attContent.length) {
        result.addValue(Integer.parseInt("Fehler: alle Attachment-Eingänge müssen die selbe Anzahl an Elementen haben!"));
        String CRLF = "\r\n";
        String output="This is a multi-part message in MIME format."+CRLF+CRLF+
        "--"+getBoundary(container)+CRLF+
        "Content-Type: text/plain; charset=UTF-8"+CRLF+
        "Content-Disposition: inline" + CRLF + CRLF +
        text[0]+CRLF;
    for (int i=0;i<attFname.length;i++) {
        output+="--"+getBoundary(container)+CRLF+
        "Content-Type: "+attType[i]+"; name="+((char)34)+attFname[i]+((char)34)+CRLF+
        "Content-Disposition: attachment; filename="+((char)34)+attFname[i]+((char)34)+CRLF+
        "Content-Transfer-Encoding: Base64"+CRLF+CRLF+attContent[i]+CRLF;
    output+="--"+getBoundary(container)+CRLF;
    result.addValue(output);
    This UDF is configured as "QUEUE"
    We have configured this input-structure
    The Content itself is allready base64.
    So we can call this mapping and it creates a Multipart-Mail for us.

  • Graphical-mapping

    Hi,
       plz tell me about graphical-mapping.
    with warm regards.
    vikash

    Hi
    MAPPINGS STANDARD NODE FUNCTIONS:
    Remove Contexts:     We use it to remove Header Contexts from source side. If we donu2019t want header context to repeat in target structure, use this. It removes repeated header contexts and all the items come under the same contexts.
    Split by Value:     This is counter part of remove context. Use this to add the header context at the target side. Suppose if we wan to separate header contexts for every value of item at source use this.
    Copy Value: We can use this to copy the value of a position in the source structure and assign it to a target field for  frequently occurring source structure element. The value is copied each time the target field occurs in the target structure.
    Createif ():     Use it to create a tag in the target structure depending on the condition. Use it, if the nodes at the target side have to be created only after certain condition is true. If value type is u2018INTENALu2019 Internal request node is created and if value type is u2018EXTERNALu2019 external request node is created.
    Collapse Context:     We use it, if we have to create empty tags in target for every context change in the source.
    Exists: While mapping idoc structure to file structure, Lot of times we come across a scenario where the fields (occurrence=0) are not mandatory in the idoc. They are not populated in the source xml and they are required in the target xml (occurrence=1) which gives runtime exception that target element canu2019t be created.
    u can also refer the below links for further assitance
    /people/claus.wallacher/blog/2006/06/29/message-splitting-using-the-graphical-mapping-tool
    /people/claus.wallacher/blog/2006/04/17/replication-of-nodes-using-the-graphical-mapping-tool
    Different Node Functions in Graphical Mapping.
    : /people/sravya.talanki2/blog/2005/08/16/message-mapping-simplified--part-i
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/6658bd90-0201-0010-fbb6-afe25fb398d3
    cheers
    reward points if found useful

  • Can we use XSLT mapping after graphical Mapping

    Hi,
    Can we use XSLT mapping after graphical mapping?
    My requirement is to generate two namespace attributes in the target output.
    So first I want to generate a structure using graphical mapping and then want to use XSLT mapping only to generate the second namespace XSI (leaving the rest of the structure as it is). Is it possible?
    <ns1:Test xmlns:ns1="wmdata.dwbi.interface" xsi:schemaLocation="wmdata.dwbi.interface w_interface_1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    Please post some solution. (I will reward points)
    Br,
    Madan Agrawal

    Hi Madan,
    Can we use XSLT mapping after graphical mapping?
    To me it seems feasible...
    But to using the two mappings one after another you will have to use BPM .
    Use transformation step for this to use the mapping and change in structure.
    Regards,

  • Change encoding of input message sent by J2EE Adapter

    Hi all,
    I get a input message with a wrong encoding (Sender SMTP Adapter). Within XML prolog, there's a declaration of UTF-8. Having a look at the message, it's ISO-8859-1 encoded. That mean's I've to do one of the following options:
    a) change encoding declaration in XML prolog to the correct one: ISO-8859-1
    b) reencode the entire message from ISO-8859-1 into UTF-8, so that the message encoding matches the XML prolog
    I've found two possible solutions, but I don't know if they're working:
    1. usage of XMLAnomyzerModule: reading the documentation, it seems to be that I cannot use that module in a sender adapter, right? If I'm wrong: what does the module do? Does it just exchange the encoding declaration in the prolog or does it reencode the message?
    2. running that small XSLT mapping before my own mapping: would it change the encoding declaration from UTF-8 to ISO-8859-1 in the XML prolog?
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="ISO-8859-1"/>
    <xsl:template match="/">
    <xsl:copy-of select="*" />
    </xsl:template>
    </xsl:stylesheet>
    BR
    Holger

    Hi Stefan,
    thanks for your reply. Unfortunately it's not my application who's sending the wrong message and it's not possible to change it on sender side. I don't know why but it's like that
    So it's exactly like you've mentioned: when using special characters where ISO-8859-1 codepage differs from UTF-8, we've a problem.
    When I understand you correct there's a adapter module TextCodepageConversionBean which changes the encoding, right? Then I could use it to encode the inbound ISO-8859-1 message to UTF-8 (which is declaration in XML prolog).
    Where can I find more information how to use it? Searching SDN I've just found one other thread where the same module is mentioned, but without further hints.
    BR
    Holger

  • Mapping Split using the Graphical Mapping Tool

    Hello,
    I am a little confused right now... so I turn to you for help!
    I found this excellent blog:
    /people/claus.wallacher/blog/2006/06/29/message-splitting-using-the-graphical-mapping-tool
    It details how to do a message split using the Graphical Mapping Tool. WHich is exactly what I want!
    But then I found this on help.sap.com:
    http://help.sap.com/saphelp_nw04/helpdata/en/42/ed364cf8593eebe10000000a1553f7/frameset.htm
    Which states that:
    Messages cannot be sent by using different Adapter Engines in a mapping-based message split. This affects configuration thus: All receiver agreements that have a receiver interface from the mapping entered in the key must only be assigned communication channels with the following adapter types: 
    -          RFC Adapter
    -          SAP Business Connector Adapter
    -          File/FTP Adapter
    -          JDBC Adapter
    -          JMS Adapter
    -          SOAP adapter
    -          Marketplace adapter
    -          Mail Adapter
    -          RNIF adapter
    -          CIDX Adapter
    I have a simple mappling split where I want to take a file containing multiple materials and send them one by one to a PROXY into SRM. To send to proxy I want to use the HTTP adapter which is not listed above. BUT if I read it correctly it will work, as long as I dont try to do the interface determination based on the mapping.
    Is this correct, that it will work I mean? I think so but not sure about the wording in the sentence above, and wanted to check before I go destroy my mapping.
    Thanks!
    Nam

    Hi,
    If your scenario is simple and straight fwd like from one source to one target then you can split message without BPM. As Priyanka said in the message mapping go to Message Tab and set the target message occurance to unbounded. Then in the Interface Mapping in the target interface section you will find the occurance in the last column, change occurance to unbounded.
    While doing configuration you have to go for Enhanced Interface Determination thats it.
    Provided you are above sp14, incase of any lowere SP'a you will not even able to activate your mapping program as it will expect ABSTRACT interface to do multimapping.
    Thanks,
    Prakash
    Thanks,
    Prakash

  • Conditional mapping in Graphical mapping

    Hi All,
    I have a conditional mapping requirement i.e.I have 2 nodes ( collections/collection/object and  extensions/collection/@name) in the source structres. Both nodes are identical and have unbound occurences. Based on certain condtions I need to map second node in the  source node to target node ( Items ). Below is the condition.
    If first node '/MT_FCI_CONTRACT_EXPORT/fcidataexport/objects/object/collections/collection/object/@classname' (Occurs Unbounded ) value is not  'contracts.LineItem'  and second node '/MT_FCI_CONTRACT_EXPORT/fcidataexport/objects/object/extensions/collection/@name' ( Occurs Unbounded ) value is 'MATGRP_COLLN' then only map source field '/MT_FCI_CONTRACT_EXPORT/fcidataexport/objects/object/extensions/collection/row' ( occurs unbounded ) to target node 'Items' ( Occurs unbounded ).
    I have done this mapping using If condtions and did some context changes. My second condition is working fine but my first condition is not working as expected. Its only taking value in the first occurences and based on that passing first condition. But I need to check in all occurences whether value 'contracts.LineItem' is not exist  then only I need to pass that condition. Please let me know how to achieve this.
    Please help me to achieve my requirement.Thanks.
    Regards,
    Rajesh

    Hi Rajesh,
    To reply your query first we have to understand the exact requirement . So I am writing my understanding below and solution for it .Kindly reply if your requirement is different.
    you have three source field which is involved in mapping .@classname, @name, and row and target side you have node item .
    Now you have to check for all classname and name that if classname is not equal to contracts.LineItem and @name is equal to MATGRP_COLLN ( both the values I have considered as constant) then map row to target node item. i.e if classname and lineitem is occuring 4 time and two time both are satisfying both the codition then generate two target Item node .
    Solution.
    classname -> (CollapseContext)->equals to ContractLineitem --not -->
                                                                                    AND -
    IIF WITHOUT ELSE
    Name -
    >(CollapseContext)-->equals to MATGRP_COLLN--
    >
    the condition of if without else function will be output of AND and in then map row----.(collpasecontext) finally the output of if without else will be mapped to item
    note :all ittalic is Graphical mapping functions .
    Regards,
    Saurabh

  • Change encoding from utf-8 to iso-8859-1 in JMS receiver!

    Hi.
    I have some problems regarding encoding.
    The simple setup: dummy datatype as input, XSLT mapping and standard XI output(to JMS).
    Are there any way to tell the JMS adapter to deliver the message in iso-8859-1 and not utf-8?
    Regards Peter

    > Hi Henrique.
    >
    > This sounds like an idea. Can you guide me to some
    > documentation, that describes adding mapping in the
    > jms adapter module?
    >
    > Regards Peter
    To use modules in JMS adapter: http://help.sap.com/saphelp_nw2004s/helpdata/en/0f/80243b4a66ae0ce10000000a11402f/frameset.htm
    Now, you add the MessageTransforBean module, to use the XSLT mapping. Check the end of this blog to learn how to use XSLT mapping on MessageTransformBean: /people/michal.krawczyk2/blog/2005/11/01/xi-xml-node-into-a-string-with-graphical-mapping
    Regards,
    Henrique.

  • Using a DOM Document in Graphical Mapping

    Hi,
    I have the following scenario:
    A string stream is received from a SOAP adapter. From this   I extract a part that is in essence a XML document.
    I then parse this into a DOM Document object. 
    I want to pass this XML structure on to other graphical mapping functions so that I can map parts of this document to other structures. I cannot add it to the 'result' object in an 'Advanced user defined function'
    Do I have to add it to some component of the 'container' object passed to the function ?.  If not - any ideas of how I would do this ?.
    Thanks
    Andre

    Hi Andre,
    It looks to me like you have an XML document with another XML document embedded (and encoded) inside some element. Something like:
    <outerDoc>
    <element>
      &lt;innerDoc&gt; ...more embedded XML... &lt;/innerDoc&gt;
    </element>
    </outerDoc>
    It is not possible to both "unwrap" the inner document and continue to work on it in a graphical mapping. The simplest approach is to have 2 mapping steps in your interface mapping:
    1. A pure Java mapping in which you get the complete outer document as input, parse your way through and extract the inner document, which is the output of this first mapping step.
    2. A graphical mapping which has your inner document as input and your final result as output.
    Hope that clarifies it somewhat
    Best regards,
    Thorsten

  • Query on Graphical mapping

    Hi All,
    I have a requirement to do a graphical mapping from a Single row in Source to Multiple rows in target.
    Source:
    <SingleRow>
    quanutity_1
    quanutity_2
    quanutity_3
    </SingleRow>
    Target:
    <SingleRow>
         <item>
         quantity
         </item>
         <item>
         quantity
         </item>
         <item>
         quantity
         </item>
    </SingleRow>
    please suggest.
    regards,
    Piyush

    Usage of useOneAsMany:
    The first input parameter expects the list of values that we want to propagate to the target message.
    The second input parameter expects the number of iterations or how many times we want to replicate the value given in the first parameter.
    The third input parameter is the list of context changes. Depending on this parameter the source values will be propagated to the target after every context change.
    Also,For this function to work as expected, the first two parameters must contain the same number of contexts while the last two parameters must contain the same number of values
    Thanks

  • Right way to change encoding settings

    Hi!
    When I encode footages I have to differet ways to change encoding settings - one is AME's settings panel. Second is Codec options. I'm confused - where must I change settings, must they be the same in both windows, or what's "primary" options window? Please, explain!

    Ok... But in that case, what settings are "primary", have a priority?  Those who are in codec options window or in regular AME settings window?

Maybe you are looking for

  • Creation of PO in SD Module for vendor

    Hi SD guru's I have a scenario in SD module wherein i have to issue a PO to the vendor to carry out a service for me. How do i go about this? Can this be automated based on few reports that i generate? Thanks & Regards Ravi

  • I cant install any games on windows 8.1 enterprise

    When i try to install a game on windows 8.1 enterprise, the setup menu shows up for about 30 seconds the closes with no error message. ive tried running it as administration, windows 7 and turning internet off and turning my anti virus off also re in

  • Can't see my ipod playlists in iTunes

    I created a folder in itunes in order to organize my playlists. As soon as I did that the playlists on my ipod nano disappeared from itunes. I deleted the folder I created (in itunes, that is), together with its playlists and the problem still persis

  • How to add discussion forum to Portal?

    I'd like to add discussion forum to my Oracle Portal. But I don't know how to do... Please suggest me how to do. Is there a discussion component or application that I can use? Or I have to create by myself? Narong

  • I lost my ipad, how to do the report on apple offical website?

    i lost my ipad2 recently, that taker very smart, he use offline, and i can't found my IPAD from me.com so i decide to do some report on apple offical web, make sure that guy can not fix it in every place. thank you