1 |
2 |
3 |
4 |
5 |
6 | * |
7 |
8 | FORM call_dynpro. |
9 | DATA: state_init TYPE c, rc LIKE sy-subrc, |
10 | dpl_sel_entries TYPE i, cd_specmode_safe(1) TYPE c, |
11 | addr_e071k LIKE e071k, cd_addr_71ktab LIKE e071k OCCURS 0, |
12 | object_key TYPE ad_objkey, |
13 | max_trsp_keylength_in_byte type i. |
14 | |
15 | field-symbols: <object_keyx> type x. |
16 | |
17 | max_trsp_keylength_in_byte = vim_max_trsp_keylength |
18 | * cl_abap_char_utilities=>charsize. |
19 | CASE vim_adjust_middle_level_mode. |
20 | WHEN space. |
21 | WHEN subset OR 'X'. |
22 | vim_special_mode = vim_direct_upgrade. |
23 | IF vim_adjust_middle_level_mode EQ subset. |
24 | x_namtab[] = vim_adj_namtab. |
25 | ENDIF. |
26 | WHEN 'L'. |
27 | CLEAR vim_adjust_middle_level_mode. function = 'ENDE'. |
28 | EXIT. |
29 | ENDCASE. |
30 |
31 | IF <status>-initializd EQ space. |
32 | PERFORM init_state_vector. |
33 | ENDIF. |
34 | DESCRIBE TABLE dpl_sellist LINES dpl_sel_entries. |
35 | IF x_header-selection EQ space. |
36 | IF dpl_sel_entries GT 0. |
37 | MOVE 'X' TO x_header-selection. |
38 | MODIFY x_header INDEX 1. |
39 | ASSIGN dpl_sellist-*sys* TO <vim_ck_sellist>. |
40 | ELSE. |
41 | DESCRIBE TABLE dba_sellist. |
42 | IF sy-tfill GT 0. |
43 | MOVE 'X' TO x_header-selection. |
44 | MODIFY x_header INDEX 1. |
45 |
46 | ENDIF. |
47 | ASSIGN dba_sellist-*sys* TO <vim_ck_sellist>. |
48 | ENDIF. |
49 | ELSE. |
50 | IF dpl_sel_entries GT 0. |
51 | ASSIGN dpl_sellist-*sys* TO <vim_ck_sellist>. |
52 | ELSE. |
53 | ASSIGN dba_sellist-*sys* TO <vim_ck_sellist>. |
54 | ENDIF. |
55 | ENDIF. |
56 | PERFORM vim_maint_selflag USING 'I' |
57 | CHANGING x_header-selection. |
58 |
59 | IF <status>-alr_sorted EQ space. |
60 | SORT total BY <vim_xtotal_key>. |
61 | MOVE 'X' TO <status>-alr_sorted. |
62 | ENDIF. |
63 |
64 | PERFORM exclude_cua_functions. |
65 | IF x_header-frm_on_aut NE space AND "4.5a: support indiv. auth. chck |
66 | <status>-auth_check NE space. "auth check is requested |
67 | vim_auth_action = view_action. |
68 | vim_auth_event = vim_auth_requested_check. |
69 | ASSIGN <vim_ck_sellist> TO <vim_auth_sellist>. |
70 | PERFORM (x_header-frm_on_aut) IN PROGRAM. |
71 | IF vim_auth_rc NE 0. |
72 | PERFORM vim_process_message USING vim_auth_msgid 'I' 'E' |
73 | vim_auth_msgno |
74 | vim_auth_msgv1 vim_auth_msgv2 |
75 | vim_auth_msgv3 vim_auth_msgv4. |
76 | CASE vim_auth_rc. |
77 | WHEN 4. "show only |
78 | maint_mode = anzeigen. |
79 | excl_cua_funct-function = 'AEND'. COLLECT excl_cua_funct. |
80 | WHEN 8. "exit |
81 | RAISE missing_corr_number. |
82 | ENDCASE. |
83 | ENDIF. |
84 | ENDIF. |
85 | IF maint_mode NE anzeigen AND maint_mode NE transportieren AND |
86 | <status>-dlclalrckd EQ space. |
87 | IF vim_system_type NE 'SAP' AND |
88 | x_header-customauth CO sap_only_classes. |
89 |
90 | PERFORM vim_process_message USING 'SV' 'I' 'I' '137' |
91 | space space space space. |
92 | ENDIF. |
93 | MOVE 'X' TO <status>-dlclalrckd. |
94 | ENDIF. |
95 | IF x_header-subsetflag NE space AND <status>-sbsid_rcvd CO ' R'. |
96 | PERFORM init_subset_keyfields. |
97 | ENDIF. |
98 | IF x_header-selection NE space AND <status>-selcd_rcvd EQ space. |
99 | LOOP AT dpl_sellist WHERE ddic EQ space OR ( operator EQ 'GE' OR |
100 | operator EQ 'GT' OR |
101 | operator EQ 'LE' OR |
102 | operator EQ 'LT' ). |
103 | MOVE 'X' TO state_init. |
104 | EXIT. |
105 | ENDLOOP. |
106 | IF sy-subrc NE 0. "no entries in DPL_SELLIST -> all entries req. |
107 | DESCRIBE TABLE total. |
108 | IF <status>-maxlines NE sy-tfill AND "missing entries in EXTRACT |
109 | <status>-st_data EQ gesamtdaten. "and no selection made |
110 | IF x_header-delmdtflag NE space. |
111 |
112 |
113 | IF <status>-maxlines = 0. "SW int.M. 1599934/1999 |
114 | MOVE 'X' TO state_init. |
115 | ENDIF. |
116 | ELSE. |
117 | MOVE 'X' TO state_init. |
118 | ENDIF. |
119 | ENDIF. |
120 | ENDIF. |
121 | IF state_init NE space. |
122 | CLEAR: <status>-maxlines, |
123 | <status>-cur_field, |
124 | <status>-cur_offset. |
125 | MOVE: 1 TO <status>-cur_line, |
126 | 1 TO <status>-firstline, |
127 | nicht_geloescht TO <status>-st_delete, |
128 | maint_mode TO <status>-st_action, |
129 | list_bild TO <status>-st_mode. |
130 | PERFORM set_status_nokeyselcnds. |
131 | ENDIF. |
132 | MOVE 'X' TO <status>-selcd_rcvd. |
133 | ENDIF. |
134 | IF <status>-initializd EQ 'x'. |
135 | PERFORM set_status_nokeyselcnds. |
136 | ENDIF. |
137 | IF maint_mode NE anzeigen AND |
138 | corr_nbr NE space AND corr_nbr NE <status>-corr_nbr. |
139 | MOVE: <status>-corr_nbr TO <status>-l_corr_nbr, |
140 | corr_nbr TO <status>-corr_nbr. |
141 | ENDIF. |
142 | IF maint_mode EQ transportieren. |
143 | PERFORM request_corr_number. |
144 | IF x_header-flag EQ vim_transport_denied. |
145 | MESSAGE i142(sv). |
146 | function = ucomm = end. EXIT. |
147 | ENDIF. |
148 | ELSEIF maint_mode EQ aendern. |
149 | PERFORM check_transp_objs_for_maint USING rc. |
150 | CASE rc. |
151 | WHEN 4. |
152 | maint_mode = anzeigen. |
153 | excl_cua_funct-function = 'AEND'. COLLECT excl_cua_funct. |
154 | WHEN 8. |
155 | RAISE missing_corr_number. |
156 | ENDCASE. |
157 | ELSE. |
158 | vim_client_state = vim_noact. |
159 | ENDIF. |
160 | MOVE: maint_mode TO status-action, |
161 | <status>-st_delete TO status-delete, |
162 | <status>-st_data TO status-data, |
163 | <status>-title TO title, |
164 | <status>-firstline TO firstline, |
165 | <status>-mk_xt TO mark_extract, |
166 | <status>-mk_to TO mark_total, |
167 | <status>-cur_line TO l, |
168 | <status>-cur_field TO f, |
169 | <status>-cur_offset TO o, |
170 | <status>-maxlines TO maxlines, |
171 | maint_mode TO title-action, |
172 | firstline TO nextline. |
173 | IF status-action EQ aendern AND "ignore history when mode was chngd. |
174 | <status>-st_action EQ hinzufuegen. |
175 | MOVE: <status>-st_action TO status-action, |
176 | <status>-st_action TO title-action. |
177 | ENDIF. |
178 | IF <status>-st_delete EQ geloescht. |
179 | DESCRIBE TABLE extract LINES maxlines. |
180 | IF maxlines EQ 0. |
181 | CLEAR status-delete. |
182 | MOVE list_bild TO <status>-st_mode. |
183 | ENDIF. |
184 | ELSEIF <status>-st_mode = detail_bild"SW (1248405/98) .. |
185 | AND <status>-st_action <> hinzufuegen. |
186 | DESCRIBE TABLE extract LINES maxlines. |
187 | IF maxlines EQ 0. |
188 | MOVE list_bild TO <status>-st_mode. |
189 |
190 |
191 | ENDIF. ".. SW |
192 | ENDIF. |
193 | IF ( status-action EQ transportieren AND "UF28042000 |
194 | <status>-l_corr_nbr NE <status>-corr_nbr ) |
195 | OR ( vim_client_state EQ vim_log AND 'ST' NS status-action ) . |
196 | PERFORM prepare_corr. |
197 | ENDIF. |
198 | IF status-action EQ transportieren AND get_corr_keytab NE space. |
199 | PERFORM get_keytab. |
200 | ENDIF. |
201 | IF status-action EQ transportieren AND <status>-crcntsknwn EQ space. |
202 | LOOP AT vim_addr_e071k_tab INTO addr_e071k. |
203 | addr_e071k-trkorr = <status>-corr_nbr. |
204 | MODIFY vim_addr_e071k_tab FROM addr_e071k. |
205 | ENDLOOP. |
206 | LOOP AT total. "note entries already contained in CORR_KEYTAB |
207 | MOVE <vim_total_struc> TO <table1>. |
208 | IF x_header-bastab EQ space. "view |
209 | PERFORM (corr_formname) IN PROGRAM (sy-repid) USING pruefen rc. |
210 | ELSE. "base table |
211 | corr_keytab = e071k. |
212 | corr_keytab-objname = x_header-maintview. |
213 | IF x_header-keylen GT max_trsp_keylength_in_byte. |
214 |
215 | MOVE <vim_xtotal_key> TO <vim_corr_keyx>(x_header-maxtrkeyln). |
216 |
217 | ELSE. "UF170200e |
218 | MOVE <vim_xtotal_key> TO <vim_corr_keyx>(x_header-keylen). |
219 |
220 | ENDIF. "UF170200 |
221 | PERFORM update_corr_keytab USING pruefen rc. |
222 | IF rc EQ 0. |
223 | IF x_header-texttbexst NE space AND "text table |
224 | <vim_xtotal_text> NE <text_initial_x>. |
225 |
226 | corr_keytab = e071k. |
227 | corr_keytab-objname = x_header-texttab. |
228 | IF x_header-textkeylen GT max_trsp_keylength_in_byte. |
229 |
230 | MOVE <vim_xtotal_text> TO |
231 | <vim_corr_keyx>(x_header-maxtrkeyln). |
232 |
233 |
234 | ELSE. "UF170200e |
235 | MOVE <vim_xtotal_text> TO |
236 | <vim_corr_keyx>(x_header-textkeylen). |
237 |
238 |
239 | ENDIF. "UF170200 |
240 | PERFORM update_corr_keytab USING pruefen rc. |
241 | ENDIF. |
242 | ENDIF. |
243 | ENDIF. |
244 | IF rc = 0 AND x_header-texttbexst <> space AND "SW Texttransl .. |
245 | vim_texttab_is_ro EQ space. |
246 | PERFORM vim_text_keytab_entry USING <vim_xtotal_key> pruefen rc. |
247 | ENDIF. ".. Texttransl |
248 | IF rc EQ 0. |
249 | MOVE transportieren TO <action>. |
250 | IF x_header-adrnbrflag EQ 'O' AND <address_number> NE space. |
251 | PERFORM vim_address_keytab_entries USING pruefen rc. |
252 | ELSEIF x_header-adrnbrflag EQ 'N' AND <address_number> NE space. |
253 | APPEND LINES OF vim_addr_e071k_tab TO cd_addr_71ktab. |
254 | assign object_key to <object_keyx> casting. |
255 | move <vim_xtotal_key> to <object_keyx>(x_header-keylen). |
256 |
257 | CALL FUNCTION 'ADDR_TRANSPORT_ENTRIES' |
258 | EXPORTING |
259 | addrnumber = <address_number> |
260 | table_name = vim_addr_basetable |
261 | field_name = vim_addr_bastab_field |
262 | objkey = object_key |
263 | TABLES |
264 | e071k_tab = cd_addr_71ktab. |
265 | vim_exit_11_12_active = 'X'. |
266 | LOOP AT cd_addr_71ktab INTO corr_keytab WHERE |
267 | mastername = vim_addr_e071k_master_46 or "UF688403/2000 |
268 | mastername = vim_addr_e071k_master. |
269 |
270 |
271 | PERFORM update_corr_keytab USING pruefen rc. |
272 | IF rc NE 0. EXIT. ENDIF. |
273 | ENDLOOP. |
274 | CLEAR vim_exit_11_12_active. |
275 | ENDIF. |
276 | IF rc EQ 0. |
277 | IF x_header-frm_e071ks NE space. |
278 | vim_exit_11_12_active = 'X'. |
279 | MOVE pruefen TO corr_action. |
280 | PERFORM (x_header-frm_e071ks) IN PROGRAM (sy-repid). |
281 | IF sy-subrc NE 0. CLEAR <action>. ENDIF. |
282 | CLEAR vim_exit_11_12_active. |
283 | ENDIF. |
284 | ELSE. |
285 | CLEAR <action>. |
286 | ENDIF. |
287 | ELSE. |
288 | CLEAR <action>. |
289 | ENDIF. |
290 | IF maxlines GT 0 AND |
291 | vim_special_mode NE vim_extedit. "SW 1.4.1998 |
292 | READ TABLE extract WITH KEY <f1_x>. |
293 | IF sy-subrc EQ 0. |
294 | MOVE: <mark> TO <xmark>, <action> TO <xact>. |
295 | MODIFY extract INDEX sy-tabix. |
296 | ENDIF. |
297 | ENDIF. |
298 | MODIFY total. |
299 | ENDLOOP. |
300 | MOVE 'X' TO <status>-crcntsknwn. |
301 | ENDIF. |
302 | IF vim_restore_mode NE space. |
303 | status-mode = <status>-st_mode. |
304 | CLEAR vim_restore_mode. |
305 | EXIT. |
306 | ENDIF. |
307 | IF vim_special_mode NE vim_extedit. |
308 | CASE vim_single_entry_function. |
309 | WHEN space OR 'UPD' OR 'SHOW'. |
310 | IF <status>-st_mode EQ detail_bild. |
311 | MOVE: 'DETA' TO function, |
312 | nextline TO firstline. |
313 | nextline = firstline + l - 1. |
314 | DESCRIBE TABLE extract LINES maxlines. |
315 | IF maxlines EQ 0. |
316 | IF <status>-st_action EQ hinzufuegen. |
317 | neuer = 'J'. |
318 | ELSE. |
319 | PERFORM fill_extract. |
320 | ENDIF. |
321 | ENDIF. |
322 |
323 | PERFORM process_detail_screen USING 'C'. |
324 | ELSE. |
325 | CALL SCREEN liste. |
326 | ENDIF. |
327 | WHEN 'INS'. |
328 | function = 'NEWL'. PERFORM hinzufuegen. |
329 | WHEN 'DEL'. |
330 | cd_specmode_safe = vim_special_mode. |
331 | vim_special_mode = vim_extedit. |
332 | READ TABLE total INTO extract INDEX 1. <xact> = geloescht. |
333 | APPEND extract. |
334 | PERFORM vim_external_edit. |
335 | vim_special_mode = cd_specmode_safe. |
336 | excl_cua_funct-function = 'UNDO'. COLLECT excl_cua_funct. |
337 | PERFORM selektiere USING geloescht. |
338 | ENDCASE. |
339 | MOVE: function TO ucomm. |
340 |
341 | IF status-mode = detail_bild. |
342 | last_act_entry = nextline. |
343 | ELSE. |
344 |
345 | last_act_entry = <status>-firstline + <status>-cur_line - 1. |
346 | ENDIF. |
347 | ELSE. "ext. edit. |
348 | PERFORM vim_external_edit. |
349 | <status>-maxlines = 0. "SW int. Meldung 519239/1999 |
350 | ENDIF. |
351 | IF function NE 'ORGD' AND function NE 'ORGL' AND |
352 | function NE 'SAVE' AND function NE 'TRSP' AND function NE 'TRAE'. |
353 | IF x_header-subsetflag NE space AND <status>-sbsid_rcvd NE 'S'. |
354 | CLEAR <status>-sbsid_rcvd. |
355 | ENDIF. |
356 |
357 | IF x_header-selection NE space AND |
358 | <status>-selcd_rcvd NE space. |
359 | CLEAR <status>-selcd_rcvd. |
360 | ENDIF. |
361 | IF x_header-delmdtflag NE space. |
362 | EXPORT vim_collapsed_mainkeys TO MEMORY ID vim_memory_id_1. |
363 | ENDIF. |
364 | ASSIGN dba_sellist-*sys* TO <vim_sellist>. |
365 | vim_enqueue_range = x_header-subsetflag. |
366 | ENDIF. |
367 | ENDFORM. |