Уточняю:
при проведении калькуляции без кол-ой структуры
система выдает ошибку: "Завод не существует" № сообщения CK598
для ЛЮБОГО материала, завода, схемы калькуляции, даже в стан-
дарной БЕ SAP 0001 и завода 0001 (то есть для созданного к нему
материала) . С данными Идеса тоже самое, ноты имеющиеся на данный
момент проверены (331652 в том числе), ошибка не зависит от манданта.
При этом калькуляция с количественной структурой проходит.
FI, MM, CO проверены по сто раз. Поэтому пришла мысль, что это
что-то программное, а не из-за параметров.
Полез в отладку смореть программу. Ошибка возникает при повтором нажатии ентера (или кнопки даты по умолчанию). При первом нажатии
все провеки проходят нормально, при втором они повторяются, но одна из процедур вызывается с незаполненой структурой ="" (там должен быть номер завода, материала и т.д.) и ищет в таблице t001w завод= "", которого там конечно нет. Первый раз вызов этой процедуры происходит с другим правильным параметром (берется поле cki64-werks из динпро), поэтому все проходит. В релизе 4.6
данной структуры нет и все работает, то есть там немного другой алгоритм и сравнить сложно. Да и отследить логику программы (может
она пошла не по той ветке и делает вызов этой процедуры не из того
места(=не с тем параметром)) - задача для настоящих ниндзя.
Еще подробнее (хотя наверно яснее не станет):
В моей системе ошибка возникает при повтором нажатии ентера (или
кнопки даты по умолчанию). В этом случае система в
процедуре check_plankalk_i0c вызывает функцию
ck_f_org_elements_plant c незаполненной структурой checkvalues
(она получается из структуры ckipcmc), где и происходит ошибка,
так как название завода ="" и его конечно нет в таблице t001w.
При первом прогоне проверок (после первого ентера) импорта
checkvalues в ck_f_org_elements_plant не происходит, эта функция
вызывается с экранным полем завода и все работает.
В 4.6 структуры ckipcmc нет. У меня в системе она не заполняется.
Место ее заполнения я нашел, но отследить логику, почему туда не доходит (MODULE CHECK_MATERIAL_I0C строки 16-20) уже совсем тяжко(все определяет обращение к процедур execute_check, которая определяет надо ли выполнять какой-то фрагмент, но она разделена условие на две части и принцип деления не совсем понятен (кальк. с колич. и без ?) ). Поскольку идет обращение EXECUTE_CHECK 'CHECK_MATERIAL_I0C', а параметр 'CHECK_MATERIAL_I0C' находится в той части функции EXECUTE_CHECK, где, как я предполагаю, речь идет о кальк. с колич. структурой
|
|