SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Классификация материалов



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Aen Sidhe
Участник
Участник



Joined: 15 Sep 2008
Posts: 11

PostPosted: Mon Dec 22, 2008 4:38 pm    Post subject: Классификация материалов Reply with quote

Доброго времени суток.

Как можно программно вытащить значения признаков именно у материалов, а не партий?

Для партий просто - по номеру материала и партии достаём из таблицы inob данные о классификации, пихаем их в BAPI_OBJCL_GETDETAIL, получаем на выходе классы и признаки для данной партии. А вот что-то как получить ту же самую инфу таким же способом не получается.

Гугление и поиск по форуму не помогли Sad
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Dec 22, 2008 4:56 pm    Post subject: Reply with quote

Вместо того, чтобы обращаться в INOB, в OBJECTKEY подставляем MARA-MATNR.
Имхо, BAPI_OBJCL_GETDETAIL можно использовать только в случае единичной выборки данных - при большом количестве вызовов начинаются "тормоза".

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Aen Sidhe
Участник
Участник



Joined: 15 Sep 2008
Posts: 11

PostPosted: Mon Dec 22, 2008 5:28 pm    Post subject: Reply with quote

А как правильно? У меня как раз подразумевается достаточно интенсивное использование классификации.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Dec 22, 2008 5:37 pm    Post subject: Reply with quote

Пользуемся поиском на формуме Wink
_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Aen Sidhe
Участник
Участник



Joined: 15 Sep 2008
Posts: 11

PostPosted: Mon Dec 22, 2008 5:40 pm    Post subject: Reply with quote

Embarassed
Спасибо.
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 45
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Mon Dec 22, 2008 7:15 pm    Post subject: Reply with quote

to Удав Привет! Хотел спросить - как точно определить из какой таблицы тянуть значение признака ATWRT - из CAWN или AUSP? Всегда использовал значение из CAWN, а сегодня первый раз столкнулся с вторым вариантом. Может есть какая то предварительная настройка для определения пути выборки?
Back to top
View user's profile Send private message Blog
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Wed Dec 24, 2008 2:20 am    Post subject: Reply with quote

Привет, John Doe!
Код значения признака ATWRT можно брать напрямую из AUSP.
А вот если нужно текстовое обозначение кода(при ведении справочника значений на признаке), то тогда нужно брать связку AUSP-CAWN-CAWNT.
Пример с работы кину Wink

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Thu Dec 25, 2008 11:45 am    Post subject: Reply with quote

Вот пример, как по 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.

Прошу обратить внимание, что данный код работает при отключенной службе изменений для значений признаков.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 45
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Thu Dec 25, 2008 1:03 pm    Post subject: Reply with quote

Спасибо.
Back to top
View user's profile Send private message Blog
Nick_Papkov
Участник
Участник


Age: 46
Joined: 22 Aug 2013
Posts: 27
Location: г. Жлобин, Республика Беларусь

PostPosted: Sun Sep 15, 2013 3:14 am    Post subject: Reply with quote

Удав wrote:
Привет, John Doe!
Код значения признака ATWRT можно брать напрямую из AUSP.
А вот если нужно текстовое обозначение кода(при ведении справочника значений на признаке), то тогда нужно брать связку AUSP-CAWN-CAWNT.
Пример с работы кину Wink


Это связка не всегда корректно сработает. Правильнее брать AUPS-KSSK-KSML-CAWN-CAWNT. Но лучше всего взять функцию CLAF_CLASSIFICATION_OF_OBJECTS и входным переключателем регулировать что надо: код или значение.
Back to top
View user's profile Send private message
Nick_Papkov
Участник
Участник


Age: 46
Joined: 22 Aug 2013
Posts: 27
Location: г. Жлобин, Республика Беларусь

PostPosted: Sun Sep 15, 2013 3:18 am    Post subject: Re: Классификация материалов Reply with quote

Aen Sidhe wrote:
Доброго времени суток.

Как можно программно вытащить значения признаков именно у материалов, а не партий?

Для партий просто - по номеру материала и партии достаём из таблицы inob данные о классификации, пихаем их в BAPI_OBJCL_GETDETAIL, получаем на выходе классы и признаки для данной партии. А вот что-то как получить ту же самую инфу таким же способом не получается.

Гугление и поиск по форуму не помогли Sad


Не совсем правильно делаете. Для получения ключа лучше использовать ФМ CLCV_CONV_TO_INTERNAL_FORMAT. На входе список ключей объекта в виде таблицы и головная таблица объекта (MARA, MCH1, ...). Полученный ключ вместе с таблицей подставляете в CLAF_CLASSIFICATION_OF_OBJECTS и получаете классификацию.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Tue Sep 24, 2013 8:57 pm    Post subject: Reply with quote

Nick_Papkov wrote:
Это связка не всегда корректно сработает.

Приведите пример Very Happy

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Nick_Papkov
Участник
Участник


Age: 46
Joined: 22 Aug 2013
Posts: 27
Location: г. Жлобин, Республика Беларусь

PostPosted: Wed Sep 25, 2013 12:08 am    Post subject: Reply with quote

Удав wrote:
Nick_Papkov wrote:
Это связка не всегда корректно сработает.

Приведите пример Very Happy


Очень просто. Заходите в класс, переходите на список признаков, выбираете признак со справочными данными и нажимаете внизу кнопку "Переписать значение". В результате перейдем в признак, который по виду тот, что надо, но на самом деле это уже другой признак, который привязан к конкретному классу. И после этого классификация объекта (например, материала) уже работает с этим признаком, а не с первоначальным. Проверяется легко: заходим в признак через класс, добавляем новое значение и сохраняем. При просмотре справочника через классификацию объекта новое значение видим, в первоначальном признаке этого значения нет. Или наоборот. Добавить после указанных манипуляций новое значение в признак вне рамок класса. При классификации это значение не увидим, а в признаке оно есть.
На уровне таблиц это выглядит так: в таблице KSML есть два поля: IMERK (первоначальный признак) и OMERK (признак, зависящий от класса). Первоначально IMERK содержит ID признака (ATINN), а OMERK пустое. После выше описанных манипуляций оба поля содержат ID признаков, при чем они разные. В таблице AUSP используется ID из поля IMERK. И если признаку в классификации объекта присвоить новое значение, добавленное как я описал (добавление в рамках класса), то по вашей цепочке в таблице CAWN вы не найдете это значение. А если возьмете OMERK, то значение будет найдено.
И как мне помниться, этот процесс необратим, т. е. вернуться к состоянию до нажатия "Переписать значения" можно только в одном случае - удалить текущий признак из класса и заново его присвоить. Что не всегда возможно.

P.S. У меня в практике был случай, что признак был справочным, но не содержат ни одного значения. А в рамках классификации материала показывался большой список значений. И когда пришлось брать данные по классификации из таблиц (про ФМ тогда не знал), то пришлось всю эту цепочку раскопать и выйти на признак, зависящий от класса, который и содержал выводимый юзеру перечень.

_________________
Когда другие слепо следуют за истиной, помни - ничто не истина.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.