All posts by Räßap

Краткая история SAP GUI

Мы все знаем, что GUI расшифровывается как Graphical User Interface (графический интерфейс пользователя) и основная функция GUI – предоставлять пользователю возможности подключения к информационной системе, отображать текущие процессы, принимать вводимые данные и т.д. Предшественником GUI была командная строка – CLI (Command Line Interfaces, интерфейс командной строки). В качестве примера командной строки мы можем вспомнить первые компьютеры, DOS. Затем была доавлена поддержка мыши и в итоге это все вылилось в разработку GUI.
SAP AG методично совершенствовала графический интерфейс своего флагманского продукта – ERP.
Первым шагом в этом направлении можно считать интерфейс версии R/2, основанный на работе в терминале.

Как видно из снимка, эта версия имела следующие элементы: экранное меню, список функциональных клавиш, область сообщений, разделительные линии для группировки. Поле, необходимое для заполнения обозначалось вопросительным знаком.

Следующим шагом была версия R/2 с типовым пользовательским интерфейсом IBM CUA. CUA предоставляла меню и “кликабельную” панель инструментов с наиболее важными функциональными клавишами.

Такая ранняя версия SAP R/3 как 1.0 обладала следующими возможностями: точка в начале подписи поля, длина поля никак не обозначалась, строка меню, и внизу окна шла строка с наиболее важными функциональными клавишами.

В версии 1.1 добавили: длина поля обозначалась цветом, быстрые пути в меню (для доступа через клавиатуру).

Тогда также было видно и влияние разработок SAP: dynpro (динамические экраны с таблицами и элементами, steploop (обработка dynpro) и технология “списки ABAP” для интерактивных отчетов.

В следующей версии R/3 – 2.0 были впервые представлены следующие функции: поддержка возможностей Windows 3.1 (включая внешний вид) и других поддерживаемых платформ (OSF/Motif, OS/2 и Mac OS), системную панель инструментов со значками, 3D-вид полей ввода, панель инструментов приложения, убрали точки в начале подписей полей.

На смену версии 2.0 пришла 2.1 с такими компонентами, как переключатели, флажки, группировка элементов, кнопки на экране, новые значки, цветные списки. Графический интерфейс пользователя Windows стал ‘стандартным GUI’, стал главным интерфейсом. SAP 2.1 выглядел как настоящее Windows-приложение, несмотря на то, что по-прежнему оставался лишь эмулятором терминала.

В следующем поколении R/3, которое начиналось версией 3.0, были представлены такие элементы, как таблица (технология, основанная на dynpro, пришла на смену steploop), значки на кнопках, панель инструментов приложения и пропорциональный шрифт для полей.

В версии 3.1, которая выглядела в стиле Windows 95, появились плоские кнопки, вкладки (dynpro) и ABAP List Viewer (ALV).

Следующим большим выпуском R/3 была 4.0: чтобы избежать сложной навигации, все больше информации размещается на вкладках – таким образом в транзакциях используется меньшее количество экранов.

В версии 4.5 были использованы компоненты Microsoft ActiveX: разделитель, дерево элементов, текстовые поля, HTML и т.д. ALV стал таблицей (grid control).

В версии 4.6 интерфейс пользователя был обновлен силами дизайнерской студии Frog Design. Когда-то на их веб-сайте существовала страничка, со всеми, впервые использованными элементами в интерефейсе. Нынче она частично доступна лишь в кеше интернета.

Главным достижением был уход от начальных экранов, что позволило уменьшить затрачиваемое для изменений экранов, время, экран с деревом элементов, добавленный справа, и принцип одного экрана.


Во эпоху доткомов существовал сервер ITS, который транслировал экраны SAP в HTML-код и затем отправлял его пользователю в веб-браузер. Разработка ITS началась с mySAP.com Workplace.

На сегодняшний день самые популярные версии SAP GUI для Windows – это 6.2/6.4. (прим. переводчика – уже не совсем). Эти клиенты созрели в универсальные – для доступа к функционалу SAP практически во всех приложениях, как то: mySAP ERP, mySAP Business Suite (mySAP CRM, mySAP SCM и mySAP PLM, …), и компоненты NetWeaver, такие как SAP BW. Функции SAP GUI как у браузера – он получает информацию с сервера SAP так, что, куда, откуда, как и когда, чтобы отобразить эту информацию в своем окне.

SAP GUI делится на три основных ответвления:
SAP GUI для Windows – для платформы в “стиле Windows”, интегрируется с другими приложениями, наподобие Microsoft Office, MS Outlook, основывается на технологиях OLE или ActiveX.
SAP GUI для Java – унифицированный внешний вид SAP для многих платформ.
SAP GUI для HTML – через сервер SAP ITS, элементы управления мапятся к HTML, используя функции HTMLb.

Подытожим данную статью о графических интерфейсах SAP:
Web Dynpro – обеспечивает среду разработки и среды выполнения для создания веб-приложений. Среда разработки Web Dynpro состоит из набора интегрированных инструментов, поддерживающих следующие основные функции: определение диалоговых потоков; проектирование и составление представлений (например, графическое представление страницы); моделирование бизнес-данных и настройка всех этих аспектов.
SAP GUI family (см.выше)
mobile UI – онлайн-технология, в которой мобильное устройство (мобильные телефоны, КПК и т.д.) подключено к веб-серверу на основе таких технологий, как WAP, беспроводные локальные сети, Bluetooth и т.д. Целью является расширение SAP-сервера ITS, предоставляя разработчикам создавать и изменять мобильные приложения.

Original: Martin Maruskin, SAP BW freelancer
via blog.maruskin.eu

Yonyou U8+/U9 UFIDA ERP U8

Несмотря на то, что китайская версия SAP хорошо локализована, на рынке ERP в Поднебесной, по прежнему большая доля приходится на главного конкурента – Yonyou U8+/U9 (ранее известная как UFIDA ERP U8).
Компания Yonyou Software Co., Ltd. располагается в Пекине, в штаб-квартире Kingsoft Co., (金山軟件有限 jīnshān ruǎnjiàn), производителя известного альтернативного офисного пакета WPS Office.

u8-6

Основанная в 1988 г. Yonyou выпускает программное обеспечение для бухгалтерского учета и ПО ERP – “U8”.
Процесс внедрения и поддержки без малого неотличим от практики внедрения SAP – те же исследования, блюпринты, загрузка мастер-данных, GoLive и поддержка.

u8-1

Помимо ERP, Yonyou также предлагает решения SCM, CRM, HR, BI и др. (как видим, это сильный конкурент для SAP в Азии и тихоокеанском регионе). Также, компания активно развивает отраслевые решения, касающиеся электронного правительства.

u8-2

Согласно независимым исследовательским компаниям IDC и CCID Consulting, Yonyou стабильно занимает первые строчки в рейтинге поставщиков решений для управления в своей стране (однако, как признают – все же уступает лидирующую позицию программному обеспечению от SAP).

u8-3

В 2007 году крупнейшая софтверная компания Китая – Yonyou, заключила соглашение с Lionbridge Technologies, ведущим поставщиком услуг в области перевода. Таким образом, компания планирует выйти на англоговорящий рынок потребителей и потенциальных клиентов ERP-систем.

u8-4

Офисы предприятия, включая головной офис в Китае, располагаются на Тайване, Макао, Гонконге, Японии, Тайланде, Малайзии, Сингапуре. Единственный офис вне Азии и тихоокеанского региона представлен во Франции, г.Безон (Europe Yunano).
Во главе компании стоит Ван Вэньцзин, китайский предприниматель и миллиардер.

u8-5

Предприятие перечислено на фондовой бирже Шанхая. Среди клиентов компании — Dongfeng и другие гиганты.

В настоящее время выпущен пакет U9 – дальнейшее развитие системы ERP от Yonyou.

Output determination

An output is a form of media from the business to one of the business partners. Some output
media forms are printouts, faxes and telexes, e-mails, electronic data interchange (EDI), or
even XML or HTML. The output can be sent to any of the partners defined in the document.
Outputs are usually media in the form of order confirmations, delivery notes, invoices,
and shipping notifications.

Maintain Output Determination for Sales Documents

Output determination uses the condition technique to determine the condition record
necessary for the application. An output type is simply a type of output and contains all the
control features for the output.
For example, it defines the kind of output (order confirmation, invoice, etc.), which
business transaction it applies to, which business partner receives the output, how the
output is sent (the media), the print program, and the form layout to use in formatting the
output.
The output type is thus the central component of the output determination.
To maintain output determination, use the following menu path.

SD | Basic Functions | Output Control | Output Determination | Output Determination Using the
Condition Technique | Maintain Output Determination for Sales Documents

You should follow the maintenance activities in sequence:
1. Put the fields you will need into the field catalog.
2. Create the condition tables you will need.
3. Create the access sequence you will need.
4. Assign the condition tables to the access sequence.
5. Create the condition types.
6. Assign the access sequence to the condition types.
7. Create the determination procedure (if necessary) and assign the condition types to it.
8. Assign the determination procedure.
9. Lastly, create your condition records.

The following configuration is done in a logical sequence you should follow when creating the condition
technique as in steps 1 to 9.

Steps 1 and 2
The output determination is no different. Steps 1 and 2 are identical, and are accessible by
using the following menu path.

SD | Basic Functions | Output Control | Output Determination | Output Determination Using the
Condition Technique | Maintain Output Determination for Sales Documents | Maintain Condition Tables

Steps 3 and 4
Step 3 and 4 are also identical in that in creating the access sequence you follow the same
customizing steps as used in pricing. This is available by using the following menu path.

SD | Basic Functions | Output Control | Output Determination | Output Determination Using the
Condition Technique | Maintain Output Determination for Sales Documents | Maintain Access Sequences

Steps 5 and 6
Step 5 and 6 are identical in theory and usage in that one assigns an access sequence to the
output condition type, but the output condition type controls different data. The output
condition type is accessible by using the following menu path.

SD | Basic Functions | Output Control | Output Determination | Output Determination Using the
Condition Technique | Maintain Output Determination for Sales Documents | Maintain Output Types

The output type represents different forms of output, such as order confirmations, sales
quotations, etc.
You can access the output type settings by selecting the output type (for example, BA00)
and clicking the Display button (magnifying glass).

The access sequence 0003 is assigned to the output type.
You can see the system uses condition records to find an output command. The output may
be changed during processing (as this cannot be changed checkbox is blank). As the multiple
issuing checkbox is blank, this indicates the output may not be sent more than once to the
same partner. As the partner independent output checkbox is not active, the output is
restricted to being received only by those partner functions as set in the Partner Functions
folder in the file structure on the left side.
Proceeding back to the output type, the last check box that is not activated is the do not
write processing log, which if set will de-activate a very useful function of the output
determination log in the process that is using the output—for example, in this instance, the
sales order creation.

The program that will be used to execute the output is defined in the Processing
Routines folder in the file structure.

The output program for example RVADOR01 is assigned to a transmission medium—
for example, for (1) Print output. This program uses form RVORDER01 to define the layout
of the output.
You may double-click on the line to see the view Output types.
Should you double-click the program or form again, you will go into the ABAP editor or
form editor, respectively.

Proceed back to the output type and select the Default Values tab.
These values entered per output type are automatically transferred as default values
when creating a condition record by output condition. The dispatch time has the following
four options:
1. Send with periodically scheduled job
2. Send with scheduled job with own time specification
3. Send with application own transaction
4. Send immediately
You must understand that the output is automatically proposed and processed according
to the rules governed in output determination. However, the user is still able to reprint (if permitted), or change the printing specifications online in the sales document. For example,
the order confirmation might only be printed overnight and posted to the customer the
following day. However, the customer may explicitly request that his order confirmation
is handed to him immediately, so the user would change the output processing time to a
4—immediately.
The business, however, may not want the user to have this authority on all output types.
For example, the order confirmation may be printed on a special printer with special paper,
thus should only be done via a batch job at night. You can specify (on the Time tab) that
specific times of dispatch are not allowed. This is set by indicating, for example, time of
dispatch 4—not allowed.
You may also set the print parameter as seen on the Print tab. These criteria may be set
as the sales organization or sales office, for example.
It is also possible to print and archive a document automatically by setting the Storage
mode to 3 (Print and Archive) and assigning the correct archiving document type. This field
identifies whether the archived document is an invoice, quotation, or order confirmation,
etc. The archiving object of outgoing documents begins with SD0. These settings are made
on the Storage System tab.

Step 7
Prior to completing step 7, use the following menu path.

SD | Basic Functions | Output Control | Output Determination | Output Determination Using the
Condition Technique Maintain Output Determination for Sales Documents | Assign Output Types to Partner Functions

You may assign the allowed output types and processing medium to the partner functions.
For example, you can assign the order confirmation as a printout to the sold to party, as well
as the order confirmation as a fax to the sold to party. This may be seen in Figure 9-31. This
has the same settings as previously completed in assigning the partner functions to the
output type earlier.
Step 7 is identical in practice to any condition technique, and is accessible via the
following menu path.

SD | Basic Functions | Output Control | Output Determination | Output Determination Using the
Condition Technique | Maintain Output Determination for Sales Documents | Maintain Output Determination Procedure

You have an output determination procedure with the output condition types assigned
to it. The condition types may also have a requirement that may be assigned, thus restricting
any access of the output type to the access sequence and condition records, unless specific
conditions in the requirement have been fulfilled. The output determination procedure can be seen by selecting the procedure V10000 and clicking the Control Data folder in the file structure on the left.
After completing the assignment of the condition type to the procedure, you can continue
to step 8, assigning the procedure.

Step 8
The assignment is achieved in the following menu path.
Menu Path SAP Customizing Implementation Guide | Sales and Distribution | Basic
Functions | Output Control | Output Determination | Output Determination Using the
Condition Technique | Maintain Output Determination for Sales Documents | Assign
Output Determination Procedures
This assignment of the output determination procedure occurs at the header and item
level for sales documents. This assignment may be seen in the Figure 9-33 for the header
level. The assignment is similar at item level except the procedure is assigned to an item
category.
Step 9
Finally, you can now create the condition records necessary for output determination. This
may be done using the following menu path.
SAP Menu | Logistics | Sales and Distribution | Master Data | Output | Sales Document |
—The transaction codes related to the creation, maintenance and display of output
condition records are:
• [VV11] Create
• [VV12] Change
• [VV13] Display

Should you have the determination analysis activated as described earlier on in this
section, you will also have a little blue icon with an i (information sign). When clicked, it
will show you how the output was determined in the sales document.
This completes the maintenance of the output determination as required in the system.
However, there is a lot of additional data that pertains to output that you will need to be
aware of.

Inbound delivery packing

1. First of all, create the packaging material master – MM01 (NB: ‘Sales:General/Plant Data’ view is required):

LEIH

2. Under the “Additional data – Units of measure” you can set dimensions (Length/Width/Height):

on the “Basic Data 1” tab set General item category group as LEIK – Returnable packaging (acc. admin) for the packaging material.

In order to use packing, you need the packing materials you have created above, packing instructions and packing instruction determination records.
Quite often you’ll have materials are all packed a same way. In this case you may use a reference material for both packing instruction and determination record (both packing material and quantity must be identical).
There are two possibilities for the reference material. The easiest way is to simply choose one existing material and the second option is to create a new material (finished good) for this purpose.

The first option is easier to use, but keep in mind, that you will never be able to delete this material as long as it is in use as a reference material for packing (Basic data – Ref. mat. for pckg):


(repeat for identically packed materials).

The second option means more initial work, but you will avoid some problems as the one mentioned above. This option is recommended by SAP.

3. Sales:General/Plant Data’ view:

don’t forget to enable Item generation in delivery for packaging material type using transaction VHAR:

4. Transaction code POP1

It is possible to create new instruction from an existing packing instruction number. Otherwise, just press enter to create a new packing instruction.
In the second line you have to choose the item category M:


(if you choose R the packing instruction is valid for reference material).
Target quantity is the maximum quantity SAP will pack in one box.

Don’t forget to set ’01’ the Check profile on Admin. data tab.

You have to create one packing instruction for each combination of packing material and quantity.

5. Determination record (e.g. the same packing/material for different vendors) – transaction code POF1

6. Point the material, vendor and instruction as shown below (instruction number from the step 3):

and save
(here are alternative packing instructions, to be used in case the main packing instruction is not found).

7. Before we can use packing in SAP, we must have the packing materials on stock.

Please, don’t forget to set the checkbox “Generation of Delivery Items for HU Packaging Materials” in transaction 0VLK:

and set “updates qty/val” of VERP & LEIH for your plant in OMS2:

Next two ways will demonstrate how to post packing goods receipt with and w/o purchased materials:

7.A.1. Posting goods receipt using handling units – transactions VL31N – VL33N, press the button “Pack”:

Inside the processing of Handling Units window you can automatically pack the delivery:

replace to another, delete HU or assignment, unpack, empty and select your own instruction (on Pack.proposal tab). Save this.

7.A.2. Now, post GR (VL32N):

Movement types for this delivery – are 101 and 501 (normal stock):

Note, that Returnable Transport Packaging (RTP) cannot be planned in a Purchase Order (not to special stock “M”). The second way to receipt empties – is to post GR for RTP in MIGO(MB11) transaction:

7.B.1. MIGO, receiving standard inbound delivery,
press the button “Non-ordered Item” as depicted:

7.B.2. Put the RTP number as shown below:

In case of using “Transport equipment” button you have to put vendor’s number to mark the stock of RTP as special (“M”).

MB51:

Movement type 501 does not create any FI-document.

Now let’s go to the counting empties.

Setting Backflush from scratch

Let’s create materials – a finished good (type FERT) and few raw materials (ROH).
Both FERT and ROH types Qty/value updates should be set in OMS2 for plant 215X.

Creating a BOM (ROHs inside the FERT).

Now we have to create production version for this FERT. For new plant, in transaction OPPQ we should create/copy maintained parameters for plant and selection ID of BoM will be also maintained.

CO-module actions have to be done: CK11N, CK24, V_T399X_PC, KKF6N, KCH5N, 0KE5, 0KEQ and 0KEP.

OPK9:


OSPA, OSP4, OSP5

OMWD:

Further create G/L account 21000000 using transaction FS00.

OKKP:

Activating stochastic block:

Activating COGI – OPK4:

Then, to create posting period variant: define PP variant – transaction OBBO.
Further, transaction OBBP – assign PP variant to company code.
And, in OB52, maintain this entry – + A D K M S
From Period – 1
Year – 2015
To Period – 12
Year – 2015

Transaction SNUM (number ranges) – copy object RF_BELEG from plant 1000 to plant 215X.

Взгляд IT-специалиста на SAP ERP

Сохранено с habrahabr.ru/post/270715 (см. также Холивар – 1С или SAP)

1 В этой статье я не буду рассказывать о плюсах и сильных сторонах этой системы с точки зрения функциональности – пусть этим занимаются маркетологи. Я, как IT-специалист, хочу поделиться с вами своими впечатлениями о реализации этого продукта.

Статья будет полезна в первую очередь тем, кто планирует начать работать с SAP ERP как в качестве IT-специалиста (консультанта/программиста), так и в качестве конечного пользователя.

Интуитивно-понятный интерфейс

Бывают такие интерфейсы, на которые смотришь и сразу становится понятно, куда нужно нажать, чтобы выполнить то или иное действие. Так вот…это не про SAP. Первый раз, когда я увидел стартовый экран SAP, подумал, что это просто очень-очень старая версия, которую я как-то случайно запустил. Ан нет, это была вполне современная версия. Интерфейс разрабатывали где-то в 90-х, там он и остался до сих пор.

Для работы с системой нужно запускать так называемые транзакции (к транзакциям БД они отношения не имеют). Транзакция SAP – это что-то типа «ярлыка» для вызова программы, с помощью которой можно выполнить какое-то действие в системе (например, просмотреть список заказов на поставку или отредактировать какой-либо документ). Имена у транзакций абсолютно ничего неговорящие (ME21, IW33, MIRO…). Запустить транзакцию можно двумя способами: из древовидного меню слева или введя код транзакции в специальное поле. В меню можно заблудиться, поэтому чаще всего транзакции запускаются путем ввода её кода. Поэтому у каждого пользователя есть блокнотик, в котором все эти коды записаны.

2
Стартовый экран SAP ERP

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

3

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

Это я сейчас знаю, что нельзя передавать слишком много значений в поля селекционного экрана, так как SQL-запрос превышает какой-то там допустимый размер в килобайтах и из-за этого программа прерывается с исключением DBIF_RSQL_INVALID_RSQL. Причем, нет никакой конкретной цифры, всё зависит от длины передаваемых значений, но экспериментальным путем получена цифра равная примерно 1500-1800 значений. Но как всё это объяснить пользователю? Как объяснить, что он должен 4 раза запустить транзакцию, если ему хочется получить отфильтрованный по 5000 значений список. К тому же, в одних транзакциях нет никаких ограничений, а в других есть.

Матерюсь, перезапускаю транзакцию, заново заполняю селекционный экран, уменьшив объем входных данных, и, наконец, подождав 15 минут, получаю список объектов. Выделяю нужную мне строку списка и отчаянно пытаюсь найти кнопку «Редактировать». Ага, размечтался. Для редактирования, оказывается, существует отдельная транзакция, в которую я, в большинстве случаев, не могу попасть из транзакции просмотра списка объектов. Мне надо скопировать системный номер нужного мне объекта из списка, запустить отдельное окно SAP (которое называется режимом), открыть там транзакцию для редактирования объекта и вставить туда скопированный номер. Таких режимов я могу открыть по умолчанию не более шести. Если все 6 уже открыты, а мне надо отредактировать объект, то придется каким-то режимом пожертвовать. Для просмотра, создания и даже удаления объекта тоже существуют отдельные транзакции.

Еще ситуация. Открываю я транзакцию «MIRO – создание входящего счета-фактуры», долго заполняю шапку, указываю системный номер документа входящей поставки, на основании которого автоматически заполняется позициями табличная часть счета-фактуры. Из тысячи позиций мне нужно было 100 удалить. Я нахожу эти позиции, долго выделяю их и жму кнопку «Удалить». Как думаете, что должно произойти после выделения позиций и нажатия кнопки «Удалить»? Вот я тоже так же подумал. А разработчики SAP думали как-то по-другому – удалилось 900 невыделенных позиций. «Ладно», — подумал я, — «сейчас нажму CTRL+Z и все верну назад». Ну, вы поняли уже, да? Отменить это действие нельзя, поэтому пришлось перезапускать транзакцию и заново забивать все данные.

Это я уже потом прочитал всплывающую подсказу к кнопке «Удалить», где было сказано, что удалятся невыделенные позиции. Такое поведение кнопки только в этой транзакции. В остальных транзакциях кнопка «Удалить» удаляет выделенные позиции.

Сообщения об ошибках не несут вообще никакой смысловой нагрузки. Вот что может означать ошибка «Код налога V0 еще существует»? Сначала я подумал, что это какой-то кривой перевод, но английский вариант «Tax code V0 also exist» и немецкий «Es existiert noch das Steuerkennzeichen V0» тоже неинформативны. А означает она то, что код налога в табличной части не совпадает с кодом налога в шапке. Часто на профильных форумах можно найти темы «У меня такая-то ошибка. Что она означает?», в которых люди играют в угадайку, пока тот, кто уже наступил на грабли, не даст ответ.

Интерфейс никак не стандартизирован. Где-то меню слева, где-то справа. Где-то кнопки сверху, где-то снизу. Где-то вообще никаких кнопок нет, а все действия выполняются через главное меню. Где-то иконки на кнопках одни, где-то на тех же кнопках другие. Даже горячие клавиши в разных транзакциях для одних и тех же действий отличаются. И это касается не только кнопок, но и табличных частей, вкладок и т.д. – единства нет, везде всё по-разному. Видно, что каждый разработчик лепил интерфейс, как ему вздумается, и никакого контроля за этим не велось. Дизайнеров в команде не было. Похоже, это из-за того, что в момент разработки особо серьезных конкурентов на рынке не наблюдалось, поэтому решили, что нужно развивать функциональность, а интерфейс пользователи «проглотят» любой.

4

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

В последнее время в SAP поняли, что сели попой в лужу с приходом эффективных менеджеров, избалованных айфонами и выбирающих софт по внешнему виду, нужно что-то менять в интерфейсе. Тем более, конкуренты уже давно подтянулись по функциональности. Поэтому SAP пытается делать какие-то шаги в этом направлении и создает взамен старых транзакций новые, которые называются enjoy-транзакции. Появляются какие-то новые темы оформление с кнопками в стиле Android, но пока, как говорится, «сколько на осла бантиков не вешай…».

Рассказывать о прелестях интерфейса можно бесконечно, но давайте пойдём дальше…

Локализация

Складывается впечатление, что на русский язык интерфейс переводился следующим образом. Сначала в каком-нибудь Magic Gooddy перевели все фразы с немецкого на английский, потом там же с английского на русский. Затем распределили переведенные фразы между людьми и они начали их вручную перепечатывать в SAP ERP, иногда внося правки. Причем, часть людей либо вообще русский язык не понимали, либо они были настолько ленивы, что никаких правок не вносили.

Почему переводили в Magic Gooddy? Потому что не может человек перевести пункт настроек «Country-specific requirements» как «Страновые требования».

5

Почему перепечатывали вручную? Потому что встречаются опечатки и грамматические ошибки. Например, «Щапрос на перенос», «налогооблАжение» и «вниматИльно» явно печатали руками. Встречаются также сокращения слов, чтобы не выходить за рамки допустимой длины текста.

6

Почему люди не понимали русский язык? Потому что даже при перепечатывании русскоговорящий человек должен был усомниться, увидев фразу «Пушномолочная свинья-несушка» — так до определенного времени называлась программа RAIMEWMS (сейчас название уже исправили). В оригинале она называется «Eierlegende Wollmilchsau», что переводится как «Мастер на все руки», но умный Magic Gooddy посчитал, что Wollmilchsau – это 3 отдельных слова (Woll, milch, sau) и перевел фразу «Eierlegende Woll milch sau» как «Яйцо укладки шерсти молока свиноматки». Остается только гадать, как это потом превратилось в «Пушномолочная свинья-несушка».

7

Да-да, я всё ещё рассказываю о том самом SAP ERP, лицензии которого стоят много тысяч долларов и за внедрение которого организации выкладывают сотни миллионов рублей.

Справочная информация, литература

В открытом доступе нет практически никакой официальной справочной информации. Нет ни руководств пользователя, ни описания программных модулей, ни спецификаций. Хочешь научиться пользоваться SAP – добро пожаловать на малоэффективные курсы (3-5 дней) стоимостью 1500-2000$ каждый, где тебе расскажут, какую кнопку нажать. Раздаточный материал на этих курсах зачастую на английском языке. Понять что-то только из раздаточного материала можно, но очень поверхностно. Курсов много (и для пользователей, и для консультантов, и для программистов), но даже они не дают всеобъемлющую информацию. SAP не стесняется «впаривать» на курсах устаревший материал, ценность которого относительно новых версий SAP ERP равна нулю.

Большая часть знаний консультантов и разработчиков либо передается по наследству от старшего поколения к младшему, либо получается методом «тыка». Если повезет, то можно что-то найти на профильных форумах и в частных блогах, если нет – ковыряйся сам, отладчик тебе в помощь.

Обновления и патчи

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

Если найти нужную ноту труда не составляет, то установка может оказаться вполне нетривиальной задачей. Ноты могут быть зависимы друг от друга и перед установкой одной ноты нужно установить с десяток других нот, которые тоже имеют зависимости. В процессе установки нот может потребоваться выполнить какие-либо действия вручную. Например, принести яйцо дракона из пещеры на вершине горы. Утрирую, конечно, но порой установить ноты, исправляющие ошибки, тяжелее, чем самому эти ошибки исправить. Недавно на Гиктаймс была статья, в которой говорилось о том, что люди через чат Arch Linux устанавливали. Так вот, некоторые ноты (особенно связанные с изменением функциональности под законодательство) устанавливаются так же: люди на форуме коллективно пытаются пройти квест (так, а теперь давайте нажмем все вместе на счет три вот эту кнопку…). Причем, ноты устанавливаются в нескольких системах с одинаковой версией и везде возникают разные ошибки.

Разработка

Разработка в SAP ERP осуществляется на языке ABAP. Для обращения к базе данных используются Open SQL-запросы, которые очень похожи на SQL-запросы. Синтаксис тут обсуждать не буду – субъективная вещь. Он мне не нравится, но привык к нему быстро.

Названия таблиц, полей и переменных, как и названия транзакций, никакого смысла в себе не несут. Глядя на Open SQL-запрос SELECT, невозможно даже близко догадаться, что за данные он выбирает из базы. Нужно либо заранее знать, что хранится в обрабатываемой таблице, либо по ходу действия в эту таблицу лезть через браузер данных и пытаться понять, что в ней.

8

В SAP предусмотрена возможность доработки стандартной функциональности. Править стандартный код, предварительно получив специальный ключ разработчика для стандартного объекта, можно, но крайне нежелательно. Вместо этого разработчику предлагается использовать так называемые USER-EXIT. По сути, это пустые функции с заранее заданными входными и выходными параметрами, разбросанные по стандартному коду. Вызываются эти функции до или после какого-то события. Для правки кода этих функций специального ключа не требуется. Позже к USER-EXIT добавилась еще одна возможность расширять стандартную функциональность – BADI. Это то же самое, что USER-EXIT, только объектно-ориентированное. Зачем оно появилось и почему, раз уж оно появилось, не отказались от USER-EXIT – мне непонятно, только лишней путаницы добавилось.

Так как никакой официальной документации по USER-EXIT и BADI нет, то, чтобы найти подходящее место, куда можно дописать свой код, нужно либо сидеть в отладчике в поисках этих пустых функций, либо штудировать форумы в надежде, что кто-то уже сталкивался с такой необходимостью. Часто бывает, что для одной и той же задачи подходят разные USER-EXIT и BADI. Из-за этого случается так, что на одном проекте разные разработчики/консультанты выбирают различные USER-EXIT/BADI, и код, который должен бы логически быть в одном месте, разбросан по нескольким местам.

Хочется еще упомянуть про отладчик. Их два: старый и новый. В старом отладчике есть функции, которых нет в новом, а в новом есть функции, которых нет в старом. Например, в старом отладчике есть функция просмотра ABAP Memory и SAP Memory, в новом – нет. Переключаться между старым и новым можно прямо в процессе отладки. Хотя слово «новый» тут не очень уместно, так как он существует уже почти 10 лет. Почему за это время его не доработали и не избавились от старого – загадка.

9

Заключение

Складывается впечатление, что этот продукт делали какие-то другие немцы: не те, что делают BMW, Mercedes и AUDI. Процесс разработки какой-то совершенно бесконтрольный: в коде огромное множество ошибок, которые могут годами не исправляться; каждый разработчик называет переменные, как ему вздумается; обновления кривые; новые инструменты появляются недоработанными и такими остаются, пока не станут старыми; …продолжать можно долго.

Тем не менее, я не хочу, чтобы моя статья выглядела как обливание SAP грязью. У любого продукта есть плюсы и минусы. На каждый мой абзац можно написать такой же о плюсах SAP ERP и я соглашусь с ними. Но мне хочется, чтобы люди, решившие связать свою работу с SAP ERP, знали чуточку больше, чем «SAP ERP – это такая крутая немецкая программа, которая стоит много денег».

IDoc statuses

IDoc Inbound and Outbound statuses
Table TEDS1 contains list of all status codes.
Starting statuses may be: 01 (outbound), 50 (inbound), 42 (outbound test), 74 (inbound test)

St#
OK / NOK
Description Next success status Next error status Error reason and solution
01 Outbound IDoc created 30 29
02 Error passing data to port Correct the error and Execute RSEOUT00 program again
03 Outbound IDoc successfully sent to port None, 32
04 within control information on EDI subsystem
05 during translation
12 Dispatch OK Changed from status 03 by BD75 transaction (see below)
25 Processing outbound IDoc despite syntax errors
26 during syntax check of outbound IDoc Missing mandatory segment for example You may edit the IDoc or force it to be processed
29 ALE service (for example 29, 31
30 Outbound IDoc ready for dispatch (ALE service) 03 02 Partner profile customized to not run and execute RSEOUT00 program
31 no further processing
32 Outbound IDoc was edited There was a manual update of the IDoc in SAP tables, the original was saved to a new IDoc with status 33
33 Original of an IDoc which was edited. It is not possible to post this IDoc None None Backup of another IDoc manually updated, see status 32
35 IDoc reloaded from archive. Can’t be processed
37 Erroneous control record (for example, “reference” field should be blank for outbound IDocs) None, 37
42 Outbound IDoc manually created by WE19 test tool 01 37
50 Inbound IDoc created 64 65
51 inbound IDoc data contains errors 53, 64 51, 66, 68, 69 Error triggered by SAP application, incorrect values in the IDoc data and ask functional people, modify erroneous values in the IDoc (WE02 for example) and run it again using BD87
53 inbound IDoc posted None, 53
56 IDoc with errors added (You should never see this error code) 50, 51, 56, 62, 68
60 syntax check of inbound IDoc 56, 61, 62
61 Processing inbound IDoc despite syntax error 64
62 inbound IDoc passed to application 53 51
63 passing IDoc to application
64 Inbound IDoc ready to be passed to application 62 51, 60, 63, 68, 69  execute BD20 transaction (RBDAPP01 program)
65 ALE service – incorrect partner profiles 64, 65
66 Waiting for predecessor IDoc (Serialization) 51
68 no further processing 68 None The IDoc was created using inbound test tool (WE19) and written to file to do file inbound test. Another IDoc is created if immediate processing is chosen
69 IDoc was edited 64 51, 68, 69 There was a manual update of the IDoc in SAP tables, the original was saved to a new IDoc with status 70
70 Original of an IDoc which was edited. It is not possible to post this IDoc None None Backup of another IDoc manually updated, see status 69
71 Inbound IDoc reloaded from archive. Can’t be processed
74 Inbound IDoc manually created by WE19 test tool 50, 56

More information about Inbound statuses

  • 64 -> 62: There is no way to distinguish automatic call from manual call (BD20, RBDAPP01)
  • Though an IDoc may contain partner profile errors, we may force inbound processing (status becomes 62), but then an error will happen again
  • RSEINB00 program to process IDocs from a file
  • BD20 transaction (RBDAPP01 program) to process IDocs in status 64. If you want future IDocs to be processed immediately, change partner profile customizing (WE20).
  • RBDINPUT program:
    • status 51: BD73 / RBDMANIN
    • Status 56, 61, 63, 65: BD84 / RBDAGAI2
    • status 60: RBDSYNEI
    • status 62: IDocs remaining in status 62 is abnormal. Use program RBDCHSTA (Note 92552 – IDocs-Status 62 cannot be processed), so that to change their status back to 64 and process them again
    • status 64, 66: BD20 / RBDAPP01
    • status 68: WPIE / RBDAGAIE

More information about Outbound statuses

  • RBDOUTPU program:
  • status 02, 04, 05, 25, 29: BD83 / RBDAGAIN
  • status 26: RBDSYNEO
  • status 30: WE14 / RSEOUT00
  • status 32: WPIE / RBDAGAIE
  • -> 03 : IDocs are sent to the tRFC queue.
  • 03 -> 12 : use BD75 transaction (RBDMOIND program). Idocs with with status 03 are transferred to the tRFC queue. This does not mean that they are sent out, they may stuck up on that queue (e.g. receiver system is down) in that queue. BD75 checks if it can find the idoc in that queue. If so, it is not beeing send and status remains on 03. If it is not on the t-rfc queue, the systems considers that this icon is sent and change the status to 12.
    You can check the tRfc queue with SM58 and initiate resending by right click choosing execute LUW.
    in BD75 you can check “unsent idocs” and you will get a similar list.

  • Note 189887 – ALE: Help report to search for IDocs sent twice: program ZDUPLICATEIDOC

Miscellaneous

  • RC1_IDOC_SET_STATUS program to change IDoc status. Exists since 6.10
  • Monitor for Inbound and Outbound: BD87 / RBDMON00 to restart erroneous IDocs
  • Archiving:
    • RSEXARCA archives IDocs. They must be in an archivable status (not possible to archive IDocs in status 30 or 64, ie waiting to be processed).
    • RSEXARCL to reload IDocs from archive to the database. Status will be either 35 (outbound) or 71 (inbound).
    • WE47 to change STACUST table; see Note 26564 – IDoc: Can status values be defined?
  • RSECSTAT include contains constants for status

Creating new plant in SAP

This tutorial guides you how to create/Define Plant in SAP step by step.

OX14 – Define Valuation Area (Once your system go live, no more changes possible)

SPRO > SAP Customizing Implementation Guide (IMG) > Enterprise Structure > Definition > Logistics – General > Define copy, delete, check plant [OX10]:

Enter new plant code and update the name and address of the plant:

After updating all mandatory fields click on save icon.

Create company code on IMG:

After creation of new plant you should MM, PP, FI and SD modules to check all their module specific business flows related to your new plant.

OVXB – Create, Change, View Division

OX02 – create Company code

OX18 – Assign Plant to company code

OBY6 – provide details for Company code global data

OX19 – Assignment of company code to the Controlling Area:

OB45 – Create credit Control Area

OB38 – Assign company code to Credit Control Area
OMJ7 – Assign business area to Plant/Valuation area and division

SAP SD books

book2

“Implementing SAP ERP Sales & Distribution”, Glynn C. Williams, 2008
Download

book1
“Configuring SAP ERP Sales and Distribution 2010”, Kapil Sharma, Ashutosh Mutsaddi, 2010
Download

book3

“100 Things You Should Know About Sales and Distribution in SAP”, Matt Chudy, Luis Castedo, 2012


Common SAP R/3 functions manual, 20.1 Mb
Download

Also:
PP Material Requirements Planning

BoM’s

LO Batch Management

P.S. There are four books related to SAP SD Certification – TSCM60 (parts 1 & 2) and TSCM62 (parts 1 & 2).