使用功能模块更新BSEG-ZUONR

时间:2015-11-19 07:39:05

标签: sap abap bapi

我使用protected override void OnUnRegistered(Context context, string registrationId){ //Run on background GoogleCloudMessaging.getInstance(context).unregister(); } 成功更改BKPF-BKTXT,但为什么我也无法使用FM CHANGE_DOCUMENT更改BSEG-ZUONR

这里是FM CHANGE_DOCUMENT

FM CHANGE_DOCUMENT

这里是要更改CALL FUNCTION 'CHANGE_DOCUMENT' TABLES T_BKDF = t_bkdf T_BKPF = t_bkpf T_BSEC = t_bsec T_BSED = t_bsed T_BSEG = t_bseg T_BSET = t_bset * T_BSEG_ADD = . (成功)的代码:

BKPF-BKTXT

这里是要更改wa_t_bkpf-mandt = sy-mandt. wa_t_bkpf-bukrs = '1000'. wa_t_bkpf-gjahr = gjahr_import. wa_t_bkpf-belnr = belnr_import. wa_t_bkpf-bktxt = zuonr_import. APPEND wa_t_bkpf TO t_bkpf. (失败)的代码:

BSEG-ZUONR

3 个答案:

答案 0 :(得分:1)

由于作者没有时间确认,我可以为他做这件事,因为我刚刚测试了这个案例。 如果我们从其签名传递FM所有参数,则更新运行顺利。例如,像这样:

DATA: lt_bkdf TYPE TABLE OF bkdf,
      lt_bkpf TYPE TABLE OF bkpf,
      wa_bkpf TYPE bkpf,
      lt_bsec TYPE TABLE OF bsec,
      wa_bseg  TYPE bseg,
      lt_bsed TYPE TABLE OF bsed,
      lt_bseg TYPE TABLE OF bseg,
      lt_bset TYPE TABLE OF bset.

wa_bkpf-mandt = sy-mandt.
wa_bkpf-bukrs = '5900'.
wa_bkpf-gjahr = gjahr_import.
wa_bkpf-belnr = belnr_import.
wa_bkpf-bktxt = 'Batch'.
APPEND wa_bkpf TO lt_bkpf.

wa_bseg-mandt = sy-mandt.
wa_bseg-bukrs = '5900'.
wa_bseg-gjahr = gjahr_import.
wa_bseg-belnr = belnr_import.
wa_bseg-buzei = '1'.
wa_bseg-zuonr = '20151131'.
APPEND wa_bseg TO lt_bseg.

  CALL FUNCTION 'CHANGE_DOCUMENT'
    TABLES
      t_bkdf           = lt_bkdf
      t_bkpf           = lt_bkpf
      t_bsec           = lt_bsec
      t_bsed           = lt_bsed
      t_bseg           = lt_bseg
      t_bset           = lt_bset
      .

COMMIT WORK.

除最后一个之外的所有FM表参数都是必需

答案 1 :(得分:1)

请勿使用此FM

CALL FUNCTION 'CHANGE_DOCUMENT' 

如果没有提供,此FM会将所有其他字段更改为初始字段。


CALL FUNCTION 'FI_DOCUMENT_CHANGE'

似乎FM不能用于更改具有帐户类型(BSEG-KOART)-'S'(总帐帐户)的订单项。


尝试以下FM

'FI_ITEMS_MASS_CHANGE'

答案 2 :(得分:0)

字段zuonr引用它所属的对象。 例如,采购订单。

假设您支付采购订单的头寸。 创建bkpf / bseg中的文档(以及更多)。 Bseg-Zuonr包含此采购订单的编号。

如果允许您更改此字段,则会破坏数据的参照完整性。它将指向未创建的采购订单位置或根本不存在的采购订单位置。

因此,从商业角度来看,在创建该字段后更改此字段是没有意义的,因此SAP永远不会允许更改它。