MODIFY - Change a database table
Variants
1. MODIFY dbtab. or
MODIFY *dbtab. or
MODIFY (dbtabname) ... . .
2. MODIFY dbtab FROM TABLE itab. or
MODIFY (dbtabname) FROM TABLE itab.
3. MODIFY dbtab VERSION vers. or
MODIFY *dbtab VERSION vers.
Effect
Inserts new lines or updates existing lines in a
database table . If a line with the specified
primary key already exists, an
INSERT is executed. Otherwise, an
UPDATE is performed. You can specify the name of the
database table either in the program itself in the form MODIFY
dbtab ... or at runtime as the contents of the field
dbtabname in the form MODIFY (dbtabname) ... . In both
cases, the database table must be defined in the ABAP/4 Dictionary. If
the program contains the name of the database table, it must also have
a corresponding TABLES statement. Normally, records
are inserted or updated only in the current client. Data can only be
inserted or updated using a view , if the view refers to
a single table and was created in the ABAP/4 Dictionary with the
maintenance status "No restriction".
MODIFY belongs to the Open SQL command set.
When the statement has been executed, the system field SY-DBCNT
contains the number of edited lines.
The return code value is set as follows:
SY-SUBRC = 0
All lines were successfully inserted or updated. Any
other result causes a runtime error.
Notes
Automatic definition of INSERT and UPDATE
is expensive. You should therefore use MODIFY only if you cannot
define the INSERT and UPDATE cases yourself in the program.
Since the MODIFY statement does not perform
authority checks , you have to program
them yourself.
Variant 1
MODIFY dbtab. or
MODIFY *dbtab. or
MODIFY (dbtabname) ... .
Additions
1. ... FROM wa
2. ... CLIENT SPECIFIED
Effect
Inserts a new line or updates an existing line in a
database table. If you specify the name of the database table yourself,
the primary key for identifying the line to be inserted or updated and
the relevant values are taken from the table work area dbtab or
*dbtab (see TABLES ). If the name of the
database table is not determined until runtime, you need to use the
addition ... FROM wa .
Example
Insert or change data of the customer Robinson in the
current client:
-
TABLES SCUSTOM.
SCUSTOM-ID = '12400177'.
SCUSTOM-NAME = 'Robinson'.
SCUSTOM-POSTCODE = '69542'.
SCUSTOM-CITY = 'Heidelberg'.
SCUSTOM-CUSTTYPE = 'P'.
SCUSTOM-DISCOUNT = '003'.
SCUSTOM-TELEPHONE = '06201/44889'.
MODIFY SCUSTOM.
Addition 1
... FROM wa
Effect
The values for the line to be inserted or upodated are
not taken from the table work area dbtab , but from the
explicitly specified work area wa . When doing this, the data is
read from left to right according to the structure of the table
work area dbtab (see TABLES ). Since the
structure of wa is not taken into account, the work area
wa must be at least as wide (see DATA ) as the
table work area dbtab and the alignment of
the work area wa must correspond to the alignment of the table
work area. Otherwise, a runtime error occurs.
Note
If a work area is not explicitly specified, the values for
the line to be inserted or updated are also taken from the table work
area dbtab if the statement is in a FORM
or FUNCTION where the table work area is
storeed in a formal parameter or local variable of the same name.
Addition 2
... CLIENT SPECIFIED
Effect
Switches off automatic client handling. This allows you
to edit data across all clients even when dealing with client-specific
tables. The client field is treated like a normal table field that can
be programmed to accept values in the table work area dbtab or
*dbtab where the line to be edited occurs.
The addition CLIENT SPECIFIED must be specified immediately
after the name of the database table.
Variant 2
MODIFY dbtab FROM TABLE itab. or
MODIFY (dbtabname) FROM TABLE itab.
Addition
... CLIENT SPECIFIED
Effect
Mass modify: Inserts new lines or updates existing lines
of a database table. The primary keys for identifying the lines to be
inserted or updated and the relevant values are taken from the internal
table itab . The lines of the internal table itab must
satisfy the same conditions as the work area wa in addition 1 to
variant 1.
Note
If the internal table itab is empty,
SY-SUBRC and SY-DBCNT are set to 0.
Addition
... CLIENT SPECIFIED
Effect
As for variant 1.
Variant 3
MODIFY dbtab VERSION vers. or
MODIFY *dbtab VERSION vers.
Note
This variant is obsolete .
Effect
Inserts a new line or updates an existing line in a
database table, the name of which is taken from the field vers
at runtime. If no line exists with the specified primary key, an INSERT
is executed. Otherwise, an UPDATE is performed. The database table must
be defined in the ABAP/4 Dictionary and its name must conform to the
naming conventions for R/2 ATAB tables. These stipulate that the name
must begin with 'T' and may contain up to four further characters. The
field vers must contain the table name without the leading 'T'.
Only lines in the current client are inserted or updated. The line to
be inserted is taken from the statically specified table work area
dbtab or *dbtab .
SY-SUBRC is set to 0 if the line is successfully inserted or
updated. SY-SUBRC <> 0 is not possible since any other result
causes a runtime error.
Index
© SAP AG 1996