Автор Тема: CUOB_CHECK_EXISTENCE_OF_OBJECT - проверка присвоения объекта классу  (Прочитано 6937 раз)

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

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
При использовании некоторых ФМ для работы с классификацией, например описанной You are not allowed to view links. Register or Login следует тщательно проверять вводимые данные, иначе последствия .... ну читайте в соответствующей теме.

Или просто необходимо проверить проверить, например проклассифицирован ли обьект. Для этого используется внутренний номер
Цитата: Uukrul  link=topic=1319.msg7839#msg7839 date=1286125756
Как видим основная проблема заключается в том, что описание класса то конечно вставляется в привязке к материалу, но на самом деле классифицировать будем то партии?! Вот поэтому надо получить внутренний номер объекта для конфигурации, поле  allkssk-cuobj, причем как видим для класса 023 указываем таблицу не MCHA из описания класса, а таблицу MARA.

Пример использования ФМ, обернут в form для удобства дальнейшего использования.
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*&      Form  CHECK_EXIST
*&---------------------------------------------------------------------*
*       Проверяем нет ли присвоения
*----------------------------------------------------------------------*

FORM check_exist_mat  USING   rs_matnr TYPE KSSK-OBJEK
                  CHANGING rs_exist TYPE c.

    " Приводим номер материала к внутреннему формату
    " На всякий случай
     CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
         EXPORTING
            input = rs_matnr
         IMPORTING
            output = rs_matnr
          EXCEPTIONS
            length_error = 1
            OTHERS = 2.

        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.

     exist = 'X'.

     DATA: object_number  LIKE  inob-cuobj.

     CALL FUNCTION 'CUOB_CHECK_EXISTENCE_OF_OBJECT'
       EXPORTING
          class_type = pa_klart
          object_id  = rs_matnr
          table      = 'MARA'
       IMPORTING
         object_number = object_number
       EXCEPTIONS
         lock_problem = 1
         object_not_found = 2.

      IF sy-subrc <> 0.
        exist = space.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.

ENDFORM.                    " CHECK_EXIST

Думаю суть понятна с комментариев.
« Последнее редактирование: Октябрь 04, 2010, 12:58:47 am от Uukrul »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Для вызова использую такую конструкцию (в основном для приведения типов),
предположим, что есть параметр

PARAMETERS: pa_matnr type mara-matnr.

DATA: L_OBJEK_ID TYPE KSSK-OBJEK.
DATA: exist TYPE c.

MOVE so_matnr-low TO L_OBJEK_ID.

PERFORM check_exist_mat USING L_OBJEK_ID  CHANGING exist.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Sapforum.Biz