Você está na página 1de 3

Sub MB1A_201()

'Conex�o ao SAP
If Not IsObject(SapApplication) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set SapApplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = SapApplication.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 Application, "on"
End If

'Declara��o variaveis do array


Dim loData As ListObject
Dim aData As Variant
Dim NumRows As Long
Dim iRow As Long

'Declara��o variavel controle linha do item


Dim Linha As Long

'Declara��o variaveis tabela excel


Dim NtMaterial As String
Dim TxtCabDoc As String
Dim Movimento As String
Dim CtaRazao As String
Dim CtroCusto As String
Dim Ordem As String
Dim Deposito As String
Dim Material As String
Dim Qtd As String
Dim UnBasica As String
Dim Lote As String
Dim Centro As String
Dim DocDocumento As Variant

'Instanciando o Objeto Lodata da Planilha do Excel


Set loData = wsMB1A_201.ListObjects("tab_MB1A_201")
'Call SortLO(loData, 1, xlAscending)

'Tabela temporaria( aData) recendo o conte�do do Objeto LoData


aData = loData.DataBodyRange.Value
NumRows = UBound(aData)

'Iniciando a transa��o MB1A


session.findById("wnd[0]/tbar[0]/okcd").Text = "/nMB1A"
session.findById("wnd[0]").sendVKey 0

'Loop de execu��o pegando todas as linhas da tabela do Excel


For iRow = 1 To NumRows
'Carregando variaveis cab1 e cab2
TxtCabDoc = aData(iRow, 2)
Movimento = aData(iRow, 3)
CtaRazao = aData(iRow, 4)
CtroCusto = aData(iRow, 5)
'Ordem = aData(iRow, 6)
Centro = aData(iRow, 13)
'Carregando a variaveis Itens
Deposito = aData(iRow, 7)
Material = aData(iRow, 8)
Qtd = aData(iRow, 10)
UnBasica = aData(iRow, 11)
Lote = aData(iRow, 12)

'Processando os itens cab.1


session.findById("wnd[0]/usr/txtRM07M-MTSNR").Text = aData(iRow, 1)
session.findById("wnd[0]/usr/txtMKPF-BKTXT").Text = TxtCabDoc
session.findById("wnd[0]/usr/ctxtRM07M-BWARTWA").Text = Movimento
session.findById("wnd[0]/usr/ctxtRM07M-WERKS").Text = Centro
session.findById("wnd[0]").sendVKey 0

'Processando os itens cab.2


session.findById("wnd[0]/usr/ctxtMSEGK-KONTO").Text = CtaRazao
session.findById("wnd[0]/usr/subBLOCK:SAPLKACB:1001/ctxtCOBL-KOSTL").Text =
CtroCusto
session.findById("wnd[0]/usr/subBLOCK:SAPLKACB:1001/ctxtCOBL-
KOSTL").caretPosition = 7

'instanciando a 1� linha de cada execu��o dos itens como zero para pegar 1�
linha
Linha = 0

'Loop de repeti��o - valida��o composta por (Centro de Custo + Conta Razao)


Do
CtroCusto = aData(iRow, 5)
CtaRazao = aData(iRow, 4)
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/sub:SAPMM07M:0421/ctxtMSEG-MATNR[" &
Linha & ",7]").Text = aData(iRow, 8)
session.findById("wnd[0]/usr/sub:SAPMM07M:0421/txtMSEG-ERFMG[" &
Linha & ",26]").Text = aData(iRow, 10)
session.findById("wnd[0]/usr/sub:SAPMM07M:0421/ctxtMSEG-ERFME[" &
Linha & ",44]").Text = aData(iRow, 11)
session.findById("wnd[0]/usr/sub:SAPMM07M:0421/ctxtMSEG-LGORT[" &
Linha & ",48]").Text = aData(iRow, 7)
session.findById("wnd[0]/usr/sub:SAPMM07M:0421/ctxtMSEG-CHARG[" &
Linha & ",53]").Text = aData(iRow, 12)

iRow = iRow + 1

'incrementador de controle da linha de itens


Linha = Linha + 1

' Encerrando o programa quando nao ter centro de custo ou


ultrapassado o limite de linha da planilha
On Error GoTo Fim
If aData(iRow, 5) = "" Or iRow > NumRows Then GoTo Fim

Loop While CtroCusto = aData(iRow, 5) And CtaRazao = aData(iRow, 4) And


Linha <= 7
iRow = iRow - 1

'salvando o registro ok
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press
DocDocumento = Split(session.findById("wnd[0]/sbar").Text, "") 'O
documento 4902382384 foi lan�ado
loData.DataBodyRange(iRow, 14).Value = DocDocumento

Next

Fim:
iRow = iRow - 1
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press
DocDocumento = Split(session.findById("wnd[0]/sbar").Text, "") 'O
documento 4902382384 foi lan�ado
loData.DataBodyRange(iRow, 14).Value = DocDocumento

'quando concluido todos os registros, ir para tela inicial do SAP e


Mensagem de conclusao para usuario
session.findById("wnd[0]/tbar[0]/okcd").Text = "/n"
session.findById("wnd[0]").sendVKey 0
MsgBox "Todos os documentos da planilha foram criados"
End Sub

Você também pode gostar