如何使用VBA或C#读取SAP HTMLViewer控件数据

时间:2018-03-26 11:45:37

标签: c# vba sap sapscript

我正在尝试自动执行SAP任务,其中使用HTMLViewercontrol来显示某些数据并在需要时进行更新。

加载后,HTMLViewercontrol如下所示。

HTMLViewer control

我试图记录页面的加载但遗憾的是,不要在其中发生任何事件。

在我挠头几个小时之后,我试图在编辑值时记录脚本,并得到以下脚本。

session.findById("wnd[0]/usr/cntlMAIN_CONTAINER/shellcont/shell/shellcont[1]/shell/shellcont[1]/shell/shellcont[1]/shell/shellcont[1]/shell").sapEvent "","COMMAND=NEW&ELEMENT=INP_I_5_I_=123456789&INP_I_6_I_=1.000&INP_I_7_I_=&INP_I_8_I_=16.99&INP_I_9_I_=16.99&INP_I_10_I_=5.50&INP_I_11_I_=","sapevent:A1F1"
session.findById("wnd[0]/usr/cntlMAIN_CONTAINER/shellcont/shell/shellcont[1]/shell/shellcont[1]/shell/shellcont[1]/shell/shellcont[1]/shell").sapEvent "","COMMAND=ENT&ELEMENT=INP_I_5_I_=123456789&INP_I_6_I_=1.000&INP_I_7_I_=&INP_I_8_I_=16.99&INP_I_9_I_=16.99&INP_I_10_I_=5.50&INP_I_11_I_=","sapevent:A1F1"

我没有得到如何在编辑之前阅读sapevent值。

任何人都可以分享他们的专业知识。

1 个答案:

答案 0 :(得分:1)

我设法通过以下代码编辑SAP HTMLViewer上的数据:

//Record the script.
//Assign `RecordFile` name as your choice
_session.RecordFile = @"SalesScript.vbs";
//Start recording
_session.Record = true;
//Get session window handle
var handle = _session.ActiveWindow.Handle;
//Set the handle as foreground.
if (SetForegroundWindow(handle))
{
 //Send Enter key
 SendKeys.SendWait("{ENTER}");                                      
 Thread.Sleep(1000);
}
//Get the recording file path to open and get the required fields from it.
var scriptPath = _session.RecordFile;
//Stop the recording.
_session.Record = false;
//You will get the recording script file. You can get the file contains by opening it with `StreamReader`


//Method to set SAP screen foreground.
[DllImport("user32.dll")]
    public static extern bool SetForegroundWindow(
        int hWnd // handle to window
        );