ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

079、OO ALV基础

079、OO ALV基础 079、OO ALV基础那一阵子,生产上一个报表突然显示“无数据”,但数据库里明明有几百条记录。我一开始怀疑是查询条件写错了,翻来覆去检查SELECT,没问题。后来在屏幕输出逻辑里打了一个断点,才发现ALV网格控件根本没拿到数据——这玩意儿根本不是查询的问题,是我在OO ALV初始化时少调了一个方法。那个瞬间,我意识到很多人包括我自己,刚开始玩OO ALV时,总会掉进同一个坑里:把传统函数式ALV的思维直接搬过来,却忽略了OO ALV的“对象”和“容器”这套东西。如果你还在用REUSE_ALV_GRID_DISPLAY,觉得90%的场景够用了,那确实可以不用折腾OO ALV。但是一旦想实现单元格颜色、可编辑、按钮事件、自定义菜单,甚至嵌入多个ALV到一个屏幕,传统ALV那套参数和回调函数会把你逼疯。OO ALV基础虽然起步略啰嗦,但理解一遍,后面的扩展全是顺水推舟。最真实的体验是,OO ALV不是“几行代码调个函数”,而是你亲手创建了一个容器,把网格控件塞进去,然后把数据和字段目录喂给它。每一步都有对应的对象和属性。所以调试时你脑子里要有那条链:屏幕上的容器不是自动长出来的,网格控件也不是凭空出现的,字段目录更不是ALV自己猜的。任何一个环节断了,结果就是白屏、空表、列名乱跳,甚至直接dump。先看一个最典型的“白屏”场景。你新建了一个屏幕,画布上放了一个CUSTOM_CONTROL控件,名字叫MY_CONTAINER。你怎么把ALV塞进去?记住,这个CUSTOM_CONTROL本身只是个占位符,真正让ALV显示出来,必须先建一个CL_GUI_CUSTOM_
返回列表