- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- WebServices (Integração)
- Importação de dados via WebService
Perguntas Importação de dados via WebService
- sidelcino
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 36
- Obrigados Recebidos: 0
8 anos 1 mês atrás #31310
por sidelcino
Importação de dados via WebService foi criado por sidelcino
Boa tarde galera,
É possível utilizar um WebService para dar carga em uma rotina MsExecAuto do Protheus 12?
Criei a rotina msexecauto que irá importar os dados no banco mas não sei como proceder para que um webservice busque um arquivo TXT ou XML em determinado diretório com os dados e tais informações sejam processadas pela função msexecauto criada e grave esses dados no banco de dados.
A função que criei pegar os dados informados em um array e através o smartclient eu executo a mesma e assim os dados são gravados no banco.
Preciso que esse dados que serão importados sejam capturados de um arquivo TXT ou XML através de um webservice e grave-os no banco.
Alguém tem dicas para realização desse processo de importação?
Afinal isso é possível?
Desde já agradeço.
Obrigado!
É possível utilizar um WebService para dar carga em uma rotina MsExecAuto do Protheus 12?
Criei a rotina msexecauto que irá importar os dados no banco mas não sei como proceder para que um webservice busque um arquivo TXT ou XML em determinado diretório com os dados e tais informações sejam processadas pela função msexecauto criada e grave esses dados no banco de dados.
A função que criei pegar os dados informados em um array e através o smartclient eu executo a mesma e assim os dados são gravados no banco.
Preciso que esse dados que serão importados sejam capturados de um arquivo TXT ou XML através de um webservice e grave-os no banco.
Alguém tem dicas para realização desse processo de importação?
Afinal isso é possível?
Desde já agradeço.
Obrigado!
Por favor Acessar ou Registrar para participar da conversa.
- will
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 81
- Obrigados Recebidos: 0
8 anos 1 mês atrás #31318
por will
Respondido por will no tópico Importação de dados via WebService
Bom dia
Sim é possivel!
já fiz diversas vezes.
O seu webservice é WSDL ou é por URL, se não souber tudo bem..
Segue um exemplo:
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "AP5MAIL.CH"
// Buscar página
DelClassIntF()
cHtmlPage := Httpget(' ctaplus.com.br:8080/SvWebSincronizaAbast...teteste&data_inicio= ' + cDataini + '&data_fim=' + cDataFin)
oXML := XmlParser( cHtmlPage, "_", @_cErro, @_cAviso )
// jogando para dentro de uma tabela protheus
FOR nCont := 1 to Len(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO)
DBSELECTAREA("ZBB")
DBSETORDER(1)
IF DBSEEK(xFilial("ZBB")+oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_ID:TEXT , .T.)
Reclock("ZBB",.F.)
ZBB->ZBB_IDABAS := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_ID:TEXT
ZBB->ZBB_DTINI := CTOD(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_DATA_INICIO:TEXT )
ZBB->ZBB_HRINI := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_HORA_INICIO:TEXT
ZBB->ZBB_DTFIM := CTOD(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_DATA_FIM:TEXT)
ZBB->ZBB_HRFIM := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_HORA_FIM:TEXT
ZBB->ZBB_VOLUME := VAL(StrTran(Alltrim(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_VOLUME:TEXT) , ',', '.'))
ZBB->ZBB_PLACA := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_VEICULO:_PLACA:TEXT
ZBB->ZBB_PLAORI := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_VEICULO:_PLACA:TEXT
nTraco := At('-', oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_BOMBA:_NOME:TEXT)
cBomba := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_BOMBA:_NOME:TEXT
ZBB->ZBB_BOMBA := ALLTRIM(SUBSTR(cBomba,nTraco + 1,LEN(cBomba)))
ZBB->(MsUnlock())
NEXT
Sim é possivel!
já fiz diversas vezes.
O seu webservice é WSDL ou é por URL, se não souber tudo bem..
Segue um exemplo:
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "AP5MAIL.CH"
// Buscar página
DelClassIntF()
cHtmlPage := Httpget(' ctaplus.com.br:8080/SvWebSincronizaAbast...teteste&data_inicio= ' + cDataini + '&data_fim=' + cDataFin)
oXML := XmlParser( cHtmlPage, "_", @_cErro, @_cAviso )
// jogando para dentro de uma tabela protheus
FOR nCont := 1 to Len(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO)
DBSELECTAREA("ZBB")
DBSETORDER(1)
IF DBSEEK(xFilial("ZBB")+oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_ID:TEXT , .T.)
Reclock("ZBB",.F.)
ZBB->ZBB_IDABAS := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_ID:TEXT
ZBB->ZBB_DTINI := CTOD(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_DATA_INICIO:TEXT )
ZBB->ZBB_HRINI := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_HORA_INICIO:TEXT
ZBB->ZBB_DTFIM := CTOD(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_DATA_FIM:TEXT)
ZBB->ZBB_HRFIM := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_HORA_FIM:TEXT
ZBB->ZBB_VOLUME := VAL(StrTran(Alltrim(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_VOLUME:TEXT) , ',', '.'))
ZBB->ZBB_PLACA := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_VEICULO:_PLACA:TEXT
ZBB->ZBB_PLAORI := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_VEICULO:_PLACA:TEXT
nTraco := At('-', oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_BOMBA:_NOME:TEXT)
cBomba := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_BOMBA:_NOME:TEXT
ZBB->ZBB_BOMBA := ALLTRIM(SUBSTR(cBomba,nTraco + 1,LEN(cBomba)))
ZBB->(MsUnlock())
NEXT
Por favor Acessar ou Registrar para participar da conversa.
- sidelcino
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 36
- Obrigados Recebidos: 0
8 anos 1 mês atrás #31322
por sidelcino
Respondido por sidelcino no tópico Importação de dados via WebService
Boa tarde Sposito,
Primeiramente obrigado pelo retorno.
Irei utilzar o Webservice o WSDL. Na verdade essa será minha primeira implementação WebService e estou seguindo algumas dicas do TDN da TOTVS e lendo matérias em fóruns, afinal o que você me indica WSDL ou URL?
Analisando o modelo que você em mandou eu não localizei o momento em que o arquivo será "puxado", por exemplo ele deverá estar onde? com qual formato?
Grato.
Primeiramente obrigado pelo retorno.
Irei utilzar o Webservice o WSDL. Na verdade essa será minha primeira implementação WebService e estou seguindo algumas dicas do TDN da TOTVS e lendo matérias em fóruns, afinal o que você me indica WSDL ou URL?
Analisando o modelo que você em mandou eu não localizei o momento em que o arquivo será "puxado", por exemplo ele deverá estar onde? com qual formato?
Grato.
Por favor Acessar ou Registrar para participar da conversa.
- will
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 81
- Obrigados Recebidos: 0
8 anos 1 mês atrás #31324
por will
Respondido por will no tópico Importação de dados via WebService
Bom dia Sidelcino!
o WSDL eu acho mais facil, como você não vai usar o URL esqueça essas suas outras perguntas pois só funciona se fosse formato do URL.
mais vamos para um modo mais efetivo.
Poste a sua duvida real, que vou te ajudando.
Por exemplo sabe como fazer o client no protheus?
Chamar os metodos do WSDL?
Segue um exemplo
User FUNCTION ENTREGAVIAGEM()
oWs:CCNPJEMISSOR := '99999999999999999'
oWs:LVIAGEMFECHADAS := .T.
oWs:LVIAGENSCANCELADAS := .T.
oWs:NPERIODOHORAS := 03
If oWs:RetornarNFsEntregues()
// autenticação ok
oResp := oWs:oWSRetornarNFsEntreguesResult
IMPORTAXML()
Endif
RETURN(NIL)
STATIC FUNCTION IMPORTAXML()
DBSELECTAREA("SZD")
DBSETORDER(1)
DBGOTOP()
IF !DBSEEK(cFil + ;
STRZERO(VAL(oResp:oWSNOTAENTREGUE[nCont]:CNOTAFISCAL),9) + ;
STRZERO(oResp:oWSNOTAENTREGUE[nCont]:NSERIE,2))
RecLock("SZD",.T.)
SZD->ZD_FILIAL := cFil
SZD->ZD_NUMNF := STRZERO(VAL(oResp:oWSNOTAENTREGUE[nCont]:CNOTAFISCAL),9)
SZD->ZD_SERIE := STRZERO(oResp:oWSNOTAENTREGUE[nCont]:NSERIE,2)
SZD->ZD_CODCLI := SC5->C5_CLIENTE
SZD->ZD_LOJA := SC5->C5_LOJACLI
SZD->ZD_NOMECLI := SC5->C5_NOMECLI
SZD->ZD_DTDEV := DATE()
SZD->ZD_RESPONS := '09'
SZD->ZD_MOTIVO := '35'
SZD->ZD_AUTNOME := oResp:oWSNOTAENTREGUE[nCont]:COPERADOR
SZD->ZD_RESPNOM := cRespNome
SZD->ZD_DESCMOT := cDescMotiv
SZD->ZD_PEDIDO := SC5->C5_NUM
SZD->ZD_ROTEIRO := SC5->C5_ROTEIRO
SZD->ZD_PLACA := SC5->C5_PLACA
SZD->ZD_SEQUENC := SC5->C5_SEQUENC
SZD->ZD_DEVTOT := 'E'
SZD->ZD_OBSER := ''
SZD->ZD_VEND := SC5->C5_VEND1
SZD->ZD_MOTORI := cNomMot
SZD->ZD_TELEFON := cTelMot
SZD->ZD_EMLMOT := cEmlMot
SZD->ZD_RESP1 := ''
SZD->ZD_PEDPERN := ''
SZD->ZD_PERNOIT := .F.
SZD->ZD_CODMOTP := ''
SZD->ZD_MTVPERN := ''
SZD->ZD_XPLACAS := SC5->C5_XPLACAS
SZD->ZD_CONTROL := cCodCTRL
SZD->ZD_NRDEVOL := '00'
MsUnLock()
ENDIF
SZD->(dbCloseArea())
RETURN(NIL)
o WSDL eu acho mais facil, como você não vai usar o URL esqueça essas suas outras perguntas pois só funciona se fosse formato do URL.
mais vamos para um modo mais efetivo.
Poste a sua duvida real, que vou te ajudando.
Por exemplo sabe como fazer o client no protheus?
Chamar os metodos do WSDL?
Segue um exemplo
User FUNCTION ENTREGAVIAGEM()
oWs:CCNPJEMISSOR := '99999999999999999'
oWs:LVIAGEMFECHADAS := .T.
oWs:LVIAGENSCANCELADAS := .T.
oWs:NPERIODOHORAS := 03
If oWs:RetornarNFsEntregues()
// autenticação ok
oResp := oWs:oWSRetornarNFsEntreguesResult
IMPORTAXML()
Endif
RETURN(NIL)
STATIC FUNCTION IMPORTAXML()
DBSELECTAREA("SZD")
DBSETORDER(1)
DBGOTOP()
IF !DBSEEK(cFil + ;
STRZERO(VAL(oResp:oWSNOTAENTREGUE[nCont]:CNOTAFISCAL),9) + ;
STRZERO(oResp:oWSNOTAENTREGUE[nCont]:NSERIE,2))
RecLock("SZD",.T.)
SZD->ZD_FILIAL := cFil
SZD->ZD_NUMNF := STRZERO(VAL(oResp:oWSNOTAENTREGUE[nCont]:CNOTAFISCAL),9)
SZD->ZD_SERIE := STRZERO(oResp:oWSNOTAENTREGUE[nCont]:NSERIE,2)
SZD->ZD_CODCLI := SC5->C5_CLIENTE
SZD->ZD_LOJA := SC5->C5_LOJACLI
SZD->ZD_NOMECLI := SC5->C5_NOMECLI
SZD->ZD_DTDEV := DATE()
SZD->ZD_RESPONS := '09'
SZD->ZD_MOTIVO := '35'
SZD->ZD_AUTNOME := oResp:oWSNOTAENTREGUE[nCont]:COPERADOR
SZD->ZD_RESPNOM := cRespNome
SZD->ZD_DESCMOT := cDescMotiv
SZD->ZD_PEDIDO := SC5->C5_NUM
SZD->ZD_ROTEIRO := SC5->C5_ROTEIRO
SZD->ZD_PLACA := SC5->C5_PLACA
SZD->ZD_SEQUENC := SC5->C5_SEQUENC
SZD->ZD_DEVTOT := 'E'
SZD->ZD_OBSER := ''
SZD->ZD_VEND := SC5->C5_VEND1
SZD->ZD_MOTORI := cNomMot
SZD->ZD_TELEFON := cTelMot
SZD->ZD_EMLMOT := cEmlMot
SZD->ZD_RESP1 := ''
SZD->ZD_PEDPERN := ''
SZD->ZD_PERNOIT := .F.
SZD->ZD_CODMOTP := ''
SZD->ZD_MTVPERN := ''
SZD->ZD_XPLACAS := SC5->C5_XPLACAS
SZD->ZD_CONTROL := cCodCTRL
SZD->ZD_NRDEVOL := '00'
MsUnLock()
ENDIF
SZD->(dbCloseArea())
RETURN(NIL)
Por favor Acessar ou Registrar para participar da conversa.
- will
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 81
- Obrigados Recebidos: 0
8 anos 1 mês atrás #31325
por will
Respondido por will no tópico Importação de dados via WebService
e as includes
#INCLUDE "PROTHEUS.CH"
#INCLUDE "APWEBSRV.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "TBICODE.CH"
#INCLUDE "XMLXFUN.CH"
faltou o Ows
Isso vai no começo
oWs := WSIntegrationWebService():New()
#INCLUDE "PROTHEUS.CH"
#INCLUDE "APWEBSRV.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "TBICODE.CH"
#INCLUDE "XMLXFUN.CH"
faltou o Ows
Isso vai no começo
oWs := WSIntegrationWebService():New()
Por favor Acessar ou Registrar para participar da conversa.
- sidelcino
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 36
- Obrigados Recebidos: 0
8 anos 1 mês atrás - 8 anos 1 mês atrás #31330
por sidelcino
Respondido por sidelcino no tópico Importação de dados via WebService
Bom dia Sposito,
Sim, eu já consigo criar o client no Assistente Código do TDS 11.3 mas os métodos ainda desconheço, você tem algum material ou link sobre como criá-los para me passar?
Sobre minha dúvida, como eu citei anteriormente, esse será meu primeiro projeto utilizando webservice portanto eu gostaria de uma visão macro sobre todo processo para desenvolver a rotina e testar.
Enfim, preciso entender o caminho das pedras para começar a desenvolver.
Me desculpe se estou fazendo perguntas desnecessárias mas são minhas dúvidas.
E mais uma vez muito obrigado pelo apoio!
Att.:
Sidelcino Souza
Sim, eu já consigo criar o client no Assistente Código do TDS 11.3 mas os métodos ainda desconheço, você tem algum material ou link sobre como criá-los para me passar?
Sobre minha dúvida, como eu citei anteriormente, esse será meu primeiro projeto utilizando webservice portanto eu gostaria de uma visão macro sobre todo processo para desenvolver a rotina e testar.
- Por exemplo, o que será necessário para que tudo funcione?
- Como e em que momento o arquivo será importado? o usuário vai ter que "apontar" o local do arquivo?
- O processo haverá ou não interação do usuário?
- O exemplo que você postou ele é tudo, não devo desenvolver mais nada?
Enfim, preciso entender o caminho das pedras para começar a desenvolver.
Me desculpe se estou fazendo perguntas desnecessárias mas são minhas dúvidas.
E mais uma vez muito obrigado pelo apoio!
Att.:
Sidelcino Souza
Ultima edição: 8 anos 1 mês atrás por sidelcino.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- WebServices (Integração)
- Importação de dados via WebService
Tempo para a criação da página:0.127 segundos