KE24N 增加自定义字段

作者:ABAP三叔 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, CO, Data Engineering, FI, SD, 开发, 数据工程, 财务, 销售分销
KE24N 增加自定义字段 - 封面图
KE24N 增加自定义字段 - 封面图
图片来源:微信公众号(如有侵权请联系删除)

# KE24N增加自定义字段

原创 ABAP三叔 [ ABAP三叔 ](javascript:void\(0\);)

__ _ _ _ _

前言

KE24N获利能力分析报表,是财务模块比较常用的一个报表。

同文章 [ FAGLL03H增加自定义字段(一)

](http://mp.weixin.qq.com/s?__biz=MzkwNzUxNDQ5Mg==&mid=2247484411&idx=1&sn=d90864b4b6aa572c1d28499d27a4047e&chksm=c0d944e8f7aecdfe99c8e7adbd92fcc81e64d171d62a7a8c3a369d83a30f5e74137a2111a7f3&scene=21#wechat_redirect)

一样,需要增强字段"管理利润中心文本" 。

本文将介绍具体实现方法

‍

需求描述

见下图所示,报表中有一列"管理利润中心",字段名"ZZ01",它和利润中心用的是同一张表"CEPC",现在需要从文本表"CEPCT"取它的描述。

KE24N 增加自定义字段 - 封面图
KE24N 增加自定义字段 - 封面图

增强实现

1-4步同 文章" FAGLL03H增加自定义字段(一)"一致,如果已完成,请跳转至第5步

1.SE18创建BADI "FAGL_LIB"的实施

KE24N 增加自定义字段 - 封面图
KE24N 增加自定义字段 - 封面图

2.在实施类 ZCL_IM_FAGL_LIG 中创建私有方法add_text_field,定义如下

KE24N 增加自定义字段 - 封面图
KE24N 增加自定义字段 - 封面图

• * * * * * * * * * * * *

PRIVATE SECTION.

METHODS add_text_field IMPORTING !id_tabname TYPE pivb_db_tabname OPTIONAL !id_primary_field TYPE pivb_field_dbname !id_domname TYPE domname OPTIONAL !id_fieldname TYPE pivb_field_dbname OPTIONAL !id_db_name TYPE pivb_field_dbname OPTIONAL !id_language_key TYPE boole_d OPTIONAL !id_language_field TYPE pivb_field_dbname OPTIONAL CHANGING !ct_secondary_fields TYPE pivb_secondary_fields_t .

3\. add_text_field方法实代码

• * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

METHOD add_text_field. DATA: ls_sec_field LIKE LINE OF ct_secondary_fields. DATA: ls_key LIKE LINE OF ls_sec_field-key_fields. DATA: ld_db_name TYPE pivb_field_dbname. DATA: ld_ddobjname TYPE ddobjname. DATA: ld_fieldname TYPE dfies-lfieldname. DATA: ls_dfies TYPE dfies. DATA: lt_dd08v TYPE STANDARD TABLE OF dd08v. DATA: ls_dd08v LIKE LINE OF lt_dd08v. ** This determines what kind of field will be added to the output** 1) Text field: appear next to parent field in the sidebar and** added as a new field to be selected ls_sec_field-field_category = 'TEXT'. ** 2) Standard secondary field: added as a new selectable field** in the sidebar* ls_sec_field-field_category = 'FIELD'. ** 3) Tech field: hidden secondary field that can be used for** selection of other secondary fields* ls_sec_field-field_category = 'TECH'.

** if key fields are language dependent, set ID_LANGUAGE_KEY = 'X'** and provide the language-dependent field name ID_LANGUAGE_FIELD** then sy-langu will automatically be used to determine the texts

** Determination of text fields via DD08L/DD03L IF id_tabname IS NOT INITIAL AND id_db_name IS INITIAL. ls_sec_field-tabname = id_tabname. ld_ddobjname = id_tabname. CALL FUNCTION 'DDIF_TABL_GET' EXPORTING name = ld_ddobjname TABLES dd08v_tab = lt_dd08v. READ TABLE lt_dd08v WITH KEY frkart = 'TEXT' INTO ls_dd08v. ld_db_name = ls_dd08v-fieldname. ** Key fields of the text table CLEAR ls_key. ls_key-db_name = ld_db_name. ls_key-source = id_primary_field.** Language dependent key field IF id_language_field IS NOT INITIAL. CLEAR ls_key. ls_key-db_name = id_language_field. ls_key-is_language = id_language_key. ls_key-source = 'SY-LANGU'. ENDIF. APPEND ls_key TO ls_sec_field-key_fields. SELECT SINGLE fieldname FROM dd03l INTO ls_sec_field-db_name WHERE tabname = id_tabname AND keyflag = space. "#EC CI_NOORDER ** Determination of text fields via domain ELSEIF id_domname IS NOT INITIAL. ls_sec_field-domname = id_domname. ** Determination of text field via explicit text table and field ELSEIF id_tabname IS NOT INITIAL AND id_db_name IS NOT INITIAL. ls_sec_field-tabname = id_tabname. ls_sec_field-db_name = id_db_name. CLEAR ls_key.

ld_ddobjname = id_tabname. ld_fieldname = COND #( WHEN id_fieldname IS SUPPLIED THEN id_fieldname ELSE id_primary_field ).