Фреймворк BOPF. ч. 2.

В первой части я кратко описал основные возможности фреймворка BOPF. Теперь рассмотрим практический пример работы с фреймворком.

Работать мы будем с объектом /BOBF/CONF_LIBRARY

/BOBF/CONF_LIBRARY

Класс /BOBF/IF_CONF_LIBRARY_C содержит все константы, необходимые для работы с данным BO.

Для работы с содержимым BO прежде всего нужно создать сервисный менеджер. В качестве параметра указываем константу с ключом, которые берется из класса с константами. Имя класса с константами специфично для каждого BO и указано в его параметрах.

Читать далее «Фреймворк BOPF. ч. 2.»

Фреймворк BOPF. ч. 1.

BOPF (Business Object Processing Framework) — это фреймворк для работы с бизнес объектами (BO). Данный фреймворк подразумевает инкапсуляцию данных и всех инструментов для работы с ними. То есть это ООП на глобальном уровне.

Основными транзакции для работы с BOPF:

BOBX — Business Object Enhancement Workbench

BOBT — BO Test

Читать далее «Фреймворк BOPF. ч. 1.»

ZABAPGIT. Ошибка авторизации

Некоторое время программа ZABAPGIT при попытке закоммитить разработку выдает сообщение об ошибке авторизации «Unauthorized access to resource», хотя пароль введен правильный и проблем с SSL-сертификатами нет.

В процессе поиска выяснилось, что необходимо создать token и при попытке авторизации в программе ZABAPGIT вводить его

Инструкция по созданию token доступна по ссылке

Теперь при отправке commit на github в окне запроса пароля необходимо водить token.

Деление строки на отдельные слова

Возникла необходимость разделять строку на отдельные слова. На первый взгляд решение показалось банальным

Однако в какой-то момент столкнулся с проблемой — пользователь в строку каким-то образом ввел какой-то пробел, который не определялся как значение переменной space. Таким образом при попытке деления на отдельные слова в строку таблицы попадали два слова с пробелом между ними.

Читать далее «Деление строки на отдельные слова»

Динамические таблицы

Иногда возникает необходимость работать с динамическими таблицами, т.е с таблицами, столбцы которых определяются в зависимости от каких-либо данных.

Например, нужно выводить только те МВЗ, на которых были затраты определенного вида. Остальные МВЗ не нужны.

Работа c динамической таблицей состоит из следующих этапов:

  1. Определение перечня столбцов динамической таблицы
  2. Создание таблицы
  3. Заполнение таблицы данными
  4. Вывод таблицы в ALV

Расмотрим каждый шаг по отдельности.

Читать далее «Динамические таблицы»

Разработка СНТ. Начальные остатки

В процессе старта проекта СНТ необходимо обеспечить на виртуальных складах наличие остатков в соответствии с остатками в SAP. При этом необходимо, что бы портал знал источник происхождения каждой партии и идентификатор остатков хранился в признаке партии. Таким образом обеспечивается возможность дальнейшей работы комплекса СНТ с возможностью формирования СНТ на реализацию/перемещение, форм списания итд.

Для старта проекта к других клиентов была разработана программа, которая формировала и отправляла на портал формы остатков на каждом складе отдельно. При этом если товары из одной и той же партии были на разных складах, то в SAP они переносились в новую партию с наследованием признаков старой. Таким образом каждый идентификатор товаров сохранялся в отдельную партию. Однако в новом клиенте по ряду причин нельзя было переносить товары в новые партии.

Читать далее «Разработка СНТ. Начальные остатки»

Разработка СНТ. Электронные счёт-фактуры.

После запуска пилотного проекта СНТ те клиенты, которые участвуют в нем должны передавать некоторые данные из СНТ в ЭСФ. Так например в ЭСФ указывается номер и дата СНТ, если она была по данной реализации. Кроме того в данных о товарах появился тег productNumberInSnt где указывается номер позиции в соответствующей СНТ. Кроме того есть несколько признаков из других разделов (из контракта и из сведения по перевозке).

Ранее у этих клиентов уже были внедрены BADI для заполнения некоторых тегов в ЭСФ. Теперь было достаточно добавить небольшой кусок кода в это BADI, которое находит нужную СНТ и получает недостающие данные.