Recently I worked on one requirement in my project, to stop the processing of duplicate files if the file has been already processed earlier. There was a chance that client might place a file at FTP location more than ones.
This requirement can be achieved using different ways
Using adapter module to stop processing duplicate files at adapter level. Refer below link which explains how to deal with this kind of requirements using Adapter module and really good design.
But due to certain limitations from my client end (no adapter modules) decided to use other design.
- Created one function module in ECC and written logic like BAPI has one request /response parameter and request parameter value is Sender File name from PI.
- After executing an interface for new file (Eg: Inventory.xml) first time it will store file name in SAP Table and return response as “NE”(not exists).
If same file (Eg:Inventory.xml) placed in FTP then RFC lookup checks against entries in table
and returns response as “E”(Exists).
Below is the function module code.
PI7.1 onwards we can perform RFC look up using standard graphical function.
Dynamic configuration UDF used to retrieve sender file name and provide as a request to the RFC lookup.
Throwing exception at mapping level for already processed files,used simple UDF code used to check the RFC look up response beased on that manually failed message mapping with custom message.
1) This design has certain limitation like if RFC lookup fails due to RFC adapter issue or ECC-PI connectivity issue then it won’t check against table entries in SAP.
2) I provided this sulution as a temporary and requested my client to fix the problem from bussiness end.
3)I prefered this design because the load going to be very less and only5 files per day.