Текущее время: Вс, июл 27 2025, 10:39

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Ahrefs [Bot]


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

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