zoukankan      html  css  js  c++  java
  • SAP ABAP Webdynpro ALV的link to action的实现方法

    If you include the standard webdynpro ALV component SALV_WD_TABLE into your own component, you could not directly change the ALV table column as usual. In ABAP Webdynpro an example of link to action element used in ALV looks like below. Once the column “Social Media Post ID” is clicked, it is expected our application could catch the event and implement our own event handling logic.

    You could follow the steps below:

    (1) Define the component usage to ALV component by double clicking your webdynpro component in SE80 and maintain the component usage in tab “Used Web Dynpro Components”

    (2) Double click the INTERFACECONTROLLER_USAGE,add your own component for ALVcomponent usage. The reason for this is you need to map the context node of your own component to ALV component, so that it can know which data from your application should display.

    After that it is ready for mapping the context node of your component to the context node DATA of ALV component. You can achieve it via drag and drop or right click on DATA node, and choose “Define External Mapping” from context menu. After mapping is done, you could see the mapping path displayed below.

    (3) double click on your view, and insert a new element “ViewContainerUIElement”, which acts as the container for ALV interface view to be embedded.

    then double click on window, right click the ViewContainerUIElement and choose “Embed View”, include the ALV interface view from drop down list.

    The final settings looks like below. Now you should already see the ALV in your application UI.

    Create a new method in view controller and implement the code below:

    method RENDER_HYPERLINK .
      DATA:
        lr_alv_usage       TYPE REF TO if_wd_component_usage,
        lr_if_controller   TYPE REF TO iwci_salv_wd_table,
        lr_config          TYPE REF TO cl_salv_wd_config_table,
        lr_column_settings TYPE REF TO if_salv_wd_column_settings,
        lt_columns         TYPE        salv_wd_t_column_ref,
        lr_link            TYPE REF TO cl_salv_wd_uie_link_to_action.
       lr_alv_usage = wd_this->wd_cpuse_salv_wd_table( ).
       IF lr_alv_usage->has_active_component( ) IS INITIAL.
         lr_alv_usage->create_component( ).
       ENDIF.
       lr_if_controller = wd_this->wd_cpifc_salv_wd_table( ).
       lr_config        = lr_if_controller->get_model( ).
       lr_config->if_salv_wd_table_settings~set_cell_action_event_enabled( abap_false ).
       lr_column_settings ?= lr_config.
       lt_columns = lr_column_settings->get_columns( ).
       LOOP AT lt_columns ASSIGNING FIELD-SYMBOL(<column>).
          CASE <column>-id.
            WHEN 'INTERNAL_ID'.
              CREATE OBJECT lr_link.
              lr_link->set_text_fieldname( <column>-id ).
             <column>-r_column->set_cell_editor( lr_link ).
            WHEN OTHERS.
          ENDCASE.
       ENDLOOP.
    endmethod.
    

    And call it in wddomodifyview of view controller:

    METHOD wddomodifyview .
      CHECK first_time = abap_true.
      render_hyperlink( ).
    ENDMETHOD.
    

    Note: according to sap help, the event ON_CLICK is only triggered if the method
    IF_SALV_WD_TABLE_SETTINGS~SET_CELL_ACTION_EVENT_ENABLED is set to FALSE Otherwise, the event ON_CELL_ACTION is triggered.
    (4) Create a event handler in view controller Methods tab. Choose the event name ON_CLICK from drop down list.

    In the runtime, the selected item index and item value could be found in importing parameter R_PARAM:


    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    35.python之事件驱动模型
    33.python之操作系统,进程,线程
    VRChat之blender2.8版本设置
    VRChat模型制作及上传总篇(201912)
    linux常用指令
    java基础File的简单使用记录
    java 通过实现Comparable接口使用Collections.sort排序 及 利用set的特性对 list 进行去重
    [转发] java字符串-编码转换-工具类
    ssh服务不能远程时,使用telnet远程登录
    java中List遍历删除元素相关做法和注意事项
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/13577120.html
Copyright © 2011-2022 走看看