在itemchanged事件中的SetItem()期间无法向字段添加尾随0

2020-09-24 05:04发布

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

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


你好 请解决这个问题,我已经尝试解决了好几个小时,但是失败了。

我正在对itemchanged()事件中的字段执行SetItem()。 要求是该字段将始终为6个数字字符。 因此,如果用户键入11,则在跳出时我尝试设置0000,以便该值变为110000。

在调试期间,我看到在数据窗口中设置了值110000,但是当执行转到itemfocuschanged()事件时,该值会自动更改为11。

最初,我认为该字段是Char类型,所以可能是个问题,但不是。 对于Long类型字段,其行为也相同。 我也尝试过将AcceptText()放在itemChanged()和ItemFocusChanged()事件中,但是没有成功。

下面是我在Itemchanged event()中的代码:

ls_col_value = This.GetItemString(row," col_name")//由于安全原因未提及实际的列名//

如果镜头(数据)<6然后

数据=数据+填充(" 0",6-Len(数据))

This.SetItem(行," col_name",数据)

END IF

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

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


你好 请解决这个问题,我已经尝试解决了好几个小时,但是失败了。

我正在对itemchanged()事件中的字段执行SetItem()。 要求是该字段将始终为6个数字字符。 因此,如果用户键入11,则在跳出时我尝试设置0000,以便该值变为110000。

在调试期间,我看到在数据窗口中设置了值110000,但是当执行转到itemfocuschanged()事件时,该值会自动更改为11。

最初,我认为该字段是Char类型,所以可能是个问题,但不是。 对于Long类型字段,其行为也相同。 我也尝试过将AcceptText()放在itemChanged()和ItemFocusChanged()事件中,但是没有成功。

下面是我在Itemchanged event()中的代码:

ls_col_value = This.GetItemString(row," col_name")//由于安全原因未提及实际的列名//

如果镜头(数据)<6然后

数据=数据+填充(" 0",6-Len(数据))

This.SetItem(行," col_name",数据)

END IF

付费偷看设置
发送
4条回答
SKY徐
1楼 · 2020-09-24 05:13.采纳回答

尝试一下...。

字符串ls_name
字符串ls_data

ls_name =字符串(DWO.Name)

ls_data =修剪(data)
选择大小写ls_name
case" <您的col name>"
IF Len(ls_data)<6 then
data = ls_data + fill(" 0", 6-Len(ls_data))
END IF
结束选择

返回0

宇峰科技
2楼-- · 2020-09-24 05:12

嗨Ashish;

如果您具有且有效的"显示"或"编辑"蒙版,则它们可以抑制结尾的零。 该值很可能是11000。此外,还要检查DW列定义,以确保它可以处理额外的长度。

此致...克里斯

渐行渐远_HoldOn
3楼-- · 2020-09-24 05:05

嗨克里斯,

感谢您的回复。 该字段是没有掩码的常规列。 字段长度为10,因此应该没有问题。

我将创建一个具有类似环境的新工作区,以对其进行进一步分析。 我将更新论坛。

谢谢..

SAP小菜
4楼-- · 2020-09-24 05:29

啊....

1)除非需要上一个值,否则删除GetItemString()。

2)不应使用SetItem()来设置值。

3)Data参数将在此脚本的末尾移至DWO的主缓冲区。 因此,在填充数据参数后,只需发出... RETURN 0 {接受值}

一周热门 更多>