Do.

[FI] 원전표 및 파샬전표 잔액 구하기 본문

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

'SAP > Module' 카테고리의 다른 글

[N] BP 생성 API  (0) 2024.04.24
[N] Internal Order 변경  (0) 2023.04.27
[N] 전표 Display  (0) 2023.02.20
[CO] K9R* 로 시작하는 테이블 찾기  (0) 2023.02.20
[MM] 자재마스터 View 조회 Function  (0) 2022.11.29