Original of this article is at (oprsteny.com)

If you want to create a variable during runtime knowing only the reference table name and its field name (in string form), you can achieve it following the code presented in this article

data:
* Names of the table and its field
  g_tabname type tabname,
  g_fieldname type fieldname,

* Data references to table and its field
  gr_data_line type ref to data,
  gr_data_field type ref to data,

* Testing values
  g_test_value1 type char255 value '2021_error',
  g_test_value2 type char255 value '2021'.

FIELD-SYMBOLS:
  <fs_table_line> type any,
  <fs_table_line_field> type any.

* We want to create dynamic variable of type MARC-WERKS
g_tabname = 'MARC'.
g_fieldname = 'WERKS'.

*Create dynamic line of given table name
CREATE DATA gr_data_line TYPE (g_tabname).
ASSIGN gr_data_line->* to <fs_table_line>.

*Get reference to the required field
ASSIGN COMPONENT g_fieldname  OF STRUCTURE <fs_table_line> to <fs_table_line_field>.
CHECK sy-subrc = 0.

*Create dynamic variable with the same "structure" like the table field
CREATE DATA gr_data_field LIKE <fs_table_line_field>.

*Validation of data entered (not using either check or value table)
*just to make sure the value entered is accepted
<fs_table_line_field> = g_test_value1.
if <fs_table_line_field> = g_test_value1.
  write:/ 'OK'.
else.
  write:/ 'Error'.
endif.

<fs_table_line_field> = g_test_value2.
if <fs_table_line_field> = g_test_value2.
  write:/ 'OK'.
else.
  write:/ 'Error'.
endif.
To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply