Properties | SourceCde
Title |  |
Original language | DE | Englisch
Created | 27.10.1998 |  | SAP |
Last changed by | 01.07.2002 |  | SAP |
Status | Active |
Attributes
Type | INCLUDE program |
Status | Test program |
Application | Basis |
Package | SVIM | Basis View Maintenance
| Editor lock
txt
    1
    *---------------------------------------------------------------------*
    2
    *       FORM VIM_EXTERNAL_EDIT                                        *
    3
    *---------------------------------------------------------------------*
    4
    *       ........                                                      *
    5
    *---------------------------------------------------------------------*
    6
    FORM vim_external_edit.
    7
      TYPES: vee_sellist LIKE vimsellist OCCURS 10.
    8
      DATA: ee_rc TYPE i, upd_flags(3) TYPE c, del_flags(3) TYPE c,
    9
          h_flag(1) TYPE c, repmode_safe(1) TYPE c, specmode_safe(1) TYPE c,
    10
            extmode_safe(1) TYPE c, vee_results LIKE vimmodres, h_ix TYPE i.
    11
      FIELD-SYMBOLS: <h_sellist> TYPE vee_sellist, <hf> TYPE ANY.
    12
    13
      IF maint_mode EQ anzeigen.
    14
        vee_results-rc_udl = vee_results-rc_ins = vee_results-rc_upd =
    15
        vee_results-rc_del = vee_results-rc_tin = vee_results-rc_del = 8.
    16
        vim_results_of_ext_mod = vee_results.
    17
        EXIT.
    18
      ENDIF.
    19
      MOVE: aendern TO upd_flags, neuer_eintrag TO upd_flags+1,
    20
            kopieren TO upd_flags+2,
    21
            geloescht TO del_flags, update_geloescht TO del_flags+1,
    22
            neuer_geloescht TO del_flags+2.
    23
      repmode_safe = replace_mode. replace_mode = 'X'.
    24
      specmode_safe = vim_special_mode. vim_special_mode = vim_upgrade.
    25
      extmode_safe = vim_external_mode. vim_external_mode = 'X'.
    26
      maxlines = 1.
    27
      clear <status>-bcfixdelinfosent.
    28
      LOOP AT extract.
    29
        IF <xact> EQ zurueckholen.
    30
          h_flag = status-delete. status-delete = geloescht.
    31
          PERFORM vim_mark_and_process USING sy-tabix 'UNDO'
    32
                                             vee_results-nbr_of_udl
    33
                                             vee_results-rc_udl.
    34
          status-delete = h_flag.
    35
          ee_rc = vee_results-rc_udl.
    36
        ELSEIF <xact> CO upd_flags.
    37
          IF <xact> EQ kopieren.
    38
            h_ix = sy-tabix + 1.
    39
            vim_extcopy_mode = 'X'.
    40
            <xact> = neuer_eintrag.
    41
            ASSIGN <vim_ck_sellist> TO <h_sellist>.
    42
            LOOP AT <h_sellist> INTO dpl_sellist
    43
                                WHERE value EQ space AND initial EQ space.
    44
    * check if sellist is filled completely & fill it if not
    45
              READ TABLE x_namtab INDEX dpl_sellist-tabix.
    46
              IF sy-subrc EQ 0.
    47
                IF x_header-bastab = space.
    48
    * view
    49
                  ASSIGN COMPONENT x_namtab-viewfield
    50
                   OF STRUCTURE <vim_total_struc> TO <hf>.
    51
                ELSE.
    52
                  IF x_namtab-texttabfld NE space.
    53
    * Type S: text field
    54
                    ASSIGN COMPONENT x_namtab-viewfield
    55
                     OF STRUCTURE <vim_ext_txt_struc> TO <hf>.
    56
                  ELSE.
    57
    * Type S: key field
    58
                    ASSIGN COMPONENT x_namtab-viewfield
    59
                     OF STRUCTURE <vim_extract_struc> TO <hf>.
    60
                  ENDIF.
    61
                ENDIF.
    62
    *            ASSIGN TOTAL+X_NAMTAB-POSITION(X_NAMTAB-FLENGTH) TO <HF>.
    63
                READ TABLE extract INTO total INDEX h_ix.
    64
                dpl_sellist-value = <hf>.
    65
                IF <hf> EQ space. dpl_sellist-initial = 'X'. ENDIF.
    66
                CLEAR dpl_sellist-converted.
    67
                MODIFY <h_sellist> FROM dpl_sellist.
    68
              ENDIF.
    69
            ENDLOOP.
    70
          ENDIF.
    71
          h_flag = <xact>.
    72
          PERFORM vim_modify_view_entry USING sy-tabix ee_rc.
    73
          CLEAR vim_extcopy_mode.
    74
          DELETE extract.                                       "190298
    75
          IF ee_rc EQ 0.
    76
            IF h_flag EQ neuer_eintrag.
    77
              ADD 1 TO vee_results-nbr_of_ins.
    78
            ELSE.
    79
              ADD 1 TO vee_results-nbr_of_upd.
    80
            ENDIF.
    81
          ELSE.
    82
            IF h_flag EQ neuer_eintrag.
    83
              vee_results-rc_ins = ee_rc.
    84
            ELSE.
    85
              vee_results-rc_upd = ee_rc.
    86
            ENDIF.
    87
          ENDIF.
    88
        ELSEIF <xact> CO del_flags.
    89
          PERFORM vim_mark_and_process USING sy-tabix 'DELE'
    90
                                             vee_results-nbr_of_del
    91
                                             vee_results-rc_del.
    92
          ee_rc = vee_results-rc_del.
    93
        ELSEIF <xact> EQ task_add.
    94
          PERFORM vim_mark_and_process USING sy-tabix 'TRIN'
    95
                                             vee_results-nbr_of_tin
    96
                                             vee_results-rc_tin.
    97
          ee_rc = vee_results-rc_tin.
    98
        ELSEIF <xact> EQ task_del.
    99
          PERFORM vim_mark_and_process USING sy-tabix 'TREX'
    100
                                             vee_results-nbr_of_tex
    101
                                             vee_results-rc_tex.
    102
          ee_rc = vee_results-rc_tex.
    103
        ENDIF.
    104
        IF ee_rc EQ 8. EXIT. ENDIF.
    105
        IF <status>-bcfixdelinfosent EQ 'X'.
    106
          <status>-bcfixdelinfosent = 'Y'.
    107
        ENDIF.
    108
      ENDLOOP.
    109
      clear <status>-bcfixdelinfosent.
    110
      vim_results_of_ext_mod = vee_results.
    111
    * CLEAR: REPLACE_MODE, VIM_SPECIAL_MODE, VIM_EXTERNAL_MODE.
    112
      replace_mode = repmode_safe. vim_special_mode = specmode_safe.
    113
      vim_external_mode = extmode_safe.
    114
    ENDFORM.                               "external_edit