Categorias

Validação de CPF de Cliente

Informação fornecida por Marcos N. Rosa.

Field exit de consistência de CPF de Cliente

FUNCTION FIELD_EXIT_STCD2_1.
*"----------------------------------------------------------------------
*"*"Interface local:
*"       IMPORTING
*"             VALUE(INPUT)
*"       EXPORTING
*"             VALUE(OUTPUT)
*"----------------------------------------------------------------------

************************************************************************
* Módulo de função: field_exit_stcd2_1.                                *
* Resumo: Validar CPF de clientes.                                     *
************************************************************************

DATA: W_KUN LIKE KNA1-KUNNR.

OUTPUT = INPUT.

************ Caso de criação de CPF para clientes.
IF SY-TCODE = 'FD01' OR SY-TCODE = 'V+21' OR SY-TCODE = 'V+22' OR
   SY-TCODE = 'V+23' OR SY-TCODE = 'V-03' OR SY-TCODE = 'V-04' OR
   SY-TCODE = 'V-05' OR SY-TCODE = 'V-06' OR SY-TCODE = 'V-07' OR
   SY-TCODE = 'V-08' OR SY-TCODE = 'V-09' OR SY-TCODE = 'VD01' OR
   SY-TCODE = 'XD01'.
*  verifica se CPF já existe.
   SELECT * FROM KNA1 CLIENT SPECIFIED
                      UP TO 1 ROWS WHERE MANDT = SY-MANDT AND
                                         STCD2 = INPUT.
   ENDSELECT.

*  se existe envia msg de erro.
   IF SY-SUBRC EQ 0 AND NOT INPUT IS INITIAL.
      MESSAGE E000(Z01) WITH 'CPF de cliente ' INPUT.
   ENDIF.
************ Caso de modificação de CPF para clientes.
ELSEIF SY-TCODE = 'FD02' OR SY-TCODE = 'VD02' OR SY-TCODE = 'VD04' OR
       SY-TCODE = 'XD02' OR SY-TCODE = 'XD04'.

* verifica se o input está relacionado com o cliente, ou seja, se não
* houve alteração no CPF.
  .
  GET PARAMETER ID 'KUN' FIELD W_KUN.
    SELECT * FROM KNA1 CLIENT SPECIFIED UP TO 1 ROWS
    WHERE MANDT = SY-MANDT AND
        KUNNR = W_KUN    AND
        STCD2 = INPUT.
    ENDSELECT.

* se não tiver relacionado com o cliente: se teve alteração.
  IF SY-SUBRC NE 0.
     SELECT * FROM KNA1 CLIENT SPECIFIED UP TO 1 ROWS
     WHERE MANDT = SY-MANDT AND
           STCD2 = INPUT.
     ENDSELECT.
     IF SY-SUBRC EQ 0 AND NOT INPUT IS INITIAL.
        MESSAGE E000(Z01) WITH 'CPF de cliente ' INPUT.
     ENDIF.
   ENDIF.

ENDIF.

ENDFUNCTION.