Текущее время: Чт, апр 25 2024, 02:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Создать АО с пользовательскими полями через - BAPI_RE_AO_CREATE
СообщениеДобавлено: Пт, авг 12 2011, 08:26 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 12 2011, 05:40
Сообщения: 1
Всем привет!

Возникла такая критическая проблема.

При создании объектов в 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
Но такое поле я даже не затрагиваю при заполнении. Получается так что внутренняя структура при попытки отдать данные не соответствует оригиналу.


Выложу код программы, как я делаю контейнер на отправку в Бапи, может быть где то ошибаюсь, и взываю вас помочь найти этот недочёт! :roll:

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'.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создать АО с пользовательскими полями через - BAPI_RE_AO_CREATE
СообщениеДобавлено: Вт, авг 16 2011, 17:03 
Специалист
Специалист

Зарегистрирован:
Пт, янв 23 2009, 12:29
Сообщения: 127
Откуда: Москва
Пол: Мужской
А не проще ли для этого использовать апишку: API_RE_AO_CREATE. Вроде там никаких проблем не возникает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB