Текущее время: Ср, июл 30 2025, 14:20

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Inner join VBAK и VBFA
СообщениеДобавлено: Пн, янв 14 2008, 16:51 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 06 2007, 13:52
Сообщения: 71
ДД
Подскажите чтобы это могло значить:
в ответ на письмо по реализации задачи пришел ответ с фразой
Цитата:
INNER JOIN таблиц VBFA и VBAK обычно не делают ....

Честно говоря не понял глубинного смысла этой фразы. В таблице VBAK одно ключевое поле VBELN. В таблице VBFA есть ссылки на VBAK по ключевым полям VBELV и VBELN. Почему нельзя их объединить? может есть какие-то подводные камни?

Гуру, подскажите!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 14 2008, 17:16 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Ну, возможно, дело в нецелесообразности. Зачем вам брать все позиции заказа. если надо прочесть заголовок один раз ?

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 14 2008, 17:28 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Делать то INNER JOIN никто не запретит, только что вы хотите этим добиться?
Заказ может входить в одну фактуру, потом эту фактуру отсторнируют, создадут другую и тд - все это отражается в потоке документов, в таблице VBFA.

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 14 2008, 20:10 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 06 2007, 13:52
Сообщения: 71
Цитата:
Ну, возможно, дело в нецелесообразности. Зачем вам брать все позиции заказа. если надо прочесть заголовок один раз ?



В том-то и дело, что мне нужно получить все позиции заказа.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 14 2008, 21:21 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
BaldyBess написал(а):
В том-то и дело, что мне нужно получить все позиции заказа.


Позиции заказа находятся в VBAP. Не совсем понятно, зачем тут VBFA... :?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 14 2008, 23:30 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
VBFA - священная таблица в сбыте, на ней одной висит вся история сбытовых цепочек, причем не только последовательно, но и всех со всеми. В общем, этого монстра не рекомендуется включать в JOINы - есть какая-то указивка SAP по этому поводу.
Включите дебаг и помотрите, как формируется поток документов в SD (зелёненькая кнопочка в заказах, поставках, фактурах). Скорее всего есть специальные ФМ для обработки истории. В них - SELECT SINGLE по ключу, или что-нибудь в этом роде...

_________________
Le chevalier du SAP


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 15 2008, 08:14 
Ассистент
Ассистент

Зарегистрирован:
Ср, дек 19 2007, 09:07
Сообщения: 31
sokov написал:
VBFA - священная таблица в сбыте, на ней одной висит вся история сбытовых цепочек, причем не только последовательно, но и всех со всеми. В общем, этого монстра не рекомендуется включать в JOINы - есть какая-то указивка SAP по этому поводу.

Можно ли более подробно, чем может навредить INNER JOIN "священной таблице"? Просто довольно часто приходится встречать заявления, будто INNER JOIN использовать нежелательно, и лучше использовать SELECT SINGLE. Но конкретных причин никто не указывает. По своему опыту могу сказать, что есть два неприятных последствия использования INNER JOIN.
1) Есть вероятность ошибки оптимизатора, и он создаст неудачный план запроса.
2) Пока SELECT не выполнится, система не может снять процесс по TIME OUT, а это ужасно бесит администраторов.
На мой взгляд, это недостаточное основание для отказа от JOIN. Обычно обе проблемы так или иначе удается обойти другими путями.


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Note 1013317 написал(а):
In some systems table VBFA is still a cluster table. A join is not possible here.

И ещё десяток нот посвящено этой же проблеме (преимущественно в подмодуле IS-A-GR).

Других причин отказываться от join'a нет.

PS. Вот с MSEG'ом VBFA джойнить действительно нельзя.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 15 2008, 08:54 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Wizard написал(а):
Можно ли более подробно, чем может навредить INNER JOIN "священной таблице"? Просто довольно часто приходится встречать заявления, будто INNER JOIN использовать нежелательно, и лучше использовать SELECT SINGLE. Но конкретных причин никто не указывает. По своему опыту могу сказать, что есть два неприятных последствия использования INNER JOIN.
1) Есть вероятность ошибки оптимизатора, и он создаст неудачный план запроса.
2) Пока SELECT не выполнится, система не может снять процесс по TIME OUT, а это ужасно бесит администраторов.
На мой взгляд, это недостаточное основание для отказа от JOIN. Обычно обе проблемы так или иначе удается обойти другими путями.

Конкретно для VBFA INNER JOIN ничем не повредит, если она канеш не кластерная - просто результат может оказаться не таким как ожидали

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 15 2008, 21:22 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Wizard написал(а):
Просто довольно часто приходится встречать заявления, будто INNER JOIN использовать нежелательно, и лучше использовать SELECT SINGLE.


Не совсем понятно - а разве SELECT SINGLE и INNER JOIN друг с другом не совместимы?.. :?

И до сих пор остается неотвеченным главный вопрос - ЗАЧЕМ? Какую дополнительную информацию вы собираетесь почерпнуть из VBFA ?

Если таблица не кластерная, то JOIN по идее не должен повредить (если, конечно, он делается по ключу). IMHO часто проблемы с VBFA возникают из-за того, что к ней приходится обращаться "наоборот": не по VBELV/POSNV, а по VBELN/POSNN. Вот этого SAP делать и не советует.


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
sokov написал:
VBFA - священная таблица в сбыте, на ней одной висит вся история сбытовых цепочек, причем не только последовательно, но и всех со всеми. ...
Скорее всего есть специальные ФМ для обработки истории. В них - SELECT SINGLE по ключу, или что-нибудь в этом роде...

ФМ "RV_ORDER_FLOW_INFORMATION"

А JOIN с VBFA - это гиблое дело.
Jelena +1

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, янв 16 2008, 09:13 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Удав написал(а):
ФМ "RV_ORDER_FLOW_INFORMATION"

А JOIN с VBFA - это гиблое дело.

Гиблое в каком смысле? ФМ RV_ORDER_FLOW_INFORMATION работает раз в 10 медленее.


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

Зарегистрирован:
Вт, авг 17 2004, 12:44
Сообщения: 305
Откуда: Жайрем -> Астана
что-то и правда не совсем понятно...
ну так почему нельзя или нежелательно делать JOIN, и почему результат может быть непредсказуем именно для VBFA? какие на то конкретные причины? дайте ноты, факты, примеры...может и правда есть что-то :roll:
ведь объединяют же BKPF, BSID, BSAD и т.д, которые гораздо объемнее чем "монстр" VBFA

а то что в САПе нет примеров JOIN-a c VBFA, может из-за того как и указал sibrin, что в некоторых системах она кластерная?

в качестве примера когда может потребоваться объединять VBFA, можно предложить например чтение определенных документов для вышестоящего документа по потоку, с дополнительными данными/критериями которых нету в vbfa

ps: все конечно же ИМХО


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 18 2008, 00:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
sibrin написал:
Гиблое в каком смысле? ФМ RV_ORDER_FLOW_INFORMATION работает раз в 10 медленее.

Это смотря как пользоваться :wink:
Понятно, что кроме VBFA этот ФМ читает и VBUK, и VBAK и еще кучу таблиц.
Но если осуществлять поиск "снизу вверх", что чаще всего встречается, то быстродействие вполне приемлимое.
И если учесть, что тебе не нужно самому просчитывать цепочки документов, которые к тому же могут оказаться разной длины в разных случаях, гибче применять именно этот ФМ. Или написать свой, который будет работать лучше.
Но с JOIN лезть в таблицу, в которой есть ссылки и вверз, и вниз, по позициям и по заголовку имхо очень мазохистское занятие :)

_________________
С уважением,
Удав.


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
flipper написал(а):
что-то и правда не совсем понятно...
ну так почему нельзя или нежелательно делать JOIN, и почему результат может быть непредсказуем именно для VBFA? какие на то конкретные причины? дайте ноты, факты, примеры...может и правда есть что-то :roll:

1.Связи между документами сбыта делаются с помощью настройки. При жестко заданных условиях поиска по VBFA при изменении настроек нужно менять программу.
2.Связь между документами хранится как по заголовку документа, так и по позиции. Может быть ситуация, когда от поставки до заказа связь идет по позиции, а предыдущий документ (контракт) в цепочке связан с заказом только по заголовку. В этом случае одним select`ом не обойтись. И неизвестно, сколько промежуточных заказов может быть в цепочке до контракта.

Маленькое резюме: JOIN c VBFA оправдан, когда
1.Поиск документов идет "сверху вниз", от контрактов к поставкам и фактурам
2.Настройки цепочки документов сбыта меняться не будут
3.Есть время и желание изучить уже имеющиеся цепочки документов

_________________
С уважением,
Удав.


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

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


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

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


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

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