Skip to Content
Technical Articles
Author's profile photo Poulami Das

POWL Enhancement in SAP TM: Standard Hidden Field and Custom Field in Freight Unit Overview Screen

Introduction

In my previous blog post, I have provided a detailed guide on how to add custom Date/Time Field in
your FPM Application. In this blog post, you will learn how to enhance the Overview screen and add
custom field as well as Standard hidden fields in your active Query in the Overview Screen.

POWL Enhancements are a tad bit different than enhancing FPM applications. They are subject to the Active Query in POWL which is present in the Planning component of NWBC screen in SAP TM.

 

Business Scenario:

We will discuss two scenarios of POWL Enhancement here.
1. Add hidden Standard field (Delivery) in the Freight Unit Overview Screen that are present in the UI Result structure but are not displayed normally.

2. Enhance POWL to add custom field (Original Order) to the Freight Unit Overview Screen.

Display Hidden Standard Fields on Freight UnitOverview Screen (POWL)

 

Step1: Get the Application ID and the POWL Type

Get the Application ID and the POWL Type using the Function Module POWL_QUERY_REFRESH. Put a Breakpoint on the below statement and open/refresh the Overview Freight Units screen on NWBC screen. When you refresh or open the screen, it will stop at that point.

Here, the Application ID is ‘SCMTMS_POWL_FU’ and the POWL Type is ‘SCMTMS_TOR_FU’.

 

Step2: Go to TCode ‘POWL_COCKPIT’ and get the Feeder Class

In the TCode ‘POWL_COCKPIT’, choose the ‘Standard POWL’ radio button and execute.

Choose ‘Maintain Type’ button in the next screen.

Now, search the list using the POWL Type you obtained in STEP1. Once you identify the POWL TYPE, get the corresponding Feeder Class by double clicking the POWL Type.

The POWL Feeder Class here is ‘/SCMTMS/CL_UI_POW_FD_TOR_FU’.

 

POWL Feeder Class is the access point for a POWL. And in TM, there is a one-to-one relationship
between a Business Object Query and a Feeder Class. A Feeder Class holds all the relevant details of a Query like selectioncriteria, field catalog etc.

 

Step3: Get the Selection Criteria Structure and Result Structure

Go to SE24 TCode and open the Feeder Class obtained in the previous Step. Keep a breakpoint on the below statements at the method ‘CONSTRUCTOR’ of the POWL Feeder Class/SCMTMS/CL_UI_POW_FD_TOR_FU’.

The Structure ‘/scmtms/if_ui_pow_const=>co_output_structure_name-fu’ will have the result structure (Output Structure) and ‘/scmtms/if_ui_pow_const=>co_selcrit_structure_name-fu’ will have the selection criteria structure.

Result Structure: /SCMTMS/S_UI_POW_R_FU

The Result Structure contains the list of attributes that are going to be displayed on the Overview
screen.

Selection Criteria Structure: /SCMTMS/S_UI_POW_S_FU

The Selection Criteria Structure contains the list of attributes that are available as selection criteria
for the queries. According to the first Business Scenario, we will first enhance the Result Structure and insert the field ‘Delivery’.

Step4: Enhance the Field Catalog Method of Feeder Class for Display

We need to enhance the below method of Feeder Class to display the hidden Standard Field. Here,
the Standard Field is already available in the Result Structure but is not enabled. We need to enable
this field and make it visible.

Class -> /SCMTMS/CL_UI_POW_FD_TOR_FU
Method -> IF_POWL_FEEDER~GET_FIELD_CATALOG

Step5: Manipulate the Data in GET_OBJECTS Method of Feeder Class

However, in case of field BASE_BTD_ID (Base Business Transaction Document), the FU BO Structure has all the original order details including SO, STO, PO, Delivery etc. Therefore, to restrict all values except Delivery, we need to add below custom code in the below method to manipulate the data flowing into the Result Structure.

Class -> /SCMTMS/CL_UI_POW_FD_TOR_FU
Method -> IF_POWL_FEEDER~GET_OBJECTS

Step6: Refresh the POWL Query to get the changes reflected in UI.

 

Display Custom Fields on Freight Unit Overview Screen (POWL)

This scenariois like the above scenarioin some aspect. The difference is that in this case, the Custom Field to be added (Original Order: SO/PO/STO) is not present in the Result structure or the Selection Criteria Structure.

Therefore, we need to add the custom field in both the Result and Selection Criteria Structure.

As we are adding the custom field in the same Freight Unit Overview Screen like the above scenario,
few steps will be common in both. So, without further ado, lets get started.

1st Step: Repeat Step1 to Step3 to get the Feeder Class as well as the Result Structure and Selection Criteria Structure.

• Result Structure: /SCMTMS/S_UI_POW_R_FU
• Selection Structure: /SCMTMS/S_UI_POW_S_FU
• Feeder Class: /SCMTMS/CL_UI_POW_FD_TOR_FU

 

2nd Step: Add Custom Field to the Result Structure and the Selection Criteria Structure

3rd Step: Enhance the Field Catalog Method of Feeder Class for Display

Class -> /SCMTMS/CL_UI_POW_FD_TOR_FU
Method -> IF_POWL_FEEDER~GET_FIELD_CATALOG

 

4th Step: Populate Data in Custom Field

The code to obtain the data from the node structure is given in the previous scenario. Here is the
code to map the data to the custom field.

Class -> /SCMTMS/CL_UI_POW_FD_TOR_FU
Method -> IF_POWL_FEEDER~GET_OBJECTS

5th Step: Map the UI Fields with the BO Node Element

Go to SE38 and execute Report /SCMTMS/MAINT_QUERY_ENH.

Here, the Original Order Field data is already fetched by the Query FU_DATA_BY_ATTR and is
present in the DOCREF structure. Therefore, we only need to enhance and map the Result Structure
field with the BO Node element.

Therefore, we only need to enhance the Result Structure. Choose the Result Structure and execute.

The FU details are present in the TOR structure and can be fetched using the Query
FU_DATA_BY_ATTR. Moreover, the Original Order data is present under the BASE_BTD_ID field of
DOCREFERENCE Node. Hence, we do not need to add any custom field in the node structure. We can just map the BASE_BTD_ID field to our UI Custom Field ZZORG_ORD.

Once you have maintained the above details, save and capture in TR to imported to higher
environments.

6th Step: Refresh the POWL Query to get the changes reflected in UI.

 

Conclusion

We can achieve a lot of custom requirements by enhancing the methods of the POWL Feeder Class
and doing the necessarymapping with the BO Node Structure. Give it a read and let me know if it is
helpful. Also, do let me know if any corrections need to be made.

Assigned Tags

      2 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Rahul Kumar
      Rahul Kumar

      Good Explanation

      Author's profile photo Poulami Das
      Poulami Das
      Blog Post Author

      Thanks Rahul