点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我正在创建一个计划应用程序,以计算用于产生客户折扣的费率。 目标费率基于几种费率,其中一些是衍生的,而其他则是手动输入的。 由于数据来自多个源,因此我创建了一个聚合级别,该聚合级别从包含源DSO的多提供程序中读取。
ZCOP_O14 是计划DSO,其中包含产品,客户和费率历史记录。 此DSO还将包含我们在公式中设置的目标费率。
ZCOP_O02 是一个计划DSO,其中包含由我们的用户上传的客户价格数据。
我需要从ZCOP_O14中读取数据并从ZCOP_O02中获取记录,以计算定价目标,并将其存储在ZCOP_O14中的KF中。 我以为我在另一篇文章中找到了一种解决方案,但是只能从一个DSO中读取。
我尝试了几种过滤器策略以及代码的多次迭代。 如何从两个DSO读取此公式?
这是我现在的状态:
数据CH_TAR类型0DISTR_CHAN。
数据CH_REF类型0DISTR_CHAN。
数据CG_TAR类型ZCG_SOLD2。
数据CG_REF类型ZCG_SOLD2。
数据AG_TAR类型0PRODH2。
数据AG_REF TYPE 0 。
数据VER_TAR类型ZVERSION1。
数据VER_REF类型ZVERSION1。
数据量类型F.
数据IP_TAR类型0INFOPROV。
数据IP_REF类型0INFOPROV。
IP_TAR =' ZCOP_O14'。
IP_REF ='ZCOP_O02'。
* BREAK-POINT。
FOREACH CH_TAR,IP_TAR,AG_TAR,CG_TAR,VER_TAR。
* BREAK-POINT。
> FOREACH CH_REF,IP_REF,AG_REF,CG_REF,VER_REF IN REFDATA。
* BREAK-POINT。
如果CH_TAR = CH_REF并且AG_TAR = AG_REF和CG_TAR = CG_REF并且VER_TAR = VER_REF。
{ZPRPOL,CH_TAR, ZCOP_O14,AG_TAR,CG_TAR,VER_TAR} =
{ZBASERATE,CH_TAR,ZCOP_O14,AG_TAR,CG_TAR,VER_TAR} +
{ZRA_SBL01,CH_REF,ZCOP_O02,AG_REF,CG_REF,VER_REF_REF_CAM +
,ZCOP_O02,AG_REF,CG_REF,VER_REF} +
{ZRA_CMA01,CH_REF,ZCOP_O02,AG_REF,CG_REF,VER_REF}。
ENDIF。
E NDFOR。
ENDFOR。
请参阅我对Cornelia的答复,了解我申请的解决方案。
谢谢Cornelia。 此聚合级别中的每个信息提供者都有数据。 我还是很迷惑。
我最终找到了返回该循环帮助的方式,并发现了" FOREACH ... IN INFOPROVIDER"。 还有一个仅基于我所需的信息提供者的聚合级别。 我添加了以下声明:
INFOPROVIDER ZCOP_AL02。
现在我的内循环显示为:
FOREACH CH_REF,AG_REF,CG_REF,VER_REF在ZCOP_AL02中。 {ZBASERATE,CH_TAR,AG_TAR,CG_TAR,VER_TAR} +
如果CH_TAR = CH_REF和AG_TAR = AG_REF并且CG_TAR = CG_REF和VER_TAR = VER_REF。
{ZPRPOL,CH_TAR,AG_TAR,CG_TAR,
ZCOP_AL02。{ZRA_SBL01,CH_REF,AG_REF,CG_REF,VER_REF} +
ZCOP_AL02。{ZRA_CAM01,CH_REF,AG_REF,CG_REF,VER_TAR > ZCOP_AL02。{ZRA_CMA01,CH_REF,AG_REF,CG_REF,VER_REF}。
ENDIF。
ENDFOR。
再次感谢。
最好的问候
Eric
嗨,Eric,
在启动功能之前,您是否已有数据记录?结果集是否为空?
因为如果没有可供读取的数据记录,则该函数永远不会到达" ... refdata"循环。
如果结果集中已经有记录,并且refdata中有记录,
输入此命令
FOREACH CH_REF,IP_REF,AG_REF,CG_REF,VER_REF IN REFDATA。
和其他
IF {来自refdata的一个关键人物元组将可用} <> 0。
然后输入您的代码...
ENDIF。
致谢
Cornelia
一周热门 更多>