Error conection to fpt      R3 - XI  - FILE FTP

In message monitorin the following error is registered
- Attempt to process file failed with java.net.SocketException: Connection reset
- Delivery of the message to the application using connection File_http://sap.com/xi/XI/System failed, due to:
com.sap.aii.af.ra.ms.api.RecoverableException:   Connection reset: java.net.SocketException: Connection reset.
- Exception caught by adapter framework: Connection reset
not if the error is of the external FTP or is of xi
Regards.
Ximena

HI,
Description: The server encountered an unexpected condition which prevented it from fulfilling the request.
Possible Tips: Have a look into SAP Notes – 804124, 807000
Please see the below links
https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/4061https [original link is broken] [original link is broken] [original link is broken] [original link is broken]://HTTP error
/people/prashanth.azharuddin/blog/2006/11/24/some-errors-in-an-xi-production-environment
Regards
Chilla..

Similar Messages

  • Error File FTP adapter

    Hi,
             We need to connect to a VAN system to poll/post files. We have configured the file adapter in FTP mode, but when trying to post/poll for files, we are getting the following error:
    2009-10-09 07:17:57     Error     File processing failed with An error occurred while connecting to the FTP server '10.159.48.75:21'. The FTP server returned the following error message: 'com.sap.aii.adapter.file.ftp.FTPEx: 501 Syntax errors in parameter.     usage: %[recipient id]%[APRF]       where either [recipient] or [APRF] can be omitted.            (to change your current default SEND relationship).            %% (places you in your 'HOME' TR).   &['s'|'single'] ('get' command gets single file).   &['m'|'multiple'] ('get' command gets multiple files). '. For details, contact your FTP server vendor.
    2009-10-09 07:17:57     Error     Adapter Framework caught exception: An error occurred while connecting to the FTP server '10.159.48.75:21'. The FTP server returned the following error message: 'com.sap.aii.adapter.file.ftp.FTPEx: 501 Syntax errors in parameter.     usage: %[recipient id]%[APRF]       where either [recipient] or [APRF] can be omitted.            (to change your current default SEND relationship).            %% (places you in your 'HOME' TR).   &['s'|'single'] ('get' command gets single file).   &['m'|'multiple'] ('get' command gets multiple files). '. For details, contact your FTP server vendor.
    2009-10-09 07:17:57     Error     Transmitting the message to endpoint <local> using connection File_http://sap.com/xi/XI/System failed, due to: com.sap.engine.interfaces.messaging.api.exception.MessagingException: An error occurred while connecting to the FTP server '10.159.48.75:21'. The FTP server returned the following error message: 'com.sap.aii.adapter.file.ftp.FTPEx: 501 Syntax errors in parameter.     usage: %[recipient id]%[APRF]       where either [recipient] or [APRF] can be omitted.            (to change your current default SEND relationship).            %% (places you in your 'HOME' TR).   &['s'|'single'] ('get' command gets single file).   &['m'|'multiple'] ('get' command gets multiple files). '. For details, contact your FTP server vendor..
    Can we directly connect to the VAN using FTP in PI, or do we need to do perform some other configuration.
    Regards,
    Shiladitya

    Hi,
      I think you need to use Seeburger's FTP adapter instead of normal FTP adapter.
    Read this discussion for more information:
    Re: Seeburger FTP Adapter And SAP PI 7.1
    Regards,
    Ravi Kanth Talagana

  • 'com.sap.aii.adapter.file.ftp.FTPEx: 501 Unknown error

    Hello ,
    I am facing an error in communication channel while trying to post the file to the FTP server,
    The error is " Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: An error occurred while connecting to the FTP server '10.100.5.00:20'. The FTP server returned the following error message: 'com.sap.aii.adapter.file.ftp.FTPEx: 501 Unknown error'. For details, contact your FTP server vendor"
    Please could you advice what need to be done to resolve this.
    Thanks ,
    Siva

    Hi ,
    FTP 501 Error is: "Syntax error in parameters or arguments"
    Also, i see that the ftp address and port mentioned in your case is:
    10.100.5.00:20
    Hence, i see three probable issues here.
    1. FTP Port :
    Just check if the FTP server's port number '20' mentioned in your case is open as this is the data connection port. Moreover, the default port mentioned while creating a file channel is 21. Just check about the port number '20' with the FTP server administrator if this port number is opened and functioning.
    2. FTP server address:
    Also, try giving your FTP Server's address as 10.100.5.0
    3. Also, check if the FTP server is reachable from the PI Server by using a simple ping command.

  • Com.sap.aii.adapter.file.ftp.FTPEx: 550

    Hi,
    I have the below error in my sender file channel. I also read the following thread
    FTP Error
    Error:
    An error occurred while connecting to the FTP server '10.12.12.101:21'. The FTP server returned the following error message: 'com.sap.aii.adapter.file.ftp.FTPEx: 550 C:Inetpubftproot: The filename, directory name, or volume label syntax is incorrect. '. For details, contact your FTP server vendor.
    The above thread suggests me to change the setting in the IIS. Should do that settings in the PI server or the source FTP server.
    Also does anybody have any other solution to this problem.
    Rgds,
    Mithun

    HI,
    If you're using an FTP server you need to know the path to the file on the FTP.
    To do this I suggest to connect to the FTP using Internet Explorer and navigating the FTP folders until reaching the right one.
    Then on the url bar you should got something like this: "ftp://server:21/path/to/file/". Use "/path/to/file" as value for the file adapter configuration.
    Please refer below blogs:
    unable to send file to FTP server
    FTP to Windows Server
    thanks,

  • Com.sap.aii.adapter.file.ftp.FTPEx: 550 You are not allowed to issue this

    hi All,
    We are getting below error while connecting to an FTP location through File Adapter:
    Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: An error occurred while connecting to the FTP server XYZ. The FTP server returned the following error message: 'com.sap.aii.adapter.file.ftp.FTPEx: 550 You are not allowed to issue this command'. For details, contact your FTP server vendor.
    Also when we tried to connect to this FTP location through PI server we able to connect, but when we connect to it through channel we are getting above error.
    Please Help!
    Thanks,
    Mayank

    hi All,
    The usedid we are using to connect to FTP location has appropriate access to write(we have an receiver file adapter) the files, when we connected to FTP location from PI server using same useid(as used in channel) we are able to connect to FTP location and also able to write the file there.
    Now error soming is:
    An error occurred while connecting to the FTP server XYZ. The FTP server returned the following error message: 'com.sap.aii.adapter.file.ftp.FTPEx: 550 Operation is not supported under Connect:Enterprise FTP server.'. For details, contact your FTP server vendor.
    Thanks,
    Mayank

  • File.ftp.FTPEx: 501 Unexpected reply codeUnknown extension in database file name

    Hi Folks,
    I am trying to place file in the iSeries library folder and for this I am using a receiver file adapter with the following config, FYI, I am not using any FCC
    Target Directory : /QSYS.LIB/XXXXX.LIB/
    File Name Scheme : FILENAME.FILE
    As I am doing this config for the first time I am using the following SCN discussion as my reference,
    File FTP to AS400 Library folder | SCN
    but i am still getting the error message at the receiver channel as below
    Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: An error occurred while connecting to the FTP server 'XXXXXX:21'. The FTP server returned the following error message: 'com.sap.aii.adapter.file.ftp.FTPEx: 501 Unexpected reply codeUnknown extension in database file name.'. For details, contact your FTP server vendor.
    Please let me know if anyone has anymore suggestions.

    Hi Kalyan,
    The File Name extension that you configured is incorrect I think.  Can you try to change the extension to .txt and try once.
    File Name Scheme : FILENAME.FILE
    Thanks,
    Satish.

  • Could not process due to error: com.sap.aii.adapter.file.ftp.FTPEx: 550

    Hi Experts,
    We have many File to EDI scenarios wherein XI System pick up the XML and sent to customers via EDI. Recently we faced a problem so created a Back-up System (Production copy) and tested successfully. After sometime the messages were routed to this back-up system and when we notice it and then stopped the back-up system. All the messages that were routed to back-up system, we try to send the same messages from the actually Production system to our customers. Now the problem is XI system (Production system) is unable to pick these files and I check the communication monitoring and encountered the below error message.
    Could not process due to error: com.sap.aii.adapter.file.ftp.FTPEx: 550.550
    Can anyone let me know how to fix the issue or what needs to be done?
    Your help is highly appreciated.
    Regards
    Faisal

    Hi,
    It seems to be problem with permission of files. Please ask your basis to do following:
    1. Set the permissions to FTP User you are using as 777 rights(full access to read , write and delete)
    2.If you have access to PI server, try to telnet /connect to ftp using command prompt (open ftp .....) the FTP server form there, you should see the same error there , inform this to your network guys.
    3.Clear all the files places already in the ftp (take backup) and test afresh after permissions are set by basis team.
    Regards
    Aashish Sinha

  • File to File-CC 'error com.sap.aii.adapter.file.ftp.FTPEx: 550 Access deni'

    Hi friend,
    I am doing file to file scenario in which i wan to move one file from input folder to output folder.
    I had created as FTP on one system that i am able to access and have full authorization to read and write.
    and created that two input and output folder in it,n kept an xml file in input folder.
    When i see sender communication channel in RWB it is showing error, "com.sap.aii.adapter.file.ftp.FTPEx: 550 Access denied'
    I checked password,it correct also I tried to test it using Anonymous Login, but the same things.
    SO i am not sure where i had done mistake.
    Plz give ur suggestions.
    Thanks

    Hi,
    Please Check below few steps:
    Check if the username and the Password is created to write the file in the desired directory.
    Check the username is provided the authorization to write the file in the desired directory. ... IS Guys will help you..
    Confirm if the directory created have all the authorization to write the file.
    ls - lrt
    chmod 777 Directory Name
    all the authorization will then be provided
    Confirm if the directory is created with the root id then it there might be some problem with the user name u r trying to create..
    Hope this will help.
    Assign points for helpful answer..
    Thanks
    JAY.

  • "Message Rejection Handler" for the file/ftp adapter using fault policy

    Hi guys,
    We are trying to implement "Message Rejection Handler" for the file/ftp adapter using following fault policy configuration.
    Fault Policy:
    `````````````
    <?xml version='1.0' encoding='UTF-8'?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
    <faultPolicy version="2.0.1" id="ProcessNameGenericPolicy"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Conditions>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:remoteFault">
    <condition>
    <action ref="ora-retry"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:bindingFault">
    <condition>
    <action ref="ora-rethrow-fault"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="ora-retry">
    <retry>
    <retryCount>3</retryCount>
    <retryInterval>1</retryInterval>
    <retryFailureAction ref="ora-rethrow-fault"/>
    </retry>
    </Action>
    <Action id="ora-rethrow-fault">
    <rethrowFault/>
    </Action>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <Action id="ora-terminate">
    <abort/>
    </Action>
    </Actions>
    </faultPolicy>
    <faultPolicy version="2.0.1" id="ProcessNameHumanInterventionPolicy"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Conditions>
    <faultName xmlns:medns="http://schemas.oracle.com/mediator/faults"
    name="medns:mediatorFault">
    <condition>
    <test>contains($fault.mediatorErrorCode, "TYPE_TRANSIENT")</test>
    <action ref="ora-retry-with-intervention"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:remoteFault">
    <condition>
    <action ref="ora-retry-with-intervention"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:bindingFault">
    <condition>
    <action ref="ora-rethrow-fault"/>
    <!--<action ref="ora-retry-with-intervention"/>-->
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="ora-retry-with-intervention">
    <retry>
    <retryCount>3</retryCount>
    <retryInterval>1</retryInterval>
    <retryFailureAction ref="ora-human-intervention"/>
    </retry>
    </Action>
    <Action id="ora-retry">
    <retry>
    <retryCount>3</retryCount>
    <retryInterval>1</retryInterval>
    <retryFailureAction ref="ora-rethrow-fault"/>
    </retry>
    </Action>
    <Action id="ora-rethrow-fault">
    <rethrowFault/>
    </Action>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <Action id="ora-terminate">
    <abort/>
    </Action>
    </Actions>
    </faultPolicy>
    <faultPolicy version="2.0.1" id="RejectedMessages">
    <Conditions> <!-- All the fault conditions are defined here -->
    <faultName xmlns:rjm="http://schemas.oracle.com/sca/rejectedmessages" name="rjm:PartnerLinkName">
    <!-- local part of fault name should be the service name-->
    <condition>
    <action ref="writeToFile"/> <!-- action to be taken, refer to Actions section for the details of the action -->
    </condition>
    </faultName>
    </Conditions>
    <Actions> <!-- All the actions are defined here -->
    <Action id="writeToFile">
    <fileAction>
    <location>Server/Loc/path</location>
    <fileName>Rejected_AJBFile_%ID%_%TIMESTAMP%.xml</fileName>
    </fileAction>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    Fault Binding:
    ``````````````
    <?xml version='1.0' encoding='UTF-8'?>
    <faultPolicyBindings version="2.0.1"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <composite faultPolicy="ProcessNameGenericPolicy"/>
    <service faultPolicy="RejectedMessages">
    <name>PartnerLinkName</name>
    </service>
    <reference faultPolicy="RejectedMessages">
    <name>PartnerLinkName</name>
    </reference>
    </faultPolicyBindings>
    We have SyncFileRead partner link.
    The expectation is: when the message read by SyncFileRead partner link is rejected,
    that rejected message should come to particular directory in the server.
    Could you please help us fixing this.
    TIA.

    HI..
    Have a look at this blog :
    3) Error: HTTP_RESP_STATUS_CODE_NOT_OK 401 Unauthorized
    Description: The request requires user authentication
    Possible Tips:
    u2022 Check XIAPPLUSER is having this Role -SAP_XI_APPL_SERV_USER
    u2022 If the error is in XI Adapter, then your port entry should J2EE port 5<System no>
    u2022 If the error is in Adapter Engine
    u2013then have a look into SAP note- 821026, Delete the Adapter Engine cache in transaction SXI_CACHE Goto --> Cache.
    u2022 May be wrong password for user XIISUSER
    u2022 May be wrong password for user XIAFUSER
    u2013 for this Check the Exchange Profile and transaction SU01, try to reset the password -Restart the J2EE Engine to activate changes in the Exchange Profile After doing this, you can restart the message
    Http* Errors in XI
    Thanks,
    Pooja

  • ERROR in configuration:more elements in file csv structure than filed names

    <p ct="TextView" class="urTxtStd" style="white-space:nowrap;">Hello,<br>we have problem with file content conversion on file (FTP) sender<br>adapter when reading flat delimited file.<br><br>Error:<br>Conversion of file content to XML failed at position 0:<br>java.lang.Exception: ERROR converting document line no. 2 according to<br>structure 'P':java.lang.Exception: ERROR in configuration: more<br>elements in file csv structure than field names specified!<br><br>Details:<br>We have windows machine and line in a file is ended with CRLF.<br>We have PI 7.0 SP10, and following pathches:<br>SAPXIAF10P_3-10003482<br>SAPXIAFC10P_4-10003481<br><br><br>Adapter Type: File<br>Sender<br>Transport Protocol: File Transfer Protocol (FTP)<br>Message Protocol: File Content Conversion<br>Adapter Engine: Integration Server<br><br>FTP Connection Parameters<br>Transfer Mode: Binary<br><br>Processing Parameters<br>File Type: Binary<br><br>Channel: IN_XXXXX_FILE_WHSCON<br><br>Input File: (WZ00008.DAT)<br>N|0025013638||0000900379|0000153226|2007-07-24|2007-07-24||||<br>P|000030|2792PL1|2303061|1|KRT|||||<br><br>Content Conversion Prameters:<br>Recordset Structure: N,1,P,<br>Recordset Sequence: Ascending<br><br>Key Field Name: KF<br>Key Field Type: String<br><br>N.fieldNames: N1,N2,N3,N4,N5,N6,N7,N8,N9,N10<br>N.fieldSeparator: |<br>N.endSeparator: 'nl'<br>N.processFieldNames: fromConfiguration<br>N.keyFieldValue: N<br><br>P.fieldNames: P1,P2,P3,P4,P5,P6,P7,P8,P9,P10<br>P.fieldSeparator: |<br>P.endSeparator: 'nl'<br>P.processFieldNames: fromConfiguration<br>P.keyFieldValue: P<br><br><br>At the same time we have another channel very similar to this on which<br>works:<br><br>Channel: IN_XXXXX_FILE<br><br>Input File: (PZ000015.DAT)<br>N|2005-11-25|13:01||<br>P|0570001988|2005|305|6797PL1|2511091|3500|SZT|2005-11-<br>25|1200|G002|1240|G002|||<br><br><br>Content Conversion Prameters:<br>Recordset Structure: N,1,P,<br>Recordset Sequence: Ascending<br><br>Key Field Name: KF<br>Key Field Type: String<br><br>N.fieldNames: N1,N2,N3,N4<br>N.fieldSeparator: |<br>N.endSeparator: 'nl'<br>N.processFieldNames: fromConfiguration<br>N.keyFieldValue: N<br><br>P.fieldNames: P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15<br>P.fieldSeparator: |<br>P.endSeparator: 'nl'<br>P.processFieldNames: fromConfiguration<br>P.keyFieldValue: P<br><br>Converted file:<br>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br>&lt;ns:PZ_MT xmlns:ns=&quot;<a href="http://xxxxx.yyyyy.hr">" target="_blank" title="Open this link in a new window">http://xxxxx.yyyyy.hr"></a><br>&lt;PZ&gt;<br>     &lt;N&gt;<br>          &lt;N1&gt;N&lt;/N1&gt;<br>          &lt;N2&gt;2005-11-25&lt;/N2&gt;<br>          &lt;N3&gt;13:01&lt;/N3&gt;<br>          &lt;N4&gt;&lt;/N4&gt;<br>     &lt;/N&gt;<br>     &lt;P&gt;<br>          &lt;P1&gt;P&lt;/P1&gt;<br>          &lt;P2&gt;0570001988&lt;/P2&gt;<br>          &lt;P3&gt;2005&lt;/P3&gt;<br>          &lt;P4&gt;305&lt;/P4&gt;<br>          &lt;P5&gt;6797PL1&lt;/P5&gt;<br>          &lt;P6&gt;2511091&lt;/P6&gt;<br>          &lt;P7&gt;3500&lt;/P7&gt;<br>          &lt;P8&gt;SZT&lt;/P8&gt;<br>          &lt;P9&gt;2005-11-25&lt;/P9&gt;<br>          &lt;P10&gt;1200&lt;/P10&gt;<br>          &lt;P11&gt;G002&lt;/P11&gt;<br>          &lt;P12&gt;1240&lt;/P12&gt;<br>          &lt;P13&gt;G002&lt;/P13&gt;<br>          &lt;P14&gt;&lt;/P14&gt;<br>          &lt;P15&gt;&lt;/P15&gt;<br>     &lt;/P&gt;<br>&lt;/PZ&gt;<br>&lt;/ns:PZ_MT&gt;<br><br>And, if we remove last delimiter before CRLF in WZ00008.DAT file then<br>file works, but we dont't have fields N10 and P10 in a XML converted<br>file.<br><br>Converted file:<br>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br>&lt;ns:WZ_MT xmlns:ns=&quot;<a href="http://xxxxx.yyyyy.hr">" target="_blank" title="Open this link in a new window">http://xxxxx.yyyyy.hr"></a><br>&lt;WZ&gt;<br>     &lt;N&gt;<br>          &lt;N1&gt;N&lt;/N1&gt;<br>          &lt;N2&gt;0025013639&lt;/N2&gt;<br>          &lt;N3&gt;&lt;/N3&gt;<br>          &lt;N4&gt;0000900379&lt;/N4&gt;<br>          &lt;N5&gt;0000153226&lt;/N5&gt;<br>          &lt;N6&gt;2007-08-01&lt;/N6&gt;<br>          &lt;N7&gt;2007-08-01&lt;/N7&gt;<br>          &lt;N8&gt;&lt;/N8&gt;<br>          &lt;N9&gt;&lt;/N9&gt;<br>     &lt;/N&gt;<br>     &lt;P&gt;<br>          &lt;P1&gt;P&lt;/P1&gt;<br>          &lt;P2&gt;000010&lt;/P2&gt;<br>          &lt;P3&gt;0212PL1&lt;/P3&gt;<br>          &lt;P4&gt;2007071&lt;/P4&gt;<br>          &lt;P5&gt;1.000&lt;/P5&gt;<br>          &lt;P6&gt;KRT&lt;/P6&gt;<br>          &lt;P7&gt;&lt;/P7&gt;<br>          &lt;P8&gt;&lt;/P8&gt;<br>          &lt;P9&gt;&lt;/P9&gt;<br>     &lt;/P&gt;<br>&lt;/WZ&gt;<br>&lt;/ns:WZ_MT&gt;<br><br>Regards,<br>Mladen Kovacic</p>

    Hello,
    it seems that we have problem with SAP XI AF CPA Cache.
    We make this changes and after this AF Cache stops working.
    •     In the Visual Administrator, in service SAP XI AF CPA Cache, set the SLDAccess parameter to false
    •     Save your entry and start the service
    •     In service SAP XI AF CPA Cache, check that the cacheType parameter has the value DIRECTORY
    •     In service SAP XI Adapter: XI, enter values for:
    o     xiadapter.isconfig.url - http://xidev:8038/sap/xi/engine?type=entry
    o     xiadapter.isconfig.username - XIAFUSER
    o     xiadapter.isconfig.password –
    o     xiadapter.isconfig.sapClient - 001
    o     xiadapter.isconfig.sapLanguage - en
    •     On the Integration Server, use transaction SMICM to check that you have entered the correct URL for the Integration Server.
    •     On the Integration Server, use transaction SU01 to create a new user XIAFUSER
    •     Assign the role SAP_XI_AF_SERV_USER_MAIN to the user XIAFUSER
    •     In the Visual Administrator, check whether the user synchronization was successful
    •     Use the new user to log on to the Integration Server and change the initial password to master password
    Any idea for SAP XI AF CPA Cache update?

  • Error in Adapter Module to unzip files

    Hello ,
    I wish to unzip many files with use of an adapter module
    To du this I use following code
    package de.lsv.moduledevelopement;
    import java.io.*;
    import java.util.Hashtable;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;
    import javax.ejb.CreateException;
    import com.sap.aii.af.mp.module.Module;
    import com.sap.aii.af.mp.module.ModuleContext;
    import com.sap.aii.af.mp.module.ModuleData;
    import com.sap.aii.af.mp.module.ModuleException;
    import com.sap.aii.af.ra.ms.api.Message;
    import com.sap.aii.af.ra.ms.api.MessageDirection;
    import com.sap.aii.af.ra.ms.api.Payload;
    import com.sap.aii.af.ra.ms.spi.Trace;
    import com.sap.aii.af.service.auditlog.Audit;
    import com.sap.aii.af.service.auditlog.AuditDirection;
    import com.sap.aii.af.service.auditlog.AuditLogStatus;
    import com.sap.aii.af.service.auditlog.AuditMessageKey;
    * @ejbLocal <{de.lsv.moduledevelopement.UnZipFilesLocal}>
    * @ejbLocalHome <{de.lsv.moduledevelopement.UnZipFilesLocalHome}>
    * @stateless
    public class UnZipFilesBean implements SessionBean, Module {
         static AuditMessageKey amk = null;
         static String auditStr = "UnzipFilesBean - ";
         static ModuleException mEx = null;
         public static final String VERSION_ID =
              "$Id://de.lsv.moduledevelopement.UnZipFilesBean.java#1 $";
         private static final Trace TRACE = new Trace(VERSION_ID);
         public void ejbRemove() {
         public void ejbActivate() {
         public void ejbPassivate() {
         public void setSessionContext(SessionContext context) {
              myContext = context;
         private SessionContext myContext;
          * Create Method.
         public void ejbCreate() throws CreateException {
              // TODO : Implement
         /* (non-Javadoc)
          * @see com.sap.aii.af.mp.module.Module#process(com.sap.aii.af.mp.module.ModuleContext, com.sap.aii.af.mp.module.ModuleData)
         public ModuleData process(
              ModuleContext moduleContext,
              ModuleData inputModuleData)
              throws ModuleException {
              Object obj = null;
              Message msg = null;
              Payload attachment = null;
              //initializing variables for module parameters
              String modkey = "";
              String fileMask = "";
              String directory = "";
              String saveDirectory = "";
              //     String newMimeType = "";
              //     String newAttachmentName = "";
              //     String newAttachmentExtension = "";
              //     String newAttachmentNameReplace = "";
              //this block is to manage the adapter when is not file/FTP
              try {
                   //get the XI Message
                   obj = inputModuleData.getPrincipalData();
                   msg = (Message) obj;
                   // create AuditMessageKey object to write audit log.
                   if (msg.getMessageDirection() == MessageDirection.INBOUND)
                        amk =
                             new AuditMessageKey(
                                  msg.getMessageId(),
                                  AuditDirection.INBOUND);
                   else
                        amk =
                             new AuditMessageKey(
                                  msg.getMessageId(),
                                  AuditDirection.OUTBOUND);
                   // ******start get the module parameters from the configuration******
                   modkey = moduleContext.getContextData("module.key");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "Module Configuration Key: " + modkey);
                   //***** einlesen der Moduke Parameter******************
                   //***** DateiMaske
                   fileMask = moduleContext.getContextData("FileMask");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "FileMask: " + fileMask);
                   // check ob fileMask definiert ist
                   if (fileMask == null || fileMask.equalsIgnoreCase("")) {
                        //if no attachment name is specified in the module configuration the module will end the execution
                        throw mEx =
                             new ModuleException(
                                  auditStr
                                       + "!FileMask in Modulconfiguration nicht definiert!");
                   //***** DateiMaske2
                   String fileMask2 = moduleContext.getContextData("FileMask2");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "FileMask2: " + fileMask2);
                   //***** Directory
                   directory = moduleContext.getContextData("Directory");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "Directory: " + directory);
                   // Fehler wenn Directory nicht definiert
                   if (directory == null || directory.equalsIgnoreCase("")) {
                        //the module will end the execution
                        throw mEx =
                             new ModuleException(
                                  auditStr
                                       + "Directory in Modulconfiguration nicht definiert");
                   //***** Sicherungs Verzeichnis
                   saveDirectory = moduleContext.getContextData("SaveDirectory");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "SaveDirectory: " + saveDirectory);
                   // entpacken aufrufen
                   entpacke(directory, saveDirectory, fileMask);
                   if (fileMask2.length() > 0) {
                        entpacke(directory, saveDirectory, fileMask2);
                   //update the XI Message
                   inputModuleData.setPrincipalData(msg);
              } catch (Exception e) {
                   String errorMessage =
                        auditStr + "Error bei der . Exception:" + e.getMessage();
                   Audit.addAuditLogEntry(amk, AuditLogStatus.ERROR, errorMessage);
                   throw mEx = new ModuleException(auditStr + errorMessage);
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Verarbeitung beendet ");
              return inputModuleData;
         //+++++++++++++++++++++++++
         private static void entpacke(
              String directory,
              String saveDirectory,
              String mask)
              // TODO Auto-generated method stub
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Funktion entpacke");
              if (!directory.endsWith("\")) {
                   directory = directory + "\";
              } // if
              File f;
              f = new File(directory);
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "f = new File(directory)");
    //          // Achtung Klasse in einer Klasse :-)
    //          String[] strFiles = f.list(new FilenameFilter() {
    //               public boolean accept(File file, String filename) {
    //                    Wildcard wildcard1 = new Wildcard(mask);
    //                    Audit.addAuditLogEntry(
    //                         amk,
    //                         AuditLogStatus.SUCCESS,
    //                         auditStr + "wc1");
    //                    return wildcard1.match(filename, false);
              String [] strFiles = f.list(new MyFilter(mask));
              // Liste der Gefundenen dateien
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Anzahl gepackter Dateien: " + strFiles.length);
              //System.out.println( strFiles.length + " Dateien zum entpacken");
              for (int i = 0; i < strFiles.length; i++) {
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "verarbeite Datei: : " + strFiles<i>);
                   //     System.out.println("f[" + i + "]=" + strFiles<i>);
              } // for
              // *****entpacken**********************
              for (int i = 0; i < strFiles.length; i++) {
                   try {
                        byte[] buf = new byte[4096];
                        ZipInputStream in =
                             new ZipInputStream(
                                  new FileInputStream(directory + strFiles<i>));
                        Audit.addAuditLogEntry(
                             amk,
                             AuditLogStatus.SUCCESS,
                             auditStr + "Entpacke " + directory + strFiles<i>);
                        //System.out.println("Entpacke " + directory + strFiles<i>);
                        int count = 0;
                        while (true) {
                             count++;
                             // Nächsten Eintrag lesen
                             ZipEntry entry = in.getNextEntry();
                             if (entry == null) {
                                  break;
                             // Beschreibung ausgeben
                             Audit.addAuditLogEntry(
                                  amk,
                                  AuditLogStatus.SUCCESS,
                                  auditStr + entry.getName());
                             //System.out.println(entry.getName());
                             // Ausgabedatei erzeugen
                             FileOutputStream out =
                                  new FileOutputStream(directory + entry.getName());
                             int len;
                             while ((len = in.read(buf)) > 0) {
                                  out.write(buf, 0, len);
                             out.close();
                             // Eintrag schließen
                             in.closeEntry();
                        } // while
                        in.close();
                        Audit.addAuditLogEntry(
                             amk,
                             AuditLogStatus.SUCCESS,
                             auditStr + count + "Dateien entpackt");
                        //System.out.println(count + "Dateien entpackt");
                        // verschieben
                        if (saveDirectory.length() > 0) {
                             File quelle = new File(directory + strFiles<i>);
                             File ziel = new File(saveDirectory + strFiles<i>);
                             boolean bla = quelle.renameTo(ziel);
                             if (!bla) {
                                  Audit.addAuditLogEntry(
                                       amk,
                                       AuditLogStatus.SUCCESS,
                                       auditStr
                                            + strFiles<i>
                                            + " konnte nicht verschoben werden");
                             } else {
                                  Audit.addAuditLogEntry(
                                       amk,
                                       AuditLogStatus.SUCCESS,
                                       auditStr
                                            + strFiles<i>
                                            + "verschoben nach "
                                            + saveDirectory);
                                  //          System.out.println(
                                  //               strFiles<i> + "verscgoben nach " + directory + "sik//");
                        } // if
                   } catch (Exception e) {
                        String errorMessage =
                             auditStr
                                  + "Error in entpacken. Exception:"
                                  + e.getMessage();
                        Audit.addAuditLogEntry(amk, AuditLogStatus.ERROR, errorMessage);
                   } // catch
                   // *****entpacken*************
              } // for
         } //entpacke
    } // UnzipFilesBean
    class Wildcard {
         static AuditMessageKey amk = null;
         static String auditStr = "WildCard - ";
         static ModuleException mEx = null;
         private final String wildcardString;
          * Der Konstruktor für die WildcardSuche.
          * @param wildcardString
          *            Der WildcardString
         public Wildcard(String wildcardString) {
              this.wildcardString = wildcardString;
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Constructor");
          * Die Methode, welche den Vergleich durchführt.
          * @param str
          *            Der String, welcher darauf überprüft werden soll, ob er dem
          *            WildcardString entspricht.
          * @return true Wenn der String dem wildcardString entspricht.
         public boolean match(String str, boolean fCasesensitive) {
              if (str == null || wildcardString == null) {
                   return false;
              return recursiveMatch(wildcardString, str, fCasesensitive);
          * Hier wird der eigentliche Vergleich durchgeführt
          * @param strWildcard
          *            Der Wildcardstring, z.B.: "Test*"
          * @param str
          *            Der zu überprüfende String, z.B. "Testlauf"
          * @return true, wenn eine Übereinstimmung vorhanden ist, sonst false
         private boolean recursiveMatch(
              String strWildcard,
              String str,
              boolean fCasesensitive) {
              while (true) {
                   if (strWildcard.length() == 0)
                        return str.length() == 0;
                   char ch = strWildcard.charAt(0);
                   switch (ch) {
                        case '?' :
                             if (str.length() == 0)
                                  return false;
                             break;
                        case '*' :
                             strWildcard = strWildcard.substring(1);
                             while (true) {
                                  if (recursiveMatch(strWildcard, str, fCasesensitive))
                                       return true;
                                  if (str.length() == 0)
                                       return false;
                                  str = str.substring(1);
                        default :
                             if (str.length() == 0)
                                  return false;
                             if (fCasesensitive) {
                                  if (ch != str.charAt(0))
                                       return false;
                             } else if (
                                  Character.toLowerCase(ch)
                                       != Character.toLowerCase(str.charAt(0)))
                                  return false;
                             break;
                   strWildcard = strWildcard.substring(1);
                   str = str.substring(1);
         //++++++++++++++++++++++++++
    } // class
    /** Nun der eigentliche Filter */
    class MyFilter implements FilenameFilter {
         static AuditMessageKey amk = null;
         static String auditStr = "MyFilter - ";
         static ModuleException mEx = null;
         String fileMask;
         public MyFilter(String fileMask) {
              this.fileMask = fileMask;
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Constructor");
         } //constructor
          public boolean accept(File file, String filename) {
              // TODO Auto-generated method stub
              //fileMask = "?5LBL*";
              Wildcard wildcard1 = new Wildcard(fileMask);
              return wildcard1.match(filename, false);
    } //class
    But in Audit Protocol it failed after:
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - Module Configuration Key: 2
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - FileMask: ?5LBL???
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - FileMask2:
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - Directory: //transfer//X1E//100//99//lb//ein
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - SaveDirectory: //transfer//X1E//100//99//lb//ein_s
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - Funktion entpacke
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - f = new File(directory)
    17.09.2008 17:33:19     Fehler     UnzipFilesBean - Error bei der . Exception:null
    I could not find the error??
    Were there any log files to look into?
    regarts
    Zimmerningkat

    Hi Ralf,
    I am late..........
    I am bit confused with your explanation.
    1. Does all zip files will be picked by file adapter in one shot or is it conditional, since you have a XML descriptor file in firts zip file and the XML files describes the list of JPEG files which might be stored in the other zipped JPEG files?
    2. Can you tell the exact flow of your scenario
    3. Receiver in your scenario?
    Thanks,
    Gujjeti.

  • Dynamic file naming with File/FTP adapter

    Hi all,
    I have a requirement for writing files with names of the files based on a customer ID.... a dynamic name based on a value retrieved from the customer DB.
    I have already tried using the dynamic file naming suggestion in the bpel dev guide, it does not work. I followed the instructions, the process fails to compile and throws "part" and "undefined variables" errors etc.
    Has anyone succesfully used file/ftp adapter to write files with dynamic file names (using a varibale), not %SEQ% or %datetime% formats?
    Thanks,
    Hasan

    You can create a header variable that will allow you to set the outbound file name inside the process. This variable is a message type. From the type chooser select:
    Message Types
    Partner Links
    Outbound Partner Link
    Outbound wsdl
    Message Types
    Imported WSDL
    fileAdapterOutboundHeader.wsdl
    OutboundHeader_msg
    This variable will have a part filename.
    Set this part to whatever you wish your file to be named.
    Select the invoke to your outbound file/ftp partnerlink. Move to the adapters tab and select the header variable you created as the Input Header Variable.

  • Sender File/FTP Adapter - Matching Input to Message Type

    Hi,
    I have a sender file/ftp adapter which is using content conversion to generate an XML document from the contents of a text file. This works fine and when I go into the SXI Monitor I can see the XML document I expect:
    <ns:DN_360BalanceExtract xmlns:ns="http://xxx">
    <ns:RN_360BalanceExtract xmlns:ns="http://xxx">
    <BalanceRecord>
       <SerialNo>xx10000780</SerialNo>
       <RegNo>A1</RegNo>
       <LocationTicketIssued>ALBERT ROAD SOUTH</LocationTicketIssued>
       <DateOfOffence>2008-02-15</DateOfOffence>
       <TimeOfOffence>13:38</TimeOfOffence>
       <OffenceDescription>xxx</OffenceDescription>
       <CurrentStateOfCase>RE-OPENED; CLOSED IN ERROR</CurrentStateOfCase>
       <OutstandingBalance>70.00</OutstandingBalance>
       </BalanceRecord
    <BalanceRecord>
       <SerialNo>xx90001245</SerialNo>
       <RegNo>S849KMR</RegNo>
       <LocationTicketIssued>ALBION PLACE</LocationTicketIssued>
       <DateOfOffence>2011-03-01</DateOfOffence>
       <TimeOfOffence>10:59</TimeOfOffence>
       <OffenceDescription>xxx1</OffenceDescription>
       <CurrentStateOfCase>xxx</CurrentStateOfCase>
       <OutstandingBalance>60.00</OutstandingBalance>
    </BalanceRecord>
    </ns:RN_360BalanceExtract>
    </ns:DN_360BalanceExtract>
    Having created the XML document from a text file I now wish to use the XML as input to a web service. This will of course involve mapping the XML document to a message in the inbound interface. Question is how do  associate the XML generated with a Message Type in the outbound interface. Do I need to make sure the Document or Recordset names match that of a Message Type ?
    Cheers,
    PaulC.

    Hi Paul
    The content conversion will create a document like that if you insert DN_360BalanceExtract as Document name, "http://xxx" as namespace.
    RN_360BalanceExtract will probably be your recordset, with its namespace.
    More information about content conversion on sender file adapter:
    http://help.sap.com/saphelp_nw04/helpdata/EN/ae/d03341771b4c0de10000000a1550b0/frameset.htm
    I'm not sure what you mean by bound. If you mean that PI has to execute mapping you created for that DN_360BalanceExtract message type, you need to associate DN_360BalanceExtract to a message interface and then create all configuration objects and choose that message mapping when you create the interface determination object.
    Regards,
    Giuseppe

  • Com.sap.aii.adapter.file.ftp.FTPEx: 421

    Hi Guys,
    I am getting these two error messages:
    1) com.sap.aii.adapter.file.ftp.FTPEx: 421 Maximum session time exceeded - closing
    2) com.sap.aii.adapter.file.ftp.FTPEx: 421 Too many users - please try again later
    when XI Sender File Adapter tries to pick the files from the FTP server.
    I have not set any limit to the number of session for the user that I have mantianied in the adapter. (Niether I know it -:) how to set.)
    Any idea or help, how to resove this error.
    Thanks in adavance,
    Namadev

    Hi Namdev,
    Your this error is coming as your FTP server maximum allowed connection is reached. so as the solution I would suggest to change the Connection mode property of your communication channel as Per File Transfer as default property is Permanently which reserves connection forever.
    So other communication channels cannot communicate. Make this changes to all the communication channel you have configured.
    And your problem is solved.
    enjoy....
    Thanks & Regards,
    Gaurav Patwari

  • File/FTP to ABAP Proxy (file as attachment)

    I have the following scenario: File/FTP -> XI -> ABAP Proxy but not the normal case. What I need is the picked file as attachment and the file name. I hope this is possible.
    I have found the following blogs:
    /people/michal.krawczyk2/blog/2005/11/10/xi-the-same-filename-from-a-sender-to-a-receiver-file-adapter--sp14
    /people/michal.krawczyk2/blog/2006/04/19/xi-rfc-or-abap-proxy-abap-proxies-with-attachments
    I have no idea where I have to start. How I should define the sender and receiver message interface? How I have to configure the sender file/ftp adapter?
    I'm using PI 7.1 SP 7.

    At the moment I have the following problem. I always get an error during mapping the request message. This is the error message:
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Mapping der Request-Message
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>Application</SAP:Category>
      <SAP:Code area="MAPPING">EXCEPTION_DURING_EXECUTE</SAP:Code>
      <SAP:P1>com/sap/xi/tf/_MT_SCANFILE_to_MT_SAP_SCANFILE_</SAP:P1>
      <SAP:P2>com.sap.aii.utilxi.misc.api.BaseRuntimeException:</SAP:P2>
      <SAP:P3>Fatal Error: com.sap.engine.lib.xml.parser.ParserE</SAP:P3>
      <SAP:P4>xception: XMLParser: No data allowed here: (hex) ~</SAP:P4>
      <SAP:AdditionalText />
      <SAP:Stack>Während des Anwendungs-Mappings com/sap/xi/tf/_MT_SCANFILE_to_MT_SAP_SCANFILE_ ist eine RuntimeException aufgetreten. com.sap.aii.utilxi.misc.api.BaseRuntimeException:Fatal Error: com.sap.engine.lib.xml.parser.ParserException: XMLParser: No data allowed here: (hex) ~</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    And if I use transaction sxmb_moni I see that the payload MainDocument is my pdf document and I can read it.
    MG%PDF-1.3
    %âãÏÓ
    2 0 obj
    /WinAnsiEncoding
    endobj
    3 0 obj
    <<
    %Devtype POST2    Font COURIER  normal Lang DE
    /Type /Font
    /Subtype /Type1
    /BaseFont /Courier
    /Name /F001
    /Encoding 2 0 R
    >>
    endobj
    4 0 obj
    <<
    /Length 5 0 R
    u2026.
    I believe there is still an error at my communication channel configuration of the ftp sender adapter.

Maybe you are looking for