BW项目随手记:例程中ABAP二分法细节

22 篇文章 8 订阅
7 篇文章 0 订阅

需求:取/BIC/ZZTERM最小的一条,排序时对/BIC/ZZTERM升序排列

SORT排序时对内表多字段进行排序,但read table时条件只用到其中几个(一般应用场景是要取某些字段的最大,或最小值,但并不是关联条件),这样使用取值会不会有问题?

此时,排序时,将没有用的字段放在前面排序会影响取值,造成取值错误,将没有用的字段放在后面排序,用二分法读取时会默认按排序取第一条,这样不用担心二分法这样取值会有问题,如图取值无误

但将/BIC/ZZTERM放在前面排序:

SORT LT_LFM1 BY /BIC/ZZTERM ASCENDING CMOP_CODE /BIC/ZVENDOR

这样READ 时没有用到/BIC/ZZTERM 会出现取值问题。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在SAP BW系统中,转换程是用于转换数据的自定义ABAP代码。转换程可以用于实现各种数据转换需求,如数据分摊。 下面是一个简单的数据分摊子,演示如何在转换程中实现数据分摊。 假设您有一个数据源,其中包含销售数据和销售成本数据。您希望根据销售数据分摊销售成本数据。您可以使用以下步骤来实现此目标: 1. 在SAP BW中创建一个转换,并将销售数据和销售成本数据源添加到转换中。 2. 在转换中创建一个数据包,并将销售数据和销售成本数据源映射到该数据包中。 3. 在数据包中创建一个转换程,并在该程中添加以下代码: ``` DATA: lt_sales TYPE TABLE OF zsales_data, ls_sales TYPE zsales_data, lt_costs TYPE TABLE OF zcost_data, ls_costs TYPE zcost_data, lv_total_sales TYPE f, lv_cost_share TYPE f. " 从销售数据源中选择销售数据 SELECT * FROM zsales_data INTO TABLE lt_sales. " 从成本数据源中选择成本数据 SELECT * FROM zcost_data INTO TABLE lt_costs. " 计算总销售额 LOOP AT lt_sales INTO ls_sales. lv_total_sales = lv_total_sales + ls_sales-sales_amount. ENDLOOP. " 分摊成本数据 LOOP AT lt_sales INTO ls_sales. lv_cost_share = ls_sales-sales_amount / lv_total_sales. LOOP AT lt_costs INTO ls_costs WHERE product_id = ls_sales-product_id. ls_costs-cost_amount = ls_costs-cost_amount * lv_cost_share. MODIFY lt_costs FROM ls_costs INDEX sy-tabix. ENDLOOP. ENDLOOP. " 将更新后的成本数据写回到转换中 CLEAR: lt_costs. SELECT * FROM zcost_data INTO TABLE lt_costs. ``` 在此转换程中,我们首先从销售数据源和成本数据源中选择数据,并将其存储在内部表中。然后我们计算总销售额,并使用循环遍历销售数据,以便计算每个产品的成本分摊比。最后,我们在内部表中更新成本数据,并将其写回到转换中。 请注意,上述代码仅供参考,并且可能需要根据您的具体需求进行修改。此外,您还需要确保您的转换程正确地映射到数据包中,并且您已正确设置源系统连接和目标系统连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Idan Lian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值