WEBDYNPRO FPM 框架

框架搭建

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配置

相关推荐
崔庆才丨静觅9 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606110 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了10 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅10 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅10 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅11 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment11 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅11 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊11 小时前
jwt介绍
前端
爱敲代码的小鱼11 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax