、新建WDA 可从SE80在web dynpro 组件下 创建 并按例以下操作



2、插入窗口



3、相关功能


3-1、展示消息

bash
DATA:lo_api_controller TYPE REF TO if_wd_controller,
lo_message_handler TYPE REF TO if_wd_message_manager.
lo_api_controller ?= wd_this->wd_get_api( ).
lo_message_handler = lo_api_controller->get_message_manager( ).
LOOP AT it_return INTO DATA(lw_return).
CALL METHOD lo_message_handler->report_t100_message
EXPORTING
msgid = lw_return-id
msgno = lw_return-number
msgty = lw_return-type
p1 = lw_return-message_v1
p2 = lw_return-message_v2
p3 = lw_return-message_v3
p4 = lw_return-message_v4.
ENDLOOP.
IF iv_msg IS NOT INITIAL.
CALL METHOD lo_message_handler->report_t100_message
EXPORTING
msgid = '00'
msgno = '398'
msgty = iv_msgty
p1 = CONV syst_msgv( iv_msg ).
ENDIF.
3-2弹窗

bash
DATA lo_window_manager TYPE REF TO if_wd_window_manager.
lo_window_manager = wd_this->wd_get_api( )->get_window_manager( ).
wd_this->go_pop_win = lo_window_manager->create_window(
window_name = iv_window_name
message_display_mode = if_wd_window=>co_msg_display_mode_all
message_type = if_wd_window=>co_msg_type_none
default_button = if_wd_window=>co_button_none
close_in_any_case = abap_false
).
IFiv_width IS NOT INITIAL ANDiv_height IS NOT INITIAL.
wd_this->go_pop_win->set_window_size( width = iv_width height = iv_height ).
ENDIF.
wd_this->go_pop_win->set_window_title( iv_title ).
wd_this->go_pop_win->open( ).
4、可编辑或只读等的操作

bash
DATA lo_nd_available TYPE REF TO if_wd_context_node.
DATA lo_el_available TYPE REF TO if_wd_context_element.
DATA ls_available TYPE wd_this->element_available.
DATA lo_button TYPE REF TO cl_wd_toolbar_button.
DATA view TYPE REF TO if_wd_view.
DATA lo_nd_detail TYPE REF TO if_wd_context_node.
DATA lo_el_detail TYPE REF TO if_wd_context_element.
DATA ls_detail TYPE wd_this->element_fpo_alv.
DATA lv_text TYPE string.
****
** edit (绑定选择屏幕文本) ''X'. "可编辑
** on1 (绑定删除) 'X'. "可使用
** on2 (绑定编辑/保存/提交) 'X'. "可使用
** on3 (绑定过账) 'X'. "可使用
****
lo_nd_detail = wd_context->get_child_node( name = wd_this->wdctx_fpo_alv ).
lo_el_detail = lo_nd_detail->get_element( ).
view ?= wd_this->wd_get_api( ).
lo_button ?= view->get_element( id = 'BTN_EDIT').
lo_nd_available = wd_context->get_child_node( name = wd_this->wdctx_available ).
lo_el_available = lo_nd_available->get_element( ).
CASEl_way .
WHEN '01'."第一次进入屏幕
IF wd_comp_controller->gv_ztype = 'C'."新建
ls_available-edit = ''.
ls_available-on1 = 'X'.
ls_available-on2 = 'X'.
ls_available-on3 = ' '.
ELSE.
CASEwd_comp_controller->gw_zsmm0332-ztjzt.
WHEN 'A'."新建
ls_available-edit = 'X'.
ls_available-on1 = 'X'.
ls_available-on2 = 'X'.
ls_available-on3 = ' '.
WHEN 'B'."提交
ls_available-edit = 'X'.
ls_available-on1 = ' '.
ls_available-on2 = ' '.
ls_available-on3 = ' '.
WHEN 'C'."过账关闭
ls_available-edit = 'X'.
ls_available-on1 = ' '.
ls_available-on2 = ' '.
ls_available-on3 = 'X'.
WHEN OTHERS.
ENDCASE.
ENDIF.
wd_comp_controller->gv_read = 'X'.
WHEN '02' ."编辑按钮
IFwd_comp_controller->gv_read = 'X'.
lo_button->set_image_source('~Icon/Edit').
lo_button->set_text( wd_assist->if_wd_component_assistance~get_text( key = 'A02') ).
lo_button->set_tooltip( wd_assist->if_wd_component_assistance~get_text( key = 'A02') ).
CASEwd_comp_controller->gw_zsmm0332-ztjzt.
WHEN 'A'."新建
ls_available-edit = ' '.
ls_available-on1 = 'X'.
ls_available-on2 = 'X'.
ls_available-on3 = ' '.
WHEN 'B'."提交
ls_available-edit = 'X'.
ls_available-on1 = ' '.
ls_available-on2 = ' '.
ls_available-on3 = ' '.
WHEN 'C'."过账关闭
ls_available-edit = ' '.
ls_available-on1 = ' '.
ls_available-on2 = ' '.
ls_available-on3 = 'X'.
WHEN OTHERS.
ls_available-edit = 'X'.
ls_available-on1 = ' '.
ls_available-on2 = 'X'.
ls_available-on3 = ' '.
ENDCASE.
wd_comp_controller->gv_read = ' '.
ELSE.
lo_button->set_image_source('~Icon/Display').
lo_button->set_text( wd_assist->if_wd_component_assistance~get_text( key = 'A01' ) ).
lo_button->set_tooltip( wd_assist->if_wd_component_assistance~get_text( key = 'A01' ) ).
CASE wd_comp_controller->gw_zsmm0332-ztjzt.
WHEN 'A'.
ls_available-edit = 'X'.
ls_available-on1 = 'X'.
ls_available-on2 = 'X'.
ls_available-on3 = ' '.
WHEN 'B'.
ls_available-edit = 'X'.
ls_available-on1 = ' '.
ls_available-on2 = ' '.
ls_available-on3 = ' '.
WHEN 'C'.
ls_available-edit = ' '.
ls_available-on1 = ' '.
ls_available-on2 = ' '.
ls_available-on3 = 'X'.
WHEN OTHERS.
ls_available-edit = ' '.
ls_available-on1 = 'X'.
ls_available-on2 = 'X'.
ls_available-on3 = ' '.
ENDCASE.
wd_comp_controller->gv_read = 'X'.
ENDIF.
WHEN '03' ."保存
ls_available-edit = 'X'.
ls_available-on1 = 'X'.
ls_available-on2 = 'X'.
ls_available-on3 = ' '.
wd_comp_controller->gv_read = 'X'.
WHEN '04'."提交
ls_available-edit = 'X'.
ls_available-on1 = ' '.
ls_available-on2 = ' '.
ls_available-on3 = ' '.
wd_comp_controller->gv_read = 'X'.
WHEN '05'. "过账
ls_available-edit = 'X'.
ls_available-on1 = ' '.
ls_available-on2 = ' '.
ls_available-on3 = ' '.
wd_comp_controller->gv_read = 'X'.
WHEN OTHERS.
ENDCASE.
lo_el_available->set_static_attributes( static_attributes = ls_available ).
bash
1、搜索帮助
1、搜索帮助
***<!----------------------------------- F4输入结构
TYPES:BEGIN OF lty_stru_input,
werks TYPE werks_d,
lgort TYPE lgort_d,
matnr TYPE matnr,
lifnr TYPE lifnr,
* charg TYPE charg_d,
* field1 TYPE string,
END OF lty_stru_input.
* ls_search_input TYPE lty_stru_input.
***<!----------------------------------- F4输出结构
TYPES: BEGIN OF lty_stru_list,
werks TYPE werks_d,
lgort TYPE lgort_d,
matnr TYPE matnr,
lifnr TYPE lifnr,
charg TYPE charg_d,
clabs TYPE zremnum,
* column1 TYPE string,
END OF lty_stru_list.
* lt_select_list TYPE STANDARD TABLE OF lty_stru_list.
***<!------------------------------------批次返回结构
DATA:BEGIN OF lw_batch,
werks TYPE werks_d,
lgort TYPE lgort_d,
matnr TYPE matnr,
charg TYPE charg_d,
clabs TYPE zremnum,
END OF lw_batch,
lt_batch LIKE TABLE OF lw_batch.
DATA:lv_msg TYPE bapi_msg,
lv_type TYPE bapi_mtype.
***<!----------------------------------- F4所需结构
DATA: ls_text TYPE wdr_name_value,
lt_label_texts TYPE wdr_name_value_list,
lt_column_texts TYPE wdr_name_value_list,
lv_window_title TYPE string,
lv_table_header TYPE string,
ls_search_input TYPE lty_stru_input,
lw_select_list TYPE lty_stru_list,
lt_select_list TYPE STANDARD TABLE OF lty_stru_list..
FIELD-SYMBOLS: <ls_query_params> TYPE lty_stru_input,
<ls_selection> TYPE lty_stru_list.
DATA:lo_nd_fpo_alv TYPE REF TO if_wd_context_node,
lo_el_fpo_alv TYPE REF TO if_wd_context_element.
DATA:lo_nd_fpo_sel TYPE REF TO if_wd_context_node,
lo_el_fpo_sel TYPE REF TO if_wd_context_element.
DATA lt_select_ovs TYPE wd_this->elements_charg_f4.
DATA ls_fpo_sel TYPE wd_this->element_fpo_sel.
DATA:ls_alv TYPE wd_this->element_fpo_alv,
lt_alv TYPE wd_this->elements_fpo_alv.
DATA:lv_lifnr TYPE wd_this->element_fpo_sel-lifnr,
lv_lgort TYPE wd_this->element_fpo_sel-lgort,
lv_werks TYPE wd_this->element_fpo_sel-werks.
lo_nd_fpo_alv = wd_context->get_child_node( name = wd_this->wdctx_fpo_alv ).
lo_nd_fpo_alv->get_static_attributes_table( IMPORTING table = lt_alv ).
lo_nd_fpo_sel = wd_context->get_child_node( name = wd_this->wdctx_fpo_sel ).
lo_el_fpo_sel = lo_nd_fpo_sel->get_element( ).
CLEAR:lv_lifnr,lv_werks,lv_lgort.
lo_el_fpo_sel->get_attribute( EXPORTING name = `LIFNR` IMPORTING value = lv_lifnr ).
lo_el_fpo_sel->get_attribute( EXPORTING name = `LGORT` IMPORTING value = lv_lgort ).
lo_el_fpo_sel->get_attribute( EXPORTING name = `WERKS` IMPORTING value = lv_werks ).
CASEovs_callback_object->phase_indicator.
WHEN if_wd_ovs=>co_phase_0. "实例化F4窗口
lt_label_texts[] = VALUE #( ( name = 'WERKS' value = wd_assist->if_wd_component_assistance~get_text( key = 'M06' ) )
( name = 'LGORT' value = wd_assist->if_wd_component_assistance~get_text( key = 'M10' ) )
( name = 'MATNR' value = wd_assist->if_wd_component_assistance~get_text( key = 'M03' ) )
( name = 'LIFNR' value = wd_assist->if_wd_component_assistance~get_text( key = 'V01' ) )
).
lt_column_texts[] = VALUE #( ( name = 'WERKS' value = wd_assist->if_wd_component_assistance~get_text( key = 'M06' ) )
( name = 'LGORT' value = wd_assist->if_wd_component_assistance~get_text( key = 'M10' ) )
( name = 'MATNR' value = wd_assist->if_wd_component_assistance~get_text( key = 'M03' ) )
( name = 'LIFNR' value = wd_assist->if_wd_component_assistance~get_text( key = 'V01' ) )
( name = 'CHARG' value = wd_assist->if_wd_component_assistance~get_text( key = 'Y07' ) )
( name = 'CLABS' value = wd_assist->if_wd_component_assistance~get_text( key = '017' ) )
).
ovs_callback_object->set_configuration( label_texts = lt_label_texts
column_texts = lt_column_texts
window_title = lv_window_title
table_header = lv_table_header
).
WHEN if_wd_ovs=>co_phase_1. "实例化搜索框
* ovs_callback_object->context_element->get_static_attributes( IMPORTING static_attributes = ls_search_input ).
* ovs_callback_object->set_input_structure( input = ls_search_input ).
WHEN if_wd_ovs=>co_phase_2. "实例化取值
DATA(lv_index) = ovs_callback_object->context_element->get_index( ).
* 获取 RFC 名字
SELECT SINGLE * INTO @DATA(lw_zrfc) FROM zrfc WHERE to_system = 'ERP' AND function = ''.
READ TABLE lt_alv INTO DATA(lw_alv) INDEX lv_index.
IF sy-subrc = 0.
CALL FUNCTION 'ZRFC_SNC_ERP_RTV_GET_CHARG' DESTINATION lw_zrfc-rfc_name
EXPORTING
i_werks = lv_werks
i_lgort = lv_lgort
i_matnr = lw_alv-matnr
i_lifnr = lv_lifnr
IMPORTING
e_msg = lv_msg
e_type = lv_type
TABLES
t_batch = lt_batch
EXCEPTIONS
rfc_external_abort = 1
OTHERS = 2.
LOOP AT lt_batch INTO lw_batch.
MOVE-CORRESPONDING lw_batch TO lw_select_list.
lw_select_list-lifnr = lv_lifnr.
APPEND lw_select_list TO lt_select_list.
CLEAR:lw_batch,lw_select_list."lv_lifnr,lv_werks,lv_lgort.
ENDLOOP.
ENDIF.
ovs_callback_object->set_output_table( output = lt_select_list ).
WHEN if_wd_ovs=>co_phase_3."将值塞入ALV中
* apply result
IF ovs_callback_object->selection IS NOT BOUND.
******** TODO exception handling
ENDIF.
ASSIGN ovs_callback_object->selection->* TO <ls_selection>.
IF <ls_selection> IS ASSIGNED.
ovs_callback_object->context_element->set_attribute(
name = `CHARG`
value = <ls_selection>-charg ).
* ovs_callback_object->context_element->set_attribute(
* name = `LGOBE`
* value = <ls_selection>-lgobe ).
ENDIF.
ENDCASE.
2、ALV相关
*<!-----组件
DATA: lo_cmp_usage TYPE REF TO if_wd_component_usage,
lo_interfacecontroller TYPE REF TO iwci_salv_wd_table,
lo_nd_alv TYPE REF TO if_wd_context_node,
lo_config_table TYPE REF TO cl_salv_wd_config_table,
lo_column_settings TYPE REF TO if_salv_wd_column_settings,
lo_field_settings TYPE REF TO if_salv_wd_field_settings,
lo_functions_set TYPE REF TO if_salv_wd_function_settings.
DATA:lr_dorpdown TYPE REF TO cl_salv_wd_uie_dropdown_by_key.
lo_cmp_usage = wd_this->wd_cpuse_main_alv( ).
IFlo_cmp_usage->has_active_component( ) IS INITIAL.
lo_cmp_usage->create_component( ).
ENDIF.
*<!-----界面
lo_interfacecontroller = wd_this->wd_cpifc_main_alv( ).
*<!-----获取node
lo_nd_alv = wd_context->get_child_node( name = wd_this->wdctx_main_alv ).
*<!-----alv与node绑定
lo_interfacecontroller->set_data( r_node_data = lo_nd_alv ).
*<!-----获取节点组
lo_config_table = lo_interfacecontroller->get_model( ).
*<!-----隐藏打印版本
lo_config_table->if_salv_wd_std_functions~set_pdf_allowed( '').
*<!-----所有字段100%显示
* lo_config_table->if_salv_wd_table_settings~set_grid_mode( '00').
* lo_config_table->if_salv_wd_table_settings~set_visible_row_count( 20).
* lo_config_table->if_salv_wd_table_settings~set_scrollable_col_count( '10')."滚动列
* lo_config_table->if_salv_wd_table_settings~set_width( '100%' )."设置宽度
* lo_config_table->if_salv_wd_table_settings~set_selection_mode( value = cl_wd_table=>e_selection_mode-multi_no_lead ).
* lo_config_table->if_salv_wd_table_settings~set_cell_action_event_enabled( value = abap_true ).
*<!-----设置行样式
lo_column_settings ?= lo_config_table.
lo_field_settings ?= lo_config_table.
lo_functions_set ?= lo_config_table.
lo_config_table->if_salv_wd_table_settings~set_read_only( abap_false ).
lo_config_table->if_salv_wd_table_settings~set_cell_action_event_enabled( abap_true ).
*
* lo_config_table->if_salv_wd_table_settings~set_selection_mode( '08').
* lo_config_table->if_salv_wd_table_settings~set_scrollable_col_count( '15').
* lo_config_table->if_salv_wd_table_settings~set_visible_row_count( '10').
lo_config_table->if_salv_wd_std_functions~set_edit_check_available( abap_false ).
lo_config_table->if_salv_wd_std_functions~set_edit_append_row_allowed( abap_false ).
lo_config_table->if_salv_wd_std_functions~set_edit_insert_row_allowed( abap_false ).
lo_config_table->if_salv_wd_std_functions~set_edit_delete_row_allowed( abap_false ).
*<!-----Alv列设置
DATA: lt_columns TYPE salv_wd_t_column_ref,
lr_column_header TYPE REF TO cl_salv_wd_column_header,
lr_link TYPE REF TO cl_salv_wd_uie_link_to_action,
lr_drop_bykey TYPE REF TO cl_salv_wd_uie_dropdown_by_key,
lr_function TYPE REF TO cl_salv_wd_function,
lr_button TYPE REF TO cl_salv_wd_fe_button,
lo_input TYPE REF TO cl_salv_wd_uie_input_field.
lt_columns = lo_column_settings->get_columns( ).
LOOP AT lt_columns INTO DATA(ls_column).
lr_column_header = ls_column-r_column->get_header( ).
lr_column_header->set_ddic_binding_field( if_salv_wd_c_column_settings=>ddic_bind_none ).
CREATE OBJECTlo_input EXPORTING value_fieldname = ls_column-id.
CASEls_column-id.
WHEN 'ZREFN'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M01') ).
CREATE OBJECTlo_input EXPORTING value_fieldname = ls_column-id.
lr_link = NEW#( ).CREATE OBJECTlr_link.
lr_link->set_text_fieldname( ls_column-id ).
ls_column-r_column->set_cell_editor( lr_link ).
WHEN 'ZREPO'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M02') ).
lo_input->set_read_only( abap_false ).
WHEN 'MATNR'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M03') ).
WHEN 'MENGE'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M04') ).
lo_input->set_length( 4).
WHEN 'WERKS'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M06') ).
WHEN 'NAME1'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M07') ).
WHEN 'YCK_MENGE'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M08') ).
lo_input->set_length( 4).
WHEN 'ZCDATE'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M09') ).
WHEN 'LGORT'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M10') ).
WHEN 'CHARG'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M11') ).
WHEN 'ZTJZT'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M12') ).
WHEN 'ZRVTYY'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M13') ).
lo_input->set_length( 8).
WHEN 'ZRTVYY_N'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M14') ).
lo_input->set_length( 8).
WHEN 'ZCNAME'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M15') ).
WHEN 'TELENUM'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M16') ).
WHEN 'ZBEIZH'.
lr_column_header->set_text( value = wd_assist->if_wd_component_assistance~get_text('M17') ).
WHEN OTHERS.
lo_column_settings->delete_column( ls_column-id ).
ENDCASE.
ENDLOOP.
*<!-----设置按钮
lo_functions_set ?= lo_config_table.
lr_function = lo_functions_set->create_function( 'SEARCH').
CREATE OBJECTlr_button.
lr_button->set_text( value = wd_assist->if_wd_component_assistance~get_text('B10') )."查询
lr_function->set_editor( lr_button ).
lo_functions_set ?= lo_config_table.
lr_function = lo_functions_set->create_function( 'ZADD' ).
CREATE OBJECT lr_button.
lr_button->set_text( value = wd_assist->if_wd_component_assistance~get_text('B11') )."新建退货
lr_function->set_editor( lr_button ).
3、绑定搜索帮助
DATA: lo_cp_usage TYPE REF TO if_wd_component_usage,
lo_select_op TYPE REF TO iwci_wdr_select_options,
lt_rangtable TYPE REF TO data.
DATA: lt_range_table TYPE REF TO data.
DATA: lr_s1 TYPE RANGE OF bu_partner .
DATA lw_s1 LIKE LINE OF lr_s1.
DATA: ev_cp_partner TYPE bu_partner.
DATA: ev_partner TYPE bu_partner.
DATA: ev_partner_guid TYPE bu_partner_guid.
FIELD-SYMBOLS <fs_data> TYPE table.
DATA: lt_value_set TYPE wdy_key_value_table.
lo_cp_usage = wd_this->wd_cpuse_sel_opt( ).
IFlo_cp_usage->has_active_component( ) IS INITIAL.
lo_cp_usage->create_component( ).
ENDIF.
lo_select_op = wd_this->wd_cpifc_sel_opt( ).
* 设定到全局参数
wd_this->go_handler = lo_select_op->init_selection_screen( ).
wd_this->go_handler->set_global_options(
i_display_btn_cancel = abap_false
i_display_btn_check = abap_false
i_display_btn_reset = abap_false
i_display_btn_execute = abap_false ).
DEFINE set_opt.
lt_rangtable = wd_this->go_handler->create_range_table( i_typename = &1).
wd_this->go_handler->add_selection_field(
i_id = &2it_result = lt_rangtable
i_read_only = &3"只读
i_as_dropdown = &4 "下拉框
i_description = &5"描述
i_obligatory = &6 "必填
i_no_extension = &7"sel_opt -no_extension
i_no_intervals = &7 "sel-opt -no_intervals
i_value_help_type = &8"F4类型
i_value_help_id = &9 "F4ID
).
END-OF-DEFINITION.
DATA: lv_text TYPE string.
lv_text = wd_assist->if_wd_component_assistance~get_text( 'M15')."创建人
set_opt 'LIFNR' 'S_1' 'X' ' ' lv_text 'X' 'X' ' ' ' '.
lv_text = wd_assist->if_wd_component_assistance~get_text( 'M06' )."工厂
set_opt 'WERKS_D''S_2'' '' 'lv_text 'X'' ''OVR''ON_OVS'." .
lv_text = wd_assist->if_wd_component_assistance~get_text( 'M01' )."退货申请单号
set_opt 'ZEREFN''S_3'' '' 'lv_text ' '' '' '' '.
lv_text = wd_assist->if_wd_component_assistance~get_text( 'M03')."物料
set_opt 'MATNR' 'S_4' ' ' ' ' lv_text ' ' ' ' ' ' ' '.
lv_text = wd_assist->if_wd_component_assistance~get_text( 'M09' )."创建日期
set_opt 'ERDAT''S_5'' '' 'lv_text ' '' '' '' '." ."' '' '.
**--------------------------------------------------------------------*
**` 默认值
**--------------------------------------------------------------------*
FIELD-SYMBOLS: <it_range_table> TYPE STANDARD TABLE.
lt_range_table = wd_this->go_handler->get_range_table_of_sel_field( i_id = 'S_1').
ASSIGN lt_range_table->* TO <it_range_table> .
CLEAR <it_range_table>.
**--------------------------------------------------------------------*
** 初始供应商
**--------------------------------------------------------------------*
"获取登录帐号所对应的供应商编号
CALL FUNCTION 'ZBUPA_NUMBERS_GET'
EXPORTING
iv_uname = sy-uname
IMPORTING
ev_cp_partner = ev_cp_partner
ev_partner = ev_partner
ev_partner_guid = ev_partner_guid
EXCEPTIONS
no_cp_username = 1
no_business_part = 2.
IF ev_partner IS NOT INITIAL.
lt_range_table = wd_this->go_handler->get_range_table_of_sel_field( i_id = 'S_1' ).
ASSIGN lt_range_table->* TO <it_range_table> .
CLEAR <it_range_table>.
lw_s1-sign = 'I' .
lw_s1-option = 'EQ' .
lw_s1-low = ev_partner.
APPEND lw_s1 TO <it_range_table> .
wd_this->go_handler->set_range_table_of_sel_field(
i_id = 'S_1'
it_range_table = lt_range_table
).
ENDIF.
*
4、获取选择屏幕的值 查询并绑定
DATA:lo_range TYPE REFTOdata.
FIELD-SYMBOLS: <fs_range>TYPE table.
DATA: lt_alv TYPE wd_this->elements_main_alv,
lw_alv TYPE wd_this->element_main_alv,
lo_nd_alv TYPE REFTOif_wd_context_node.
*报错误消息的方法定义
DATA: lo_current_controller TYPE REFTOif_wd_controller,
lo_message_manager TYPE REFTOif_wd_message_manager.
DATA:lt_lifnr TYPE TABLEOFzranges,
lt_werks TYPE TABLEOFzranges,
lt_zrefn TYPE TABLEOFzranges,
lt_matnr TYPE TABLEOFzranges,
lt_erdat TYPE TABLEOFzranges,
lv_text TYPE string.
lo_range =wd_this->go_handler->get_range_table_of_sel_field( i_id ='S_1')."取当前供应商
ASSIGN lo_range->* TO <fs_range>.
MOVE-CORRESPONDING <fs_range> TO lt_lifnr.
lo_range = wd_this->go_handler->get_range_table_of_sel_field( i_id = 'S_2' )."取当前工厂
ASSIGN lo_range->*TO<fs_range>.
MOVE-CORRESPONDING<fs_range>TOlt_werks .
lo_range =wd_this->go_handler->get_range_table_of_sel_field( i_id ='S_3')."取退货申请号
ASSIGN lo_range->* TO <fs_range>.
MOVE-CORRESPONDING <fs_range> TO lt_zrefn .
lo_range = wd_this->go_handler->get_range_table_of_sel_field( i_id = 'S_4' )."取物料
ASSIGN lo_range->*TO<fs_range>.
MOVE-CORRESPONDING<fs_range>TOlt_matnr .
lo_range =wd_this->go_handler->get_range_table_of_sel_field( i_id ='S_5')."取当前创建日期
ASSIGN lo_range->* TO <fs_range>.
MOVE-CORRESPONDING <fs_range> TO lt_erdat.
IF lt_werks IS INITIAL OR lt_lifnr IS INITIAL.
lv_text = wd_assist->if_wd_component_assistance~get_text( 'E03' ). "'请检查 工厂/供应商 字段必填!!
wd_comp_controller->show_message( iv_msgty = 'E' iv_msg = lv_text ).
ELSE.
* 获取 RFC 名字
SELECT SINGLE * INTO @DATA(lw_zrfc) FROM zrfc WHERE to_system = 'ERP' AND function = ''.
CALL FUNCTION 'ZRFC_SNC_ERP_HANDLE_RTV_SEARCH' DESTINATION lw_zrfc-rfc_name
EXPORTING
iv_langu = sy-langu
TABLES
ir_zafnam = lt_lifnr
ir_werks = lt_werks
ir_zrefn = lt_zrefn
ir_matnr = lt_matnr
ir_zcdate = lt_erdat
et_data = lt_alv.
SORT lt_alv BY zrefn DESCENDING.
* LOOP AT lt_alv assigning field-symbol(lv).
*
* ENDLOOP.
IF lt_alv IS NOT INITIAL.
lo_nd_alv = wd_context->get_child_node( name = wd_this->wdctx_main_alv ). "'查询成功'.
lo_nd_alv->bind_table( new_items = lt_alv set_initial_elements = abap_true ).
ELSE.
lv_text = wd_assist->if_wd_component_assistance~get_text( 'E01' ). "'查询失败:当前无符合条件的数据'.
wd_comp_controller->show_message( iv_msgty = 'E' iv_msg = lv_text ).
ENDIF.
ENDIF.
5、获取选择的行
复制 DATA:lo_nd_receiver TYPE REF TO if_wd_context_node,
lo_el_receiver TYPE REF TO if_wd_context_element.
DATA:lt_rows TYPE wdr_context_element_set,
lo_nd_alv TYPE REF TO if_wd_context_node,
lt_alv TYPE wd_this->elements_fpo_alv, "ALV的内表
lw_alv LIKE LINE OF lt_alv.
DATA:lv_tabix TYPE sy-tabix.
***<!---------------------获取整个内表
lo_nd_receiver = wd_context->get_child_node( name = wd_this->wdctx_fpo_alv ).
lo_nd_receiver->get_static_attributes_table( IMPORTING table = lt_alv ).
***<!---------------------获取选中行数据
lo_nd_alv = wd_context->get_child_node( name = wd_this->wdctx_fpo_alv ).
lt_rows = lo_nd_alv->get_selected_elements( including_lead_selection = abap_true ).
LOOP AT lt_rows INTO DATA(lw_rows).
lv_tabix = sy-tabix.
CALL METHOD lw_rows->get_static_attributes( IMPORTING static_attributes = lw_alv ).
DELETE lt_alv WHERE zrefn = lw_alv-zrefn AND zrepo = lw_alv-zrepo.
* lo_nd_receiver = wd_context->get_child_node( name = wd_this->wdctx_fpo_alv ).
* lo_el_receiver = lo_nd_receiver->get_element( lo_nd_receiver->get_lead_selection_index( ) ).
* lo_nd_receiver->remove_element( lo_el_receiver ).
ENDLOOP.
***<!-----------------重新绑定
lo_nd_receiver = wd_context->get_child_node( name = wd_this->wdctx_fpo_alv ). "'查询成功'.
lo_nd_receiver->bind_table( new_items = lt_alv set_initial_elements = abap_true ).
* lo_nd_receiver = wd_context->get_child_node( name = wd_this->wdctx_fpo_alv ).
* lo_el_receiver = lo_nd_receiver->get_element( lo_nd_receiver->get_lead_selection_index( ) ).
* lo_nd_receiver->remove_element( lo_el_receiver ).
来自 <https://www.showdoc.com.cn/2061732476156924/10264315363757174>