① DCHECK 선택하고 '이벤트->function 모듈' 더블클릭

② 항목 '9000001' '9000002' 에 BP 저장 전 체크로직 추가

9000001 | ZCVIV_BUPA_EVENT_DCHCK | CVIV | 공급업체 링크 |
9000002 | ZCVIC_BUPA_EVENT_DCHCK | CVIC | 고객 링크 |
③ 공급업체 링크 ( 함수 : ZCVIV_BUPA_EVENT_DCHCK )
FUNCTION ZCVIV_BUPA_EVENT_DCHCK.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"----------------------------------------------------------------------
DATA: LS_LFA1 TYPE LFA1,
LS_LFB1 TYPE LFB1,
LT_LFB1 LIKE TABLE OF LS_LFB1,
LV_ERROR TYPE C.
CVI_BDT_ADAPTER=>DATA_PBO_WITH_COMPANY_CODE(
EXPORTING
I_TABLE_NAME = 'LFB1'
IMPORTING
E_DATA_TABLE = LT_LFB1[]
).
READ TABLE LT_LFB1 INTO LS_LFB1 INDEX 1.
SELECT SINGLE KTOKK FROM LFA1
INTO CORRESPONDING FIELDS OF LS_LFA1
WHERE LIFNR = LS_LFB1-LIFNR.
CHECK SY-SUBRC IS INITIAL.
* 조정 계정의 통제
CASE LS_LFA1-KTOKK.
WHEN '1000'. "UBQ 국내거래처
CASE LS_LFB1-AKONT.
WHEN '0021101010' "외상매입금-원화
OR '0021101020' "외상매입금-외화
OR '0021203010' "미지급금-원화
OR '0022401010'. "장기미지급금(비유동)
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '2000'. "UBQ 해외거래처
CASE LS_LFB1-AKONT.
WHEN '0021101010' "외상매입금-원화
OR '0021101020' "외상매입금-외화
OR '0021203010' "미지급금-원화
OR '0022401010'. "장기미지급금(비유동)
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '3000'. "UBQ 개인거래처
CASE LS_LFB1-AKONT.
WHEN '0021101010' "외상매입금-원화
OR '0021101020' "외상매입금-외화
OR '0021203010' "미지급금-원화
OR '0022401010'. "장기미지급금(비유동)
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '4000'. "UBQ 납품처
WHEN '9100'. "UBQ 은행 정부기관
CASE LS_LFB1-AKONT.
WHEN '0021203010' "미지급금-원화
OR '0022401010'. "장기미지급금(비유동)
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '9200'. "UBQ 임직원
CASE LS_LFB1-AKONT.
WHEN '0021203050' "미수금-임직원
OR '0021203060'. "미지급금-경상비 2022.12.31 ABAP01
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '9300'. "UBQ 자금상품
WHEN '9400'. "UBQ 자금조달
CASE LS_LFB1-AKONT.
WHEN '0021301010' "단기차입금-원화
OR '0021301020' "단기차입금-외화
OR '0021301030' "단기차입금-계열사
OR '0021401010' "파생상품부채
OR '0021501010' "장기차입금-원화
OR '0021501020' "장기차입금-외화
OR '0021501030' "장기차입금-계열사
OR '0022201010'. "상환전환우선주부채(비유동)-일반
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
ENDCASE.
IF LV_ERROR EQ 'X'.
MESSAGE E000(ZFI01) WITH '공급업체 조정 계정을 확인해주시기 바랍니다.'.
CALL FUNCTION 'BUS_MESSAGE_STORE'
EXPORTING
ARBGB = 'ZFI01'
MSGTY = 'E'
TXTNR = '000'
MSGV1 = '공급업체 조정 계정을 확인해주시기 바랍니다.'.
ENDIF.
* 정렬키 통제
* LS_LFB1-ZUAWA = '000' 만 가능
IF LS_LFB1-ZUAWA NE '000'.
* step 1: update xo memory from dypro structure
LS_LFB1-ZUAWA = '000'.
MODIFY LT_LFB1 FROM LS_LFB1 INDEX 1 TRANSPORTING ZUAWA.
CVI_BDT_ADAPTER=>DATA_PAI_WITH_COMPANY_CODE(
I_TABLE_NAME = 'LFB1'
I_DATA_NEW = LT_LFB1[]
I_VALIDATE = FALSE
).
ENDIF.
ENDFUNCTION.
④ 고객 링크 ( 함수 : ZCVIC_BUPA_EVENT_DCHCK )
FUNCTION ZCVIC_BUPA_EVENT_DCHCK.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"----------------------------------------------------------------------
DATA: LS_KNA1 TYPE KNA1,
LS_KNB1 TYPE KNB1,
LT_KNB1 LIKE TABLE OF LS_KNB1,
LV_ERROR TYPE C.
CVI_BDT_ADAPTER=>DATA_PBO_WITH_COMPANY_CODE(
EXPORTING
I_TABLE_NAME = 'KNB1'
IMPORTING
E_DATA_TABLE = LT_KNB1[]
).
READ TABLE LT_KNB1 INTO LS_KNB1 INDEX 1.
SELECT SINGLE KTOKD FROM KNA1
INTO CORRESPONDING FIELDS OF LS_KNA1
WHERE KUNNR = LS_KNB1-KUNNR.
CHECK SY-SUBRC IS INITIAL.
* 조정 계정의 통제
CASE LS_KNA1-KTOKD.
WHEN '1000'. "UBQ 국내거래처
CASE LS_KNB1-AKONT.
WHEN '0011201010' "외상매출금-원화
OR '0011201020' "외상매출금-외화
OR '0011301010' "미수금-원화
OR '0011301020'. "미수금-외화
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '2000'. "UBQ 해외거래처
CASE LS_KNB1-AKONT.
WHEN '0011201010' "외상매출금-원화
OR '0011201020' "외상매출금-외화
OR '0011301010' "미수금-원화
OR '0011301020'. "미수금-외화
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '3000'. "UBQ 개인거래처
CASE LS_KNB1-AKONT.
WHEN '0011201010' "외상매출금-원화
OR '0011201020' "외상매출금-외화
OR '0011301010' "미수금-원화
OR '0011301020'. "미수금-외화
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '4000'. "UBQ 납품처
WHEN '9100'. "UBQ 은행 정부기관
CASE LS_KNB1-AKONT.
WHEN '0011301010' "미수금-원화
OR '0011301020'. "미수금-외화
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '9200'. "UBQ 임직원
CASE LS_KNB1-AKONT.
WHEN '0011301030'. "미수금-종업원
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '9300'. "UBQ 자금상품
CASE LS_KNB1-AKONT.
WHEN '0011105010' "정기예금-원화
OR '0011105020' "정기예금-외화
OR '0011404990' "AC-기타
OR '0011405990' "FVPL-기타
OR '0011406990' "FVOCI-기타
OR '0011407010' "파생상품자산
OR '0011404010' "AC-채무상품
OR '0011405010' "FVPL-채무상품
OR '0011405010' "FVPL-채무상품
OR '0011405020' "FVPL-지분상품
OR '0011405030' "FVPL-파생상품
OR '0011405030' "FVPL-파생상품
OR '0011406010' "FVOCI-채무상품
OR '0011406010' "FVOCI-채무상품
OR '0011406020' "FVOCI-지분상품
OR '0011406030' "FVOCI-파생상품
OR '0011406030' "FVOCI-파생상품
OR '0012501010' "종속기업투자주식-종속기업
OR '0012501010' "종속기업투자주식-종속기업
OR '0012601010' "관계기업적용투자주식-관계기업
OR '0012601010' "관계기업적용투자주식-관계기업
OR '0012803010' "AC(비유동)-채무상품
OR '0012803010' "AC(비유동)-채무상품
OR '0012803010' "AC(비유동)-채무상품
OR '0012803010' "AC(비유동)-채무상품
OR '0012803990' "AC(비유동)-기타
OR '0012803990' "AC(비유동)-기타
OR '0012804010' "FVPL(비유동)-채무상품
OR '0012804010' "FVPL(비유동)-채무상품
OR '0012804010' "FVPL(비유동)-채무상품
OR '0012804020' "FVPL(비유동)-지분상품
OR '0012804020' "FVPL(비유동)-지분상품
OR '0012804020' "FVPL(비유동)-지분상품
OR '0012804030' "FVPL(비유동)-파생상품
OR '0012804030' "FVPL(비유동)-파생상품
OR '0012804030' "FVPL(비유동)-파생상품
OR '0012804030' "FVPL(비유동)-파생상품
OR '0012804990' "FVPL(비유동)-기타
OR '0012804990' "FVPL(비유동)-기타
OR '0012805010' "FVOCI(비유동)-채무상품
OR '0012805010' "FVOCI(비유동)-채무상품
OR '0012805010' "FVOCI(비유동)-채무상품
OR '0012805010' "FVOCI(비유동)-채무상품
OR '0012805020' "FVOCI(비유동)-지분상품
OR '0012805020' "FVOCI(비유동)-지분상품
OR '0012805020' "FVOCI(비유동)-지분상품
OR '0012805030' "FVOCI(비유동)-파생상품
OR '0012805030' "FVOCI(비유동)-파생상품
OR '0012805030' "FVOCI(비유동)-파생상품
OR '0012805030' "FVOCI(비유동)-파생상품
OR '0012805990' "FVOCI(비유동)-기타
OR '0012805990' "FVOCI(비유동)-기타
OR '0012806010' "파생상품자산(비유동)
OR '0012806010'. "파생상품자산(비유동)
WHEN OTHERS.
LV_ERROR = 'X'. "에러
ENDCASE.
WHEN '9400'. " UBQ 자금조달
ENDCASE.
IF LV_ERROR EQ 'X'.
MESSAGE E000(ZFI01) WITH '고객 조정 계정을 확인해주시기 바랍니다.'.
CALL FUNCTION 'BUS_MESSAGE_STORE'
EXPORTING
ARBGB = 'ZFI01'
MSGTY = 'E'
TXTNR = '000'
MSGV1 = '고객 조정 계정을 확인해주시기 바랍니다.'.
ENDIF.
* 정렬키 통제
* KNB1-ZUAWA = '000' 만 가능
IF LS_KNB1-ZUAWA NE '000'.
* step 1: update xo memory from dypro structure
LS_KNB1-ZUAWA = '000'.
MODIFY LT_KNB1 FROM LS_KNB1 INDEX 1 TRANSPORTING ZUAWA.
CVI_BDT_ADAPTER=>DATA_PAI_WITH_COMPANY_CODE(
I_TABLE_NAME = 'KNB1'
I_DATA_NEW = LT_KNB1[]
I_VALIDATE = FALSE
).
ENDIF.
ENDFUNCTION.
'SAP' 카테고리의 다른 글
[FBL1N] / [FBL3N] / [FBL5N] ALV에 계정 명, G/L계정 명 필드 추가 (0) | 2023.03.22 |
---|---|
[KE30] / [CKM3] (0) | 2023.02.23 |
[BAdI] FAA_DC_CUSTOMER (0) | 2022.12.09 |
SM21 - Online System Log Analysis (0) | 2022.12.08 |
ST05 (0) | 2022.12.08 |
댓글