ALV网格只加载前64行,如何更改默认加载

2024-02-12

情况

我已经为 SAP GUI 脚本创建了一个查找功能。
如果网格行在特定列中具有特定值,则双击它(这会触发加载特定的相关数据)。
我的网格少于 300 行,因此加载如此多的数据不会对现代计算机造成压力。

Issue

我遇到的问题是,从 SAPGrid Row 64 中,它为每个单元格返回“”。如果我进入调试并在 ALV 网格中向下滚动,则网格行会加载并找到结果。

可能的解决方案

我可以更改默认加载的行数吗?
有没有一种方法可以提取完整的记录集?
替代选项包括使用脚本上下滚动或设置过滤器。

Code

Sub FindGridLine(SAPGrid As Object, criteria() As String)
SAPGrid.ClearSelection 'first it deselects what has been selected

For k = 0 To (SAPGrid.RowCount - 1) 'for each grid row
    For i = 1 To UBound(criteria, 1) ' for each criteria row except for the first (should be only 1)
        For j = LBound(criteria, 2) To UBound(criteria, 2) 'and for each column
            tempstr = SAPGrid.GetCellValue(k, criteria(0, j))
            If tempstr <> criteria(i, j) Then 'if the criterion doesn't match
                GoTo nextrow 'then go to the next row
            End If
        Next j
    Next i
    'if it passed the criteria then doubleclick it
    SAPGrid.DoubleClick k, criteria(0, 0)
    Exit Sub
nextrow:
Next k
'in case no results were found
MsgBox "No line was found in grid!"
End Sub

更新了代码

根据@Asger 的正确答案更新了代码。
由于查找主要使用主键,因此我选择了安全的解决方案SAPGrid.GetCellValue(k, criteria(0, j)) = ""但解决方案实际上是SAPGrid.SetCurrentCell k, criteria(0, j).

Sub FindGridLine(SAPGrid As Object, criteria() As String)
'    SAPGrid.SelectAll 'first it selects everything as to load the full grid
    SAPGrid.ClearSelection 'first it deselects what has been selected
    
    For k = 0 To (SAPGrid.RowCount - 1) 'for each grid row
        For i = 1 To UBound(criteria, 1) ' for each criteria row except for the first (should be only 1)
            For j = LBound(criteria, 2) To UBound(criteria, 2) 'and for each column
                tempstr = SAPGrid.GetCellValue(k, criteria(0, j))
                If tempstr = "" Then SAPGrid.SetCurrentCell k, criteria(0, j) 'this solution only works if the search is done in a non-empty field
                tempstr = SAPGrid.GetCellValue(k, criteria(0, j))
                If tempstr <> criteria(i, j) Then 'if the criterion doesn't match
                    GoTo nextrow 'then go to the next row
                End If
            Next j
        Next i
        'if it passed the criteria then doubleclick it
        SAPGrid.DoubleClick k, criteria(0, 0)
        Exit Sub
nextrow:
    Next k
'in case no results were found
For i = 0 To UBound(criteria, 1) ' for each criteria row except for the first (should be only 1)
    For j = LBound(criteria, 2) To UBound(criteria, 2) 'and for each column
        tempstr = tempstr & "|" & criteria(i, j)
    Next j
    If i <> UBound(criteria, 1) Then
        tempstr = tempstr & vbNewLine
    End If
Next i
MsgBox "No line was found in grid!" & vbNewLine & "Please select line" & tempstr & vbNewLine & "manually and press 'OK'" & vbNewLine & "or enter debug mode."
End Sub

GuiGridView / ALV 网格控件:对于大量数据,只有在滚动后才会重新加载内容,否则很可能只返回一个空字符串作为结果 - 即使不会引发异常。

所以SetCurrentCell应始终用于聚焦和加载要读取的数据集。

请测试e。 G。SAPGrid.SetCurrentCell(k, 1)

也许加载每一个新的 64 行就足够了(我无法测试它):

If k Mod 64 = 63 Then ' at least if 1 row before each 64 rows
    SAPGrid.SetCurrentCell (k, criteria(0, LBound(criteria, 2)))
End If
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ALV网格只加载前64行,如何更改默认加载 的相关文章

  • EPPlus Excel 行高不一致

    我已经使用 EPPlus 生成了一个 excel 文件 在 MS Office 2007 中一切似乎都很完美 但客户端使用的是 MS Office 2010 2013 并且在第 29 行之后未设置行高 这是一个非常奇怪的问题 我已经尝试了
  • 使用 Apache POI Excel 写入特定单元格位置

    如果我有一个未排序的参数 x y z 列表 是否有一种简单的方法将它们写入使用 POI 创建的 Excel 文档中的特定单元格 就好像前两个参数是 X 和Y 坐标 例如 我有如下行 10 4 100 是否可以在第 10 行第 4 列的单元格
  • 根据单元格值向用户窗体添加复选框

    我对 VBA 很陌生 只有 3 天 但我发现它非常有用且易于使用 但现在我面临一个问题 我需要制作一个具有不同复选框的用户窗体 但我需要根据工作表某一列中使用的信息自动添加它们 我相信我可以使用 For Each Next 但我真的不知道如
  • 在 MS Word 中运行外部 vba 代码

    我可以将外部代码链接到 Word 文档吗 我有很多带有宏的 Word 文档 VBA 代码 全部使用相同的代码 我希望代码从外部源运行 而不是从所有这些文档中运行 这样 如果我必须更新代码 我只有一个地方需要更新 您可以创建一个模板并将其放入
  • 无法摆脱脚本中的硬编码延迟

    我用 vba 结合 selenium 编写了一个脚本来解析网页中可用的所有公司名称 该网页启用了延迟加载方法 因此每个滚动中只有 20 个链接可见 如果我滚动 2 次 则可见链接数为 40 个 依此类推 该网页中有 1000 个可用链接 我
  • 如何将 MySQL 查询输出保存到 Excel 或 .txt 文件? [复制]

    这个问题在这里已经有答案了 如何将 MySQL 查询的输出保存到 MS Excel 工作表 即使只能将数据存储在 txt文件 就可以了 From 将 MySQL 查询结果保存到文本或 CSV 文件中 http www tech recipe
  • Excel VBA - 添加自定义数字格式

    我有一个在 Excel 外部生成的文件 其中包含许多百分比 所有这些百分比都有一位小数 当导入到 Excel 中时 Excel 会在百分比中添加第二位小数 这似乎是 Excel 中百分比的某种默认格式 它只是添加了一个 0 我想将所有两位小
  • Excel:#CALC!使用 MAP 函数计算间隔重叠时出现错误(嵌套数组)

    我正在努力解决以下公式 它适用于某些情况 但不适用于所有情况 名字input有失败的数据集 得到一个 CALC 描述 嵌套数组 错误 LET input N1 0 0 N1 0 10 N1 10 20 names INDEX input 1
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 如果总和为 0,则查找并删除带标题的最后一列

    我想创建一个宏 查找带有标题的最后一列 并仅当该列的总和等于零时才将其删除 到目前为止 这是我尝试过的 Dim LastCol As Long Dim i As Long With ThisWorkbook Sheets Sheet1 Fo
  • Excel 工作表名称的有效字符

    在 Java 中 我们使用以下包以编程方式创建 Excel 文档 org apache poi hssf 如果您尝试设置工作表的名称 不是文件 而是内部 Excel 工作表 在以下情况下您将收到错误消息 名称超过 31 个字符 该名称包含以
  • Redim Preserve 给出“下标超出范围”

    我想要Redim Preserve一个数组我不断收到错误 下标超出范围 我知道只有最后一个维度的大小可以更改 这正是我正在做的事情 这里出了什么问题 数组的类型是Variant BmMatrix Sheets BENCH Range a60
  • 使用 VBA 通过 Access 导航网页/操作 IE

    你好 StackOverflow 社区 我有一个关于使用 Access VBA 操作 IE 的问题 本质上 我正在尝试编写代码 使用 IE 打开特定网页 在该页面中搜索特定链接 目标链接的名称将取决于用户的情况 通过以编程方式单击该链接导航
  • 使用 ClosedXML 创建数据透视表

    我正在尝试使用 ClosedXML V0 91 1 创建数据透视表 但我不断遇到问题 因为我的 Excel 文件包含不可读的内容 然后 Excel 工作簿在单击时删除了我的数据透视表Yes below 下面是我击中时的显示Yes 它正在删除
  • 返回条件格式化单元格内部颜色的函数

    我想要一个返回条件格式单元格颜色索引值的函数 它用于检查一行中的多个单元格 如果它们使用条件格式突出显示 则需要执行操作 检查单元格中是否有颜色比创建覆盖条件的组合条件公式更简单所有细胞的 或者说我是这么想的 尽管代码在消息框中有效 但下面
  • Excel - 在一列中查找重复项,然后将数量求和到另一列中?

    查找一列中的重复项 然后将数量求和到另一列中 https i stack imgur com AADjd png DATA RESULT A 1 A 11 A 1 B 7 A 9 C 5 B 2 D 4 B 2 E 8 B 3 C 5 D
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • 是否存在用于开放 xml Excel 编辑的良好包装类和/或库?

    我正在寻找一个不错的库 用于在我们的 Windows 服务器上编辑和 或生成 Excel 文档 我觉得 open xml sdk 可能是可行的方法 但对我来说 学习曲线似乎很陡峭 而且我们的开发时间有限 我认为编辑 Excel 文档不应该那
  • 如果 Excel 中的表格包含单元格引用,如何对其进行排序?

    我在工作表 1 中有一个 Excel 数据表 它引用了许多其他工作表中的各种不同单元格 当我尝试对工作表进行排序或过滤时 引用会随着单元格的移动而发生变化 但是 我不想手动进入每个单元格并在各处插入 符号 因为有些引用是连续的 我可能想稍后
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之

随机推荐

  • 跟踪用户活动的 Gem [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一个好的 gem 来跟踪 记录网站上的用户活动 例如 当他们登录 注销或执行更改网站上某些内容的操
  • ABRecordCopyValue 返回 0 ?

    我想做的是获取所有联系人并依赖 如果联系人有 社会档案财产或没有 在获得所有这些联系人之后社会档案财产我会做简单的过滤来知道是否是脸书 推特 在我发布这个问题之前 我花了一整天的时间试图找到这个问题的解决方案 但它允许返回0 ABAddre
  • 依赖关系保留

    因此 我正在查看我的数据库笔记和材料 试图让自己了解即将到来的采访的一般概念和术语 然而 我陷入了依赖和无损连接分解的困境 我到处搜索并看到很多数学方程 但我正在寻找简单明了的英语答案或例子 我找到了一个来自http www cs kent
  • 如何使用纯 CSS 和 HTML 叠加图像/水印

    有没有一种简单的方法可以通过相对定位将透明 PNG 或任何其他图像 覆盖在带有 CSS 的图像标签上 只需传递一个类 img class watermarked src http placehold it 500x325 jpg alt P
  • C# 如何知道给定路径是否代表根驱动器?

    我如何知道给定目录是否是根驱动器 除了检查其路径是否等于 A B C 等 检查 DirectoryInfo Parent 是否为空 DirectoryInfo d new DirectoryInfo if d Parent null IsR
  • 为 LINQ/Lambda 创建 OrderBy 表达式

    我正在创建一个使用 Lambda LINQ 进行动态 where 和 orderby 的概念验证 以下代码适用于 where 表达式 但我不知道如何创建 order by 表达式 对于这个例子 如果可能的话我想保持简单 我宁愿不编写修改表达
  • 在自定义类中注入 Laravel 5.1“Illuminate\Http\Request”?

    这是我的简单应用 库 Gelocation php class namespace App Libraries use Location use Illuminate Http Request class GeoLocation publi
  • 如何使用 pyautogui 处理图像

    我想知道是否可以这样做pyautogui locateOnScreen 对于完整的文件夹 我的意思是一个包含 20 个不同图像的文件夹 并在屏幕上找到它们 是否可以做pyautogui 否则你会怎么做 到目前为止 这是我的代码 from p
  • 让 git 阻止修改推送的提交

    是否可以让 git 检查远程分支prepare commit msg挂钩并查看当前提交是否是修改 如果是 则中止提交 这样可以确保您无法修改已经推送的提交 这会很方便 没有办法阻止某人做git commit amend在他们自己的机器上 但
  • qtconsole 不将 pandas 数据帧渲染为 html notebook_repr_html 选项

    我最近升级了 pandas 的版本 我现在安装了最新的稳定版本 pd version Out 5 0 10 1 在此升级之前 这就是数据帧在 qtconsole shell 中显示的方式 这不是我的屏幕截图 只是我在网上找到的屏幕截图 最新
  • 如何恢复 Android 应用程序的默认区域设置

    我有这个 Android 应用程序 已本地化为多种语言 如果存在适合设备区域设置的字符串 应用程序会自动显示它 到目前为止 一切都很好 接下来 我想允许应用程序的用户切换到我提供的其中一种语言 我可以通过覆盖默认区域设置来做到这一点 这里也
  • 如何知道 Xcode 中是否触摸了 .png 的唯一可见区域

    我已将 png 图像导入到UIImageView在 Xcode 中 我想要做的是当触摸图像时 它将被隐藏 但我的问题是 png 图像包含透明部分 当我触摸透明部分时 动作会继续 我希望仅当图像的可见部分被触摸时动作才继续 如何解决问题 Sw
  • 在 CSP 中不使用“unsafe-eval”的 Vuejs 浏览器扩展

    我使用 Vuejs 构建了一个浏览器插件 并使用 Laravel Mix 作为我的构建过程 我的所有 vue 模板都在单个文件组件中 一切都工作得很好 直到我从插件清单中的 CSP 中删除 unsafe eval 火狐浏览器显示错误 Con
  • 从 Lua 中的(最简单的)函数直接返回表条目

    我想编写最简单的函数 让我在无名表中返回所需的值 并且 ideally 它应该是这样的 function RL MyTool Version n return 0 4 0 20221003 0230 13 5 5 n end 但是 当然 这
  • 在 HTML/CSS 中创建列的最佳方法

    我正在寻找一种显示 3 列内容的方法 我找到了一种显示环绕列的方法 但我不希望在该页面上使用这种方法 我正在寻找一种方式来表达
  • 导入错误:Mac 上没有名为 lxml 的模块

    我在运行 Python 脚本时遇到问题 它显示以下消息 ImportError No module named lxml 我想我必须安装一些名为 lxml 的东西 但我确实是 Python 的新手 对此我并没有太多的想法 根据我在其他线程中
  • PHP 中的自动加载器 - 一次运行两个

    我了解如何注册自动加载器 甚至如何创建自动加载器 这根本不是问题 主要问题是 如何让两个自动装载机并排运行以执行以下操作 class project one folder class extends project two folder c
  • 如何在 Java 中播放声音?

    我希望能够在我的程序中播放声音文件 我应该去哪里看 我编写了以下代码 效果很好 但我认为它只适用于 wav format public static synchronized void playSound final String url
  • OpenSSL 中 PEM 格式的默认密码是什么?

    我使用 openssl 生成密钥 证书 openssl exe req x509 days 1000 newkey rsa 1024 keyout key pem out cert pem 它提示输入密码 我猜测密码是用于密钥加密的 但是我
  • ALV网格只加载前64行,如何更改默认加载

    情况 我已经为 SAP GUI 脚本创建了一个查找功能 如果网格行在特定列中具有特定值 则双击它 这会触发加载特定的相关数据 我的网格少于 300 行 因此加载如此多的数据不会对现代计算机造成压力 Issue 我遇到的问题是 从 SAPGr