ABAP身份证号校验

直接上代码

 METHOD check_idnum_valid.

**---------------------------------------------------------------------*

* Package        : ZHR

* Program        : ZCL_HR_PERSON_UTIL            CHECK_IDNUM_VALID

* Description    : 身份账号校验

* Author         : HR01

* Type           :

* Created On     : 20190325

* Request        :

**---------------------------------------------------------------------*

* Change History :

**---------------------------------------------------------------------*

* History        :

**---------------------------------------------------------------------*

    CONSTANTSlc_regex  TYPE string VALUE '(^\d{15}$)|(^\d{17}(\d|X)$)',

               lc_arrint TYPE string VALUE '0709100508040201060307091005080402',

               lc_arrch  TYPE string VALUE '10X98765432'.

    DATAlv_message_dummy  TYPE string,

          lv_birthday_regex TYPE string,

          lv_year           TYPE numc4,

          lv_month          TYPE numc2,

          lv_day            TYPE numc2,

          lv_age            TYPE int4,

          lv_offset         TYPE i VALUE 0,

          lv_i              TYPE i,

          lv_a              TYPE i VALUE 0,

          lv_b              TYPE i VALUE 0,

          lv_total          TYPE i VALUE 0,

          lv_last_digit     TYPE c,

          lt_regio          TYPE TABLE OF zhrs_idnum_return.

    rs_return-idnum iv_idnum.

    DATA(lv_len) = strleniv_idnum ).

*   检查身份证号长度

    IF lv_len NE 15 AND lv_len NE 18.

      MESSAGE e001(zhr_idnumINTO lv_message_dummy WITH iv_idnum.

      zcx_ca_failure=>raise( ).

    ENDIF.

*   身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,

*   最后一位是校验位,可能为数字或字符X

    IF containsval 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值