Текущее время: Пн, июл 28 2025, 01:14

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Вставка записей в хеш-таблицу
СообщениеДобавлено: Ср, сен 14 2005, 16:51 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Проблема: делаю обход позиций документа, ошибочные позиции нужно выдать в журнал ошибок. Журнал ошибок - это табличный параметр метода бади. Проблема в том, что надо добавить запись в журнал в цикле обхода позиций документа. А "прямые или косвенные индексные операции не разрешены для хеш-таблиц". Как выкрутиться? Пробовал добавить в обычную таблицу со строкой того же типа, а потом APPEND LINES. Пишет то же сообщение об ошибке.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 14 2005, 16:59 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Попробуйте так:
INSERT [wa INTO|INITIAL LINE INTO] TABLE itab


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 15 2005, 08:11 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Именно так и делаю. Вставка записей в таблицу сt_finchdel типа FINCHDEL_T - это хеш-таблица с типом строки FINCHDEL. Его структура:
Code:
VBELN   VBELN_VL   Поставка
PRUEFUNG   PRUEFUNG   Выполненная проверка
MSGTY   SYMSGTY   Сообщения, тип сообщения
MSGNO   SYMSGNO   Сообщения, номер сообщения
MSGID   SYMSGID   Сообщения, класс сообщений
MSGV1   SYMSGV   Сообщения, переменная сообщения
MSGV2   SYMSGV   Сообщения, переменная сообщения
MSGV3   SYMSGV   Сообщения, переменная сообщения
MSGV4   SYMSGV   Сообщения, переменная сообщения

Вставка в таблицу:
Code:
LOOP AT it_xlips ASSIGNING <f_xlips>.
  pikmg = <f_xlips>-pikmg.
  LOOP AT it_ylips FROM ind ASSIGNING <f_ylips>.
    IF <f_ylips>-vbeln = <f_ylips>-vbeln AND <f_ylips>-posnr = <f_ylips>-posnr.
      <f_xlips>-pikmg = <f_ylips>-pikmg.
      IF <f_xlips> NE <f_ylips>.
        wa_finchdel-vbeln    = <f_ylips>-vbeln.
        wa_finchdel-pruefung = 99.
        wa_finchdel-msgty    = 'E'.
        wa_finchdel-msgno    = '020'.
        wa_finchdel-msgid    = 'ZOSN'.
        wa_finchdel-msgv1    = <f_xlips>-posnr.
        INSERT wa_finchdel INTO сt_finchdel.
      ELSE.
        <f_xlips>-pikmg = pikmg.
      ENDIF.
      ind = sy-tabix + 1.
      EXIT.
    ENDIF.
  ENDLOOP.
ENDLOOP.

Здесь таблица it_xlips отображает текущее сост. позиции, уt_xlips - состояние в БД (т.е., сохраненное состояние). На этот код выдается ошибка:
Code:
You cannot use explicit or implicit index operations on tables with types "HASHED TABLE" or "ANY TABLE". "CT_FINCHDEL" has the type "HASHED TABLE".


Последний раз редактировалось RoadRunner Чт, сен 15 2005, 10:13, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 15 2005, 08:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
INSERT wa_finchdel INTO TABLE it_finchdel.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 15 2005, 09:49 
Гость
Та же ошибка


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 15 2005, 10:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
А место точно это?
Вроде ругается на CT_FINCHDEL.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 15 2005, 10:08 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Пардон, поспешил... Место то, просто кусок кода не вполне точно записал... Осталось с тех пор, когда пытался добавить в свою таблицу. Поэтому вначале результатов не видел :oops: Благополучно заменил в коде it_finchdel на ct_finchdel. Сейчас все работает, журнал ругается. Всем огромная благодарность!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вставка записей в хеш-таблицу
СообщениеДобавлено: Вт, авг 11 2009, 16:58 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 11 2009, 16:49
Сообщения: 45
У меня похожая проблема! В методе IF_EX_LE_SHP_DELIVERY_PROC~DELIVERY_FINAL_CHECK, BADi LE_SHP_DELIVERY_PROC.

Заполняю параметр-таблицу CT_FINCHDEL сообщением с ошибкой(типа E). А ОШИБКА выводится не в Журнале ошибок в новом окне, а в статусной строке. От чего это зависит??? Мне надо, чтобы сообщение выводилось в журнале ошибок...



Code:
method IF_EX_LE_SHP_DELIVERY_PROC~DELIVERY_FINAL_CHECK.
DATA:  ls_log      TYPE FINCHDEL.

  FIELD-SYMBOLS: <fs_xlips> TYPE lipsvb.
  FIELD-SYMBOLS: <fs_ylips> TYPE lipsvb.

check not it_ylips[] is initial.
  LOOP AT it_xlips ASSIGNING <fs_xlips>.
    READ TABLE it_ylips ASSIGNING <fs_ylips>
              WITH KEY vbeln = <fs_xlips>-vbeln
                       posnr = <fs_xlips>-posnr
                       bwtar = <fs_xlips>-bwtar
                .

    IF sy-subrc NE 0.
      ls_log-vbeln = <fs_xlips>-vbeln.
      ls_log-msgty = 'E'.
      ls_log-msgid = 'ZDELIVERY'.
      ls_log-msgno = '005'.
      insert ls_log into table CT_FINCHDEL.
      EXIT.
    ENDIF.
  ENDLOOP.
endmethod.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вставка записей в хеш-таблицу
СообщениеДобавлено: Вт, авг 11 2009, 17:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
некропостер :mrgreen:

попробуй указать (см. пост выше)
ls_log-pruefung = 99.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вставка записей в хеш-таблицу
СообщениеДобавлено: Вт, авг 11 2009, 17:12 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 11 2009, 16:49
Сообщения: 45
trop написал(а):
некропостер :mrgreen:

попробуй указать (см. пост выше)
ls_log-pruefung = 99.


Спасибо за совет, но

ls_log-PRUEFUNG = '99'.


Не помогло...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вставка записей в хеш-таблицу
СообщениеДобавлено: Вт, авг 11 2009, 17:19 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 11 2009, 16:49
Сообщения: 45
Вероятнее всего, может не заполняться таблица журнала ошибок моец ошибкой из-за условия в стандартном коде:

Code:
*... Prufung Lieferung vor Folgeaktion Warenausgang
    PERFORM DELIVERY_FINAL_CHECK(SAPMV50A)
            USING LV_SUBRC
                  CHARX
                  LF_AUTO_WADAT.                             "n_979614
    IF LV_SUBRC NE 0.                                       "HP_208240
      LOOP AT GT_FINCHDEL INTO LS_FINCHDEL
                          WHERE VBELN EQ LIKP-VBELN.
        WAT-MSGNO = LS_FINCHDEL-MSGNO.
        WAT-MSGTY = LS_FINCHDEL-MSGTY.
        WAT-MSGID = LS_FINCHDEL-MSGID.
        WAT-MSGV1 = LS_FINCHDEL-MSGV1.
        WAT-MSGV2 = LS_FINCHDEL-MSGV2.
        WAT-MSGV3 = LS_FINCHDEL-MSGV3.
        WAT-MSGV4 = LS_FINCHDEL-MSGV4.
        APPEND WAT.
      ENDLOOP.
      WB_LS_ERR = CHARX.
    ENDIF.


В этой подпрограмме вызывается метод моего бади.

WAT[], по ходу дела, таблица, которая попадает в журнал ошибок...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вставка записей в хеш-таблицу
СообщениеДобавлено: Вт, авг 11 2009, 19:33 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Для этого BADI есть пример, см. SE24 -> CL_EXM_IM_LE_SHP_DELIVERY_PROC.

В документации нигде не говорится, что сообщение обязательно будет выводиться в журнале ошибок. Там только сказано, что вы можете предотвратить сохранение поставки, добавив сообщение типа Е.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вставка записей в хеш-таблицу
СообщениеДобавлено: Вт, авг 11 2009, 20:10 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 11 2009, 16:49
Сообщения: 45
А каким методом тогда воспользоваться, подскажите...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вставка записей в хеш-таблицу
СообщениеДобавлено: Ср, авг 12 2009, 15:31 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 11 2009, 16:49
Сообщения: 45
Помогите рашить проблему, второй день работа стоит из-за этого :)

Как вывести ошибочное сообщение в журнал ошибок данной транзакции, используя метод DELIVERY_FINAL_CHECK???

Сообщение выводится, но в строке состояний...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вставка записей в хеш-таблицу
СообщениеДобавлено: Ср, авг 12 2009, 16:40 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Посмотрите на метод SAVE_DOCUMENT_PREPARE. Точнее на его параметр CT_LOG.


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

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


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

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


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

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