There is no simple way to communicate between external system and SAP BW. Below is the business scenario where we will need the communication:
Planning application (Cognos planning application) is running on SQL Server. After planning process is completed, it’s populating few tables with planning data. Updated data will need to be loaded to SAP BW as a nightly batch process.
Now question is how SAP BW would know that planning process in Cognos has completed and data is ready to be uploaded to BW!!!! There is no standard way of communication. One option was to set flag in a table in SQL Server. Process chain in BW will keep bringing that record from that table again and again …and whenever BW find that flag in the record in the table, it means planning process is completed in Cognos server. It does not look like a straight forward option and requires a lot of development! You will have to a create logic in planning process in Cognos to update the flag, then in BW you need to trigger the process chain again and again..and then in BW you need some logic to find whether flag is there or not…
Below is the approach that we followed to communicate between Cognos and BW (and can be followed to communicate any external system and SAP BW)
1. Create a Event (say ZEVENT) in SAP BW. Use T-Code SM64 for this.
2. Use this Event to trigger process chains that will load data from External system.
3. Create a External Operating System Command in SM69 to trigger this Event. Syntax will be as below:
\\BWSERVERNAME\sapmnt\sapevt\sapevt.exe ZEVENT=BWSERVERNAME pf=”Default Profile Path in BW”.
If not sure, ask basis to help you. They will give exact path of sapevt.exe and Default profile.
So now we are ready with external system command. We just need to call this command from external system… And this will trigger process chain in BW system. We will need to copy few .dll files from SAP BW server to external server (Planning Server/Cognos Server). Those files are icudt30.dll, icuin30.dll, icuuc30.dll. So we are all set to use that external command from the external system.
Is it so simple? Then why I am writing this blog??? Ok…what if Planning application server is 32 bit and SAP BW is 64 bit server( offcourse it will be 64 bit)…then…above command will fail because sapevt.exe is a 64 bit application and you cannot call this application from a 32 bit server…so now???
There is one way…
4. Download PStools from http://technet.microsoft.com/en-us/sysinternals/bb897553. Copy PsEXec from this toolset and copy it to planning application server (32 bit server). This application will execute application in the target server (SAP BW) instead from the calling server (Cognos planning server).
So run below command in your planning server (32 bit server):
C:\>psexec \\BWSERVERNAME\sapmnt\sapevt\sapevt.exe ZEVENT=BWSERVERNAME pf=”Default Profile Path in BW”
This command will trigger Event ZEVENT in SAP BW, which will trigger process chain in SAP BW. This is what we wanted!!!!!! Happy days…
Planning application can execute above command easily with the help of batch file etc!!
Seems so easy! But believe me it took a lot of time to figure out this way and I am not a Basis consultant…I am a SAP BW consultant!