ABAP中能不能依靠循环来声明变量?

victor_armin 2011-11-23 12:18:13
现在有个需求,需要一个月里,按天输出数据,所以想弄个循环,小弟ABAP纯新手,现在有点小问题,ABAP中能不能实现

Data string1 Type C value "xxxx"
Data string2 Type C value "xxxx"
Data string3 Type C value "xxxx"
..........................
..........................
Data string30 Type C value "xxxx"

转为

Data length type i value 1
While length <30
Data string+i type c value "xxxxx"
length = length + 1
EndWhile

就像很多其他语言一样,或者用数组也行,谢谢
...全文
320 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
北京朝五晚九 2012-04-13
  • 打赏
  • 举报
回复
指针能实现,但是我觉得试试用内表比较妥当,把所有数据赋值进内表,按照日期读取出出来。

data:beng of tab,
date(2) type c,
data(200) typec,
end of tab.

SylvanLiu 2012-02-21
  • 打赏
  • 举报
回复
指针的方法
sanlypu 2012-01-31
  • 打赏
  • 举报
回复
define
victor_armin 2012-01-20
  • 打赏
  • 举报
回复
回楼上的同学,不是取,取得话的确用的是指针的方法,问题是建内表的时候怎么弄啊...?这个帖子有段时间了,我最后就是从JYSL01-JYSL31这么在内表了写了31行的代码,自己看着都觉得挺傻的,但为了交差就那么交上去了,但是从提升自己能力的角度出发,还是想知道有没有办法能够用指针或者什么方式创建内表?
mrgongyuan 2011-11-30
  • 打赏
  • 举报
回复
就是取表里面的JYSL01-JYSL30么?
可以这样 field-symbol:<fs_data> type MARC-EISBE.
data: lv_counter type num2.
data: lv_string type string.
do 30 times.
lv_counter = lv_counter + 1.
concatenate 'JYSL' lv_counter into lv_string."lv_string = 'JYSLXX'
assign component lv_string of structure i_mmtb to <fs_data>."<fs_data>就取到了1-30号的结余数量。
输出:
endo.
field-symbol 类似指针操作的是地址。
victor_armin 2011-11-24
  • 打赏
  • 举报
回复
呃,关键是Assign这句怎么写?
例如,我们现在的内表是:
data: begin of I_MMTB occurs 0,
MATNR like MARA-MATNR,
MTART like MARA-MTART,
MATKL like MARA-MATKL,
MAKTX like MAKT-MAKTX,
MFRPN like MARA-MFRPN,
WERKS LIKE MARC-WERKS,
JYSL like MARC-EISBE, "结余数量
end of I_MMTB.

现在其实是想增加一个月1-30天的具体结余数量,从JYSL01,JYSL02....到JYSL30...,就如同这样一个内表:

data: begin of I_MMTB occurs 0,
MATNR like MARA-MATNR,
MTART like MARA-MTART,
MATKL like MARA-MATKL,
MAKTX like MAKT-MAKTX,
MFRPN like MARA-MFRPN,
WERKS LIKE MARC-WERKS,
JYSL like MARC-EISBE, "结余数量
JYSL01 like MARC-EISBE, "1号结余数量
JYSL02 like MARC-EISBE, "2号结余数量
JYSL03 like MARC-EISBE, "3号结余数量
..........................
..........................
JYSL01 like MARC-EISBE, "31号结余数量

end of I_MMTB.

请问如何Assign进去呢?谢谢。
mrgongyuan 2011-11-24
  • 打赏
  • 举报
回复
不好意思 说错了,<FS>必须用assign来赋值,你可以先把值赋给一个变量再assign给<fs>.
mrgongyuan 2011-11-24
  • 打赏
  • 举报
回复
data: lv_counter type i.
field-symbols : <fs_data>.
do 30 times.
lv_counter = lv_counter + 1.
concatenate 'string' 'lv_counter' into <fs_data>.
输出<fs_data>.
endo.
mrgongyuan 2011-11-24
  • 打赏
  • 举报
回复
filed symbol 可以实现的

2,679

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 ERP/CRM
社区管理员
  • ERP/CRM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧