O ABM possibilita que sejam desenvolvidos objetos personalizados para utilização, de acordo com a necessidade específica de cada utilizador.
Para isto, foi disponibilizada a Classe FWABMACTOBJ, que serve como interface para utilização do sistema.
Para desenvolver um objeto compatível com o ABM, deve se criar uma classe padrão em ADVPL e herdar a classe FWABMACTOBJ. Em seguida, deve se implementar os métodos New e ExecAction da interface, com a lógica desejada.
Exemplo:
#include 'totvs.ch'
//-------------------------------------------------------------------
/*/{Protheus.doc} ABMCONSOLE
Classe customizada para o ABM, realiza a impressao de informações
no console do Protheus.
@author Renan Fragoso
@since 04/04/2014
@version P12
/*/
//-------------------------------------------------------------------
CLASS ABMCONSOLE FROM FWABMACTOBJ
METHOD New() CONSTRUCTOR METHOD
ExecAction()
ENDCLAS
//-------------------------------------------------------------------
/*/{Protheus.doc} New
Construtor da Classe.
@author Renan Fragoso
@since 04/04/2014
@version P12
/*/
//-------------------------------------------------------------------
METHOD New( cCodObj ) CLASS ABMCONSOLE
_Super:New( cCodObj )
self:cClassName := "ABMCONSOLE"
Return
//-------------------------------------------------------------------
/*/{Protheus.doc} ExecAction
Implementação do método de interface para execução do objeto.
@author Renan Fragoso
@since 04/04/2014
@version P12
@obs
Este objeto utilizará os campos pré-definidos nos parâmetros
para exibir uma mensagemno console do protheus:
MESSAGE1 - Caracter - Mensagem numero 1
MESSAGE2 - Caracter - Mensagem numero 2
/*/
//-------------------------------------------------------------------
METHOD ExecAction() CLASS ABMCONSOLE
Local oData := self:getParModel() //Busca o model de Parametros ABM
Local oAdtMdl := self:getAdtModel() //Busca o model de linhas filtradas da tabela de audit
Local cMsg1 := oData:getValue( "MESSAGE1" ) // Recupera o campo MESSAGE1 da estrutura de parametros na variável cMsg1
Local cMsg2 := oData:getValue( "MESSAGE2" ) // Recupera o campo MESSAGE2 da estrutura de parametros na variável cMsg2
ConOut( self:ReplaceTKNS( cMsg1 ) ) //faz a impressão da mensagem no console já resolvida pelo Parser
ConOut( self:ReplaceTKNS( cMsg2 ) ) //faz a impressão da mensagem no console já resolvida pelo Parser
Return .T. |