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
vetal
Участник
Участник



Joined: 18 Jan 2008
Posts: 44

PostPosted: Mon Dec 01, 2008 1:02 pm    Post subject: Характеристика материала Reply with quote

Здравствуйте, ранее не приходилось сталкиваться с Characteristic. На картинке вкладка Classication транзакции MM03.
Какой функцией получить характеристику материала, выделенную синим?



material_characteristic.PNG
 Description:
 Filesize:  14.91 KB
 Viewed:  14917 Time(s)

material_characteristic.PNG


Back to top
View user's profile Send private message
XXX_:)
Аналитик
Аналитик


Age: 36
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Mon Dec 01, 2008 1:44 pm    Post subject: Reply with quote

К сожалению в ММ мало работал, но различные характеристики объектов в PP(давно правда было) доставал через BAPI_OBJCL_GETDETAIL, возможно вам поможет
_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
John Doe
Модератор
Модератор


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

PostPosted: Mon Dec 01, 2008 1:50 pm    Post subject: Reply with quote

Можно из БД взять. Удав писал, что где лежит: Массовое присоединение классов к ЕО при помощи БАПИ?
Back to top
View user's profile Send private message Blog
vetal
Участник
Участник



Joined: 18 Jan 2008
Posts: 44

PostPosted: Mon Dec 01, 2008 2:45 pm    Post subject: Reply with quote

Спасибо за ответы. Попробовал двумя способами, оба рабочие.

Code:
* Первый способ
  DATA: i_allocvaluesnum LIKE bapi1003_alloc_values_num
                          OCCURS 0 WITH HEADER LINE,
        i_allocvalueschar LIKE bapi1003_alloc_values_char
                          OCCURS 0 WITH HEADER LINE,
        i_allocvaluescurr LIKE bapi1003_alloc_values_curr
                          OCCURS 0 WITH HEADER LINE,
        i_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
  DATA: l_classnum LIKE  bapi1003_key-classnum,
        l_objectkey LIKE  bapi1003_key-object.

  DATA: l_atinn TYPE ausp-atinn.
  DATA: l_awkey TYPE bkpf-awkey.

  LOOP AT i_items ASSIGNING <fs>.

    CHECK NOT <fs>-matnr IS INITIAL.
    SELECT SINGLE atinn INTO l_atinn
    FROM cabn
    WHERE atnam = 'Z_POSM_TAX_CLASS'.

    CHECK NOT l_atinn IS INITIAL.

    SELECT SINGLE atwrt INTO <fs>-atwrt
    FROM ausp
    WHERE objek = <fs>-matnr
      AND atinn = l_atinn
      AND klart = '001'.

* второй способ
    l_objectkey = <fs>-rzzmatnr.
    CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
         EXPORTING
              objectkey       = l_objectkey
              objecttable     = 'MARA'
              classnum        = 'Z_POSM_RUS'
              classtype       = '001'
         TABLES
              allocvaluesnum  = i_allocvaluesnum
              allocvalueschar = i_allocvalueschar
              allocvaluescurr = i_allocvaluescurr
              return          = i_return.

    READ TABLE i_allocvalueschar
      WITH KEY charact = 'Z_POSM_TAX_CLASS'.
    IF sy-subrc IS INITIAL.
      <fs>-atwrt = i_allocvalueschar-value_char.
    ENDIF.
  ENDLOOP.



Чтение через BAPI_OBJCL_GETDETAIL очень меденное, в таблице ~10 тыс. записей.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 51
Joined: 04 Oct 2007
Posts: 1218
Location: Питер

PostPosted: Mon Dec 01, 2008 3:25 pm    Post subject: Reply with quote

Думаю, быстрее будет работать так:

Code:
    MOVE <fs>-matnr TO object.
    CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
         EXPORTING
              class              = 'Z_POSM_RUS'
              classtext          = 'X'
              classtype          = '001'
              language           = sy-langu
              object             = object
         TABLES
              t_class            = t_class
              t_objectdata       = t_objectdata
         EXCEPTIONS
              no_classification  = 1
              no_classtypes      = 2
              invalid_class_type = 3.
    IF sy-subrc IS INITIAL.
      READ TABLE t_objectdata WITH KEY atnam = 'Z_POSM_TAX_CLASS'.
      IF sy-subrc IS INITIAL.
        <fs>-atwrt = t_objectdata-ausp1.
      ENDIF.
    ENDIF.



А если все же решите напрямую читать таблицу ausp, учитывайте:

vvk wrote:
...
если уж использовать выборки из cabn и ausp, то более аккуратно.
например, в зависимости от cabn-atfor (тип признака) значение хранится или ausp-atwrt или ausp-atflv
см. зависимости в LO985
...
Back to top
View user's profile Send private message Blog
vetal
Участник
Участник



Joined: 18 Jan 2008
Posts: 44

PostPosted: Mon Dec 01, 2008 3:54 pm    Post subject: Reply with quote

Сделал замеры скорости через se30

'CLAF_CLASSIFICATION_OF_OBJECTS' - 40 сек
'BAPI_OBJCL_GETDETAIL' - 164 сек
SELECT FROM ausp, cabn - 43 сек
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 51
Joined: 04 Oct 2007
Posts: 1218
Location: Питер

PostPosted: Mon Dec 01, 2008 4:00 pm    Post subject: Reply with quote

Прямое чтение таблиц д.б. быстрее. У вас select не оптимален (чтение cabn нужно вынести за цикл).
Но все же рекомендую использовать ФМ.
Back to top
View user's profile Send private message Blog
Nick_Papkov
Участник
Участник


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

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

vga wrote:
Думаю, быстрее будет работать так:

Code:
    MOVE <fs>-matnr TO object.
    CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
         EXPORTING
              class              = 'Z_POSM_RUS'
              classtext          = 'X'
              classtype          = '001'
              language           = sy-langu
              object             = object
         TABLES
              t_class            = t_class
              t_objectdata       = t_objectdata
         EXCEPTIONS
              no_classification  = 1
              no_classtypes      = 2
              invalid_class_type = 3.
    IF sy-subrc IS INITIAL.
      READ TABLE t_objectdata WITH KEY atnam = 'Z_POSM_TAX_CLASS'.
      IF sy-subrc IS INITIAL.
        <fs>-atwrt = t_objectdata-ausp1.
      ENDIF.
    ENDIF.



А если все же решите напрямую читать таблицу ausp, учитывайте:

vvk wrote:
...
если уж использовать выборки из cabn и ausp, то более аккуратно.
например, в зависимости от cabn-atfor (тип признака) значение хранится или ausp-atwrt или ausp-atflv
см. зависимости в LO985
...


У ФМ CLAF_CLASSIFICATION_OF_OBJECTS есть табличка, которая позволяет ограничить перечень вытаскиваемых признаков - I_SEL_CHARACTERISTIC. Заполняете ее значениями ATINN соответствующих признаков, которые хотите получить. Тогда если после выполнения sy-subrc <> 0 (при входном параметре INITIAL_CHARACT = '') значит данный объект не содержит заполненные признаки из списка.
И на входе еще лучше задавать OBJECTTABLE (главная таблица объекта - MARA, MCH1, ...) и INHERITED_CHAR = 'X' что бы не упустить все признаки классификации.
И ключ для объекта лучше получать через ФМ CLCV_CONV_TO_INTERNAL_FORMAT, а не MOVE как в примере. Тогда не надо думать о правилах, все заботы по этому поводу возьмет на себя система.

_________________
Когда другие слепо следуют за истиной, помни - ничто не истина.
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.