In my last blog I had elaborated on creating the component interface and the WDA form component, in this blog I will cover the integration of standalone web dynpro application with the ISR framework.
My first priority was to disable the Adobe view and plant my WDA application in that place, so I identified the view in the QISR_UI component where the Adobe form gets embeded, and then I enhanced the view by adding a view contiainer element in that, this view container is the one which will hold my web dynpro application.
But before anything else, I needed to check the switch in the z-table I have created and store the value in an attribute.
I created a post exit method for the SET_EXTERNAL_DATA of component controller and set the switch attribute based on it.
The view contianer created in the view VIEWSHOWFORM.
Next, I created a component usage of component interface in the properties and then did override of the view method INIT and inserted the code for dynamic component use.
And then, overided the WDMODIFYVIEW method and inserted the following code to remove the UI node of adobe form with the reference of the UI root container. So now that the Adobe form is removed, my WD component can sit comfortably in that space.
The method CREATE_GENERIC_CONTEXT of the component controller is the one where data from ISR is fetched for creating the context of the main webdynpro compnent, so I override this method too, and called the set_data method of my web dynpro component interface to push data to the WDA app.
Note that the long text data for the comments needs to be set separately.
The override method of create_generic_context was not getting called in the ADJUST_CONTEXT method for reason unknown, so I just overrode the ADJUST_CONTEXT method and called the override method of CREATE_GENERIC_CONTEXT.
Once the set_data calls are done at the appropriate points, the web dynpro application will be able to display all the data from the ISR on the screen, we already had a generic service in place which populates ISR data before our WD method calls to set data.
In the screen shots below you can see all the fields populated on lauch of the screen.
After the user enters the data, the data needs to be sent back to the ISR framework from the context of the web dynpro. This can be done by overriding the method
FILL_INPUT_P_FROM_GENERIC_CTX, For tables, we need to fetch all the elements and then populate the lt_elements, if we dont do that then only the first line of the table gets populated in the ISR.
Screen shot of code changes for setting data.
For the current comments to be passed to ISR I needed to override the method SET_TEXT_EDITS_TO_INPUT_P, and that should be it and I was good to go with the new screens.
The performance is miles ahead of Adobe and the form is quicker to complete.
For the showing up the forms in Adobe we had built a custom program in ABAP which shows all pending and executed forms, the user can fire a printout if required.
So next time you are implementing HCM Processes and Forms with performance in mind take a relook, it is possible through Web Dynpro ABAP.
I hope this blog series is helpful to many who work in this area and thanks for reading.
Explore, Learn, and Share - Let that be our SAP Mantra.