Properties SourceCde
txt
1
*---------------------------------------------------------------------*
2
*       MODULE DETAIL_INIT           OUTPUT                           *
3
*---------------------------------------------------------------------*
4
*       ........                                                      *
5
*---------------------------------------------------------------------*
6
MODULE detail_init OUTPUT.
7
  IF vim_called_by_cluster <> space.                        "SW CTRL ..
8
    PERFORM vim_vcldocking_control.
9
  ENDIF.                               ".. SW CTRL
10
  PERFORM vim_add_img_notices_pbo USING x_header-detail.
11
  PERFORM detail_init.
12
  IF ( replace_mode NE space AND
13
   neuer NE 'X' )         "no error in CHECK_KEY for timedep. objects
14
   OR vim_pr_activating <> space.                           "UF profile
15
    SUPPRESS DIALOG.
16
  ENDIF.
17
  PERFORM vim_modify_detail_screen.
18
ENDMODULE.                    "detail_init OUTPUT
19
 
20
*---------------------------------------------------------------------*
21
*       MODULE VIM_MODIF_DETAIL         OUTPUT                        *
22
*---------------------------------------------------------------------*
23
* Modifikation der Screen-Attribute für Tabstrip-Screens              *
24
*---------------------------------------------------------------------*
25
MODULE vim_modif_detail OUTPUT.
26
  PERFORM vim_modify_detail_screen.
27
ENDMODULE.                    "vim_modif_detail OUTPUT
28
 
29
*---------------------------------------------------------------------*
30
*       MODULE LISTE_SHOW_LISTE OUTPUT                                *
31
*---------------------------------------------------------------------*
32
*       ........                                                      *
33
*---------------------------------------------------------------------*
34
MODULE liste_show_liste OUTPUT.
35
** Table-control !!!   "bis der Fehler behoben ist
36
  IF vim_tabctrl_active NE space.
37
    IF <vim_tctrl>-current_line GT maxlines AND  "no more entries
38
       <xact> NE leer.                 "in EXTRACT and no new entry
39
      EXIT FROM STEP-LOOP.
40
    ENDIF.
41
  ENDIF.
42
** Table-control !!!
43
  looplines = sy-loopc.
44
  IF l GT looplines.
45
    counter = ( l - firstline ) div looplines + 1.
46
    DO counter TIMES.
47
      firstline = firstline + looplines - 1.
48
    ENDDO.
49
    MOVE firstline TO <status>-firstline.
50
    <status>-cur_line = l = l - firstline + 1.
51
    SET CURSOR FIELD f LINE l OFFSET o.
52
  ENDIF.
53
  IF vim_special_mode NE vim_upgrade AND
54
     status-action EQ hinzufuegen AND maxlines EQ 0 AND sy-stepl EQ 1.
55
    DESCRIBE TABLE extract.
56
    IF sy-tfill GT looplines.
57
      sy-tfill = looplines + 1.
58
      LOOP AT extract FROM sy-tfill.
59
        DELETE extract.
60
      ENDLOOP.
61
      nbr_of_added_dummy_entries = looplines.
62
    ENDIF.
63
  ENDIF.
64
* dataset from BC-set? --> get field parameters
65
  CLEAR vim_set_from_bc_pbo.
66
  IF replace_mode = space AND status-action = aendern
67
   AND vim_bc_chng_allowed = space.  "fix field changeability forced
68
    READ TABLE vim_bc_entry_list INTO vim_bc_entry_list_wa
69
     WITH TABLE KEY viewname = x_header-viewname
70
     keys = <vim_xextract_key>.
71
    IF sy-subrc = 0.
72
      vim_set_from_bc_pbo = 'X'.
73
    ENDIF.
74
  ENDIF.
75
  IF replace_mode NE space OR vim_special_mode EQ vim_delete."aro
76
    IF sy-stepl GT 1.
77
      EXIT FROM STEP-LOOP.
78
    ELSE.
79
      MOVE <vim_xtotal> TO <table2_x>.
80
    ENDIF.
81
  ENDIF.                                                    "aro
82
  index = exind = nextline.
83
  IF status-action EQ kopieren AND status-type EQ einstufig.
84
    READ TABLE vim_copied_indices WITH KEY level = vim_copy_call_level
85
                                           ex_ix = nextline.
86
    IF sy-subrc EQ 0.                  "entry already copied
87
      READ TABLE total INDEX vim_copied_indices-ix.
88
      extract = total. neuer = 'N'.
89
    ELSE.
90
      neuer = 'J'.
91
    ENDIF.
92
  ENDIF.
93
  PERFORM move_extract_to_view_wa.
94
  IF vim_special_mode EQ vim_delimit.
95
    MOVE vim_sval_tab-value TO <vim_new_begdate>.
96
  ENDIF.
97
  IF status-action EQ hinzufuegen AND status-type EQ einstufig AND
98
     neuer NE 'J' AND <xact> EQ leer.
99
    neuer = 'J'.
100
  ENDIF.
101
  IF <xmark> EQ markiert.
102
    MOVE 'X' TO vim_marked.
103
  ENDIF.
104
  LOOP AT SCREEN.
105
    CLEAR vim_modify_screen.
106
    SPLIT screen-name AT '-' INTO vim_object vim_objfield.
107
   IF ( status-action EQ anzeigen OR status-action EQ transportieren OR
108
           status-delete EQ geloescht ) AND screen-name NE 'VIM_MARKED'.
109
      screen-input = '0'. vim_modify_screen = 'X'.
110
    ELSE.
111
      IF screen-group1 EQ 'KEY'.
112
        IF vim_tabctrl_active NE space AND screen-input EQ '0'.
113
          READ TABLE <vim_tctrl>-cols INTO vim_tc_cols
114
                                       WITH KEY
115
                                            screen-name = screen-name
116
                                       TRANSPORTING screen-required.
117
          IF sy-subrc EQ 0 AND
118
             screen-required NE vim_tc_cols-screen-required.
119
            screen-required = vim_tc_cols-screen-required.
120
            vim_modify_screen = 'X'.
121
          ENDIF.
122
        ENDIF.
123
        IF screen-required NE 0 AND screen-input NE '0'.
124
          screen-input = '0'. vim_modify_screen = 'X'.
125
        ENDIF.
126
        IF vim_single_entry_function EQ 'INS'.
127
          screen-request = 1. vim_modify_screen = 'X'.
128
        ENDIF.
129
* int. mess. 1757218/1999: no foreign-key check with copy
130
        IF status-action = kopieren.
131
          screen-request = 1. vim_modify_screen = 'X'.
132
        ENDIF.
133
* int. mess. 1757218/1999: no foreign-key check with copy: end
134
      ENDIF.
135
*     IF NEUER EQ 'J' OR STATUS-ACTION EQ KOPIEREN.
136
      IF neuer EQ 'J'.
137
        IF vim_special_mode NE vim_delimit AND
138
           screen-group1 EQ 'KEY' AND
139
           ( vim_single_entry_function NE 'INS' OR
140
               vim_single_entry_ins_key_input NE space ) AND
141
           ( x_header-existency NE 'M' OR
142
             screen-name EQ vim_enddate_name ).
143
          ADD 1 TO pos.
144
          IF pos EQ 1.
145
            SET CURSOR FIELD screen-name LINE sy-stepl.
146
          ENDIF.
147
          screen-input = '1'. vim_modify_screen = 'X'.
148
        ENDIF.
149
        IF screen-name EQ 'VIM_MARKED'.
150
          screen-input = '0'. vim_modify_screen = 'X'.
151
        ELSE.
152
          IF <xact> = profil_hinzufuegen.
153
            READ TABLE vim_pr_fields_wa-fields WITH TABLE KEY
154
             fieldname = vim_objfield TRANSPORTING NO FIELDS.
155
            IF sy-subrc = 0.
156
              screen-request = 1. vim_modify_screen = 'X'.
157
            ENDIF.
158
          ENDIF.
159
          IF vim_special_mode EQ vim_upgrade AND function NE 'DELE'.
160
            IF <status>-prof_found = vim_pr_into_view "UFprofiles begin
161
             AND status-action = hinzufuegen AND screen-group1 = 'KEY'.
162
              PERFORM set_profile_key_attributes USING vim_objfield
163
                                                 CHANGING screen-input
164
                                                      vim_modify_screen.
165
            ENDIF.                     "UFprofiles end
166
            screen-request = 1. vim_modify_screen = 'X'.
167
          ENDIF.
168
        ENDIF.
169
      ELSE.
170
        IF x_header-delmdtflag NE space AND
171
           x_header-existency EQ 'U' AND
172
           screen-name EQ vim_begdate_name.
173
          screen-input = '0'. vim_modify_screen = 'X'.
174
        ENDIF.
175
        IF f EQ space AND screen-name NE 'VIM_MARKED' AND
176
           screen-input EQ '1'.
177
          SET CURSOR FIELD screen-name LINE l.
178
          f = screen-name.
179
        ENDIF.
180
        IF replace_mode NE space.
181
          CASE vim_special_mode.
182
            WHEN vim_replace.
183
              IF screen-name EQ sel_field_for_replace_l.
184
                screen-request = 1. vim_modify_screen = 'X'.
185
              ENDIF.
186
            WHEN vim_upgrade.
187
              IF NOT function IN exted_functions AND
188
                 screen-name NE 'VIM_MARKED'.
189
                screen-request = 1. vim_modify_screen = 'X'.
190
              ENDIF.
191
              screen-input = '1'. vim_modify_screen = 'X'.
192
          ENDCASE.
193
        ELSE.
194
          IF vim_special_mode EQ vim_delete.
195
            screen-input = '0'. vim_modify_screen = 'X'.
196
          ENDIF.
197
          IF vim_set_from_bc_pbo <> space AND screen-group1 <> 'KEY'.
198
* Dataset comes from BC-set -> check field parameter
199
            PERFORM vim_bc_logs_use USING    vim_objfield
200
                                             vim_bc_entry_list_wa
201
                                    CHANGING screen
202
                                             vim_modify_screen.
203
          ENDIF.
204
        ENDIF.                         "replace_mode <> space
205
      ENDIF.                           "neuer = 'J'
206
    ENDIF.                             "update mode
207
    IF <xmark> EQ markiert AND screen-name NE 'VIM_MARKED'.
208
      screen-intensified = 1. vim_modify_screen = 'X'.
209
    ENDIF.
210
    IF vim_special_mode EQ vim_delimit AND
211
       screen-name EQ vim_begdate_name.
212
      screen-request = 1. vim_modify_screen = 'X'.
213
    ENDIF.
214
*   IF X_HEADER-RDONLYFLAG = 'X' AND                      "Subviews ..
215
*      X_HEADER-MAINTVIEW <> X_HEADER-VIEWNAME.
216
    IF vim_objfield <> space AND vim_object = x_header-maintview.
217
      LOOP AT x_namtab WHERE viewfield = vim_objfield AND
218
                          ( texttabfld = space OR keyflag = space ).
219
        IF x_namtab-readonly = vim_hidden.
220
          screen-active = '0'. vim_modify_screen = 'X'.
221
        ELSEIF x_namtab-readonly = rdonly.
222
          screen-input = '0'. vim_modify_screen = 'X'.
223
        ENDIF.
224
        EXIT.
225
      ENDLOOP.
226
    ENDIF.
227
*   ENDIF.                                                  ".. Subviews
228
    IF vim_modify_screen = 'X'.
229
      MODIFY SCREEN.
230
    ENDIF.
231
  ENDLOOP.
232
  IF status-action EQ kopieren.
233
    neuer = 'N'.
234
  ENDIF.
235
ENDMODULE.                    "liste_show_liste OUTPUT
236
 
237
*---------------------------------------------------------------------*
238
*       MODULE LISTE_INITIALISIEREN OUTPUT                            *
239
*---------------------------------------------------------------------*
240
*       ........                                                      *
241
*---------------------------------------------------------------------*
242
MODULE liste_initialisieren OUTPUT.
243
  IF vim_called_by_cluster <> space.                        "SW CTRL ..
244
    PERFORM vim_vcldocking_control.
245
  ENDIF.                               ".. SW CTRL
246
  status-mode = list_bild.
247
  title-mode  = list_bild.
248
  firstline = nextline.
249
  aktuell = firstline.
250
  vim_act_dynp_view = x_header-viewname.
251
  PERFORM vim_add_img_notices_pbo USING x_header-liste.
252
  IF vim_special_mode EQ vim_direct_upgrade.
253
    SUPPRESS DIALOG.
254
    ok_code = function = 'CMPR'.
255
    EXIT.
256
  ENDIF.
257
  CLEAR <status>-mark_only.                                 "ufdetail
258
  IF replace_mode NE space OR vim_special_mode EQ vim_delete.
259
    PERFORM set_title USING title <name>.
260
    IF vim_special_mode NE vim_delete. SUPPRESS DIALOG. ENDIF.
261
    PERFORM set_pf_status USING 'REPLACE'.
262
    MOVE <table1> TO <vim_total_struc>.
263
*    MOVE <table1> TO total.
264
    IF x_header-bastab NE space AND x_header-texttbexst NE space.
265
      MOVE <table1_text> TO <vim_tot_txt_struc>.
266
    ENDIF.
267
** Table-control !!!
268
    IF vim_tabctrl_active NE space.
269
      IF status-action EQ hinzufuegen.
270
        <vim_tctrl>-lines = maxlines + nbr_of_added_dummy_entries.
271
      ELSE.
272
        <vim_tctrl>-lines = maxlines.
273
      ENDIF.
274
      <vim_tctrl>-top_line = firstline.
275
      LOOP AT <vim_tctrl>-cols INTO vim_tc_cols
276
                               WHERE screen-active EQ 0.
277
        vim_tc_cols-vislength = 0.
278
        MODIFY <vim_tctrl>-cols FROM vim_tc_cols.
279
      ENDLOOP.
280
    ENDIF.
281
    EXIT.
282
  ENDIF.
283
  IF mark_extract GT 0.
284
    status-mark = markiert.
285
  ELSE.
286
    status-mark = nicht_markiert.
287
  ENDIF.
288
  IF maxlines EQ 0.
289
    IF status-action NE hinzufuegen
290
    OR status-type NE einstufig.
291
      PERFORM fill_extract.
292
    ELSE.                                                   "aro
293
      title-data = auswahldaten.                            "aro
294
    ENDIF.                                                  "aro
295
    status-delete = nicht_geloescht.
296
    PERFORM vim_send_sv005_or_sv766 USING '766'
297
                                          'RESET'.
298
  ELSEIF maxlines = 1 AND function <> 'UEBE'.
299
* Viewcluster: jump into single screen also if view is chosen for
300
* the 2nd time
301
    PERFORM vim_maintain_single_set.         "UFint2329966/2000
302
* Notlösung Sortproblem Hinzufügen Anfang
303
  ELSE.
304
    PERFORM vim_send_sv005_or_sv766 USING '766'
305
                                          'RESET'.
306
    IF status-action EQ hinzufuegen.
307
      pos = 1.
308
      LOOP AT extract.
309
        CHECK <xact> NE leer.
310
        IF sy-tabix NE pos.
311
          DELETE extract.
312
          INSERT extract INDEX pos.
313
        ENDIF.
314
        ADD 1 TO pos.
315
      ENDLOOP.
316
    ENDIF.
317
* Notlösung Sortproblem Hinzufügen Ende
318
  ENDIF.
319
  maximal = maxlines.
320
** Table-control !!!
321
  IF vim_tabctrl_active NE space.
322
    IF status-action EQ hinzufuegen.
323
      <vim_tctrl>-lines = maxlines + nbr_of_added_dummy_entries.
324
    ELSE.
325
      <vim_tctrl>-lines = maxlines.
326
    ENDIF.
327
    <vim_tctrl>-top_line = firstline.
328
    LOOP AT <vim_tctrl>-cols INTO vim_tc_cols
329
*                            WHERE SCREEN-INVISIBLE EQ 1
330
*                              OR  SCREEN-ACTIVE EQ 0.
331
                             WHERE screen-active EQ 0.
332
      vim_tc_cols-vislength = 0.
333
      MODIFY <vim_tctrl>-cols FROM vim_tc_cols.
334
    ENDLOOP.
335
* Notlösung Markierbarkeit beim Hinzufügen bzw. Kopieren
336
*   IF STATUS-ACTION EQ HINZUFUEGEN OR STATUS-ACTION EQ KOPIEREN.
337
*     <VIM_TCTRL>-LINE_SEL_MODE = 0.
338
*   ELSE.
339
**    <VIM_TCTRL>-LINE_SEL_MODE = 2.
340
*     <VIM_TCTRL>-LINE_SEL_MODE = <STATUS>-L_SEL_MODE.
341
*   ENDIF.
342
  ELSE.                                "Subviews ..
343
    LOOP AT SCREEN.
344
      SPLIT screen-name AT '-' INTO vim_object vim_objfield.
345
      IF vim_objfield <> space AND vim_object = x_header-maintview.
346
        LOOP AT x_namtab WHERE viewfield = vim_objfield AND
347
                            ( texttabfld = space OR keyflag = space ).
348
          IF x_namtab-readonly = vim_hidden.
349
            screen-active = '0'. MODIFY SCREEN.
350
          ELSEIF x_namtab-readonly = rdonly.
351
            screen-input = '0'. MODIFY SCREEN.
352
          ENDIF.
353
          EXIT.
354
        ENDLOOP.
355
      ENDIF.
356
    ENDLOOP.                           ".. Subviews
357
  ENDIF.
358
** Table-control !!!
359
  PERFORM set_position_info USING firstline maxlines.
360
  pos = maxlines - firstline + 1.
361
  IF l GT pos.
362
    l = 1.
363
  ENDIF.
364
  pos = 0.                                                  "aro
365
  SET CURSOR FIELD f LINE l OFFSET o.
366
  PERFORM set_pf_status USING status.
367
  PERFORM set_title USING title <name>.
368
* Notlösung Batch-Input Anfang
369
  IF maxlines EQ 0.
370
    LOOP AT SCREEN.
371
      CHECK screen-name EQ 'VIM_POSI_PUSH'.
372
      screen-input = 0.
373
      MODIFY SCREEN.
374
      EXIT.
375
    ENDLOOP.
376
  ENDIF.
377
* Notlösung Batch-Input Ende
378
  IF status-action EQ kopieren OR vim_single_entry_function NE space.
379
    LOOP AT SCREEN.
380
      CHECK screen-name EQ 'VIM_POSI_PUSH'.
381
      screen-active = 0.
382
      MODIFY SCREEN.
383
      EXIT.
384
    ENDLOOP.
385
  ENDIF.
386
ENDMODULE.                    "liste_initialisieren OUTPUT
387
 
388
*---------------------------------------------------------------------*
389
*       MODULE FILL_SUBSTFLDS OUTPUT                                  *
390
*---------------------------------------------------------------------*
391
*       ........                                                      *
392
*---------------------------------------------------------------------*
393
MODULE fill_substflds OUTPUT.
394
  CHECK x_header-subsetflag NE space.
395
  PERFORM fill_subsetfields.
396
ENDMODULE.                    "fill_substflds OUTPUT
397
 
398
*---------------------------------------------------------------------*
399
*       MODULE LISTE_DEACTIVATE OUTPUT                                *
400
*---------------------------------------------------------------------*
401
*       ........                                                      *
402
*---------------------------------------------------------------------*
403
MODULE liste_deactivate OUTPUT.
404
  CHECK <xact> NE leer AND status-action NE kopieren.
405
  LOOP AT SCREEN.
406
    CHECK screen-group2 EQ 'EZN' .
407
    IF x_header-ptfrkyexst EQ space.
408
      MOVE screen-name TO f.
409
      SHIFT f UP TO '-'. SHIFT f.
410
      LOOP AT x_namtab WHERE keyflag EQ space  "ignore keyfields
411
                         AND viewfield EQ f.
412
        MOVE 'X' TO x_namtab-prtfrkyfld.
413
        MOVE 'X' TO x_header-ptfrkyexst.
414
        MODIFY x_namtab.
415
      ENDLOOP.
416
    ENDIF.
417
    CHECK sy-stepl NE 1 AND
418
    <vim_f1_beforex> EQ <vim_mkey_beforex> AND
419
    ( vim_mkey_after_exists EQ space OR
420
      <vim_f1_afterx> EQ <vim_mkey_afterx> ).
421
*    <vim_f1_before> eq <vim_mkey_before> and
422
*    ( vim_mkey_after_exists eq space or
423
*      <vim_f1_after> eq <vim_mkey_after> ).
424
    screen-active = 0.
425
    MODIFY SCREEN.
426
  ENDLOOP.
427
  MODIFY x_header INDEX 1.
428
  IF vim_no_mainkey_exists EQ vim_no_mkey_not_procsd OR
429
    <vim_f1_beforex> NE <vim_mkey_beforex> OR
430
    ( vim_mkey_after_exists NE space AND
431
      <vim_f1_afterx> NE <vim_mkey_afterx> ).
432
*     <vim_f1_before> ne <vim_mkey_before> or
433
*     ( vim_mkey_after_exists ne space and
434
*       <vim_f1_after> ne <vim_mkey_after> ).
435
    <vim_h_mkey>(x_header-keylen) = <f1_x>.
436
*    vim_mainkey = <f1>.
437
    TRANSLATE vim_no_mainkey_exists USING vim_no_mkey_procsd_patt.
438
  ENDIF.
439
ENDMODULE.                             "liste_deactivate.
440
 
441
*---------------------------------------------------------------------*
442
*       MODULE VIM_SUPPRESS_LISTE OUTPUT                              *
443
*---------------------------------------------------------------------*
444
*       ........                                                      *
445
*---------------------------------------------------------------------*
446
MODULE vim_suppress_liste OUTPUT.
447
  CHECK vim_special_mode <> vim_direct_upgrade AND
448
        function NE space AND function NE 'ANZG' AND
449
        function NE 'AEND' AND "function NE 'ABR ' AND
450
        NOT ( vim_called_by_cluster NE space AND
451
             ( function CP 'DET*' OR  function CP '%_*' ) ).
452
  SUPPRESS DIALOG.
453
  ok_code = back.
454
ENDMODULE.                             "vim_suppres_liste