Станьте участником SAPLAND и получите доступ к самым интересным публикациям SAPPRO
Зарегистрироваться
Отличный пример с автопромом!!! Где он сейчас?
На одном открывшемся автопреприятии, когда стали набирать штат, писали одним из ограничений: "без опыта работы в автопроме". Как вы думаете почему? Я думаю потому что научить с чистого листа как правильно, проще, чем переучить наученного делать не правильно. Так и тут, в этой статье вы прочитаете, запомните и потом выбить из вас эти не правильные знания будет, к сожалению, не реально. Поэтому не надо про пусть цветут. Чем так, лучше уже никак, вам же потом с этим работать, точнее другим с тем что вы напишете.
Что касается вообще программирования, то для начала неплохо бы почитать вообще о принципах работы абстрактных программ, хотя если честно я такой книги не встречал, ну чтобы с нуля.. хотя нет, была такая книжка: Мартузан Б.Я.
"Как Петя Бейсиков Тоню Соображалкину программировать учил", вот как по мне, то для тех кто вообще никогда нигде не программировал, она будет в самый раз. К сожалению про скачать я ее не видел, а свой экземпляр потерял лет 20 назад :-(.
Олег, не судите строго - пусть цветут все цветы.
Вероятно, все указанные вами ошибки и впрямь допущены, и не исключено даже, что они существенны, и, тем не менее, аудитория есть и у этого материала: это я, к примеру. Я функциональщик, попавший в SAP из предметной области (бухгалтерия), и за несколько лет, к стыду своему, так ABAP и не освоивший, по причине отсутствия базовых навыков в программировании (ну и лени, разумеется, куда же без неё). Соответственно, эта статья - аккурат для таких, как я, пусть наше число и невелико, и лично я автора вопреки потоку критики (возможно, справедливой) поддержу
Ужас, ужас, ужас - из анекдота можно сказать... Роман, своей колонкой об ABAP, мне даже сложно сказать то ли вы веселите людей, то ли в гоняете в смертную тоску, но то количество, ну скажем так "не соответствий правде", в каждом абзаце просто зашкаливает. Я все понимаю, колонка авторская и т.д. но может перед публикацией будете отдавать кому-то рядом, кто знает ABAP на почитать?
SE80 это замечательно, но можно и отдельной функцией SE37, хотя конечно SE80 гораздо нагляднее. Далее из ошибок, имя функционального модуля, согласно новым веяниям, должно начинаться с Z_ или Y_, а иначе вы получаете предупреждение: "Имя функционального модуля находится в области имен SAP.", т.е. гарантии что SAP не использует ваш вариант имени нет. Ну вот такие изменения, кажется с версии 4.6 в именовании объектов для модулей. Далее или точнее ранее, открою страшную тайну подпрограмма тоже может вызваться много раз и в разных программах, да и кстати модулей в группе функций действительно может быть много, но вот чтобы они "ВСЕ" были корректно написаны и сгенерированы это как раз не обязательное условие. Для переменных указанных на закладках импорта и экспорта, если установить галку "Переменные значения", то такие переменные тоже могут изменятся в тесте функционального модуля. А дальше, про IN UPDATE TASK, это вы конечно мощно "отожгли", потому что это просто значит что модуль будет выполнятся в процессе обновления, но никак не во время когда система будет менее или более загружена. В общем очень как-то печально все... точнее полный ужас...
=============================
Ну и собственно сам анекдот:
В публичный дом приходит посетитель — стра-а-ашный, аж жуть! Без содрогания сердца на такого и не взглянешь. Но что делать! И мадам отправляет к нему девушку. Через пару минут девушка пулей вылетает из комнаты и буквально слетает по лестнице, на ходу причитая: "Ужас! Ужас! Ужас!".
Тогда мадам отправляет к нему вторую девушку. Через минуту-другую сцена повторяется: девица чуть не кубарем слетает с лестницы, шепча в страхе: "Ужас! Ужас! Ужас!"
Мадам отправляет к нему третью девушку, но исход тот же: "Ужас! Ужас! Ужас!"
Что делать! Желания клиента — закон. И Мадам отправляется к нему сама. Девицы со страхом сгрудились внизу в ожидании того, что же сейчас произойдет. Но проходит две минуты, пять минут, десять, пятнадцать... В конце концов через двадцать минут мадам выходит из комнаты, победоносно спускается по лестнице и обращается к своему трудовому коллективу: "Ну, что?! Ну, да! Ну, ужас! Но не "ужас-ужас-ужас"!" :)
Олег, спасибо за подсказку. Но видимо этот отчет не предназначен для пользования обычными юзерами. Может быть есть какие-то стандартные транзакции, такие как S_ALR_87012089 и S_ALR_87012182, только для материалов?
а компонент ST-A/PI ?
Да как-то так, нету... Сам удивлен. В IDES-е есть такое дело,а тут нет...
Почему статус?
Это тип транзакции.
Какая версия системы?
в 6.0 вроде как ST12 есть во всех пакетах.
и её даже развивают.
Правда, кажется, в Ehp7 программа уже не /SSA/STA.
Мда, у меня в системе ни того ни другого уже нет.
Ну это ты как-то в рисунке 17 жестко решил статус документа проверять в расширениях.
Для части 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.
Касательно эффективности внедрения ERP системы.
Часто сталкиваюсь вот с какой ситуацией. Формально заказчиком внедрения системы является собственник компании, либо совет директоров. Цель внедрения системы для такого заказчика формулируется как "прозрачность, эффективность, единообразие, стандартизация процессов". Затем заказчик делегирует ведение проекта рабочей группе. Как правило в эту группу попадают "заинтересованные" лица в том, чтобы все вышеперечисленные цели проекта не выполнялись, так как в противном случае снижается их "интерес", однако их требования могут звучать как "сделать не хуже, чем в нашей системе". В итоге исполнитель, то есть консультант по внедрению, оказывается внутри конфликта интересов, при чем для сохранения проекта и соблюдения сроков ему приходится идти навстречу рабочей группе, ибо это "заинтересованные" во всех смыслах. Таким образом руками специалиста текущие процессы перекладываются в новую систему "как есть", зачастую в обход стандартов и методологий новой системы. В конечном итоге, если проект стартует, может так оказаться, что вроде как и "интерес" соблюден, и в тоже время эффективность неоднозначна. Кто виноват, не трудно догадаться.
Есть ли у вас, дорогие эксперты, какие-то статьи или рекомендации на эту тему? Как должен действовать исполнитель, чтобы умудрится и грамотно систему передать и выполнить все таки основную цель автоматизации?
Не знаю насчет новых версий, у нас работает под ней программа /SSA/STA.
Для части 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.
Похоже что ее вынесли что ли уже из системы в новых версиях?
Не буду спорить, у меня в системе ST12 такой транзакции нет? SE12 знаю, SM12 тоже знаю, чебурашки на имя ST12 - не знаю :-(
Комментарий от
Олег Точенюк
| 01 мая 2014, 21:47
Олег Башкатов 01 мая 2014, 20:12
Он - пример, автопредприятие)))