Текущее время: Пт, июл 25 2025, 05:37

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: BAPI_FIXEDASSET_OVRTAKE_CREATE и специфика страны
СообщениеДобавлено: Ср, ноя 17 2010, 15:13 
Ассистент
Ассистент

Зарегистрирован:
Чт, май 17 2007, 16:31
Сообщения: 40
Откуда: Санкт-Петербург
Т.к. в BAPI_FIXEDASSET_OVRTAKE_CREATE не передаются поля специфики страны, то срабатывает экранная проверка на обязательность полей (ошибка 055(00) 'Заполните все обязательные поля'). Можно, конечно, обязательность отключить, создать ОС и потом вызвать AS02 для дозаписи полей специфики страны. Поделитесь опытом, как в бапи по созданию ОС передать специфику страны? Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_FIXEDASSET_OVRTAKE_CREATE и специфика страны
СообщениеДобавлено: Вт, дек 13 2011, 18:18 
Начинающий
Начинающий

Зарегистрирован:
Ср, дек 07 2011, 17:52
Сообщения: 7
Я искал стандартные ФМ. По ходу их нет. Сама транзакция заполняет их на основе классов. Я выдрал код и склеил упрощенную версию. В данном случае заполняю три строчки по драг металам из трех пар полей структуры:
Code:
*&---------------------------------------------------------------------*
*&      Form  create_glo
*&---------------------------------------------------------------------*
*       Взято из группы функций GLO_FIAA_SCREENS
*----------------------------------------------------------------------*
FORM create_glo USING ps_data TYPE zaa_s_dc01_alv.
  DATA: ls_key     TYPE faa_s_asset_key,
        lo_manager TYPE REF TO if_glo_master_data_mngr,
        lt_precmsa TYPE j_3rf_precmtt WITH HEADER LINE,
        ls_data    TYPE glo_s_asset_data,
        lo_msglist TYPE REF TO cl_hrbas_message_list,
        lt_error   TYPE hrbas_message_tab.
  FIELD-SYMBOLS: <ls_error> LIKE LINE OF lt_error.

  CHECK ps_data-bukrs IS NOT INITIAL AND ps_data-anln1 IS NOT INITIAL AND ps_data-anlkl IS NOT INITIAL.

  " Заполняем таблицу данных
  IF ps_data-preccode1 IS NOT INITIAL.
    CLEAR lt_precmsa.
    SELECT SINGLE * FROM j_3rf_precmet INTO CORRESPONDING FIELDS OF lt_precmsa WHERE preccode = ps_data-preccode1.
    lt_precmsa-quantity = 1.
    lt_precmsa-mass = ps_data-mass1.
    APPEND lt_precmsa.
  ENDIF.
  IF ps_data-preccode2 IS NOT INITIAL.
    CLEAR lt_precmsa.
    SELECT SINGLE * FROM j_3rf_precmet INTO CORRESPONDING FIELDS OF lt_precmsa WHERE preccode = ps_data-preccode2.
    lt_precmsa-quantity = 1.
    lt_precmsa-mass = ps_data-mass2.
    APPEND lt_precmsa.
  ENDIF.
  IF ps_data-preccode3 IS NOT INITIAL.
    CLEAR lt_precmsa.
    SELECT SINGLE * FROM j_3rf_precmet INTO CORRESPONDING FIELDS OF lt_precmsa WHERE preccode = ps_data-preccode3.
    lt_precmsa-quantity = 1.
    lt_precmsa-mass = ps_data-mass3.
    APPEND lt_precmsa.
  ENDIF.
  CHECK lt_precmsa[] IS NOT INITIAL.

  " Преобразуем данные в нужный формат
  ls_key-orgunit   = ps_data-bukrs.
  ls_key-asset     = ps_data-anln1.
  ls_key-subnumber = ps_data-anln2.
  MOVE-CORRESPONDING ls_key TO ls_data.
  CALL FUNCTION 'J_3RF_PRECM_ASSET_PACK'
    EXPORTING
      tb_precmat = lt_precmsa[]
    IMPORTING
      preccodes  = ls_data-glo_rus_precct
      quantities = ls_data-glo_rus_precq
      weights    = ls_data-glo_rus_precw.

  " Создаем менеджер
  TRY.
      CALL METHOD cf_glo_master_data_mngr=>find_by_key
        EXPORTING
          is_asset_key  = ls_key
          id_activity   = '01'
          id_assetclass = ps_data-anlkl
        RECEIVING
          ro_instance   = lo_manager.
    CATCH cx_faa_asset.
      ps_data-message_type   = sy-msgty.
      ps_data-message_id     = sy-msgid.
      ps_data-message_number = sy-msgno.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno INTO ps_data-message
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      RETURN.
  ENDTRY.
  CHECK lo_manager IS BOUND.

  " Сохраняем данные
  TRY.
      CALL METHOD lo_manager->set_data
        EXPORTING
          is_data = ls_data.
      CALL METHOD lo_manager->check_data
        CHANGING
          co_msglist = lo_msglist.
      IF lo_msglist IS BOUND.
        TRY.
            CALL METHOD lo_msglist->get_message_list
              IMPORTING
                messages = lt_error.
            LOOP AT lt_error ASSIGNING <ls_error>.
              ROLLBACK WORK.
              MOVE-CORRESPONDING <ls_error> TO sy.
              RAISE EXCEPTION TYPE cx_faa_asset.
            ENDLOOP.
          CATCH cx_hrbas_violated_assertion.
        ENDTRY.
      ENDIF.
    CATCH cx_faa_asset.
      ps_data-message_type   = sy-msgty.
      ps_data-message_id     = sy-msgid.
      ps_data-message_number = sy-msgno.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno INTO ps_data-message
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      RETURN.
  ENDTRY.
  TRY.
      CALL METHOD lo_manager->if_faa_storable~store
        EXPORTING
          ib_update_task = 'X'.
    CATCH cx_faa_storable.
      ps_data-message_type   = sy-msgty.
      ps_data-message_id     = sy-msgid.
      ps_data-message_number = sy-msgno.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno INTO ps_data-message
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      RETURN.
  ENDTRY.
ENDFORM.                    "create_glo


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_FIXEDASSET_OVRTAKE_CREATE и специфика страны
СообщениеДобавлено: Ср, дек 14 2011, 17:52 
Ассистент
Ассистент

Зарегистрирован:
Чт, май 17 2007, 16:31
Сообщения: 40
Откуда: Санкт-Петербург
Спасибо :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB