Display contents of non-standard function modules in the warehouse management monitor
in the EWM developments it is very common to call certain pieces of functionality in a queued RFC manner. You can see a list of the failed or waiting calls in transaction smq2, for example, for the inbound calls. Recently, a customer complained that for the custom developed functionalities ( queues, and function modules ), this information was not visible in the warehouse monitor, tcode /scwm/mon. They are expected to be seen here:
After doing a search on SAP Support i came across the note 2584283. However, its implementation turned out to be not very straight-forward, so i decided to write these instructions, hope they are helpful.
You need to know the queue name(prefix) of your custom queue, and the name of the RFC-enabled function module that is called in the custom queue. Note them down somewhere. I will name them ZQUEUE and Z_FM.
Depending on your SAP release and support level, you might want first to check in transaction SQM2 if it is displaying the pending record.
Check if the SAP note 2228881 is already installed or contained in your system.
We will be implementing SAP note 2584283.
- Creation of the grabber function module – create an empty function module interface in your custom namespace, with the same signature as Z_FM. I will call it Z_FM_GRB(grabber). It could be that there is a restriction on the length of this function name; in my case I had to shorten it to 10.
- Run the report /SCWM/RGEN_QRFC_GRABBER_CODE, with input Z_FM. Take the output and paste it into Z_FM_GRB. Note: I had simple data types in the signature, basically a char field and an internal field of chars. So I did not test the generator with nested structures, etc. Activate Z_FM_GRB.
- Maintain the view /SCWM/VMQMAPDISP in transaction SE54. Enter the mapping, in my case qRFC Function module = Z_FM, FM qRFC display = Z_FM_GRB.
- As recommended in the note, copy the report /SCWM/QRFC_APPL_LOG_DISPLAY in your custom namespace (was simply Z* in my case).
- The report calls the function module /SCWM/QRFC_PARAM_SHOW. Also copy this function module into a custom one; replace this call in the standard report that you created. I will refer to the copy as Z_ QRFC_PARAM_SHOW.
- Find the place in Z_QRFC_PARAM_SHOW where the following check is made and comment the whole block out:
** --- Check whether the group is ok --- * IF lo_grab_fm->mv_str_are NE c_function_pool. ** Function exist but in a different area than current area
- Maintain the view /SCWM/VMQDEF, as described in note 2584283. Usually, you will have to create your own class for message queue definition (look up some of the standard ones). The reason for this is that the format and semantics of every queue container are very different. So you need to implement yourself for example the extraction of the warehouse number from the queue container and transporting it back to the EWM Monitor.
- I think if you need to have a replay functionality for your queue entries, you will always have to implement it yourself( column FM qRFC display). For some reason I had to limit the length of the FM for qRFC display to 11. For my entries in /SCWM/VMQDEF I left the field ‘Role empty’.
- In the field ‘Report for Container’ enter the name of your custom copy of the report /SCWM/QRFC_APPL_LOG_DISPLAY. As for the field ‘Report for appl.log’ i used the standard one /SCWM/QRFC_APPL_LOG_DISPLAY.
Hopefully, this is all that is required and you are able to see the pending entries, display their data containers/application logs, or even re-process them.