Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
former_member200925
Active Participant

In order to develop a validation within extended fields that do not exist as standard as the TaxNumber in SAP CRM related to TaxType "BR1" in Brazil, follows the algorithm model that is possible used to perform validation tax document CNPJ.

This procedure can be improved and optimized by reusing libraries and loops

The following coding is only an initial reference

Create the follow objects

Put in the Validation "OnSave" the follow code

import ABSL;

       var cnpj = this.CurrentCommon.CNPJ;

       cnpj = cnpj.Trim();

       cnpj = cnpj.Replace(".", "").Replace("-", "").Replace("/", "");

       var cnpjLength = cnpj.Length();

       if (cnpjLength != 14){

             raise CX_INVALIDTAX.Create("E");

             posicao = false;

       }

       else{

             var tempCnpj = cnpj.Substring(0, 12);

             var soma;

             var calc;

             var calcCnpj;

             var resto;

             var digito;

    

             // Valida primeiro Digito 

             soma = 0;

             calcCnpj = cnpj.Substring(0, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*5;

                       calcCnpj = cnpj.Substring(1, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*4;

             calcCnpj = cnpj.Substring(2, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*3;

                       calcCnpj = cnpj.Substring(3, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*2;

             calcCnpj = cnpj.Substring(4, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*9;

                       calcCnpj = cnpj.Substring(5, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*8;

             calcCnpj = cnpj.Substring(6, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*7;

                       calcCnpj = cnpj.Substring(7, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*6;

             calcCnpj = cnpj.Substring(8, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*5;

             calcCnpj = cnpj.Substring(9, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*4;

             calcCnpj = cnpj.Substring(10, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*3;

                       calcCnpj = cnpj.Substring(11, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*2;

             resto = (soma % 11);

             if (resto < 2)

                    resto = 0;

             else

                    resto = 11 - resto;

          

             digito = resto.ToString();

             tempCnpj = tempCnpj + digito;

             if (digito != cnpj.Substring(12, 1)){

                    raise CX_INVALIDTAX.Create("E");

                    posicao = false;

             }

             // Valida segundo Digito

                       soma = 0;

             calcCnpj = cnpj.Substring(0, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*6;

             calcCnpj = cnpj.Substring(1, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*5;

                       calcCnpj = cnpj.Substring(2, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*4;

                       calcCnpj = cnpj.Substring(3, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*3;

                       calcCnpj = cnpj.Substring(4, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*2;

                       calcCnpj = cnpj.Substring(5, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*9;

             calcCnpj = cnpj.Substring(6, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*8;

             calcCnpj = cnpj.Substring(7, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*7;

             calcCnpj = cnpj.Substring(8, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*6;

                       calcCnpj = cnpj.Substring(9, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*5;

             calcCnpj = cnpj.Substring(10, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*4;

                       calcCnpj = cnpj.Substring(11, 1);

             calc = Numeric.ParseFromString(calcCnpj);

                       soma = soma + calc*3;

             calcCnpj = cnpj.Substring(12, 1);

             calc = Numeric.ParseFromString(calcCnpj);

             soma = soma + calc*2;

             resto = (soma % 11);

             if (resto < 2)

                    resto = 0;

             else

                    resto = 11 - resto;

          

             digito.Clear();

             digito = digito + resto.ToString();

             tempCnpj = tempCnpj + digito;

             if (digito != cnpj.Substring(13, 1)){

                    raise CX_INVALIDTAX.Create("E");

                    posicao = false;

             }

       }

       return posicao;


Remember to create the following object to use of the extended field for use principally on screen

Labels in this area