ABAP Keyword Documentation → ABAP − Reference → program editing → Dynamic Program Editing → ABAP Source Code
INSERT REPORT
Other versions: 7.31 | 7.40 | 7.54
Syntax
INSERT REPORT prog FROM itab
[MAXIMUM WIDTH INTO wid]
{ [KEEPING DIRECTORY ENTRY]
| { [PROGRAM TYPE pt]
[FIXED-POINT ARITHMETIC fp]
[VERSION vs] }
| [DIRECTORY ENTRY dir] }.
Extras
1. ... MAXIMUM WIDTH INTO wid
2. ... KEEPING DIRECTORY ENTRY
3. ... PROGRAM TYPE pt
4. ... FIXED-POINT ARITHMETIC fp
5. ... VERSION vs
6. ... DIRECTORY ENTRY dir
Effect
This statement passes the content of itab
to the ABAP program specified in prog
in the
repository as source code.
If a program with the specified name already exists, its source code is overwritten. Otherwise a new
program with the name specified in prog
and the source code from itab
is created in the repository.
The additions for specifying the program attributes create the program attributes in the system table TRDIR.
If none of the additions are specified, the following default values are set when a new program is created:
- The original language is set to the system language stored in the profile parameter zcsa/system_language.
- The creation date and the date of last change, along with the corresponding time, are set to the current values.
- The program author last changed by attributes are set to the current user.
- The program status is set to active by default. The program is compiled when it is first executed.
- The program type is set to executable program.
- The application is set to the value of the current program.
- No logical database is connected with the program.
- Fixed point arithmetic is activated.
-
The setting for the ABAP language version is taken from the current program.
If none of the additions are specified, an existing programs attributes remain intact if it is overwritten, but with the following exceptions:
- The date and time of the last change are set to the current value.
- The last changed by attribute is set to the current user.
- The version number is increased by one.
-
The ABAP language version is set as follows:
- If the current program is from ABAP language version Standard ABAP (Unicode), the overwritten program is always set to this language version.
- The statement
INSERT REPORT
cannot currently be used in other ABAP language versions.
For itab
, only a standard table without
secondary table keys
is permitted. The row type of itab
must be character-like. A line of source
code in itab
can have no more than 255 characters (if the row type has a
fixed length, trailing blanks are ignored). prog
must be a character-like
flat data object, which can contain no more than 30 characters, and the content of which is not case-sensitive.
System Fields
sy-subrc | Meaning |
---|---|
0 | The program specified in prog was successfully created or overwritten. |
4 | An error occurred when creating or overwriting the program specified in prog . |
Security Note
If used wrongly, dynamic programming techniques can present a serious security risk. Any dynamic content
that is passed to a program from the outside must be checked thoroughly or escaped before being used
in dynamic statements. This can be done using the system class CL_ABAP_DYN_PRG or the predefined function escape
. See
ABAP Command Injections.
Notes
-
The statement
INSERT REPORT
must be used with extreme caution, because it can completely overwrite existing programs without warning. Any inadvertent overwriting can be prevented by checking whether the specified name already exists in the NAME column of the system table TRDIR. -
If
INSERT REPORT
is used to create a new program, this program is not assigned to a package, which means it is not connected to the Change and Transport System (CTS). The program must either be assigned to a package in ABAP Workbench or it is only suitable for temporary tasks in the current system. -
It is vital to have a precise working knowledge of the programs' structures and names if using the statement
INSERT REPORT
for programs organized in a master program and using include programs (if created in ABAP Workbench). - The program name that is created should comply with the naming conventions of ABAP Workbench if it is to be processed using the tools in the workbench.
-
INSERT REPORT
should be used in application programs in exceptional cases only. ABAP provides many other means of dynamic programming, which generally make creating source code dynamically unnecessary (see the list in dynamic program processing).
Addition 1
... MAXIMUM WIDTH INTO wid
Effect
If the addition MAXIMUM WIDTH
is used, the number of characters of the longest
source code line in itab
is assigned to the variable wid
, which must have data type i
.
Addition 2
... KEEPING DIRECTORY ENTRY
Effect
This addition is only effective when a program is overwritten. The statement behaves as if no additions are specified (see above), with the exception that the ABAP language version remains intact in the overwritten program.
Addition 3
... PROGRAM TYPE pt
Effect
This addition defines the program
type of the new or overwritten program in accordance with the content of pt
.
pt
must be a data object of data type c
with length
1 that contains a valid ID for a program type. The following table shows the case-sensitive IDs of all ABAP program types.
ID | Program Type |
---|---|
1 | Executable program |
F | Function group or function pool |
I | Include program |
J | Interface pool |
K | Class pool |
M | Module pool |
S | Subroutine pool |
T | Type group or type pool |
Addition 4
... FIXED-POINT ARITHMETIC fp
Effect
This addition defines the
fixed point arithmetic property of the new or overwritten program in accordance with the content
of fp
. fp
must be a data object of data type
c with length 1 that contains either the value "X" or " ". The value "X" sets the fixed point arithmetic attribute, while the value " " deactivates it.
Addition 5
... VERSION vs
Effect
This addition specifies the ABAP language version for
the new or overwritten program in accordance with the content of vs
.
vs must be a data object of data type c
with a length of 1, which can have the following values as version ID:
vs | ABAP Language Version | Meaning |
---|---|---|
X | Standard ABAP (Unicode) | Basic version, Unicode check activated |
2 | ABAP for Key Users | Restricted language scope for enhancements by key users |
3 | Static ABAP with restricted object use | Restricted use of external repository objects and dynamic language elements are not permitted |
4 | Standard ABAP with restricted object use | Restricted use of external repository objects and dynamic language elements are permitted |
5 | ABAP for SAP Cloud Platform | Restricted language scope for developments in the SAP Cloud Platform. |
- | Non-Unicode ABAP | Obsolete, Unicode check deactivated |
Technically, the addition supplies the column UCCHECK of database table TRDIR. Values other than the ones shown here should not be specified. If incorrect values are specified as a literal and this is known statically, a syntax error occurs. Unknown values, on the other hand, are always saved in the database table TRDIR. Values not contained in the above table act as a version that does not support language elements.
Addition 6
... DIRECTORY ENTRY dir
Effect
This addition defines the program
attributes for the new or overwritten program in accordance with the content of dir
.
dir
must be a structure of data type TRDIR from
ABAP Dictionary. The required program attributes can be specified in the components of this structure.
Invalid content produces invalid program attributes. All program attributes are obtained from
dir, with the exception of the creation and change dates, and the corresponding times, program
authors or last changed by attributes, and the version numbers. The latter are set to the same values as if nothing were specified.
Note
When using the addition DIRECTORY ENTRY
, it is strongly recommended that
the content of structure dir
is set only by reading the attributes of an existing program from database table TRDIR, and subsequently making specific changes to individual components.
Example
Switches parts of a program to Unicode. A program with the obsolete language version
Non-Unicode ABAP is imported and the statement DESCRIBE FIELD
is switched to the syntax for
Unicode systems as an example. The source code of the program is then overwritten with the modified source code and the
ABAP language version is set to
Standard ABAP (Unicode).
DATA: itab TYPE TABLE OF string,
prog TYPE sy-repid,
uc TYPE trdir-uccheck.
FIELD-SYMBOLS <line> TYPE string.
prog = ...
SELECT SINGLE uccheck
FROM trdir
WHERE name = @prog AND
uccheck = ' '
INTO (@uc).
IF sy-subrc = 0.
READ REPORT prog INTO itab.
LOOP AT itab ASSIGNING <line>.
TRANSLATE <line> TO UPPER CASE.
IF <line> CS 'DESCRIBE FIELD' AND
<line> CS 'LENGTH' AND
<line> NS 'MODE'.
REPLACE '.' IN <line> WITH ' IN CHARACTER MODE.'.
ENDIF.
...
ENDLOOP.
SYNTAX-CHECK FOR itab ...
IF sy-subrc = 0.
INSERT REPORT prog FROM itab VERSION 'X'.
ENDIF.
ENDIF.
Exceptions
Handleable Exceptions
CX_SY_WRITE_SRC_LINE_TOO_LONG
-
Cause: A line in the source code contains more than 255 characters.
Runtime error:INSERT_REPORT_LINE_TOO_LONG
Non-Handleable Exceptions
-
Cause: The program name
prog
begins with'%_T'
. This prefix is reserved for temporary subroutine pools.
Runtime error:INSERT_PROGRAM_INTERNAL_NAME
-
Cause: The program name
prog
begins with a blank. This is not permitted.
Runtime error:INSERT_PROGRAM_NAME_BLANK
-
Cause: The program name
prog
is too long; it can be no more than 40 characters long.
Runtime error:INSERT_PROGRAM_NAME_TOO_LONG
-
Cause: Suffix 2 in the program name
prog
is invalid or does not correspond to the specificationapptype
.
Runtime error:INSERT_REPORT_BAD_APPENDAGE
-
Cause: The specification
apptype
is invalid. Valid values are defined in the type group SREXT.
Runtime error:INSERT_REPORT_BAD_APPTYPE
-
Cause: Suffix 2 in the program name
prog
is invalid or does not correspond to the specificationexttype
.
Runtime error:INSERT_REPORT_BAD_EXTENSION
-
Cause: The specification
exttype
is invalid. Valid values are defined in the type group SREXT.
Runtime error:INSERT_REPORT_BAD_EXTTYPE
-
Cause: The value of the field
uc
is not'X'
or' '
.
Runtime error:INSERT_REPORT_ILLEGAL_FLAG
-
Cause: The value of the field
pt
is not '1','I'
,'S'
,'M'
,'F'
,'J'
, or'K'
.
Runtime error:INSERT_REPORT_ILLEGAL_PROGTYPE
-
Cause: The program name
prog
is longer than 30 characters and the program does not yet exist in the library. Without the addition... APPENDAGE TYPE apptype
, the program cannot be inserted.
Runtime error:INSERT_REPORT_NO_APPTYPE
-
Cause: The program name
prog
is longer than 30 characters and the program does not yet exist in the library. Without the addition... EXTENSION TYPE exttype
, the program cannot be inserted.
Runtime error:INSERT_REPORT_NO_EXTTYPE