# BP新增页签增强
原创 斌将军 [ 斌将军 ](javascript:void\(0\);)
__ _ _ _ _
**1**
**文档说明**
S4系统中,对供应商和客户的操作统一到BP中,当需要对主数据新增字段时,可以使用新增页签的办法,展示增强字段。
本文档以客户主数据增强为例,介绍BP新增页签增强。因为BP为供应商和客户共用,因此供应商的新增页签增强,也可以按照本文档实现,方法类似,注意区分。
**2**
**代码实现**
**2.1**
**增强表字段**
在KNA1表的INCL_EEW_KNA1结构中添加增强字段ZODRATE
在更新结构中也加入增强字段
BP各表新增字段的默认结构
• * * * * *
KNA1:INCL_EEW_KNA1,INCL_EEW_KNA1_XKNB1:INCL_EEW_KNB1,INCL_EEW_KNB1_XKNVV:INCL_EEW_KNVV,INCL_EEW_KNVV_XLFA1:INCL_EEW_LFA1,INCL_EEW_LFA1_XLFB1:INCL_EEW_LFB1,INCL_EEW_LFB1_XBUT000: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'." tabnameCONSTANTS : 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
.textContent = new Date().getFullYear();