Меню

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

|

SAPexperts/IT

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

Ключевая идея
Вы используете структуры-дополнения (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 (для создания сбытовых заказов).

Оформите подписку sappro и получите полный доступ к материалам SAPPRO

У вас уже есть подписка?

Войти

Обсуждения Количество комментариев4

Комментарий от  

Олег Башкатов

  |  13 апреля 2014, 14:59

Для части 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.

Комментарий от  

Олег Точенюк

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

Для части 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.

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

Комментарий от  

Олег Башкатов

  |  14 апреля 2014, 09:43

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

Почему статус?
Это тип транзакции.

Комментарий от  

Олег Точенюк

  |  14 апреля 2014, 11:14

Почему статус?
Это тип транзакции.

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