Validación de NIF y NIE

FUNCTION z_check_nif_nie.
*"----------------------------------------------------------------------
*"*"Interfase local
*"  IMPORTING
*"     REFERENCE(I_NUM_DOCUMENTO) TYPE  ISH_PASSNR
*"     REFERENCE(I_TIPO_DOCUMENTO) TYPE  ISH_PASSTY
*"  EXPORTING
*"     REFERENCE(E_CORRECTO) TYPE  FLAG
*"----------------------------------------------------------------------

  data: l_documento type codim.
  data: l_tipo      type char3,
        l_subrc     type sysubrc.

  "No se validaran los tipos de documento: 02 Pasaporte
  "                                        03 Tarj.Resid.Com.
  "                                        04 Perm.Resid.Trab
  if i_tipo_documento = '02' or
     i_tipo_documento = '03' or
     i_tipo_documento = '04'.

    e_correcto = 'X'.

  else.
    "Sólo validaran los tipos de documento: 01 NIF.
    "                                       06 NIE.

    l_documento = i_num_documento.

    call function 'HR_ES_CHECK_NIF_CIF'
      exporting
        p_valor             = l_documento
        p_check_nif         = 'X'
*       P_CHECK_CIF         = ' '
        p_check_nie         = 'X'
      importing
*       P_SYMSG             =
        p_subrc             = l_subrc
        p_tipo              = l_tipo
      exceptions
        program_error       = 1
        others              = 2.

    " Si el tipo de documento es un NIF
    if i_tipo_documento = '01' and l_subrc = 0 and l_tipo = 'NIF'.
      e_correcto = 'X'.
    endif.

    " Si el tipo de documento es un NIE
    if i_tipo_documento = '06' and l_subrc = 0 and l_tipo = 'NIE'.
      e_correcto = 'X'.
    endif.

  endif.

endfunction.