Additional Blogs by Members
cancel
Showing results for 
Search instead for 
Did you mean: 
rajasekhar_reddy14
Active Contributor

Recently I worked on one required where I want to download /send files to FTPS server, standard PI File adapter will not support implicit FTPS calls, so I decided to use OS commands (shell scripts) to achieve the same.

 

This is very common requirement where you want to perform Archiving, Logging and changing the file name using Shell script. If you have a prior experience  executing scripts using PI, Logging is not possible, when ever we call script using communication channel it gives only stats message shell script is called or not in communication channel monitoring.

 

If any syntax error occurred or no files found in FTP server or any other exception occurrs it is very difficult to find the root cause, so if you perform logging then you can easily solve above issues.

 

Refer below wiki, it gives basic idea how to write and call OS commands in XI/PI.

 

http://wiki.sdn.sap.com/wiki/display/XI/SAP+XI+File+Adapter+OS+Command+Line+Feature

 

 

 

If you see above image there was a scripting code where I am downloading files from FTPS server and putting in to local XI NFS.

 

Logging :

 

Below statement will generate log file in FTP location with end to end status.

 

exec &> /usr/sap/interfaces/xd5ftp/xxxxxbank/EBS.log

 

>

Changing the File Name:

 

I want to add the time stamp to file before placing in to target directory, below two lines code required, time stamp format you can change whet ever format you want.

 

 

TSTAMP=`date +%Y%m%d%H%M%S`

DSTFILE=XXXXXbankEBS.$TSTAMP.txt

 

Below statement will download all files from source system and copies in to Target directory with time stamp.

 

get *,byparm $DSTFILE

 

 Archiving:

 

If you want to archive the messages in FTP directory add below code in script, this will move files in to Archive directory.

 

# Archive directory

ARCDIR=/usr/sap/interfaces/ftpus/DEV/BackOffice/Bank/Archive

# Move transferred file to archive directory $ARCDIR

 mv $File $ARCDIR