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

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

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
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
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login