Categorias

Validação CNPJ Fornecedor

Informação fornecida por Marcos N. Rosa.

Field exit de consistência de CNPJ de Fornecedor

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

************************************************************************
* Módulo de função: field_exit_stcd1_2.                                *
* Resumo: Validar CNPJ de fornecedores.                                *
************************************************************************

DATA: W_LIF LIKE LFA1-LIFNR.

OUTPUT = INPUT.

************ Caso de criação de CNPJ para fornecedores.
IF SY-TCODE = 'FK01' OR SY-TCODE = 'M-51' OR SY-TCODE = 'M-52' OR
   SY-TCODE = 'M-53' OR SY-TCODE = 'M-54' OR SY-TCODE = 'M-56' OR
   SY-TCODE = 'M-57' OR SY-TCODE = 'M-62' OR SY-TCODE = 'MK01' OR
   SY-TCODE = 'XK01' OR SY-TCODE = 'M-01' OR SY-TCODE = 'M-02' OR
   SY-TCODE = 'M-03'.
*  verifica se CNPJ já existe.
   SELECT * FROM LFA1 CLIENT SPECIFIED
                      UP TO 1 ROWS WHERE MANDT = SY-MANDT AND
                                         STCD1 = INPUT.
   ENDSELECT.

*  se existe envia msg de erro.
   IF SY-SUBRC EQ 0.
      MESSAGE E000(Z01) WITH 'CNPJ de fornecedor ' INPUT.
   ENDIF.
************ Caso de modificação de CNPJ para clientes.
ELSEIF SY-TCODE = 'FK02' OR SY-TCODE = 'XK02' OR SY-TCODE = 'MK02'.

* verifica se o input está relacionado com o cliente, ou seja, se não
* houve alteração no CNPJ.
  .
  GET PARAMETER ID 'LIF' FIELD W_LIF.
    SELECT * FROM LFA1 CLIENT SPECIFIED UP TO 1 ROWS
    WHERE MANDT = SY-MANDT AND
        LIFNR = W_LIF    AND
        STCD1 = INPUT.
    ENDSELECT.

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

ENDIF.

ENDFUNCTION.