云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

亚马逊云_网易企业邮箱免费_哪个好

小七 141 0

文件存储_河南省住房和城乡建设厅网站_价格

所以最近在一个程序中,我试图清除一个内部表中的两列。因此,我使用新的ABAP来完成这项工作,而不是像以前那样循环引用并清除这些字段。别跟我讲道理,我对新的ABAP上瘾了。

我面临的第一个问题是内部表被完全清空,而不是只清空一列。请看下面的代码:

这个确切的问题在下面的博客中指出。因此'VALUE'操作符在处理右侧之前清除左侧,因此它将返回空表,而不是清除它。看看那个博客,万一你错过了。非常有趣。

https://blogs.sap.com/2019/05/27/abap-traps-dont-self-reference-in-constructor-operators/

为了这个,我也这么做了。我使用"LET"表达式将内部表数据存储在临时表中,并清除了列。现在,将test\u table1数据分配给temp\u table之后,test\u table1数据将被清除,我们将在temp\u table上执行for循环。

它工作了,新云,而且非常有趣和游戏,直到我的boy ABAP编译器开始抛出错误。

问题是我假设ABAP中的LET表达式的行为与Javascript中的LET语句相同。

结果是不同之处在于Javascript,云服务器和服务器,LET变量是块作用域,如果控件从块中出来(if或for循环等),LET变量将失去作用域而变得未定义。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

但在ABAP,LET变量的行为类似于使用数据声明的普通变量,只是您不能在构造函数表达式外访问它,但它们可以在其他构造函数表达式内重用,但我们应该将相同的类型传递给LET变量,它将成为初始变量。

这是我的错误原因,因为我使用了相同的LET变量来清除多个表。

SAP提供了另一种方法,我们可以在LET表达式中使用字段符号,大数据的趋势,大数据分析过程,您可能会认为它将保存所分配变量的引用,并在另一个构造函数表达式(值#(),等等)中再次被分配不同的类型,但是您猜怎么着,即使是字段符号类型在LET表达式中使用后也是固定的。

注意:它的工作方式与variable不同(LET=table将不工作),我尝试了另一种方法,发现它仍然修复了的类型,并且不会在另一个LET表达式中更新。

显然我不应该比较两种不同的语言,因为它们有其局限性。但如果它的工作方式与JavaScript"Let"变量相同,至少是字段符号部分,那就更好了。(未来)

ABAP文档链接:

https://help.sap.com/doc/abapdocu\u 752\u index\u htm/7.52/en-US/abaplet.htm

更新:

如果您只是想无条件地清除某一列,微信返利机器人,可以进行修改或相应的使用。对于基于条件的,可以使用这种方法。见以下Alexander K和Dmitriy Kurshakov的评论

https://blogs.sap.com/2019/07/15/别让它愚弄所有的javascript用户。—abap let vs javascript let./#评论-466188

顺便说一句,保持let表达式名称简单。见下面萨哈的评论

https://blogs.sap.com/2019/07/15/别让它愚弄所有的javascript用户。—abap let vs javascript let./#评论-466230