费用PR转多资产PO问题

由于项目中遇到费用PR(科目分配K)使用BAPI_PO_CREATE1转多资产PO(科目分配组A并设置多个资产),系统会根据PR单个科目分配属性将PO中多数量分配强行调整为单个科目分配,结果出现多个资产只保留一个,并数量汇总。


以下是通过对代码分析的逻辑过程

由knt表的条目确认最终的科目分配数据,以下是KNT内表数据来源逻辑

步骤

层级

函数\子例程\类

说明

1

BAPI_PO_CREATE1

主函数

2

perform process_po

1步骤子例程

3

CALL METHOD ch_po->if_flush_transport_mm~start( cht_models )

2步骤调用类

4

CALL METHOD super->if_flush_transport_mm~start

3步骤调用类

5

CALL METHOD me->flush_data

4步骤调用类

6

CALL FUNCTION 'MEPO_DOC_PROCESS'

5步骤调用函数

7

PERFORM fluss_setzen

6步骤子例程

8

CALL FUNCTION 'MEPO_DOC_ITEM_PROCESS'

7步骤调用函数

9

PERFORM item_process(saplmepo)

8步骤子例程

10

PERFORM item_process_main

9例程子例程,lt_ekkn内表存放1步骤中的资产分类

11

PERFORM mepo_item_fill_copy_accounts

10步骤子例程

12

CALL FUNCTION 'MEREQS_EBAN_LOOKUP'

11步骤函数,通过PR+ITEM获取科目分配明细,这里lt_ekkn结果只会返回一条(单一科目设置),再对T_EKKN(返回表)打删除标记,并将lt_ekkn插入

13

PERFORM mepo_accountings_process 

10步骤子例程,这里最终设置knt内容

结论:使用BAPI PR转PO,是强制要求科目分配保持一致,即PR是单个科目设置PO也只会有一个科目,如果PR有多科目设置,如两个,PO是三个也会按PR来

增强方案

在 FORM mepo_item_fill_copy_accounts 开头插入隐式增强,对特定的PR类型进行处理,使程序不会进入步骤12(即是按无PR转PO的方式进行处理)

ENHANCEMENT 1  ZIM_MM_PR_CONV_PO_01.    "active version
BREAK SAPIV.
  "解决使用BAPI PR转PO时,PR挂成本中心,转PO挂多个资产会导致PO只能挂一个资产,并且数量汇总 ivan 2022.11.03
  IF REBAN-BSART = 'ZGPS' OR REBAN-BSART = 'FYNB'.
    CLEAR reban-knttp.
  ENDIF.
ENDENHANCEMENT.

备注

此方案是否有其他影响暂时未知,此增强在修改PO时也会进入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值