1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | FORM x_call_viewmaintenance USING |
15 | value(xcv_use_lcl_tbl) LIKE tvdir-flag |
16 | value(xcv_import) LIKE tvdir-flag |
17 | xcv_corrnbr LIKE e070-trkorr |
18 | value(xcv_fcode) TYPE vimty_tcode |
19 | value(xcv_action) LIKE tvdir-flag |
20 | value(xcv_name) TYPE vimty_tablename |
21 | value(xcv_tot_name) TYPE c |
22 | value(xcv_ext_name) TYPE c |
23 | value(xcv_upgr_dest) LIKE rfcdes-rfcdest |
24 | value(xcv_upgr_clnt) LIKE sy-mandt |
25 | xcv_upd_requ LIKE tvdir-flag |
26 | xcv_e071k TYPE table |
27 | xcv_dba_sel TYPE table |
28 | xcv_dpl_sel TYPE table |
29 | xcv_excufc TYPE table |
30 | xcv_extract TYPE table |
31 | xcv_total TYPE table |
32 | xcv_header TYPE table |
33 | xcv_namtab TYPE table |
34 | xcv_last_command TYPE vimty_tcode |
35 | xcv_last_act_entry LIKE sy-tabix |
36 | xcv_results LIKE vimmodres |
37 | xcv_imp_results TYPE slctr_tables_keys |
38 | value(xcv_imp_specmode) LIKE tvdir-flag |
39 | value(xcv_cmp_slcnds) LIKE tvdir-flag. |
40 | |
41 | DATA: xcv_return TYPE i, xcv_i_fcode TYPE vimty_tcode, |
42 | line_name(30) TYPE c, length TYPE i, tabtype type ob_typ, |
43 | header_wa_loc TYPE vimdesc, |
44 | BEGIN OF tabline, |
45 | line(4096) TYPE c, |
46 | END OF tabline. |
47 | FIELD-SYMBOLS: <total> TYPE table, <extract> TYPE table, |
48 | <tabline> TYPE ANY, <tabline_x> TYPE x, |
49 | <tabline2> TYPE ANY, <tabline2_x> TYPE x, |
50 | <header> TYPE vimdesc. |
51 | LOCAL: vim_import_mode_active, vim_no_dialog, vim_import_testmode, |
52 | vim_import_forcemode. "SW wg. Rekurs. im Cluster |
53 | |
54 | vim_no_dialog = xcv_import. TRANSLATE vim_no_dialog USING 'H DX'. |
55 | IF xcv_imp_specmode = 'P'. "Profilimp |
56 | vim_import_profile = 'X'. |
57 | ENDIF. |
58 | vim_import_testmode = xcv_imp_specmode. |
59 | TRANSLATE vim_import_testmode USING 'TXBXF P '. |
60 | vim_import_forcemode = xcv_imp_specmode. |
61 | TRANSLATE vim_import_forcemode USING 'T BXFXP '. |
62 | IF xcv_use_lcl_tbl ne space. |
63 | ASSIGN: (xcv_tot_name) TO <total>, (xcv_ext_name) TO <extract>. |
64 | IF xcv_use_lcl_tbl ne 'L'. "use not _only_ local tables |
65 | READ TABLE xcv_header ASSIGNING <header> INDEX 1. |
66 | IF <header>-bastab ne space and <header>-texttbexst ne space. |
67 | length = <header>-after_tabc + <header>-aft_txttbc |
68 | + 3 * cl_abap_char_utilities=>charsize. |
69 | ELSE. |
70 | length = <header>-after_tabc |
71 | + 2 * cl_abap_char_utilities=>charsize. |
72 | ENDIF. |
73 | SEARCH xcv_tot_name FOR '[' IN CHARACTER MODE. |
74 | MOVE xcv_tot_name(sy-fdpos) TO line_name. |
75 | ASSIGN: (line_name) TO <tabline2>, |
76 | <tabline2> TO <tabline2_x> CASTING. |
77 | REFRESH: <total>, <extract>. |
78 | LOOP AT xcv_total ASSIGNING <tabline>. |
79 | ASSIGN <tabline> TO <tabline_x> CASTING. |
80 | MOVE <tabline_x> TO <tabline2_x>(length). |
81 | APPEND <tabline2> TO <total>. |
82 | ENDLOOP. |
83 | LOOP AT xcv_extract ASSIGNING <tabline>. |
84 | ASSIGN <tabline> TO <tabline_x> CASTING. |
85 | MOVE <tabline_x> TO <tabline2_x>(length). |
86 | APPEND <tabline2> TO <extract>. |
87 | ENDLOOP. |
88 |
89 | ENDIF. |
90 | ELSE. |
91 | ASSIGN: xcv_total TO <total>, xcv_extract TO <extract>. |
92 | ENDIF. |
93 | vim_import_mode_active = xcv_import. xcv_i_fcode = xcv_fcode. |
94 | IF xcv_import ne space and xcv_fcode ne 'SAVE'. |
95 | ELSEIF xcv_import ne space and xcv_fcode eq 'SAVE'. "SW |
96 | imp_results[] = xcv_imp_results[]. "SW |
97 | ELSEIF xcv_fcode eq 'INS' or xcv_fcode eq 'DEL' or |
98 | xcv_fcode eq 'UPD' or xcv_fcode eq 'SHOW'. |
99 | vim_single_entry_function = xcv_fcode. xcv_i_fcode = 'EDIT'. |
100 | ENDIF. |
101 | IF xcv_import eq 'D' and xcv_fcode eq 'SAVE'. |
102 | vim_import_no_message = 'X'. |
103 | ENDIF. |
104 | CALL FUNCTION 'VIEW_MAINTENANCE_LOW_LEVEL' |
105 | EXPORTING |
106 | corr_number = xcv_corrnbr |
107 | fcode = xcv_i_fcode |
108 | view_action = xcv_action |
109 | view_name = xcv_name |
110 | rfc_destination_for_upgrade = xcv_upgr_dest |
111 | client_for_upgrade = xcv_upgr_clnt |
112 | complex_selconds_used = xcv_cmp_slcnds |
113 | IMPORTING |
114 | last_act_entry = xcv_last_act_entry |
115 | ucomm = xcv_last_command |
116 | update_required = xcv_upd_requ |
117 | corr_number = xcv_corrnbr |
118 | TABLES |
119 | corr_keytab = xcv_e071k |
120 | dba_sellist = xcv_dba_sel |
121 | dpl_sellist = xcv_dpl_sel |
122 | excl_cua_funct = xcv_excufc |
123 | extract = <extract> |
124 | total = <total> |
125 | x_header = xcv_header |
126 | x_namtab = xcv_namtab |
127 | EXCEPTIONS |
128 | function_not_found = 1 |
129 | missing_corr_number = 2 |
130 | no_value_for_subset_ident = 3 |
131 | saving_correction_failed = 4. |
132 |
133 |
134 |
135 |
136 | IF ( xcv_import NE space OR vim_import_profile NE space ) AND |
137 | ( sy-subrc ne 0 or |
138 | xcv_fcode eq save and <status>-upd_flag ne space ). |
139 | IF sy-msgid ne space. |
140 | vim_import_no_message = 'X'. |
141 | IF vim_import_profile = 'X'. |
142 | read table xcv_header into header_wa_loc index 1. |
143 | IF header_wa_loc-bastab EQ space. |
144 | tabtype = 'V'. |
145 | ELSE. |
146 | tabtype = 'S'. |
147 | ENDIF. |
148 | PERFORM vim_bc_process_message USING sy-msgid 'I' 'E' sy-msgno |
149 | sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 tabtype. |
150 | ELSE. |
151 | PERFORM vim_process_message USING sy-msgid 'I' 'E' sy-msgno |
152 | sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. |
153 | ENDIF. |
154 | CLEAR vim_import_no_message. |
155 | ENDIF. |
156 |
157 | LOOP AT imp_results. |
158 | IF imp_results-import-inserted ne 0. |
159 | imp_results-import-errors = imp_results-import-inserted. |
160 | CLEAR imp_results-import-inserted. |
161 | ELSEIF imp_results-import-updated ne 0. |
162 | imp_results-import-errors = imp_results-import-updated. |
163 | CLEAR imp_results-import-updated. |
164 | ELSEIF imp_results-import-deleted ne 0. |
165 | imp_results-import-errors = imp_results-import-deleted. |
166 | CLEAR imp_results-import-deleted. |
167 | ENDIF. |
168 | MODIFY imp_results. |
169 | ENDLOOP. |
170 | ELSEIF xcv_import eq space and xcv_fcode eq 'READ' and |
171 | sy-subrc ne 0. "probably called by VIEW_GET_DATA |
172 | IF sy-subrc eq 2. "probably individual authority check failed |
173 | MESSAGE i053(sv) RAISING no_authority. |
174 | ELSE. "other error |
175 | MESSAGE i037(sv) WITH view_name RAISING no_viewmaint_tool. |
176 | ENDIF. |
177 | ENDIF. |
178 | IF xcv_fcode eq 'EXED' or xcv_fcode eq 'DEL'. |
179 | xcv_results = vim_results_of_ext_mod. |
180 | ELSEIF xcv_fcode eq read. |
181 | DESCRIBE TABLE <total> LINES xcv_results-nbr_of_upd. |
182 | ELSEIF xcv_fcode eq save and xcv_import eq 'D'. |
183 | CLEAR vim_import_no_message. |
184 | ENDIF. |
185 | IF xcv_use_lcl_tbl ne space and xcv_use_lcl_tbl ne 'L'. |
186 | REFRESH: xcv_total, xcv_extract. |
187 | ASSIGN: tabline TO <tabline2_x> CASTING. |
188 | LOOP AT <total> ASSIGNING <tabline>. |
189 | ASSIGN <tabline> TO <tabline_x> CASTING. |
190 | MOVE <tabline_x> TO <tabline2_x>(length). |
191 | APPEND tabline TO xcv_total. |
192 | ENDLOOP. |
193 | LOOP AT <extract> ASSIGNING <tabline>. |
194 | ASSIGN <tabline> TO <tabline_x> CASTING. |
195 | MOVE <tabline_x> TO <tabline2_x>(length). |
196 | APPEND tabline TO xcv_extract. |
197 | ENDLOOP. |
198 |
199 | ENDIF. |
200 | CLEAR vim_single_entry_function. "SW |
201 | IF xcv_import ne space. |
202 | xcv_imp_results = imp_results[]. |
203 | REFRESH imp_results. "SW |
204 | ENDIF. |
205 | ENDFORM. "x_call_viewmaintenance |