楼主: haiimo
2007 2

[有偿编程] 进销存的移动加权平均 [推广有奖]

  • 0关注
  • 0粉丝

大专生

16%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
6289 点
帖子
21
精华
0
在线时间
50 小时
注册时间
2010-5-31
最后登录
2021-11-30

10论坛币
需要给医院药品用“移动加权平均”计算
样本数据见附件(YPJXC_CLN2),示例如下图:
示例.JPG

已经清洗完,对操作方式是“入库”的,金额是正的;对“门诊发药”、“住院发药”,金额是负的。
并计算了每个药品的累积库存数量。

现在需要计算每个药品的“累积库存成本”,计算要求:
移动加权平均单价=(本次进货的成本+原有库存的成本)/(本次进货数量+原有存货数量) 
【注释】发药不影响移动平均单价
累积库存成本(如果是进货)=(本次进货的成本+原有库存的成本)
累积库存成本(如果是发货)= 移动平均单价 * 发货后的剩余库存数量

我能力有限,先用一个药品,一条条计算,大概如下:
希望大神能帮忙写一下循环(一个是单药品的后续流水的循环;一个是不同药品的循环):

DATA YPJXC_CLN3;
        SET YPJXC_CLN2 (WHERE= (CD_IDM=12));    /*先用一个药品*/
                IF _N_=1 THEN DO;
                        FCT= ZJ;
                        FPC= DJ;
                        CALL SYMPUT ("NEW_FCT",ZJ);     /*药品的第1条流水,肯定是进货,所以讲单价、金额提取到宏变量*/
                        CALL SYMPUT ("NEW_FPC",DJ);
                END;
RUN;

DATA YPJXC_CLN4;
        SET YPJXC_CLN3 ;                                        /*药品的第2条流水,分为进货和发货两种可能,计算后,再更新宏变量*/
                IF _N_=2 AND CZLX=1 THEN DO;
                        FCT= &NEW_FCT + ZJ;
                        FPC= (&NEW_FCT + ZJ )/ FN;
                        CALL SYMPUT ("NEW_FCT",&NEW_FCT + ZJ );
                        CALL SYMPUT ("NEW_FPC",(&NEW_FCT + ZJ )/ FN );
                END;
                ELSE IF _N_=2 AND CZLX=-1 THEN DO;
                        FCT= &NEW_FPC *FN ;
                        FPC= &NEW_FPC ;
                        CALL SYMPUT ("NEW_FCT",&NEW_FPC *FN );
                        CALL SYMPUT ("NEW_FPC",&NEW_FPC );
                END;
RUN;

DATA YPJXC_CLN5;
        SET YPJXC_CLN4 ;                                        /*药品的第3条流水,重复下去*/
                IF _N_=3 AND CZLX=1 THEN DO;
                        FCT= &NEW_FCT + ZJ;
                        FPC= (&NEW_FCT + ZJ )/ FN;
                        CALL SYMPUT ("NEW_FCT",&NEW_FCT + ZJ );
                        CALL SYMPUT ("NEW_FPC",(&NEW_FCT + ZJ )/ FN );
                END;
                ELSE IF _N_=3 AND CZLX=-1 THEN DO;
                        FCT= &NEW_FPC *FN ;
                        FPC= &NEW_FPC ;
                        CALL SYMPUT ("NEW_FCT",&NEW_FPC *FN );
                        CALL SYMPUT ("NEW_FPC",&NEW_FPC );
                END;
RUN;



样本数据.xlsx

13.31 KB

关键词:进销存 symput Where call Then
沙发
whymath 发表于 2019-1-17 23:12:25 |只看作者 |坛友微信交流群
你问的问题真具体,为什么不到你们公司去问

使用道具

藤椅
haiimo 发表于 2019-1-18 07:26:17 来自手机 |只看作者 |坛友微信交流群
whymath 发表于 2019-1-17 23:12
你问的问题真具体,为什么不到你们公司去问
公司里,就我一个人会sas

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 14:12