1 |
2 |
3 |
4 |
5 |
6 | FORM kopiere. |
7 | DATA: z LIKE sy-tabix VALUE 1, |
8 | stat TYPE c, dum1 TYPE i. |
9 | status-action = kopieren. |
10 | MOVE status-data TO stat. |
11 | status-data = auswahldaten. |
12 | title-data = auswahldaten. |
13 | ADD 1 TO vim_copy_call_level. |
14 | IF vim_special_mode EQ vim_delimit. |
15 | title-action = vim_delimit. |
16 |
17 |
18 | ENDIF. |
19 |
20 | ASSIGN <vim_xextract_key> TO <orig_key>. |
21 | IF status-mode EQ list_bild. |
22 | LOOP AT extract. |
23 | IF <xmark> NE markiert. |
24 | DELETE extract. |
25 | ELSE. |
26 | <xmark> = nicht_markiert. |
27 | MODIFY extract. |
28 | ENDIF. |
29 | ENDLOOP. |
30 | mark_extract = <status>-mk_xt = 0. |
31 | nextline = 1. |
32 | DESCRIBE TABLE extract LINES maxlines. |
33 | IF vim_copy_call_level = 1. |
34 | VIM_NR_ENTRIES_TO_COPY = maxlines. "SW 510129/1999 |
35 | ENDIF. |
36 | IF status-type EQ einstufig. |
37 | IF vim_special_mode NE vim_delimit. |
38 | MESSAGE s024(sv). |
39 | ELSE. |
40 | MESSAGE s124(sv). |
41 | ENDIF. |
42 | CALL SCREEN liste. |
43 | IF function NE 'ABR '. |
44 | DESCRIBE TABLE vim_copied_indices. |
45 | IF sy-tfill LT VIM_NR_ENTRIES_TO_COPY. "SW 510129/1999 |
46 | "not all selected entries where proc. |
47 | LOOP AT extract. |
48 | READ TABLE vim_copied_indices |
49 | WITH KEY level = vim_copy_call_level ex_ix = z. |
50 | IF sy-subrc EQ 0. |
51 | DELETE extract. |
52 | ELSE. |
53 | <xmark> = markiert. MODIFY extract. |
54 | ENDIF. |
55 | ADD 1 TO z. |
56 | ENDLOOP. |
57 | PERFORM kopiere. |
58 | ENDIF. |
59 | ENDIF. |
60 | ELSE. |
61 | LOOP AT extract. |
62 | IF vim_special_mode NE vim_delimit. |
63 | neuer = 'J'. |
64 | MESSAGE s025(sv). |
65 | ELSE. |
66 | MESSAGE s125(sv). |
67 | ENDIF. |
68 | PERFORM move_extract_to_view_wa. |
69 | PERFORM process_detail_screen USING 'C'. |
70 | neuer = 'N'. |
71 | <status>-upd_flag = space. |
72 | IF temporal_delimitation_happened NE space. |
73 | CLEAR temporal_delimitation_happened. |
74 | ENDIF. |
75 | IF vim_special_mode EQ vim_delimit. |
76 | REFRESH vim_delim_entries. |
77 | ENDIF. |
78 | IF function EQ 'ABR '. |
79 | EXIT. |
80 | ENDIF. |
81 | ENDLOOP. |
82 | ENDIF. |
83 | IF vim_copy_call_level GT 1. |
84 | SUBTRACT 1 FROM vim_copy_call_level. |
85 | EXIT. |
86 | ENDIF. |
87 | IF vim_special_mode NE vim_delimit AND counter LE 1. |
88 | PERFORM fill_extract. |
89 | mark_extract = mark_total. |
90 | title-data = gesamtdaten. |
91 | IF counter EQ 1. |
92 | READ TABLE vim_copied_indices INDEX 1. |
93 | READ TABLE total INDEX vim_copied_indices-ix. |
94 | IF x_header-delmdtflag EQ space. |
95 | READ TABLE extract WITH KEY <vim_xtotal_key> |
96 | TRANSPORTING NO FIELDS. |
97 | nextline = sy-tabix. |
98 | ELSE. |
99 | nextline = 0. |
100 | LOOP AT vim_collapsed_mainkeys. |
101 | check <vim_collapsed_mkey_bfx> = <vim_tot_mkey_beforex>. |
102 |
103 | IF vim_mkey_after_exists NE space. |
104 | CHECK <vim_collapsed_key_afx> EQ <vim_tot_mkey_afterx>. |
105 |
106 | ENDIF. |
107 | READ TABLE extract WITH KEY <vim_collapsed_keyx> |
108 |
109 | TRANSPORTING NO FIELDS. |
110 | nextline = sy-tabix. |
111 | EXIT. |
112 | ENDLOOP. |
113 | IF sy-subrc NE 0 OR nextline EQ 0. |
114 | READ TABLE extract WITH KEY <vim_xtotal_key> |
115 | TRANSPORTING NO FIELDS. |
116 | IF sy-subrc NE 0. |
117 | nextline = 1. |
118 | ELSE. |
119 | nextline = sy-tabix. |
120 | ENDIF. |
121 | ENDIF. |
122 | ENDIF. |
123 | ELSE. |
124 | nextline = 1. |
125 | ENDIF. |
126 | ELSE. |
127 | status-action = title-action = hinzufuegen. |
128 | status-data = title-data = auswahldaten. |
129 | <status>-selected = neuer_eintrag. |
130 | REFRESH: extract, vim_delim_entries. |
131 | CLEAR: vim_mainkey, temporal_delimitation_happened. |
132 | TRANSLATE vim_no_mainkey_exists USING vim_no_mkey_not_procsd_patt. |
133 | mark_extract = 0. |
134 | LOOP AT vim_copied_indices. |
135 | READ TABLE total INDEX vim_copied_indices-ix. |
136 | extract = total. |
137 | APPEND extract. |
138 | IF x_header-delmdtflag NE space. |
139 | LOOP AT vim_collapsed_mainkeys. |
140 | check <vim_collapsed_mkey_bfx> = <vim_ext_mkey_beforex>. |
141 |
142 | IF vim_mkey_after_exists NE space. |
143 | CHECK <vim_collapsed_key_afx> EQ <vim_ext_mkey_afterx>. |
144 |
145 | ENDIF. |
146 | READ TABLE excl_cua_funct WITH KEY function = 'EXPA'. |
147 | IF sy-subrc NE 0. |
148 | APPEND 'EXPA' TO excl_cua_funct. |
149 | vim_delim_expa_excluded = 'X'. |
150 | ENDIF. |
151 | vim_collapsed_mainkeys-log_key = |
152 | vim_collapsed_mainkeys-mkey_bf. |
153 | CLEAR vim_collapsed_mainkeys-mkey_bf. |
154 | MODIFY vim_collapsed_mainkeys. EXIT. |
155 | ENDLOOP. |
156 | ENDIF. |
157 | ENDLOOP. |
158 | vim_coll_mainkeys_beg_ix = 1. |
159 | nextline = 1. |
160 | ENDIF. |
161 | l = 1. |
162 | DESCRIBE TABLE extract LINES maxlines. |
163 | ELSE. |
164 |
165 | CLEAR <status>-mark_only. "ufdetail |
166 | IF vim_special_mode NE vim_delimit. |
167 | neuer = 'J'. |
168 | MESSAGE s025(sv). |
169 | ELSE. |
170 | MESSAGE s125(sv). |
171 | ENDIF. |
172 | PERFORM process_detail_screen USING 'C'. |
173 | neuer = 'N'. |
174 | <status>-upd_flag = space. |
175 | IF function NE 'IGN ' AND function NE 'ABR '. |
176 | IF vim_special_mode NE vim_delimit. |
177 |
178 | IF status-mark EQ markiert. |
179 | READ TABLE extract WITH KEY <orig_key> BINARY SEARCH. |
180 | IF sy-subrc EQ 0. |
181 | <xmark> = nicht_markiert. |
182 | MODIFY extract INDEX sy-tabix. |
183 | SUBTRACT 1 FROM mark_extract. |
184 | ENDIF. |
185 | ENDIF. |
186 | ELSE. |
187 |
188 | IF temporal_delimitation_happened NE space. |
189 | PERFORM after_temporal_delimitation. |
190 | ENDIF. |
191 | ENDIF. |
192 | READ TABLE total WITH KEY <f1_x> BINARY SEARCH. |
193 | extract = total. |
194 |
195 | IF x_header-delmdtflag NE space. |
196 | PERFORM check_if_entry_is_to_display USING 'L' <vim_xtotal_key> |
197 | 'D' <vim_begdate>. |
198 | IF sy-subrc EQ 0. |
199 | PERFORM check_new_mainkey. |
200 | IF sy-subrc EQ 0. |
201 | READ TABLE vim_collapsed_mainkeys |
202 | WITH KEY <vim_tot_mkey_beforex> |
203 |
204 | BINARY SEARCH |
205 | TRANSPORTING NO FIELDS. |
206 | <vim_collapsed_keyx> = <vim_xtotal_key>. |
207 |
208 | <vim_collapsed_mkey_bfx> = <vim_tot_mkey_beforex>. |
209 |
210 | INSERT vim_collapsed_mainkeys INDEX sy-tabix. |
211 | ENDIF. |
212 | CLEAR sy-subrc. |
213 | ENDIF. |
214 | ENDIF. |
215 | IF x_header-delmdtflag EQ space OR sy-subrc LT 8. |
216 | READ TABLE extract WITH KEY <vim_xextract_key> BINARY SEARCH |
217 | TRANSPORTING NO FIELDS. "UF 333778/1999 |
218 | CASE sy-subrc. |
219 | WHEN 0. "UF 333778/1999, for temporal delimitation |
220 | MODIFY extract INDEX sy-tabix. |
221 | WHEN 4. |
222 | INSERT extract INDEX sy-tabix. |
223 | WHEN 8. |
224 | APPEND extract. |
225 | ENDCASE. |
226 | MOVE: sy-tabix TO exind, |
227 | sy-tabix TO nextline. |
228 | ENDIF. |
229 | IF looplines GT 0. |
230 | IF nextline LE firstline. |
231 | dum1 = ( firstline - nextline ) / looplines. |
232 | ADD 1 TO dum1. |
233 | DO dum1 TIMES. |
234 | firstline = firstline - looplines + 1. |
235 | ENDDO. |
236 | IF firstline LE 0. firstline = 1. ENDIF. |
237 | ELSE. |
238 | dum1 = firstline + looplines - 1. |
239 | IF nextline GT dum1. |
240 | dum1 = ( nextline - firstline ) / looplines. |
241 | DO dum1 TIMES. |
242 | firstline = firstline + looplines - 1. |
243 | ENDDO. |
244 | ENDIF. |
245 | ENDIF. |
246 | l = nextline - firstline + 1. |
247 | ELSE. |
248 | l = nextline. |
249 | ENDIF. |
250 | MOVE: firstline TO <status>-firstline, |
251 | l TO <status>-cur_line. |
252 | DESCRIBE TABLE extract LINES maxlines. |
253 | ENDIF. |
254 | MOVE: stat TO status-data, |
255 | stat TO title-data. |
256 | ENDIF. |
257 | REFRESH vim_copied_indices. |
258 | SUBTRACT 1 FROM vim_copy_call_level. |
259 | IF vim_special_mode NE vim_delimit. |
260 | MESSAGE s014(sv) WITH counter. |
261 | ELSE. |
262 | IF counter EQ 1. |
263 | MESSAGE s122(sv). |
264 | ELSE. |
265 | MESSAGE s123(sv) WITH counter. |
266 | ENDIF. |
267 | ENDIF. |
268 | status-action = aendern. |
269 | IF title-action NE hinzufuegen. |
270 | title-action = aendern. |
271 | ENDIF. |
272 | CLEAR vim_old_viewkey. |
273 | TRANSLATE vim_no_mainkey_exists USING vim_no_mkey_not_procsd_patt. |
274 | IF function EQ 'ABR '. |
275 | vim_next_screen = liste. vim_leave_screen = 'X'. |
276 | ELSEIF function NE 'IGN '. |
277 | IF vim_special_mode EQ vim_delimit AND status-mode EQ detail_bild. |
278 | function = 'DETA'. |
279 | ELSE. |
280 | CLEAR function. |
281 | ENDIF. |
282 | ENDIF. |
283 | ENDFORM. |