十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

138、动态编程(Dynamic Programming)

138、动态编程(Dynamic Programming) 138、动态编程(Dynamic Programming)昨晚盯着个“字段符号未赋值”的dump看了半小时,最后发现是动态读取数据库表时,字段名大小写被数据库连接参数给坑了。这种问题你写死代码永远遇不到,一旦玩动态编程,各种妖魔鬼怪全冒出来。今天这篇笔记,就把我在ABAP动态编程里踩过的坑、绕过的弯、最后总结出来的顺手姿势,一次说清楚。动态编程,说白了就是“程序在运行时才知道对象的形状”。标准ABAP里,你写DATA: wa TYPE mara,编译器在静态阶段就替你把内存布局定好了。可有时候,表名是用户在前台输入的,字段列表是配置文件里拼的,甚至整个结构都要按业务规则现场组装。这时候你还敢写死SELECT * FROM mara?当然不敢。你得让代码像水一样,倒进什么容器就变成什么形状。我遇到最经典的场景是一个批量对账程序:后台任务接收一个字符串,格式是“表名|字段1,字段2,字段3|过滤条件”。不同来源系统的对账规则完全不同,今天要查MARA的MATNR和ERSDA,明天要查EKPO的EBELN和NETWR。用传统方式,你得写十几个函数挨个判断,每个函数里复制粘贴不同的SELECT。动态编程就是干这个的:把整个数据访问层,从“具体表”抽象成“描述符”。先从最基础的说起——字段符号(Field Symbols)。这玩意儿不像普通变量,它不占独立内存,只是个“别名”。你给它指到哪个变量上,它就代表哪个变量。最简单的用法:DATA: lv_num TYPE i VALUE 10. F
返回列表