2007-04-19

SAP:金額位數調整


DATA ZDECIMAL_PLACES LIKE TCURX-CURRDEC. "小數位數
DATA ZWAERS LIKE T001-WAERS. "幣別
DATA ZBUKRS LIKE SKB1-BUKRS. "公司代碼
DATA nPower(005) TYPE N. "金額調整位數


"取得公司代碼使用的幣別
CALL FUNCTION 'FTI_COMPANY_CODE_CURRENCY_GET'
EXPORTING
I_BUKRS = ZBUKRS
IMPORTING
E_WAERS = ZWAERS.

"取得該幣別需要擴增的小數位數
CALL FUNCTION 'G_DECIMAL_PLACES_GET'
EXPORTING
CURRENCY = ZWAERS
IMPORTING
DECIMAL_PLACES = ZDECIMAL_PLACES.

"計算金額調整位數
nPower = 10 ** ( 2 - ZDECIMAL_PLACES ).

"後面的源代碼, 當要處理金額時, 就可以乘上此調整位數

2007-04-11

SAP:內建Function尋找

如果要找找看 SAP 的內建 ABAP FUNCTION

可以連到以下網站再以關鍵字查詢, 絕對可以輕鬆找到想要的FUNCTION

http://www.erpgenie.com/abap/functions.htm

http://us.geocities.com/victorav15/sapr3/abapfun.html

2007-03-26

SAP:查詢修改紀錄

比如說,要知道銷售單某筆資料被修改的價格紀錄

除了說可以按下 -> 環境 -> 更改 來進行查詢之外

也可以利用兩個Table:(1) CDHDR (2) CDPOS

或者,可以利用兩個function:
(1) CHANGEDOCUMENT_READ_HEADERS
(2) CHANGEDOCUMENT_READ_POSITIONS

有關範例,可以上google查詢

http://www.sap-img.com/ab024.htm

2007-03-19

SAP:要查詢兩個日期的差異(幾天, 幾週, 幾年)

要查詢, 可以採用 FUNCTION HR_HK_DIFF_BT_2_DATES

簡單寫個範例:

DATA: zY LIKE P0347-SCRYY.
DATA: zM LIKE P0347-SCRMM.
DATA: zD LIKE P0347-SCRDD.

CALL FUNCTION 'HR_HK_DIFF_BT_2_DATES'
EXPORTING
DATE1 = 日期一
DATE2 = 日期二
OUTPUT_FORMAT = '01' "<----備註
IMPORTING
YEARS = zY
MONTHS = zM
DAYS = zD.


備註:

以 SE16 查詢 T7HK2P
參數有幾種用法
01 ---> Years with decimals(年, 含小數)
04 ---> Months with decimals(月, 含小數)
07 ---> Anniversary(年, 整數)
08 ---> Anniversary months(月, 整數)

若是要算差異幾日, 參數下 02 即可

*另外, 其他一些常用的日期處理functions, 可到下列網址查詢
請按這裡

2007-03-12

好康:7-11 City cafe 優惠券

憑券大杯75折,有效期間:3/15-4/25

請自己印下來使用囉

按這裡 按這裡

SAP:Range的應用

使用Range的好處,在於讓程式碼簡潔可以閱讀

這裡提供一段程式碼,請參考使用


*定義Range
*RANGE for AUFNR (紀錄工單號的集合)
DATA: rAUFNR LIKE RANGE OF GLPCA-AUFNR INITIAL SIZE 0 WITH HEADER LINE.

*新增一筆虛擬資料
MOVE: 'I' TO rAUFNR-SIGN,
'EQ' TO rAUFNR-OPTION,
'XXXX' TO rAUFNR-LOW.
APPEND rAUFNR.

*將工單號碼加入Range
*找到2007/1, 有原料耗用科目的工單, 加入Range
SELECT * FROM GLPCA WHERE RYEAR = '2007' AND
POPER = '1' AND
RACCT = '4101010100'.
"若沒有加入Range的, 才加入
IF GLPCA-AUFNR IN rAUFNR.
ELSE.
rAUFNR-SIGN = 'I'.
rAUFNR-OPTION = 'EQ'.
rAUFNR-LOW = GLPCA-AUFNR.
APPEND rAUFNR.
ENDIF.
ENDSELECT.

*使用Range
*訂單物料異動檔(AUFM), 找到剛剛篩選的工單
SELECT * FROM AUFM WHERE AUFNR in rAUFNR. "只要使用IN, 不需要寫一堆OR
IF AUFM-SHKZG = 'S'.
INV_PROFIT = INV_PROFIT + AUFM-DMBTR.
ELSE.
INV_PROFIT = INV_PROFIT - AUFM-DMBTR.
ENDIF.
ENDSELECT.