+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SE37 - Построитель функций (Модератор: Dmitriy)Тема:
|- Работа с классификацией в системе




Автор Тема: Работа с классификацией в системе  (Прочитано 43941 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Удав

  • Newbie
  • *
  • Сообщений: 44
  • Reputation Power: 0
  • Удав has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Работа с классификацией в системе
« Ответ #25 : Октябрь 04, 2014, 01:04:25 pm »
You are not allowed to view links. Register or Login
Последовательность INOB + AUSP + CAWN + CAWNT не всегда правильно сработает. Там есть один подводный камень. Правильнее последовательность INOB + AUSP + KSSK + KSML, и на основании значений 2 столбцов из KSML тащить уже CAWN + CAWNT. BAPI этот момент учитывает, вы нет. Соответственно и результат тестирования будет другим.
Никто не заставляет CAWN+CAWNT в JOIN с AUSP использовать. ;)
Для работы со справочными значениями оптимальнее искать значения справочников в цикле с последующим кэшированием.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Работа с классификацией в системе
« Ответ #26 : Март 14, 2015, 12:55:31 pm »
Пример работы с классификацией, когда нужно выполнить классификацию объекта в своей программе. Стандартно SAP когда выполняет такие операции, то вы всегда переходите на стандартные экраны классификации, где выбираете класс и затем заполняете свойства признаков. Следовательно можно организовать вызов стандартных экранов для классификации объектов из своей программы. Данная программа небольшой пример классификации ОЗМ для вида класса 001. В принципе можно использовать любые допустимые в системы виды классов. Комментарии, по использованию вызываемых функциональных модулей  в данном примере, в коде программы.

Внимание: Из особенностей работы, нужно понимать, что объект классификации и создаваемый объект системы, в данном случае ОЗМ, это разные вещи. Поэтому например кода материала  '000000000500003609' в системе может и не существовать,но это не помешает сделать объект классификации с таким кодом объекта.
Код: You are not allowed to view links. Register or Login
REPORT z_test_clas_mara.
DATA: l_updateflag LIKE rmclk-updat,
      l_ok_code    LIKE sy-ucomm,
      l_object     LIKE rmclf-objek,
      l_objtxt     LIKE rmclf-obtxt.

* Вызвать классификацию объекта
l_object = '000000000500003609'.   "Код объекта, для 001 типа класса = полный номер ОЗМ
l_objtxt = 'Термометр 200'.        "Крактий текст наименования, обычно текст ОЗМ
CALL FUNCTION 'CLFM_OBJECT_CLASSIFICATION'
  EXPORTING
    table                    = 'MARA'       "Объект/таблица классификации
    object                   = l_object
    objtxt                   = l_objtxt
    classtype                = '001'        "Вид класса
    status                   = '1'          "1 - создание, 2 - изменение, 3 - просмотр
    initflag                 = 'X'
    ref_datuv                = sy-datum
  IMPORTING
    updateflag               = l_updateflag  "Требуется обновление, были изменения в классе
    ok_code                  = l_ok_code     "Команда выбранная пользователм на экране классификация
  EXCEPTIONS
    classification_not_found = 1
    class_not_valid          = 2.


* Получить параметры класса и значения признаков, заданные на экране классификации
DATA: lt_exp_ausp_tab TYPE rmclausp OCCURS 1 WITH HEADER LINE,
      lt_exp_kssk_tab TYPE rmclkssk OCCURS 1 WITH HEADER LINE.

CALL FUNCTION 'CLFM_GET_INTERNAL_TABLES'
  EXPORTING
    i_allausp    = 'X'
    i_allkssk    = 'X'
  TABLES
    exp_ausp_tab = lt_exp_ausp_tab     "Данные признаков для классов, указанные на экране
    exp_kssk_tab = lt_exp_kssk_tab.    "Данные классов указаннные на экране классификации

* Если пользователь выбрал сохранить или стрелка далее на экране классификации и были изменения
* тогда вызвать сохранение объекта классификации.
IF ( l_ok_code = 'SAVE' OR l_ok_code = 'WEI1' ) AND l_updateflag = 'X'.
* Сохранить изменения классификации
  CALL FUNCTION 'CUOB_COMMIT_WORK'
    EXPORTING
      on_commit = 'X'.    "X - Сохранение в общем процессе обновления иначе немедленное сохранение

  COMMIT WORK AND WAIT.
ENDIF.

* После выполнения COMMIT WORK данные вунтри функций рабоыт с классами очищаются, это занчит что функция
* CLFM_GET_INTERNAL_TABLES больше не будет возвращать значений параметров класса и признаков, поэтому
* необходимо по новму считать во внутренние структуры значения классификации объекта и признаков объекта
DATA: l_object_read   LIKE rmclf-objek,
      lt_allocations LIKE api_kssk OCCURS 1 WITH HEADER LINE.

* Прочитать имена классов которым классифицирован объект. В общем виде это может быть
* несколько классов для типа класса, в данном случае тип класса = 001 - ОЗМ

l_object_read = '000000000500003609'.   "Код объекта, для 001 типа класса = полный номер ОЗМ
CALL FUNCTION 'CLAP_DDB_GET_CLASSIFICATION'
  EXPORTING
    object                 = l_object_read
    obtab                  = 'MARA'
    date_of_change         = sy-datum
    classtype              = '001'
    sort_posnr             = 'X'
  TABLES
    allocations            = lt_allocations
  EXCEPTIONS
    no_allocation          = 1
    foreign_lock           = 2
    system_failure         = 3
    set_aennr              = 4
    change_nr_not_exist    = 5
    date_in_past           = 6
    error_class            = 7
    error_date_restriction = 8
    error_status           = 9
    OTHERS                 = 10.

* Прочитать параметры классификации объекта для кажадого класса
LOOP AT lt_allocations.
  CALL FUNCTION 'CLAP_DDB_SHOW_CLASSIFICATION'
    EXPORTING
      class                    = lt_allocations-class
      object                   = l_object
      classtype                = lt_allocations-klart
    EXCEPTIONS
      allocation_not_available = 1
      class_not_found          = 2
      OTHERS                   = 3.
ENDLOOP.

* Теперь функция CLFM_GET_INTERNAL_TABLES будет возвращать данные классификации, значения признаков и т.д.

Оффлайн nikitinas

  • Newbie
  • *
  • Сообщений: 3
  • Reputation Power: 0
  • nikitinas has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Работа с классификацией в системе
« Ответ #27 : Ноябрь 09, 2018, 09:14:21 am »
Добрый день. Коллеги у меня проблема с использованием bapi_objcl_change
Транзакция MIGO, Post_Documetn  и там я вызываю все рекомендованные Вами FM-ы.

Так вот один из всех, параметр LOBM_LIFNR не хочет добавляться в новую партию - не сталкивались с такой ситуацией и что можете посоветовать?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Работа с классификацией в системе
« Ответ #28 : Ноябрь 09, 2018, 03:01:44 pm »
You are not allowed to view links. Register or Login
Так вот один из всех, параметр LOBM_LIFNR не хочет добавляться в новую партию - не сталкивались с такой ситуацией и что можете посоветовать?
Так это вроде как системные признаки, они должны вестись автоматически при настройке соответствующих операций. Вам именно нужен точно этот LOBM_* или может создадите свой типа Z_LIFNR

Оффлайн nikitinas

  • Newbie
  • *
  • Сообщений: 3
  • Reputation Power: 0
  • nikitinas has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Работа с классификацией в системе
« Ответ #29 : Ноябрь 09, 2018, 03:06:11 pm »
К сожалению хотят список признаков в точности, как в партии ссылочного документа.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Работа с классификацией в системе
« Ответ #30 : Ноябрь 09, 2018, 03:20:41 pm »
You are not allowed to view links. Register or Login
К сожалению хотят список признаков в точности, как в партии ссылочного документа.
Я конечно допускаю, что может все таки причина в другом, но это специализированные признаки которые начинаются на LOBM_* и боюсь, что таки система их блокирует, но это только в отладке можно убедится так оно или нет. Ну чтобы ответить на их "хотят", как-то аргументировано.

Оффлайн nikitinas

  • Newbie
  • *
  • Сообщений: 3
  • Reputation Power: 0
  • nikitinas has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Работа с классификацией в системе
« Ответ #31 : Ноябрь 09, 2018, 03:59:56 pm »
Спасибо, так и придется делать.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Работа с классификацией в системе
« Ответ #32 : Ноябрь 14, 2018, 11:35:23 am »
You are not allowed to view links. Register or Login
Спасибо, так и придется делать.
Хотелось бы конечно узнать результат, точнее подтверждение выдвинутой версии.