我正在尝试在SAS中为一组具有不同SKU和DC的商店运行do to循环,以便为每个SKU / DC组合找到TSF_Qty。我试图将SKU / DC的TSF_QTY总结为SUM_TSF_QTY并更改increment_percent,直到SUM_TSF_QTY大于或等于netdcinv。
我能够弄清楚如何通过DC对SKU进行求和,但发现在运行do until循环时它以1.25的增量运行所有存储,然后只运行一个存储的do循环,导致非常高的increment_percent。任何人都可以帮我弄清楚如何让它运行整个商店集的do循环,然后通过sku_dc对其进行补偿?
data Test3;
set TSF_Data (drop=location);
increment_percent=1;
do until(SUM_TSF_QTY>=netdcinv);
increment_percent=increment_percent+.25;
New_Max_Stock = (Increment_Percent * max_stock);
Need1 = (New_Max_Stock-Stock_on_hand);
need2 = round(need1,1);
Need3 = (need2/inner_pack_size);
Need4 = round(need3,1);
Final_Need = (need4*inner_pack_size);
if need1>0
then TSF_Qty = max(inner_pack_size,Final_Need);
else TSF_Qty=0;
by SKU_DC;
if first.SKU_DC then Sum_TSF_Qty=tsf_qty;
Sum_TSF_Qty+TSF_Qty;
if last.SKU_DC;
end;
run;
不知道显示示例数据的更好方法。第一个图像是输入数据的样本。第二个图像是我得到的当前输出。由于do until仅运行所有商店一次然后运行最后一个商店,所以increment_percent远高于期望值。
Input and Output Sample Data Sets
由于