Skip to Content

Background

Why BPM Scheduling

Suppose you have a business case to transfer bulky data from your legacy database to ERP system at 6am daily. Unfortunately, JDBC sender channel does not promise when exactly this activity will be triggered every day (hopefully in the future patches it will do). For this, another approach, which combines the use of client proxy and BPM, has been discussed in Siva Maranani’s post. As you will see, this approach looks a bit tedious but does help me to meet the scheduling requirement.

A big picture

As depicted, this approach comproises the following steps:

  • Use SM36 Job scheduling mechanism to schedule a report which sends a trigger message to BPM via client proxy. For this, you need to create another client (I call it ABAP proxy client) within the XI server, since IS client can not send a message to itself.
  • From BPM, the integration process is triggered and starts processing the JDBC requests and subsequently send the results to ERP system.

The realization of this approach requires some basis configuration, ABAP coding, as well as BPM development. The following is the end-to-end implementation story in my project.

Implementation Story

Basis Preparation

Prepare an ABAP proxy client
  • Suppose your Intergration Server runs on client 001. Let us call it IS client.
  • In SCC4, create a new client (say client 002) via client copy with Customizing option. This client acts like an Application System to generate ABAP proxy calls to IS client.
  • In BD54, create a logical system (say XGSCLNT002) to assign to client 002.
    image
  • Log on to client 002 with SAP_ALL dialog user.
  • In SM59, create a type H destination with the host name (localhost) and the HTTP port of the Integration Server. Note that the HTTP port refers to ICM port, instead of J2EE port, in this case.
  • Under Technical Settings tab, enter “/sap/xi/engine/?type=entry” as the Path Prefix.
    image
  • Under Logon & Security tab, select “SAP Standard” as authentication method. The logon user must exist in your IS client as an Application Service user.
  • When you try to save this destination, the system will prompt a warning message indicating “Query String not allowed”. Simply press enter to ignore this warning, and save the destination again.
  • Perform connection test. The following screen indicates a successful test result.
    image
  • Now you are going to configure the local Integration Engine in client 002. Go to SXMB_ADM -> Integration Engine Configuratin.
  • Specify “Application System” as the role of business system.
  • For “Corresponding Intg. Server”, enter “dest://INTEGRATIONSERVER” to point to the HTTP destination we just created.
    image
  • Application Server utilizes sender queues (XBTS*) to communicate with Integration Server. Therefore, go to SXMB_ADM -> Manage Queue, and register the sender queues.
    image
Configure SLD
  • In SLD, create a Business System representing client 002
    image
  • Under “Installed Products” tab, include the necessary SWCVs for your implementation scenario.

Implement a simple scenario

This simple BPM example serves as your appetizer only. You can extend your own Integration Process to handle JDBC or file pulling. 🙂

Configuration in Integration Repository
  • As shown, the Integration Process (ip_abap_proxy_test_msg_sent_xgs_02) contains only a Receive step to accomodate the trigger message.
    image
  • Define a message type for your trigger message.
    image
  • Define an abstract message interface (mi_proxy_test_abs_async) to be used in your Integration Process.
    image
  • Likewise, define the corresponding outbound message interface (mi_proxy_test)
    • Category: Outbound
    • Mode: A synchronous
    • Message Type: mt_proxy_test
Configuration in Integration Directory
  • Import the business system representing the ABAP Proxy client from SLD. You need it to define Receiver/Interface determination later.
  • Flip to the Sender tab and you should be able to locate the outbound message interface we created in IR.
    image
  • Define Receiver/Interface Determination like the following:
    • Sender service: XGSCLNT002
    • Sender interface: mi_proxy_test
    • Receiver server: ip_abap_proxy_test_msg_sent_xgs_02
    • Receiver interface: mi_proxy_test_abs_async
    • Mapping program: not required
    • Receiver agreement: not required
Proxy Generation
  • Log on your IS client (client 001).
  • Go to SPROXY. Drill down to the corresponding outbound message interface (mi_proxy_test). In the context menu, click on “Change/Regenerate” to generate the ABAP classe for the client proxy.
    image
  • Likewise, generate ABAP structures from your message type and data type.
  • Test your proxy interface from menu Proxy->Test Interface. The following screen depicts a successful result.
    image
Write a report to send an async message via client proxy
  • Basically the report instantiates the client proxy, and triggers an aynchronous message by calling its execute_asynchonous method.
    image
  • To debug and test your report, log on to your ABAP proxy client, instead of IS client.
Schedule your report from ABAP proxy client
  • Log on to client 002.
  • In SM36, define a background job.
    • Create a step for the ABAP report ZBLOG_ABAP_PROXY.
    • Specify start date/time and recurring period.
Verify your scenario
  • Log on to IS client (client 001)
  • In SXI_MONITOR, locate a corresponding process ID. The following screen indicates the successfully completion of a scheduled job.

    image

References

Last but not least, special thanks to Mr. Li Huai Liang, Liu Bing and Joh for helping me in various ways to make this story complete.

To report this post you need to login first.

7 Comments

You must be Logged on to comment or reply to a post.

  1. Ravikumar Allampallam
    Raymond,

    I am not clear as to why we have to create another client on XI, which will act as the application system. In a real scenario, you will have ECC / SRM / CRM system where the client proxy is going to exist and the scheduling of that proxy can be done on that system.

    If you have done that, just for the purpose of demonstration, that’s OK, but it it misleading as you have not explained the reason.

    Regards,
    Ravi

    (0) 
    1. Anonymous
      Hello,

      JDBC Scheduling is going to be available in the coming SP.. I think SP21… We ran into a simillar issue with JDBC adapter took the approach you presented with a little difference. We had the initiating proxy call from ERP.

      Regards,
      Naveen

      (0) 
      1. Anonymous
        Naveen,

        Thanks for your information about SP. I think scheduling capability on JDBC or FTP is long wanted. 🙂

        Regards!
        Raymond

        (0) 
    2. Anonymous
      Hi Ravi,

      thanks for commenting. No doubt that using any Application System in your landscape is also viable. I think the decision depends on which department (or adminitration team) is responsible for the operation of the scheduled programs. To have another client within XI, it allows BPM scheduling to be centrally managed by your integration team if this is kind of company policy. 🙂

      (0) 
      1. Ravikumar Allampallam
        I still can’t see BPM scheduling could be a reason for creating another client on XI box. When you create a another client on XI, that means you are creating almost a clone of a existing one, that means the DB size will be almost doubled, and I am not even talking about the overhead of maintenance of the other client in terms user management, the users will have to be trained to logon to a different client to schedule the job. BASIS team will not agree to create a client for this purpose.

        Moreover, like Naveen has mentioned, adapter scheduling is being released in the next version. Given that I don’t think we can even propose this solution to the customer.

        Regards,
        Ravi

        (0) 
        1. Anonymous
          Hi Ravi,

          Glad that you expressed valid concerns about creating another client in XI. 🙂 In implementation, consultant will sit together with the customer to discuss and evaluate the pros and cons carefully before making decision.

          Creating another client does pose some overhead to the basis work. As quoted from my post, you need to perform client copy with “Customizing” option from client 000 therefore the client is thin (size is not doubled). For maintanence of scheduled SM36 job, the customer shall assign a person (XI basis/admin) to do it centrally, but not developer themselves.

          To further the discussion, I wish to highlight another advantage of having another client in your XI box. It allows your BPM scheduling to be a more generic solution, say when you schedule data transfer between non-SAP systems, e.g., from a database to MQ or from an FTP site to a database, etc. In these case, it may be less relevant for another SAP system (ERP/SRM/CRM) to take up the scheduling work.

          I longed for the next release of SP also. 🙂

          Kind regards!
          Raymond

          (0) 

Leave a Reply