用于更新表bsid的函数模块(字段:cession_kz)

问题描述 投票:1回答:1

对于某个程序,我需要更新表bsid。需要更新字段cession_kz。我找了很多功能模块,但没有一个能满足我的需求。有人知道解决这个问题的最佳做法吗?

function sap edit abap
1个回答
3
投票

BSID是BSEG客户项目的二级索引,因此直接更新它将导致数据库不一致,任何更新都必须通过BSEG。

您可以使用像FI_ITEMS_MASS_CHANGE这样的功能模块。该FM通过运行事务FB02(更改文档)的BDC来更新BSEG。当在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.

确保您允许使用事务SM30或通过自定义更改维护视图V_TBAER: 财务会计→财务会计全局设置→凭证→行项目→凭证更改规则,行项目。

Allowing changes to CESSION_KZ in customizing

注意: 应为传递给FM的所有公司代码定义认捐指标:

财务会计→应收账款和应付账款→客户账户→主数据→准备创建主数据→定义应收账款质押指标。

如果不是,该字段将不可用于批输入,FM将导致错误。

Defining Pledging Indicators

© www.soinside.com 2019 - 2024. All rights reserved.