Если вы используете Eclipse или HANA Studio как IDE для ABAP, но при этом пользуетесь классическим отладчиком, то возможно вы сталкивались с проблемой когда /h и BREAK-POINT не запускают отладку, а при попытке установить точку прерывания возникает ошибка ED701: Невозможно установ. точки прерыв. из-за внеш. контекста (—> подр. текст). На английском звучит так: Breakpoints cannot be set because of external context (—> long text).
Читать дальше…Передача INITIAL значений в ABAP Proxy
Недавно я настраивал интеграцию одного сервиса, где из SAP необходимо было передать набор полей, часть из которых были необязательны к заполнению. На стороне ABAP использовался класс, сгенерированный на основе WSDL поставщика. До определенного момента все работало хорошо. Проблемы начались, когда потребовалось передать в опциональном параметре значение по умолчанию (INITIAL). В этом случае сгенерированная полезная нагрузка не содержала нужных тегов в окончательном XML-документе. Из-за отсутствия тэгов, сервер возвращал ошибку передачи данных.
Читать дальше…RFC модули и параллельная обработка
RFC (Remote Function Call) — протокол обмена данными между системами (подробно о SAP RFC написано в курсе BC415). RFC применяются для интеграции SAP и не SAP систем, обработки данных в новой сессии, параллельной обработки данных и т.п.
Классификация RFC
- Синхронный RFC или sRFC. Определяется с помощью дополнения DESTINATION. При вызове sRFC рабочий процесс приостанавливает свою работу пока вызываемый sRFC модуль не завершит свою работу. Вызов sRFC выполняется в отдельном DB LUW. При вызове sRFC в основном процессе происходит неявный COMMIT.
- Асинхронные RFC – определяются с помощью дополнения STARTING NEW TASK. К ним относятся асинхронные (aRFC) и параллельные (pRFC) RFC вызовы. При асинхронном вызове, вызываемый модуль запускается в новом процессе и работает параллельно с основным рабочим процессом. Результат выполнения ФМ можно получить в функции обратной связи. Вызовы aRFC и pRFC выполняются в отдельных DB LUW.
- Фоновые RFC – определяются с помощью дополнения IN BACKGROUND. К ним относятся транзакционные (tRFC), очередные (qRFC) и фоновые (bgRFC) RFC вызовы. ФМ работают независимо от основного процесса и начинают выполнение после команды COMMIT WORK. На все фоновые RFC создается один DB LUW. Результат фонового RFC нельзя передать в основной процесс.
Форматирование ABAP кода
Большинство компаний имеют внутренний регламент форматирования ABAP кода. Не смотря на наличие регламента, оформление кода может сильно отличаться даже в приделах одной программы. Это связано со следующими фактами: многие программы разрабатывались до принятия регламентов; регламентируют в основном только наименования переменных и программных объектов.
Одни из самых сложных конструкций в ABAP — это SELECT и READ TABLE. Ниже предложены правила форматирования данных конструкций, а также средство автоматизированного форматирования для уже имеющегося кода.
Z-программа для редактирования таблиц БД
В предыдущем посте рассматривались стандартные способы редактирования таблиц БД. Однако, политика некоторых компаний категорически запрещает использовать стандартные механизмы редактирования таблиц за исключением создания ракурсов ведения. Работая в одной транспортной компании я испытывал подобные трудности. Мне часто приходилось редактировать настроечные таблицы без ракурсов ведения. Установка флагов GD-EDIT и GD-SAPEDIT в SE16N не давало результата, функциональный модуль SE16N_INTERFACE был закрыт для использования. Эти ограничения мотивировали меня написать аналог SE16N.
Экран выбора таблицы
Ограничение начальных данных
Сохранение данных
Редактирование записей в таблицах БД стандартными средствами
Зачастую у консультантов и у программистов возникает необходимость изменить какие-либо данные в таблицах БД. Есть несколько способов редактирования данных в таблицах БД в GUI режиме. Самые популярные методы редактирования — это ракурсы ведения, изменения данных через SE16N и Z-программы, аналоги SE16N.
Читать дальше…
Вставка содержимого таблицы в запрос
Для переноса данных из БД в системы, обычно используют ракурсы ведения таблиы. Но можно обойтись и без него. Для этого, в системе разработки необходимо:
- Открыть тр. SE11
- Выделить нужные строки
- В меню выбрать «Запись таблицы» -> «Перенос записей»