2020-09-19 08:48发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
我是SAP ABAP的新手。 您能帮我解决以下问题吗?
我有一个具有非唯一值的内部表,如下所示。
我需要计算每种材料的最小价格和百分比变化,并填充接下来的两列,如下所示。
我尝试通过选择查询实现此操作,但没有成功。 还有其他方法可以修改内部表以适应更改。
谢谢。
谢谢你,阿卜舍克
https: //help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file=abenitab.htm
更好地使用LOOP AT GROUP BY。
嗨,
使用类似此参考的控制级别语句: https://wiki.scn.sap.com/wiki/display/ABAP/Control+Level+Statements+in+ABAP
1。 排序itab比较matnr netpr(降序)
2。 循环播放itab。
在matnr的末尾。
-> netpr的这一行最小值
endat。
endloop。
使用LOOP AT ASSIGNING而不是MODIFY,将更加简单有效。
这是带有表达的当代。
如果您格式化代码示例,它将更具可读性。
首先,您需要计算itab中每种材料的最小值。 为此,您需要创建一个临时表,以最低的价格收集每种材料。 下面的示例代码
类型:t_min的开头
matnr类型matnr,
最小型netpr,
t_min结束
数据:t_min的lt_min类型表。
数据:ls-min类型t_min。
数据:w_index类型为i。
在itab处循环进入ls_itab。 " itab是您的内部表。
使用键matnr = ls_itab-matnr将表lt_min读入ls_min。
w_index = sy-tabix
如果sy-subrc <>0。"第一次
ls_min-matnr = ls_itab-matnr。
ls_min-min = ls_min-netpr。
将ls_min附加到lt_min。
其他。
如果ls_itab-netpr ls_min-netpr = ls_itab-netpr。 从ls_min索引w_index修改lt_min。 endif。 endif。 endloop。 计算完所有材料的最小值后,只需再次循环以更新原始表即可 将itab循环到ls_itab。 w_index = sy-tabix。 使用键matnr = ls_itab-matnr将表lt_min读入ls_min。 ls_itab-min_price = ls_min-min。 *现在计算人数 ls_itab-perc =(((ls_itab-netpr-ls_itab-min_price)* 100)/ls_itab-min_price。 从ls_itab索引w_index修改itab。 endloop。 我希望这会有所帮助。 苏格拉底
ls_min-netpr = ls_itab-netpr。
从ls_min索引w_index修改lt_min。
endif。
计算完所有材料的最小值后,只需再次循环以更新原始表即可
将itab循环到ls_itab。
w_index = sy-tabix。
ls_itab-min_price = ls_min-min。
*现在计算人数
ls_itab-perc =(((ls_itab-netpr-ls_itab-min_price)* 100)/ls_itab-min_price。
从ls_itab索引w_index修改itab。
我希望这会有所帮助。
苏格拉底
最多设置5个标签!
https: //help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file=abenitab.htm
更好地使用LOOP AT GROUP BY。
嗨,
使用类似此参考的控制级别语句: https://wiki.scn.sap.com/wiki/display/ABAP/Control+Level+Statements+in+ABAP
1。 排序itab比较matnr netpr(降序)
2。 循环播放itab。
在matnr的末尾。
-> netpr的这一行最小值
endat。
endloop。
使用LOOP AT ASSIGNING而不是MODIFY,将更加简单有效。
这是带有表达的当代。
如果您格式化代码示例,它将更具可读性。
嗨,
首先,您需要计算itab中每种材料的最小值。 为此,您需要创建一个临时表,以最低的价格收集每种材料。 下面的示例代码
类型:t_min的开头
matnr类型matnr,
最小型netpr,
t_min结束
数据:t_min的lt_min类型表。
数据:ls-min类型t_min。
数据:w_index类型为i。
在itab处循环进入ls_itab。 " itab是您的内部表。
使用键matnr = ls_itab-matnr将表lt_min读入ls_min。
w_index = sy-tabix
如果sy-subrc <>0。"第一次
ls_min-matnr = ls_itab-matnr。
ls_min-min = ls_min-netpr。
将ls_min附加到lt_min。
其他。
如果ls_itab-netpr
ls_min-netpr = ls_itab-netpr。
从ls_min索引w_index修改lt_min。
endif。
endif。
endloop。
计算完所有材料的最小值后,只需再次循环以更新原始表即可
将itab循环到ls_itab。
w_index = sy-tabix。
使用键matnr = ls_itab-matnr将表lt_min读入ls_min。
ls_itab-min_price = ls_min-min。
*现在计算人数
ls_itab-perc =(((ls_itab-netpr-ls_itab-min_price)* 100)/ls_itab-min_price。
从ls_itab索引w_index修改itab。
endloop。
我希望这会有所帮助。
苏格拉底
一周热门 更多>