Properties | SourceCde
Title |  |
Original language | DE | Englisch
Created | 13.01.1995 |  | SAP |
Last changed by | 13.11.2001 |  | SAP |
Status | Active |
Attributes
Type | INCLUDE program |
Status |  |
Application | Basis |
Package | SVIM | Basis View Maintenance
| Editor lock
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