Место этой ошибки известно:
Метод: CANCEL_DOCUMENTS, Class CL_IPMIS_BD_BILLDOCCONSVS_IMPL, Component IPMIS_BD.
С первой выбранной позицией все работает без ошибок. При прохождении в цикле второй позиции метод get_related_entities не возвращает related Entity:
Code:
lr_bdh_col = lr_bdh_entity->get_related_entities( iv_relation_name = lc_bd_bdcancel_rel ).
и инстанц lr_bo? = lr_bdh_col->get_first (). не инициализируется.
Это стандартный код SAP, который на одной CRM-системе работает корректно, на другой тот же код дает вышеуказанную ошибку
Кусок кода, в котором возникает ошибка - Метод CANCEL_DOCUMENTS:
Code:
TRY.
lr_bdh_entity ?= lr_cuco->typed_context->ipmibdheadercons->collection_wrapper->get_first( ).
WHILE lr_bdh_entity IS BOUND.
lr_bdh_col = lr_bdh_entity->get_related_entities( iv_relation_name = lc_bd_bdcancel_rel ). "при втором проходе в цикле related Entity не возвращаются
lr_bo ?= lr_bdh_col->get_first( ). "при втором проходе дает INITIAL и соответственно перепрыгивает WHILE, что дает выше указанную ошибку
WHILE lr_bo IS BOUND
lr_bo_dupl = lr_cuco->typed_context->ipmibdheadercancel->collection_wrapper->find( iv_bo = lr_bo ).
IF lr_bo_dupl IS NOT BOUND.
lr_cuco->typed_context->ipmibdheadercancel->collection_wrapper->add( iv_entity = lr_bo ).
ENDIF.
lr_bo ?= lr_bdh_col->get_next( ).
ENDWHILE. lr_bdh_col->clear( ).
lr_bdh_entity ?= lr_cuco->typed_context->ipmibdheadercons->collection_wrapper->get_next( ). "Здесь переход на вторую Фактуру
ENDWHILE.
CATCH cx_root.
ENDTRY.
Кто-нибудь сталкивался с подобным явлением? Как решить проблему?