2010年11月17日

利用BADI ME_PROCESS_PO_CUST進行PO check

BADI ME_PROCESS_PO_CUST當中有一個method CHECK可以進行整個PO的檢查。
要注意的是parameter只有IM_HEADER,並且是object形態。

以下是取得內容的範例:

*取得header
IM_HEADER->GET_DATA( ).
*取得item,一樣是object形態
IM_HEADER->GET_ITEMS( ).

檢查後若要拋出錯誤,直接用message即可。
MESSAGE E888(SABAPDOCU) WITH LV_MSGV1 LV_MSGV2 LV_MSGV3 LV_MSGV4.

利用BADI ME_PURCHDOC_POSTED將PO資訊在SAVE後寫入Addon Table

PO在save之後的BADI ME_PURCHDOC_POSTED只有一個Method POSTED,作用是在這個時間得到完整的PO資訊,可以寫到Addon Table。
要注意的地方是PO create時, IM_EKPO不會有PO number,只存在 IM_EKKO-EBELN當中。

2010年11月15日

用K_GROUP_SELECT查詢Cost Object Group

寫CO的報表時,用到Cost Object的選擇條件時常會加上Group來查詢,在處理VALUE-REQUEST時可以用FM K_GROUP_SELECT處理,以下是範例:

1 Profit Center Group
CALL FUNCTION 'K_GROUP_SELECT'
EXPORTING
CLASS = '0106'
FIELD_NAME = 'RPRCTR '
TABLE = 'GLPCT '
IMPORTING
SET_NAME = P_PCGRU
EXCEPTIONS
NO_SET_PICKED = 1.

2 Cost Center Group
CALL FUNCTION 'K_GROUP_SELECT'
EXPORTING
FIELD_NAME = 'KOSTL'
IMPORTING
SET_NAME = P_KSGRU
EXCEPTIONS
NO_SET_PICKED = 1

3 Internal Order Group
CALL FUNCTION 'K_GROUP_SELECT'
EXPORTING
FIELD_NAME = 'AUFNR'
IMPORTING
SET_NAME = P_AUFGR
EXCEPTIONS
NO_SET_PICKED = 1.

4 Cost Element Group
CALL FUNCTION 'K_GROUP_SELECT'
EXPORTING
FIELD_NAME = 'KSTAR'
KTOPL = 'XXX'
IMPORTING
SET_NAME = P_GRP
EXCEPTIONS
NO_SET_PICKED = 1.