• Авторизация


Программирование в ABAP 09-06-2005 17:34 к комментариям - к полной версии - понравилось!


1). R/3 Data Dictionary (DDIC) - DDIC существует поверх RDBMS. Первоначально, созданные объекты (tables, structures, views) сохраняются в DDIC в независимом от RDBMS виде, и только потом, когда они потребуются для исполнения, они транслируются в RDBMS-dependent format. Т.о. DDIC делает объекты вашей программы независимыми от базы данных.


2). Work Areas (wa) - в некоторой степени wa аналогична блоку аллокированной памяти. Чтобы это пояснить, рассмотрим след. код :


1 report z_wa.


2 tables ztxlfal.


3 select * from ztxlfal into ztxlfal order by lifnr.


4 write / ztxlfal-lifnr.


5 endselect.


В стр. 2 определяется wa, т.е. распределяетрся память такой структуры, как существующая в DDIC таблица ztxlfal. (Если такой таблицы не существует, ABAP compiler выдаст в этой строке ошибку : "The Distionary structure or table 'ZTXLFAL' is either not active or does not exists"). select statement в стр. 3 начинает цикл (loop) по фактический выборке записей из таблицы ztxlfal в work area ztxlfal. Несмотря на то, что оба эти объекта названы одним и тем же именем, это разные объекты : один существует в памяти, и он определяет на ней структуру (wa), другой - таблица из DDIC. В стр. 4


В стр. 4 запись ztxlfal-lifnr означает примерно то же, что в C# ztxlfal.lifnr, т.е. обращение к памяти по адресу ztxlfal со смещением (offset) lifnr. Сама же память (т.е. обсуждаемая wa) заполняется в стр. 3 - into ztxlfal. Однако в отличие от привучных структур в C#, work area ztxlfal не содержит всех записей, выбранных из таблицы, а только одну - ту, на которой в данный момент стоит итерация цикла.


Конструкция into <wa> (в нашем случае into ztxlfal) - орциональна. По умолчанию, если она пропущена, данные из таблицы копируются в work area с тем же именем.


Very confusing, however, that work areas are declared thru tables ABAP statement. Not to say that F11 key used to save the work in ABAP Editor.


Еще один термин может очень смутить : domain. В R/3 под этим словом понимают "технические характеристики" поля (как например, field length и data type) таблицы.


[показать]


3). System variables. Ин не нужно определять, они всегда доступны и, как правило, их имена начинаются с sy. Соответственно, и называются они sy fileds (pronounced sigh fields). Относительно select, он изменяет значения sy-subrc и sy-dbcnt. Если были найдены записи, удовлетворяющие условию select, sy-subrc устанавливается в 0, если записей не было - он устанавливается в 4.


проверяют это обычно так


if sy-subrc <> 0.


  write / 'No records found'.


endif.


Переменная sy-dbcnt динамически наращивает кол-во возвращаемых записей, как в след. примере:


select * from ztxlfal order by lifnr.


  write / sy-dbcnt.


  write ztxlfal-lifnr.


endselect.


write / sy-dbcnt.


write 'records found'.


sy-subrc and sy-dbcnt are just two exmaples of the fields of system structure sy (often called syst). To observe its structure, in ABAP Editor just double-click on any system variable name.

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Программирование в ABAP | Oleg_Kleiman - Soft kibitzing | Лента друзей Oleg_Kleiman / Полная версия Добавить в друзья Страницы: раньше»