一、事务说明:
BUS1: 应用程序创建---
BUS23: 数据集创建----
BUS2:字段组创建----
BUS3:视图创建-----
BUS4:部分创建----
BUS5:屏幕创建----
BUS6:屏幕顺序(建立屏幕顺序)
BUS7: 事件处理(初始化,数据读取,数据准备,数据保存等)
BUSD:业务伙伴视图(绑定业务伙伴和应用程序,数据集,屏幕顺序关系)
二、示例:
增强实现标准版BUT000 增强和自定义表增强(数据保存自定义表),标准程序调用自定义程序子屏幕实现屏幕增强,本文示例,以函数组屏幕为例:
函数组:
屏幕9000:
逻辑流:
PBO:
PAI:
集成配置:
BUS1:
BUS23:
BUS2: 字段组
分配字段:
BUS3: 创建视图,分配字段组
屏幕PBO/PAI:
函数:ZMM_BUT000_PBO -- 数据读取
FUNCTION zmm_but000_pbo.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
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.
函数模块:ZMM_BUT000_PAI --- 数据写入
FUNCTION zmm_but000_pai.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
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>-zbpmid = gs_but000-zbpmid.
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.
分配字段组:
BUS4:创建部分,分配视图
BUS5: 创建屏幕,分配部分
屏幕顺序处理:
出现多个页签
业务伙伴视图分配,选择的伙伴视图分配,本例子选择FLVN00
数据集分配:
应用程序分配:
配置完成目前状态BP界面可以看到页签,但是无法保存数据,需要定义事件
三、定义事件(BUS7)
函数模块:ZMM_BUT000_EVENT_DSAVB:
FUNCTION zmm_but000_event_dsavb .
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
*CALL FUNCTION 'BUP_BUPA_BUT000_GET'
* IMPORTING
* e_but000 = gs_but000
* .
but000-ztext = gs_but000-ztext.
CALL FUNCTION 'BUP_BUPA_BUT000_COLLECT'
EXPORTING
i_subname = 'ZSBUT00_CUST'
i_but000 = but000.
ENDFUNCTION.
函数模块:ZMM_BUT000_EVENT_ISDAT
FUNCTION ZMM_BUT000_EVENT_ISDAT .
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
CALL FUNCTION 'BUP_BUPA_BUT000_GET'
IMPORTING
e_but000 = gs_but000
.
but000-ztext = gs_but000-ztext.
ENDFUNCTION.
函数模块:ZMM_BUT000_EVENT_XCHNG
FUNCTION zmm_but000_event_xchng.
*"----------------------------------------------------------------------
*"*"本地接口:
*" EXPORTING
*" REFERENCE(E_XCHNG) TYPE BOOLE_D
*"----------------------------------------------------------------------
IF gs_but000-ztext NE but000-ztext.
e_xchng = abap_true.
ENDIF.
ENDFUNCTION.
四、 接着我们将添加BP的interfance效果图如下
五、在新界面(TCODE:BUS_HDRID)中增加一列
同时在SM30(V_TBZJ1C)中去激活BP的对话框顺序
同时在SM30(V_TBZJ1)
六、 在业务伙伴视图 BUSD中维护:屏幕顺序 和 子标题ID
七、 由于是自定义字段,现在HANA更新自定义字段不会更新到KNA1表,所以需要写增强BADI
SE19 继承 PARTNER_UPDATE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
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的时候如何处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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
标签:增强,gs,but000,EEW,yd,lt,BP,ls From: https://www.cnblogs.com/fSap/p/17440714.html