1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
REPORT zclear_globals. PARAMETERS progname TYPE program DEFAULT 'ZCLEAR_GLOBALS'. DATA: i TYPE i. START-OF-SELECTION. PERFORM clear_global_variables USING progname. FORM clear_global_variables USING progname TYPE program. DATA: lt_compo TYPE TABLE OF scompo, lt_cross_ref TYPE TABLE OF cross, lv_name TYPE string, lt_inc TYPE TABLE OF d010inc. FIELD-SYMBOLS: <fs_compo> TYPE scompo, <fs_any> TYPE any. CALL FUNCTION 'RS_PROGRAM_INDEX' EXPORTING pg_name = progname TABLES compo = lt_compo cross_ref = lt_cross_ref inc = lt_inc EXCEPTIONS syntax_error = 1 OTHERS = 2. CHECK sy-subrc = 0. LOOP AT lt_compo ASSIGNING <fs_compo> WHERE type = 'D'. " D - DATA. lv_name = |({ <fs_compo>-incl }){ <fs_compo>-name }|. ASSIGN (lv_name) TO <fs_any>. CHECK <fs_any> IS ASSIGNED. FREE <fs_any>. ENDLOOP. ENDFORM. "clear_global_variables |
Не чистит внутренние таблицы со строкой заголовка.
Устаревшее понятие, при желании можешь чуть поправить код 😉
Это я к тому что оператор FREE отработает скорей всего не всегда верно. А еще будет дамп, если названия переменных совпадут например с lt_compo.
В данном примере важна не столько реализация, сколько способ получения переменных (глобальных), что и как с ними делать, я думаю любой программист сообразит.