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.