PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Rotina automática FCI
Versão:
12.1.2210
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
FCI.prw (anexo)
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário PAULO0210 PAULO0210 em 05/02/2024, 17:20 h
Local: MG  Registro: 18/09/2023  Postagens: 37
Boa tarde galera,

Tô tentando automatizar a rotina FISA061 via execauto e preciso que essa rotina rode todos os dias em um determinado horário.

Vi que existe uma função SchedDef() que faz esse agendamento, mas ainda não usei e gostaria que me dessem uma força.

Fonte está em anexo.

Mensagem do Enviar e-mail Abrir o Perfil do usuário ROBERTOMEN ROBERTOMEN em 06/02/2024, 09:52 h
Local: PR  Registro: 04/07/2017  Postagens: 547
bom dia

A função SCHEDDEF é utilizada para passar parâmetros da sua rotina para o Schedulle, semelhante aqueles que são cadastrados na SX1, MV_PAR01,MV_PAR02....

No caso da FISA061 os parâmetros devem ser passados na chamada da propria função

No exemplo abaixo eu crio a user Function fExecf061 que chama a FISA061.

A fExecf061 deve ser cadastrada via configurador no schedulle com os dias e horas que você pretende executá-la.


Exemplo:

***********************
user function fExecf061()
***********************

Local aWizJob :={}

aWizJob[01] := dDataBase // Data de, neste exemplo vai ser a data da execução
aWizJob[02] := dDataBase // Data até,neste exemplo vai ser a data da execução
aWizJob[03] := ‘‘        // Produto de, neste exemplo para todos os produtos
aWizJob[04] := ‘ZZZZZ‘    // produto até, neste exemplo para todos os produtos
aWizJob[05] := 2          // Seleciona Filiais (não)
aWizJob[06] := ‘‘        // Versão (informar aqui a Versão)
aWizJob[07] := 1=Sim ou 2=Nao   // Cons Produtos Bloqueados, vc decide
aWizJob[08] := 1 ou 2           // Usar Cod FCI Anterior, vc decide

//Function FISA061( aWizJob , aFilJob , cDirJob , cArqJob , nTipo )

FISA061( aWizJob)   // Aqui vc chama a fisa061 passando os parâmetros

return()





Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário PAULO0210 PAULO0210 em 07/02/2024, 09:43 h
Local: MG  Registro: 18/09/2023  Postagens: 37
Bom dia Roberto, adequei o fonte conforme regra repassada pela contabilidade, mas quando passo a função fExecf061 no schedule, ela fica aguardando execução.

Segue abaixo o fonte.

#Include "PROTHEUS.CH"

User Function FCI()

    Local lMostraTela := .F.
    Local aWizAuto    := {}        // Array com conteúdo dos campos preenchidos na wizard
    Local aFilAuto    := {}        // Array com as filiais que serão processadas
    Local cDir        := "\FCI\"    // Diretório não pode ser o mesmo informado StartPath
    Local cArq        := "FCI.TXT"
    Local nTipo       := 1          // 1-Processar; 2-Importar; 3-Gerar arquivo
    Local dDataAtual := Date()
    Local dMes        := Month(dDataAtual)
    Local dAno        := Year(dDataAtual)
    Local dMesAnt        := ""
    Local dAnoAnt        := ""
    Local dMesAnoAnt := ""
    Local dPrimeiroDia := ""
    Local dUltimoDia   := ""
    Private lMsErroAuto    := .F.
    Private lMsHelpAuto    := .T.
    Private lAutoErrNoFile := .F.

    IF dMes == 1
    dMesAnt := 12
    ELSE
    dMesAnt := dMes - 1
    ENDIF

    IF dMes == 1
    dAnoAnt := dAno - 1
    ELSE
    dAnoAnt := dAno
    ENDIF

dMesAnoAnt := CTOD(Substr(DTOC(dDataAtual),1,2) + "/" + Alltrim(Str(dMesAnt)) + "/" + Alltrim(Str(dAnoAnt)))
dPrimeiroDia := FirstDate(dMesAnoAnt)
dUltimoDia   := LastDate(dMesAnoAnt)

    // IF SELECT("SX2") == 0
    //     cCodEmp := aParams[1]
    //     cCodFil := aParams[2]
    //     RPCSetEnv(cCodEmp, cCodFil)
    // ENDIF
    // aFilAuto := MatFilCalc(.F.)

    RPCSetEnv(cCodEmp, cCodFil)


    Aadd(aWizAuto,{ DTOS(dPrimeiroDia), ;// Data de
                    DTOS(dUltimoDia), ; // Data ate
                    "", ;               // Produto de
                    "ZZZZZZZZZZZZZZZ", ; // Produto ate
                    "2"       , ;        // Seleciona filiais? 1-Sim|2-Não
                    "1.0"     , ;        // Versão
                    "2"       , ;        // Considera produtos bloqueados ? 1-Sim|2-Não
                    "1"})               // Usar cod.FCI anterior para mesma faixa? 1-Sim|2-Não

    MSExecAuto({|x,y,z,m,n|FISA061(x,y,z,m,n)}, aWizAuto, aFilAuto, cDir, cArq, nTipo)

    If lMsErroAuto
        MostraErro()
    EndIf

Return Nil    

user function fExecf061()


Local aWizJob :={}

aWizJob[01] := DTOS(dPrimeiroDia) // Data de, neste exemplo vai ser a data da execução
aWizJob[02] := DTOS(dUltimoDia) // Data até,neste exemplo vai ser a data da execução
aWizJob[03] := ""       // Produto de, neste exemplo para todos os produtos
aWizJob[04] := "ZZZZZZZZZZZZZZZ"    // produto até, neste exemplo para todos os produtos
aWizJob[05] := "2"          // Seleciona Filiais (não)
aWizJob[06] := "1.0"        // Versão (informar aqui a Versão)
aWizJob[07] := "2"   // Cons Produtos Bloqueados, vc decide
aWizJob[08] := "1"          // Usar Cod FCI Anterior, vc decide

//Function FISA061( aWizJob , aFilJob , cDirJob , cArqJob , nTipo )

FISA061(aWizJob)   // Aqui vc chama a FISA061 passando os parâmetros

return()

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário PAULO0210 PAULO0210 em 07/02/2024, 10:07 h
Local: MG  Registro: 18/09/2023  Postagens: 37
Quando eu chamo a função fExecf061 no schedule, ela executa e finaliza muito rápido, sendo que ela costuma demorar de 4 a 5 horas para executar...

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário PAULO0210 PAULO0210 em 19/02/2024, 08:24 h
Local: MG  Registro: 18/09/2023  Postagens: 37
Sabe me dizer o que pode ser?

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal