Skip to Content

SAP PO Message Storage

Hi All,

We are currently migrating from SAP PI 7.1 system to SAP PO. we have few interface (proxy to http) connecting to third party where xml message is converted to JSON.

Third party wants this messages to be stored for longer time(3 to 4 yrs).In SAP PI system we had used Abap program to to store this messages in tables.

In SAP PO since we don't have ABAP stack ,how can we achieve message storage?

Thanks,

Sahana

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

3 Answers

  • Best Answer
    Mar 27, 2017 at 02:49 PM

    Hi Shana,

    You have several choices depending your requeriment:

    1. Use SAP PI Archiving https://archive.sap.com/discussions/thread/3258808

    2. You can use at mapping level a java mapping to store the data in a third system.

    3. You can do a multi-mapping to have an extra receiver to store data.

    4. You can do a Z table in the sender system and store the data in the response.

    Regards.

    Add comment
    10|10000 characters needed characters exceeded

  • Mar 27, 2017 at 04:47 PM

    Hi Sahana,

    Is there reasonable rationale behind storing processed messages for such a long time in SAP PO? This is a middleware system, it is not intended to be used for such long-term audit trail. In contrast, if there are any legal or business driven requirements for long-term storage of application data, they are normally handled and satisfied by corresponding application systems that are processing this data - here, either sender or 3rd party receiver system.

    Storage of such long-term data in PO's database (for example, in custom tables) violates the entire design and use of its database, which is intended to be lightweight and is not intended to be used as storage for application data. Drawback of decision to store such long-term data in PO's database is increased database size and associated maintenance efforts.

    Archiving destination in PO systems is not interface specific - which means, all messages which are due to be archived, are moved to the same archiving destination by the executed archiving job. This may significantly increase requirements for archive data storage size, if you are about to store archived PO messages for 3-4 years.

    As suggested by Iñaki, it is technically possible to use an extra receiver system that will be associated with the data storage to where messages are sent for long storage, but this introduces potential inconsistency issue in case the main interface succeeded in processing the message and the supplementary interface used for storing message data in a long term storage, failed.

    Invocation of message data storage for long-term purposes from the mapping makes me raise a question about how the flow shall progress if this function fails? Shall it progress further with the delivery of the message to a 3rd party system (then the 3rd party system receives data, even though it didn't get persisted in long-term storage - inconsistency issue), or shall it fail with error (then availability of the long-term storage is strong dependency on operations of the interface and delivery of data to the 3rd party system is highly dependent on availability of long-term storage). Moreover, unless call to long-term storage is done asynchronously from the mapping, it will also impact interface performance, since in synchronous communication with long-term storage, where PO expects to receive confirmation/error in response to request for persistence of message data in long-term storage, PO will have to wait until such response is received, before progressing with message processing to the 3rd party system.

    As you can see, there are technical options to fulfil such a requirement and they were described by Iñaki, but all of them introduce technical debt to solution or impact runtime / performance, in case implemented on top of the PO system.

    Regards,

    Vadim

    Add comment
    10|10000 characters needed characters exceeded

    • Hi Vadim,

      It is always a interesting point of view your thoughts and comments. I think to introduce an extra way to store the messages is a task that should be study deeply, may be i should be enough to store in the sender system a part of the message response and taking into account the message size and the number of messages per a day. For example, i had a sync scenario that it is necessary to have an auditory during a long time and i store only a part of the data in the sender system and the scenario is executed only five or six times per a day.

      Regards.

  • Mar 27, 2017 at 04:01 PM

    You can create AS JAVA table in PI JAVA Stack and use the same.

    There is a concept of CAF (Composite application framework). You can explore this as well.

    Thanks,

    Apu

    Add comment
    10|10000 characters needed characters exceeded