Skip to Content
Author's profile photo Avinash Jha

Understanding & Implementing ILM Part 1

Recently I was assigned to a prototype development which needs to consume ILM framework in ABAP on-Premise system. I have summarized the whole ILM topic into two separate blogs. The first one which we are going to discuss in this blog is to demonstrae the ability to automatically detect and destruct destroyable data (and its related component). Destroyable data could be defined as per customer or business scenario, its customizable. one such business scenario is data that are expired for more than one year could be defined as destroyable .

 

What?

ILM stands for “Information Lifecycle Management”. ILM framework helps to manage data life cycle through a very simple configurable steps and minimal amount of coding and highly flexible for customer. This is very useful as well for GDPR where the purpose could be to delete personal data/information after the user has left the organisation.

 

Why?

one simple answer would be to remove the unnecessary data and lessen the load on our application and DB.

It’s important to mention it could be achieved without ILM framework, however advantage of using ILM framework can’t be ignored more so where time and less complexity is directly related to Total cost of Development.

Advantages:

  1. Auto-enabled Application logging
  2. Least amount of coding
  3. Customizable business scenarios for deciding the destroyable data

 

How?

Pre-requisite

  1. ILM business function must be switched on :  First thing first, you need to ensure ILM business function is switched on. For various reason is some organization it is not switched on. Check with system administrator first.

 

  1. Check ILM Business Function : To check if ILM is switched on or off. Go to transaction SFW5. Find ILM and you can see if its witched on or off.

 

Implementation Steps

Following are the main points that we will be covering in detail

  1. ILM Configuration
  2. Create a custom delete API that perform data and its component
  3. Embed the API into ILM based destruction program

 

 

 

 

Implementation Details

ILM Configuation is to be done at two ends as shown in above figure, one being IRM_CUST which a developer has to do in order to enable the ILM framework, and second being IRMPOL and ILMARA which is at customer end. For latter  developer has to provide consulting note to their respective customer where they can customize the destroyable data definition, this will be explained in part 2 of this blog. we have here explained customization that is to be done by developer for ILM to be operational.

Customization at Developer end:

1 Create a destruction program in SE38 namely SAM_ILM_DES. no coding yet just we need to create a program. you can name anything starting with z or y or your namespace.

2. Configuration for Destruction Object:

DOBJ configuration: Enter transaction DOBJ in command box. Create a new entry. Give any destruction object name associate your destruction program name (created above) with this destruction object.

3. Configuration for ILM Object

Transaction: IRM_CUST Here we create one ILM object and link the above created destruction object to this ILM object.

 

Double click on ILM Objects

 

press “NEW ENTRIES” and here enter you ILM Object Name

 

Define Available Time Reference fields which can be mapped to any time reference fields of    your application table to be used for calculation of retention logic.

 

 

 

 

 

 

  1. ILM Program: Coding Embedding delete API into ILM framework backed program as shown below

  • Add INCLUDE destroy_prg_standard before INITIALIZATION
  • Under INTIALIZATION add PERFORM standard_texts_init.
  • In START OF SELECTION event, a subroutine PERFORM main.
  • Inside main, we need to add four subroutines that are mentioned below.
  • All above steps can be seen in above screenshot of the program

 

Inside routine “main”, we will have following sub routines.

  • PREPROCESSING

  • FILL_WORKLIST – Here we can retrieve the data from main table from which is to be scope of data destruction. Let’s say GT_WORK_LIST

 

  • PROCESSING

 

 

 

  1. You can now run this program in foreground
  2. Or you can schedule this program in background and it will check the data everyday which all data has expired and will delete it

Assigned Tags

      15 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Jelena Perfiljeva
      Jelena Perfiljeva

      Possibly a stupid question but what is this "ILM framework"?

      Not sure if the frequent visitors to the PLM tag are already in the loop on this but considering this was shared with wider ABAP audience it'd make sense to start with a brief introduction.

      Thank you.

       

      Author's profile photo Avinash Jha
      Avinash Jha
      Blog Post Author

      Hi Jelena,

      Thanks for your question and suggestion.

      << Question>> – what is “ILM framework”?                                                                                              <<Answer>> –   ILM stands for Information Lifecycle Management. ILM framework deals with managing  the life cycle of given information(or we can say any data object). It gives a simplified way of processing a data to either archive and delete.

      Regarding your Suggestion

      Thanks a lot, I will definitely incorporate your suggestion . My vision was to enable user who had basic information about ILM but had not implemented it before, it was meant to help them to navigate smoothly as otherwise the configuration steps are very complicated for first time developer. But you are right, it will help larger audience if  ILM is explained at first. I will definitely do so. Thanks again

       

      Author's profile photo Jelena Perfiljeva
      Jelena Perfiljeva

      Thanks for a clarification!

      Possibly another stupid question 🙂 but if it's ILM then why is the tag called PLM?

      Author's profile photo Avinash Jha
      Avinash Jha
      Blog Post Author

      It's not stupid question, there is no primary tag for ILM and the closest i could find which relates to lifecyle of data is PLM. If you know a better primary please let me know.

      Appreciate your help.

      Author's profile photo Jelena Perfiljeva
      Jelena Perfiljeva

      OK. Based on a short investigation, it seems the right tag for ILM is NW Information Lifecycle Management, which you have as a secondary: https://blogs.sap.com/tags/480041978550045079567539109400636/

      Gotta love the SCN tags! 🙂

      Author's profile photo Avinash Jha
      Avinash Jha
      Blog Post Author

      yes Jelena I absolutely agree with you, NW Information Lifecycle Management would mark it better. but there is no primary tag by this, this is only available in secondary. even standalone NW is also not there for taking 🙁

      Author's profile photo Jelena Perfiljeva
      Jelena Perfiljeva

      Hm, that's odd. I just tested new blog post and it's possible to select NW ILM tag as primary. I just started typing "Netweaver Info..." and it came up:

      If it doesn't allow you to update primary tag then a moderator should be able to do that. I've just looked it up and it seems PLM is something completely different.

      Thank you!

      Author's profile photo Avinash Jha
      Avinash Jha
      Blog Post Author

      Yes i am able to, reason i wasn't getting the NW ILM tag in Primary tag was because it was already included in secondary tag. i deleted the secondary tag and then re-added.

      Thanks !

      Author's profile photo Hemendra Sabharwal
      Hemendra Sabharwal

      Hi Avinash,

      Thanks a lot for this nice explanation and beautiful blog, but I would also recommend like Jelena to provide little introduction to the novice users like me. I really appreciate the effort you put in blog...eager to see the part-2.

      Thanks,

      Hemendra

      Author's profile photo Manuel da Silva Santos Gomes Ferreira
      Manuel da Silva Santos Gomes Ferreira

      Hi Avinash,

       

      Great job here! Can you tell us when you intend to share the second part?

       

      Regards,

      Manuel Gomes Ferreira

      Author's profile photo Petrica Avdei-Mina
      Petrica Avdei-Mina

      Hello Avinash,

      Thank you for your blog regarding ILM. There are so little info about this topic…so any info is priceless. ?

      We are trying also to configure ILM, but we are stuck in File System Connections.

      The text from guide sound like this:

      “You need custom connection types to define how ILM Store connects to the file system.Custom Connection Types
      A database used for storing the Archive Development Kit (ADK) content can be connected to the ILM Store through a data base connection using the transaction DBCON. The database connection is always connected to the type of the database or the database type (DBSYS) value. You use the database type value to search in the class factory (TILMSTOR_CF) for a matching interface IF_ILM_STOR_DB_OPERATOR and IF_ILM_STOR_DB_INFO implementation that implements the physical access to the storage media. In the ILM Store the key pair of DBCON/DBSYS points to the required IF_ILM_STOR_DB_OPERATOR| IF_ILM_STOR_DB_INFO pair for accessing any storage media. The assignment for the ILM Store is as follows:●
      DBCON is the connection ID●
      DBSYS is the connection type●
      Customizing for TILM_STOR_BLOB points to a Connection ID.●
      The connection ID entry is used to determine the connection type value from the following:○
      DBCON○
      If it is not a DBCON entry, then from Customizing using the CONSYS.<connection.ID> value in namespace DB●
      The connection type value, in turn, is used to determine the implementation in the class factory for interface implementations IF_ILM_STOR_DB_OPERATOR and IF_ILM_STOR_DB_INFO.”

      Can you please give us a practical example on how it should look like IF_ILM_STOR_DB_INFO?

      I understand that it should be maintained in TILMSTOR_CF, but how? API, parameter, implementing class?

      Or it is a different way to do it?

      Please help us define this connection in order that

      Thank you in advance!

      Best regards,

      Peter

      Author's profile photo Functional Team
      Functional Team

      we are doing same but stuck at ILM store creation with error 598 (I/O error)

       

      were you able to solve your problem ?

      Author's profile photo Sabareshan Venkatesh Babu
      Sabareshan Venkatesh Babu

      Hi Avinash,

      I’m receiving error “No matching rule found for audit area PRODLIABIL of ILM object PM_ORDER ” while running write phase of archiving.

      Help me out on how to fix this.

      Thanks,
      Sabaresh

       

      Author's profile photo Dharshan A
      Dharshan A

      Hi Sabareshan,

      Seems like the object "PM_ORDER" is activated in audit area "PRODLIABIL" in transaction ILMARA but no rule/policy is maintained

      Please check in transaction IRMPOL whether you have maintained a policy and rule in Audit Area "PRODLIABIL" for object "PM_ORDER" and its mandatory to maintain a live rule if its activated in Audit area.

       

      Also if you would like to get answers/guidance from the community quicker, i recommend you raise this as a question instead of commenting on blog post.

       

      Thanks and Regards,

      Dharshan A

      Author's profile photo Vaibhav Vijayvargiya
      Vaibhav Vijayvargiya
      Hi Avinash,
      1.Can we archive a Partner function in ILM? what do u suggest archiving is better or blocking
      2. We want to archive the contact person, FI_ACCKNVK is a data destruction object? what do we mean by data destruction object. Is this the correct object for our purpose
      3. I see a concept of application rule variant, hoe do i set up that, what it mean plz explain with an example
      4. I want to differentiate my policy per country , how can i do that
      5. What policy category should i set up for contact person. ( partner function in ECC) RST or RTP...
      Thanks
      Edison