abap中 内表的问题

data:beginofgt_data,matnrlikemard-matnr,werkslikemard-werks,lgortlikemard-lgort,labst... data:begin of gt_data ,
matnr like mard-matnr,
werks like mard-werks,
lgort like mard-lgort,
labst like mard-labst,
end of gt_data.
data: so_data like table of gt_data.
select matnr
werks
lgort
labst
into table gt_data
请教 上面这个程序中 select 后面是不是一定得是这4个关键字,可以少一个吗?如果在上面结构体中再多定义几个元素,那么在into后面这个内表还可以这样用吗,求解~

其实大体就是想知道内表中的字段可以比select要取的字段多吗!
展开
 我来答
one_in_zero
推荐于2017-11-29 · TA获得超过1020个赞
知道小有建树答主
回答量:383
采纳率:60%
帮助的人:156万
展开全部
select 后面的字段如果比into table后面的字段多,程序运行的时候就会Dump掉,这时候你需要用SELECT XXX INTO CORRESPONDING FIELDS OF TABLE YYY, 但是这时候你需要select后面的字段名要与table后面的内表中的字段名一一对应。如果用这个语法,字段名不对应的就没有值。
如果select后的字段与into table的内表中的字段数量一样,且table中的字段类型与数据库表中的一样,用select XX into table YYY的时候不会Dump,但字段类型的顺序要一样。
例如:
DATA: BEGIN OF wa_a,
bname TYPE xubname,
spdb TYPE xuspdb,
col1 TYPE xuspda,
END OF wa_a,
it_a LIKE TABLE OF wa_a.

SELECT bname
spdb
spda
FROM usr01
INTO TABLE it_a.
这样可以取到3个字段的值

DATA: BEGIN OF wa_a,
bname TYPE xubname,
spdb TYPE xuspdb,
col1 TYPE xuspda,
END OF wa_a,
it_a LIKE TABLE OF wa_a.

SELECT bname
spdb
spda
FROM usr01
INTO CORRESPONDING FIELDS OF TABLE it_a.
这样可以取到前两个字段的值

DATA: BEGIN OF wa_a,
bname TYPE xubname,
spdb TYPE xuspdb,
END OF wa_a,
it_a LIKE TABLE OF wa_a.

SELECT bname
spdb
spda
FROM usr01
INTO TABLE it_a.
这样程序就会Dump
静水逐花
2013-11-06 · TA获得超过1032个赞
知道小有建树答主
回答量:733
采纳率:0%
帮助的人:489万
展开全部
SELECT 后面的字段 与 into table 后面的内表结构 有什么必然关系

如果说你select后面没写labst 就是gt_data中的labst没有数据 其它正常
这种情况太普遍了 gt_data中字段比select后面多
因为这些字段这个地方不用别的地方可能用

如果说你定义的gt_data中没有labst,但是select后面有 那gt_data种labst肯定也没数据
这个一般不会这么写 既然写在了select后面 肯定需要这个字段 但是接收数据的内表里没有
只有在某些特殊情况下才这么去写
追问
可是我在运行时如果gt_data中字段比select后面多 它会报错内表字段比所选字段多,应该怎么解决?
追答
仅仅是字段多 肯定不会报错 一般是一个黄色警告提示 不用管
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式