Функциональные модули для обновления таблицы bsid (поле: cession_kz) - PullRequest
1 голос
/ 05 апреля 2019

Для определенной программы мне нужно обновить таблицу bsid. Поле cession_kz необходимо обновить. Я искал много функциональных модулей, но ни один из них не соответствовал моим потребностям. Кто-нибудь знает лучшую практику для решения этой проблемы?

1 Ответ

3 голосов
/ 07 апреля 2019

BSID является вторичным индексом для клиентских товаров BSEG, поэтому его непосредственное обновление приведет к несогласованности базы данных, и любое обновление должно проходить через BSEG.

Вы можете использовать функциональный модуль, например FI_ITEMS_MASS_CHANGE. Этот FM обновляет BSEG, запуская BDC для транзакции FB02 (Изменить документ). Когда соответствующий (клиентский) элемент изменяется в BSEG, соответствующая запись BSID также изменяется.

См. Пример кода ниже:

DATA: ls_bseg   TYPE bseg,
      lt_errdoc TYPE tpit_t_errdoc,
      lt_fname  TYPE tpit_t_fname,
      lt_buztab TYPE tpit_t_buztab.

* Field name to be changed
APPEND 'CESSION_KZ' TO lt_fname.

* New field value
ls_bseg-cession_kz = 'AB'.

* Selection of items to be changed
* Only select customer items to avoid problems in batch input
SELECT bukrs belnr gjahr buzei koart umskz bschl mwart mwskz
  FROM bseg
  INTO CORRESPONDING FIELDS OF TABLE lt_buztab
  WHERE belnr = '1400000000' AND
        bukrs = '1000' AND
        koart = 'D'. "Customers

CALL FUNCTION 'FI_ITEMS_MASS_CHANGE'
  EXPORTING
    s_bseg     = ls_bseg
  IMPORTING
    errtab     = lt_errdoc[]
  TABLES
    it_buztab  = lt_buztab
    it_fldtab  = lt_fname
  EXCEPTIONS
    bdc_errors = 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.

Убедитесь, что вы разрешаете изменения в представлении обслуживания V_TBAER с транзакцией SM30 или с помощью настройки:
Финансовый учет → Глобальные параметры финансового учета → Документ → Позиция → Правила изменения документа, Позиция .

Allowing changes to CESSION_KZ in customizing

Примечание:
Для всех балансовых единиц, передаваемых в FM, должны быть определены показатели залога:

Финансовый учет → Расчеты по дебиторской и кредиторской задолженности → Счет клиента → Основные данные → Подготовка к созданию основных данных → Определение показателя залога дебиторской задолженности.

Если нет, поле не будет доступно для пакетного ввода, и FM приведет к ошибке.

Defining Pledging Indicators

...