Концепция синтаксиса языка ABAP/4




1. Любое выражение должно заканчиваться точкой.

2. Двоеточие после ключевого слова обозначает повторение выражений, приведенных после двоеточия и перечисленных через запятую для данного ключевого слова.

Например:

Код:

...

WRITE: 'Hello World',

' - this is my first programm'.

...

Равен последовательности:

...

WRITE 'Hello World'.

WRITE ' - this is my first programm'.

...

3. Ключевые слова и переменные регистронезависимые, т.е. код:

...

DATA gv_value TYPE i. " А можно так: data gv_value type i.

WRITE gv_value. " write gv_value.

...

Идентичен коду:

...

data GV_VALUE type I.

wrITE gv_Value.

...

4. Вызов функциональных модулей производится только в верхнем регистре: Т.е. код:

...

CALL FUNCTION 'ztest_func'.

...

Работать не будет, а правильно:

...

CALL FUNCTION 'ZTEST_FUNC'.

...

 

Определение данных в языке ABAP/4

Элементарные типы данных

ABAP/4 обеспечивает набор элементарных типов, таких как символьный, целый и дата и поддерживает 2 концепции конструирования (с помощью записей и внутренних таблиц), которые помогают строить сложные типы и объекты данных.

Можно также создавать неэлементарные типы и структуры данных и хранить их определения в словаре ABAP/4 Dictionary, чтобы впоследствии использовать их во всех компонентах системы.

Элементарные типы используются в ABAP/ 4 так же, как и в других языках.
В ABAP/4 используются следующие элементарные типы:

Characters. Поддерживаются два символьных типа:

С (собственно символьный) и N (текст, состоящий из цифр).

Numbers. Поддерживается три цифровых типа:

I (целые числа), P (упакованные числа) и F (числа с плавающей запятой).

Date. Поддерживается один тип даты:

D (дата).

Time. Поддерживается один тип для задания времени: T (время).

Hexadecimal.
Поддерживается один шестнадцатеричный тип: X (шестнадцатеричный).

Каждое поле определяется с помощью ключевого слова DATA и ссылки на элементарный тип.
Пример:

DATA:

name(25) TYPE C,

z_code(5) TYPE N,

counter TYPE I VALUE 1.

Длина поля определяется числом в круглых скобках, которое следует после имени поля. Если размер поля в операторе data не задан, ABAP/4 использует значение размера поля по умолчанию. Ключевое слово value позволяет задать начальное значение переменной counter.
Каждый элементарный тип обладает своим значением по умолчанию, которое применяется в тех случаях, когда до выполнения программы не было задано начальное значение переменной.
Аналогично полям задаются неэлементарные типы. Понятие тип (TYPE) не связано с выделением памяти, а для полей, описанных как DATA, память всегда выделяется.
Пример:

TYPES

t_flag TYPE С.

DATA add_flag TYPE t_flag.

Для всех типов в качестве значений можно задавать константы:
Пример:

CONSTANTS:

company_name(3) TYPE C,

max_counter TYPE I VALUE 9999.

Константы нельзя изменять. Любой оператор, изменивший константу, вызовет сообщение об ошибке при синтаксической проверке или во время выполнения.
Константы используются для определения начальных значений:
Пример:
DATA:
counter TYPE I VALUE max_counter.

Если тип не указан, по умолчанию используется тип С(1). Если поле и соответствующее ему значение литерала или константы имеют разные размеры, это начальное значение или усекается или дополняется пробелами справа (если оно меньше).

Переменные типа N содержат текстовые строки, состоящие из цифр. С их помощью записываются цифры, которые используются для идентификации и сортировки внутренних таблиц. Начальные значения полей типа C заполняются пробелами справа, а поля типа N - цифрой 0 слева. Размер поля типа N по умолчанию равен 1, а начальное значение состоит из соответствующего длине числа нулей.
Поле дата (DATA) имеют тип D с фиксированным размером поля в 8 знаков. Внутреннее представление поля date: YYYYMMDD (Y - год, М - месяц, D - день).

 

Сложные типы

Кроме полей ABAP/4 поддерживает специальные конструкции для сложных (или составных) объектов данных: записи и внутренние таблицы.
Структуры содержат фиксированное число объектов данных (компонентов структуры), определяемых с помощью ключевых слов DATA BEGIN OF и DATA END OF. Можно определить структуру со следующими полями.
Пример:

DATA: BEGIN OF customer,

id(8) TYPE n,

name(25),

telephone(12),

END OF customer.

После того как структура определена, можно работать и с отдельными компонентами и со всей структурой.
Пример:

DATA vendor LIKE customer.

customer-id = 87654321.

customer-name = Green.

customer-telephone = 211-22-34.

MOVE customer TO vendor.

В приведенном примере дополнительное ключевое слово LIKE определяет структуру vendor, имеющую такой же формат, как и структура customer.


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

Пример:

TYPES: BEGIN OF address,

city(25),

street(30),

END OF address,

BEGIN OF person,

name(25),

address type address,

END OF person.

DATA: receiver TYPE person.

DATA: receiver_tab LIKE receiver OCCURS 0

WITH HEADER LINE.

DATA: target LIKE receiver OCCURS 0 WITH HEADER LINE.

После определения объектов данных в операторе data, их можно использовать в любом месте программы. Обычно определение данных размещается в начале программы. Большие программы часто имеют файл типа INCLUDE, содержащий список с определениями всех данных. Данные программы доступны в любой подпрограмме и их разрешено переопределять в подпрограмме. Локальные объекты данных в подпрограмме являются приоритетными по сравнению с глобальными переменными, имеющими идентичные имена. Переменные программы для всех других программ недоступны. Их можно добавить в файл INCLUDE, который содержит определения данных других программ, а также определить их как глобальные переменные в словаре Dictionary,автоматически доступном для всех программ ABAP/4.

 

Операторы языка ABAP/4

MOVE и COMPUTE.

Команда MOVE всегда копирует исходное поле в целевое.

MOVE: исходное TO целевое.

COMPUTE целевое = исходное.

Ключевое слово COMPUTE единственное, которое разрешается опускать в операторах языка.
Если у исходного и целевого полей разный тип и размер данных, ABAP/4 всегда преобразует содержимое исходного поля к формату целевого. Ошибка выполнения происходит только в том случае, когда преобразование приводит к потере информации.

Так как ABAP/4 поддерживает различные типы и размеры данных, которые можно комбинировать, используя команды move и compute, существует множество комбинаций возможных преобразований: цифры внутри символьного поля могут рассматриваться как число, целевое поле заполняться пробелами, исходное - усекаться, числа преобразовываться в дату и наоборот и т. д.
C помощью команды move можно копировать структурированные объекты типа записей или внутренних таблиц.

Пример:

MOVE: receiver TO receiver_tab.

MOVE: receiver_tab TO target.

Если исходный и конечный объекты данных относятся к одному и тому же типу (например, к внутренней таблице), в операторе MOVE их содержимое копируется за одну операцию.
Команда MOVE-CORRESPONDING копирует из одной записи в другую компоненты с одинаковыми именами. Поля с одинаковыми именами копируются независимо от их позиции внутри записи.


ОПЕРАЦИИ С СИМВОЛЬНЫМИ СТРОКАМИ.

Символьные строки объединяются с помощью команды CONCATENATE.

Пример:

DATA: str1(3) VALUE 'Red',

str2(6) VALUE 'Yellou',

str3(6) VALUE 'Green',

str4(50).

CONCATENATE str1 str2 str3 INTO str4 SEPARATED BY ','.

Обратная операция разделения символьной строки осуществляется для произвольно выбранного разделителя.
Пример:

DATA:

list(40) VALUE 'Edison, Smith, Jon Green, Yang, Black',

name1(20), name2(20), name3(20), name4(20), name5(20).

SPLIT list AT ',' INTO name1 name2 name3 name4 name5.

Если одно из полей, в которое записывается результат, имеет недостаточную длину, все компоненты усекаются, и переменная sy-subrc получает ненулевое значение. Если число компонентов больше числа целевых полей, то информация теряется. В качестве целевого объекта можно использовать внутреннюю таблицу.

Пример:

DATA names LIKE name1 OCCURS 100.

SPLIT list AT ',' INTO TABLE names.

Сдвинуть символьную строку можно командой SHIFT.

Пример:

SHIFT name1 BY 3 places.

SHIFT name2 RIGHT.

SHIFT name3 UP TO 'Jon’.

Для замены определённых символов в строке используется оператор REPLACE, который замещает первую встретившуюся подстроку внутри строки.

Пример:

REPLACE E WITH Maв INTO list.

Поиск символьных строк в полях или внутренних таблицах осуществляется по команде SEARCH. Системное поле sy-fdpos содержит сдвиг найденной строки относительно начала.
Пример:

SEARCH list FOR Green.

IF sy-subrc NE 0.

WRITE ‘Not found’.

ENDIF.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: