Posted: Mon Dec 22, 2008 4:38 pm Post subject: Классификация материалов
Доброго времени суток.
Как можно программно вытащить значения признаков именно у материалов, а не партий?
Для партий просто - по номеру материала и партии достаём из таблицы inob данные о классификации, пихаем их в BAPI_OBJCL_GETDETAIL, получаем на выходе классы и признаки для данной партии. А вот что-то как получить ту же самую инфу таким же способом не получается.
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Mon Dec 22, 2008 4:56 pm Post subject:
Вместо того, чтобы обращаться в INOB, в OBJECTKEY подставляем MARA-MATNR.
Имхо, BAPI_OBJCL_GETDETAIL можно использовать только в случае единичной выборки данных - при большом количестве вызовов начинаются "тормоза". _________________ С уважением,
Удав.
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Mon Dec 22, 2008 7:15 pm Post subject:
to Удав Привет! Хотел спросить - как точно определить из какой таблицы тянуть значение признака ATWRT - из CAWN или AUSP? Всегда использовал значение из CAWN, а сегодня первый раз столкнулся с вторым вариантом. Может есть какая то предварительная настройка для определения пути выборки?
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Wed Dec 24, 2008 2:20 am Post subject:
Привет, John Doe!
Код значения признака ATWRT можно брать напрямую из AUSP.
А вот если нужно текстовое обозначение кода(при ведении справочника значений на признаке), то тогда нужно брать связку AUSP-CAWN-CAWNT.
Пример с работы кину _________________ С уважением,
Удав.
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Thu Dec 25, 2008 11:45 am Post subject:
Вот пример, как по ATWRT находить ATWTB
Code:
SELECT SINGLE atzhl FROM cawn
INTO l_atzhl
WHERE atinn = ls_cabn-atinn
AND atwrt = lt_prizn-atwrt.
IF sy-subrc = 0.
SELECT SINGLE atwtb FROM cawnt
INTO l_atwtb
WHERE atinn = ls_cabn-atinn
AND atzhl = l_atzhl
AND spras = sy-langu
AND adzhl = '0000'.
MOVE l_atwtb TO lt_prizn-atwrt.
ENDIF.
Прошу обратить внимание, что данный код работает при отключенной службе изменений для значений признаков. _________________ С уважением,
Удав.
Age: 46 Joined: 22 Aug 2013 Posts: 27 Location: г. Жлобин, Республика Беларусь
Posted: Sun Sep 15, 2013 3:14 am Post subject:
Удав wrote:
Привет, John Doe!
Код значения признака ATWRT можно брать напрямую из AUSP.
А вот если нужно текстовое обозначение кода(при ведении справочника значений на признаке), то тогда нужно брать связку AUSP-CAWN-CAWNT.
Пример с работы кину
Это связка не всегда корректно сработает. Правильнее брать AUPS-KSSK-KSML-CAWN-CAWNT. Но лучше всего взять функцию CLAF_CLASSIFICATION_OF_OBJECTS и входным переключателем регулировать что надо: код или значение.
Age: 46 Joined: 22 Aug 2013 Posts: 27 Location: г. Жлобин, Республика Беларусь
Posted: Sun Sep 15, 2013 3:18 am Post subject: Re: Классификация материалов
Aen Sidhe wrote:
Доброго времени суток.
Как можно программно вытащить значения признаков именно у материалов, а не партий?
Для партий просто - по номеру материала и партии достаём из таблицы inob данные о классификации, пихаем их в BAPI_OBJCL_GETDETAIL, получаем на выходе классы и признаки для данной партии. А вот что-то как получить ту же самую инфу таким же способом не получается.
Гугление и поиск по форуму не помогли
Не совсем правильно делаете. Для получения ключа лучше использовать ФМ CLCV_CONV_TO_INTERNAL_FORMAT. На входе список ключей объекта в виде таблицы и головная таблица объекта (MARA, MCH1, ...). Полученный ключ вместе с таблицей подставляете в CLAF_CLASSIFICATION_OF_OBJECTS и получаете классификацию.
Age: 46 Joined: 22 Aug 2013 Posts: 27 Location: г. Жлобин, Республика Беларусь
Posted: Wed Sep 25, 2013 12:08 am Post subject:
Удав wrote:
Nick_Papkov wrote:
Это связка не всегда корректно сработает.
Приведите пример
Очень просто. Заходите в класс, переходите на список признаков, выбираете признак со справочными данными и нажимаете внизу кнопку "Переписать значение". В результате перейдем в признак, который по виду тот, что надо, но на самом деле это уже другой признак, который привязан к конкретному классу. И после этого классификация объекта (например, материала) уже работает с этим признаком, а не с первоначальным. Проверяется легко: заходим в признак через класс, добавляем новое значение и сохраняем. При просмотре справочника через классификацию объекта новое значение видим, в первоначальном признаке этого значения нет. Или наоборот. Добавить после указанных манипуляций новое значение в признак вне рамок класса. При классификации это значение не увидим, а в признаке оно есть.
На уровне таблиц это выглядит так: в таблице KSML есть два поля: IMERK (первоначальный признак) и OMERK (признак, зависящий от класса). Первоначально IMERK содержит ID признака (ATINN), а OMERK пустое. После выше описанных манипуляций оба поля содержат ID признаков, при чем они разные. В таблице AUSP используется ID из поля IMERK. И если признаку в классификации объекта присвоить новое значение, добавленное как я описал (добавление в рамках класса), то по вашей цепочке в таблице CAWN вы не найдете это значение. А если возьмете OMERK, то значение будет найдено.
И как мне помниться, этот процесс необратим, т. е. вернуться к состоянию до нажатия "Переписать значения" можно только в одном случае - удалить текущий признак из класса и заново его присвоить. Что не всегда возможно.
P.S. У меня в практике был случай, что признак был справочным, но не содержат ни одного значения. А в рамках классификации материала показывался большой список значений. И когда пришлось брать данные по классификации из таблиц (про ФМ тогда не знал), то пришлось всю эту цепочку раскопать и выйти на признак, зависящий от класса, который и содержал выводимый юзеру перечень. _________________ Когда другие слепо следуют за истиной, помни - ничто не истина.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.