Loading



+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SE38 - ABAP Редактор (Модератор: Dmitriy)Тема:
|- Условия при каких можно использовать READ TABLE?



Автор Тема: Условия при каких можно использовать READ TABLE?  (Прочитано 3974 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
хочу использовать что-то типа READ TABLE gt_outtab WITH TABLE KEY werks = l_items-werks and matnr = l_items-matnr

по хелпу она (табличка) должна быть обьявлена WITH UNIQUE KEY carrid connid (поля)

Достаточно ли это, можно ли без UNIQUE ? Вроде не дает ....

Какие подводные камни в такой конструкции ?

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #1 : Декабрь 16, 2008, 05:37:32 pm »
Первое: ее потом нельзя использовать в REUSE_ALV_GRID_DISPLAY
("GT_OUTTAB" is not a "STANDARD TABLE". Non-standard tables can only be
passed to IMPORTING, EXPORTING, or CHANGING parameters. parameters.
)

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Условия при каких можно использовать READ TABLE?
« Ответ #2 : Декабрь 16, 2008, 05:39:44 pm »
Подводных камней нет. Без UNIQUE ее просто нужно отсортировать по читаемому ключу. Т.е SORT уже готовой, либо ORDER BY в выборке + то, что ты в хелпе прочитал. 

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Условия при каких можно использовать READ TABLE?
« Ответ #3 : Декабрь 16, 2008, 05:42:50 pm »
Первое: ее потом нельзя использовать в REUSE_ALV_GRID_DISPLAY
("GT_OUTTAB" is not a "STANDARD TABLE". Non-standard tables can only be
passed to IMPORTING, EXPORTING, or CHANGING parameters. parameters.
)
Нужно передавать в стандартную той же структуры, и ее уже в ALV: itab[] = GT_OUTTAB[]. Не забудь почистить: FREE GT_OUTTAB, если она дальше не нужна и кол-во записей велико.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #4 : Декабрь 16, 2008, 05:44:12 pm »
а refresh gt_outtab <> FREE GT_OUTTAB

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #5 : Декабрь 16, 2008, 05:45:43 pm »
что то не пойму с хелпа , как то читать ?

READ TABLE gtq_outtab WITH TABLE KEY werks = resitems-werks matnr = resitems-matnr.
не хавает ....

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Условия при каких можно использовать READ TABLE?
« Ответ #6 : Декабрь 16, 2008, 05:47:48 pm »
а refresh gt_outtab <> FREE GT_OUTTAB
Оператор REFRESH просто очищает внутреннюю табличку, но не освобождает оперативную память.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #7 : Декабрь 16, 2008, 05:49:04 pm »
спасибо

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Условия при каких можно использовать READ TABLE?
« Ответ #8 : Декабрь 16, 2008, 08:29:59 pm »
Изменять сообщения не стал, просто подправлюсь.
WITH UNIQUE KEY означает, что во внутренней таблице не может быть 2-х и более записей с одним ключем и только, но не факт, что данные отсортированы по нему. Можно объявить как ... SORTED TABLE WITH UNIQUE KEY werks matnr, если хочется, чтобы комбинация завод-материал была уникальна. Про сортировку - выше.
2 Паганель: а что за задача? 
« Последнее редактирование: Декабрь 16, 2008, 09:56:01 pm от Dmitriy »

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #9 : Декабрь 16, 2008, 08:34:55 pm »
Изменять сообщения не стал, просто подправлюсь.
WITH UNIQUE KEY означает, что во внутренней таблице не может быть 2-х и более записей с одним ключем и только, но не факт, что данные отсортированы по нему. Можно объявить как ... SORTED TABLE WITH UNIQUE KEY werks matnr, если хочется, чтобы комбинация завод-материал была уникальна.

Т.е. главное отсортировать ? если нету уникальности, то выберется первая запись ?



« Последнее редактирование: Декабрь 16, 2008, 08:38:30 pm от Dmitriy »

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Условия при каких можно использовать READ TABLE?
« Ответ #10 : Декабрь 16, 2008, 08:41:34 pm »
Цитировать
Т.е. главное отсортировать ? если нету уникальности, то выберется первая запись?
Главное и необходимое условие - таблица должна быть отсортирована по ключу, который ты используешь в операторе READ. А про уникальность: вот я и спросил про задачу, зачем тебе данные с уникальной комбинацией завод-материал? Если нет уникальности, то при нескольких одинаковых записях (завод-материал) не факт, что первую прочитает.
« Последнее редактирование: Декабрь 16, 2008, 08:46:29 pm от Dmitriy »

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #11 : Декабрь 16, 2008, 08:46:29 pm »
Главное и необходимое условие - таблица должна быть отсортирована по ключу, который ты используешь в операторе READ. А про уникальность: вот я и спросил про задачу, зачем тебе данные с уникальной комбинацией завод-материал?

да я просто в этой табличке просумировал данные приходов по Заводу .....
И уникальность как бы не нужна, только как то не подумал, что действительно тут данные уникальны ....
« Последнее редактирование: Декабрь 16, 2008, 08:49:38 pm от Dmitriy »

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Условия при каких можно использовать READ TABLE?
« Ответ #12 : Декабрь 16, 2008, 08:56:53 pm »
Цитировать
да я просто в этой табличке просумировал данные приходов по Заводу .....
А тогда понятно, приход каждого материала. Рекомендую оператор SORT в этом случае, тогда не нужно заморачиваться ни при объявлении вн. таблицы (обычная), следовательно, и при передаче ее в ALV Grid (ее же и выводить, не ругнется). Все просто.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #13 : Декабрь 16, 2008, 09:02:14 pm »
я так понял, что мне достаточно отсортировать и вперед, отлично ... есть некоторые нюансы, ну тут как бы расберусь ...

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Условия при каких можно использовать READ TABLE?
« Ответ #14 : Декабрь 16, 2008, 09:04:39 pm »
Да, все верно, только с оператором READ не забывать BINARY SEARCH, ну да об этом уже писали. ;)

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #15 : Декабрь 16, 2008, 09:17:30 pm »
Да, все верно, только с оператором READ не забывать BINARY SEARCH, ну да об этом уже писали. ;)

Ссори, а где это про  BINARY SEARCH писали ? шо-то не находит  поиск ...

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Условия при каких можно использовать READ TABLE?
« Ответ #16 : Декабрь 16, 2008, 09:43:15 pm »
Ссори, а где это про  BINARY SEARCH писали ? шо-то не находит  поиск ...
Немного в теме про оптимизацию. Смысл в том, что с BINARY SEARCH оператор READ работает быстрее, только внутренняя табличка должна быть отсортирована по ключу, в данном случае werks matnr.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #17 : Декабрь 16, 2008, 09:44:55 pm »
так и подумал, сейчас перечитаю пост про оптимизацию

Спасибо

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #18 : Декабрь 17, 2008, 03:34:54 pm »
а как считывать:
READ TABLE gt_outtab WITH TABLE KEY werks = l_items-werks and matnr = l_items-matnr
не катит ......

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #19 : Декабрь 17, 2008, 03:38:24 pm »
Ссори, сам нашел
READ TABLE rt_outtab WITH KEY matnr = gt_vw_prod-matnr
                                     werks = gt_in_move-werks.

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.311
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Условия при каких можно использовать READ TABLE?
« Ответ #20 : Декабрь 17, 2008, 03:50:10 pm »
Ссори, сам нашел
READ TABLE rt_outtab WITH KEY matnr = gt_vw_prod-matnr
                                     werks = gt_in_move-werks.
МаладЭц... таки проблема что AND не катит и операция только сравнения, а всякие больше/меньше к сожалению не катят.

Оффлайн №1

  • Administrator
  • Jr. Member
  • *****
  • Сообщений: 522
  • Reputation Power: 1
  • №1 has no influence.
  • Пол: Мужской
  • Самая большая ложь - это неверно понятая правда.
Re: Условия при каких можно использовать READ TABLE?
« Ответ #21 : Декабрь 17, 2008, 05:09:12 pm »
МаладЭц... таки проблема что AND не катит и операция только сравнения, а всякие больше/меньше к сожалению не катят.
А в новой версии можно уже http://www.vadoid.com/sap/teched08/COMP209_v2.pdf

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.311
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Условия при каких можно использовать READ TABLE?
« Ответ #22 : Декабрь 17, 2008, 05:15:03 pm »
А в новой версии можно уже http://www.vadoid.com/sap/teched08/COMP209_v2.pdf
Ну у него 4.7 насколько я помню... но что в новой это уже наконец работает, это хорошо... а то LOOP-ами было ну напряжно крутить...

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Условия при каких можно использовать READ TABLE?
« Ответ #23 : Декабрь 17, 2008, 05:47:20 pm »
SORT gt_outtab BY werks matnr.
READ TABLE gt_outtab WITH TABLE KEY werks = l_items-werks matnr = l_items-matnr BINARY SERCH.
Последовательность полей при объявлении gt_outtab в приведенном примере именно werks matnr.
« Последнее редактирование: Декабрь 17, 2008, 05:58:24 pm от Dmitriy »

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Условия при каких можно использовать READ TABLE?
« Ответ #24 : Декабрь 17, 2008, 09:11:03 pm »
Спасибо большое за помощь ...

Толко что сказал Дмитрию что в текущей задаче не прийдется использовать сию конструкцию .... а тут оказалось что всетаки
надо .....


 


Facebook Comments