2

我正在尝试BUT051使用功能模块更新数据库表BUR_BUPR_BUT051_COLLECT

问题是它根本不更新。

这是我目前用于更新的部分代码BUT051。注意:我要更新的字段是BUT051~PARTNER1.

FORM update_but051.

  "--------------------------------------------------------------------"
  " TABLES
  "--------------------------------------------------------------------"
  DATA: lt_but051 TYPE TABLE OF but051.

  "--------------------------------------------------------------------"
  " STRUCTURES
  "--------------------------------------------------------------------"
  DATA: ls_but051 TYPE but051.

  REFRESH: lt_but051.
  CLEAR: ls_but051.

  " Getting all relationships of the given accounts/partners
  SELECT * FROM but051 INTO TABLE lt_but051 WHERE partner1 IN lt_partners_so.

  " Replacing all partners(field `partner1`) with the master partner.
  ls_but051-partner1 = p_mstcln.
  MODIFY lt_but051 FROM ls_but051 TRANSPORTING partner1 WHERE partner1 <> p_mstcln.

  CLEAR: ls_but051.

  LOOP AT lt_but051 INTO ls_but051.

     CALL FUNCTION 'BUR_BUPR_BUT051_COLLECT'
      EXPORTING
        i_subname = 'BUT051'
        i_but051  = ls_but051.
  ENDLOOP.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = abap_true.

ENDFORM.

关于此代码的几点说明:

  • 变量p_mstcln是类型的参数c(10),这是新的伙伴编号。
  • Internal Tablelt_partners_so是一个合作伙伴表,所有这些都需要替换为p_mstclnin but051

我是否使用了正确的功能?

是否有另一个功能模块可以做我想做的事情(更新中的字段partner1but051

4

1 回答 1

5

BUT051 是业务伙伴关系表,SAP 对此有特别说明:

2594686 - BP 的大规模更新关系

它建议使用以下功能模块来更新关系:

  • BAPI_BUPR_RELATIONSHIP_CHANGE
  • BAPI_BUPR_RELATIONSHIP_CREATE
  • BAPI_BUPR_RELATIONSHIP_DELETE
  • BAPI_BUPR_RELATIONSHIP_GET
  • BAPI_BUPR_RELATIONSHIP_REMOVE
  • BAPI_BUPR_RELSHIP_CHECKEXIST
  • BAPI_BUPR_RELSHIP_GET_DETAIL
于 2021-03-12T09:32:56.167 回答