先进先出的数据冲销处理

原创 2005年06月02日 21:59:00

先进先出的数据冲销处理

--示例数据:
create table 销售订单(单号 varchar(10),日期 datetime,货品编码 varchar(10),数量 int)
insert 销售订单 
select 'A1','2005-5-1','ABCD',100 union all
select 'A2','2005-5-3','ABCD',200 union all
select 'A3','2005-5-4','ABCD',300 union all
select 'A4','2005-5-8','ABCD',500

create table 销售发货单(单号 varchar(10),日期 datetime,货品编码 varchar(10),数量 int)
insert 销售发货单
select 'B1','2005-5-05','ABCD',250 union all
select 'B2','2005-5-07','ABCD',100 union all
select 'B3','2005-5-10','ABCD',150'
GO

问题描述:
    对于示例数据中的销售订单和销售发货单,由于客户在做销售发货时无法指定本次是要发那一张订单的东西。所以销售订单无法与销售发货单关联。客户要求以先进先出的方式统计销售订单的执行情况。对于示例数据,要求结果如下:
单号        日期             货品编码    订单数量    发货数量     待执行数量       
---------- ----------------- ------------- -------------- --------------- ------------------ 
A1         2005-05-01   ABCD       100            100              0
A2         2005-05-03   ABCD       200            200             0
A3         2005-05-04   ABCD       300            200            100
A4         2005-05-08   ABCD       500            0                 500
                                      合计          1100         500             600

--查询处理的过程
select 
    a.单号,a.日期,a.货品编码,
    订单数量=a.数量,
    发货数量=isnull(case when a.s数量<b.数量 then a.数量 else b.数量-a.p数量 end,0),
    待执行数量=case when a.s数量<b.数量 then 0 else a.s数量-isnull(b.数量,a.p数量) end
into # from(
    select 单号,日期=convert(char(10),日期,120),货品编码,
        数量=sum(数量),
        p数量=isnull((select sum(数量) from 销售订单
    where 货品编码=a.货品编码
        and(datediff(day,日期,min(a.日期))>0
        or datediff(day,日期,min(a.日期))=0 and 单号<a.单号)),0),
        s数量=isnull((select sum(数量) from 销售订单
            where 货品编码=a.货品编码
                and(datediff(day,日期,min(a.日期))>0
                or datediff(day,日期,min(a.日期))=0 and 单号<=a.单号)),0)
    from 销售订单 a
    group by 单号,convert(char(10),日期,120),货品编码
)a 
    left join(
        select 货品编码,数量=sum(数量)
        from 销售发货单
        group by 货品编码
    )b on a.货品编码=b.货品编码
        and a.p数量<b.数量
order by a.单号,a.日期,a.货品编码

select * from #
union all
select '','','合计',sum(订单数量),sum(发货数量),sum(待执行数量) from #
drop table #

原帖地址

SAP财务凭证冲销

客户公司的同事有时经常会问到冲销的问题,可能大部份的用户对于财务的冲销功能都不是很理解,这里我们全面的来看看。 SAP系统中财务凭证的冲销方式: • 正常的冲销过帐 • 负过帐...
  • saptianyuan
  • saptianyuan
  • 2013年11月21日 20:31
  • 1782

SAP各种冲销凭证

SAP各种冲销凭证
  • SAPmatinal
  • SAPmatinal
  • 2016年07月15日 19:23
  • 3626

SAP 销售凭证冲销

SAP 冲销的顺序是逆向的, 有发票凭证的先冲销发票凭证,再冲销外向交货。。。...
  • Kang_xiong
  • Kang_xiong
  • 2017年03月29日 16:55
  • 1416

红​字​和​蓝​字​冲​销(红字冲正、蓝字冲正)

红字冲销法又称红字更正法也称红字调整法,即先用红字编制一套与错账完全相同的记账凭证,予以冲销,然后再用蓝字编制一套正确的会计分录。这种方法适用于会计科目用错或会计科目虽未用错,但实际记账金额大于应记金...
  • dtm19931001
  • dtm19931001
  • 2015年04月08日 09:03
  • 7367

SAP PP 关于MFBF与MF41 重复生产的冲销与反冲销 收货类型为131与132(MSEG-BWART)

关于PP中,重复生产的产成品进行收货的处理。 先用TCODE:MFBF 可以对重复进行生产品的成品进行一个收货处理,个人理解为对生产的一个冲销,生成一个收货类型为131的入库收货单 可用TCODE:M...
  • forever_crazy
  • forever_crazy
  • 2014年03月17日 10:17
  • 4314

Migo收货增强

需求背景:下图中的OK列要根据条件是否打勾,当不符合条件的信息打勾时,提示不能打勾的信息,并清空。...
  • champaignwolf
  • champaignwolf
  • 2015年08月12日 11:14
  • 3441

生成凭证及冲销凭证

现有一个需求,需要同时生成两张不同的凭证,如果其中有一条是错误的,那么其他的已生成凭证,则需冲销,并报错 接口如下: import: BUKRS TYPE BUKRS         ...
  • tsj19881202
  • tsj19881202
  • 2015年10月09日 14:49
  • 1302

关于凭证和冲销凭证的RFC

一、创建凭证 主要是使用BAPI ‘BAPI_ACC_DOCUMENT_POST’创建凭证 由于’BAPI_ACC_DOCUMENT_POST‘对一些字段(如记账码、我们自己增强的现金流量...
  • zhongguomao
  • zhongguomao
  • 2016年11月07日 09:59
  • 479

凭证冲销FB08

SAP系统中,冲销有01 当前期间回转 和 02 关闭期间回转   01 当前期间回转   冲销凭证的过账日期为错误凭证的记账日期 例如 今天5月10日,发现3月28日一张凭证错误,需要冲销,如...
  • zhongguomao
  • zhongguomao
  • 2013年10月12日 13:03
  • 1142

SAP凭证冲销BAPI用法

①BAPI_ACC_DOCUMENT_REV_CHECK会计凭证冲销前检查------------------------------------ REPORT RODERICK. TAB...
  • zhongguomao
  • zhongguomao
  • 2013年01月16日 17:40
  • 1555
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:先进先出的数据冲销处理
举报原因:
原因补充:

(最多只允许输入30个字)