You are on page 1of 3

FUNCTION Z_CO_GET_LCM_BAL.

*"----------------------------------------------------------------------
*"*"區域介面:
*" IMPORTING
*" VALUE(BUKRS) TYPE BUKRS OPTIONAL
*" VALUE(GJAHR) TYPE GJAHR OPTIONAL
*" VALUE(MATNR) TYPE MATNR OPTIONAL
*" VALUE(P_DATE) TYPE DATUM OPTIONAL
*" EXPORTING
*" VALUE(E_BUKRS) TYPE BUKRS
*" VALUE(E_GJAHR) TYPE GJAHR
*" VALUE(E_MATNR) TYPE MATNR
*" VALUE(E_RACCT) TYPE RACCT
*" VALUE(E_PSTYV_PA) TYPE PSTYV
*" VALUE(E_DRCRK) TYPE SHKZG
*" VALUE(E_WERKS) TYPE WERKS_D
*" VALUE(E_TSL) TYPE FINS_VTCUR12
*" VALUE(E_WSL) TYPE FINS_VWCUR12
*" VALUE(E_HSL) TYPE FINS_VHCUR12
*" VALUE(E_MSL) TYPE QUAN1_12
*" VALUE(E_QUANT1) TYPE FCO_QUAN1_L
*" TABLES
*" ET_ACDOCA STRUCTURE ZSCO008A
*" ET_ACDOCA_DS STRUCTURE ZSCO008A
*"----------------------------------------------------------------------

TABLES: SKAT,MSEG, SSCRFIELDS,ZTFI0035A,ZTFI0035B,ZSFI0035A,BKPF,ACDOCA.

DATA: IT_ACDOCA TYPE STANDARD TABLE OF ZSCO008A WITH HEADER LINE,


IT_ACDOCA_DS TYPE STANDARD TABLE OF ZSCO008A WITH HEADER LINE,
IS_ACDOCA TYPE ACDOCA,
GD_STR TYPE STRING.

RANGES: P_BUKRS FOR ACDOCA-RBUKRS,


P_RACCT FOR ACDOCA-RACCT,
P_PSTYV_PA FOR ACDOCA-PSTYV_PA,
P_GJAHR FOR ACDOCA-GJAHR,
P_BUDAT FOR ACDOCA-BUDAT. "前三個月過帳日期改為近三個月過帳日期

* IF BUKRS IS INITIAL.
* P_BUKRS-SIGN = 'I'.
* P_BUKRS-OPTION = 'BT'.
* P_BUKRS-LOW = '1000'. " ' 00001901'.
* P_BUKRS-HIGH = '1010'. " '00001903'.
* APPEND P_BUKRS.
* CLEAR P_BUKRS.
* ENDIF.

"P_ACCT
"YCOPA004 - 51160000/51110000
"YCOPA001 - 41110000/46611000
"YCOPA006 - 41910000 41920000 41930000 41940000

"前三個月過帳日期判斷
"输入日期过去 3 月的日期
DATA: L3_DATE TYPE SY-DATUM,L1_DATE TYPE SY-DATUM.

CALL FUNCTION 'CCM_GO_BACK_MONTHS'


EXPORTING
CURRDATE = P_DATE "输入日期
BACKMONTHS = 2 "过去月数
IMPORTING
NEWDATE = L3_DATE. "返回日期:20131001\

L3_DATE+6(2) = 01. "当月第一天

CALL FUNCTION 'CCM_GO_BACK_MONTHS'


EXPORTING
CURRDATE = P_DATE "输入日期
BACKMONTHS = 1 "过去月数
IMPORTING
NEWDATE = L1_DATE. "返回日期:20131001

"第三個月的最後一天
DATA FINAL_DATE TYPE SY-DATUM.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = L1_DATE "输入日期
IMPORTING
E_DATE = FINAL_DATE. "返回日期:20140131

"近三個月的最後一天
DATA LAST_DATE TYPE SY-DATUM.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = P_DATE "输入日期
IMPORTING
E_DATE = LAST_DATE. "返回日期:20140131

"IF L3_DATE IS NOT INITIAL AND FINAL_DATE IS NOT INITIAL.


IF L3_DATE IS NOT INITIAL AND LAST_DATE IS NOT INITIAL.
P_BUDAT-SIGN = 'I'.
P_BUDAT-OPTION = 'BT'.
P_BUDAT-LOW = L3_DATE .
"P_BUDAT-high = FINAL_DATE.
P_BUDAT-high = LAST_DATE.
APPEND P_BUDAT .
CLEAR P_BUDAT .
ENDIF.

SELECT RBUKRS
"GJAHR
RACCT
PSTYV_PA
DRCRK
MATNR
MATNR_COPA
SUM( TSL ) AS TSL "金額〈餘額交易幣別〉
SUM( WSL ) AS WSL "金額〈交易幣別〉\
SUM( HSL ) AS HSL " 金額〈公司代碼幣別〉
SUM( MSL ) AS MSL "數量
SUM( QUANT1 ) AS QUANT1 "附加數量 1
INTO CORRESPONDING FIELDS OF TABLE IT_ACDOCA
FROM ACDOCA
WHERE RBUKRS eq BUKRS
AND GJAHR IN P_GJAHR
" AND MATNR EQ MATNR
AND MATNR_COPA EQ MATNR
AND RACCT IN ( '0051160000' , '0051110000' ,
'0041110000' , '0046611000' , '0041710000' ,
'0041910000' ,'0041920000' ,'0041930000' , '0041940000' ) "IN P_RACCT
AND PSTYV_PA IN P_PSTYV_PA
AND BUDAT IN P_BUDAT "前三個月
GROUP BY RBUKRS MATNR RACCT PSTYV_PA DRCRK MATNR_COPA. "公司/
年/item category /借/貸方指示碼
" GROUP BY RBUKRS GJAHR MATNR RACCT PSTYV_PA DRCRK. "公司/年/item
category /借/貸方指示碼

" IT_ACDOCA_DS
SELECT RBUKRS
"GJAHR
RACCT
PSTYV_PA
DRCRK
MATNR
MATNR_COPA
SUM( TSL ) AS TSL "金額〈餘額交易幣別〉
SUM( WSL ) AS WSL "金額〈交易幣別〉\
SUM( HSL ) AS HSL " 金額〈公司代碼幣別〉
SUM( MSL ) AS MSL "數量
SUM( QUANT1 ) AS QUANT1 "附加數量 1
INTO CORRESPONDING FIELDS OF TABLE IT_ACDOCA_DS
FROM ACDOCA
WHERE RBUKRS eq BUKRS
AND GJAHR IN P_GJAHR
AND MATNR_COPA EQ MATNR
AND RACCT IN ( '0041910000' ,'0041920000' ,'0041930000' ,
'0041940000' ) "IN P_RACCT
AND PSTYV_PA IN P_PSTYV_PA
AND BUDAT IN P_BUDAT "前三個月
GROUP BY RBUKRS MATNR_COPA MATNR RACCT PSTYV_PA DRCRK . "

ET_ACDOCA[] = IT_ACDOCA[] .
ET_ACDOCA_DS[] = IT_ACDOCA_DS[] .

ENDFUNCTION.

You might also like