Notifications
Clear all

Macro excel + SAP

16 Posts
5 Usuários
0 Reactions
16.9 K Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

oi, tenho uma dúvida :geek:

como posso usar uma macro para executa-lá em um outro programa .

+ detalhes:

Eu recebo planilhas e quero fazer uma macro para copiar e colar em um programa chamado SAP.
Essas planilhas que eu recebo vão alimentar este programa. Então ao invés de ficar copiando e colando no programa SAP, tenha algum modo de copiar e colar pressionando o botao da macro.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/08/2009 7:29 pm
Eron
 Eron
(@eron)
Posts: 102
Illustrious Member Admin
 

Nathalia, até onde sei a Macro que você cria no Excel só vai funcionar no Excel...

Com relação a esta interface entre o Excel e o SAP, não existe uma rotina de importação de dados dentro do SAP?

Eron
CRA/RS 27.563
Administrador Fórum Planilhando

 
Postado : 10/08/2009 7:49 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

achei isso, mas não entendo muito bem e deu errado

Sub teste()

Dim attachpath As String
Dim emailserver As String
Dim MailRecipient As String
Dim ctlTableFactory, RFC_READ_TABLE, eQUERY_TAB, tblOptions, tblData, tblFields, funcControl, objConnection, ctlLogon

Set objFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set ctlLogon = CreateObject("SAP.LogonControl.1")
Set funcControl = CreateObject("SAP.Functions")
Set ctlTableFactory = CreateObject("SAP.TableFactory.1")
Set objWindowsScriptShell = CreateObject("WScript.Shell")
Set objConnection = ctlLogon.NewConnection
'Set filOutput = objFileSystemObject.CreateTextFile(attachpath, True)

objConnection.ApplicationServer = ""
objConnection.SystemNumber = ""
objConnection.Client = ""
objConnection.Language = ""
objConnection.User = InputBox("login")
objConnection.Password = InputBox("senha")
booReturn = objConnection.logon(0, True)

If booReturn <> True Then

MsgBox " Cannot log on! "
MsgBox booReturn

Stop
Else

funcControl.Connection = objConnection
Set RFC_READ_TABLE = funcControl.Add("RFC_READ_TABLE")
Set strExport1 = RFC_READ_TABLE.Exports("QUERY_TABLE")
Set strExport2 = RFC_READ_TABLE.Exports("DELIMITER")
Set tblOptions = RFC_READ_TABLE.Tables("OPTIONS")
Set tblData = RFC_READ_TABLE.Tables("DATA")
Set tblFields = RFC_READ_TABLE.Tables("FIELDS")


'strExport1.Value = "MARA"
'strExport2.Value = ";"

'Change next line to use different selection criteria
' (EQ means =, LT means <, GT means >)
' Repeat the two lines below incrementing the number each time if your selection criteria exceeds 40

'tblOptions.AppendRow
'tblOptions(1, "TEXT") = "MANDT EQ '300' "

'tblOptions.AppendRow
'tblOptions(2, "TEXT") = " AND ARRIVDEPA EQ '" & InputBox("1 for Arrivals" & vbCrLf & "2 for Despatches") & "' AND NUMMBUKRS EQ '1000'"
' Repeat section between /** marks for each field that you want returned by the query, incrementing the number each time
'/**

'tblFields.AppendRow
'tblFields(1, "FIELDNAME") = "MATNR"

'**
'tblFields.AppendRow
'tblFields(2, "FIELDNAME") = "NAME1"

If RFC_READ_TABLE.Call = True Then

If tblData.RowCount > 0 Then

' Change Next line to write a different header row


For intRow = 1 To tblData.RowCount

Dim celula As String
Dim COLUNA As Integer
COLUNA = 0

COLUNA = COLUNA + 1
celula = "A" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "B" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "C" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "D" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "E" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "F" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "G" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "H" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "I" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "J" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "H" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "L" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "M" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "O" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "P" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "Q" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "R" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "S" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "T" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "U" & intRow
Call escrever(celula, tblData(intRow, COLUNA))
COLUNA = COLUNA + 1
celula = "V" & intRow
Call escrever(celula, tblData(intRow, COLUNA))

Next

Else


End If
Else


End If

End If


'Set filOutput = Nothing
'MailProfile = "MS Exchange Settings"
'Set objSession = CreateObject("MAPI.Session")
'Set wshnet = CreateObject("Wscript.network")
'LOGONOK = objSession.logon("", "", False, True, 0, True, emailserver & vbLf & wshnet.UserName)
'Set objMessage = objSession.Outbox.Messages.Add
'Change below to Change subject line of email
'objMessage.Subject = "Intrastat Response"
' Change below to change body text of message
'strSetMessage = "There were " & tblData.RowCount & " records  returned by your query"
'objMessage.Text = strSetMessage
' Change below to Change attachment title
'Set objOneAttach = objMessage.Attachments.Add("Intrastat", , 1, attachpath)
'objOneAttach.ReadFromFile (attachpath)
' Repeat block between /** markers for each recipient
' /**
'Set objOneRecip = objMessage.Recipients.Add
' Change name below for different recipients
'objOneRecip.Name = MailRecipient
'objOneRecip.Type = 1
'objOneRecip.Resolve
' **
'objMessage.Importance = 1
'objMessage.Update
'objMessage.Send
'objSession.Logoff
'objConnection.Logoff

End Sub
Sub escrever(linha, valor)
'
' escrever Macro
' Macro recorded 6/21/2007 by nascimm
'
   Range(linha).Select
   ActiveCell.FormulaR1C1 = valor
   
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2009 4:41 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Certo Rafael!

Conversei com o Analista de TI aqui na empresa, e ele comentou que nunca surgiu este tipo de necessidade na área dele...

Na verdade o SAP permite você Importar planilhas de Excel com informações para dentro do Sistema.

Abraço!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/08/2009 5:51 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Na verdade o SAP permite você Importar planilhas de Excel com informações para dentro do Sistema

Bom pelo jeito o que ela quer é possível, agora falta saber fazer. Creio eu que só o pessoal de TI pode proporcionar isso e não criar uma macro que "jogue" as informações do Excel na base do SAP.
Tem como saber essa informação aí? ;)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/08/2009 5:57 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Primeiramente, queiro agradecer o esforço de tentar ajudar rss. De um dia p/ outro ja tinham 6 comentários :)

+++ detalhes:

Diariamente, eu recebo uma planilha onde perco uns 15 minutos tendo o serviço de ficar copiando e colando las informações contidas nela para o SAP.

com outras palavras p/ ficar + claro;

Eu fico apertando ctrl+c (pra copiar as informaciones da planilha) ;
Alt+TAB ( pra mudar de tela e ir para o SAP );
ctrl+V ( para colar a informaçoes no SAP).

esse processo se repete por varias vezes.

A minha idéia é criar um botão na planilhaa que faz este processo sozinho ou alguma coisa do tipo que facilite esta tarefa.

Ja pesquisei sobre o assunto, me parece que com macro não da certo :
Achei um programa chamado macro expert, que faz com que repita tarefas repetitivas podendo usar programas diferentes, porém ainda não consegui usa-lo como quiero.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/08/2009 8:49 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 


Nathalia,
como sugerido pelos outros, não é possível importar do SAP?

Qual a transação do SAP que está utilizando? Quais informações copia do Excel par ao SAP?

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/08/2009 8:55 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

as informaçoes contidas no excel para o sap são transacoes de bancos dos clientes, dos fornecedores e da empres..
receber depositos.. pagar fornecedores...

------------//------------

como é una empresa multinacional, aqui no Brasil no hay centro de TI. No Brasil existe apenas a parte de contabilidade, contas a pagar e receber. Realmente, eu posso falar com eles, porém explicar por telefone ou por e-mail será complicado.

---------//----------
Estou com um programa chamado Journal macro. Estou conseguindo bons resultados com ele, porém nao é o que quero, pois até configura-lo perco um tempão.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/08/2009 7:12 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

O SAP é um programa com base de dados Oracle, e com certeza o acesso as query são bloqueadas pela TI, mesmo que consiga elaborar um código, terá que ter acesso as query para inserir os dados.

Aqui na empresa onde trabalho, existe a transações "Z" feitas pela TI que facilitam a vida da gente com lançamentos por lote Bacht imput, funciona assim:

Cria a planilha em um padrão estabelecido pela TI depois importa esses dados através da transação que a TI desenvolve.

Att,
Mitsueda

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2009 9:45 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Em resposta a seu problema de ter que copiar e colar a planilha de Excel no sistema SAP, o que poderia resolver o seu problema seria um sistema chamado Comstar DataLoad. Este programa executa exatamente a função que você deseja, desde que seja programado devidamente (Equipe TI).

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 27/01/2011 8:22 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Nathalia

Eu uso uma planilha dessa aqui no meu setor!, trabalho na expedição e faço troca de OV pela planilha do excel que joga automaticamente para o SAP

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/09/2011 1:35 pm
(@suiciniv2)
Posts: 1
New Member
 

Boa noite.
Nao querendo ressuscitar mas ja ressuscitando!

O SAP tem opções de criação de Scripts basicamente um "macro".
Também trabalho em expedição internacional e trabalho com OV.

 
Postado : 20/11/2014 5:56 pm
(@marciogome)
Posts: 1
New Member
 

O primeiro passo é ter o perfil e habilitar o "Registro e Reprodução de Scripts" no SAP.

Se já tiver esse acesso, simule um dos inputs (inputando todas as informações do primeiro grupo de dados) e grave o script.

Esse script será utilizado na macro do EXCEL, substituindo cada VALOR inserido por uma VARIÁVEL que buscará os valores nas linhas da planilha.

Tenho utilizado esse método para qualquer transação.

O trecho inicial do código (que linka o EXCEL ao SAP) é esse:

If Not IsObject(NOME) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set NOME = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
   Set Connection = NOME.Children(0)
End If
If Not IsObject(session) Then
   Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session, "on"
   WScript.ConnectObject NOME, "on"
End If

A partir dai segue a declaração das variáveis que serão utilizadas no Script gerado pelo SAP, contendo o detalhamento dos nomes dos campos.

Maiores informações, [email protected]

 
Postado : 15/12/2016 2:46 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tópico Highlander !!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/12/2016 3:57 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

no Excel Weekend 2, eu vi uma palestra sobre automação do SAP usando VBA... beem legal hein...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 31/01/2017 9:20 am
Página 1 / 2