How to extend cargo management tab in the cockpit?
We are trying to add the consignee description to the cargo management tab in the cockpit. We have identified the component as /SCMTMS/WDCC_BOOK_LOAD, but we have problems to find what is the structure that must be extended to add the new fields, as well as the method to fill these fields. Would there be a kind of procedure to find this information by ourselves? We have done this kind of thing in the past, but other developpers had created a new component and it was easy to just modify the same Objects (also described in note 1818803). But now we start from scratch...
Also, is it better to copy the component configuration and modify it directly (how to use it in the cockpit then?), or is OK with creating some customizing for the existing component?
Thanks for your input
Dragos Mihai Florescu replied
I strongly advise to create a customizing for the component, instead of copying, but technically both work.
The UI structure is maintained, in the corresponding FBI view, whose name can be determined as per here: UI: Determining the names of the relevant repository objects
In this case, it is /SCMTMS/S_UI_FRE_ORDER_OVW, which needs two additional fields, like SHIPPER_DESCR and CONSIGNEE_DESCR.
To fill this fields with data, I suggest to create an enhancement in class /SCMTMS/CL_UI_CONVERSION_TOR. Add a POST-Exit to the method BUILD_MAP_TABLE, in which you write:
IF iv_ui_struct = '/SCMTMS/S_UI_FRE_ORDER_OVW'.
mv_call_exit = abap_true.
This will trigger the call to the method CALL_EXIT_METH in the same class, during data conversion (from backend format to UI format). Therefore, you need a POST-Exit attached to this method as well, in which you write (of course, IF mv_ui_struct = '/SCMTMS/S_UI_FRE_ORDER_OVW'...) the coding to determine the missing data. The parameter CT_UI_DATA is generically typed in the signture, but it can be cast to a field symbol which is TYPE TABLE OF /SCMTMS/S_UI_FRE_ORDER_OVW (to avoid using dynamic "assign component"). It should already contain SHIPPER_ID and CONSIGNEE_ID with correct values.
Another performance hint: one should not try to determine the descriptions for each partner sequentially. Instead, there should be two LOOPs over the data table, one to collect all relevant IDs, then another one to write the descriptions into table. Between them, the functionality to determine the description can be called. You can use e.g. /SCMTMS/CL_BUPA_HELPER=>IT_PARTNER (providing IT_PARTNER).