Abap 要显示结果列表中的所有行项目而不是最后一行项目吗
我有一个使用聚合函数Abap 要显示结果列表中的所有行项目而不是最后一行项目吗,abap,Abap,我有一个使用聚合函数groupby的SELECT查询。但是我的程序只显示最后一行项目。我想显示所有行项目 预期结果示例: {"numOfRec":"50", "shipmentsDetails":[ {"orderNum":"1000101730", "deliveryOrderNum":"0085099852", "pro
groupby
的SELECT查询。但是我的程序只显示最后一行项目。我想显示所有行项目
预期结果示例:
{"numOfRec":"50",
"shipmentsDetails":[
{"orderNum":"1000101730",
"deliveryOrderNum":"0085099852",
"prodCode":"OE8002L18",
"batchCode":"0000029927",
"qty":"108.000" } ,
{"orderNum":"1000101730",
"deliveryOrderNum":"0085099852",
"prodCode":"OE8407L18",
"batchCode":"0000029928",
"qty":"36.000" } ,
{"orderNum":"1000101730",
"deliveryOrderNum":"0085099852",
"prodCode":"SUE9433G1",
"batchCode":"0000029923",
"qty":"180.000" }]}
实际结果示例(在i_输出中
):
(虽然有许多行项目,但仅显示最后一行项目)
这是我的密码:
IF NOT i_vttk IS INITIAL.
SELECT tknum
tpnum
vbeln
FROM vttp
INTO TABLE i_vttp
FOR ALL ENTRIES IN i_vttk
WHERE tknum = i_vttk-tknum.
IF sy-subrc EQ 0.
SORT i_vttp BY tknum tpnum.
ENDIF.
IF NOT i_vttp is INITIAL.
LOOP AT i_vttp INTO wa_vttp.
SELECT vbeln
matnr
charg
SUM( lgmng ) as lgmng
meins
FROM lips
INTO TABLE i_lips
WHERE vbeln = wa_vttp-vbeln
AND aedat LE sy-datum
AND lfimg <> 0
GROUP BY vbeln matnr charg meins.
IF sy-subrc EQ 0.
"APPEND i_lips.
"CLEAR i_lips.
SORT i_lips BY vbeln matnr.
ENDIF.
ENDLOOP.
ENDIF.
LOOP AT i_lips INTO wa_lips.
READ TABLE i_vttp
INTO wa_vttp
WITH KEY vbeln = wa_lips-vbeln.
IF sy-subrc = 0.
wa_output-tknum = wa_vttp-tknum.
wa_output-vbeln = wa_lips-vbeln. " Added Delivery
wa_output-matnr = wa_lips-matnr.
wa_output-charg = wa_lips-charg.
wa_output-lgmng = wa_lips-lgmng.
ENDIF.
APPEND wa_output TO i_output.
CLEAR: wa_vttp, wa_lips, wa_output.
l_count = l_count + 1.
ENDLOOP.
任何帮助都将不胜感激。谢谢。您的代码有几个问题:
SELECT vbeln
matnr
charg
SUM( lgmng ) as lgmng
meins
FROM lips
APPENDING TABLE i_lips
WHERE vbeln = wa_vttp-vbeln
AND aedat LE sy-datum
AND lfimg <> 0
GROUP BY vbeln, matnr, charg, meins.
选择vbeln
材料
charg
总额(lgmng)为lgmng
梅因
从嘴唇
附加表i\u
其中vbeln=wa_vttp-vbeln
和伊达·勒西数据
和lfimg 0
按vbeln、matnr、charg、meins分组。
结果列表:{“numOfRec”:“1”,“shipmentsDetails”:[{“orderNum”:“1000101760”,“deliveryOrderNum”:“0085099889”,“prodCode”:“UE9101G5”,“batchCode”:“20200101E”,“qty”:“10.000”}]}}虽然有许多行项目,但只显示最后一行项目。将
vttp
和lips
表格样本放入问题中,与预期结果一起,将vbeln matnr charg lgmng meins从lips中选择到表i_lips中,用于i_vttp中的所有条目,其中vbeln=i_vttp-vbeln和aedat LE sy DATA和lfimg 0。如果sy subrc等式为0。按vbeln matnr对嘴唇进行分类。恩迪夫。总数量之和(字段lgmng)。但是abap不允许使用针对所有条目的聚合函数。因此,我循环内部表。循环后,显示最后一行项目。预期结果:{“numOfRec”:“50”,“shipmentsDetails”:[{“orderNum”:“1000101730”,“deliveryOrderNum”:“0085099852”,“prodCode”:“OE8002L18”,“batchCode”:“0000029927”,“qty”:“108.000”},{“orderNum”:“1000101730”,“deliveryOrderNum”:“0085099852”,“prodCode”:“OE8407L18”,“batchCode”:“0000029928”,“qty”:“36.000”},{“orderNum”:“1000101730”,“deliveryOrderNum”:“0085099852”,“产品代码”:“SUE9433G1”,“批次代码”:“0000029923”,“数量”:“180.000”}@HninWaiMarSoe您可以编辑您自己的问题以提高其清晰度;这比只使用注释要好。我是为您做的。谢谢Dan K。我对abap非常陌生。我想知道一件事。我如何声明@wa_vttp和@sy datum?错误消息“当转义时,所有主机变量都必须使用@转义。“我已经在asnwer中修复了它,我按照您所说的删除了“@”。没有结果。从lips附加表I_lips中选择vbeln matnr charg SUM(lgmng)作为lgmng meins,其中vbeln=wa_vttp-vbeln和aedat LE sy DATA,并通过vbeln matnr charg meins对lfimg 0进行分组。结果:{“numOfRec”:“0”,“shipmentsDetails”:[]]从lips附加表i_lips中选择vbeln matnr charg SUM(lgmng)作为lgmng MEIN,其中vbeln=i_vttp-vbeln和aedat LE sy DATA,并按vbeln matnr charg MEIN将lfimg 0分组。尝试使用i_vttp-vbeln时,显示错误消息“字段i_vttp-vbeln”未知@HninWaiMarSoe虽然您说更正后的程序没有按预期工作,但我认为Dan K已经回答了您的问题(使用在中添加,而不是)。我建议您投票,如果回答了实际问题,则mark Dan K回答为已接受。对于其他问题,值得提出一个新问题,或者如果您需要有关代码的一般帮助,我建议您访问或之类的网站。
SELECT vbeln matnr charg SUM( lgmng ) as lgmng meins
FROM lips
INTO TABLE i_lips
FOR ALL ENTRIES IN i_vttp
WHERE vbeln = i_vttp-vbeln
AND aedat LE sy-datum
AND lfimg <> 0
GROUP BY vbeln matnr charg meins.
SELECT vbeln
matnr
charg
SUM( lgmng ) as lgmng
meins
FROM lips
APPENDING TABLE i_lips
WHERE vbeln = wa_vttp-vbeln
AND aedat LE sy-datum
AND lfimg <> 0
GROUP BY vbeln, matnr, charg, meins.