目的:
BP創(chuàng)建供應(yīng)商主數(shù)據(jù)的時(shí)候,需要增強(qiáng)幾個(gè)字段到采購(gòu)視圖毫蚓,在采購(gòu)下添加新的分頁(yè)簽
實(shí)現(xiàn)步驟:
1 . 增強(qiáng)字段到INCL_EEW_LFM1 & INCL_EEW_LFM1_X
2.se80 創(chuàng)建函數(shù)組 和子屏幕
3.保存數(shù)據(jù)
DATA:lt_lfm1 TYPE TABLE OF lfm1.
DATA:ls_lfm1 TYPE lfm1.
REFRESH lt_lfm1.
lfm1-ekorg = cvi_bdt_adapter=>get_current_purchasing_org( ).
IF lfm1-ekorg IS NOT INITIAL.
REFRESH lt_lfm1.
cvi_bdt_adapter=>data_pbo(
EXPORTING
i_table_name = table_name_lfm1
IMPORTING
e_data_table = lt_lfm1
).
SORT lt_lfm1 BY lifnr ekorg.
DELETE ADJACENT DUPLICATES FROM lt_lfm1 COMPARING lifnr ekorg.
DELETE lt_lfm1 WHERE ekorg <> lfm1-ekorg.
CALL FUNCTION 'CVIV_BUPA_LFM1_COLLECT'
EXPORTING
i_subname = 'ZSMMSUPPLIER'
TABLES
t_lfm1 = lt_lfm1.
FREE:lt_lfm1.
ENDIF.
4.獲取數(shù)據(jù)
DATA lv_data TYPE bussdi3-data.
CALL FUNCTION 'CVIV_BUPA_LFM1_GET'
IMPORTING
e_lfm1 = gs_lfm1
e_data = lv_data.
lfm1-zlxrcz = gs_lfm1-zlxrcz .
lfm1-zlxryx = gs_lfm1-zlxryx .
lfm1-zlxrdz = gs_lfm1-zlxrdz .
lfm1-zbeizhu = gs_lfm1-zbeizhu.
5.標(biāo)記修改
IF gs_lfm1-zlxrcz NE lfm1-zlxrcz
OR gs_lfm1-zlxryx NE lfm1-zlxryx
OR gs_lfm1-zlxrdz NE lfm1-zlxrdz
OR gs_lfm1-zbeizhu NE lfm1-zbeizhu
OR gs_lfm1-ekorg NE lfm1-ekorg.
e_xchng = 'X'.
ENDIF.
6.pbo 事件
DATA:
lt_lfm1 TYPE TABLE OF lfm1,
lv_purchasing_org TYPE ekorg,
lv_lifnr TYPE lfm1-lifnr.
* step 1: request data from xo for dynpro structure
lv_lifnr = cvi_bdt_adapter=>get_current_bp( ).
lv_purchasing_org = cvi_bdt_adapter=>get_current_purchasing_org( ).
IF lv_purchasing_org IS INITIAL .
CLEAR gs_lfm1.
ELSE.
REFRESH lt_lfm1[].
cvi_bdt_adapter=>data_pbo(
EXPORTING
i_table_name = table_name_lfm1
IMPORTING
e_data_table = lt_lfm1[]
).
SORT lt_lfm1[] BY lifnr ekorg.
DELETE ADJACENT DUPLICATES FROM lt_lfm1[] COMPARING lifnr ekorg.
READ TABLE lt_lfm1 INTO gs_lfm1
WITH KEY ekorg = lv_purchasing_org.
IF sy-subrc <> 0.
CLEAR gs_lfm1.
ENDIF.
lfm1-zlxrcz = gs_lfm1-zlxrcz .
lfm1-zlxryx = gs_lfm1-zlxryx .
lfm1-zlxrdz = gs_lfm1-zlxrdz .
lfm1-zbeizhu = gs_lfm1-zbeizhu.
ENDIF.
7.pai事件
DATA:
lt_lfm1 TYPE TABLE OF lfm1.
FIELD-SYMBOLS:
<lfm1> LIKE LINE OF lt_lfm1.
DATA: lv_purchasing_org TYPE ekorg,
lv_lifnr TYPE lfm1-lifnr.
lv_lifnr = cvi_bdt_adapter=>get_current_bp( ).
lv_purchasing_org = cvi_bdt_adapter=>get_current_purchasing_org( ).
CHECK cvi_bdt_adapter=>is_direct_input_active( ) = abap_false.
* step 1: update xo memory from dypro structure
REFRESH lt_lfm1[].
cvi_bdt_adapter=>get_current_bp_data(
EXPORTING
i_table_name = table_name_lfm1
IMPORTING
e_data_table = lt_lfm1[]
).
IF lt_lfm1[] IS INITIAL.
IF gs_lfm1 IS NOT INITIAL.
gs_lfm1-lifnr = lv_lifnr.
gs_lfm1-ekorg = lv_purchasing_org.
APPEND gs_lfm1 TO lt_lfm1.
ENDIF.
ELSE.
READ TABLE lt_lfm1 ASSIGNING <lfm1> WITH KEY lifnr = lv_lifnr ekorg = lv_purchasing_org.
IF sy-subrc = 0.
<lfm1>-zlxrcz = lfm1-zlxrcz .
<lfm1>-zlxryx = lfm1-zlxryx .
<lfm1>-zlxrdz = lfm1-zlxrdz .
<lfm1>-zbeizhu = lfm1-zbeizhu.
ENDIF.
ENDIF.
cvi_bdt_adapter=>data_pai(
i_table_name = table_name_lfm1
i_data_new = lt_lfm1[]
i_validate = abap_false
).
8.配置子屏幕
在開(kāi)始配置之前可以通過(guò)TCODE:BUPT 打開(kāi)區(qū)域菜單
BUS1 創(chuàng)建應(yīng)用
BUS23 創(chuàng)建DATASET
BUS2 創(chuàng)建字段組
給字段組綁定增強(qiáng)字段
BUS3創(chuàng)建視圖 填上上述自定義程序名稱 此處程序名為SAPL+函數(shù)組名稱
分配字段組到視圖
BUS4 創(chuàng)建section 部分
分配視圖到部分
BUS5 創(chuàng)建視圖
分配部分到屏幕
BUS6創(chuàng)建屏幕順序
定義屏幕順序種類
將屏幕順序綁定到順序種類 這一步驟決定了頁(yè)簽的顯示位置
在順序里加ZLIF屏幕
BUSD 創(chuàng)建BP視圖
在該角色下添加數(shù)據(jù)集等信息
FLCU00/FLCU01 為客戶
FLVN00/FLVN01為供應(yīng)商,此處為供應(yīng)商
9.定義業(yè)務(wù)伙伴角色
分別配置角色
區(qū)分類型:2 可能的業(yè)務(wù)伙伴類型:組織(對(duì)應(yīng)BP上的按鈕)
- BUS7 維護(hù)事件
常用的事件說(shuō)明:
ISSTA 初始化
ISDAT 由主應(yīng)用從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)
ISDST 分配數(shù)據(jù)到其他使用該數(shù)據(jù)的應(yīng)用中
DTITL 更改屏幕標(biāo)題
DCUAD 決定菜單
DCUAC 更改菜單中功能嗎的狀態(tài)等
AUTH1 權(quán)限控制
FCODE 出發(fā)自定義的功能碼后的操作
XCHNG 檢查屏幕輸入字段是否有改變
DSAVB 收集本應(yīng)用的數(shù)據(jù)
DCHCK 數(shù)據(jù)有效性檢查
DTAKE 數(shù)據(jù)匯總后保存到內(nèi)存
DSAVC 完成待保存入數(shù)據(jù)庫(kù)的數(shù)據(jù)
DSAVE 數(shù)據(jù)保存庫(kù)保存操作
DLVE1 初始化本地內(nèi)存
DLVE2 初始化全局內(nèi)存
11.在該項(xiàng)目中主要使用到DSAVB昔善,ISDAT,XCHNG