Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => SMOD/CMOD - Расширения => Тема розпочата: Uukrul від Серпень 21, 2018, 11:02:42 ДП
Как добавить собственные поля в карточку основного средства, вроде бы информации в интернете полно, так что кому надо найдут. Хотелось бы поделится новыми тараканами, так как старые я так думаю и так всем известны. В общем имеем S\4HANA 1709, последний пакет обновлений 102 (скоро правда 103 обещают). Есть пользовательское расширение и ФМ: EXIT_SAPLAIST_002, который реализует собственно вызов логики расширения. Параметры следующие:
FUNCTION EXIT_SAPLAIST_002.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_ANLA) LIKE ANLA STRUCTURE ANLA
*" VALUE(I_ANLV) LIKE ANLV STRUCTURE ANLV
*" VALUE(I_ANLU) LIKE ANLU STRUCTURE ANLU
*" VALUE(I_MODE)
*" VALUE(I_XSUBNO)
*" VALUE(I_TRANSV) LIKE T082I-TRANSV DEFAULT SPACE
*" TABLES
*" T_ANLZ STRUCTURE ANLZ
*" T_ANLB STRUCTURE ANLB
*"----------------------------------------------------------------------
INCLUDE ZXAISU03 .
ENDFUNCTION.
В общем все как обычно. Вызов данного экзита происходит в коде модуля: LAISTF93 и сделано это следующим образом:
*----------------------------------International Development - End
* Daten für User-Subscreens übergeben
ls_anlu = xanlu.
CALL CUSTOMER-FUNCTION '002'
EXPORTING i_anla = anla
i_anlv = anlv
i_anlu = ls_anlu
i_mode = g_trtyp
i_xsubno = g_untnr
i_transv = ld_transv "i note 376248
TABLES t_anlz = xanlz
t_anlb = xanlb.
В общем ничего не предвещало так сказать ..., но проблема таки нашлась, как оказалось переменные таблицы xanlz и xanlb имеют несколько другую длину строки чем указано в принимающем модуле, где стоки должны быть типа ANLZ и ANLB соответственно. При этом отличия заключаться отсутствии последних полей, точнее поля KZ. которое содержит признак того как обрабатывать записи при сохранении карточки ОС, в данном случае так как это была новая карточка то там стоит признак I - добавление записи. Поэтому такая мелочь в передаче параметров приводит к тому, что после передачи например xanlb и возврата ее назад (с самой таблицей ничего не делалось она там просто сохранилась во внутреннюю переменную и восстанавливалась обратно), происходило обрезание значений. И по факту, карточка ОС сохранилась без областей оценки, так как терялся флаг обработки областей. Судя по объявлению типов:
DATA: BEGIN OF xanlb OCCURS 14.
INCLUDE STRUCTURE ranlb.
DATA: END OF xanlb.
Структура RANLB - Structure of Change Document: Generated by RSSCD000, была модифицирована 11.07.2018. Ну а раньше мы до экзитов в ОС просто не добирались. Разница между этой структурой и принятой таблицей в этих двух полях. Подозреваю что они появились в июле.
KZ 1 Тип CDCHNGIND
T093BWAERS 1 Тип WAERS
PS: Пока временно решение ничего не делать с таблицами T_ANLZ и T_ANLB в данном экзите. А так ждем ответа от SAP.
Как там, я хренею дорогая редакция, отправил об этой проблеме сообщение на выходе получил ответ, что проблема в кастомер-коде и они не занимаются решением проблем кастом-кода... Вопрос, где они там этих дебилов набирают? Ну по традиции второй вопрос, что делать не задаю, похоже просто забить придется на время. Переписываться как-то облом, да времени нет особо.