Все события и герои вымышлены. Любые совпадения с реальными личностями случайны.
Акт первый
Консультант: Нам нужно массово списать материалы, но так чтобы в оборотах это было отражено в особом периоде.
Старый фрилансер: Ну дело житейское, разработчика своего попросите.
Консультант: Мы спрашивали, но он сказал, что это невозможно.
Старый фрилансер: Поверь мне, милая, если разработчик говорит, что нечто невозможно, то это значит, что он ленивая жопа.
Консультант: Посмотри, пожалуйста!
Старый фрилансер: Не вопрос, но задачку-то поставь.
Акт второй
Старый фрилансер: Я ещё ничего не начал, но у меня тут недоумение возникло неожиданно.
Консультант: В чём именно?
Старый фрилансер: Списываются запасы в особом периоде, то есть в волшебном тринадцатом месяце, а это где-то в районе двенадцатого боя курантов в ночь на новый год. Чуешь проблему? Форму баланса припоминаешь?
Консультант: Пока не понимаю о чём ты…
Старый фрилансер: Там есть две колонки «На начало отчетного периода» и «На конец отчетного периода». Это будет означать, что в балансе прошлого года за двенадцать месяцев сумма будет отражена в строке «Запасы», а на начало нового года её уже не будет. Или если практически, то у нас конец прошлого года должен совпадать с началом следующего, иначе никак.
Консультант: Ой, да… И что же будет?
Старый фрилансер: Кража в особо крупном размере, статья 188 уголовного кодекса, до 10 лет с конфискацией имущества.
Консультант: Я поговорю с бухгалтером, потом напишу.
Акт третий
Консультант: Я поговорила с бухгалтером. Она говорит, что эта балансовая единица не будет сдавать баланс в следующем году, там у них реорганизация и всякое такое.
Старый фрилансер: Хорошо, как сделаю, напишу.
Акт четвёртый
Старый фрилансер недовольно ворчит:
Ого, они тут уже что-то начали…
Сравним версии… IF BUKRS = ‘1025’ AND SY-UNAME = ‘U00127’…
Ха, хорошее начало…
… UPDATE BKPF SET MONAT = 13 WHERE BELNR = LV_BELNR AND …
Ого и следом COMMIT WORK AND WAIT, это контрольный!
Конечно же, у них так ничего не получится…
Стоп, мне надо прийти в себя…
Переходя на громкий голос: Жаным, у меня перерыв! Пожалуйста, завари чаю. И у нас там ещё остались эти штучки с творогом?
Акт пятый
Старый фрилансер строчит код, тихо разговаривая с самим собой:
… Период надо вынести на экран выбора… не в коде же его прописывать…
… но его нужно открывать на ввод, только если дата проводки стоит тридцать первого декабря…
…а если не тридцать первого декабря, то период закрыть на ввод и перезаписать из даты проводки… классика!
… так-с, расширение 1120 как обычно… вынести в отдельный класс … добавим поле MONAT в SUBST…
… флаг надо как-то передать … ну у меня же класс есть, статический атрибут годится…
… пум-пурум… ну пора пробовать … как же там эту транзакцию…. FB01 … любой технический счет дебет-кредит … готово… теперь в FAGLB03 надо проверить как легло… Ура!
Акт шестой
Консультант: Я начала делать в проде и обнаружила, что в оборотке документ лёг неправильно в двенадцатом периоде. А в самом документе смотрю — там указан тринадцатый период.
Старый фрилансер: Оппа! Сторнируй всё обратно, я сейчас посмотрю что можно сделать. Документов немного? Потому что если много, я могу их запинать ногами, если расчехлю тяжелую артиллерию. Но я стараюсь избегать такого, только при очень-очень большой необходимости.
Консультант: Я буквально пару успела сделать. И что же теперь?
Старый фрилансер: Пока сторнируй, я позже напишу. (себе под нос) Чёрт! Материальные проводки там проходят по другой схеме. Видимо, нужен чуть другой подход к таким важным полям, как MONAT. И я сам не проверил, красавец, чо. И консультанты тоже хороши, сразу в проде. Кажется, они переборщили с верой в мой талант.
Акт седьмой
Старый фрилансер тыкает в браузере, тихо разговаривая с самим собой:
Так-с, а чего прям действительно нельзя? Ну в интерфейсе BAPI период указать нельзя. Ну нельзя, значит нельзя.
Окей, гугл!
ABAP special period substitution.
Ага, SDN это наше всё.
Ни у кого ничего не работает. Все советуют перепробовать любые юзер-экзиты, которые помнят, да выклянчивают очки. Ну народ-то индусский, понятно. Но я всё равно не расист.
Ерунда какая-то.
Окей, гугл! ABAP MIGO posting in special period
Ого, другое дело. Уже более конкретное что-то. Нота?
Ну хорошо, значит пора пришла ноты почитать. Где там был у меня эс-юзер…
Ну вот открываю… и что тут написано… бла-бла-бла… проводки MIGO в особых периодах не поддерживаются… точка.
Вот и приехали. Согласен, конечно, вот поддерживай такую хрень с разъехавшимся балансом в стандарте, это же попытка выстрелить себе в ногу…
Акт восьмой
Старый фрилансер клацает мышкой, тарабанит по клавиатуре, тихо разговаривая с самим собой:
Значит это не годится…
… ну мало ли, что в ноте написано… какие ещё варианты?
GGB1? Да ну её, пока там натыкаешь мышкой — уже устанешь. Да и слабовата артиллерия.
… AC_DOCUMENT? Ну там можно было всякие хитрые штуки делать. Кажется, раз уж код проводки там можно было менять…
… и что тут по стеку вызовов? SAPLRWCL и там у нас T_ACCIT… Ассайн его за ногу…
… Now my hands are really dirty…
… Кстати, о сторно… А если списание материала сторнируют? … SAPMM07M и там уже YMSEG … клеим AWKEY … проверяем бухгалтерский документ … вроде всё …
Теперь надо проверить… Запускаем… период закрыт… как же там транзакцию-то звали…
Окей, Гугл!
SAP MM open period transaction
(…клац… клац…)
Акт девятый
Старый фрилансер: Готово в деве, проверяй.
Консультант: Хорошо!
Старый фрилансер: Только я тут подумал, что надо обработку сторно забабахать, так что проверь и этот сценарий тоже.
Консультант: Отлично, спасибо.
Акт десятый
На экране ноутбука крутятся лекции курса System Conversion to SAP S/4HANA, старый фрилансер задумчиво рассуждает вслух:
Ага, как же. Custom Code Analysis. А потом ещё и Adaptation and Adjustment. Вот и адаптируй потом такие трюки в этой Хане. Надеюсь, что данный кейс понадобится только для закрытия этого года.
А дальше, как говорит старинная народная мудрость, или ишак сдохнет, или султан помрёт.
Вот так и живём…
Переходя на громкий голос: Милая, а что сегодня на ужин? Я заработал нам ещё немного денег.
thumbs up