Расширьте стандартные BAPI заказов на поставку и сбытовых заказов для удовлетворения нужд бизнеса

2574
4

Ключевая идея
Вы используете структуры-дополнения (append structure) для добавления новых полей, не включенных в стандартные объекты SAP. Дополнение позволяет Вам выполнить модификацию клиента, то есть Вам не нужно делать подобную модификацию с использованием ключа на стандартный объект SAP.

 

В некоторых случаях, стандартные документы SAP ERP, такие как заказ на поставку или сбытовой заказ, не содержат достаточный набор полей, чтобы отвечать нуждам бизнеса. Например, могут отсутствовать определенные поля на уровне заголовка или позиции. Как можно преодолеть такую проблему? Один подход состоит в том, чтобы приспособить существующие поля или дополнительные признаки под свои "особенные" нужды. Однако, данный подход может быть затруднительным, если новое поле больше или меньше, чем поле, которые Вы собираетесь приспособить. Переименование полей также может создать сложности.

Второй подход состоит в том, чтобы добавить новые поля к стандартным таблицам SAP с помощью структуры-дополнения. В этом случае, Вы можете назначать длину, типы, имена новых полей именно так, как Вам нужно без модификации стандартных объектов системы SAP ERP. С другой стороны, в случае использования первого подхода (т.е. приспосабливание стандартных полей под свои нужды), все программы, обрабатывающие эти поля, будут продолжать их обрабатывать. В случае второго подхода (т.е. структуры-дополнения), Вы можете вставлять, обновлять или удалять значения Вашими силами (например, в экранах пользователя).

Имеется и третий подход: Вы можете использовать BAPI (Business Application Programming Interfaces, интерфейс программирования бизнес-приложений), представляющие собой стандартные, заранее созданные интерфейсы, обеспечивающие доступ к процессам и данным в системах бизнес-приложений, таких как SAP ERP 6.0. Такой подход позволяет Вам создать или изменить большинство документов в SAP ERP, используя структуры-дополнения (append structure).

В настоящей статье, я покажу Вам второй и третий подходы. Вы узнаете, как расширить 2 стандартных BAPI, и, таким образом, Вы узнаете как создать два наиболее распространенных документа SAP из модулей Сбыт (SD, Sales and Distribution) и Управление материальными потоками (MM, Materials Management) с большим удовлетворением нужд Вашего бизнеса:

  • BAPI_PO_CREATE1 (для создания закупочных заказов);
  • BAPI_SALESORDER_CREATEFROMDAT2 (для создания сбытовых заказов).

Вы хотели бы увидеть полную версию статьи?

Если вы являетесь подписчиком журнала SAP Professional Journal, пожалуйста, введите в правом верхнем углу логин и пароль.

Если вы хотите подписаться на журнала SAP Professional Journal, пожалуйста, обратитесь в редакцию или сделайте заказ на сайте.

Правила получения тестового доступа к статьям SAP Professional Journal

Функциональная область: Информационные технологии / IT, Basis, ABAP
Комментарии:

Олег Башкатов (Рейтинг: 7711) 14:59, 13 апреля 2014


Комментарий эксперта

Для части BAPI закупочного заказа.

Если мы проделаем в точности то, что говорит автор, то получим динамическую ошибку, представленную ниже

Рисунок 14 Динамическая ошибка DYNP_WRONG_SCREEN_TYPE

Для её исправления нужно установить соответствующий параметр в транзакции SE51 для программы SAPLXM06 экрана 0101.

Рисунок 15 Установка типа экрана

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

В экране программы SAPLXM06 номере 0111, дважды щелкнуть на " STATUS_0111. "

Рисунок 16 Дважды щелкаем для создания инклюда

Создаем код для анализа переменной, которая покажет нам, какой режим (просмотра или изменения) сейчас используется.

Рисунок 17 Скрытие/открытие поля в зависимости от режима изменения/просмотра

Тогда поле будет нередактируемым в режиме просмотра и редактируемым в режиме изменения.

В коде тестовой программы для вызова BAPI BAPI_PO_CREATE1 допущена неточность в части заполнения структуры BAPI_TE_MEPOITEM.

LS_EXTENSIONIN-STRUCTURE  = 'BAPI_TE_MEPOITEM'.
LS_EXTENSIONIN-VALUEPART1 = '00001          007'.

Структура BAPI_TE_MEPOITEM состоит из полей, представленных на экране.

Рисунок 18 Длина поля позиции составляет 5 символов, затем поле ZZBEDNR составляет 10 символов

Таким образом, код должен быть

 

Для части BAPIсбытового заказа.

В части кода

Автор, на мой взгляд, допустил неточность: в стандартной системе SAP ERP (IDES) роль заказчика имеет идентификатор AG, а на SP.

00:27, 14 апреля 2014

Олег Точенюк (Рейтинг: 10169)

Ну это ты как-то в рисунке 17 жестко решил статус документа проверять в расширениях.
09:43, 14 апреля 2014

Олег Башкатов (Рейтинг: 7711)

Почему статус?
Это тип транзакции.
11:14, 14 апреля 2014

Олег Точенюк (Рейтинг: 10169)

Да поле правильное, только работаешь ты с ним не очень правильно. Через assign как-то не очень правильно делать. Набросаю может пример.

Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП» Copyright © 2010 Wellesley Information Services. All rights reserved.