函数 CKMMC_MANCHANG_AUTOMATED物料分类账期初成本修改


前言

需求:批量修改物料期初分类账信息,BAPI:CKMMC_MANCHANG_AUTOMATED代码,以及一下报错问题的修改。


一、前台事务

CKMCCC

配置成本构成名称底表:TCKH3

二、BAPI代码及相关报错问题

1.代码参考

  BAPI:CKMMC_MANCHANG_AUTOMATED

 代码如下:

  DATA:lt_ckml_t_change_ccs TYPE ckml_t_change_ccs,
       lv_cmf_nr            TYPE cmf_nr,
       lt_cmfmsg            TYPE TABLE OF cmfmsg,
       lv_mes               TYPE string,
       lv_mesg              TYPE string.

  CLEAR:lt_ckml_t_change_ccs,lv_cmf_nr,lt_cmfmsg,lv_mesg.
  LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_alv>) WHERE sel = c_true AND flg IS INITIAL.

    APPEND INITIAL LINE TO lt_ckml_t_change_ccs ASSIGNING FIELD-SYMBOL(<fs_data>).
    <fs_data>-material  = <fs_alv>-matnr.   " 物料编码
    <fs_data>-plant     = <fs_alv>-werks.   " 工厂
    <fs_data>-year      = <fs_alv>-gjahr.   " 年度
    <fs_data>-period    = <fs_alv>-poper.   " 月份
    <fs_data>-sd_doc    = <fs_alv>-vbeln.   " 销售凭证
    <fs_data>-sd_pos    = <fs_alv>-posnr.   " 行项目
    <fs_data>-category  = <fs_alv>-rldnr.   " 物料分类账类别
    <fs_data>-curr_type = <fs_alv>-curtp.   " 货币
    <fs_data>-kst001    = <fs_alv>-kst001.  "
    <fs_data>-kst003    = <fs_alv>-kst003.  "
    <fs_data>-kst005    = <fs_alv>-kst005.  "
    <fs_data>-kst007    = <fs_alv>-kst007.  "
    <fs_data>-kst009    = <fs_alv>-kst009.  "
    <fs_data>-kst011    = <fs_alv>-kst011.  "
    <fs_data>-kst013    = <fs_alv>-kst013.  "

  ENDLOOP.

* 调用函数
  CALL FUNCTION 'CKMMC_MANCHANG_AUTOMATED'
    EXPORTING
      it_ccs    = lt_ckml_t_change_ccs
*     I_KONGR   =
*     I_RUN_TYPE       =
*     I_RUN_APPL       =
*     I_KEART   = 'H'
*     I_TEST    = ' '
*     I_MLCCT   = ' '
*     I_BKTXT   =
    IMPORTING
      e_prot_nr = lv_cmf_nr.

* 获取消息
  CALL FUNCTION 'CM_F_MESSAGES_GET'
* EXPORTING
*   APLID                        = 'ACT '
*   OBJECT                       = ' '
*   WITH_OBJECTINDEPENDENT       = 'X'
*   LAST_MESSAGES                = 0
    TABLES
      e_msgprot  = lt_cmfmsg
*     i_object_filter =
    EXCEPTIONS
      not_active = 1
      OTHERS     = 2.

  IF NOT line_exists( lt_cmfmsg[ msgty = 'E' ] ).
*   成功
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.

    MODIFY gt_alv FROM VALUE #( icon = c_green message = |成功!| flg = c_true )
                  TRANSPORTING icon message flg
                  WHERE sel = c_true
                    AND flg IS INITIAL.

  ELSE.
*   失败
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

    lv_mesg = '失败:'.

    LOOP AT lt_cmfmsg ASSIGNING FIELD-SYMBOL(<fs_return>) WHERE msgty = 'E' .
      CLEAR lv_mes.
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               = <fs_return>-arbgb
          msgnr               = <fs_return>-msgnr
          msgv1               = <fs_return>-msgv2
          msgv2               = <fs_return>-msgv1
          msgv3               = <fs_return>-msgv3
          msgv4               = <fs_return>-msgv4
        IMPORTING
          message_text_output = lv_mes.
      lv_mesg = |{ lv_mesg };{ lv_mes }|.
    ENDLOOP.

    MODIFY gt_alv FROM VALUE #( icon = c_red message = |{ lv_mesg }| )
                  TRANSPORTING icon message
                  WHERE sel = c_true
                    AND flg IS INITIAL.

  ENDIF.

2.问题处理

报错:批量数据调用一次函数处理报E类型错 消息号:C+  701  信息:内部界面中的数据不能处理

问题原因:
批量处理物料的会计1视图的价格确定不同(lt_ckml_t_change_ccs表中物料的价格确定值需要相同)

错误问题位置:


总结

可能不够清晰详细,请多包含!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值