Здравствуйте, уважаемые коллеги!
Крик моей души посвящен исключительно стандарту SAP, косяк в котором приводит к ошибкам в Z-части (один из энхансментов, потребляющих значение LIPS-LGORT).
Так вот, в BAPI_OUTB_DELIVERY_CHANGE, в подпрограмме spe_vbpok_obdlv_fill_chg( include /SPE/V50IF01 ), есть конструкция:
Code:
SORT ct_vbpok BY vbeln_vl posnr_vl.
Если в полях vbeln_vl и posnr_vl значения повторяются от строки к строке, то нестабильная сортировка меняет итоговый порядок строк таблицы CT_VBPOK.
В этом нет ничего нового, скажете вы, однако сразу за этой сортировкой следует цикл по таблице it_item_data_spl, в котором заложен алгоритм,
изменяющий данные таблицы CT_VBPOK, и изменяет он их по индексу SY-TABIX, который устанавливается оператором READ TABLE, а коли строки в CT_VBPOK изменили порядок своего следования, то такая модификация таблицы теряет свой смысл для первой итерации, когда из it_item_data_spl берется номер вышестоящей позиции, и по нему
READ TABLE читает данные в CT_VBPOK (в ней все VBELN_VL и POSNR_VL имеют одинаковые значения), а затем, найдя первую же строку, изменяет данные в ней.
Первая строка в этой таблице носит особый смысл: она не содержит номер партии, и в дальнейшем именно этот критерий (CT_VBPOK-BATCH IS INITIAL) сыграет свою роль, но в паре со значением CT_VBPOK-XWMPP = 'X'.
И тут получается, что если порядок строк изменился, а меняется он так, как будто бы строки таблицы расположили в обратном порядке, то ставшая последней первая строка
никогда не получит значение CT_VBPOK-XWMPP = 'X', что нарушит нормальную работу BAPI, и в LIPS-LGORT не подставится значение склада, а затем Z-энхансмент прервет
выполнение BAPI при проверке запасов, хотя запасы-то есть, просто нет значения LIPS-LGORT, являющегося аргументом запроса.
Сталкивались ли вы с таким безобразием? Может быть, есть нота, где используется SORT STABLE или что-то иное? Мы таких нот не нашли (может, плохо искали).
Скажу лишь только то, что такие поставки всплывают где-то раз в полгода небольшими пачками (штук по пять). Наблюдается это уже года два (по словам коллег), но продебажили эту ситуацию и нашли явный огрех в стандарте только сейчас.
Дополнительные опорные данные: SAP_BASIS - 740, SP-Level - 0011.
Если нужны версии ещё каких-то компонентов, скажите, я напишу.