Skip to Content

As part of the gATP implementations, I found some additional flexibility in terms of BOP processing. If you take a look at the list of BOP filter fields, they are pretty much limited and they may not fit into the business requirements of different industries as some might be interesting in deciding the BOP confirmations to happen at a restricted list like Shipping point, Sales order level, ATP group level, Customer group etc., or a combination of these.

To achieve this functionality SAP has provided couple of structures which can be enhanced as shown below and to account them to work with BOP, you need to implement couple of user exits as the underlying filtering has to be done for the field that has been added.

Now, let us consider a business scenario where in a user wants to run BOP only for a selected list of Sales orders and the reason why he wants to select only these set of orders could be due to many reasons and varies from business to business :-

As a first step, enhance the following structures with the new field “Sales order number”

/SAPAPO/BOP_CATALOG_FILTER_BM

/SAPAPO/BOP_CATALOG_FILTER

Once the above filters are added, you can see that the newly added field is part of the filter selection and it can be added to your filter as shown below.

DELNR.JPG

You can also see that the field is available now in the BOP filter as shown below.

BOP Filter.JPG

Now, to make it work and to run the BOP only for those selected list of sales orders, you need to make sure that you implement the following user exit and exclude all the POSGUIDs ( order lines ) which are to be excluded and select only the ones that are required.

EXIT_/SAPAPO/SAPLBOP_FILT_010

In the above mentioned user exit, you have a parameter called CT_BUFFER which actually contains the list of documents that are selected to undergo BOP check and you can find all those GUIDs there. As a first step, you need to read the sales orders that were entered in the selection screen by using the function modules   ( First you need to read if the sales order has been extended in the filter using FM /SAPAPO/BOP_FILTER_GET_DETAIL – Pass BOP_FILTER as program class, second you need to read the variant details of the filter using FM RS_VARIANT_CONTENTS )

Once the list of POSGUIDs is retrieved for the sales orders that were entered in the selection screen, you just need to implement a piece of code that reads the above mentioned internal table CT_BUFFER and set the status as “D” in the field “STATUS_ITM” for those which doesn’t match with the selection screen relevant POSGUIDs.

Once the above user exit is implemented, system works in such a way that unnecessary documents are not ATP checked in BOP, however those documents are still displayed in the BOP results screen, which remains to be an incomplete solution. Hence, to achieve the same you need to implement the following user exit to restrict the unnecessary documents from displaying.

EXIT_/SAPAPO/SAPLBOP_100

In the above mentioned exit, read the entries in the internal table CT_BUFFER_DISPLAY that has the status as “D” or “Unchecked” and restrict them from displaying by deleting them from the internal table.

This ensures that BOP gets executed only for the relevant set of documents that you’ve entered in the selection screen.

To report this post you need to login first.

6 Comments

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

  1. Abhijeet Kapgate

    Hi Babu,

    Very nice document.

    I have a similar requirement to add sales org and user status(from sales order item)

    in the BOP filter.I followed the steps, and could add sales org only in the filter variant.

    Could you guide on how the filter logic has to be written in the user exit EXIT_/SAPAPO/SAPLBOP_FILT_010 and how the values will be transferred from and to ECC.

    The screen shots in the post above are not visible.

    Thank You.

    Abhijeet Kapgate

    (0) 
    1. Babu Kilari Post author

      Hello Abhijeet,

      Sorry, I have missed to see this question. Since you have added the Sales org field in the field catalog, the information would be already available in APO after saving the sales document that was created/changed. Now, you should write the filter exit logic in such a way that the sales orgs that were entered in the selection screen is respected and only those POSGUIDs that belong to the above sales orgs should be proceeded further for ATP checking. Those that do not match the selection should be ignored for ATP checking. You need to pass the status_itm as “D” to restrict that. I have mentioned that information in the document.

      Hope this helps.

      Babu Kilari
      SCM APO Consultant.

      (0) 
      1. Abhijeet Kapgate

        Hi Babu,

        The user-exit ‘FV45VFZY_USEREXIT_CATALOG_VALU’ does not get triggered at the time of saving the order, then how to capture the runtime changes in the item level (say in additional data tab A) that are to be moved to APO thru structure US_CATALOGUE ?

        Regards,

        Abhijeet

        (0) 
        1. Babu Kilari Post author

          Hi Abhijeet,

          As a first check, please try to see if there is any CIF queue that is getting triggered for the changes that are being done in Additional Data menu of the sales order. You can check this by stopping the CIF queues for your user id. If you’re sure that the CIF queue is getting triggered for Additional Data changes as well, then I am sure that this user exit should also be getting triggered. You can reach out to the place by setting an external break-point and updates changes selected during the saves process of sales document. Hope this helps.

          Babu Kilari

          (0) 
  2. Mallikarjun Gokle

    Hi Babu,

    Thanks for the detailed information.

    I can’t see the screenshots of your post for some reason.

    I wanted to know the field for Sales Order to be used in Filter Type – Is it VBELN (Sales document) or DELNR (Order Number (OLTP)) ?

    Thanks in Advance,

    MG

    (0) 

Leave a Reply