Eigenschaften | Quelltext
Titel | KOPIERE |
Originalsprache | DE | Deutsch
Erstellt | 27.10.1998 |  | SAP |
Letzte Änderung | 13.11.2001 |  | SAP |
Status | aktiv |
Attribute
Typ | Include-Programm |
Status | Testprogramm |
Anwendung | Basis (System) |
Paket | SVIM | Basis Viewmaintenance
| Editorsperre
txt
    1
    *---------------------------------------------------------------------*
    2
    *       FORM KOPIERE                                                  *
    3
    *---------------------------------------------------------------------*
    4
    * Kopieren als... und teilweise Gültigkeit abgrenzen                  *
    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
    *  ELSEIF <STATUS>-PROF_FOUND NE VIM_PR_INTO_DET.           "UFprofile
    17
    *    TITLE-ACTION = KOPIEREN.
    18
      ENDIF.
    19
    *  ASSIGN extract(x_header-keylen) TO <orig_key>.
    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
    *            WHERE mkey_bf EQ <vim_tot_mkey_before>.
    103
                IF vim_mkey_after_exists NE space.
    104
                  CHECK <vim_collapsed_key_afx> EQ <vim_tot_mkey_afterx>.
    105
    *              CHECK <vim_collapsed_key_af> EQ <vim_tot_mkey_after>.
    106
                ENDIF.
    107
                READ TABLE extract WITH KEY <vim_collapsed_keyx>
    108
    *            READ TABLE extract WITH KEY <vim_collapsed_key>
    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
    *                             WHERE mkey_bf EQ <vim_ext_mkey_before>.
    142
                IF vim_mkey_after_exists NE space.
    143
                  CHECK <vim_collapsed_key_afx> EQ <vim_ext_mkey_afterx>.
    144
    *              CHECK <vim_collapsed_key_af> EQ <vim_ext_mkey_after>.
    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
    * Detailbild
    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
    * copy mode
    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
    * delimit mode
    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
    *     IF <STATUS>-DISPL_MODE EQ EXPANDED OR SY-SUBRC NE 0.
    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
    *            READ TABLE vim_collapsed_mainkeys WITH KEY <vim_total_key>
    204
                                                 BINARY SEARCH
    205
                                                 TRANSPORTING NO FIELDS.
    206
                <vim_collapsed_keyx> = <vim_xtotal_key>.
    207
    *            vim_collapsed_mainkeys-mainkey = <vim_total_key>.
    208
                <vim_collapsed_mkey_bfx> = <vim_tot_mkey_beforex>.
    209
    *            vim_collapsed_mainkeys-mkey_bf = <vim_tot_mkey_before>.
    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.