SAP/Module
[FI] 원전표 및 파샬전표 잔액 구하기
성공보다는 가치를..
2023. 4. 5. 16:05
728x90
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_BUDAT) TYPE RANGE_T_DATS OPTIONAL
*" VALUE(I_CPUDT) TYPE RANGE_T_DATS OPTIONAL
*" VALUE(I_RACCT) TYPE BKK_R_HKONT OPTIONAL
*" VALUE(I_LIFNR) TYPE T_RANGE_LIFNR OPTIONAL
*" VALUE(I_KUNNR) TYPE TRTY_KUNNR_RANGE OPTIONAL
*" VALUE(I_BELNR) TYPE BKK_R_BELNR OPTIONAL
*" TABLES
*" T_HLIST STRUCTURE ZFIS0280 OPTIONAL
*" T_PITEM STRUCTURE ZFIS0281 OPTIONAL
*"----------------------------------------------------------------------
DATA:
lv_wslpar TYPE fins_vwcur12.
"__ 전표 대상 추출
WITH
+base AS (
SELECT a~rbukrs, a~gjahr, a~belnr, a~buzei
FROM acdoca AS a
INNER JOIN bkpf AS b ON b~belnr EQ a~belnr
AND b~bukrs EQ a~rbukrs
AND b~gjahr EQ a~gjahr
WHERE a~rldnr EQ '0L'
AND a~awref_rev EQ @space
AND a~budat IN @i_budat[]
AND b~cpudt IN @i_cpudt[]
AND a~racct IN @i_racct[]
AND a~lifnr IN @i_lifnr[]
AND a~kunnr IN @i_kunnr[]
AND a~belnr IN @i_belnr[] ),
+list AS (
"__ 원전표 List
SELECT '1' AS gubun, a~rbukrs, a~gjahr, a~belnr, a~buzei, a~koart, a~drcrk, a~rwcur, a~rhcur,
a~wsl, a~tsl, a~rebzg, a~rebzj, a~rebzz, lifnr, kunnr, racct, sgtxt, a~budat, a~bldat
FROM acdoca AS a
INNER JOIN +base AS b ON b~rbukrs EQ a~rbukrs
AND b~gjahr EQ a~gjahr
AND b~belnr EQ a~belnr
AND b~buzei EQ a~buzei
WHERE a~rldnr EQ '0L'
AND a~glaccount_type EQ 'X'
AND a~awref_rev EQ @space
AND a~koart IN ( 'D', 'K', 'S' )
AND a~rebzg EQ @space
AND a~augbl EQ @space
UNION
"__ 파살전표 List
SELECT '2' AS gubun, a~rbukrs, a~gjahr, a~belnr, a~buzei, a~koart, a~drcrk, a~rwcur, a~rhcur,
a~wsl, a~tsl, a~rebzg, a~rebzj, a~rebzz, lifnr, kunnr, racct, sgtxt, a~budat, a~bldat
FROM acdoca AS a
INNER JOIN +base AS b ON b~rbukrs EQ a~rbukrs
AND b~belnr EQ a~rebzg
AND b~gjahr EQ a~rebzj
AND b~buzei EQ a~rebzz
WHERE a~awref_rev EQ @space
AND a~rldnr EQ '0L'
)
"__ Set Return Table
SELECT a~*,
l1~name1 AS lifnr_t,
l2~name1 AS kunnr_t,
l3~txt50 AS racct_t
FROM +list AS a
LEFT JOIN lfa1 AS l1 ON l1~lifnr = a~lifnr
LEFT JOIN kna1 AS l2 ON l2~kunnr = a~kunnr
LEFT JOIN skat AS l3 ON l3~saknr = a~racct
AND l3~spras = @sy-langu
AND l3~ktopl = a~rbukrs
ORDER BY a~belnr, a~buzei
INTO TABLE @DATA(lt_list).
LOOP AT lt_list INTO DATA(ls_list).
CLEAR lv_wslpar.
CASE ls_list-a-gubun.
WHEN '1'.
"__ 원전표
MOVE-CORRESPONDING ls_list-a TO t_hlist.
t_hlist-bukrs = ls_list-a-rbukrs.
MOVE: ls_list-kunnr_t TO t_hlist-kunnr_t,
ls_list-lifnr_t TO t_hlist-lifnr_t,
ls_list-racct_t TO t_hlist-racct_t.
IF t_hlist-koart = 'S'.
SELECT COUNT(*)
FROM skb1
WHERE bukrs = t_hlist-bukrs
AND saknr = t_hlist-racct
AND xopvw = abap_true.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
ENDIF.
"__ 원전표 잔액
lv_wslpar = REDUCE i( INIT x = 0 FOR ls_2 IN lt_list WHERE ( a-gubun = '2'
AND a-rebzg = t_hlist-belnr
AND a-rebzj = t_hlist-gjahr
AND a-rebzz = t_hlist-buzei )
NEXT x = x + ls_2-a-wsl ).
"__ 잔액 = 원전표 금액 + 파샬금액 합계
t_hlist-wsl_par = t_hlist-wsl + lv_wslpar.
APPEND t_hlist.
WHEN '2'.
"__ 파샬전표
MOVE-CORRESPONDING ls_list-a TO t_pitem.
t_pitem-bukrs = ls_list-a-rbukrs. "-- 회사코드
t_pitem-belnr_w = ls_list-a-rebzg. "-- 원전표번호
t_pitem-gjahr_w = ls_list-a-rebzj. "-- 원전표년도
t_pitem-buzei_w = ls_list-a-rebzz. "-- 원전표항번
APPEND t_pitem.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
"__ T_HLIST 구조
필드이름 타입 컴포넌트 타입 필드유형 자리수 소수점 내역
BUKRS Types BUKRS CHAR 4 0 회사 코드
GJAHR Types GJAHR NUMC 4 0 회계연도
BELNR Types BELNR_D CHAR 10 0 회계 전표의 전표 번호
BUZEI Types BUZEI NUMC 3 0 회계 전표 내 개별 항목 번호
KOART Types KOART CHAR 1 0 계정 유형
DRCRK Types SHKZG CHAR 1 0 차변/대변 지시자
RWCUR Types WAERS CUKY 5 0 통화 키
WSL Types FINS_VWCUR12 CURR 23 2 금액(거래 통화)
WSL_PAR Types CURR 23 2 부분반제 합계
TSL Types FINS_VTCUR12 CURR 23 2 금액(잔액 거래 통화)
RHCUR Types WAERS CUKY 5 0 통화 키
LIFNR Types LIFNR CHAR 10 0 공급업체 계정 번호
LIFNR_T Types NAME1_GP CHAR 35 0 이름 1
KUNNR Types KUNNR CHAR 10 0 고객 번호
KUNNR_T Types NAME1_GP CHAR 35 0 이름 1
RACCT Types RACCT CHAR 10 0 계정 번호
RACCT_T Types TXT50_SKAT CHAR 50 0 G/L 계정 설명
SGTXT Types SGTXT CHAR 50 0 항목 텍스트
BUDAT Types BUDAT DATS 8 0 문서 내 전기일
BLDAT Types BLDAT DATS 8 0 문서 내 증빙일
"__ T_PITM 구조
BUKRS Types BUKRS CHAR 4 0 0 회사 코드
GJAHR Types GJAHR NUMC 4 0 0 회계연도
BELNR Types BELNR_D CHAR 10 0 0 회계 전표의 전표 번호
BUZEI Types BUZEI NUMC 3 0 0 회계 전표 내 개별 항목 번호
RWCUR Types WAERS CUKY 5 0 0 통화 키
WSL Types FINS_VWCUR12 CURR 23 2 0 금액(거래 통화)
TSL Types FINS_VTCUR12 CURR 23 2 0 금액(잔액 거래 통화)
RHCUR Types WAERS CUKY 5 0 0 통화 키
GJAHR_W Types GJAHR NUMC 4 0 0 회계연도
BELNR_W Types BELNR_D CHAR 10 0 0 회계 전표의 전표 번호
BUZEI_W Types BUZEI NUMC 3 0 0 회계 전표 내 개별 항목 번호
728x90