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