IW41
Dados
Ordens
Tarefas
Personaliza o
Resumo
Tema SAP
APP BETA
Gerador de Script SAP
1. Dados Gerais
Data inicial:
Hora inicial:
Centro de trabalho:
-- selecione --
Carlos
Fernando
Genuino
Patrick
2. Ordens
Sequencial
Manual
Ordem inicial:
Ordem final:
Ordens manuais:
+
3. Tarefas
Modo Tradicional (Duração por tarefa)
Modo Random (Tempo total da ordem)
Debug SAP (abrir IW41 e parar na T1)
Total de tarefas:
Duração por tarefa (MIN):
4. Personalizacao
Personalizar duração e texto por tarefa
Resumo do Apontamento
' ============================================================ ' ======================= SAP CONEXAO 01-03-26 ======================== ' ============================================================ If Not IsObject(application) Then Set SapGuiAuto = GetObject("SAPGUI") Set application = SapGuiAuto.GetScriptingEngine End If If Not IsObject(connection) Then Set connection = application.Children(0) End If If Not IsObject(session) Then Set session = connection.Children(0) End If session.findById("wnd[0]").maximize ' ============================================================ ' ===== FUNCAO TEMPO + DATA (SEGURA / SEM LOCALE) ============ ' ============================================================ Function SomaMinutosComData(ByRef dataTmp, horaAtual, minutos) Dim d, h, m, dt d = DateSerial(CInt(Right(dataTmp,4)), CInt(Mid(dataTmp,3,2)), CInt(Left(dataTmp,2))) h = CInt(Left(horaAtual,2)) m = CInt(Right(horaAtual,2)) dt = d + TimeSerial(h, m, 0) dt = DateAdd("n", minutos, dt) SomaMinutosComData = Right("0" & Hour(dt), 2) & Right("0" & Minute(dt), 2) dataTmp = Right("0" & Day(dt), 2) & Right("0" & Month(dt), 2) & Year(dt) End Function ' ============================================================ ' =================== FUNCAO APONTAR ORDEM =================== ' ============================================================ Sub ApontarOrdem(ORDEM_ATUAL, ByRef horaAtual, ByRef dataAtual) Dim campo ' === Abre IW41 via barra (substitui duplo clique) === session.findById("wnd[0]/tbar[0]/okcd").Text = "/nIW41" session.findById("wnd[0]").sendVKey 0 ' Aguarda campo AUFNR existir Do On Error Resume Next Set campo = session.findById("wnd[0]/usr/ctxtCORUF-AUFNR", False) On Error GoTo 0 If Not campo Is Nothing Then Exit Do WScript.Sleep 200 Loop ' === Igual fluxo da macro === campo.SetFocus campo.Text = "" campo.Text = CStr(ORDEM_ATUAL) campo.CaretPosition = Len(CStr(ORDEM_ATUAL)) session.findById("wnd[0]").sendVKey 0 If session.findById("wnd[0]/usr/chkAFRUD-AUERU", False) Is Nothing Then session.findById("wnd[0]/tbar[1]/btn[13]").Press session.findById("wnd[0]/usr/tblSAPLCORUTC_3100/txtAFVGD-ARBPL[4,0]").SetFocus session.findById("wnd[0]").sendVKey 2 End If 'MsgBox "Teste conclu do at sele o da tarefa." 'Exit Sub Dim i, horaFim Dim dataInicio, dataFim, dataTmp, duracaoAtual For i = 1 To TOTAL_TAREFAS dataInicio = dataAtual dataTmp = dataAtual If MAPA_DURACAO_TAREFA.Exists(i) Then duracaoAtual = MAPA_DURACAO_TAREFA(i) Else duracaoAtual = DURACAO_TAREFA End If horaFim = SomaMinutosComData(dataTmp, horaAtual, duracaoAtual) dataFim = dataTmp session.findById("wnd[0]/usr/ctxtAFRUD-ARBPL").Text = CENTRO_TRAB session.findById("wnd[0]/usr/ctxtAFRUD-ISDD").Text = dataInicio session.findById("wnd[0]/usr/ctxtAFRUD-ISDZ").Text = horaAtual session.findById("wnd[0]/usr/ctxtAFRUD-IEDD").Text = dataFim session.findById("wnd[0]/usr/ctxtAFRUD-IEDZ").Text = horaFim session.findById("wnd[0]/usr/txtAFRUD-ISMNW_2").Text = duracaoAtual session.findById("wnd[0]/usr/chkAFRUD-AUERU").Selected = True session.findById("wnd[0]/usr/chkAFRUD-LEKNW").Selected = True ' ===== TEXTO ===== If ORDEM_ELETRICA And MAPA_TEXTO_ELETRICO.Exists(i) Then session.findById("wnd[0]/usr/txtAFRUD-LTXA1").Text = MAPA_TEXTO_ELETRICO(i) Else session.findById("wnd[0]/usr/txtAFRUD-LTXA1").Text = TEXTO_PADRAO End If ' ===== ENTER 1 ? dispara aviso de dia n o til ===== session.findById("wnd[0]").sendVKey 0 ' ===== ENTER 2 ? confirma aviso (igual manual) ===== session.findById("wnd[0]").sendVKey 0 If i < TOTAL_TAREFAS Then session.findById("wnd[0]/tbar[1]/btn[23]").Press End If horaAtual = horaFim dataAtual = dataFim Next session.findById("wnd[0]/tbar[0]/btn[11]").Press session.findById("wnd[0]/tbar[0]/btn[15]").Press End Sub ' ============================================================ ' ===================== EXECUCAO FINAL ======================= ' ============================================================ Dim horaAtual, dataAtual, ordem horaAtual = HORA_INICIAL dataAtual = DATA_INICIAL ' ===== ORDENS SEQUENCIAIS ===== If ORDEM_INICIAL > 0 And ORDEM_FINAL > 0 And ORDEM_INICIAL <= ORDEM_FINAL Then For ordem = ORDEM_INICIAL To ORDEM_FINAL Call ApontarOrdem(ordem, horaAtual, dataAtual) Next End If ' ===== ORDENS MANUAIS ===== If IsArray(ORDENS_MANUAIS) Then For Each ordem In ORDENS_MANUAIS Call ApontarOrdem(ordem, horaAtual, dataAtual) Next End If