Skip to Content
Hi Friends,
in my recent customer project customer complains to me that they can not navigate from the workflow search result to the target UI.
The workflow work item is a document generated via SAP document builder. They would like to navigate to the document detail page and then decide whether to approve the document or not. With SAP standard solution so far in CRM7.0 EHP3, this is not possible since this work item does not have any BOR type but instead modeled via ABAP class /IPRO/CL_WFL_DOCUMNT. What’s more, the target document page is built via ABAP webdynpro which has not respective concept like UI object type, Genil component or BOL object name.
/wp-content/uploads/2013/11/clipboard1_319639.png
So in order to enable customer to see the document page, I just enhance the standard table to add a new column named “Document URL“. By clicking the hyperlink of that column, it will create a new popup window to display the document page.
/wp-content/uploads/2013/11/clipboard2_319697.png
The solution could be concluded as below steps:

Step1

enhance a new attribute DOC_URL in standard context node SEARCHRESULTNODE, implement Getter and P Getter.
/wp-content/uploads/2013/11/clipboard3_319698.png
in Getter, just get the target document page url via utility class:
method GET_DOC_URL.
    value = zcl_document_utility=>get_display_value( iterator ).
endmethod.
in p getter, set the event handler for hyperlink click event:
METHOD GET_P_DOC_URL.
CASE iv_property.
    WHEN if_bsp_wd_model_setter_getter=>fp_fieldtype.
        rv_value = cl_bsp_dlc_view_descriptor=>field_type_event_link.
    WHEN if_bsp_wd_model_setter_getter=>fp_onclick.
        rv_value = 'DISPLAY_DOC'.
  ENDCASE.
ENDMETHOD.

Step2

define component usage GS_CMSRCH:
/wp-content/uploads/2013/11/clipboard4_319699.png
and in event handler for DISPLAY_DOC:
method OPEN_URL_INTERNAL.
    DATA(lv_title) = cl_wd_utilities=>get_otr_text_by_alias( 'Document(to be approved) Preview' ). "#EC NOTEXT
    DATA(lr_popup) = io_wd_manager->create_popup(  iv_interface_view_name = 'GS_CMSRCH/CMDisplayContentWindow'
                                                   iv_usage_name          = 'GS_CMSRCH'
                                                   iv_title               = lv_title ).
    DATA(lr_cn)  = lr_popup->get_context_node( 'PARAMS' ).
    DATA(lr_obj) = lr_cn->collection_wrapper->get_current( ).
    READ TABLE st_url_buffer ASSIGNING FIELD-SYMBOL(<buffer>) WITH KEY uuid = iv_guid.
    CHECK sy-subrc = 0.
    DATA(ls_params) = VALUE crmt_gsurlpopup_params( url = <buffer>-url height = '1000' ).
    lr_obj->set_properties( ls_params ).
    lr_popup->set_display_mode( if_bsp_wd_popup=>C_DISPLAY_MODE_PLAIN ).
    lr_popup->set_window_width( 1000 ).
    lr_popup->set_window_height( 10000 ).
    lr_popup->open( ).
  endmethod.
And that’s all.
Interface window CMDisplayContentWindow is a new window created by SAP in EHP3 SP3. There is no magic inside it: just open the target window via JavaScript window.open.
/wp-content/uploads/2013/11/clipboard5_319700.png
you can also use the reuse component GSURLPOPUP, which can achieve the same result but with different html markup.
/wp-content/uploads/2013/11/clipboard6_319701.png
After I finish it, I soon realized that in this dedicated case, it is possible to “navigate” to the target ABAP webdynpro page via CRM navigation framework itself. I will explain how to do it in my next blog.
The source code of zcl_document_utility could be found from my github.
To report this post you need to login first.

7 Comments

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

    1. Jerry Wang Post author

      Hi Hari,

      I am glad that you like it. I can have a rest now since customer issue is resolved. I wish you a good weekend with your family 🙂

      Best regards,

      Jerry

      (0) 
  1. Sandesh K

    Hi Jerry,

    This interface view CMDisplayContentWindow seems not to be present in the CRM 7 EHP 2.

    I have a requirement to launch ECC BOR object based transaction launcher in a popup window on a click of hyperlink. Any pointers on this scenario?

    Thanks,

    San

    (0) 
    1. Jerry Wang Post author

      Hi San,

      you can search how to use transaction launcher in SCN. There are lots of material which can guide you how to achieve it.

      Best regards,

      Jerry

      (0) 

Leave a Reply