乐趣区

一段让人瑟瑟发抖的ABAP代码

昨天 11 月 1 日是万圣节,Jerry 在继续忙着调研 SAP Commerce Cloud 里的产品主数据管理。晚上回家到 SAP 国外的社交媒体上一看,好热闹啊。国外的 SAP 从业者们纷纷以各种各样的方式庆祝万圣节。


西方的万圣节也是一个历史悠久的节日了:早在两千多年前,欧洲基督教会就把每年的 11 月 1 日定为“天下圣徒之日”(All Hallows’ Day)。这一天被看作是夏天正式结束之日,也就是新年伊始,严酷的冬天开始的第一天。当时的人们相信,故人的亡灵会在这一天回到故居地,在活人身上找寻生灵,借此再生。而活人则惧怕死人的魂灵来夺生,于是人们在这一天熄掉炉火和烛光,让死人的魂灵无法找到活人,同时又把自己打扮成妖魔鬼怪把死人的魂灵吓走。

所以,国外的 ABAP 开发者们在这天也不甘寂寞,一位老哥提出了用“Scare with ABAP”的主题来搞事情,为万圣节增添一些节日气氛。

这一提议得到了大家的纷纷响应。

对于这种 ABAP 字符串模板和字符串内嵌函数的使用,肯定不能够让 ABAP 老司机们瑟瑟发抖。


这种程度的 ABAP 代码显然也不足以让 ABAP 老司机们受到惊吓:

那么看看 Jerry 这段 ABAP 代码?没有任何语法错误,能够成功激活,成功执行。

源代码如下:

REPORT 汪子熙的 Report,吓死人了!!!!!.

INCLUDE NOT.

IF NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT
NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT !NOT OR NOT
NOT NOT !NOT OR NOT NOT NOT NOT NOT=>NOT(NOT) AND
NOT NOT NOT !NOT OR NOT NOT !NOT AND NOT !NOT … NOT.

读了这段 ABAP 代码之后,大家瑟瑟发抖了吗?

为了证明上图没有语法错误的截图不是 Jerry PS 出来的,让我们在 ABAP 调试器里单步执行一下:

这个古怪的 ABAP 程序的关键之处在于第 3 行自行开发的名为 NOT 的 ABAP include. 里面要写怎样的 ABAP 代码,才能让整个报表通过 ABAP 语法检查并顺利执行完毕呢?

想知道 include NOT 的奥秘么?关注 Jerry 的公众号“汪子熙”获得答案。

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

退出移动版