К основному контенту

ABAP кратко

/h - start debugging 
/hs - system debugging 
/ha - debugging - no screens 


l_         - локальная переменная с единственным значением
lt_        - локальная таблица
ls_       - локальная структура
lr_        - локальная переменная типа Range
lv_        - локальная переменная
lty_     - локальный тип
t_         - локальный тип
p_        - параметр
so_      - selection option
<ls_>  - field symbol на структуру (все остальное по аналогии)
lcl_      - локальный класс
lo_       - объект
rg_       - range


range это внутренняя таблица, которая состоит из 4 полей: sign, options, low и high. По сути range это аналог select-options и заполняется точно также: SIGN = 'I' (включить) или 'E' (исключить), OPTIONS содержит отношение (EQ, NE, LT, LE, GE, GT, ... ), а LOW и HIGH конкретные значения. Удобство range в том, что его можно привязывать к любым полям любых таблиц (АВАР/внутренние)

Структуры содержат фиксированное число полей и служат для объединения простых полей в более сложный, например, данные о сотруднике. Структуры объявляются служебными словами BEGIN OF и END OF.

В системе предусмотрена глобальная структура SYST, которая хранит системные данные. Доступ к ней в программе осуществляется по имени SY. Некоторые значения системных переменных указаны ниже.

SY-DATUM Актуальная дата сервера приложений
SY-UZEIT Актуальное время сервера приложений
SY-INDEX Счетчик цикла DO
SY-TABIX Индекс в цикле LOOP
SY-SUBRC Код возврата, содержит результат последней выполненной операции. SY-SUBRC = 0 в случае успешного выполнения.
SY-LANGU Язык входа в систему
SY-BATCH Программа выполняется в фоновом режиме
SY-BINPT Программа выполняется в рамках пакетного ввода
SY-REPID Имя текущей программы
SY-UNAME Имя пользователя

В общем виде, если очень на пальцах и быстро, ракурс служит для скрытия физических имен таблиц и полей и предоставления общего интерфейса доступа к базе данных разработчикам клиентской части. Например у меня есть таблица ZZZZ и пять полей с именами Z1 по Z5, я делаю ракурс без объединения таблиц с именем ZYZ и делаю присвоение полей типа 

ZYZ-ID = ZZZZ-Z1 
ZYZ-NAME = ZZZZ-Z2 
ZYZ-DESC = ZZZZ-Z3 

Разработчик программы работает с ракурсом, при этом если в дальнейшем я решу разбить таблицу ZZZZ на две или переименовать поля, я просто пересоздам ракурс, но так как поля ракурса останутся таким же, то с точки зрения программы работающей с ракурсом ничего не поменяется, все останется в рабочем состоянии.


1. Для каждого экрана обработка двух событий:
РВО - обработка логики перед выводом на экран
РВО-модули (Process Before Output - обработка событий до раскрытия экрана);
РАI - обработка логики после ввода с экран
РАI-модули (Process After Input - обработка событий после ввода команды пользователем с экрана);
2. Модули этих событий обрабатываются последовательно друг за другом.
3. Для выполнения модуля диалоговому процессору передается контроль и управление.
4. После обработки всех модулей событий РВО содержимое всех одноименных полей программы копируются в соответствующие поля экрана.
5. Перед обработкой первого модуля событий РАI содержимое одноименных полей из шаблона экрана копируются в соответствующие поля АВАР/4-программы.
6. По ОК-коду можно узнать и обработать код введенной команды.

Комментарии

Популярные сообщения из этого блога

ABAP

*пример простой программы с двумя строками текста: report abaptest . write 'Customerlist ' . *Программа должна начинаться с декларации REPORT *Второй оператор выводит на экран слова * комментарий в начале строки или " комментарий в любом месте строки write 'Customer list ' at 10 . *комманда write содержит необязательное дополнение, задающее позицию появления текста write : 'Custome rlist' , 'Booking' . *общая часть перед двоеточием, последовательные части отделяются запятыми *------------------------------------------------------- * * ПОЛЯ * *------------------------------------------------------- data : customer_name( 25 ) type с , vendor__name like customer_name. *data - определяется поле (переменная), like - наследование types t_name( 25 ) type с . data : customer_name type t_name, vendor_name type t_name. *Тип, определенный как t_name, назначается для полей vendor_name и customer_name,...

стандарт FI

Проводка FB01 - Проводка документа   FBR2 - Проводка документа // копирование по образцу   FB05 - Проводка с выравниванием   FB50 - Проводка по ОСч: транзакция 1 экрана   FB70 - Ввод исходящих счетов   FBL3N - Cписок отдельных позиций осн. счетов   Кредитор FK03 - Просмотр кредитора (бухгалтерия)   FBL1N - Cписок отдельных позиций кредиторов   Дебитор FD03 - Просмотр дебитора (бухгалтерия)   FBL5N - Cписок отдельных позиций дебиторов   Выравнивание F-03 - Выравнивание ОСч   F.13 - Авт. выравнивание без задания валюты   F-32 - Выравнивание счета дебитора   F-44 - Выравнивание счета кредитора // брать самую позднюю дату   KAH3 - Просмотр группы видов затрат   Сторно FB08 - Сторнировать документ   ...