为何要用FIELD-SYMBOL?

标签:ABAP

近日又重归ABAPer的老本行了,于是读起了项目里的模板程序,发现老外很喜欢用FIELD-SYMBOL。

对此我感到有些不解,因为FIELD-SYMBOL在书写、创建和使用时都没有静态类型的变量方便,阅读起来也更难懂,难道用它只是为了耍酷么?

编辑ALV后更新对应的内表

标签:ABAP

好久没碰ABAP了,今天同事问我一个ALV的问题,稀里糊涂地解决了,于是记录下来。

这个问题是有一个可编辑的ALV表格,用户编辑完后点update按钮,需要将编辑后的数据更新到数据库。

让ABAP ALV响应事件

标签:无

在使用ALV List显示数据时,可能需要写一些表的用途之类的东西。但ALV和直接用write写的是在不同screen上的,于是可以用到it_events这个参数。

在ABAP method中传递internal table

标签:ABAP

今天又遇到奇怪的情况,method中传递internal table时,没法写type table of。
例如:
METHODS save IMPORTING itab TYPE STANDARD TABLE of sflight.
是无法通过语法检查的。

让ABAP table control显示正确的行数

标签:ABAP

这几天遇到个无语的问题,就是internal table已经修改了,但table control却一直是固定的行数,导致添加/删除行数时,新增行不显示,被删行显示为空行。

今天在TL的指导下,在ABAPDOCU这个transaction里找到了DEMO_DYNPRO_TABCONT_LOOP_AT这个示例程序,才发现table control的行数是需要手动在PBO中修改的。

将ABAP报表结果导出为PDF文件

标签:ABAP

发现我改的这个报表有这个功能,所以就参阅了一下。

因为不是我写的,就不方便列出代码,就说说思路吧。

构造一个select option

标签:ABAP

有时候想在where语句中使用in关键字,但select-options里没有向用户取范围,这时候就只能手工打造了。

这个用来代替的东西就是ranges,示例如下:

在ABAP中用for all entries in代替inner join

标签:ABAP

取数据一般都会用到多个表,inner join是非常常用的操作,但因为比较耗数据库资源,所以很多时间不推荐。

大家也知道,SAP这东西,应用服务器可以扩展为多个,但数据库服务器只有一个,所以必须少消耗DB资源。

据boss说,一般多对多或关联很多表(例如3个以上)时就不用inner join(前者是因为难搞清关系,不太清晰),应改成for all entries in。

header-item或多对一关系就可以inner join(即另一张表的where语句上所有的key都唯一确定了)。

遍历ABAP结构的各个字段

标签:ABAP

有的结构有很多字段,但想对所有字段都进行同样的处理时,会显得很臃肿,这时就可以用field-symbols了。
感觉是类似指针或是引用的东西吧,而且因为语法检查很松,有时候比C/C++的指针/引用更强大。

去掉ABAP变量显示时的多余空格

标签:ABAP

NO-GAP是用于消除显示多个字符串之间的空格的,但字符串内部有空格的话,就没用了。
但可以试试这样:
data name_len type i.
parameters: name(20) type c.
name_len = strlen( name ).
write 'Hello,', name(name_len), '!'.

« 看看还有什么好玩意