【三代增強幹貨一枚】外向交貨單Delivery (VL01N)Header螢幕增強
阿新 • • 發佈:2019-01-08
先了解一下內向交貨與外向交貨:1、SE11 Append Structure 在交貨單擡頭增強需要在Likp中新增新結構
1、外向交貨:VL03N;內向交貨:VL33N
2、外向與內向相對於庫存來說的,一個出庫,一個入庫
場景:我們做一個外向交貨單Header Level的一個螢幕增強。
增強的結構的欄位,我們一般已ZZ / YY開頭。
2、SE80建立一個Function Group函式組:YDELIVER_HEAD(Deliver Header:customer Fields)
分別建立兩個Function module:
Y_GET_DATA_DELI_HEAD(get values for screen)
source code:
-
cs_likp-yyfull = gv_full.
-
cs_likp-yypartial = gv_partial.
-
cs_likp-yyveh_no = gv_veh_no.
-
cs_likp-yylr_dkt_no = gv_lr_dkt_no.
-
cs_likp-yylr_dkt_dt = gv_lr_dkt_dt.
-
cs_likp-yydriver = gv_driver.
-
cs_likp-yyinote_num = gv_inote_num .
-
cs_likp-yyinote_dt = gv_inote_dt.
-
cs_likp-yyinote_cntr = gv_inote_cntr.
- cs_likp-yytrnsp = gv_trnsp.
Y_SET_DATA_DELI_ITEM(set values for screen)
source code:
-
gv_full = is_likp-yyfull .
-
gv_partial = is_likp-yypartial .
-
gv_veh_no = is_likp-yyveh_no .
-
gv_lr_dkt_no = is_likp-yylr_dkt_no.
-
gv_lr_dkt_dt = is_likp-yylr_dkt_dt .
-
gv_driver = is_likp-yydriver .
-
gv_inote_num = is_likp-yyinote_num .
-
gv_inote_dt = is_likp-yyinote_dt .
-
gv_inote_cntr = is_likp-yyinote_cntr.
- gv_trnsp = is_likp-yytrnsp.
3、建立一個Subscreen螢幕9000
畫出螢幕增強需要的欄位
輸入*,點選Get From Program按鈕,獲取程式中所有的變數,選中想要的即可
別忘了啟用全部元素
4、查詢相應的BADI
查詢方法請參考:SAP第三代增強BADI的實現方法及查詢方式
Delivery Header level:LE_SHP_TAB_CUST_HEAD
Delivery Item level:LE_SHP_TAB_CUST_ITEM
這裡Additional tab,我們只需要LE_SHP_TAB_CUST_HEAD
5、SE18 BADI實施
在BADI物件的方法中實現我們相應的程式碼
IF_EX_LE_SHP_TAB_CUST_HEAD~ACTIVATE_TAB_PAGE
-
METHOD if_ex_le_shp_tab_cust_head~activate_tab_page.
-
ef_caption = text-000. " screen caption
-
ef_program = 'SAPLYDELIVER_HEAD'."FunctionPool:sapl + function group name
-
ef_position = 4. "tab position
-
ef_dynpro = '9000'. "screen number
-
cs_v50agl_cust = 'X'.
- ENDMETHOD.
IF_EX_LE_SHP_TAB_CUST_HEAD~TRANSFER_DATA_TO_SUBSCREEN
-
METHOD if_ex_le_shp_tab_cust_head~transfer_data_to_subscreen.
-
CALL FUNCTION 'Y_SET_DATA_DELI_ITEM'
-
EXPORTING
-
is_likp = is_likp.
- ENDMETHOD.
IF_EX_LE_SHP_TAB_CUST_HEAD~TRANSFER_DATA_FROM_SUBSCREEN
-
METHOD if_ex_le_shp_tab_cust_head~transfer_data_from_subscreen.
-
CALL FUNCTION 'Y_GET_DATA_DELI_HEAD'
-
IMPORTING
-
cs_likp = cs_likp.
- ENDMETHOD.
啟用程式碼,啟用BADI物件
這裡的FUNCTION的import/export為什麼是CS_LIKP、IS_LIKP?能不能自己隨便定義能? 當然不能,我們可以在Interface:IF_EX_LE_SHP_TAB_CUST_HEAD中Parameter中查詢我們所需的傳入、傳出引數
6、VL02N測試
F4查詢一個存在的交貨單
這裡就能檢視我們增強的螢幕了
輸入資料,儲存,然後再標準表LIKP就能看到去剛才增強欄位的值了