ABAP에서 주민등록번호 유효성 체크 함수를 사용하여 검증하는 방법


주민등록번호는 개인을 식별하기 위해 오직 하나만 존재하는 13자리의 고유한 번호입니다.

주민등록번호는 주민등록증, 여권, 운전면허증 등 다양한 곳에서 그 사람을 인증하는 도구로 사용됩니다. 

이렇듯 중요한 의미를 가진 고유번호이다 보니 주민등록번호는 그 번호 체계에 맞는 유효성이 존재합니다. 아무렇게나 13자리 숫자를 만들었다고 해서 주민등록번호 사용할 수는 없는 것입니다.

프로그램을 개발할 때 주민등록번호를 입력 받아 사용하는 경우 유효성 체크는 필수 사항입니다.

유효성에 맞지 않은 주민등록번호가 사용될 경우 이후 심각한 문제가 발생할 수 있기 때문입니다.

주민등록번호 유효성 체크 로직을 프로그램으로 직접 구현해서 사용할 수도 있지만, SAP 에서 미리 만들어 놓은 함수를 사용해서 ABAP 프로그램에서 주민등록번호 유효성을 체크를 하면 쉽게 주민등록번호가 올바른지 검증할 수 있습니다.

이번 글에서는 SAP ABAP에서 주민등록번호 유효성 체크 함수를 사용하여 검증하는 방법에 대해 알아보겠습니다.

SAP ABAP의 주민등록번호 유효성 체크 실행 결과

▼ 유효성 체크를 통해 올바른 주민등록번호인 경우의 화면 예제입니다.

ABAP에서 주민등록번호 유효성 체크 함수를 사용하여 검증하는 방법 1

▼ 유효성 체크를 통해 올바르지 않는 주민등록번호인 경우의 화면 예제입니다.

ABAP에서 주민등록번호 유효성 체크 함수를 사용하여 검증하는 방법 2

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 오류가 발생합니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기