如何复制带有许多字符的文本以在SAP中的注释中插入?

发布于 2025-01-23 03:19:13 字数 3391 浏览 2 评论 0原文

我有此VBA代码将细胞从Excel文件连接到SAP(SAP H4 HANA)。

Sub number_twelve()

Set SapGuiAuto = GetObject("SAPGUI")
Set objGui = SapGuiAuto.GetScriptingEngine
Set objConn = objGui.Children(0)
Set session = objConn.Children(0)

Dim sht As Worksheet
Set sht = Sheet2


session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nfb70"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]/usr/ctxtBKPF-BUKRS").Text = "3800"
session.findById("wnd[1]/usr/ctxtBKPF-BUKRS").caretPosition = 4
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/ctxtINVFO-ACCNT").Text = 
sht.Range("B18").Value
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/ctxtINVFO-BLDAT").SetFocus
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/ctxtINVFO- 
BLDAT").caretPosition = 0
session.findById("wnd[0]").sendVKey 4
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/txtINVFO-WRBTR").Text = 
sht.Range("I18").Value
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/chkINVFO-XMWST").SetFocus
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/chkINVFO-XMWST").Selected 
= True
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/cmbINVFO-MWSKZ").SetFocus
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/cmbINVFO-MWSKZ").Key = 
"NS"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/ctxtACGL_ITEM- 
HKONT[1,0]").Text = sht.Range("G18").Value
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/txtACGL_ITEM- 
WRBTR[4,0]").Text = sht.Range("I18").Value
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/ctxtACGL_ITEM- 
KOSTL[17,0]").Text = sht.Range("H18").Value
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/btnACGL_ITEM- 
EOBJ[35,0]").SetFocus
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/btnACGL_ITEM- 
EOBJ[35,0]").press
session.findById("wnd[1]/usr/sub:SAPLKEAK:0400/ctxtRKEAK-FIELD[0,24]").Text = 
sht.Range("B18").Value
session.findById("wnd[1]/usr/sub:SAPLKEAK:0400/ctxtRKEAK-FIELD[0,24]").caretPosition = 7
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/btnACGL_ITEM- 
LTEXT[12,0]").SetFocus
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/btnACGL_ITEM- 
 LTEXT[12,0]").press
 session.findById("wnd[1]/usr/subNOTICE:SAPLEENO:1001/btnEENO_TEXTE-EDITOR").press
 End Sub

在SAP中,定义的交易是用于发布借记说明,因此要填写的字段之一是您想说借记注释的文本字段。碰巧的是,由于文本有很多字符,我需要在“注释”中写下。 但是,当我保存脚本时,TXT文件会生成以下行(按照上面显示的代码):

  session.findById("wnd[0]/usr/cntlSCMSW_CONTAINER_2102/shellcont/shell").setDocument 1,"e1xydGYxXGFkZWZsYW5nMTAyNVxhbnNpXGFuc2ljcGcxMjUyXHVjMVxhZGVmZjBcZGVmZjBcc3RzaGZkYmNoMFxzdHNoZmxvY2gzN1xzdHNoZmhWRpIFxmcm9tYW5cZmNoYXJzZXQwXGZwcnEye1wqXHBhbm9zZSAwMjAyMDYwMzA1MDQwNTAyMDMwNH1UaW1lcyBOZXcgUm9tYW47fXtcZmhpbWFqb3JcZjMxNTAyXGZiaWRpIFxmc3dpc3NcZmNoYXJzZXQwXGZwcnEye1wqXHBhbm9zZSAwMjBmMDMw"

有人可以帮助我吗?在最后一行我应该改变什么? 我在Excel文件中有一个带有文本的单元格(J18),

当我记录脚本时,当我开始编写注释时,我总是会收到此通知:

”输入图像说明在此处“

附件:

I have this VBA Code that links cells from an Excel file to SAP (SAP H4 HANA).

Sub number_twelve()

Set SapGuiAuto = GetObject("SAPGUI")
Set objGui = SapGuiAuto.GetScriptingEngine
Set objConn = objGui.Children(0)
Set session = objConn.Children(0)

Dim sht As Worksheet
Set sht = Sheet2


session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nfb70"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]/usr/ctxtBKPF-BUKRS").Text = "3800"
session.findById("wnd[1]/usr/ctxtBKPF-BUKRS").caretPosition = 4
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/ctxtINVFO-ACCNT").Text = 
sht.Range("B18").Value
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/ctxtINVFO-BLDAT").SetFocus
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/ctxtINVFO- 
BLDAT").caretPosition = 0
session.findById("wnd[0]").sendVKey 4
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/txtINVFO-WRBTR").Text = 
sht.Range("I18").Value
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/chkINVFO-XMWST").SetFocus
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/chkINVFO-XMWST").Selected 
= True
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/cmbINVFO-MWSKZ").SetFocus
session.findById("wnd[0]/usr/tabsTS/tabpMAIN/ssubPAGE:SAPLFDCB:0510/cmbINVFO-MWSKZ").Key = 
"NS"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/ctxtACGL_ITEM- 
HKONT[1,0]").Text = sht.Range("G18").Value
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/txtACGL_ITEM- 
WRBTR[4,0]").Text = sht.Range("I18").Value
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/ctxtACGL_ITEM- 
KOSTL[17,0]").Text = sht.Range("H18").Value
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/btnACGL_ITEM- 
EOBJ[35,0]").SetFocus
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/btnACGL_ITEM- 
EOBJ[35,0]").press
session.findById("wnd[1]/usr/sub:SAPLKEAK:0400/ctxtRKEAK-FIELD[0,24]").Text = 
sht.Range("B18").Value
session.findById("wnd[1]/usr/sub:SAPLKEAK:0400/ctxtRKEAK-FIELD[0,24]").caretPosition = 7
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/btnACGL_ITEM- 
LTEXT[12,0]").SetFocus
session.findById("wnd[0]/usr/subITEMS:SAPLFSKB:0100/tblSAPLFSKBTABLE/btnACGL_ITEM- 
 LTEXT[12,0]").press
 session.findById("wnd[1]/usr/subNOTICE:SAPLEENO:1001/btnEENO_TEXTE-EDITOR").press
 End Sub

In sap, the transaction defined is for posting debit notes, and so one of the fields to fill in is a text field where you want to say what the debit note is about. It happens that as the text has many characters, I need to write in the "notes".
However, when I save the script, the txt file generates me the following line (following the code shown above):

  session.findById("wnd[0]/usr/cntlSCMSW_CONTAINER_2102/shellcont/shell").setDocument 1,"e1xydGYxXGFkZWZsYW5nMTAyNVxhbnNpXGFuc2ljcGcxMjUyXHVjMVxhZGVmZjBcZGVmZjBcc3RzaGZkYmNoMFxzdHNoZmxvY2gzN1xzdHNoZmhWRpIFxmcm9tYW5cZmNoYXJzZXQwXGZwcnEye1wqXHBhbm9zZSAwMjAyMDYwMzA1MDQwNTAyMDMwNH1UaW1lcyBOZXcgUm9tYW47fXtcZmhpbWFqb3JcZjMxNTAyXGZiaWRpIFxmc3dpc3NcZmNoYXJzZXQwXGZwcnEye1wqXHBhbm9zZSAwMjBmMDMw"

Can anyone help me? What should I change in that last line?
I have in the Excel file a cell with the text (J18)

when I record the script, when I start writing the note, I always get this notification:

enter image description here

attachment:

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文