Большинство языков программирования высокого уровня позволяют определять несколько функций с одинаковыми названиями в одной области. Язык ABAP такую возможность нам не предоставляет. Однако, ее можно имитировать используя Generic Types и RTTS.
Читать дальше…
Заполнение справочных полей таблицы по ключу
Пусть у нас имеется внутренняя таблица, размерность которой может составлять как десяток строк, так и сотни тысяч строк
1 2 3 4 5 6 7 8 9 10 |
DATA: BEGIN OF lt_tab OCCURS 0, bukrs LIKE t001-bukrs, " БЕ bukrs_txt LIKE t001-butxt, " Наименование БЕ werks LIKE t001w-werks, " Завод werks_txt LIKE t001w-name1, " Наименование завода matnr LIKE makt-matnr, " Материал matnr_txt LIKE makt-maktx, " Наименование материала dmbtr TYPE tslxx, " Сумма END OF lt_tab. |
Поля таблицы можно классифицировать на справочные и не справочные. К первой группе относятся: bukrs_txt, werks_txt, matnr_txt. Ко второй остальные. Для каждого справочного поля имеется соответствующий ключ, по которому можно однозначно определить значение справочного поля. Например, ключом поля bukrs_txt будет bukrs, т.к. для определения наименования БЕ необходимо знать код БЕ. Как правило, заполнение справочных полей значениям происходит в последнюю очередь.
Задача: заполнить справочные поля по соответствующим ключам, используя при этом минимальные ресурсные затраты.
Читать дальше…
Динамическая проверка процедуры на существование
Сразу скажу что такая задача возникает крайне редко. Проверить процедуру на существование можно путем ее вызова и анализа последующего исключения. Вызов процедуры осуществляется командой PERFORM (proc) IN PROGRAM (prog), а чтобы при вызове не выполнять ее код, необходимо вызвать ее с заведомо ложной сигнатурой.
Читать дальше…