주민등록번호는 개인을 식별하기 위해 오직 하나만 존재하는 13자리의 고유한 번호입니다.
주민등록번호는 주민등록증, 여권, 운전면허증 등 다양한 곳에서 그 사람을 인증하는 도구로 사용됩니다.
이렇듯 중요한 의미를 가진 고유번호이다 보니 주민등록번호는 그 번호 체계에 맞는 유효성이 존재합니다. 아무렇게나 13자리 숫자를 만들었다고 해서 주민등록번호 사용할 수는 없는 것입니다.
프로그램을 개발할 때 주민등록번호를 입력 받아 사용하는 경우 유효성 체크는 필수 사항입니다.
유효성에 맞지 않은 주민등록번호가 사용될 경우 이후 심각한 문제가 발생할 수 있기 때문입니다.
주민등록번호 유효성 체크 로직을 프로그램으로 직접 구현해서 사용할 수도 있지만, SAP 에서 미리 만들어 놓은 함수를 사용해서 ABAP 프로그램에서 주민등록번호 유효성을 체크를 하면 쉽게 주민등록번호가 올바른지 검증할 수 있습니다.
이번 글에서는 SAP ABAP에서 주민등록번호 유효성 체크 함수를 사용하여 검증하는 방법에 대해 알아보겠습니다.
SAP ABAP의 주민등록번호 유효성 체크 실행 결과
▼ 유효성 체크를 통해 올바른 주민등록번호인 경우의 화면 예제입니다.
▼ 유효성 체크를 통해 올바르지 않는 주민등록번호인 경우의 화면 예제입니다.
ABAP 주민등록번호 유효성 체크 함수를 사용한 프로그램 소스
ABAP에서 주민등록번호의 유효성을 체크하는 사용하는 함수는 ‘CONVERSION_EXIT_REGNO_INPUT‘와 ‘HRPADKR_REGNO_LAST_DIGIT‘ 입니다.
- CONVERSION_EXIT_REGNO_INPUT : 입력 받은 문자열을 한국 주민등록번호(레지스트리 번호) 형식으로 변환하는 함수입니다.
- HRPADKR_REGNO_LAST_DIGIT : 체크 레지스트리 번호의 마지막 번호를 처리하는 사용하는 함수입니다.
▼ 아래 ABAP 프로그램 소스는 위의 2개 Function을 사용하여 주민등록번호 유효성을 체크하는 로직을 구현한 프로그램입니다.
REPORT ymm0001 MESSAGE-ID zca001.
DATA: lv_regno TYPE char13,
lv_last_digit TYPE char01.
PARAMETERS pa_regno TYPE p0540-regno.
START-OF-SELECTION.
CALL FUNCTION ‘CONVERSION_EXIT_REGNO_INPUT’
EXPORTING
input = pa_regno
IMPORTING
output = lv_regno
EXCEPTIONS
wrong_input_format = 1
wrong_date_in_regno = 2
wrong_gender_century_id = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION ‘HRPADKR_REGNO_LAST_DIGIT’
EXPORTING
regno = lv_regno
IMPORTING
last_digit = lv_last_digit
EXCEPTIONS
invalid_reg_number = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lv_last_digit = lv_regno+12(1).
* WRITE:/ ‘유효성 검증 통과’.
MESSAGE i000 WITH ‘유효성 검증 통과’.
ELSE.
* WRITE:/ ‘유효성 검증 실패’.
MESSAGE i000 WITH ‘유효성 검증 실패’.
ENDIF.
|
유효성 체크 방법은 CONVERSION_EXIT_REGNO_INPUT 함수의 결과인 lv_regno의 마지막 숫자와 HRPADKR_REGNO_LAST_DIGIT 함수의 결과 값을 서로 비교하여 일치하면 유효성이 올바르다고 할 수 있습니다.
※ 참고로 HRPADKR_REGNO_LAST_DIGIT 함수의 EXCEPTIONS을 주석처리하면 실행시 RAISE Dump 오류가 발생합니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^