Открытый SQL указывает подмножество операторов ABAP, которые обеспечивают прямой доступ к данным в центральной базе данных текущей AS ABAP. Операторы Open SQL отображают функциональность языка манипулирования данными SQL в ABAP, которая поддерживается всеми системами баз данных.
Операторы Open SQL преобразуются в специфический для базы данных SQL в интерфейсе Open SQL интерфейса базы данных. Затем они передаются в систему базы данных и выполняются. Операторы Open SQL могут использоваться для доступа к таблицам базы данных, объявленным в словаре ABAP. Доступ к центральной базе данных AS ABAP осуществляется по умолчанию, а также доступ к другим базам данных возможен через вторичные соединения с базами данных.
Когда какой-либо из этих операторов используется в программе ABAP, важно проверить, было ли выполненное действие успешным. Если кто-то пытается вставить запись в таблицу базы данных, и она вставлена неправильно, очень важно знать, чтобы в программе могли быть предприняты соответствующие действия. Это можно сделать, используя системное поле, которое уже было использовано, то есть SY-SUBRC. Когда оператор выполняется успешно, поле SY-SUBRC будет содержать значение 0, поэтому его можно проверить, и можно продолжить работу с программой, если она появится.
Оператор DATA используется для объявления рабочей области. Давайте дадим этому имя «wa_customers1». Вместо того, чтобы объявлять один тип данных для этого, можно объявить несколько полей, которые составляют таблицу. Самый простой способ сделать это — использовать оператор LIKE.
ВСТАВИТЬ Заявление
Здесь объявлена рабочая область wa_customers1, как и таблица ZCUSTOMERS1, которая принимает ту же структуру, но не становится самой таблицей. Эта рабочая область может хранить только одну запись. После того, как он был объявлен, оператор INSERT можно использовать для вставки рабочей области и записи, которую он хранит в таблице. Код здесь будет читаться как «INSERT ZCUSTOMERS1 FROM wa_customers1».
Рабочая область должна быть заполнена некоторыми данными. Используйте имена полей из таблицы ZCUSTOMERS1. Это можно сделать, перейдя вперед, дважды щелкнув имя таблицы в коде или открыв новый сеанс и используя транзакцию SE11. Затем поля таблицы можно скопировать и вставить в редактор ABAP.
Ниже приведен фрагмент кода —
DATA wa_customers1 LIKE ZCUSTOMERS1. wa_customers1-customer = '100006'. wa_customers1-name = 'DAVE'. wa_customers1-title = 'MR'. wa_customers1-dob = '19931017'. INSERT ZCUSTOMERS1 FROM wa_customers1.
Тогда оператор CHECK можно использовать следующим образом. Это означает, что если запись вставлена правильно, система сообщит об этом. Если нет, то будет отображаться код SY-SUBRC, который не будет равен нулю. Ниже приведен фрагмент кода —
IF SY-SUBRC = 0. WRITE 'Record Inserted Successfully'. ELSE. WRITE: 'The return code is ', SY-SUBRC. ENDIF.
Проверьте программу, сохраните, активируйте код, а затем протестируйте его. Окно вывода должно отображаться как «Запись успешно вставлена».
ЯСНОЕ Заявление
Оператор CLEAR позволяет очистить поле или переменную для вставки новых данных вместо них, что позволяет использовать их повторно. Оператор CLEAR обычно используется в программах и позволяет многократно использовать существующие поля.
В предыдущем фрагменте кода структура рабочей области была заполнена данными, чтобы создать новую запись для вставки в таблицу ZCUSTOMERS1, а затем выполнить проверку достоверности. Если мы хотим вставить новую запись, необходимо использовать инструкцию CLEAR, чтобы затем ее можно было снова заполнить новыми данными.
ОБНОВЛЕНИЕ Заявление
Если вы хотите обновить одну или несколько существующих записей в таблице одновременно, используйте оператор UPDATE. Как и в операторе INSERT, объявлена рабочая область, заполненная новыми данными, которые затем заносятся в запись при выполнении программы. Запись, ранее созданная с помощью оператора INSERT, будет обновлена здесь. Просто отредактируйте текст, хранящийся в полях NAME и TITLE. Затем в новой строке используется та же структура, что и для оператора INSERT, и на этот раз с помощью оператора UPDATE, как показано в следующем фрагменте кода:
DATA wa_customers1 LIKE ZCUSTOMERS1. wa_customers1-customer = '100006'. wa_customers1-name = 'RICHARD'. wa_customers1-title = 'MR'. wa_customers1-dob = '19931017'. UPDATE ZCUSTOMERS1 FROM wa_customers1.
После выполнения инструкции UPDATE вы можете просмотреть Браузер данных в словаре ABAP и убедиться, что запись была успешно обновлена.
MODIFY Заявление
Оператор MODIFY может рассматриваться как комбинация операторов INSERT и UPDATE. Его можно использовать для вставки новой записи или изменения существующей записи. Он следует синтаксису, аналогичному предыдущим двум операторам, при изменении записи из данных, введенных в рабочую область.
Когда этот оператор будет выполнен, ключевые поля будут проверены по сравнению с полями в таблице. Если запись с этими значениями ключевых полей уже существует, она будет обновлена. Если нет, то будет создана новая запись.
Ниже приведен фрагмент кода для создания новой записи:
CLEAR wa_customers1. DATA wa_customers1 LIKE ZCUSTOMERS1. wa_customers1-customer = '100007'. wa_customers1-name = 'RALPH'. wa_customers1-title = 'MR'. wa_customers1-dob = '19910921'. MODIFY ZCUSTOMERS1 FROM wa_customers1.
В этом примере оператор CLEAR используется для того, чтобы в рабочую область можно было вставить новую запись, а затем добавить клиента (номер) 100007. Поскольку это новое уникальное значение ключевого поля, будет вставлена новая запись, и будет выполнена другая проверка достоверности.
Когда это будет выполнено и данные будут просмотрены в Браузере данных, будет создана новая запись для клиента с номером 100007 (RALPH).
Приведенный выше код производит следующий вывод (содержимое таблицы) —