热点中的"呼叫交易"后刷新SALV

2020-09-21 11:43发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


关于如何刷新ALV显示(附件A ),有大量的存档问答(Q&A),但是我的问题不是 关于SALV refresh()方法。

我有一个热点列(销售订单= VBELN)和一个执行CALL TRANSACTION VA03的事件处理程序。 有时,用户可能会切换到VA03中的更改模式(使用菜单),更新某些内容(例如,传递块LIFSK),然后保存并返回ALV网格。

他们的期望是,在ALV中,返回后,他们将看到更新的信息(哈哈!)。 例如。 如果他们删除了传递块,则希望ALV反映出来。

要执行此操作而不接触VA03,我看不到其他任何选项,只能从数据库中重新读取数据。 但是似乎返回ALV网格的速度非常快,并且到那时VBAK的更改尚未提交。

除了残酷的等待之外,您将如何解决这个问题? 当然,一定有人已经遇到了这个问题。

谢谢!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


关于如何刷新ALV显示(附件A ),有大量的存档问答(Q&A),但是我的问题不是 关于SALV refresh()方法。

我有一个热点列(销售订单= VBELN)和一个执行CALL TRANSACTION VA03的事件处理程序。 有时,用户可能会切换到VA03中的更改模式(使用菜单),更新某些内容(例如,传递块LIFSK),然后保存并返回ALV网格。

他们的期望是,在ALV中,返回后,他们将看到更新的信息(哈哈!)。 例如。 如果他们删除了传递块,则希望ALV反映出来。

要执行此操作而不接触VA03,我看不到其他任何选项,只能从数据库中重新读取数据。 但是似乎返回ALV网格的速度非常快,并且到那时VBAK的更改尚未提交。

除了残酷的等待之外,您将如何解决这个问题? 当然,一定有人已经遇到了这个问题。

谢谢!

付费偷看设置
发送
7条回答
小c菟菟
1楼 · 2020-09-21 11:59.采纳回答

一个常见的问题是,更新任务花费的时间过长。

如何循环,检查锁是否不再存在。 到那个时候,数据库应该被更新。 如果您担心每秒检查一次锁定1000次,则可以缩短等待时间:

最多等待'0.10'秒。
葫芦娃快救爷爷
2楼-- · 2020-09-21 12:02

锁定检查,do! 我知道我可以依靠SCN。 谢谢! :)

bbpeas
3楼-- · 2020-09-21 11:49

一种更好的解决方案,恕我直言,是检查用户是否仍在锁定对象。

设置参数ID ...
 呼叫交易...
      有权限检查
      并跳过第一屏。
 check_lock(vbeln)。
 refresh_data()。

 "在Check_lock中,您可以执行某些操作(粗糙版本)

 做20次。
CALL FUNCTION'ENQUEUE_READ'"检查SO是否被锁定... ... 如果enq []是INITIAL。 出口。 万一。 等待最多" 0.5"秒。
ENDDO。

我知道,do ... enddo并不干净而且不错,但是如果系统非常繁忙,它可以处理一些延迟/减速。

haha101010
4楼-- · 2020-09-21 11:52

哦,请不要 担心或解释:这是我的错,因为我太急躁而无法正确阅读:)

派大星 ヾ
5楼-- · 2020-09-21 12:05

嗨耶琳娜,

简单易用的是在ALV中提供一个刷新按钮。 当用户进行一些更改并让他们单击刷新以获取更新的记录时。 在这种情况下,如果仍未更新数据,请让用户单击多次。

Cikesha
6楼-- · 2020-09-21 12:14

我同意Simone-这对于开发人员来说更像是一个简单的选择,对用户而言却不是一个有用的选择。 根据另一个答案中的评论,似乎您可能已经将问题解释为好像可能有多个更改。 但这实际上只是一个文档。 返回到ALV后,用户希望该行中的数据自动更新,这对我来说似乎是一个有效的请求。

例如,假设某人正在寻找带有交货冻结的订单。 他们双击该行,查看顺序,确认没问题,然后删除该块。 他们返回到ALV,...它仍然显示交付块。 作为用户,这会让我感到困惑。 我的工作是使用户减少混乱并提高工作效率。 :)

SC_Yao
7楼-- · 2020-09-21 11:53

我还发现自己不得不诉诸睡眠选项。 也许显式地绕过表缓冲区也有帮助,但请确保我只能做到这一点。

设置参数ID ...
 呼叫交易...
      有权限检查
      并跳过第一屏。
 通话功能" RZL_SLEEP"。
 refresh_data()。
 

一周热门 更多>