Всем привет!
Возникла такая критическая проблема.
При создании объектов в BAPI_RE_AO_CREATE со стандартными полями не возникает ни каких проблем, всё гладко, Но нам необходимо заполнять дополнительные пользовательские поля..... И вот тут возникает проблема!
Функция отрабатывается без каких либо ошибок в процессе, и когда уже вроде бы и RETURN выводится таблицу о созданном новом объекте, тут выплывает сообщение о новом письме в почте:
Цитата:
Обновление прервано
Ид. системы.. RTS
Мандант...... 020
Пользователь ********
Транзакция... WB_NEW_WINDOW
Ключ обновления **************************
Создано...... 11.08.2011, 17:10:09
Выполнено.... 11.08.2011, 17:10:09
ИнформПоОшибке Внутренний режим отменен с динамической ошибкой (см. ST22).
вот что говорит мне в ST22:
Цитата:
1. SQL error in the database when accessing a table.
2. Database error text........: "Conversion error on assignment to column ZZ_IZM.
MSGID= Job=061940/RTS13/WP21"
Internal call code.........: "[RSQL/INSR/VIBDAO ]"
Please check the entries in the system log (Transaction SM21).
If the error occures in a non-modified SAP program, you may be able to
find an interim solution in an SAP Note.
If you have access to SAP Notes, carry out a search with the following
keywords:
"DBIF_RSQL_SQL_ERROR" "CX_SY_OPEN_SQL_DB"
"SAPLREDB_VIBDAO_UPDATE" or "LREDB_VIBDAO_UPDATEF01"
"BUFFER_UPDATE"
3. Информация о месте прерывания
Termination occurred in the ABAP program "SAPLREDB_VIBDAO_UPDATE" - in
"BUFFER_UPDATE".
The main program was "RSM13000 ".
In the source code you have the termination point in line 9
of the (Include) program "LREDB_VIBDAO_UPDATEF01".
The program "SAPLREDB_VIBDAO_UPDATE" was started in the update system.
The termination is caused because exception "CX_SY_OPEN_SQL_DB" occurred in
procedure "BUFFER_UPDATE" "(FORM)", but it was neither handled locally nor
declared
in the RAISING clause of its signature.
The procedure is in program "SAPLREDB_VIBDAO_UPDATE "; its source code begins
in line
1 of the (Include program "LREDB_VIBDAO_UPDATEF01 ".
4. Фрагмент исходного текста программы
1 FORM buffer_update.
2 IF gt_buffer_d IS NOT INITIAL.
3 * not supported without archiving!
4 PERFORM buffer_clear.
5 MESSAGE a102(redb) WITH 'VIBDAO'
6 RAISING db_operation_unknown.
7 ENDIF.
8 IF gt_buffer_i IS NOT INITIAL.
>>>>> INSERT vibdao FROM TABLE gt_buffer_i
10 ACCEPTING DUPLICATE KEYS.
11 IF sy-subrc <> 0.
12 PERFORM buffer_clear.
13 MESSAGE a100(redb) WITH 'VIBDAO' 'I' sy-subrc
14 RAISING db_failure.
15 ENDIF.
16 ENDIF.
17 IF gt_buffer_u IS NOT INITIAL.
18 UPDATE vibdao FROM TABLE gt_buffer_u.
19 IF sy-subrc <> 0.
20 PERFORM buffer_clear.
21 MESSAGE a100(redb) WITH 'VIBDAO' 'U' sy-subrc
22 RAISING db_failure.
23 ENDIF.
24 ENDIF.
25 PERFORM buffer_clear.
26 ENDFORM.
вот что вижу в SM21:
Цитата:
Время Тип № Мдт КодТр Приоритет Обл И Ткст
15:33:37 UP1 021 020 BY 4 Database error -406 at INS access to table VIBDAO
15:33:37 UP1 021 020 BY 0 > Conversion error on assignment to column ZZ_IZM. MSGID=
15:33:37 UP1 021 020 BY 0 > Job=061940/RTS13/WP21
15:33:37 UP1 021 020 AB 0 Run-time error "DBIF_RSQL_SQL_ERROR" occurred
15:33:37 UP1 021 020 AB 1 > Short dump "110811 153337 i570_RTS _13 " generated
15:33:37 UP1 021 020 D0 1 Прерывание транзакции 00 (DBIF_RSQL_SQL_ERROR 20110811153337i570_RTS_13 ********** 020 ).
15:33:37 UP1 021 020 R6 5 Update terminated
15:33:37 UP1 021 020 R6 6 > Update key: *****************************
15:33:37 UP1 021 020 R6 7 > Update module: REDB_VIBDAO_UPDATE_S
15:33:37 DIA 000 020 R6 5 Update terminated
Мои мысли вслух:Как понимаю я ошибка возникает при инсерте данных из бапишки дополнительных полей в таблицу VIBDAO, и ругается на несовпадение типов поля ZZ_IZM
Но такое поле я даже не затрагиваю при заполнении. Получается так что внутренняя структура при попытки отдать данные не соответствует оригиналу.
Выложу код программы, как я делаю контейнер на отправку в Бапи, может быть где то ошибаюсь, и взываю вас помочь найти этот недочёт! Code:
TYPES: BEGIN OF EX_TABL,
TYPE LIKE REBDAOFLDS-AOTYPE, "+ ТИП АО
ARCH_OBJ LIKE BAPI_RE_ARCH_OBJECT_KEY-PARENT_ARCH_OBJECT_ID, "+ ИДЕНТИФИКАТОР
AONR LIKE REBDAOFLDS-AONR, "+ № АО
PARTAOID LIKE REBDAOFLDS-PARTAOID, "+ Код ID АО
ZZ_GEMEINDE LIKE REBD_ARCH_OBJECT_CI-ZZ_GEMEINDE, "+ КОД МУНИПАЛ.
ZZ_ADRES LIKE REBD_ARCH_OBJECT_CI-ZZ_ADRES, "+Новый АДРЕС
ZZ_PRED_KAD_MOM LIKE REBD_ARCH_OBJECT_CI-ZZ_PRED_KAD_MOM, "+ПРЕД. КАДАСТ. НОМЕР
ZZ_JERBBAU LIKE REBD_ARCH_OBJECT_CI-ZZ_JERBBAU, " СТАТУС СВЕДЕН. О ЗУ
ZZ_SUNART LIKE REBD_ARCH_OBJECT_CI-ZZ_SUNART, " КАТЕГОРИЯ
ZZ_RAZRISP LIKE REBD_ARCH_OBJECT_CI-ZZ_RAZRISP, " РАЗРЕШЕНИЕ ИСПОЛЬЗОВАНИЯ
ZZ_DATA_GKN LIKE REBD_ARCH_OBJECT_CI-ZZ_DATA_GKN, " ДАТА ВНЕСЕН В ГКН
ZZ_BDNWERT LIKE REBD_ARCH_OBJECT_CI-ZZ_BDNWERT, " КАДАСТРОВАЯ СТОИМОСТЬ
ZZ_BDMQMB1 LIKE REBD_ARCH_OBJECT_CI-ZZ_BDMQMB1, " УДЕЛЬНЫЙ ПОКАЗАТЕЛЬ
ZZ_STAVKA LIKE REBD_ARCH_OBJECT_CI-ZZ_STAVKA, " СТАВКА АРЕНД ПЛАТЫ
ZZ_DBDNWERT LIKE REBD_ARCH_OBJECT_CI-ZZ_DBDNWERT, " ДАТА СТОИМОСТИ
ZZ_DOC_UD_POK LIKE REBD_ARCH_OBJECT_CI-ZZ_DOC_UD_POK, " удельный показатель
ZZ_BDMQMB2 LIKE REBD_ARCH_OBJECT_CI-ZZ_BDMQMB2, " ГОДОВАЯ АР ПЛАТА
ZZ_NZGRZ LIKE REBD_ARCH_OBJECT_CI-ZZ_NZGRZ, " К1
ZZ_NZGFZ LIKE REBD_ARCH_OBJECT_CI-ZZ_NZGFZ, " К2
ZZ_NZBMZ LIKE REBD_ARCH_OBJECT_CI-ZZ_NZBMZ, " К3
END OF EX_TABL.
DATA:
EX_TABL_OBJ_HEAD TYPE EX_TABL occurs 0 WITH HEADER LINE,
lt_extension_in TYPE TABLE OF bapiparex,
ls_extension_in TYPE bapiparex,
ls_ci_data TYPE REBD_ARCH_OBJECT_CI.
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
ARCH_OBJECT-PART_SEPARATOR = ':'. "разделитель
* fill values for user fields
ls_ci_data-ZZ_GEMEINDE = EX_TABL_OBJ_HEAD-ZZ_GEMEINDE. " КОД МУНИПАЛ.
ls_ci_data-ZZ_ADRES = EX_TABL_OBJ_HEAD-ZZ_ADRES. " Новый АДРЕС
ls_ci_data-ZZ_PRED_KAD_MOM = EX_TABL_OBJ_HEAD-ZZ_PRED_KAD_MOM. " ПРЕД. КАДАСТ. НОМЕР
ls_ci_data-ZZ_SUNART = EX_TABL_OBJ_HEAD-ZZ_SUNART. " КАТЕГОРИЯ
ls_ci_data-ZZ_RAZRISP = EX_TABL_OBJ_HEAD-ZZ_RAZRISP. " РАЗРЕШЕНИЕ ИСПОЛЬЗОВАНИЯ
ls_ci_data-ZZ_JERBBAU = EX_TABL_OBJ_HEAD-ZZ_JERBBAU. "статус свед.о ЗУ
ls_ci_data-ZZ_DATA_GKN = EX_TABL_OBJ_HEAD-ZZ_DATA_GKN. " ДАТА ВНЕСЕН В ГКН
ls_ci_data-ZZ_BDNWERT = EX_TABL_OBJ_HEAD-ZZ_BDNWERT. " КАДАСТРОВАЯ СТОИМОСТЬ
ls_ci_data-ZZ_BDMQMB1 = EX_TABL_OBJ_HEAD-ZZ_BDMQMB1. " УДЕЛЬНЫЙ ПОКАЗАТЕЛЬ
ls_ci_data-ZZ_STAVKA = EX_TABL_OBJ_HEAD-ZZ_STAVKA. " СТАВКА АРЕНД ПЛАТЫ
ls_ci_data-ZZ_DBDNWERT = EX_TABL_OBJ_HEAD-ZZ_DBDNWERT. " ДАТА СТОИМОСТИ
ls_ci_data-ZZ_DOC_UD_POK = EX_TABL_OBJ_HEAD-ZZ_DOC_UD_POK. " удельный показатель
ls_ci_data-ZZ_BDMQMB2 = EX_TABL_OBJ_HEAD-ZZ_BDMQMB2. " ГОДОВАЯ АР ПЛАТА
ls_ci_data-ZZ_NZGRZ = EX_TABL_OBJ_HEAD-ZZ_NZGRZ. "K1
ls_ci_data-ZZ_NZGFZ = EX_TABL_OBJ_HEAD-ZZ_NZGFZ. "K2
ls_ci_data-ZZ_NZBMZ = EX_TABL_OBJ_HEAD-ZZ_NZBMZ. "K3
* делаем контейнер
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = ls_ci_data
IMPORTING
ex_container = ls_extension_in-valuepart1
EXCEPTIONS
OTHERS = 0.
* задаём BAPI-parameter
ls_extension_in-structure = 'CI_DATA'.
APPEND ls_extension_in TO lt_extension_in.
CALL FUNCTION 'BAPI_RE_AO_CREATE'
EXPORTING
ARCH_OBJECT_TYPE = 'ЗУ' "ТИП
PARENT_ARCH_OBJECT_ID = EX_TABL_OBJ_HEAD-ARCH_OBJ "ИДЕНТИФИКАТОР
PART_ARCH_OBJECT_ID_EXT = EX_TABL_OBJ_HEAD-PARTAOID "КОД ID АО
ARCH_OBJECT_NUMBER_EXT = EX_TABL_OBJ_HEAD-AONR "НОМ АО
ARCH_OBJECT = ARCH_OBJECT
OBJECT_ADDRESS = OBJECT_ADDRESS
TEST_RUN = ' '
IMPORTING
ARCHOBJECTID = ARCHOBJECTID
TABLES
EXTENSION_IN = lt_extension_in
RETURN = RETURN_TABLE
* TEXT = TEXT
EXCEPTIONS
OTHERS = 1.
* Commit
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.