Добрый день.
Muchacha написал(а):
Можете подробней описать?
Какой именно BADI? Что должно быть во внедрении?
В программе J_3RF_TAX_PBU18_DATA_TRANS есть
METHOD transform_data. Если заглянуть в него, то увидите, что там есть условие проверки на наличие внедренного BADI (
/CCIS/PBU18TRANSFORM):
Code:
IF _transformation_badi IS BOUND.
* For all transformation codes
LOOP AT _it_transform_codes INTO wa_transform.
* Call BADI for documents lines transformation
CALL METHOD _transformation_badi->transform
EXPORTING
flt_val = wa_transform-code
p_it_select_settings =
im_source_data_portion-it_sel_settings
CHANGING
p_it_sidata = ch_it_selected_data
.
ENDLOOP.
* Set document type (DOCCT = 'S')
* Set record type (RRCTY = '0')
* Set version (RVERS = _DEST_VERSION)
* Set activity (ACTIV = _DEST_ACTIVITY)
* Set ledger (RLDNR = _DEST_LEDGER)
* Set company code (BUKRS = _COMPANY_CODE)
CALL METHOD set_source_documents_attr
CHANGING
ch_it_sidata = ch_it_selected_data.
ENDIF.
Внутри этого
IF есть вызов метода:
Code:
CALL METHOD set_source_documents_attr
CHANGING
ch_it_sidata = ch_it_selected_data.
где происходит заполнение некоторых атрибутов для проводки документа в FI-SL (в частности там заполняется БЕ, которая в дальнейшем участвует в поиске номера документа в ФМ
'NUMBER_GET_NEXT', где собственно и вываливается ошибка).
Таким образом, если у нас нет внедренных BADI, то и заполнение атрибутов не происходит.
Проблема в том, что в EPR2005
/CCIS/PBU18TRANSFORM определено как Enhancement Spot (новая концепция Enhancement), а поиск IMPLEMENTATION этого BADI в программе описан по старой технологии (класический BADI).
В зависимости от того, что Вам надо следать, можно предложить несколько вариантов решения этой проблеммы:
1. Если Вам не надо использовать BADI, то можно получить в SAP ключик к этой программе и перенести ENDIF до вызова метода
set_source_documents_attr вот так:
Code:
IF _transformation_badi IS BOUND.
* For all transformation codes
LOOP AT _it_transform_codes INTO wa_transform.
* Call BADI for documents lines transformation
CALL METHOD _transformation_badi->transform
EXPORTING
flt_val = wa_transform-code
p_it_select_settings =
im_source_data_portion-it_sel_settings
CHANGING
p_it_sidata = ch_it_selected_data
.
ENDLOOP.
ENDIF.
* Set document type (DOCCT = 'S')
* Set record type (RRCTY = '0')
* Set version (RVERS = _DEST_VERSION)
* Set activity (ACTIV = _DEST_ACTIVITY)
* Set ledger (RLDNR = _DEST_LEDGER)
* Set company code (BUKRS = _COMPANY_CODE)
CALL METHOD set_source_documents_attr
CHANGING
ch_it_sidata = ch_it_selected_data .
или сделать копию программы в Z* и там все поправить.
2. Если вы хотите использовать BADI, то опять несколько вариантов:
а) Вариант
torro13. Сделать копию программы в Z*. Сделать свое собственное классическое DEFINITION и INPLEMENTATION BADI (как оно должно выглядеть можно глянуть в более ранних версиях SAP при условии установленного ТПР). Поправить описание переменной
_transformation_badi на свой интерфейс, используемый при DEFINITION Z* BADI.
б) Сделать копию программы в Z*. Переписать обработку стандартного BADI на новую технологию.
3. Написать гневное письмо в SAP указанием ошибки и ждать...