No artigo de hoje, vou mostrar como buscar as informações da SM0 usando a função FWSM0Util.
Se você pretende migrar o dicionário para o banco de dados, ou pretende utilizar as boas práticas de programação em AdvPL, a tabela de empresas SM0 não deve mais ser acessada diretamente, e para isso foi disponibilizado algumas funções pela TOTVS.
Uma das funções, é a FWSM0Util, onde é possível informar o código da empresa, o código da filial e quais campos você deseja buscar a informação.
Dessa forma, a rotina irá retornar um Array com os campos e você consegue usar na sua customização.
No exemplo abaixo, nós iremos criar uma variável, que terá a lista de campos que queremos buscar, chamada de aFieldSM0. Depois iremos usar a função, buscando as informações conforme a filial que veio na query. E por último, se veio informações, iremos atualizar nossas variáveis que podemos utilizar depois na customização.
Obs.: O retorno da FWSM0Util, é um array sendo que cada linha é um campo da SM0, e a posição 1 é o nome do campo, e a posição 2 é o conteúdo.
Local aFieldSM0 := { ; "M0_CODIGO",; //Posição [1] "M0_CODFIL",; //Posição [2] "M0_NOMECOM",; //Posição [3] "M0_CGC",; //Posição [4] "M0_INSCM",; //Posição [5] "M0_CIDENT",; //Posição [6] "M0_ESTENT",; //Posição [7] "M0_ENDENT",; //Posição [8] "M0_BAIRENT",; //Posição [9] "M0_CEPENT",; //Posição [10] "M0_COMPENT",; //Posição [11] "M0_TEL"; //Posição [12] } Local aSM0Data2 := {} //... Aqui você pode montar sua query, ou alguma outra tratativa na sua lógica, no meu caso, montei uma query e busquei o F2_FILIAL aSM0Data2 := FWSM0Util():GetSM0Data(, QRY_DOC->F2_FILIAL, aFieldSM0) If Len(aSM0Data2) > 0 Alert(aSM0Data2[3][2]) //M0_NOMECOM Alert(aSM0Data2[4][2]) //M0_CGC Alert(aSM0Data2[6][2]) //M0_CIDENT EndIf
Bom pessoal, por hoje é só.
Abraços e até a próxima.