BP 屏幕增强
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


由于是自定义字段,现在HANA更新自定义字段不会更新到KNA1表,所以需要写增强BADI
SE19 继承 PARTNER_UPDATE


METHOD if_ex_partner_update~change_before_update.
DATA lt_but000_o TYPE TABLE OF but000 .
DATA lt_but000_n TYPE TABLE OF but000 .
DATA ls_but000 TYPE but000 .
CALL FUNCTION 'BUPA_GENERAL_CALLBACK'
TABLES
et_but000_old = lt_but000_o
et_but000_new = lt_but000_n.
IF lt_but000_n IS NOT INITIAL.
LOOP AT lt_but000_n INTO ls_but000.
ENDLOOP.
ENDIF.
SELECT partner_guid, customer
INTO TABLE @DATA(lt_cvi_cust)
FROM cvi_cust_link
WHERE partner_guid = @ls_but000-partner_guid.
SELECT *
INTO TABLE @DATA(lt_kna1)
FROM kna1
FOR ALL ENTRIES IN @lt_cvi_cust
WHERE kunnr = @lt_cvi_cust-customer.
READ TABLE lt_kna1 ASSIGNING FIELD-SYMBOL(<fs_kna1>) INDEX 1.
IF sy-subrc = 0.
<fs_kna1>-yd_cusid = ls_but000-yd_cusid .
<fs_kna1>-yd_ussiccode = ls_but000-yd_ussiccode .
<fs_kna1>-yd_cusemployee = ls_but000-yd_cusemployee .
<fs_kna1>-yd_cushierarchy = ls_but000-yd_cushierarchy.
<fs_kna1>-yd_anturnover = ls_but000-yd_anturnover .
<fs_kna1>-yd_ussicdesc = ls_but000-yd_ussicdesc .
<fs_kna1>-yd_cusnatduns = ls_but000-yd_cusnatduns .
<fs_kna1>-yd_cuswwduns = ls_but000-yd_cuswwduns .
<fs_kna1>-ygmaid = ls_but000-ygmaid .
<fs_kna1>-yename1 = ls_but000-yename1 .
<fs_kna1>-yename2 = ls_but000-yename2 .
<fs_kna1>-yeadstr2 = ls_but000-yeadstr2 .
<fs_kna1>-yeadstreet = ls_but000-yeadstreet .
<fs_kna1>-yeadhsnm = ls_but000-yeadhsnm .
<fs_kna1>-yeadpstcd = ls_but000-yeadpstcd .
<fs_kna1>-yeadcity = ls_but000-yeadcity .
* MODIFY kna1 FROM <fs_kna1> .
CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
EXPORTING
i_kna1 = <fs_kna1>
IMPORTING
e_kunnr = <fs_kna1>-kunnr
* TABLES
* T_UPD_TXT =
* EXCEPTIONS
.
ENDIF.
ENDMETHOD.
通过上面的增强去更新KNA1表
对于配置已经结束,接下来记录下调用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.
自定义字段在创建BP得同时能够更新KNA1表

SE18 CVI_CUSTOM_MAPPER





posted on 2020-07-22 17:55 TorranceZhao 阅读(910) 评论(0) 收藏 举报
浙公网安备 33010602011771号