2010年1月28日

維護業務夥伴Search Help

在使用Tcode BP維護業務夥伴時,不管用那一組查詢,夥伴代碼都是放在最後一欄,不太直覺,剛好有個BADI BUPA_SHLP_CONTROL可以解決

進入SE19新增一個Implementation,BADI提供了一個界面FILTER_INCL_SHLP,參數是CT_SHLP_TAB,把相關的SH補進去就可以達到需求。

具體作法(解法不只一種):
1 先進SE11複製按地址的SH BUPAA,給定名稱為ZBUPAA並修改欄位順序把PARTNER移到最前面。
2 在界面中新增程式碼:
DATA: LV_SHLP1 TYPE SHLP_DESCR,
LV_SHLP2 TYPE SHLP_DESCR,
LT_DDSHIFACES1 TYPE DDSHIFACES,
LT_DDSHIFACES2 TYPE DDSHIFACES,
LW_DDSHIFACE1 TYPE DDSHIFACE,
LW_DDSHIFACE2 TYPE DDSHIFACE.

CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
EXPORTING
SHLPNAME = 'ZBUPAA'
SHLPTYPE = 'SH'
IMPORTING
SHLP = LV_SHLP1.

READ TABLE CT_SHLP_TAB INTO LV_SHLP2 INDEX 1.
LT_DDSHIFACES1 = LV_SHLP1-INTERFACE.
LT_DDSHIFACES2 = LV_SHLP2-INTERFACE.
LOOP AT LT_DDSHIFACES2 INTO LW_DDSHIFACE2.
READ TABLE LT_DDSHIFACES1 INTO LW_DDSHIFACE1
WITH KEY SHLPFIELD = LW_DDSHIFACE2-SHLPFIELD.
IF SY-SUBRC = 0.
LW_DDSHIFACE1 = LW_DDSHIFACE2.
MODIFY LT_DDSHIFACES1 FROM LW_DDSHIFACE1 INDEX SY-TABIX.
ENDIF.
ENDLOOP.
LV_SHLP1-INTERFACE = LT_DDSHIFACES1.
INSERT LV_SHLP1 INTO CT_SHLP_TAB INDEX 1.
3 進行測試