Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member

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.