Zuordnungsblöcke bzw. Tabs im SAP Web Client UI dynamisch ausblenden

Mittels UI-Konfiguration lassen sich Zuordnungsblöcke in der Vorgangsbearbeitung flexibel konfigurieren. Teilweise kann die Konfiguration abhängig von der Vorgangsart oder dem Status gestaltet werden, sofern dies von der UI-Komponente vorgesehen ist.

Ein dynamisches Ausblenden von Zuordnungsblöcken, z.B. bei fehlender Berechtigung, ist jedoch nicht vorgesehen. Mit einer kleinen Erweiterung des SAP-Standards ist das aber kein Problem. Diese Erweiterung funktioniert sowohl für SAP CRM als auch für SAP Solution Manager ITSM und SAP Solution Manager ChaRM.

Erweiterung am Ende von Methode cl_crm_uiu_bt_tools=>get_ovviews_header:

*Here we hide one customer_h assignment block according to authority.

data:
  ls_deactive_views like line of lt_deactive_views.

*Perform authority check
AUTHORITY-CHECK OBJECT ...

IF sy-subrc NE 0.
  ls_deactive_views-component = 'BTCUSTOMER_H'.
  ls_deactive_views-viewname = 'ZUBTCustomerH_01.BTCUSTOMER_H/MainWindow'.
  append ls_deactive_views to lt_deactive_views.
endif.

*Compare on component name and view name is not enough, because we need to compare on component usage in case we have more than one BTCUSTOMERH assignment blocks.
data(lt_static_views) = it_static_views.
loop at lt_static_views assigning field-symbol(<fs_static_views>) where viewid cp 'ZUBTCustomerH*'.
  <fs_static_views>-VIEWNAME = <fs_static_views>-viewid.
endloop.

*Rebuild result.
get_ovviews_return_tables( EXPORTING it_static_views = lt_static_views it_deactive_views = lt_deactive_views IMPORTING et_views_to_detach = et_views_to_detach et_views_to_reattach = et_views_to_reattach ).
*Here we hide all unauthorized assignment blocks (tabs).

data:
  ls_deactive_views like line of lt_deactive_views.

loop at it_static_views assigning field-symbol(<fs_static_views>).

*Perform authority check
AUTHORITY-CHECK OBJECT ...

IF sy-subrc NE 0.
  ls_deactive_views-component = <fs_static_views>-component.
  ls_deactive_views-viewname = <fs_static_views>-viewname.
  append ls_deactive_views to lt_deactive_views.
endif.

endloop.

*Rebuild result.
get_ovviews_return_tables( EXPORTING it_static_views = lt_static_views it_deactive_views = lt_deactive_views IMPORTING et_views_to_detach = et_views_to_detach et_views_to_reattach = et_views_to_reattach ).