前言
这个报表是国内FI模块非常常用的,有些客户有需求,想要在该报表增加自定义字段,本文将介绍如何实现。
检查是否需要打NOTE
查看当前系统版本是否需要打 3202661NOTE,开发顾问不清楚的话,请FI顾问或者basis协助,不打上这个note的话,增强程序后会DUMP。
结构中增加字段
需要在 “IDCN_S_AR_AGING_HEADER” &“IDCN_S_AR_AGING_ITEM”
两个结构中增加增强的字段
创建隐式增强
1. SE38打开包含程序 **RFIDCN_AR_AGING_SUBROUTINE** ,找到子例程 _** **ficn_app_oth_fields;** ** _
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Form FICN_APP_OTH_FIELDS, End A*$*$-Start: (1)---------------------------------------------------------------------------------$*$*ENHANCEMENT 1 ZENH_IDCN_AR_AGING_FCAT. "active version* add by yu.xiaosan 20230516 READ TABLE ct_fieldcat TRANSPORTING NO FIELDS WITH KEY fieldname = 'ZZ01'. IF sy-subrc <> 0. CLEAR ls_fieldcat. ls_fieldcat-fieldname = 'ZZ01'. ls_fieldcat-scrtext_l = '管理利润中心'. ls_fieldcat-scrtext_m = '管理利润中心'. ls_fieldcat-scrtext_s = '管理利润中心'. ls_fieldcat-col_pos = 232. APPEND ls_fieldcat TO ct_fieldcat. ENDIF.
CLEAR ls_fieldcat. ls_fieldcat-fieldname = 'ZZ01_TEXT'. ls_fieldcat-scrtext_l = '管理利润中心描述'. ls_fieldcat-scrtext_m = '管理利润中心描述'. ls_fieldcat-scrtext_s = '管理利润中心描述'. ls_fieldcat-col_pos = 233. APPEND ls_fieldcat TO ct_fieldcat.ENDENHANCEMENT.*$*$-End: (1)---------------------------------------------------------------------------------$*$c. SE38打开包含程序 **RFIDCN_AR_AGING_PBO,** 找到子例程 **split_screen_0101;**
d. 在开始处增加隐式增强,添加自定义字段的取值逻辑; **
**
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Form SPLIT_SCREEN_0101, Start A*$*$-Start: (1)---------------------------------------------------------------------------------$*$*ENHANCEMENT 2 ZENH_IDCN_AR_AGING_FCAT. "active version* add by yu.xiaosan 20230516 IF gt_mid_output[] IS NOT INITIAL. SELECT prctr, ltext INTO TABLE @DATA(lt_cepct) FROM cepct FOR ALL ENTRIES IN @gt_mid_output WHERE prctr = @gt_mid_output-zz01 AND spras = @sy-langu. SORT lt_cepct BY prctr. IF sy-subrc = 0. LOOP AT gt_mid_output ASSIGNING FIELD-SYMBOL(<fs_output>). READ TABLE lt_cepct INTO DATA(ls_cepct) WITH KEY prctr = <fs_output>-zz01 BINARY SEARCH. CHECK sy-subrc = 0. <fs_output>-zz01_text = ls_cepct-ltext. ENDLOOP. ENDIF. ENDIF.ENDENHANCEMENT.*$*$-End: (1)---------------------------------------------------------------------------------$*$*实现BADI IDCN_AR_AGING
SE18创建 IDCN_AR_AGING的实施,
在i f_idcn_ar_aging~post_selection_control方法中添加取值逻辑 。
METHOD if_idcn_ar_aging~post_selection_control. IF ct_content_header[] IS NOT INITIAL. SELECT prctr, ltext INTO TABLE @DATA(lt_cepct) FROM cepct FOR ALL ENTRIES IN @ct_content_header WHERE prctr = @ct_content_header-zz01 AND spras = @sy-langu. SORT lt_cepct BY prctr. IF sy-subrc = 0. LOOP AT ct_content_header ASSIGNING FIELD-SYMBOL(<fs_header>). READ TABLE lt_cepct INTO DATA(ls_cepct) WITH KEY prctr = <fs_header>-zz01 BINARY SEARCH. CHECK sy-subrc = 0. <fs_header>-zz01_text = ls_cepct-ltext. ENDLOOP. ENDIF. ENDIF. ENDMETHOD.效果展示
第一层汇总ALV
第二层明细ALV