Skip to Content
Technical Articles
Author's profile photo Michal Krawczyk

PI/XI: how to get an XML file from a web page without own development

One of the quite popular requirements mentioned on the Process Integration forum on SDN
is retriving an XML file from the web page. It may sound strange but SAP PI/XI
does not support such a functionality out of the box (as there is not adapter that
could do it). So what kind of options do we have? Do we need to build our own
adapter or at least java proxy for that purpose? It turns out there might be a few
workarounds and one of them is to use…. file adapter ๐Ÿ™‚
One of file adapter features let’s you use something that is called Operation system command
which allows you to start a script on the OS level. But how can this help me, you may ask?
If you’ve ever heard about a tool like wget then this should definately ring a bell ๐Ÿ™‚
It turns out that we can quite easily use a tool like wget (or any other command line
application that downloads files from the internet to fill our requirement.

Let’s take a look at a sample scenario:

We need to retrive daily exchange rates from the web page and upload them into
SAP ECC (as exchange_rate01 IDOC for example which does that in standard)

How do we do that:

1. we can create a small report in SAP ECC that will send (via RFC or ABAP Proxy)
an indicator to get the file from the web page – later on we can schedule it
to run daily in order to download the exchange rates file only once a day

2. once the message will reach SAP PI/XI it will get transformed into a file
and placed into a folder – we don’t care about this file as it has only the inidicator
for the download in the payload

3. the file adapter will execute an OS command (command after processing option)
which will be a script (.bat file in case of windows) that will retrive the XML file from the web

4. in order to prepare the script we need to download wget (for windows in my example):
http://users.ugent.be/~bpuype/wget/
(you can use any other wget version)

and then this is our script’s code:

Point to notice
(we can also specify the directory to which the XML file should be downloaded)

5. then we only need to create a new scenario – file -> IDOC where the source will
be the XML file downloaded from the web page

Picture below shows you how this can work:

More advanced options:

Some of you might say: “But my file does not have the same name each time
it changes as it has the date inside”. This is also not an issue,
try the code below to get the date:

@For /F “tokens=1,2,3 delims=. ” %%A in (‘Date /t’) do @(
Set Date=%%A
)

@echo Date = %Date%

and later you can use this date variable to specify the name of the file

Hope this approach may some some of you some time with doing advanced (adapter, proxy)
development on SAP PI/XI

Assigned Tags

      13 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member
      Hi Michal,
      Thanks a lot for the wonderful blog, currently we are facing a requirement where we need to take exchange rate from site of Bank of Canada and update R3 system.
      Our blog will help us do this in a simplified manner.

      Regards,
      Gautam Purohit

      Author's profile photo Michal Krawczyk
      Michal Krawczyk
      Blog Post Author
      hi Gautam,

      hope it will be useful for your exchange rates too as you can even do a simple parsing of a page with this tool (to get the name) 

      Regards,
      Michal Krawczyk

      Author's profile photo anuradha boddapati
      anuradha boddapati
      Hi Michal,

      Which wget do we need if our PI server is installed on unix?

      Regards,
      Anuradha

      Author's profile photo Michael-John Turner
      Michael-John Turner
      Depends on your Unix platform - wget is open source and should compile on whatever platform you're using. Binaries are available from wherever you usually obtain third-party software (eg, your distribution in the case of Linux, Blastwave for Solaris, AIX toolbox for AIX, etc).

      See http://www.gnu.org/software/wget/ for source code.

      Author's profile photo Paul Medaille
      Paul Medaille
      Hello Michal -

      Another great blog...thanks.  You are consistently the most interesting PI blogger on SDN.

      Paul

      Author's profile photo Michal Krawczyk
      Michal Krawczyk
      Blog Post Author
      Hi,

      thank you Paul, I appreciate it ๐Ÿ™‚

      Regards,
      Michal Krawczyk

      Author's profile photo Former Member
      Former Member
      Hi,

      I have done this very recently for the same purpose, from last one week I am planning to write the blog on this but ...... project work....
      This is indeed a very user thing.
      here is the list of all wget options.
      http://linux.about.com/od/commands/l/blcmdl1_wget.htm

      Author's profile photo Former Member
      Former Member
      typo... read it as "very useful thing"
      Author's profile photo Michal Krawczyk
      Michal Krawczyk
      Blog Post Author
      Hi,

      glad that it's a commonly used functionality
      now maybe more people will be able to use it ๐Ÿ˜‰

      Regards,
      Michal Krawczyk

      Author's profile photo Former Member
      Former Member
      HI,
      our customer required download this XML file from a webpage via SAP PI - http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

      It's a European Central Bank rates.So I've already done without own development and with standard adapter of PI.

      Author's profile photo Suman Saha
      Suman Saha

      Hi,

      How did you achieve using Standard PI Adapter?

      Regards,

      Suman

      Author's profile photo Former Member
      Former Member
      Hi Michal,

      Thanks for an another excellent blog for sharing alternative way to advance development with java proxies/adapter development on such req with webpage.

      But,could you please also comment upon from maintenance/monitoring perspective on usage of script at OS level or Java proxy and with future PI upgrade versions 7.3 for recommonded option here?

      Thanks,
      Anoop Garg

      Author's profile photo Karthik S
      Karthik S

      Hi Experts,

      I have gone through the blog and i have the same scenario and anyone tell me the steps for the below case .

      I have a dynamic URL(website) where the currency rates are updated on a daily basis .

      http://cbrates.rbc.ru/tsv/***/2017/11/06.tsv

      1 70$

      where *** - is the dynamic value which will be passed from SAP ECC

      then follows the /2017/11/06 - Current date

      - I dont want to use HTTP_GET to get the dollar value and update it in SAP table .

      - I want to use PI where i will be passing this linkย http://cbrates.rbc.ru/tsv/***/2017/11/06.tsvย in a dynamic way and fetch values from website and update in SAP tables .

      Can anyone suggest an idea how to achieve it via PI ?

      Regards,

      Karthik S