框架搭建
1、FPM_OVP_COMPONENT
1 METHOD change_toolbar_btn . 2 * enabled "ABAP_TRUE可用 ABAP_FALSE不可用 3 * visibility "01不可见 02可见 4 DATA: ls_btn TYPE if_fpm_ovp=>ty_s_toolbar_button. 5 CHECK wd_this->mo_cnr IS BOUND. 6 7 TRY . 8 CLEAR:ls_btn. 9 wd_this->mo_cnr->get_toolbar_button( 10 EXPORTING 11 iv_toolbar_element_id = id 12 IMPORTING 13 es_toolbar_button = ls_btn 14 ). 15 CHECK ls_btn IS NOT INITIAL. 16 17 * IF text IS SUPPLIED. 18 ls_btn-text = text. 19 * ENDIF. 20 IF enabled IS SUPPLIED. 21 ls_btn-enabled = enabled. 22 ENDIF. 23 IF visibility IS SUPPLIED. 24 ls_btn-visibility = visibility. 25 ENDIF. 26 27 wd_this->mo_cnr->change_toolbar_button( 28 iv_content_area = \'PAGE_1\' 29 is_toolbar_button = ls_btn ). 30 CATCH cx_root INTO DATA(lo_err). 31 DATA(lv_txt) = lo_err->get_text( ). 32 ENDTRY. 33 34 ENDMETHOD.
1 METHOD fire_view_action . 2 3 DATA: lo_action TYPE REF TO cl_wdr_action. 4 lo_action ?= wd_this->z_curr_view->get_action( action_name ). 5 CHECK lo_action IS BOUND. 6 lo_action->fire( ). 7 8 ENDMETHOD.
1 METHOD init_toolbar . 2 3 DATA: lt_elm TYPE if_fpm_ovp=>ty_t_toolbar_element, 4 lv_txt TYPE fpm_text, 5 lv_enable TYPE fpm_enabled, 6 lv_visible TYPE fpm_visibility. 7 8 wd_this->mo_fpm = cl_fpm_factory=>get_instance( ). 9 wd_this->mo_cnr ?= wd_this->mo_fpm->get_service( `CNR_OVP` ). 10 11 TRY. 12 wd_this->mo_cnr->get_toolbar_elements( IMPORTING et_toolbar_element = lt_elm ). 13 CATCH cx_root INTO DATA(lo_err). 14 DATA(lv_err_txt) = lo_err->get_text( ). 15 ENDTRY. 16 17 LOOP AT lt_elm INTO DATA(ls_elm). 18 CLEAR:lv_txt. 19 CASE ls_elm-element_id. 20 WHEN \'FPM_SAVE_1\'. 21 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/SAVE\' ). 22 lv_enable = abap_true. 23 lv_visible = 2. 24 25 WHEN \'FPM_CANCEL_1\'. 26 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/ZCX\' ). 27 lv_enable = abap_true. 28 lv_visible = 2. 29 30 WHEN \'ZMDG_COMMIT\'. 31 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/COMMIT\' ). 32 lv_enable = abap_true. 33 lv_visible = 2. 34 35 WHEN \'ZMDG_COMMITSP\'. 36 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/SP\' ). 37 lv_enable = abap_true. 38 lv_visible = 1. 39 40 WHEN \'ZMDG_COMMITSPJJ\'. 41 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/SPJJ\' ). 42 lv_enable = abap_true. 43 lv_visible = 1. 44 45 WHEN OTHERS. 46 ENDCASE. 47 48 CHECK lv_txt IS NOT INITIAL. 49 change_toolbar_btn( 50 id = ls_elm-element_id 51 text = lv_txt 52 enabled = lv_enable 53 visibility = lv_visible 54 ). 55 ENDLOOP. 56 57 ENDMETHOD.
1 METHOD modify_toolbar . 2 3 * get view context 4 DATA lo_view_context TYPE REF TO if_wd_context_node. 5 lo_view_context ?= wd_this->z_curr_view->get_context( )->root_node. 6 7 DATA: lo_nd_read_only TYPE REF TO if_wd_context_node, 8 lo_nd_dispaly_only TYPE REF TO if_wd_context_node, 9 lo_el_read_only TYPE REF TO if_wd_context_element, 10 lo_el_dispaly_only TYPE REF TO if_wd_context_element. 11 12 DATA: lv_commitoa TYPE wdy_boolean, 13 lv_read_commit TYPE wdy_boolean, 14 lv_dispaly_commit TYPE wdy_boolean. 15 16 * get node 17 lo_nd_read_only = lo_view_context->get_child_node( name = wd_this->wdctx_read_only ). 18 lo_nd_dispaly_only = lo_view_context->get_child_node( name = wd_this->wdctx_dispaly_only ). 19 20 * get element 21 lo_el_read_only = lo_nd_read_only->get_element( ). 22 lo_el_dispaly_only = lo_nd_dispaly_only->get_element( ). 23 CHECK lo_el_read_only IS NOT INITIAL. 24 CHECK lo_el_dispaly_only IS NOT INITIAL. 25 26 * get single attribute 27 lo_el_read_only->get_attribute( 28 EXPORTING 29 name = `COMMITOA` 30 IMPORTING 31 value = lv_commitoa ). 32 lo_el_read_only->get_attribute( 33 EXPORTING 34 name = `COMMIT` 35 IMPORTING 36 value = lv_read_commit ). 37 lo_el_dispaly_only->get_attribute( 38 EXPORTING 39 name = `COMMIT` 40 IMPORTING 41 value = lv_dispaly_commit ). 42 43 44 45 * change toolbar buttons attr. 46 DATA: lt_elm TYPE if_fpm_ovp=>ty_t_toolbar_element, 47 lv_txt TYPE fpm_text, 48 lv_enable TYPE fpm_enabled, 49 lv_visible TYPE fpm_visibility. 50 TRY. 51 wd_this->mo_cnr->get_toolbar_elements( IMPORTING et_toolbar_element = lt_elm ). 52 CATCH cx_root INTO DATA(lo_err). 53 DATA(lv_err_txt) = lo_err->get_text( ). 54 ENDTRY. 55 56 LOOP AT lt_elm INTO DATA(ls_elm). 57 CASE ls_elm-element_id. 58 WHEN \'FPM_SAVE_1\'. 59 lv_enable = lv_commitoa. 60 IF lv_read_commit = abap_true. 61 lv_visible = 2. "Visible 62 ELSE. 63 lv_visible = 1. "Invisible 64 ENDIF. 65 IF lv_visible = 1. 66 lv_enable = abap_false. 67 ENDIF. 68 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/SAVE\' ). 69 70 WHEN \'FPM_CANCEL_1\'. 71 lv_enable = abap_true. 72 IF lv_read_commit = abap_true. 73 lv_visible = 2. "Visible 74 ELSE. 75 lv_visible = 1. "Invisible 76 ENDIF. 77 IF lv_visible = 1. 78 lv_enable = abap_false. 79 ENDIF. 80 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/ZCX\' ). 81 82 WHEN \'ZMDG_COMMIT\'. 83 lv_enable = lv_commitoa. 84 IF lv_read_commit = abap_true. 85 lv_visible = 2. "Visible 86 ELSE. 87 lv_visible = 1. "Invisible 88 ENDIF. 89 IF lv_visible = 1. 90 lv_enable = abap_false. 91 ENDIF. 92 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/COMMIT\' ). 93 94 WHEN \'ZMDG_COMMITSP\'. 95 lv_enable = abap_true. 96 IF lv_dispaly_commit = abap_true. 97 lv_visible = 2. "Visible 98 ELSE. 99 lv_visible = 1. "Invisible 100 ENDIF. 101 IF lv_visible = 1. 102 lv_enable = abap_false. 103 ENDIF. 104 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/SP\' ). 105 106 WHEN \'ZMDG_COMMITSPJJ\'. 107 lv_enable = abap_true. 108 IF lv_dispaly_commit = abap_true. 109 lv_visible = 2. "Visible 110 ELSE. 111 lv_visible = 1. "Invisible 112 ENDIF. 113 IF lv_visible = 1. 114 lv_enable = abap_false. 115 ENDIF. 116 lv_txt = cl_wd_utilities=>get_otr_text_by_alias( alias = \'ZMDG01/SPJJ\' ). 117 118 WHEN OTHERS. 119 ENDCASE. 120 121 change_toolbar_btn( 122 id = ls_elm-element_id 123 text = lv_txt 124 enabled = lv_enable 125 visibility = lv_visible 126 ). 127 128 ENDLOOP. 129 130 ENDMETHOD.
1 METHOD needs_confirmation . 2 3 CASE io_event->mv_event_id. 4 WHEN \'FPM_CLOSE\'. 5 DATA(lo_win_mngr) = wd_this->wd_get_api( )->get_window_manager( ). 6 DATA: lt_text TYPE string_table. 7 lt_text = VALUE #( ( `未保存的数据将会丢失,是否继续?` ) ). 8 CALL METHOD lo_win_mngr->create_popup_to_confirm 9 EXPORTING 10 text = lt_text 11 button_kind = 5 "Yes,No,Cancel 12 message_type = if_wd_message_manager=>co_type_warning 13 * close_button = ABAP_TRUE 14 * window_title = 15 * window_left_position = 16 * window_top_position = 17 * window_position = 18 * window_width = 19 * window_height = 20 * default_button = 21 RECEIVING 22 result = DATA(lo_popup_window). 23 * IF lO_POPUP_WINDOW NE 1. 24 * wd_this->wd_get_api( )->cancel_navigation( ). 25 * ENDIF. 26 27 WHEN OTHERS. 28 ENDCASE. 29 30 ENDMETHOD.
1 METHOD popup_confirm . 2 3 DATA(lo_win_mngr) = wd_this->wd_get_api( )->get_window_manager( ). 4 DATA: lt_text TYPE string_table. 5 lt_text = VALUE #( ( `未保存的数据将会丢失,是否继续?` ) ). 6 CALL METHOD lo_win_mngr->create_popup_to_confirm 7 EXPORTING 8 text = lt_text 9 button_kind = 4 "Yes,No 10 message_type = if_wd_message_manager=>co_type_warning 11 close_button = abap_false 12 * window_title = 13 * window_left_position = 14 * window_top_position = 15 * window_position = 16 * window_width = 17 * window_height = 18 * default_button = 19 RECEIVING 20 result = DATA(lo_popup_window). 21 22 lo_popup_window->subscribe_to_button_event( 23 button = if_wd_window=>co_button_yes 24 * BUTTON_TEXT = \'\' 25 * TOOLTIP = 26 action_name = \'ZYES\' 27 action_view = wd_this->z_curr_view 28 ). 29 30 lo_popup_window->subscribe_to_button_event( 31 button = if_wd_window=>co_button_no 32 * BUTTON_TEXT = \'\' 33 * TOOLTIP = 34 action_name = \'ZNO\' 35 action_view = wd_this->z_curr_view 36 ). 37 38 lo_popup_window->open( ). 39 40 41 42 43 ENDMETHOD.
1 METHOD process_event . 2 3 CASE io_event->mv_event_id. 4 WHEN \'FPM_SAVE\'. 5 fire_view_action( \'SAVE_DATA\' ). 6 7 WHEN \'FPM_CANCEL\'. 8 * fire_view_action( \'ZCX\' ). 9 wd_this->zf_close = abap_true. 10 wd_this->mo_fpm->raise_event_by_id( \'FPM_CLOSE\' ). 11 12 WHEN \'FPM_CLOSE\'. 13 popup_confirm( ). 14 15 WHEN \'ZMDG_COMMIT\'. 16 fire_view_action( \'COMMITOA\' ). 17 18 WHEN \'ZMDG_COMMITSP\'. 19 fire_view_action( \'COMMIT_APPROVE\' ). 20 21 WHEN \'ZMDG_COMMITSPJJ\'. 22 fire_view_action( \'COMMIT_SPJJ\' ). 23 24 WHEN OTHERS. 25 ENDCASE. 26 27 modify_toolbar( ). 28 29 ENDMETHOD.
1 METHOD report_msg . 2 3 * get message manager 4 DATA lo_api_controller TYPE REF TO if_wd_controller. 5 DATA lo_message_manager TYPE REF TO if_wd_message_manager. 6 7 lo_api_controller ?= wd_This->Wd_Get_Api( ). 8 9 CALL METHOD lo_api_controller->get_message_manager 10 RECEIVING 11 message_manager = lo_message_manager. 12 13 * report message 14 CALL METHOD lo_message_manager->report_message 15 EXPORTING 16 message_text = text 17 message_type = type. 18 19 ENDMETHOD.
1 METHOD wddobeforenavigation . 2 3 IF wd_this->z_inited = abap_true. 4 DATA(lo_navi_to) = wd_this->mo_fpm->get_navigate_to( ). 5 popup_confirm( ). 6 ENDIF. 7 8 ENDMETHOD.
1 METHOD wddoinit . 2 3 DATA lo_nd_header_data TYPE REF TO if_wd_context_node. 4 DATA lo_nd_header_data_info TYPE REF TO if_wd_context_node_info. 5 DATA ls_header_data TYPE wd_this->element_header_data. 6 7 DATA lt_value_set TYPE wdr_context_attr_value_list. 8 DATA ls_value_set TYPE wdr_context_attr_value. 9 lo_nd_header_data = wd_context->get_child_node( name = wd_this->wdctx_header_data ). 10 lo_nd_header_data_info = lo_nd_header_data->get_node_info( ). 11 * define list of raddiobuttons by changing type infos of attribute bound to property selectedKey 12 13 SELECT * INTO TABLE @DATA(lt_tvtwt) FROM tvtwt WHERE spras = @sy-langu AND vtweg >= \'10\' AND vtweg <= \'50\'. 14 LOOP AT lt_tvtwt INTO DATA(ls_tvtwt). 15 ls_value_set-text = ls_tvtwt-vtext. 16 ls_value_set-value = ls_tvtwt-vtweg. 17 APPEND ls_value_set TO lt_value_set. 18 ENDLOOP. 19 lo_nd_header_data_info->set_attribute_value_set( name = \'VTWEG\' value_set = lt_value_set ). 20 21 REFRESH lt_value_set. 22 SELECT * INTO TABLE @DATA(lt_t077x) FROM t077x WHERE spras = @sy-langu AND ( ktokd = \'Z001\' OR ktokd = \'Z002\') . 23 LOOP AT lt_t077x INTO DATA(ls_t077x). 24 ls_value_set-text = ls_t077x-txt30. 25 ls_value_set-value = ls_t077x-ktokd. 26 APPEND ls_value_set TO lt_value_set. 27 ENDLOOP. 28 lo_nd_header_data_info->set_attribute_value_set( name = \'KTOKD\' value_set = lt_value_set ). 29 REFRESH lt_value_set. 30 31 SELECT * INTO TABLE @DATA(lt_T005T) FROM t005t WHERE spras = @sy-langu . 32 LOOP AT lt_T005T INTO DATA(ls_T005T). 33 ls_value_set-text = ls_T005T-landx. 34 ls_value_set-value = ls_T005T-land1. 35 APPEND ls_value_set TO lt_value_set. 36 ENDLOOP. 37 lo_nd_header_data_info->set_attribute_value_set( name = \'LAND1\' value_set = lt_value_set ). 38 REFRESH lt_value_set. 39 40 DATA: i_input TYPE dd07v,o_output TYPE dd07v. 41 i_input-domname = \'ZDCJLXS\'. 42 43 i_input-domvalue_l = \'A1\'. 44 CALL FUNCTION \'ZMDG_GET_DD07V\' 45 EXPORTING 46 i_input = i_input 47 IMPORTING 48 o_output = o_output. 49 ls_value_set-text = o_output-ddtext ."\'新增客户代码\'. 50 ls_value_set-value = \'A1\'. 51 APPEND ls_value_set TO lt_value_set. 52 i_input-domvalue_l = \'A2\'. 53 CALL FUNCTION \'ZMDG_GET_DD07V\' 54 EXPORTING 55 i_input = i_input 56 IMPORTING 57 o_output = o_output. 58 ls_value_set-text = o_output-ddtext ."\'客户抬头变更\'. 59 ls_value_set-value = \'A2\'. 60 APPEND ls_value_set TO lt_value_set. 61 i_input-domvalue_l = \'A3\'. 62 CALL FUNCTION \'ZMDG_GET_DD07V\' 63 EXPORTING 64 i_input = i_input 65 IMPORTING 66 o_output = o_output. 67 ls_value_set-text = o_output-ddtext ."\'送达方变售达方\'. 68 ls_value_set-value = \'A3\'. 69 APPEND ls_value_set TO lt_value_set. 70 i_input-domvalue_l = \'A4\'. 71 CALL FUNCTION \'ZMDG_GET_DD07V\' 72 EXPORTING 73 i_input = i_input 74 IMPORTING 75 o_output = o_output. 76 ls_value_set-text = o_output-ddtext ."\'与关联企业共用编码\'. 77 ls_value_set-value = \'A4\'. 78 APPEND ls_value_set TO lt_value_set. 79 80 lo_nd_header_data_info->set_attribute_value_set( name = \'ZCJLX\' value_set = lt_value_set ). 81 REFRESH lt_value_set. 82 83 DATA lo_el_header_data TYPE REF TO if_wd_context_element. 84 85 * navigate from <CONTEXT> to <HEADER_DATA> via lead selection 86 lo_nd_header_data = wd_context->get_child_node( name = wd_this->wdctx_header_data ). 87 88 * get element via lead selection 89 lo_el_header_data = lo_nd_header_data->get_element( ). 90 91 SELECT SINGLE bname name_text zssbm zssgs zcqb 92 INTO (ls_header_data-bname,ls_header_data-bnametext,ls_header_data-zssbm,ls_header_data-zssgs,ls_header_data-zcqb) 93 FROM v_username 94 INNER JOIN ztoasapuser ON ztoasapuser~zsapuname = v_username~bname 95 WHERE bname = sy-uname . 96 97 * set all declared attributes 98 lo_el_header_data->set_static_attributes( 99 static_attributes = ls_header_data ). 100 101 102 103 init_toolbar( ). 104 105 ENDMETHOD.
PFCG配置