Nesse vídeo demonstraremos a utilização das funções Estrut2 e FimEstrut2, que servem para montar uma temporária com a estrutura de um produto (conforme cadastro na SG1).
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zExe155
Monta a estrutura de um produto em uma tabela temporária
@type Function
@author Atilio
@since 18/12/2022
@see https://tdn.totvs.com/pages/releaseview.action?pageId=287060852 e https://tdn.totvs.com/pages/releaseview.action?pageId=287060899
@obs
Função Estrut2
Parâmetros
+ cProduto , Caractere , Código do produto (passar com os espaços a direita)
+ nQuantidade , Numérico , Quantidade base para ser calculada na estrutura
+ cAliasEstru , Caractere , Nome do alias da estrutura
+ oTempTable , Objeto , Objeto que será criado como temporária
+ lAsShow , Lógico , Monta a estrutura exatamente igual é na visualização em tela
+ lPreEstru , Lógico , Se for .T. olha a pré estrutura na SGG senão se for .F. olha na estrutura na SG1
+ lVldData , Lógico , Faz a consistência se os componentes estão dentro ou fora das datas de vigência (data ini e fim)
Retorno
Não tem Retorno
Função FimEstrut2
Parâmetros
+ cAliasEstru , Caractere , Nome do alias usado
+ oTempTable , Objeto , Objeto da Tabela temporária criada na Estrut2
Retorno
Não tem Retorno
**** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe155()
Local aArea := FWGetArea()
Local cMensagem := ""
Local cCodProd := "E0001" //Produto raíz da estrutura
Local nQuant := 5 //Quantidade a produzir
//Variáveis Private para utilização da função Estrut2
Private oTempTable := Nil
Private cAliasTmp := "ESTRUT"
Private nEstru := 0
//Cria a estrutura temporária
cCodProd := AvKey(cCodProd, "B1_COD")
Estrut2(cCodProd, nQuant, cAliasTmp, @oTempTable)
//Se houver dados
(cAliasTmp)->(DbGoTop())
If ! (cAliasTmp)->(EoF())
//Enquanto houver dados, monta mensagem do produto, componente e quantidade
While ! (cAliasTmp)->(EoF())
cMensagem += "Produto: " + (cAliasTmp)->CODIGO + ", Componente: " + (cAliasTmp)->COMP + ", Quantidade: " + cValToChar((cAliasTmp)->QUANT) + CRLF
(cAliasTmp)->(DbSkip())
EndDo
FWAlertInfo(cMensagem, "Estrutura através de Estrut2")
Else
FWAlertError("Estrutura não encontrada!", "Falha Estrut2")
EndIf
//Finaliza a função de estrutura
FimEstrut2(cAliasTmp, @oTempTable)
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.