ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 天空的天

[求助] 请问可以直接用VBA直接登录SAP再进行操作吗?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-7 14:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
carlostevez1984 发表于 2019-3-7 13:37
我写了个清理供应商的,不过自动登录是找IT用JAVA,后面调用VB。

清理供应商,手工操作也要不了多久吧
主要是日常经常需要操作的,做成自动的才有效吧

TA的精华主题

TA的得分主题

发表于 2019-3-7 14:27 | 显示全部楼层
wangydm2 发表于 2019-3-7 14:25
清理供应商,手工操作也要不了多久吧
主要是日常经常需要操作的,做成自动的才有效吧

呵呵 那个数量大的 是超出想象的

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-8 17:53 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wangydm2 发表于 2019-3-7 11:48
你这个主要是用来做什么操作呢

我们也在用sap, 上传这些不是有模板吗?

暂时是清理内部订单,用户反正是没模版的,可以批量维护数据,批量技术完成什么的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-8 17:54 来自手机 | 显示全部楼层
向東 发表于 2019-3-7 09:35
要数据库的连接账号和密码,不是应用端的登录账号,这一般要系统管理员才能拿到。

这就看管理员愿不愿意给我了。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-8 17:54 来自手机 | 显示全部楼层
carlostevez1984 发表于 2019-3-7 13:37
我写了个清理供应商的,不过自动登录是找IT用JAVA,后面调用VB。

请大佬指点

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-8 17:57 来自手机 | 显示全部楼层
tspliu 发表于 2019-3-7 13:58
'我是利用下面这样的方式实现自动登录我们公式系统的
Sub aa()
Dim WshShell

感谢感谢,周一上班试试看

TA的精华主题

TA的得分主题

发表于 2019-3-11 15:53 | 显示全部楼层
天空的天 发表于 2019-3-8 17:54
这就看管理员愿不愿意给我了。。。

Sub SAP登录()
SendKeys "{enter}"
If Not IsObject(sapplication) Then
    Set SapGuiAuto = GetObject("SAPGUI")
    Set sapplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
    Set Connection = sapplication.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 sapplication, "on"
End If
Set session = Connection.Children.Item(0)
session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "用户名"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "密码"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/okcd").Text = "F-02"
session.findById("wnd[0]").sendVKey 0
End Sub

TA的精华主题

TA的得分主题

发表于 2019-3-11 22:46 | 显示全部楼层
本帖最后由 江南新绿 于 2019-3-11 22:53 编辑

方法一:Sap的快捷登录方式
开始菜单(Ctrl+Esc),右键点击"SAP Logon",打开"属性",在"快捷方式"选项卡上"打开文件位置"
右键用管理员权限打开sapshcut.exe,如果打开Sap登录的话,要退出
开始菜单,运行注册表,regedit  回车
HKEY_CURRENT_USER\Software\SAP\SAPShortcut\Security目录下,新增一个字符串,EnablePassword,数值要从0改为1

如果用autohotkey程序,则如下

'---------------------------------------------------------------------------------------------------------------

IfWinExist,ahk_exe saplogon.exe
WinClose
RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\SAP\SAPShortcut\Security, EnablePassword,1

'----------------------------------------------------------------------------------------------------------------
如果EnablePassword的值是0的话,那么新建的快捷方式中,密码一栏是不可用的.
如果EnablePassword的值是1的话,那么密码一栏就可以用了.要注意的是,注册表修改了以后,密码一栏不会立即反映出来,需要刷新一下,所以需要退出再登录.

标题请随意,系统描述随便填一个你登录过的

密码记住之后,如果需要密码一栏变灰,则可以再次点击sapshcut.exe
无标题.jpg
---------------------------------------------------
方法2:
激活Guixt
选择脚本路径:             C:\guixt\scripts

然后写一个脚本

--------------------------------------------------------------------------

if V[_database=PRD]
Set F[RSYST-MANDT] "888"
Set F[RSYST-BNAME] "xingming"
Set F[RSYST-BCODE] "123456"
Set F[RSYST-LANGU] "zh"
Enter
Endif

---------------------------------------------------------------------------

Win7 64位操作系统为下的名字为:           1logon.txt

32位操作系统下名字为:                              logon.txt
如果你双击连接方式下的"xx"登录方式,那么可以跳过xxx端口的用户名,密码界面
也可以写一个Autohotkey的脚本,在登录完成之前,把1logon.txt加上,在完成登录之后,把1logon.txt删除

'--------------------------------------------------------------------------------------------------------------

#SingleInstance force
filename:="C:\guixt\scripts\1logon.txt"
FileDelete,%filename%
text=if V[_database=PRD] `n Set F[RSYST-MANDT] "888" `n Set F[RSYST-BNAME] "xingming" `n Set F[RSYST-BCODE] "123456" `n Set F[RSYST-LANGU] "zh" `nEnter `nEndif
FileAppend,%text%,%filename%

run,"C:\Program Files (x86)\sap\FrontEnd\SAPgui\saplogon.exe"
WinActivate,SAP Logon 730 ahk_class #32770
WinWaitActive,SAP Logon 730 ahk_class #32770
IfWinActive,SAP Logon 730 ahk_class #32770
{
send,{down}
send,{enter}
sleep,1000
FileDelete,%filename%
ExitApp
}
-----------------------------------
快捷方式3:
在888端口,用户名密码登录界面,用Autohotkey程序 把用户名和密码记录在程序里面

'--------------------------------------------------------------

#IfWinActive ahk_class SAP_FRONTEND_SESSION
^1:: ;Ctrl+1
send,xingming ;用户名
send,{tab} ;换行
send,123456 ;密码
send,{enter} ;输入回车
return
#IfWinActive

'----------------------------------------------------------------

如果更为考究一点,一定要界面上出现"用户""口令"的字样了,再输入用户名密码,则可以先截图,保存,然后使用ImageSearch(在屏幕的某个区域中搜索图像)这个语法

由于截图的大小,深浅和显示器的分辨率大有关系,所以请参考,勿抄袭.

TA的精华主题

TA的得分主题

发表于 2019-3-11 23:19 | 显示全部楼层
管理员账号通常是不会被要到的.一旦要到等同于开挂了,一路登天,不用打怪了.
录制脚本的功能权限也不太会被开放.
不过从上面是怎么登录Sap,可以看出,寻找强有力的工具和利用好系统自带的工具都是不可或缺的进阶之路.
工具类:1,脚本录入工具Autohotkey(与AutoIt近似,而AutoIt与Sap脚本录入有稍许关系)
最起码的用途是连续多个键盘或鼠标的操作和并成一个简单的操作命令.
2:文字识别工具Aqua_Deskperience中的TCapture,利用这个dll工具,你可以抓取一屏上的文字,需要翻页的文字,无法一次性获得,隐藏的文字也无法获得.
Sap自带的工具有,
1,Guixt,免费版的作用虽然非常的有限.不过由于好在操作简单,如果不是表格,而是文本框,那么还是能够发挥作用的.
2.Sap自带的Access数据库,用来保存最近输入的n条记录的.密码为LOCWSAG
利用这个方式,可以在翻页之后记得当时输入的日期等等,和Autohotkey结合,可以一键用日期名保存文件

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-13 16:57 来自手机 | 显示全部楼层
carlostevez1984 发表于 2019-3-11 15:53
Sub SAP登录()
SendKeys "{enter}"
If Not IsObject(sapplication) Then

哇,这个等下我也可以试下,感谢。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-13 15:50 , Processed in 0.044013 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表