1.FTP配置:

  设置FTP参数:IP地址、账号、密码、路径、RFC目标。

  设置数据表:数据表及字段明细,设置查询字段及报表输出字段。

2.操作界面 

3.程序 ZFID0003_ETL_FTP

 主程序:

 1 *&---------------------------------------------------------------------*
 2 *& Report  ZFID0003_ETL_FTP
 3 *&
 4 *&---------------------------------------------------------------------*
 5 *&
 6 *&
 7 *&---------------------------------------------------------------------*
 8 
 9 report  zfid0003_etl_ftp.
10 
11 include zfid0003_etl_ftp_cls.
12 
13 include zfid0003_etl_ftp_top.
14 
15 include zfid0003_etl_ftp_scr.
16 
17 include zfid0003_etl_ftp_pro.
18 
19 include zfid0003_etl_ftp_frm.
View Code

 

 Include程序:

 1 *&---------------------------------------------------------------------*
 2 *&  包括              ZFID0003_ETL_FTP_CLS
 3 *&---------------------------------------------------------------------*
 4 
 5 *----------------------------------------------------------------------*
 6 *       CLASS lcl_alv_event_handler DEFINITION
 7 *----------------------------------------------------------------------*
 8 *
 9 *----------------------------------------------------------------------*
10 class lcl_alv_event_handler definition.
11   public section.
12     methods:
13       handle_double_click   for event double_click
14                             of cl_gui_alv_grid
15                             importing e_row e_column es_row_no,
16 
17       handle_hotspot_click  for event hotspot_click
18                             of cl_gui_alv_grid
19                             importing e_row_id e_column_id es_row_no,
20 
21       handle_toolbar        for event toolbar
22                             of cl_gui_alv_grid
23                             importing e_object e_interactive,
24 
25       handle_toolbar_itm    for event toolbar
26                             of cl_gui_alv_grid
27                             importing e_object e_interactive,
28 
29       handle_f4             for event onf4
30                             of cl_gui_alv_grid
31                             importing e_fieldname e_fieldvalue es_row_no er_event_data et_bad_cells,
32 
33       handle_command_ftp    for event user_command
34                             of cl_gui_alv_grid
35                             importing e_ucomm,
36 
37       handle_command_tabhd  for event user_command
38                             of cl_gui_alv_grid
39                             importing e_ucomm,
40 
41       handle_command_tabit  for event user_command
42                             of cl_gui_alv_grid
43                             importing e_ucomm.
44 endclass.                    "lcl_alv_event_handler DEFINITION
45 
46 *----------------------------------------------------------------------*
47 *       CLASS lcl_alv_event_handler IMPLEMENTATION
48 *----------------------------------------------------------------------*
49 *
50 *----------------------------------------------------------------------*
51 class lcl_alv_event_handler implementation .
52   "双击行显示错误日志
53   method handle_double_click.
54     perform handle_double_click using e_row.
55     perform alv_refresh_display.
56   endmethod.                    "handle_double_click
57 
58   method handle_hotspot_click.
59     perform handle_hotspot_clk using e_row_id
60                                   e_column_id
61                                   es_row_no.
62   endmethod.                   "handle_1100_data_changed
63 
64   method handle_toolbar.
65     perform handle_toolbar using  e_object e_interactive.
66   endmethod.                    "HANDLE_TOOLBAR
67 
68   method handle_toolbar_itm.
69     perform handle_toolbar_itm using  e_object e_interactive.
70   endmethod.                    "HANDLE_TOOLBAR
71 
72   method handle_f4.
73     perform handle_f4 using e_fieldname e_fieldvalue es_row_no er_event_data et_bad_cells.
74   endmethod.                                                "HANDLE_F4
75 
76   method handle_command_ftp.
77     perform alv_changed_data.
78     perform handle_command_ftp using e_ucomm.
79     perform alv_refresh_display.
80   endmethod.                    "HANDLE_USER_COMMAND
81 
82   method handle_command_tabhd.
83     perform alv_changed_data.
84     perform handle_command_tabhd using e_ucomm.
85     perform alv_refresh_display.
86   endmethod.                    "HANDLE_USER_COMMAND
87 
88   method handle_command_tabit.
89     perform alv_changed_data.
90     perform handle_command_tabit using e_ucomm.
91     perform alv_refresh_display.
92   endmethod.                    "HANDLE_USER_COMMAND
93 
94 endclass.                    "lcl_alv_event_handler IMPLEMENTATION
View Code
 1 *&---------------------------------------------------------------------*
 2 *&  包括              ZFID0003_ETL_FTP_TOP
 3 *&---------------------------------------------------------------------*
 4 
 5 type-pools:
 6   ole2.
 7 
 8 tables:
 9   ztfi0035_tab_hd,
10   ztfi0036_tab_itm,
11   ztfi0037_etl_ftp,
12   sscrfields.
13 
14 data:
15   gt_tab_ftp like table of ztfi0037_etl_ftp,
16   gt_tab_hd  like table of ztfi0035_tab_hd,
17   gt_all_itm like table of ztfi0036_tab_itm,
18   gt_tab_itm like table of ztfi0036_tab_itm.
19 
20 field-symbols:
21   <fs_tab_ftp> like ztfi0037_etl_ftp,
22   <fs_tab_hd>  like ztfi0035_tab_hd,
23   <fs_tab_itm> like ztfi0036_tab_itm.
24 
25 *"ALV PARAMETERS
26 data:
27   go_docking_con        type ref to cl_gui_docking_container,
28   go_splitter_con       type ref to cl_gui_splitter_container,
29   go_splitter_con_left  type ref to cl_gui_splitter_container,
30   go_splitter_con_right type ref to cl_gui_splitter_container,
31   go_con_left           type ref to cl_gui_container,
32   go_con_right          type ref to cl_gui_container.
33 
34 
35 data:
36   go_con_ftp    type ref to cl_gui_container,
37   go_con_tabhd  type ref to cl_gui_container,
38   go_con_tabit  type ref to cl_gui_container,
39   go_alv_ftp    type ref to cl_gui_alv_grid,
40   go_alv_tabhd  type ref to cl_gui_alv_grid,
41   go_alv_tabit  type ref to cl_gui_alv_grid,
42   go_event_ftp   type ref to lcl_alv_event_handler,
43   go_event_tabhd type ref to lcl_alv_event_handler,
44   go_event_tabit type ref to lcl_alv_event_handler.
45 
46 data:
47   gt_fieldcat_ftp    type lvc_t_fcat,
48   gt_fieldcat_tabhd  type lvc_t_fcat,
49   gt_fieldcat_tabit  type lvc_t_fcat,
50   gt_f4_ftp          type lvc_t_f4,
51   gt_f4_tabhd        type lvc_t_f4,
52   gt_f4_tabit        type lvc_t_f4,
53   gt_exclude         type ui_functions.
54 data:
55   gs_fieldcat        type lvc_s_fcat,
56   gs_f4              type lvc_s_f4,
57   gs_layout          type lvc_s_layo.
View Code
 1 *&---------------------------------------------------------------------*
 2 *&  包括              ZFID0003_ETL_FTP_SCR
 3 *&---------------------------------------------------------------------*
 4 
 5 selection-screen begin of block b_block with frame title text-001.
 6 parameter:
 7   p_ftpnm type ztfi0037_etl_ftp-ftpnm matchcode object zhfi0037_etl_ftp.
 8 
 9 selection-screen pushbutton 70(10) bt_query user-command bt_query.
10 selection-screen end of block b_block.
11 
12 selection-screen function key 1.
View Code
 1 *&---------------------------------------------------------------------*
 2 *&  包括              ZFID0003_ETL_FTP_PRO
 3 *&---------------------------------------------------------------------*
 4 
 5 initialization.
 6   perform frm_initial_data.
 7 
 8 at selection-screen output.
 9   perform frm_split_dock.
10   perform frm_event_dock.
11   perform frm_alv_display.
12 
13 at selection-screen.
14   perform frm_ucomm_handler.
15 
16 start-of-selection.
View Code
  1 *&---------------------------------------------------------------------*
  2 *&  包括              ZFID0003_ETL_FTP_FRM
  3 *&---------------------------------------------------------------------*
  4 *&---------------------------------------------------------------------*
  5 *&      Form  handle_toolbar
  6 *&---------------------------------------------------------------------*
  7 *       text
  8 *----------------------------------------------------------------------*
  9 *      -->P_E_OBJECT  text
 10 *      -->P_E_INTERACTIVE  text
 11 *----------------------------------------------------------------------*
 12 form handle_toolbar  using  fv_object      type ref to cl_alv_event_toolbar_set
 13                             fv_interactive type char1.
 14   data: ls_toolbar type stb_button.
 15 
 16   ls_toolbar-function = 'INSERT_ROW'.
 17   ls_toolbar-icon = icon_insert_row.
 18   ls_toolbar-text = space.
 19   ls_toolbar-quickinfo = '新增行'.
 20   append ls_toolbar to fv_object->mt_toolbar.
 21   clear: ls_toolbar.
 22 
 23   ls_toolbar-function = 'DELETE_ROW'.
 24   ls_toolbar-icon = icon_delete_row.
 25   ls_toolbar-text = space.
 26   ls_toolbar-quickinfo = '删除行'.
 27   append ls_toolbar to fv_object->mt_toolbar.
 28   clear: ls_toolbar.
 29 endform.                    " handle_toolbar
 30 *&---------------------------------------------------------------------*
 31 *&      Form  handle_f4
 32 *&---------------------------------------------------------------------*
 33 *       text
 34 *----------------------------------------------------------------------*
 35 *      -->P_E_FIELDNAME  text
 36 *      -->P_E_FIELDVALUE  text
 37 *      -->P_ES_ROW_NO  text
 38 *      -->P_ER_EVENT_DATA  text
 39 *      -->P_ET_BAD_CELLS  text
 40 *----------------------------------------------------------------------*
 41 form handle_f4  using   fv_fieldname type lvc_fname
 42                         fv_fieldvalue type lvc_value
 43                         fs_row_no type lvc_s_roid
 44                         fo_event_data type ref to cl_alv_event_data
 45                         ft_bad_cells type lvc_t_modi.
 46   data:
 47     ls_modi type lvc_s_modi.
 48   data:
 49     lv_dtext type dd02t-ddtext.
 50   field-symbols:
 51     <ft_modi> type lvc_t_modi.
 52 
 53   fo_event_data->m_event_handled = 'X'.
 54 
 55   case fv_fieldname.
 56     when 'TABNM'.
 57       perform f4_dd_table(rsaqddic) using 'SAPLAQJD_CNTRL'
 58                                           '0300'
 59                                           'G_DYN_0300-TNAME'
 60                                     changing fv_fieldvalue.
 61     when others.
 62   endcase.
 63 
 64   select single ddtext
 65   into lv_dtext
 66   from dd02t
 67   where tabname = fv_fieldvalue.
 68 
 69   assign fo_event_data->m_data->* to <ft_modi>.
 70   ls_modi-row_id    = fs_row_no-row_id."
 71   ls_modi-fieldname = fv_fieldname.
 72   ls_modi-value     = fv_fieldvalue.
 73   append ls_modi to <ft_modi>.
 74   ls_modi-row_id    = fs_row_no-row_id."
 75   ls_modi-fieldname = 'TABTX'.
 76   ls_modi-value     = lv_dtext.
 77   append ls_modi to <ft_modi>.
 78 
 79 endform.                                                    " handle_f4
 80 *&---------------------------------------------------------------------*
 81 *&      Form  handle_user_command
 82 *&---------------------------------------------------------------------*
 83 *       text
 84 *----------------------------------------------------------------------*
 85 *      -->P_E_UCOMM  text
 86 *----------------------------------------------------------------------*
 87 form handle_command_ftp  using fv_ucomm.
 88   data:
 89     ls_tab_ftp type ztfi0037_etl_ftp,
 90     ls_selected_row type lvc_s_row.
 91   data:
 92     lt_selected_row type lvc_t_row.
 93 
 94   if fv_ucomm = 'INSERT_ROW'.
 95     append ls_tab_ftp to gt_tab_ftp.
 96   elseif fv_ucomm = 'DELETE_ROW'.
 97     go_alv_ftp->get_selected_rows(
 98       importing
 99         et_index_rows = lt_selected_row ).
100 
101     read table lt_selected_row into ls_selected_row index 1.
102     if sy-subrc = 0.
103       delete gt_tab_ftp index ls_selected_row-index.
104     endif.
105   endif.
106 endform.                    " handle_user_command
107 *&---------------------------------------------------------------------*
108 *&      Form  frm_split_dock
109 *&---------------------------------------------------------------------*
110 *       text
111 *----------------------------------------------------------------------*
112 *  -->  p1        text
113 *  <--  p2        text
114 *----------------------------------------------------------------------*
115 form frm_split_dock .
116   check go_docking_con is initial.
117 
118   "创建容器
119   create object go_docking_con
120     exporting
121       ratio = 89
122       side  = cl_gui_docking_container=>dock_at_bottom.
123 
124   "拆分为左、右
125   create object go_splitter_con
126     exporting
127       parent  = go_docking_con
128       rows    = 1
129       columns = 2.
130   go_splitter_con->set_column_width( exporting id = 1 width = 45 ).
131 
132   go_con_left  = go_splitter_con->get_container( row = 1 column = 1 ).
133   go_con_right = go_splitter_con->get_container( row = 1 column = 2 ).
134 
135   "左侧再次拆分为上下
136   create object go_splitter_con_left
137     exporting
138       parent  = go_con_left
139       rows    = 2
140       columns = 1.
141   go_splitter_con_left->set_row_height( exporting id = 1 height = 40 ).
142 
143   "右侧不拆分
144   create object go_splitter_con_right
145     exporting
146       parent  = go_con_right
147       rows    = 1
148       columns = 1.
149   "go_splitter_con_right->set_row_height( EXPORTING id = 1 height = 40 ).
150 
151   "创建FTP的ALV
152   go_con_ftp = go_splitter_con_left->get_container( row = 1 column = 1 ).
153   create object go_alv_ftp
154     exporting
155       i_parent = go_con_ftp.
156 
157   "创建TABLE HEADER的ALV
158   go_con_tabhd = go_splitter_con_left->get_container( row = 2 column = 1 ).
159   create object go_alv_tabhd
160     exporting
161       i_parent = go_con_tabhd.
162 
163   "创建TABLE ITEM的ALV
164   go_con_tabit = go_splitter_con_right->get_container( row = 1 column = 1 ).
165   create object go_alv_tabit
166     exporting
167       i_parent = go_con_tabit.
168 endform.                    " frm_split_dock
169 *&---------------------------------------------------------------------*
170 *&      Form  frm_event_dock
171 *&---------------------------------------------------------------------*
172 *       text
173 *----------------------------------------------------------------------*
174 *  -->  p1        text
175 *  <--  p2        text
176 *----------------------------------------------------------------------*
177 form frm_event_dock .
178   if go_event_ftp is initial
179   or go_event_tabhd is initial
180   or go_event_tabit is initial.
181     create object:go_event_ftp,go_event_tabhd,go_event_tabit.
182     set handler:
183       go_event_ftp->handle_f4   for go_alv_ftp,
184       go_event_tabhd->handle_f4 for go_alv_tabhd,
185       go_event_tabit->handle_f4 for go_alv_tabit,
186 
187       go_event_ftp->handle_toolbar for go_alv_ftp,
188       go_event_tabhd->handle_toolbar for go_alv_tabhd,
189       go_event_tabit->handle_toolbar_itm for go_alv_tabit,
190 
191       go_event_ftp->handle_command_ftp for go_alv_ftp,
192       go_event_tabhd->handle_command_tabhd for go_alv_tabhd,
193       go_event_tabit->handle_command_tabit for go_alv_tabit,
194 
195       go_event_tabhd->handle_double_click for go_alv_tabhd.
196   endif.
197 endform.                    " frm_event_dock
198 *&---------------------------------------------------------------------*
199 *&      Form  frm_alv_display
200 *&---------------------------------------------------------------------*
201 *       text
202 *----------------------------------------------------------------------*
203 *  -->  p1        text
204 *  <--  p2        text
205 *----------------------------------------------------------------------*
206 form frm_alv_display.
207   define build_fieldcat.
208     gs_fieldcat-fieldname  = &3.
209     gs_fieldcat-edit       = &4.
210     gs_fieldcat-checkbox   = &5.
211     gs_fieldcat-f4availabl = &6.
212     gs_fieldcat-lowercase  = &7.
213     gs_fieldcat-outputlen  = &8.
214     gs_fieldcat-coltext    = &9.
215     if &3 = 'FTPPW'.
216       gs_fieldcat-edit_mask  = '******'.
217     endif.
218     append gs_fieldcat to &1.
219     clear gs_fieldcat.
220 
221     if &6 = 'X'.
222       gs_f4-fieldname = &3.
223       gs_f4-register = 'X'.
224       insert gs_f4 into table &2.
225       clear gs_f4.
226     endif.
227   end-of-definition.
228 
229   perform frm_alv_toolbar tables gt_exclude.
230   perform frm_alv_layout changing gs_layout.
231 
232   if gt_fieldcat_ftp is initial.
233     "ALV显示FTP参数
234     build_fieldcat:
235       gt_fieldcat_ftp  gt_f4_ftp  'FTPNM'    'X'   ' '   ' '  ' '  10  'FTP名称',
236       gt_fieldcat_ftp  gt_f4_ftp  'FTPTX'    'X'   ' '   ' '  ' '  15  'FTP描述',
237       gt_fieldcat_ftp  gt_f4_ftp  'FTPIP'    'X'   ' '   ' '  ' '  15  'FTP地址',
238       gt_fieldcat_ftp  gt_f4_ftp  'FTPUR'    'X'   ' '   ' '  'X'  10  'FTP账号',
239       gt_fieldcat_ftp  gt_f4_ftp  'FTPPW'    'X'   ' '   ' '  'X'  15  'FTP密码',
240       gt_fieldcat_ftp  gt_f4_ftp  'FTPDS'    'X'   ' '   ' '  ' '  15  'RFC目标'.
241 
242     gs_layout-grid_title = 'FTP参数明细【参数设置】'.
243     "gs_layout-NO_TOOLBAR = 'X'.
244     gs_layout-cwidth_opt = 'X'.
245 
246     call method go_alv_ftp->set_table_for_first_display
247       exporting
248         it_toolbar_excluding = gt_exclude
249         is_layout            = gs_layout
250       changing
251         it_outtab            = gt_tab_ftp
252         it_fieldcatalog      = gt_fieldcat_ftp.
253   endif.
254 
255   if gt_fieldcat_tabhd is initial.
256     "ALV显示TABLE抬头
257     build_fieldcat:
258       gt_fieldcat_tabhd  gt_f4_tabhd  'FTPNM'      ' '   ' '   ' '  ' '  12  'FTP名称',
259       gt_fieldcat_tabhd  gt_f4_tabhd  'TABNM'      'X'   ' '   'X'  ' '  15  '表名',
260       gt_fieldcat_tabhd  gt_f4_tabhd  'TABTX'      'X'   ' '   'X'  ' '  15  '表描述',
261       gt_fieldcat_tabhd  gt_f4_tabhd  'FG_FTP'     'X'   'X'   ' '  ' '  10  '标识-启用'.
262     gs_layout-grid_title = '数据表抬头【请维护数据表并启用】'.
263 
264     call method go_alv_tabhd->set_table_for_first_display
265       exporting
266         it_toolbar_excluding = gt_exclude
267         is_layout            = gs_layout
268       changing
269         it_outtab            = gt_tab_hd
270         it_fieldcatalog      = gt_fieldcat_tabhd.
271 
272     "注册事件-搜索帮助
273     go_alv_tabhd->register_f4_for_fields(  exporting it_f4 = gt_f4_tabhd ).
274     go_alv_tabhd->register_edit_event(  exporting i_event_id = cl_gui_alv_grid=>mc_evt_modified ).
275   endif.
276 
277   if gt_fieldcat_tabit is initial.
278     "ALV显示TABLE字段明细
279     build_fieldcat:
280       gt_fieldcat_tabit  gt_f4_tabit  'FTPNM'      ' '   ' '  ' '  ' '  12  'FTP名称',
281       gt_fieldcat_tabit  gt_f4_tabit  'TABNM'      ' '   ' '  ' '  ' '  15  '表名',
282       gt_fieldcat_tabit  gt_f4_tabit  'FLDNO'      ' '   ' '  ' '  ' '   6  '行项目',
283       gt_fieldcat_tabit  gt_f4_tabit  'FLDNM'      ' '   ' '  ' '  ' '   8  '字段名',
284       gt_fieldcat_tabit  gt_f4_tabit  'FLDTX'      ' '   ' '  ' '  ' '  20  '描述',
285       gt_fieldcat_tabit  gt_f4_tabit  'FG_QRY'     'X'   'X'  ' '  ' '  10  '标识-查询',
286       gt_fieldcat_tabit  gt_f4_tabit  'FG_EXP'     'X'   'X'  ' '  ' '  10  '标识-输出'.
287     gs_layout-grid_title = '数据表明细【请单击左侧数据表并针对字段明细选择查询字段及输出字段】'.
288 
289     call method go_alv_tabit->set_table_for_first_display
290       exporting
291         it_toolbar_excluding = gt_exclude
292         is_layout            = gs_layout
293       changing
294         it_outtab            = gt_tab_itm
295         it_fieldcatalog      = gt_fieldcat_tabit.
296   endif.
297 endform.                    " frm_alv_display
298 *&---------------------------------------------------------------------*
299 *&      Form  frm_initial_data
300 *&---------------------------------------------------------------------*
301 *       text
302 *----------------------------------------------------------------------*
303 *  -->  p1        text
304 *  <--  p2        text
305 *----------------------------------------------------------------------*
306 form frm_initial_data .
307   bt_query = '@BO@查询'.
308   sscrfields-functxt_01 = '@2L@保存设置'.
309 endform.                    " frm_initial_data
310 *&---------------------------------------------------------------------*
311 *&      Form  frm_alv_layout
312 *&---------------------------------------------------------------------*
313 *       text
314 *----------------------------------------------------------------------*
315 *      <--P_LS_LAYOUT  text
316 *----------------------------------------------------------------------*
317 form frm_alv_layout  changing fs_layout type lvc_s_layo.
318   fs_layout-zebra = 'X'.
319   fs_layout-sel_mode = 'A'.
320   fs_layout-smalltitle = 'X'.
321 endform.                    " frm_alv_layout
322 *&---------------------------------------------------------------------*
323 *&      Form  frm_ucomm_handler
324 *&---------------------------------------------------------------------*
325 *       text
326 *----------------------------------------------------------------------*
327 *  -->  p1        text
328 *  <--  p2        text
329 *----------------------------------------------------------------------*
330 form frm_ucomm_handler .
331   data:
332     lv_flg type c.
333   data:
334     lt_return type table of bapiret2.
335 
336   perform alv_changed_data.
337 
338   case sy-ucomm.
339     when 'FC01'.
340       perform frm_save_check using lv_flg.
341       perform frm_save_data using lv_flg.
342 
343     when 'BT_QUERY'.
344       perform frm_query_check.
345       perform frm_query_data.
346   endcase.
347 
348   perform alv_refresh_display.
349 
350   clear:sy-ucomm.
351 endform.                    " frm_ucomm_handler
352 *&---------------------------------------------------------------------*
353 *&      Form  frm_query_check
354 *&---------------------------------------------------------------------*
355 *       text
356 *----------------------------------------------------------------------*
357 *  -->  p1        text
358 *  <--  p2        text
359 *----------------------------------------------------------------------*
360 form frm_query_check .
361   if gt_tab_ftp is not initial
362   or gt_tab_hd  is not initial
363   or gt_tab_itm is not initial.
364 
365   endif.
366 endform.                    " frm_query_check
367 *&---------------------------------------------------------------------*
368 *&      Form  frm_query_data
369 *&---------------------------------------------------------------------*
370 *       text
371 *----------------------------------------------------------------------*
372 *  -->  p1        text
373 *  <--  p2        text
374 *----------------------------------------------------------------------*
375 form frm_query_data .
376   select *
377   into corresponding fields of table gt_tab_ftp
378   from ztfi0037_etl_ftp
379   where ftpnm = p_ftpnm.
380 
381   select *
382   into corresponding fields of table gt_tab_hd
383   from ztfi0035_tab_hd
384   where ftpnm = p_ftpnm.
385 endform.                    " frm_query_data
386 *&---------------------------------------------------------------------*
387 *&      Form  frm_alv_toolbar
388 *&---------------------------------------------------------------------*
389 *       text
390 *----------------------------------------------------------------------*
391 *      -->P_GT_EXCLUDE  text
392 *----------------------------------------------------------------------*
393 form frm_alv_toolbar  tables   ft_exclude type ui_functions.
394   "插入正确名称 <...>.
395   refresh: ft_exclude.
396 
397   append cl_gui_alv_grid=>mc_fc_maximum to ft_exclude.
398   append cl_gui_alv_grid=>mc_fc_minimum to ft_exclude.
399   append cl_gui_alv_grid=>mc_fc_subtot to ft_exclude.
400   append cl_gui_alv_grid=>mc_fc_sum to ft_exclude.
401   append cl_gui_alv_grid=>mc_fc_average to ft_exclude.
402   append cl_gui_alv_grid=>mc_mb_sum to ft_exclude.
403   append cl_gui_alv_grid=>mc_mb_subtot to ft_exclude.
404   append cl_gui_alv_grid=>mc_fc_sort_asc to ft_exclude.
405   append cl_gui_alv_grid=>mc_fc_sort_dsc to ft_exclude.
406   append cl_gui_alv_grid=>mc_fc_find to ft_exclude.
407   append cl_gui_alv_grid=>mc_fc_filter to ft_exclude.
408   append cl_gui_alv_grid=>mc_fc_print to ft_exclude.
409   append cl_gui_alv_grid=>mc_fc_print_prev to ft_exclude.
410   append cl_gui_alv_grid=>mc_mb_export to ft_exclude.
411   append cl_gui_alv_grid=>mc_fc_graph to ft_exclude.
412   append cl_gui_alv_grid=>mc_mb_export to ft_exclude.
413   append cl_gui_alv_grid=>mc_mb_view to ft_exclude.
414   append cl_gui_alv_grid=>mc_fc_detail to ft_exclude.
415   append cl_gui_alv_grid=>mc_fc_help to ft_exclude.
416   append cl_gui_alv_grid=>mc_fc_info to ft_exclude.
417   append cl_gui_alv_grid=>mc_mb_variant to ft_exclude.
418   append cl_gui_alv_grid=>mc_fc_refresh to ft_exclude.
419   append cl_gui_alv_grid=>mc_fc_check to ft_exclude.
420   append cl_gui_alv_grid=>mc_fc_loc_copy to ft_exclude.
421   append cl_gui_alv_grid=>mc_fc_loc_insert_row to ft_exclude.
422   append cl_gui_alv_grid=>mc_fc_loc_delete_row to ft_exclude.
423   append cl_gui_alv_grid=>mc_fc_loc_copy_row to ft_exclude.
424   append cl_gui_alv_grid=>mc_fc_loc_append_row to ft_exclude.
425   append cl_gui_alv_grid=>mc_fc_loc_undo to ft_exclude.
426   append cl_gui_alv_grid=>mc_fc_loc_cut to ft_exclude.
427   append cl_gui_alv_grid=>mc_mb_paste to ft_exclude.
428 endform.                    " frm_alv_toolbar
429 *&---------------------------------------------------------------------*
430 *&      Form  alv_refresh_display
431 *&---------------------------------------------------------------------*
432 *       text
433 *----------------------------------------------------------------------*
434 *  -->  p1        text
435 *  <--  p2        text
436 *----------------------------------------------------------------------*
437 form alv_refresh_display .
438   go_alv_ftp->refresh_table_display( ).
439   go_alv_tabhd->refresh_table_display( ).
440   go_alv_tabit->refresh_table_display( ).
441 endform.                    " alv_refresh_display
442 *&---------------------------------------------------------------------*
443 *&      Form  handle_double_click
444 *&---------------------------------------------------------------------*
445 *       text
446 *----------------------------------------------------------------------*
447 *      -->P_E_ROW  text
448 *----------------------------------------------------------------------*
449 form handle_double_click  using  fv_row.
450   perform frm_check_ftp.
451   perform frm_check_tabhd using fv_row.
452 
453   perform frm_get_tabit using fv_row.
454 endform.                    " handle_double_click
455 *&---------------------------------------------------------------------*
456 *&      Form  handle_hotspot_clk
457 *&---------------------------------------------------------------------*
458 *       text
459 *----------------------------------------------------------------------*
460 *      -->P_E_ROW_ID  text
461 *      -->P_E_COLUMN_ID  text
462 *      -->P_ES_ROW_NO  text
463 *----------------------------------------------------------------------*
464 form handle_hotspot_clk  using e_row_id  type lvc_s_row
465                                e_column_id type lvc_s_col
466                                es_row_no type lvc_s_roid.
467   if e_column_id = 'VBELN'.
468 *    read table gt_200_alv assigning <fs_200_alv>
469 *    index es_row_no-row_id.
470 *    if sy-subrc eq 0.
471 *      check <fs_200_alv>-vbeln+0(1) ne 'Y'.
472 *      set parameter id 'AUN' field <fs_200_alv>-vbeln.
473 *      call transaction 'VA03' and skip first screen.
474 *    endif.
475   endif.
476 endform.                    "handle_hotspot_clk
477 *&---------------------------------------------------------------------*
478 *&      Form  handle_command_tabhd
479 *&---------------------------------------------------------------------*
480 *       text
481 *----------------------------------------------------------------------*
482 *      -->P_E_UCOMM  text
483 *----------------------------------------------------------------------*
484 form handle_command_tabhd  using  fv_ucomm.
485   perform frm_check_ftp.
486 
487   data:
488     ls_tab_tabhd type ztfi0035_tab_hd,
489     ls_tab_ftp   type ztfi0037_etl_ftp,
490     ls_selected_row type lvc_s_row.
491   data:
492     lt_selected_row type lvc_t_row.
493 
494   if fv_ucomm = 'INSERT_ROW'.
495     read table gt_tab_ftp into ls_tab_ftp index 1.
496     if sy-subrc = 0.
497       ls_tab_tabhd-ftpnm = ls_tab_ftp-ftpnm.
498       append ls_tab_tabhd to gt_tab_hd.
499     endif.
500   elseif fv_ucomm = 'DELETE_ROW'.
501     go_alv_ftp->get_selected_rows(
502       importing
503         et_index_rows = lt_selected_row ).
504 
505     read table lt_selected_row into ls_selected_row index 1.
506     if sy-subrc = 0.
507       delete gt_tab_hd index ls_selected_row-index.
508     endif.
509   endif.
510 
511   loop at gt_tab_hd into ls_tab_tabhd
512   where tabtx = space.
513     select single ddtext
514     into ls_tab_tabhd-tabtx
515     from dd02t
516     where tabname = ls_tab_tabhd-tabnm.
517     modify gt_tab_hd from ls_tab_tabhd.
518     clear:ls_tab_tabhd.
519   endloop.
520 
521 endform.                    " handle_command_tabhd
522 *&---------------------------------------------------------------------*
523 *&      Form  handle_command_tabit
524 *&---------------------------------------------------------------------*
525 *       text
526 *----------------------------------------------------------------------*
527 *      -->P_E_UCOMM  text
528 *----------------------------------------------------------------------*
529 form handle_command_tabit  using fv_ucomm.
530   field-symbols:
531     <fs_all_itm> like ztfi0036_tab_itm.
532 
533   if fv_ucomm = 'SAVE_ITM'.
534     loop at gt_tab_itm assigning <fs_tab_itm>.
535       append initial line to gt_all_itm assigning <fs_all_itm>.
536       move-corresponding <fs_tab_itm> to <fs_all_itm>.
537       unassign <fs_all_itm>.
538     endloop.
539   endif.
540   message s007(zfi_00).
541 endform.                    " handle_command_tabit
542 *&---------------------------------------------------------------------*
543 *&      Form  frm_check_ftp
544 *&---------------------------------------------------------------------*
545 *       text
546 *----------------------------------------------------------------------*
547 *  -->  p1        text
548 *  <--  p2        text
549 *----------------------------------------------------------------------*
550 form frm_check_ftp .
551   data:
552     lv_count type i.
553   data:
554     ls_tab_ftp type ztfi0037_etl_ftp.
555 
556   if gt_tab_ftp[] is initial.
557     message e001(zfi_00).
558   else.
559     describe table gt_tab_ftp lines lv_count.
560     if lv_count > 1.
561       message e002(zfi_00).
562     endif.
563     read table gt_tab_ftp into ls_tab_ftp index 1.
564     if sy-subrc = 0.
565       if ls_tab_ftp-ftpnm is initial
566       or ls_tab_ftp-ftpip is initial
567       or ls_tab_ftp-ftpur is initial
568       or ls_tab_ftp-ftppw is initial.
569         message e003(zfi_00).
570       endif.
571     endif.
572   endif.
573 endform.                    " frm_check_ftp
574 *&---------------------------------------------------------------------*
575 *&      Form  frm_check_tabhd
576 *&---------------------------------------------------------------------*
577 *       text
578 *----------------------------------------------------------------------*
579 *  -->  p1        text
580 *  <--  p2        text
581 *----------------------------------------------------------------------*
582 form frm_check_tabhd using fv_row.
583   data:
584     ls_tab_hd  type ztfi0035_tab_hd.
585 
586   read table gt_tab_hd into ls_tab_hd index fv_row.
587   if sy-subrc = 0.
588     if ls_tab_hd-ftpnm is initial.
589       message i004(zfi_00).
590     endif.
591     if ls_tab_hd-tabnm is initial.
592       message i005(zfi_00).
593     else.
594       select single count(*)
595       from dd02l
596       where tabname = ls_tab_hd-tabnm.
597       if sy-subrc <> 0.
598         message i006(zfi_00) with ls_tab_hd-tabnm.
599       endif.
600     endif.
601   endif.
602 
603   loop at gt_tab_hd into ls_tab_hd
604   where tabtx = space.
605     select single ddtext
606     into ls_tab_hd-tabtx
607     from dd02t
608     where tabname = ls_tab_hd-tabnm.
609     modify gt_tab_hd from ls_tab_hd.
610     clear:ls_tab_hd.
611   endloop.
612 endform.                    " frm_check_tabhd
613 *&---------------------------------------------------------------------*
614 *&      Form  alv_changed_data
615 *&---------------------------------------------------------------------*
616 *       text
617 *----------------------------------------------------------------------*
618 *  -->  p1        text
619 *  <--  p2        text
620 *----------------------------------------------------------------------*
621 form alv_changed_data .
622   go_alv_ftp->check_changed_data( ).
623   go_alv_tabhd->check_changed_data( ).
624   go_alv_tabit->check_changed_data( ).
625 endform.                    " alv_changed_data
626 *&---------------------------------------------------------------------*
627 *&      Form  frm_get_tabit
628 *&---------------------------------------------------------------------*
629 *       text
630 *----------------------------------------------------------------------*
631 *      -->P_FV_ROW  text
632 *----------------------------------------------------------------------*
633 form frm_get_tabit  using fv_row.
634   data:
635     lt_tab_itm like table of ztfi0036_tab_itm,
636     lt_dd03l like table of dd03l.
637   data:
638     ls_dd03l like dd03l,
639     ls_tab_itm type ztfi0036_tab_itm,
640     ls_tab_hd type ztfi0035_tab_hd.
641   field-symbols:
642     <fs_dd03l> like dd03l.
643 
644   clear:gt_tab_itm.
645   refresh:gt_tab_itm.
646 
647   read table gt_tab_hd into ls_tab_hd index fv_row.
648   if sy-subrc = 0.
649     read table gt_all_itm into ls_tab_itm
650     with key  ftpnm = ls_tab_hd-ftpnm
651               tabnm = ls_tab_hd-tabnm.
652     if sy-subrc <> 0.
653       select *
654       into table gt_tab_itm
655       from ztfi0036_tab_itm
656       where ftpnm = ls_tab_hd-ftpnm
657         and tabnm = ls_tab_hd-tabnm.
658       if sy-subrc <> 0.
659         select *
660         into table lt_dd03l
661         from dd03l
662         where tabname = ls_tab_hd-tabnm.
663 
664         sort lt_dd03l by tabname position.
665 
666         loop at lt_dd03l assigning <fs_dd03l>.
667           append initial line to gt_tab_itm assigning <fs_tab_itm>.
668           <fs_tab_itm>-ftpnm = ls_tab_hd-ftpnm.
669           <fs_tab_itm>-tabnm = <fs_dd03l>-tabname.
670           <fs_tab_itm>-fldno = <fs_dd03l>-position.
671           <fs_tab_itm>-fldnm = <fs_dd03l>-fieldname.
672           if <fs_dd03l>-rollname is not initial.
673             select single ddtext
674             into <fs_tab_itm>-fldtx
675             from dd04t
676             where rollname   = <fs_dd03l>-rollname
677               and ddlanguage = sy-langu.
678           else.
679             select single ddtext
680             into <fs_tab_itm>-fldtx
681             from dd03t
682             where tabname    = <fs_dd03l>-tabname
683               and ddlanguage = sy-langu
684               and fieldname  = <fs_dd03l>-fieldname.
685           endif.
686           unassign <fs_tab_itm>.
687         endloop.
688       endif.
689     else.
690       loop at gt_all_itm into ls_tab_itm
691       where ftpnm = ls_tab_hd-ftpnm
692         and tabnm = ls_tab_hd-tabnm.
693         append initial line to gt_tab_itm assigning <fs_tab_itm>.
694         move-corresponding ls_tab_itm to <fs_tab_itm>.
695         unassign <fs_tab_itm>.
696       endloop.
697     endif.
698   endif.
699 
700 endform.                    " frm_get_tabit
701 *&---------------------------------------------------------------------*
702 *&      Form  handle_toolbar_itm
703 *&---------------------------------------------------------------------*
704 *       text
705 *----------------------------------------------------------------------*
706 *      -->P_E_OBJECT  text
707 *      -->P_E_INTERACTIVE  text
708 *----------------------------------------------------------------------*
709 form handle_toolbar_itm  using  fv_object      type ref to cl_alv_event_toolbar_set
710                                 fv_interactive type char1.
711   data: ls_toolbar type stb_button.
712 
713   ls_toolbar-function = 'SAVE_ITM'.
714   ls_toolbar-icon = icon_system_save.
715   ls_toolbar-text = '临时存储'.
716   ls_toolbar-quickinfo = '保存明细'.
717   append ls_toolbar to fv_object->mt_toolbar.
718   clear: ls_toolbar.
719 
720 endform.                    " handle_toolbar_itm
721 *&---------------------------------------------------------------------*
722 *&      Form  frm_save_check
723 *&---------------------------------------------------------------------*
724 *       text
725 *----------------------------------------------------------------------*
726 *  -->  p1        text
727 *  <--  p2        text
728 *----------------------------------------------------------------------*
729 form frm_save_check using fv_flg.
730   data:
731     lv_erflg type c,
732     lv_count type i.
733   data:
734     ls_tab_ftp type ztfi0037_etl_ftp.
735 
736   if gt_tab_ftp[] is initial.
737     message i001(zfi_00).
738     lv_erflg = 'X'.
739   else.
740     describe table gt_tab_ftp lines lv_count.
741     if lv_count > 1.
742       message i002(zfi_00).
743       lv_erflg = 'X'.
744     endif.
745     read table gt_tab_ftp into ls_tab_ftp index 1.
746     if sy-subrc = 0.
747       if ls_tab_ftp-ftpnm is initial
748       or ls_tab_ftp-ftpip is initial
749       or ls_tab_ftp-ftpur is initial
750       or ls_tab_ftp-ftppw is initial.
751         message i003(zfi_00).
752         lv_erflg = 'X'.
753       endif.
754     endif.
755   endif.
756   fv_flg = lv_erflg.
757 endform.                    " frm_save_check
758 *&---------------------------------------------------------------------*
759 *&      Form  frm_save_data
760 *&---------------------------------------------------------------------*
761 *       text
762 *----------------------------------------------------------------------*
763 *  -->  p1        text
764 *  <--  p2        text
765 *----------------------------------------------------------------------*
766 form frm_save_data using fv_flg.
767   check fv_flg is initial.
768 
769   "存储FTP
770   modify ztfi0037_etl_ftp from table gt_tab_ftp.
771 
772   "存储TABHD
773   modify ztfi0035_tab_hd from table gt_tab_hd.
774 
775   "存储TABITM
776   modify ztfi0036_tab_itm from table gt_all_itm.
777 
778   commit work and wait.
779   if sy-subrc = 0.
780     message s008(zfi_00).
781   endif.
782 endform.                    " frm_save_data
View Code

 

4.配置表

 

posted on 2019-04-04 13:21  ricoo  阅读(1008)  评论(0编辑  收藏  举报