1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | FORM detailbild. |
10 | IF status-mode NE list_bild OR status-type NE zweistufig. |
11 | MESSAGE i001(sv). |
12 | EXIT. |
13 | ENDIF. |
14 | nextline = firstline + l - 1. |
15 | IF l EQ 0 OR nextline GT maxlines. |
16 | MESSAGE s032(sv). |
17 | MOVE firstline TO nextline. |
18 | EXIT. |
19 | ENDIF. |
20 | IF mark_extract > 0. "ufdetailb |
21 | PERFORM set_mark_only USING nextline. |
22 | ENDIF. "ufdetaile |
23 | IF x_header-delmdtflag NE space. |
24 | TRANSLATE vim_no_mainkey_exists USING vim_no_mkey_not_procsd_patt. |
25 | ENDIF. |
26 | PERFORM process_detail_screen USING 'S'. |
27 | ENDFORM. |
28 |
29 |
30 |
31 |
32 |
33 | FORM detail_abbrechen. |
34 | IF replace_mode EQ space AND |
35 | ( sy-datar NE space OR |
36 | ( x_header-bastab EQ space OR x_header-texttbexst EQ space ) |
37 | AND <table1_x> NE <table2_x> |
38 | OR x_header-bastab NE space AND x_header-texttbexst NE space |
39 | AND ( <table1_x> NE <vim_xextract_enti> |
40 | OR <table1_xtext> NE <vim_xextract_text> ) ). |
41 | CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' |
42 | EXPORTING |
43 | titel = svim_text_007 |
44 | textline1 = svim_text_009 |
45 | textline2 = svim_text_006 |
46 | defaultoption = 'N' |
47 | cancel_display = ' ' |
48 | IMPORTING |
49 | answer = answer. |
50 | IF answer NE 'J'. |
51 | EXIT. |
52 | ENDIF. |
53 | ENDIF. |
54 | IF status-action EQ kopieren. |
55 | SET SCREEN 0. |
56 | LEAVE SCREEN. |
57 | ENDIF. |
58 | IF maxlines LE 1. |
59 |
60 | IF status-action EQ hinzufuegen. |
61 | status-action = aendern. |
62 | title-action = aendern. |
63 | CLEAR <status>-selected. |
64 | ENDIF. |
65 | PERFORM fill_extract. |
66 | nextline = 1. |
67 | ENDIF. |
68 | neuer = 'N'. |
69 | IF vim_single_entry_function EQ space. |
70 | <status>-upd_flag = space. |
71 | IF replace_mode EQ space AND vim_special_mode NE vim_delete. |
72 | l = nextline - <status>-firstline + 1. |
73 | IF l LE 0 OR l GT looplines. |
74 | l = 1. |
75 | ENDIF. |
76 | nextline = <status>-firstline. |
77 | SET SCREEN liste. |
78 | ELSE. |
79 | SET SCREEN 0. CLEAR vim_act_dynp_view. |
80 | ENDIF. |
81 | ELSE. "single_entry_function |
82 | function = end. SET SCREEN 0. CLEAR vim_act_dynp_view. |
83 | PERFORM update_status. |
84 | ENDIF. |
85 | LEAVE SCREEN. |
86 | ENDFORM. |
87 |
88 |
89 |
90 |
91 |
92 | FORM detail_back. |
93 | |
94 | DATA:count TYPE i. |
95 | |
96 | CASE status-action. |
97 | WHEN aendern. |
98 | PERFORM update_tab. |
99 | WHEN hinzufuegen. |
100 |
101 | move <f1_x> to <f1_wax>. |
102 | PERFORM update_tab. |
103 | neuer = 'N'. |
104 |
105 | SORT extract BY <vim_xextract_key>. |
106 |
107 |
108 | READ TABLE extract WITH KEY <f1_x>. |
109 | firstline = 1. |
110 | IF sy-tabix GT looplines AND looplines GT 0. |
111 | count = ( sy-tabix - firstline ) div looplines + 1. |
112 | DO count TIMES. |
113 | firstline = firstline + looplines - 1. |
114 | ENDDO. |
115 | MOVE firstline TO <status>-firstline. |
116 | ENDIF. |
117 | l = sy-tabix - firstline + 1. |
118 | MOVE l TO <status>-cur_line. |
119 | MOVE <initial> TO <table1>. |
120 | IF x_header-bastab NE space AND x_header-texttbexst NE space. |
121 | MOVE <text_initial_x> TO <table1_xtext>. |
122 |
123 | ENDIF. |
124 | ENDCASE. |
125 | IF status-data EQ auswahldaten AND maxlines LE 1. |
126 | <table1_wax> = <vim_xextract>. |
127 | IF status-delete = geloescht. |
128 | status-delete = nicht_geloescht. |
129 | title-action = aendern. |
130 | PERFORM markiere_alle USING nicht_markiert. |
131 | ENDIF. |
132 | IF status-action EQ hinzufuegen. |
133 | status-action = aendern. |
134 | title-action = aendern. |
135 | CLEAR <status>-selected. |
136 | ENDIF. |
137 | IF x_header-delmdtflag NE space. |
138 | <vim_h_mkey>(x_header-keylen) = <f1_x>. |
139 | LOOP AT vim_collapsed_mainkeys. "WHERE mkey_bf EQ <vim_f1_before>. |
140 | IF vim_collapsed_mainkeys-mkey_bf EQ space. "SW: wie liste_back |
141 |
142 |
143 |
144 | if <vim_collapsed_mkey_bfx> NE <vim_mkey_beforex>. |
145 | <vim_collapsed_mkey_bfx> = <vim_collapsed_logkeyx>. |
146 |
147 |
148 | endif. |
149 |
150 | CLEAR vim_collapsed_mainkeys-log_key. |
151 | ENDIF. "SW |
152 | <f1_x> = <vim_h_coll_mkey>. |
153 |
154 | <vim_enddate_mask> = space. |
155 | <vim_h_coll_mkey> = <f1_x>. |
156 |
157 | MODIFY vim_collapsed_mainkeys. |
158 | ENDLOOP. |
159 | IF vim_delim_expa_excluded NE space. |
160 | DELETE excl_cua_funct WHERE function EQ 'EXPA'. |
161 | CLEAR vim_delim_expa_excluded. |
162 | ENDIF. |
163 | IF status-action = aendern AND title-action = hinzufuegen. |
164 | title-action = aendern. |
165 | ENDIF. |
166 | ENDIF. |
167 | PERFORM fill_extract. |
168 |
169 |
170 | READ TABLE extract WITH KEY <f1_wax>. |
171 | IF sy-subrc EQ 0. |
172 | nextline = sy-tabix. |
173 | ELSE. |
174 | nextline = 1. |
175 | ENDIF. |
176 | ELSE. |
177 | MOVE firstline TO nextline. |
178 | ENDIF. |
179 | vim_next_screen = liste. vim_leave_screen = 'X'. |
180 | ENDFORM. |
181 |
182 |
183 |
184 |
185 |
186 | FORM detail_exit_command. |
187 | DATA: answer. |
188 | function = ok_code. |
189 | CLEAR vim_old_viewkey. |
190 | TRANSLATE vim_no_mainkey_exists USING vim_no_mkey_not_procsd_patt. |
191 | CASE ok_code. |
192 | WHEN 'ABR '. |
193 | CLEAR ok_code. |
194 | PERFORM detail_abbrechen. |
195 | WHEN 'IGN '. |
196 | PERFORM ignorieren. |
197 | WHEN 'UPRF'. "UFprofileB |
198 | CHECK vim_pr_activating = space. |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 | IF NOT function IS INITIAL. |
213 | PERFORM vim_pr_mand_fields. |
214 | ENDIF. |
215 | WHEN 'GPRF'. |
216 | CHECK vim_pr_activating = space. |
217 | PERFORM vim_pr_mand_fields . "UFprofileE |
218 | ENDCASE. |
219 | ENDFORM. "detail_exit_command |
220 |
221 |
222 |
223 |
224 |
225 | FORM detail_init. |
226 | CONSTANTS: forward VALUE 'X'. |
227 | IF function NE space. |
228 | status-mode = detail_bild. |
229 | title-mode = detail_bild. |
230 | IF <xmark> EQ markiert. |
231 | status-mark = markiert. |
232 | ELSE. |
233 | status-mark = nicht_markiert. |
234 | ENDIF. |
235 | IF status-action NE kopieren AND neuer NE 'J'. |
236 | IF <status>-selected = by_field_contents AND nextline > maxlines. |
237 | nextline = 1. "377434/1999 UF011299 |
238 | ENDIF. |
239 | IF x_header-subsetflag NE space AND replace_mode EQ space. |
240 | PERFORM fill_subsetfields. |
241 | ENDIF. |
242 |
243 |
244 |
245 | if nextline > maxlines. |
246 | PERFORM read_table USING maxlines. |
247 | else. |
248 | PERFORM read_table USING nextline. |
249 | endif. |
250 |
251 | IF x_header-subsetflag NE space. |
252 | PERFORM complete_subsetfields. |
253 | ENDIF. |
254 | ENDIF. |
255 | IF vim_special_mode EQ vim_delimit. |
256 | MOVE vim_sval_tab-value TO <vim_new_begdate>. |
257 | ENDIF. |
258 | ENDIF. |
259 | CLEAR: vim_key_alr_checked, vim_keyrange_alr_checked. |
260 | vim_act_dynp_view = x_header-viewname. |
261 | PERFORM set_title USING title <name>. |
262 | CASE replace_mode. |
263 | WHEN space. |
264 |
265 | IF neuer NE 'X'. "error in CHECK_KEY for timedep. objects |
266 | IF vim_special_mode NE vim_delete. |
267 | PERFORM set_pf_status USING status. |
268 | ELSE. |
269 | PERFORM set_pf_status USING 'REPLACE'. |
270 | ENDIF. |
271 | ENDIF. |
272 | WHEN OTHERS. |
273 |
274 |
275 | PERFORM set_pf_status USING 'REPLACE'. |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 | ENDCASE. |
289 | ENDFORM. |
290 |
291 |
292 |
293 |
294 |
295 | FORM detail_loesche. |
296 | DATA: tot_ix LIKE sy-tabix, rec LIKE sy-subrc, |
297 | delete_fix_value(1) TYPE c, |
298 | entry_contains_fix_val(1) TYPE c, |
299 | w_field TYPE vimty_fields_type, |
300 | bc_fix_del_info_sent(1) TYPE c VALUE ' '. |
301 | |
302 |
303 | delete_fix_value = vim_bc_chng_allowed. |
304 | IF vim_bc_chng_allowed = space. "fix field changeability forced |
305 | READ TABLE vim_bc_entry_list INTO vim_bc_entry_list_wa |
306 | WITH TABLE KEY viewname = x_header-viewname |
307 | keys = <vim_xextract_key>. |
308 | IF sy-subrc = 0. |
309 | CLEAR entry_contains_fix_val. |
310 | LOOP at vim_bc_entry_list_wa-fields into w_field. |
311 | IF w_field-flag = vim_profile_fix. |
312 | entry_contains_fix_val = 'X'. |
313 | ENDIF. |
314 | ENDLOOP. |
315 | IF entry_contains_fix_val = 'X'. |
316 | IF bc_fix_del_info_sent EQ SPACE AND |
317 | <status>-bcfixdelinfosent NE 'Y'."HCG: del dependent VCL |
318 | bc_fix_del_info_sent = 'X'. |
319 | <status>-bcfixdelinfosent = 'X'. |
320 | MESSAGE i177(SV). |
321 | ENDIF. |
322 | ELSE. |
323 | delete_fix_value = 'X'. |
324 | ENDIF. |
325 | ELSE. |
326 | delete_fix_value = 'X'. |
327 | ENDIF. |
328 | ENDIF. |
329 | CHECK delete_fix_value EQ 'X'. |
330 |
331 | IF <xmark> NE uebergehen. |
332 | READ TABLE total WITH KEY <vim_xextract_key> BINARY SEARCH. |
333 | MOVE sy-tabix TO tot_ix. |
334 | IF x_header-existency EQ 'M'. "no mainkey delete allowed |
335 | PERFORM check_if_entry_can_be_deleted. |
336 | IF sy-subrc NE 0. |
337 | <xmark> = uebergehen. ignored_entries_exist = 'X'. |
338 | MODIFY extract INDEX nextline. |
339 | <mark> = uebergehen. |
340 | MODIFY total INDEX tot_ix. |
341 | EXIT. |
342 | ENDIF. |
343 | ENDIF. |
344 | PERFORM logical_delete_from_total USING tot_ix. |
345 | IF <xmark> EQ markiert. |
346 | mark_total = mark_total - 1. |
347 | mark_extract = mark_extract - 1. |
348 | ENDIF. |
349 | IF x_header-delmdtflag NE space. |
350 | IF vim_special_mode NE vim_upgrade. |
351 | PERFORM check_if_entry_is_to_display USING 'L' <vim_xtotal_key> |
352 | space <vim_begdate>. |
353 | ELSE. |
354 | CLEAR sy-subrc. |
355 | ENDIF. |
356 | ENDIF. |
357 | IF x_header-delmdtflag EQ space OR sy-subrc LT 8. |
358 | rec = sy-subrc. |
359 | DELETE extract INDEX nextline. |
360 | IF rec EQ 4. |
361 | LOOP AT total. |
362 | PERFORM select USING <status>-selected. |
363 | CHECK sy-subrc EQ 0. |
364 | CHECK <vim_tot_mkey_beforex> EQ <vim_old_mkey_beforex> AND |
365 | ( vim_mkey_after_exists EQ space OR |
366 | <vim_tot_mkey_afterx> EQ <vim_old_mkey_afterx> ). |
367 |
368 |
369 |
370 | vim_mainkey = vim_old_viewkey. |
371 | extract = total. |
372 | PERFORM mod_extract_and_mainkey_tab USING 'I' nextline. |
373 | EXIT. |
374 | ENDLOOP. |
375 | ENDIF. |
376 | ENDIF. |
377 | IF vim_special_mode EQ vim_upgrade. |
378 | counter = 1. |
379 | EXIT. |
380 | ENDIF. |
381 | IF ignored_entries_exist EQ space AND maxlines GT 1. |
382 | MESSAGE s013(sv). |
383 | ELSE. |
384 | MESSAGE i013(sv). |
385 | ENDIF. |
386 | ENDIF. |
387 | IF <status>-mark_only <> space. "ufdetailb |
388 | DESCRIBE TABLE extract LINES maxlines. |
389 | IF mark_extract = 0. |
390 |
391 | nextline = 1. |
392 | vim_next_screen = liste. vim_leave_screen = 'X'. |
393 | ELSE. |
394 |
395 | nextline = nextline - 1. |
396 | PERFORM get_marked_entry USING 'X' |
397 | CHANGING nextline |
398 | rec. |
399 | IF rec <> 0. |
400 |
401 | nextline = nextline + 1. |
402 | PERFORM get_marked_entry USING space |
403 | CHANGING nextline |
404 | rec. |
405 | ENDIF. |
406 | IF rec <> 0. |
407 | nextline = 1. vim_next_screen = liste. vim_leave_screen = 'X'. |
408 | ELSE. |
409 | PERFORM get_page_and_position USING nextline |
410 | looplines |
411 | CHANGING firstline |
412 | l. |
413 | ENDIF. |
414 | ENDIF. |
415 | |
416 | ELSE. "ufdetaile |
417 | DESCRIBE TABLE extract LINES maxlines. |
418 | IF maxlines EQ 0. |
419 | nextline = 1. |
420 | IF status-action EQ hinzufuegen. |
421 | status-action = aendern. |
422 | title-action = aendern. |
423 | ENDIF. |
424 | PERFORM fill_extract. |
425 | vim_next_screen = liste. vim_leave_screen = 'X'. |
426 | ENDIF. |
427 | IF nextline GT maxlines. |
428 | nextline = maxlines. |
429 | ENDIF. |
430 | ENDIF. "ufdetail |
431 | READ TABLE total INDEX tot_ix. |
432 | CLEAR vim_old_viewkey. |
433 | TRANSLATE vim_no_mainkey_exists USING vim_no_mkey_not_procsd_patt. |
434 | ENDFORM. |
435 |
436 |
437 |
438 |
439 |
440 | FORM detail_markiere. |
441 | IF neuer EQ 'J'. |
442 | EXIT. |
443 | ENDIF. |
444 | PERFORM update_tab. |
445 |
446 | PERFORM markiere USING nextline. |
447 | CLEAR function. |
448 | ENDFORM. |
449 | |
450 | |
451 |
452 |
453 |
454 |
455 |
456 |
457 | FORM detail_markierte. |
458 | |
459 | DATA: rc LIKE sy-subrc. |
460 | |
461 | IF status-mode NE list_bild OR status-type NE zweistufig. |
462 | MESSAGE i001(sv). |
463 | EXIT. |
464 | ENDIF. |
465 | IF mark_extract = 0. |
466 |
467 | PERFORM detailbild. |
468 | EXIT. |
469 | ENDIF. |
470 | <status>-mark_only = 'X'. |
471 |
472 |
473 |
474 |
475 |
476 |
477 | nextline = 0. |
478 | PERFORM get_marked_entry USING 'X' |
479 | CHANGING nextline |
480 | rc. |
481 | IF rc <> 0. PERFORM detailbild. EXIT. ENDIF. |
482 |
483 | IF x_header-delmdtflag NE space. |
484 | TRANSLATE vim_no_mainkey_exists USING vim_no_mkey_not_procsd_patt. |
485 | ENDIF. |
486 | PERFORM process_detail_screen USING 'S'. |
487 | ENDFORM. |
488 | |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 | FORM detail_pai. |
498 | CLEAR: vim_next_screen, vim_leave_screen. |
499 | MOVE: status-data TO <status>-st_data, |
500 | status-mode TO <status>-st_mode, |
501 | status-delete TO <status>-st_delete, |
502 | status-action TO <status>-st_action, |
503 | title TO <status>-title, |
504 | maxlines TO <status>-maxlines, |
505 | mark_extract TO <status>-mk_xt, |
506 | mark_total TO <status>-mk_to, |
507 | function TO <status>-fcode. |
508 | IF x_header-ptfrkyexst NE space. |
509 | PERFORM consistency_prt_frky_fields USING 'X'. |
510 | ENDIF. |
511 |
512 |
513 | IF <status>-prof_found <> space. |
514 | CLEAR vim_pr_fields_wa. "UFprofiles |
515 | ENDIF. |
516 | IF vim_special_mode NE vim_upgrade AND |
517 | temporal_delimitation_happened NE space AND |
518 | status-action NE kopieren. |
519 | PERFORM update_tab. |
520 | PERFORM after_temporal_delimitation. |
521 | CLEAR temporal_delimitation_happened. |
522 | PERFORM check_if_entry_is_to_display USING 'L' <f1_x> space |
523 | <vim_begdate>. |
524 | IF status-action EQ hinzufuegen. |
525 | IF function NE 'NEXT'. |
526 | CASE sy-subrc. |
527 | WHEN 0. "expanded mode or new entry |
528 | PERFORM read_table USING nextline. |
529 | WHEN 4. "collapsed mode and actual entry |
530 | READ TABLE extract WITH KEY <f1_x>. |
531 | nextline = sy-tabix. |
532 | extract = total. |
533 | CLEAR function. |
534 | WHEN OTHERS. "collapsed mode and other entry |
535 | LOOP AT extract. |
536 | CHECK <vim_ext_mkey_beforex> EQ <vim_f1_beforex> AND |
537 | ( vim_mkey_after_exists EQ space OR |
538 | <vim_ext_mkey_afterx> EQ <vim_f1_afterx> ). |
539 | nextline = sy-tabix. |
540 | EXIT. |
541 | ENDLOOP. |
542 | extract = total. |
543 | CLEAR function. |
544 | ENDCASE. |
545 | ENDIF. |
546 | ELSE. |
547 | IF sy-subrc EQ 0. |
548 | ADD 1 TO exind. |
549 | nextline = exind. |
550 | ENDIF. |
551 | ENDIF. |
552 | ENDIF. |
553 |
554 | CLEAR ok_code. |
555 | IF replace_mode NE space AND |
556 | ( vim_special_mode NE vim_upgrade OR |
557 | NOT function IN exted_functions ). |
558 | PERFORM update_tab. |
559 |
560 | vim_next_screen = 0. vim_leave_screen = 'X'. |
561 | EXIT. |
562 | ELSEIF vim_special_mode EQ vim_delete. |
563 | vim_next_screen = 0. vim_leave_screen = 'X'. EXIT. |
564 | ENDIF. |
565 | IF vim_single_entry_function NE space AND function NE space. |
566 | IF vim_single_entry_ins_key_input EQ space. |
567 | TRANSLATE status-action USING 'AU'. status-data = gesamtdaten. |
568 | ENDIF. |
569 | IF function EQ 'UEBE'. |
570 | function = 'ENDE'. |
571 | ENDIF. |
572 | ENDIF. |
573 | CASE function. |
574 | WHEN 'ADDR'. |
575 | PERFORM address_maintain. |
576 | WHEN 'AEND'. |
577 | PERFORM anzg_to_aend. |
578 | WHEN 'ALCO'. |
579 | PERFORM selektiere USING transportieren. |
580 | WHEN 'ALMK'. |
581 | PERFORM selektiere USING markiert. |
582 | WHEN 'ALNC'. |
583 | PERFORM selektiere USING space. |
584 | WHEN 'ALOE'. |
585 | PERFORM selektiere USING geloescht. |
586 | WHEN 'ALNW'. |
587 | PERFORM selektiere USING neuer_eintrag. |
588 | WHEN 'ANZG'. |
589 | PERFORM update_tab. |
590 | IF l EQ 0. MOVE: 1 TO l, 1 TO <status>-cur_line. ENDIF. |
591 |
592 | vim_next_screen = 0. vim_leave_screen = 'X'. |
593 | WHEN 'ATAB'. |
594 | PERFORM update_tab. |
595 | IF l EQ 0. MOVE: 1 TO l, 1 TO <status>-cur_line. ENDIF. |
596 |
597 | vim_next_screen = 0. vim_leave_screen = 'X'. |
598 | WHEN 'BCCH'. "change fix bc-set fields |
599 | PERFORM vim_chng_fix_flds. |
600 | WHEN 'BCSH'. " show fix bc-set fields |
601 | PERFORM vim_bc_show_fix_flds. |
602 | WHEN 'DELE'. |
603 |
604 | PERFORM loeschen. |
605 | IF replace_mode NE space. |
606 | <status>-mk_to = mark_total. |
607 | <status>-mk_xt = mark_extract. |
608 | vim_next_screen = 0. vim_leave_screen = 'X'. |
609 | EXIT. |
610 | ENDIF. |
611 | WHEN 'DELM'. |
612 | PERFORM delimitation. |
613 | WHEN 'ENDE'. |
614 | PERFORM update_tab. |
615 | IF l EQ 0. MOVE: 1 TO l, 1 TO <status>-cur_line. ENDIF. |
616 |
617 | vim_next_screen = 0. vim_leave_screen = 'X'. |
618 | WHEN 'EXPA'. |
619 |
620 | WHEN 'FDOC'. "HW Functiondocu |
621 | PERFORM show_function_docu. |
622 | CLEAR function. |
623 |
624 |
625 |
626 |
627 | WHEN 'KOPE'. |
628 | counter = 0. |
629 | PERFORM kopiere. |
630 | WHEN 'KOPF'. |
631 |
632 |
633 |
634 | PERFORM kopiere_eintrag USING <orig_key>. |
635 | WHEN 'LANG'. "SW Texttransl |
636 | PERFORM vim_set_languages. |
637 | CLEAR function. |
638 | WHEN 'MKEZ'. |
639 | PERFORM detail_markiere. |
640 | WHEN 'NEWL'. |
641 | PERFORM update_tab. |
642 | CLEAR <status>-mark_only. "UFdetail |
643 | PERFORM hinzufuegen. |
644 | WHEN 'NEXT'. |
645 | PERFORM naechster. |
646 | WHEN 'ORDR'. |
647 | PERFORM order_administration. |
648 | WHEN 'ORGI'. |
649 | PERFORM original_holen. |
650 | WHEN 'POSI'. |
651 | PERFORM popup_positionieren. |
652 | WHEN 'PREV'. |
653 | PERFORM voriger. |
654 | WHEN 'PRMO'. |
655 |
656 | PERFORM update_tab. |
657 | PERFORM list_alv. |
658 | WHEN 'PROT'. |
659 | PERFORM logs_analyse. |
660 | WHEN 'PRST'. |
661 | PERFORM update_tab. |
662 | PERFORM list_alv. |
663 | WHEN 'SAVE'. |
664 | PERFORM update_tab. |
665 | IF status-action EQ hinzufuegen. |
666 | SORT extract BY <vim_xextract_key>. |
667 |
668 | READ TABLE extract WITH KEY <vim_xextract_key>. |
669 | <status>-cur_line = l = sy-tabix - firstline + 1. |
670 | ENDIF. |
671 |
672 | vim_next_screen = 0. vim_leave_screen = 'X'. |
673 | WHEN 'SCRF'. |
674 | PERFORM update_tab. |
675 | PERFORM vim_sapscript_form_maint. |
676 | WHEN 'SEAR'. |
677 | PERFORM update_tab. |
678 | PERFORM suchen. |
679 | WHEN 'SELU'. |
680 | PERFORM selektiere USING aendern. |
681 | WHEN 'TEXT'. |
682 | PERFORM update_tab. |
683 | PERFORM vim_multi_langu_text_maint. |
684 | WHEN 'TREX'. |
685 | MOVE geloescht TO corr_action. |
686 | PERFORM update_corr. |
687 | IF replace_mode NE space. |
688 | <status>-mk_to = mark_total. |
689 | <status>-mk_xt = mark_extract. |
690 | vim_next_screen = 0. vim_leave_screen = 'X'. |
691 | EXIT. |
692 | ENDIF. |
693 | WHEN 'TRIN'. |
694 | MOVE hinzufuegen TO corr_action. |
695 | PERFORM update_corr. |
696 | IF replace_mode NE space. |
697 | <status>-mk_to = mark_total. |
698 | <status>-mk_xt = mark_extract. |
699 | vim_next_screen = 0. vim_leave_screen = 'X'. |
700 | EXIT. |
701 | ENDIF. |
702 | WHEN 'TRSP'. |
703 |
704 | IF x_header-cursetting NE space AND |
705 | x_header-flag EQ vim_transport_denied. |
706 | x_header-flag = x_header-cursetting. |
707 | TRANSLATE x_header-flag USING 'X YX'. |
708 | MODIFY x_header INDEX 1. |
709 | ENDIF. |
710 | vim_next_screen = 0. vim_leave_screen = 'X'. |
711 | WHEN 'UEBE'. |
712 | PERFORM detail_back. |
713 | WHEN 'UPRF'. |
714 |
715 |
716 | message s175(SV). |
717 | WHEN 'UNDO'. |
718 |
719 | PERFORM zurueckholen. |
720 | IF replace_mode NE space. |
721 | <status>-mk_to = mark_total. |
722 | <status>-mk_xt = mark_extract. |
723 | vim_next_screen = 0. vim_leave_screen = 'X'. |
724 | EXIT. |
725 | ENDIF. |
726 | WHEN ' '. |
727 | IF vim_prt_fky_flds_updated NE space. |
728 | CLEAR vim_prt_fky_flds_updated. |
729 | PERFORM update_tab. |
730 | ELSE. |
731 | IF x_header-frm_h_flds NE space. |
732 | PERFORM (x_header-frm_h_flds) IN PROGRAM. |
733 | ENDIF. |
734 | IF neuer EQ 'J' AND vim_key_alr_checked EQ space. |
735 |
736 |
737 |
738 | IF x_header-frm_on_new NE space. |
739 | PERFORM (x_header-frm_on_new) IN PROGRAM. |
740 | ENDIF. |
741 | ENDIF. |
742 | PERFORM check_key. |
743 | ENDIF. |
744 | WHEN OTHERS. |
745 | IF vim_called_by_cluster NE space. "SW Crtl .. |
746 | CALL FUNCTION 'VIEWCLUSTER_NEXT_ACTION' |
747 | EXPORTING |
748 | detail = 'X' |
749 | IMPORTING |
750 | leave_screen = vim_leave_screen |
751 | CHANGING |
752 | fcode = function. |
753 | IF vim_leave_screen NE space. |
754 | PERFORM update_tab. |
755 | vim_next_screen = 0. |
756 | ENDIF. |
757 | ENDIF. ".. SW Ctrl |
758 | ENDCASE. |
759 | ENDFORM. |
760 | |
761 |
762 |
763 |
764 |
765 |
766 | FORM detail_zurueckholen. |
767 | DATA: tot_ix LIKE sy-tabix, msg_type(1) TYPE c, msg_no LIKE sy-msgno, |
768 | rc LIKE sy-subrc. |
769 | IF x_header-delmdtflag NE space. |
770 | counter = 1. |
771 | PERFORM temporal_delimitation. |
772 | ENDIF. |
773 | IF <xmark> EQ markiert. |
774 | mark_total = mark_total - 1. |
775 | mark_extract = mark_extract - 1. |
776 | ENDIF. |
777 | READ TABLE total WITH KEY <vim_xextract_key> BINARY SEARCH. |
778 | MOVE sy-tabix TO tot_ix. |
779 | PERFORM logical_undelete_total USING sy-tabix. |
780 | IF temporal_delimitation_happened NE space. |
781 | CLEAR vim_delim_entries. |
782 | PERFORM check_if_entry_is_to_display USING 'L' <vim_xtotal_key> |
783 | space <vim_begdate>. |
784 | IF sy-subrc LT 8. |
785 | vim_delim_entries-index3 = nextline. |
786 | IF sy-subrc EQ 4. |
787 | LOOP AT total. |
788 | CHECK <action> EQ geloescht OR <action> EQ neuer_geloescht OR |
789 | <action> EQ update_geloescht. |
790 | CHECK <vim_tot_mkey_beforeX> EQ <vim_old_mkey_beforeX> AND |
791 | ( vim_mkey_after_exists EQ space OR |
792 | <vim_tot_mkey_afterX> EQ <vim_old_mkey_afterX> ). |
793 |
794 |
795 |
796 | vim_delim_entries-index1 = sy-tabix. |
797 | vim_delim_entries-index2 = vim_delim_entries-index3. |
798 | EXIT. |
799 | ENDLOOP. |
800 | ENDIF. |
801 | APPEND vim_delim_entries. |
802 | ENDIF. |
803 | PERFORM after_temporal_delimitation. |
804 | CLEAR temporal_delimitation_happened. |
805 | ELSE. |
806 | IF replace_mode NE space AND vim_external_mode EQ space. |
807 | extract = total. |
808 | MODIFY extract INDEX nextline. "no deletion in upgrade mode |
809 | ELSE. |
810 | DELETE extract INDEX nextline. |
811 | SUBTRACT 1 FROM maxlines. |
812 | ENDIF. |
813 | ENDIF. |
814 | IF replace_mode EQ space. |
815 | IF counter GT 1. msg_no = '002'. ELSE. msg_no = '003'. ENDIF. |
816 | IF ignored_entries_exist EQ space. |
817 | msg_type = 'S'. |
818 | ELSE. |
819 | msg_type = 'W'. |
820 | ENDIF. |
821 | MESSAGE ID 'SV' TYPE msg_type NUMBER msg_no WITH counter. |
822 | IF nextline NE 1 AND nextline GT maxlines. |
823 | nextline = maxlines. |
824 | ENDIF. |
825 | IF maxlines EQ 0. |
826 | title-action = aendern. |
827 | status-delete = nicht_geloescht. |
828 | vim_next_screen = liste. vim_leave_screen = 'X'. |
829 | ELSEIF <status>-mark_only <> space. |
830 | IF mark_extract = 0. |
831 |
832 | nextline = 1. |
833 | vim_next_screen = liste. vim_leave_screen = 'X'. |
834 | ELSE. |
835 |
836 | nextline = nextline - 1. |
837 | PERFORM get_marked_entry USING 'X' |
838 | CHANGING nextline |
839 | rc. |
840 | IF rc <> 0. |
841 |
842 | nextline = nextline + 1. |
843 | PERFORM get_marked_entry USING space |
844 | CHANGING nextline |
845 | rc. |
846 | ENDIF. |
847 | IF rc <> 0. |
848 | nextline = 1. vim_next_screen = liste. vim_leave_screen = 'X'. |
849 | ELSE. |
850 | PERFORM get_page_and_position USING nextline |
851 | looplines |
852 | CHANGING firstline |
853 | l. |
854 | ENDIF. |
855 | ENDIF. |
856 | ENDIF. |
857 | READ TABLE total INDEX tot_ix. |
858 | ELSE. |
859 | counter = 1. |
860 | ENDIF. |
861 | CLEAR vim_old_viewkey. |
862 | TRANSLATE vim_no_mainkey_exists USING vim_no_mkey_not_procsd_patt. |
863 | ENDFORM. |
864 | |
865 |
866 |
867 |
868 |
869 |
870 |
871 |
872 |
873 |
874 |
875 |
876 |
877 | FORM get_marked_entry USING p_forward TYPE sychar01 |
878 | CHANGING p_index LIKE sy-tabix |
879 | p_rc LIKE sy-subrc. |
880 | DATA: bw_index LIKE sy-tabix. |
881 | |
882 | p_rc = 4. |
883 | IF p_forward IS INITIAL. |
884 |
885 | bw_index = p_index - 1. |
886 | WHILE bw_index > 0. |
887 | READ TABLE extract INDEX bw_index. |
888 | IF <xmark> = markiert. |
889 | p_index = bw_index. |
890 | CLEAR p_rc. |
891 | EXIT. |
892 | ENDIF. |
893 | bw_index = bw_index - 1. |
894 | ENDWHILE. |
895 | ELSE. |
896 |
897 | p_index = p_index + 1. |
898 | LOOP AT extract FROM p_index. |
899 | CHECK <xmark> = markiert. |
900 | p_index = sy-tabix. |
901 | CLEAR p_rc. |
902 | EXIT. |
903 | ENDLOOP. |
904 | IF p_rc > 0. |
905 | p_index = p_index - 1. |
906 | ENDIF. |
907 | ENDIF. |
908 | ENDFORM. " GET_MARKED_ENTRY |
909 |
910 |
911 |
912 |
913 |
914 | FORM naechster. |
915 | DATA: last_list_pos LIKE sy-tabix, rc LIKE sy-subrc. |
916 | IF status-action NE anzeigen AND status-action NE transportieren |
917 | AND status-mode NE list_bild. |
918 | PERFORM update_tab. |
919 | ENDIF. |
920 | IF <status>-mark_only = space. "ufdetail |
921 |
922 | nextline = nextline + 1. |
923 | IF nextline GT maxlines. |
924 | IF status-action NE hinzufuegen. |
925 | nextline = maxlines. |
926 | MESSAGE s008(sv). |
927 | EXIT. |
928 | ELSE. |
929 | IF status-type EQ zweistufig AND |
930 | status-mode EQ detail_bild. |
931 | neuer = 'J'. |
932 | MOVE <initial> TO <table1>. |
933 | MOVE <table1> TO <vim_extract_struc>. |
934 | IF x_header-bastab NE space AND x_header-texttbexst NE space. |
935 | MOVE: <text_initial_x> TO <table1_xtext>, |
936 | <table1_xtext> TO <vim_xextract_text>. |
937 |
938 |
939 | ENDIF. |
940 | nextline = maxlines + 1. |
941 | ELSE. |
942 | nextline = nextline - 1. |
943 | MESSAGE s008(sv). |
944 | ENDIF. |
945 | ENDIF. |
946 | ENDIF. |
947 | ELSE. "ufdetailb |
948 |
949 | PERFORM get_marked_entry USING 'X' |
950 | CHANGING nextline |
951 | rc. |
952 | IF rc <> 0. |
953 | MESSAGE s830(sv). |
954 |
955 | EXIT. |
956 | ENDIF. |
957 | ENDIF. "ufdetaile |
958 | IF looplines = 0. |
959 |
960 | l = nextline - firstline + 1. |
961 | MOVE l TO <status>-cur_line. |
962 | ELSEIF looplines = 1. |
963 | firstline = l = 1. |
964 | MOVE: firstline TO <status>-firstline, |
965 | l TO <status>-cur_line. |
966 | ELSEIF looplines > 1. |
967 | IF status-mode EQ detail_bild. |
968 | last_list_pos = firstline + looplines - 1. |
969 | IF nextline GT last_list_pos. |
970 | IF <status>-mark_only = space. "ufdetail |
971 | firstline = firstline + looplines - 1. |
972 | l = 2. |
973 | ELSE. "ufdetailb |
974 | PERFORM get_page_and_position USING nextline |
975 | looplines |
976 | CHANGING firstline |
977 | l. |
978 | ENDIF. "ufdetaile |
979 | MOVE: firstline TO <status>-firstline, |
980 | l TO <status>-cur_line. |
981 | ELSE. |
982 | IF status-mode NE list_bild. |
983 | l = nextline - firstline + 1. |
984 | MOVE l TO <status>-cur_line. |
985 | ENDIF. |
986 | ENDIF. |
987 | ENDIF. |
988 | ENDIF. |
989 | ENDFORM. |
990 |
991 |
992 |
993 |
994 |
995 |
996 |
997 | FORM set_mark_only USING p_index LIKE sy-tabix. |
998 | DATA: rc LIKE sy-subrc. |
999 | PERFORM check_marked USING p_index |
1000 | CHANGING rc. |
1001 | IF rc = 0. |
1002 | <status>-mark_only = 'X'. |
1003 | ENDIF. |
1004 | ENDFORM. " SET_MARK_ONLY |
1005 |
1006 |
1007 |
1008 |
1009 |
1010 |
1011 |
1012 | FORM process_detail_screen USING value(mode) TYPE c. |
1013 | DATA: modulpool LIKE trdir-name, no_input_happened(1) TYPE c, |
1014 | state_action(1) TYPE c. |
1015 | IF detail NE '0000'. |
1016 | IF mode EQ 'S'. |
1017 | SET SCREEN detail. |
1018 | LEAVE SCREEN. |
1019 | ELSE. |
1020 | PERFORM vim_imp_call_screen USING detail. |
1021 | ENDIF. |
1022 | ELSE. |
1023 | RAISE detail_scr_nbr_missing. |
1024 | ENDIF. |
1025 | ENDFORM. |
1026 |
1027 |
1028 |
1029 |
1030 |
1031 |
1032 |
1033 |
1034 |
1035 | FORM voriger. |
1036 | DATA: rc LIKE sy-subrc, n TYPE i. |
1037 | |
1038 | IF status-action NE anzeigen AND status-action NE transportieren |
1039 | AND status-mode NE list_bild. |
1040 | PERFORM update_tab. |
1041 | ENDIF. |
1042 | IF <status>-mark_only = space. "ufdetail |
1043 |
1044 | nextline = nextline - 1. |
1045 | IF nextline LE 0. |
1046 | nextline = 1. |
1047 | MESSAGE s007(sv). |
1048 | ELSEIF nextline LT firstline. |
1049 |
1050 | IF looplines > firstline. |
1051 |
1052 | firstline = 1. |
1053 | l = nextline. |
1054 | ELSE. |
1055 | firstline = firstline - looplines + 1. |
1056 | l = looplines - 1. |
1057 | ENDIF. |
1058 | MOVE: firstline TO <status>-firstline, |
1059 | l TO <status>-cur_line. |
1060 | ELSE. |
1061 | l = nextline - firstline + 1. |
1062 | MOVE l TO <status>-cur_line. |
1063 | ENDIF. |
1064 | ELSE. "ufdetailb |
1065 |
1066 | n = nextline DIV ( looplines - 1 ). |
1067 | PERFORM get_marked_entry USING space |
1068 | CHANGING nextline rc. |
1069 | IF rc > 0. |
1070 | MESSAGE s831(sv). |
1071 |
1072 | ELSE. |
1073 | IF nextline LT firstline. |
1074 | PERFORM get_page_and_position USING nextline |
1075 | looplines |
1076 | CHANGING firstline |
1077 | l. |
1078 | MOVE: firstline TO <status>-firstline, |
1079 | l TO <status>-cur_line. |
1080 | ELSE. |
1081 | l = nextline - firstline + 1. |
1082 | MOVE l TO <status>-cur_line. |
1083 | ENDIF. |
1084 | ENDIF. |
1085 | ENDIF. "ufdetaile |
1086 | ENDFORM. |
1087 |
1088 |
1089 |
1090 |
1091 |
1092 |
1093 |
1094 |
1095 | FORM check_marked USING p_index LIKE sy-tabix |
1096 | CHANGING p_rc LIKE sy-subrc. |
1097 | |
1098 | p_rc = 4. |
1099 | READ TABLE extract INDEX p_index. |
1100 | IF sy-subrc = 0 AND <xmark> = markiert. CLEAR p_rc. ENDIF. |
1101 | ENDFORM. " CHECK_MARKED |
1102 |
1103 |
1104 |
1105 |
1106 |
1107 |
1108 |
1109 |
1110 |
1111 |
1112 | FORM get_page_and_position USING p_line LIKE sy-tabix |
1113 | p_looplines LIKE sy-tabix |
1114 | CHANGING p_first LIKE sy-tabix |
1115 | p_pageline LIKE sy-tabix. |
1116 | DATA: m TYPE i. |
1117 | m = p_line DIV ( p_looplines - 1 ). |
1118 | p_first = m * ( p_looplines - 1 ) + 1. |
1119 | p_pageline = p_line MOD ( p_looplines - 1 ). |
1120 | ENDFORM. " GET_PAGE_AND_POSITION |
1121 | |
1122 |
1123 |
1124 |
1125 |
1126 |
1127 | FORM vim_modify_detail_screen. |
1128 | |
1129 | DATA: dummyflag TYPE xfeld. |
1130 | |
1131 | CLEAR vim_set_from_bc_pbo. |
1132 |
1133 | IF replace_mode = space AND status-action = aendern |
1134 | AND vim_bc_chng_allowed = space. "force changeability |
1135 | READ TABLE vim_bc_entry_list INTO vim_bc_entry_list_wa |
1136 | WITH TABLE KEY viewname = x_header-viewname |
1137 | keys = <vim_xextract_key>. |
1138 | IF sy-subrc = 0. |
1139 | vim_set_from_bc_pbo = 'X'. |
1140 | ENDIF. |
1141 | ENDIF. |
1142 | LOOP AT SCREEN. |
1143 | SPLIT screen-name AT '-' INTO vim_object vim_objfield. "Subviews .. |
1144 | IF status-action EQ anzeigen OR status-action EQ transportieren OR |
1145 | status-delete EQ geloescht. |
1146 | screen-input = '0'. |
1147 | ELSE. |
1148 | IF screen-group1 EQ 'KEY' AND screen-required NE 0 AND |
1149 | screen-input NE '0'. |
1150 | screen-input = '0'. |
1151 | ENDIF. |
1152 | IF status-action EQ hinzufuegen OR |
1153 | status-action EQ kopieren. |
1154 | IF neuer CO 'XJ' . |
1155 | IF screen-group1 EQ 'KEY'. |
1156 | IF ( vim_single_entry_function NE 'INS' OR |
1157 | vim_single_entry_ins_key_input NE space ) AND |
1158 | ( x_header-existency NE 'M' OR |
1159 | screen-name EQ vim_enddate_name ). |
1160 | screen-input = '1'. |
1161 | ENDIF. |
1162 | IF vim_single_entry_function EQ 'INS'. |
1163 | screen-request = '1'. sy-subrc = 8. |
1164 | ENDIF. |
1165 | ENDIF. |
1166 | IF vim_special_mode EQ vim_upgrade AND function NE 'DELE'. |
1167 | IF <status>-prof_found = vim_pr_into_view "UFprofiles begin |
1168 | AND screen-group1 = 'KEY'. |
1169 | PERFORM set_profile_key_attributes USING vim_objfield |
1170 | CHANGING screen-input |
1171 | vim_modify_screen. |
1172 | CLEAR vim_modify_screen. |
1173 | ENDIF. "UFprofiles end |
1174 | screen-request = '1'. sy-subrc = 8. |
1175 | ENDIF. |
1176 | ENDIF. |
1177 | IF vim_pr_activating <> space. |
1178 | IF screen-required = '1'. |
1179 |
1180 | screen-required = '0'. "UFprofile |
1181 | ENDIF. |
1182 | ENDIF. |
1183 | ELSE. |
1184 | IF replace_mode NE space. |
1185 | CASE vim_special_mode. |
1186 | WHEN vim_replace. |
1187 | IF screen-name EQ sel_field_for_replace_l. |
1188 | screen-request = '1'. sy-subrc = 8. |
1189 | IF screen-invisible = '1'. |
1190 | screen-input = '1'. |
1191 | ENDIF. |
1192 | ENDIF. |
1193 | WHEN vim_upgrade. |
1194 | IF NOT function IN exted_functions. |
1195 | screen-request = '1'. sy-subrc = 8. |
1196 | ENDIF. |
1197 |
1198 | ENDCASE. |
1199 | ELSE. |
1200 | IF vim_special_mode EQ vim_delete. |
1201 | screen-input = '0'. |
1202 | ENDIF. |
1203 | IF x_header-delmdtflag NE space AND |
1204 | x_header-existency EQ 'U' AND |
1205 | screen-name EQ vim_begdate_name. |
1206 | screen-input = '0'. |
1207 | ENDIF. |
1208 | ENDIF. |
1209 | IF status-action = aendern AND neuer <> 'J'. |
1210 | IF vim_set_from_bc_pbo <> space. |
1211 |
1212 | PERFORM vim_bc_logs_use USING vim_objfield |
1213 | vim_bc_entry_list_wa |
1214 | CHANGING screen |
1215 | dummyflag. |
1216 | ENDIF. |
1217 | ENDIF. |
1218 | ENDIF. "status-action EQ hinzufuegen OR status-action EQ kopieren. |
1219 | ENDIF. |
1220 | IF <xmark> EQ markiert AND <status>-mark_only = space. "ufdetail |
1221 | screen-intensified = '1'. |
1222 | ENDIF. |
1223 | IF vim_objfield <> space AND vim_object = x_header-maintview. |
1224 | LOOP AT x_namtab WHERE viewfield = vim_objfield AND |
1225 | ( texttabfld = space OR keyflag = space ). |
1226 | IF x_namtab-readonly = vim_hidden. |
1227 | screen-active = '0'. |
1228 | ELSEIF x_namtab-readonly = rdonly. |
1229 | screen-input = '0'. |
1230 | ENDIF. |
1231 | EXIT. |
1232 | ENDLOOP. |
1233 | ENDIF. ".. Subviews |
1234 | MODIFY SCREEN. |
1235 | ENDLOOP. |
1236 | ENDFORM. "vim_modify_detail_screen |