供应商需要添加自定义的信息,标准的字段无法满足需求,表LFA1添加增强字段,BP屏幕中显示自定义字段。
先看效果。
1、输入事务代码 BDT_ANALYZER 打开屏幕控制
2、视图文件夹 CVIV22 下,记下放置的位置(例如 CVIV22 )
2、点击 CVIV87,获取详细信息,并记下以下内容:
应用程序:CVIV
区分类型:1
数据集:CVIV21
首先对表LFA1添加增强字段。
1、SE11进入表LFA1中,把自定义字段添加到结构 INCL_EEW_LFA1 内。
2、红框内是我添加的自定义字段。
3、同时把字段添加到结构 INCL_EEW_LFA1_X 内,组件类型 BAPIUPDATE 。
4、保存并激活。
创建函数对象
1、打开 SE80 创建函数组。
2、创建全局变量。
3、创建 PBO 函数模块
4、输入函数名称和描述。
5、复制以下代码,保存并激活。
FUNCTION zfm_bp_cvi_pbo_zvic01.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
DATA:
lt_lfa1 TYPE TABLE OF lfa1,
table_name_lfa1 TYPE fsbp_table_name VALUE 'LFA1'.
* step 1: request data from xo for dynpro structure
cvi_bdt_adapter=>data_pbo(
EXPORTING
i_table_name = table_name_lfa1
IMPORTING
e_data_table = lt_lfa1[]
).
IF lt_lfa1[] IS INITIAL.
CLEAR gs_lfa1.
ELSE.
READ TABLE lt_lfa1 INTO gs_lfa1 INDEX 1.
ENDIF.
ENDFUNCTION.
6、创建 PAI 函数模块,输入函数名称和描述。
7、复制以下代码,保存并激活。
FUNCTION zfm_bp_cvi_pai_zvic01.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
DATA: false TYPE boole-boole VALUE ' ',
lt_lfa1 TYPE TABLE OF lfa1,
table_name_lfa1 TYPE fsbp_table_name VALUE 'LFA1'.
FIELD-SYMBOLS: <lfa1> LIKE LINE OF lt_lfa1.
CHECK cvi_bdt_adapter=>is_direct_input_active( ) = false.
* step 1: update xo memory from technical screen structure
cvi_bdt_adapter=>get_current_bp_data(
EXPORTING
i_table_name = table_name_lfa1
IMPORTING
e_data_table = lt_lfa1[]
).
IF lt_lfa1[] IS INITIAL.
IF gs_lfa1 IS NOT INITIAL.
gs_lfa1-lifnr = cvi_bdt_adapter=>get_current_vendor( ).
APPEND gs_lfa1 TO lt_lfa1.
ENDIF.
ELSE.
READ TABLE lt_lfa1 ASSIGNING <lfa1> INDEX 1.
<lfa1>-zgylb = gs_lfa1-zgylb.
<lfa1>-zqdfs = gs_lfa1-zqdfs.
<lfa1>-zzqqk = gs_lfa1-zzqqk.
<lfa1>-zgypm = gs_lfa1-zgypm.
<lfa1>-zfktj = gs_lfa1-zfktj.
ENDIF.
cvi_bdt_adapter=>data_pai(
i_table_name = table_name_lfa1
i_data_new = lt_lfa1[]
i_validate = false
).
* step 2: check fields
CHECK cvi_bdt_adapter=>get_activity( ) <> cvi_bdt_adapter=>activity_display.
* SPACE to implement own PAI checks
ENDFUNCTION.
创建屏幕
1、输入屏幕号。
2、填写描述,类型选择子屏幕。
3、点击布局。
4、创建字段文本
5、在 CL 25 的地方创建输入框
6、保存激活。
7、创建 PBO MODULE。
8、双击 pbo 创建 PBO MODULE 程序。
复制以下代码
*&---------------------------------------------------------------------*
*& Module PBO OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE pbo OUTPUT.
CALL FUNCTION 'BUS_PBO'.
ENDMODULE.
9、创建 PAI MODULE。
10、双击 pai 创建 PAI MODULE 程序。
复制以下代码
*&---------------------------------------------------------------------*
*& Module PAI INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE pai INPUT.
CALL FUNCTION 'BUS_PAI'.
ENDMODULE.
在 BDT 中设置
1、事务代码 BUPT 打开BDT菜单。
2、双击 BUS2 - 字段组 打开字段组设置。
3、添加新条目。
4、输入字段组号,填写描述和功能模块 CVIV_BUPA_EVENT_FMOD2_ENH
5、添加之前屏幕中的字段。
创建视图
1、双击 BUS3 - 视图 打开视图设置。
2、创建一个视图
3、从前边章节获取程序名称、区分类型和数据集,使用“ PAI 函数名称”和“ PBO 函数名称”填入输出前和输入后
4、将字段组分配给视图
将视图分配给Section
1、双击 BUS4 - 部分
2、定位 CVIV22
3、选择 Section 并双击部分 -> 视图
4、新建条目
5、输入前边填写的视图编号,项目编号随意填写
测试
1、事务代码 BP
2、搜索供应商
3、显示供应商
4、选择角色“XX供应商”
5、导航到“供应商:一般数据”选项卡