、新建WDA 可從SE80在web dynpro 組件下 創建 并按例以下操作
2、插入窗口
3、相關功能
3-1、展示消息
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_messageEXPORTINGmsgid = lw_return-idmsgno = lw_return-numbermsgty = lw_return-typep1??? = lw_return-message_v1p2??? = lw_return-message_v2p3??? = lw_return-message_v3p4??? = lw_return-message_v4.ENDLOOP.IF iv_msg IS NOT INITIAL.CALL METHOD lo_message_handler->report_t100_messageEXPORTINGmsgid = '00'msgno = '398'msgty = iv_msgtyp1??? = CONV syst_msgv( iv_msg ).ENDIF.
?
3-2彈窗
?
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_namemessage_display_mode?? = if_wd_window=>co_msg_display_mode_allmessage_type?????????? = if_wd_window=>co_msg_type_nonedefault_button???????? = if_wd_window=>co_button_noneclose_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、可編輯或只讀等的操作
? 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 ).
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_textscolumn_texts = lt_column_textswindow_title = lv_window_titletable_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_nameEXPORTINGi_werks = lv_werksi_lgort = lv_lgorti_matnr = lw_alv-matnri_lifnr = lv_lifnrIMPORTINGe_msg = lv_msge_type = lv_typeTABLESt_batch = lt_batchEXCEPTIONSrfc_external_abort = 1OTHERS = 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 handlingENDIF.
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( ).
*<!-----獲取nodelo_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_falsei_display_btn_check = abap_falsei_display_btn_reset = abap_falsei_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_rangtablei_read_only = &3"只讀i_as_dropdown = &4 "下拉框i_description = &5"描述i_obligatory = &6 "必填i_no_extension = &7"sel_opt -no_extensioni_no_intervals = &7 "sel-opt -no_intervalsi_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'EXPORTINGiv_uname = sy-unameIMPORTINGev_cp_partner = ev_cp_partnerev_partner = ev_partnerev_partner_guid = ev_partner_guidEXCEPTIONSno_cp_username = 1no_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_nameEXPORTINGiv_langu = sy-languTABLESir_zafnam = lt_lifnrir_werks = lt_werksir_zrefn = lt_zrefnir_matnr = lt_matnrir_zcdate = lt_erdatet_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>