ACAC应计对象参数增强

ACAC应计对象参数增强

1. 业务背景

业务上希望根据会计凭证生成应计对象时,将会计凭证上的某些字段保存到应计对象上,同时在应计对象过账时将这些字段的值赋值给应计对象过账产生的会计凭证上。

2. 需求分析

  • 2.1 从SAP官方帮助文档中,我们发现应计对象的参数,就是用来存储客户自定义字段的。

在这里插入图片描述详细信息可以参照官方帮助文档如下:

https://help.sap.com/docs/SAP_ERP_SPV/b0a950afb37a4afc9f70b44cb75ee4fa/c782d0531d8b4208e10000000a174cb4.html?version=6.03.23

  • 2.2 前置需求

    1. 需要在结构ACAC_PARAMETERS中加入字段
    2. 在配置项 分配参数到应计对象类别 中将参数字段分配给应计对象类别。

详细的过程,可以参考配参数到应计对象类别的配置文档:
在这里插入图片描述

3. 功能实现

3.1 增强结构ACAC_PARAMETERS

在这里插入图片描述

3.2 分配参数到应计对象类别
  • 3.2.1 选择配置项分配参数到应计对象类别

在这里插入图片描述

  • 3.2.2 选择定义的参数字段

在这里插入图片描述保存时报错:ACAC 009 名称范围 Z* 适用于用户定义的参数的注释
在这里插入图片描述
检查代码发现,Z类型的应计对象类别只能赋值Z开头参数字段
在这里插入图片描述
修改参数结构ACAC_PARAMETERS,再重新配置保存。

在这里插入图片描述

3.3 测试应计对象创建

输入公司代码、应计对象类别和应计对象编号,点击参数页签,点击输入参数,可以看到我们配置的字段显示在屏幕上。

在这里插入图片描述

3.4 修改会计凭证生成应计对象的逻辑

在会计凭证生成应计对象时,将会计凭证上的字段作为应计对象的参数赋值给应计对象。使用类CL_ACE_MDO_SUBOBJPARAMETERS_MODIFY方法

    1. 创建方法GET_PO_ASSIGN读取应计对象类型的参数配置
   METHOD get_po_assign.
    SELECT *
      FROM tacac_po_assign
      INTO TABLE @gt_po_assign.

    SORT gt_po_assign BY objtype acac_parameter.
   ENDMETHOD. 
    1. 根据配置和凭证抬头设置参数
   METHOD get_parameters_from_acc.
	  DATA: lv_acc_field TYPE char30,
	          lv_acc_fname TYPE fieldname,
	          lv_content   TYPE ace_par_content.
	    FIELD-SYMBOLS: <lfs_acc_field>  TYPE any.
	    LOOP AT gt_po_assign INTO DATA(ls_po_assign) WHERE objtype = iv_acac_objtype.
	
	      lv_acc_fname = ls_po_assign-acac_parameter+2.
	
	      "凭证抬头字段
	      lv_acc_field = 'IS_BKPF-' && lv_acc_fname.
	      ASSIGN (lv_acc_field) TO <lfs_acc_field>.
	
	      IF NOT <lfs_acc_field> IS ASSIGNED.
	        "凭证明细字段
	        lv_acc_field = 'IS_BSEG-' && lv_acc_fname.
	        ASSIGN (lv_acc_field) TO <lfs_acc_field>.
	
	      ENDIF.
	
	      IF NOT <lfs_acc_field> IS ASSIGNED.
	        CONTINUE.
	      ENDIF.
	      lv_content = <lfs_acc_field>.
	
	      UNASSIGN <lfs_acc_field>.
	
	      rt_parameters = VALUE #( BASE rt_parameters
	                         ( param_name = ls_po_assign-acac_parameter
	                           content    =  |{  lv_content ALPHA = OUT }| ) ).
	
	    ENDLOOP.
		
 ENDMETHOD.
    1. 更新应计对象的参数
   "将凭证信息更新到应计对象的参数
   DATA(lt_parameters) = get_parameters_from_acc(
     EXPORTING
       iv_acac_objtype = lv_acac_objtype
       is_bseg         = <fs_bseg>
       is_bkpf         = gs_bkpf ).

   lo_acac_mdo_subobj->parameters_modify(
     EXPORTING
       id_datefrom = acec_lowest_date             " From Date of an Entry
*             id_testrun  = space
       it_params   = lt_parameters
   ).
3.5 修改凭证替代

在执行事务代码ACEPOSTINGRUN时,将原凭证抬头的参考代码1赋值给应计过账凭证的参考码3

在这里插入图片描述

4 测试结果

原始会计凭证
在这里插入图片描述
生成的应计对象
在这里插入图片描述

应计对象过账结果
在这里插入图片描述应计对象过账凭证
在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ABAP探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值