Korvax написал:
Хочется универсальное средство, которое можно потом использовать во всех программах, ФМ и т.д.
Как вам такое средство?
Code:
FORM init_globals.
DATA:
ls_fieldlist TYPE rfieldlist,
lt_fieldlist TYPE STANDARD TABLE OF rfieldlist.
FIELD-SYMBOLS:
<vartable> TYPE ANY TABLE,
<variable> TYPE ANY.
CALL FUNCTION 'GET_GLOBAL_SYMBOLS'
EXPORTING
program = sy-repid
* name_pattern = '*'
TABLES
fieldlist = lt_fieldlist .
LOOP AT lt_fieldlist INTO ls_fieldlist.
CHECK ls_fieldlist-name NE 'SYST'.
CHECK ls_fieldlist-name NE 'SY'.
CHECK ls_fieldlist-name NE 'RSJOBINFO'.
CHECK ls_fieldlist-name NE 'SCREEN'.
CHECK ls_fieldlist-name NE '%_PRINT'.
CHECK ls_fieldlist-name NE '%_ARCHIVE'.
CHECK ls_fieldlist-name NE '%_VIASELSCR'.
CHECK ls_fieldlist-name NE '%_SSCR[]'.
CHECK ls_fieldlist-name NE '%_SSCR'.
CHECK ls_fieldlist-name NE 'VARI'.
CHECK ls_fieldlist-type NE 'C'. " константа
CASE ls_fieldlist-type.
WHEN 'h'. " таблица
ASSIGN (ls_fieldlist-name) TO <vartable>.
CHECK sy-subrc EQ 0.
REFRESH <vartable>.
WHEN OTHERS.
ASSIGN (ls_fieldlist-name) TO <variable>.
CHECK sy-subrc EQ 0.
CLEAR <variable>.
ENDCASE.
ENDLOOP.
ENDFORM. "init_globals
Перечень очищаемых переменных не окончательный, возможно надо ещё как-то ограничить, чтобы не почистить системные переменные. Кстати, можно заточить, чтобы чистка переменных выполнялось не только в своей программе...