1
文档说明
S4系统中,对供应商和客户的操作统一到BP中,当需要对主数据新增字段时,可以使用新增页签的办法,展示增强字段。
本文档以客户主数据增强为例,介绍BP新增页签增强。因为BP为供应商和客户共用,因此供应商的新增页签增强,也可以按照本文档实现,方法类似,注意区分。
2
代码实现
2.1
增强表字段
在KNA1表的INCL_EEW_KNA1结构中添加增强字段ZODRATE
在更新结构中也加入增强字段
BP各表新增字段的默认结构
KNA1:INCL_EEW_KNA1,INCL_EEW_KNA1_X
KNB1:INCL_EEW_KNB1,INCL_EEW_KNB1_X
KNVV:INCL_EEW_KNVV,INCL_EEW_KNVV_X
LFA1:INCL_EEW_LFA1,INCL_EEW_LFA1_X
LFB1:INCL_EEW_LFB1,INCL_EEW_LFB1_X
BUT000:INCL_EEW_BUT000-CL_EEW_BUT000,INCL_EEW_BUT000-CL_EEW_BUT000_X
2.2
创建页签函数组
创建函数组
函数组TOP
"--------------------@斌将军--------------------
FUNCTION-POOL ZSD_09. "MESSAGE-ID ..
* INCLUDE LZSD_09D... " Local class definition
TABLES : kna1.
CONSTANTS : table_name_kna1 TYPE fsbp_table_name VALUE 'KNA1'." tabname
CONSTANTS : false TYPE boole-boole VALUE ' '.
DATA : gs_kna1 TYPE kna1.
"--------------------@斌将军--------------------
创建页签屏幕9001
9001
"--------------------@斌将军--------------------
PROCESS BEFORE OUTPUT.
MODULE status_9001.
*
PROCESS AFTER INPUT.
MODULE user_command_9001.
"--------------------@斌将军--------------------
屏幕流
"--------------------@斌将军--------------------
MODULE status_9001 OUTPUT.
CALL FUNCTION 'BUS_PBO'.
ENDMODULE.
MODULE user_command_9001 INPUT.
CALL FUNCTION 'BUS_PAI'.
ENDMODULE.
"--------------------@斌将军--------------------
函数模块:ZSD_09_EVENT_ISDAT
"--------------------@斌将军--------------------
FUNCTION zsd_09_event_isdat.
*"-----------------------------------------------
*"*"本地接口:
*"-----------------------------------------------
CALL FUNCTION 'CVIC_BUPA_KNA1_GET'
IMPORTING
e_kna1 = gs_kna1.
kna1-zodrate = gs_kna1-zodrate. "增强字段赋值
ENDFUNCTION.
"--------------------@斌将军--------------------
创建结构
函数模块:ZSD_09_EVENT_DSAVB
"--------------------@斌将军--------------------
FUNCTION ZSD_09_EVENT_DSAVB.
*"-----------------------------
*"*"本地接口:
*"-----------------------------
MOVE-CORRESPONDING gs_kna1 TO kna1.
CALL FUNCTION 'CVIC_BUPA_KNA1_COLLECT'
EXPORTING
i_subname = 'ZSSDV002_KNA1' "附加结构
i_kna1 = kna1.
ENDFUNCTION.
"--------------------@斌将军--------------------
函数模块:ZSD_09_EVENT_XCHNG
"--------------------@斌将军--------------------
FUNCTION zsd_09_event_xchng.
*"-------------------------------
*"*"本地接口:
*" EXPORTING
*" VALUE(E_XCHNG) TYPE BOOLE_D
*"--------------------------------
IF gs_kna1-zodrate <> kna1-zodrate.
e_xchng = 'X'.
ENDIF.
ENDFUNCTION.
"--------------------@斌将军--------------------
函数模块:ZSD_09_EVENT_DLVE1
"--------------------@斌将军--------------------
FUNCTION zsd_09_event_dlve1.
*"-------------------------------
*"*"本地接口:
*"-------------------------------
CLEAR gs_kna1-zodrate.
ENDFUNCTION.
"--------------------@斌将军--------------------
函数模块:ZSD_09_PAI
"--------------------@斌将军--------------------
FUNCTION zsd_09_pai.
*"-------------------------------
*"*"本地接口:
*"-------------------------------
DATA: lt_kna1 TYPE TABLE OF kna1.
FIELD-SYMBOLS: LIKE LINE OF lt_kna1.
CHECK cvi_bdt_adapter=>is_direct_input_active( ) = false.
cvi_bdt_adapter=>get_current_bp_data(
EXPORTING
i_table_name = table_name_kna1
IMPORTING
e_data_table = lt_kna1[]
).
IF lt_kna1[] IS INITIAL.
IF gs_kna1 IS NOT INITIAL.
gs_kna1-kunnr = cvi_bdt_adapter=>get_current_customer( ).
APPEND gs_kna1 TO lt_kna1.
ENDIF.
ELSE.
READ TABLE lt_kna1 ASSIGNINGINDEX 1.
-zodrate = gs_kna1-zodrate.
ENDIF.
cvi_bdt_adapter=>data_pai(
i_table_name = table_name_kna1
i_data_new = lt_kna1[]
i_validate = false
).
ENDFUNCTION.
"--------------------@斌将军--------------------
函数模块:ZSD_09_PBO
"--------------------@斌将军--------------------
FUNCTION ZSD_09_PBO.
*"-----------------------------
*"*"本地接口:
*"-----------------------------
DATA:lt_kna1 TYPE TABLE OF kna1.
cvi_bdt_adapter=>data_pbo(
EXPORTING
i_table_name = table_name_kna1
IMPORTING
e_data_table = lt_kna1[]
).
IF lt_kna1[] IS INITIAL.
CLEAR gs_kna1.
ELSE.
READ TABLE lt_kna1 INTO gs_kna1 INDEX 1.
ENDIF.
ENDFUNCTION.
"--------------------@斌将军--------------------
另外,可视情况而定,新增ZSD_09_DCHCK函数,增加逻辑判断,用于检查数据
3
BP配置
3.1
注意事项
新增页签涉及到配置,因此请在业务人员使用的配置client中进行,防止出现开发client和配置client中定制配置不一致,导致请求传输后覆盖业务人员配置的情况。
3.2
配置过程
BUS1
BUS23
BUS2
新建字段组,保证编号没被使用
添加字段组结构
BUS3
创建视图,引入函数组
选择创建的字段组
BUS4
新增部分
关联视图
BUS5
新增屏幕
关联部分,其中BUP009必输
BUS6
创建屏幕顺序ZBPA01
新增屏幕项目,其中项目编号,要保证没被占用
新增顺序种类
添加屏幕顺序
添加项目到标准屏幕顺序BUP001中
BUSD
对FLCU00和FLCU01两个视图分别执行数据集、调用应用程序、屏幕顺序三种配置
数据集
调用应用程序
屏幕顺序
重复步骤执行FLCU01
BUS7
配置对应模块方法ISDAT
配置对应模块方法DSAVB
配置对应模块方法XCHNG
配置对应模块方法DLVE1
3.3
SPRO配置
路径如下
分别进入FLCU00和FLCU01中
设置FLCU00中字段状态
FLCU01中字段状态
效果展示
4
结语
以上就是BP新增页签的介绍,希望对您有所帮助。
在总结过程中,该篇文档给予了极大的帮助和借鉴
https://zhuanlan.zhihu.com/p/621051472
—— 希望本篇文章对您有所帮助 ——