我们偶尔会在一本程式中引用另一本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。