1、 SE11 BUT000 表增强 CI_EEW_BUT000 , CI_EEW_BUT000_X
2、 再创建增强结构ZSBUT000_CUST (备用),该结构再DSAVB事件中使用

3、 创建函数组ZSD_BP ,增强相关的所有内容都需要放在此函数组中

4、 在ZSD_BP的Include top中定义如下变量:这些变量会在后续的函数中使用到

TABLES: BUT000. CONSTANTS: TABLE_NAME_BUT000 TYPE FSBP_TABLE_NAME VALUE ‘BUT000‘, FALSE TYPE BOOLE-BOOLE VALUE ‘ ‘. DATA: GS_BUT000 TYPE BUT000.
5、 创建屏幕9000,屏幕字段从表BUT000中生成 BUT000-XXXXX



6、进行屏幕增强配置,进入TCODE :BUPT

7、 创建应用程序 BUS1


8、 创建数据集 BUS23



9、创建字段组 BUS2


配置字段组对应的字段

10、在函数组ZSD_BP中创建两个函数(无输入输出参数):
YSD_BUT000_PBO;
YSD_BUT000_PAI;
FUNCTION YSD_BUT000_PBO.
*"------------------------------------------------------------------
*"*"Local Interface:
*"------------------------------------------------------------------
data:
lt_but000 type table of but000.
* step 1: request data from xo for dynpro structure
"if gs_but000 is initial.
cvi_bdt_adapter=>data_pbo(
exporting
i_table_name = table_name_but000
importing
e_data_table = lt_but000[]
).
"endif.
if lt_but000[] is initial.
clear gs_but000.
else.
read table lt_but000 into gs_but000 index 1.
endif.
ENDFUNCTION.
FUNCTION YSD_BUT000_PAI.
*"------------------------------------------------------------------
*"*"Local Interface:
*"------------------------------------------------------------------
data:lt_but000 type table of but000.
field-symbols:
<but000> like line of lt_but000.
check cvi_bdt_adapter=>is_direct_input_active( ) = false.
* step 1: update xo memory from dypro structure
cvi_bdt_adapter=>get_current_bp_data(
exporting
i_table_name = table_name_but000
importing
e_data_table = lt_but000[]
).
if lt_but000[] is initial.
if gs_but000 is not initial.
gs_but000-partner = cvi_bdt_adapter=>get_current_bp( ).
append gs_but000 to lt_but000.
endif.
else.
read table lt_but000 assigning <but000> index 1.
<but000>-YD_CUSID = gs_but000-YD_CUSID .
<but000>-YD_USSICCODE = gs_but000-YD_USSICCODE .
<but000>-YD_CUSEMPLOYEE = gs_but000-YD_CUSEMPLOYEE .
<but000>-YD_CUSHIERARCHY = gs_but000-YD_CUSHIERARCHY.
<but000>-YD_ANTURNOVER = gs_but000-YD_ANTURNOVER .
<but000>-YD_USSICDESC = gs_but000-YD_USSICDESC .
<but000>-YD_CUSNATDUNS = gs_but000-YD_CUSNATDUNS .
<but000>-YD_CUSWWDUNS = gs_but000-YD_CUSWWDUNS .
<but000>-YGMAID = gs_but000-YGMAID .
<but000>-YENAME1 = gs_but000-YENAME1 .
<but000>-YENAME2 = gs_but000-YENAME2 .
<but000>-YEADSTR2 = gs_but000-YEADSTR2 .
<but000>-YEADSTREET = gs_but000-YEADSTREET .
<but000>-YEADHSNM = gs_but000-YEADHSNM .
<but000>-YEADPSTCD = gs_but000-YEADPSTCD .
<but000>-YEADCITY = gs_but000-YEADCITY .
assign gs_but000 to <but000>.
endif.
cvi_bdt_adapter=>data_pai(
i_table_name = table_name_but000
i_data_new = lt_but000[]
i_validate = false
).
ENDFUNCTION.
11、创建视图BUS3

将程序名、屏幕号、PBO、PAI函数分配给视图



12、创建部分BUS4



13、 创建屏幕BUS5



14、创建屏幕顺序BUS6


15、 分配屏幕给屏幕顺序

16、定义屏幕顺序种类


17、对标准屏幕顺序分配自定义屏幕


18、业务伙伴视图BUSD

选择要分配给的视图例如:


分配调用应用


配置完成目前状态BP界面可以看到页签,但是无法保存数据,需要定义事件
19、 定义事件


在函数组ZSD_BP中定义三个函数
1、ZFI_BUT000_EVENT_DSAVB 无传入传出参数,参数已经在top里面定义好了
FUNCTION ZFI_BUT000_EVENT_DSAVB.
*"------------------------------------------------------------------
*"*"Local Interface:
*"------------------------------------------------------------------
DATA:LS_BUT000 TYPE BUT000.
LS_BUT000 = BUT000.
MOVE-CORRESPONDING GS_BUT000 TO BUT000.
BUT000-YD_CUSID = LS_BUT000-YD_CUSID .
BUT000-YD_USSICCODE = LS_BUT000-YD_USSICCODE .
BUT000-YD_CUSEMPLOYEE = LS_BUT000-YD_CUSEMPLOYEE .
BUT000-YD_CUSHIERARCHY = LS_BUT000-YD_CUSHIERARCHY.
BUT000-YD_ANTURNOVER = LS_BUT000-YD_ANTURNOVER .
BUT000-YD_USSICDESC = LS_BUT000-YD_USSICDESC .
BUT000-YD_CUSNATDUNS = LS_BUT000-YD_CUSNATDUNS .
BUT000-YD_CUSWWDUNS = LS_BUT000-YD_CUSWWDUNS .
BUT000-YGMAID = LS_BUT000-YGMAID .
BUT000-YENAME1 = LS_BUT000-YENAME1 .
BUT000-YENAME2 = LS_BUT000-YENAME2 .
BUT000-YEADSTR2 = LS_BUT000-YEADSTR2 .
BUT000-YEADSTREET = LS_BUT000-YEADSTREET .
BUT000-YEADHSNM = LS_BUT000-YEADHSNM .
BUT000-YEADPSTCD = LS_BUT000-YEADPSTCD .
BUT000-YEADCITY = LS_BUT000-YEADCITY .
CALL FUNCTION ‘BUP_BUPA_BUT000_COLLECT‘
EXPORTING
i_subname = ‘YSBUT00_CUST‘
i_but000 = BUT000
* I_ALL_INTERVALS = ‘ ‘
.
ENDFUNCTION.
2、ZFI_BUT000_EVENT_ISDAT 无传入传出参数
FUNCTION ZFI_BUT000_EVENT_ISDAT.
*"------------------------------------------------------------------
*"*"Local Interface:
*"------------------------------------------------------------------
CALL FUNCTION ‘BUP_BUPA_BUT000_GET‘
IMPORTING
E_BUT000 = GS_BUT000
.
BUT000-YD_CUSID = GS_BUT000-YD_CUSID .
BUT000-YD_USSICCODE = GS_BUT000-YD_USSICCODE .
BUT000-YD_CUSEMPLOYEE = GS_BUT000-YD_CUSEMPLOYEE .
BUT000-YD_CUSHIERARCHY = GS_BUT000-YD_CUSHIERARCHY.
BUT000-YD_ANTURNOVER = GS_BUT000-YD_ANTURNOVER .
BUT000-YD_USSICDESC = GS_BUT000-YD_USSICDESC .
BUT000-YD_CUSNATDUNS = GS_BUT000-YD_CUSNATDUNS .
BUT000-YD_CUSWWDUNS = GS_BUT000-YD_CUSWWDUNS .
BUT000-YGMAID = GS_BUT000-YGMAID .
BUT000-YENAME1 = GS_BUT000-YENAME1 .
BUT000-YENAME2 = GS_BUT000-YENAME2 .
BUT000-YEADSTR2 = GS_BUT000-YEADSTR2 .
BUT000-YEADSTREET = GS_BUT000-YEADSTREET .
BUT000-YEADHSNM = GS_BUT000-YEADHSNM .
BUT000-YEADPSTCD = GS_BUT000-YEADPSTCD .
BUT000-YEADCITY = GS_BUT000-YEADCITY .
ENDFUNCTION.
3、ZFI_BUT000_EVENT_XCHNG 有传出参数 E_XCHNG LIKE BUS000FLDS-XCHNG

FUNCTION ZFI_BUT000_EVENT_XCHNG. *"------------------------------------------------------------------ *"*"Local Interface: *" EXPORTING *" VALUE(E_XCHNG) LIKE BUS000FLDS-XCHNG *"------------------------------------------------------------------ IF GS_BUT000-YD_CUSID NE BUT000-YD_CUSID OR GS_BUT000-YD_USSICCODE NE BUT000-YD_USSICCODE OR GS_BUT000-YD_CUSEMPLOYEE NE BUT000-YD_CUSEMPLOYEE OR GS_BUT000-YD_CUSHIERARCHY NE BUT000-YD_CUSHIERARCHY OR GS_BUT000-YD_ANTURNOVER NE BUT000-YD_ANTURNOVER OR GS_BUT000-YD_USSICDESC NE BUT000-YD_USSICDESC OR GS_BUT000-YD_CUSNATDUNS NE BUT000-YD_CUSNATDUNS OR GS_BUT000-YD_CUSWWDUNS NE BUT000-YD_CUSWWDUNS OR GS_BUT000-YGMAID NE BUT000-YGMAID OR GS_BUT000-YENAME1 NE BUT000-YENAME1 OR GS_BUT000-YENAME2 NE BUT000-YENAME2 OR GS_BUT000-YEADSTR2 NE BUT000-YEADSTR2 OR GS_BUT000-YEADSTREET NE BUT000-YEADSTREET OR GS_BUT000-YEADHSNM NE BUT000-YEADHSNM OR GS_BUT000-YEADPSTCD NE BUT000-YEADPSTCD OR GS_BUT000-YEADCITY NE BUT000-YEADCITY . E_XCHNG = ‘X‘. ENDIF. ENDFUNCTION.
20、 将创建好的函数分配给对应的事件BUS7



到此的话页签增强已经结束
21、 接着我们将添加BP的interfance效果图如下

22、在新界面(TCODE:BUS_HDRID)中增加一列

23、 同时在SM30(V_TBZJ1C)中去激活BP的对话框顺序

同时在SM30(V_TBZJ1)

24、 在业务伙伴视图 BUSD中维护:屏幕顺序 和 子标题ID


对于配置已经结束,接下来记录下调用BAPI创建BP的时候如何处理
FROM FM_CHANGE_EEW USING US_ALV01 TYPE TY_ALV01. DATA:LS_BUS000_EEW TYPE BUS000_EEW, LS_BUS000_EEW_X TYPE BUS000_EEW_X, LT_RETURN TYPE BUS_BAPIRET2_T. SELECT SINGLE PARTNER_GUID INTO LS_BUS000_EEW-PARTNR_GUID FROM BUT000 WHERE PARTNER = US_ALV01-PARTNER. CHECK SY-SUBRC = 0. LS_BUS000_EEW-ZVBUND = US_ALV01-VBUND. LS_BUS000_EEW_X-PARTNR_GUID = LS_BUS000_EEW_X-ZTEST = ‘X’. CALL FUNCTION ‘BUPA_CENTRAL_CI_CHANGE’ EXPORTING IS_BUS000_EEW = LS_BUS000_EEW IS_BUS000_EEW_X = LS_BUS000_EEW_X IMPORTING ET_RETURN = LT_RETURN.
原文:https://www.cnblogs.com/springzt/p/13362294.html