В общем тут на неделе разгребал один вопросик, наткнулся на интересную связку таблиц, ну и еще получил одно подтверждение, что таки SAP пишут уволенные java-индусы, которые о товарище Дейте и его книге по базам данных не то что не слышали, но даже не догадываются о том что она существует и все уже придумано до них.
Дейта можно найти тут, если кому интересно: You are not allowed to view links.
Register or LoginPS: Кстати, если кто-то сможет меня переубедить в обратном и объяснить глубокую мысль зачем так было сделано, сниму шляпу.
А теперь о том что озадачило. В общем есть такая вещь как единица упаковки, ну например в исходящей поставке, как в примере на рисунке EO-1.png. Таблица, где хранится единица обработки VEKP, ключ у единицы обработки VEKP-VENUM, как обычно длина 10 символов, ну любит SAP такие ключи, а дальше как обычно VEKP-EXIDV - Внешний ид. единицы обработки, собственно говоря, на экране мы его и видим как 511005670000009349, а вот дальше начинается интересное, в это таблице есть такое поле как VEKP-HANDLE - Уникальный ключ для VEKP-VENUM, тип у него GUID_VEKP, ага именно типа GUID, очень любимый java-программистами, зачем он используется, ну мало ли... может надо, однако для чего оно оказалось надо?! А вот для чего. Единица обработки имеет свою историю, рисунок EO-2.png. История эта хранится в отдельной таблице VEVW - Ведомость использования для единиц обработки, так вот ключ для идентификации единицы обработки, ну по логике должен был быть наверное VEVW-VENUM, ага щазззз, нет в этой таблице ключ у нас ага тот самый GUID, VEVW-HANDLE типа GUID_VEKP, по которому и ищем историю к единице обработки... какого надо было включать в первичный ключ именно этот GUID (22 байта, наверное хотели оракловый построитель индексов озадачить
), я не знаю... чем им не понравился VEKP-VENUM?!
Хотя в этой таблице и дальше не все так просто, вот к примеру последнее поле VEVW-DIRECTION, если посмотреть описание то там стоит: "Направление (1 = выход, 2 = вход) (Direction (1=outbound, 2=inbound))", ну вроде как ясно, что значение может быть или 1 или 2, ага щаз, вот для этой единицы обработки там для документа поставки стоит 0, рисунок EO-3.png. Короче, таки действительно как там в анекдоте на уроке математики в грузинской школе:
- Гоги сколько будет 2 * 2?
- Я думаю 8!
- Нет Гоги садЫсь 2! Будет где-то 5 или 7, но никак не 8!
Так и тут может быть 1 или 2, ну а если очень нужно то 0, а так же другие цифры, хорошо хоть набор тут ограничен типом NUMC, т.е. от 0 до 9
, а ведь могли типа CHAR сделать.