Web Dynpro for ABAP ( 五 ) 跨WDA传参

    技术2025-04-15  10

    我们偶尔会在一本程式中引用另一本WDA程式,这时候传参成了一件很重要的事,我用过的方法一共有三个:

    1)、利用interface node传参;

    2)、利用interface method传参;

    3)、利用url传参;

    1)、利用interface node传参;

    在使用wd_comp_controller->window_manager->create_and_open_popup 的方式去弹出popup框的时候,需要在调用程式中引用被调用程序的WDA Window,这时候我们可以直接update WDA window中context下面的node节点。

    lo_root_info = wd_context->get_node_info( ). lo_root_info->remove_child_node( name = lv_node ). APPEND 'IFNODE' TO es_wdainfo-ifnodes. es_wdainfo-wdaname = 'YSHWSSS720'. es_wdainfo-window = 'W_APPROVE'. es_wdainfo-taskname = '' . ls_map-controller = 'INTERFACECONTROLLER'. ls_map-component_usage = 'DISPLAY'. APPEND ls_wdainfo-wdaname TO ls_map-path. APPEND lv_node TO ls_map-path. lo_root_info->add_new_mapped_child_node( child_name = lv_node mapping_info = ls_map is_static = abap_false ). lo_node = wd_context->get_child_node( name = lv_node ). lo_node->get_element( )->set_static_attributes( EXPORTING static_attributes = ls_ifnode_sa2 ).

    2)、利用interface method传参;

    DATA: LO_WDA252 TYPE REF TO YIWCI_SHWSSS252. LO_WDA252 = WD_THIS->WD_CPIFC_YSHWSSS252( ). WD_COMP_CONTROLLER->GS_INTFS-EFORMTYPE = '2'. "退貨訂單 LO_WDA252->SET_EFORM_MODE( LS_INTFS = WD_COMP_CONTROLLER->GS_INTFS ).

    这是我最常用的一种传参,因为不仅可以传参,还可以update,通过一些代码进行更灵活的控制。

    3)、利用url传参;

    在使用lo_window_manager->create_external_window去创建弹出页签的时候,我们可以将传参存放在url中,

    lw_url = '*&NavMode=4&DynamicParameter=PROCESSID%3D'.

    CONCATENATE lw_url ls_sflow_h-processid  INTO lw_url.

    此外还需要在被调用window的 handledefault的事件中定义参数processid。

    Processed: 0.009, SQL: 9