在ALV中的同一行中显示多个条目

2020-08-13 22:22发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我想知道如何在同一行中显示多个发票和发货,而发货编号是相同的。 我尝试将发票编号和交货编号移动到可变字符串中,然后将其串联起来。 像这样:


数据:ls_vbeln1类型的字符串,
                    ls_invoice类型字符串,
                    ls_vbeln类型字符串,
                    ls_del类型字符串,
                    ls_werks类型字符串,
                    ls_plant类型字符串。

              ls_invoice = wa_vbrp-vbeln。
              按vbeln排序it_vbrp。
              将ls_invoice ls_vbeln1并入ls_vbeln1中,并以','分隔。
              wa_final-vbeln1 = ls_vbeln1。

              ls_del = wa_likp-vbeln。
              按vbeln排序it_likp。
              将ls_del ls_vbeln连接到ls_vbeln中,并以','分隔。
              wa_final-vbeln = ls_vbeln。

              ls_plant = wa_likp-werks。
              将ls_plant ls_werks并入ls_werks中,并以','分隔。
              wa_final-werks = ls_werks。

此方法有效吗?还是我可以尝试其他方法?

(8.7 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我想知道如何在同一行中显示多个发票和发货,而发货编号是相同的。 我尝试将发票编号和交货编号移动到可变字符串中,然后将其串联起来。 像这样:


数据:ls_vbeln1类型的字符串,
                    ls_invoice类型字符串,
                    ls_vbeln类型字符串,
                    ls_del类型字符串,
                    ls_werks类型字符串,
                    ls_plant类型字符串。

              ls_invoice = wa_vbrp-vbeln。
              按vbeln排序it_vbrp。
              将ls_invoice ls_vbeln1并入ls_vbeln1中,并以','分隔。
              wa_final-vbeln1 = ls_vbeln1。

              ls_del = wa_likp-vbeln。
              按vbeln排序it_likp。
              将ls_del ls_vbeln连接到ls_vbeln中,并以','分隔。
              wa_final-vbeln = ls_vbeln。

              ls_plant = wa_likp-werks。
              将ls_plant ls_werks并入ls_werks中,并以','分隔。
              wa_final-werks = ls_werks。

此方法有效吗?还是我可以尝试其他方法?

(8.7 kB)
付费偷看设置
发送
7条回答
一只江湖小虾
1楼-- · 2020-08-13 23:02

您要使用"相同的键"("装运编号")为值创建分组,并以"发票编号"和"交货编号2"由","连接的方式汇总每个组的字段

ALV不能为您解决此问题,您必须已经将适应的内容传递给ALV,并且需要进行汇总

您可以通过select语句实现此目的,也可以创建一个具有这些汇总值的新内部表,其中" Invoice-No"和" Shipment-No"必须为例如 字符串来保存对应值的任何串联值。

让社区知道您是否需要针对这两种方法之一的更多帮助。

您发布的"编码"似乎是 正确的方法,但是它似乎有很多缺陷,对您不起作用,但是我们需要知道整个相关的编码才能给出正确的建议。

请注意:值的串联将

风早神人
2楼-- · 2020-08-13 23:21

我不确定ALV的设计是否会做得如此复杂,这使得记录的评估和排序变得更加困难,并且也降低了可读性。

我认为正确的方法是让多个ALV带有一个拆分的容器,并且每个ALV都有一行bw发票,装运... ...

callcenter油条
3楼-- · 2020-08-13 23:23

嗨,您可以 创建一个动态ALV列,根据最大数量,您可以有n个列。 当前查询中的发票和交付数量。 问题在于,所有其他数量较少的货件都将具有空单元格。

在您的示例中,如果发票和交付的最大数量为2,则看起来像这样。

没有 1号发票| 发票2 | 交付1号| 交付2号| 箱数

如果您有2批货,其中一个有10张发票,没有10份不发货,而另一个只有一个,则您总共有22列。 第一批货物全部填满了第二批货物,总共只有4条

问候

木偶小白
4楼-- · 2020-08-13 23:00

ALV网格线和ALV网格单元始终具有相同的高度,您不能更改该高度。 您必须找到一种解决方法。

Baoming ROSE
5楼-- · 2020-08-13 23:03

感谢大家的响应。 我尝试了以下类似操作,对我来说效果很好。

我首先用所有条目填充it_final。 然后我拿了另一个具有汇总值的内部表。

 it_final1 [] = it_final []。
 it_final2 [] = it_final []。
 刷新it_final。
 从it_final1比较中删除相邻的副本
 循环到it_final1进入数据(wa_final1)。
 循环到it_final2放入数据(wa_final2)中,货件= wa_final1-shipmentno。
 wa_final1-tknum = wa_final2-tknum。  "发货编号
 lv_no_ofboxes = lv_no_ofboxes + wa_final2-no_ofboxes。
 ls_del = wa_final2-vbeln。  "送货号
 将ls_del ls_vbeln连接到ls_vbeln中,按空格分隔。
 ls_invoice = wa_final2-vbeln1。  "发票号码
 将ls_invoice ls_vbeln1并入ls_vbeln1,按空格分隔。
  结局。
  wa_final1-vbeln = ls_vbeln。  "送货编号
 wa_final1-vbeln1 = ls_vbeln1。  "发票号码
 wa_final1-fklmg = lv_f。  "没有盒子
  将wa_final1附加到it_final。
 清除:wa_final1,ls_vbeln,ls_vbeln1,lv_no_ofboxes
 结局。
 
ZJXianG
6楼-- · 2020-08-13 23:11

尊敬的Frederic和Sandra,谢谢您的答复。

我会按照迈克尔的建议尝试。

一周热门 更多>