본문 바로가기
SAP/ABAP

[ABAP] 역분개 체크 로직

by sssinga 2021. 2. 27.

 

 

 

전표 생성할 데이터를 쭈우우욱 가져올 때,

belnr에 값이 있어도 역분개 되어 있어 전표 생성할 데이터에 포함시켜야 하는 경우가 있다.

 

그럴 때 필요한 역분개 로직

 

: belnr에 값이 있는 경우, bkpf 테이블의 stblg 값을 체크해서

 stblg에 값이 있으면 역분개한 전표이기 때문에 전표 생성할 데이터에 포함시켜야함.

 없으믄 continue

 

 

 

 

 

 

 

TABLES: BKPF, ZDATA.

DATA: P_STBLG LIKE BKPF-STBLG.
DATA: LT_DATA LIKE ZDATA WITH HEADER LINE,
         LT_TEMP LIKE ZDATA WITH HEADER LINE.

CLEAR: LT_DATA, LT_DATA[], LT_TEMP, LT_TEMP[].

CASE 'X'.  
  WHEN P_RB1.         " 생성  
    SELECT * INTO TABLE LT_TEMP FROM ZDATA  
    WHERE ERDAT IN S_SEDAT
    AND VBELF NE ''.
   
    LOOP AT LT_TEMP.
      IF LT_TEMP-BELNR IS NOT INITIAL.
        CLEAR: P_STBLG.
       
        SELECT SINGLE STBLG           " 역분개 체크
          INTO P_STBLG
          FROM BKPF
        WHERE BUKRS = LT_TEMP-BUKRS
            AND BELNR = LT_TEMP-BELNR
            AND GJAHR = LT_TEMP-BUDAT(4).
     
        IF P_STBLG IS INITIAL.
          CONTINUE.
        ELSE.
          CLEAR LT_TEMP-BELNR.
        ENDIF.
      ENDIF.
     
      MOVE-CORRESPONDING LT_TEMP TO LT_DATA.
      APPEND LT_DATA.
      CLEAR: LT_TEMP, LT_DATA.
    ENDLOOP.
 
  WHEN P_RB2.        " 조회
    SELECT * INTO TABLE LT_DATA FROM ZDATA
    WHERE ERDAT IN S_SEDAT
    AND BELNR NE ''
    AND VBELF NE ''. ENDCASE.

 

 

 

P_RB1 : 전표 생성할 데이터 조회 시

 

 

P_RB2 : 전표 생성 된 데이터 조회 시

댓글