ap_invoice_distributions_all与PO表关联问题

本文解释了发票在匹配过程中rcv_transaciton_id字段为何有时为空,有时有值的现象,并给出了一个查询发票、接收和采购订单信息的SQL示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ap_invoice_distributions_all中有时rcv_transaciton_id为空,有时却又是有值的, 这是为什么呢?(请参考po_line_locations_all.match_option)
 
 
或许你还记得我们在发票工作台上选择匹配时,有时是Match PO,有时却是Match Receipt,其实这就是原因所在, 当然影响这个匹配项的根本还是PO的shipment上的一个开关:是Receipt,还是Purchase Order,如果这里是Receipt,在匹配PO时,只能选择Receipt(匹配成功保存后rcv_transaciton_id是有值),反之在匹配值只能选择Purchase Order(匹配成功保存后rcv_transaciton_id是没有值)
 
其实在这个ap_invoice_distributions_all还有个po_distribution_id字段,不管rcv_transaciton_id是否为空,只要是和PO建立关系的,po_distribution_id字段总归是有值的.
 
 
现有这样的需求:查询----发票号码,接收号码,采购订单号码
(我总是会使用po_distribution_id作为条件,而不要使用rcv_transaciton_id)
----------------------------------------
select ai.invoice_num,
       rsh.receipt_num,
       ph.segment1,
       aid.distribution_line_number,
       aid.rcv_transaction_id,
       aid.po_distribution_id
  from ap_invoices_all              ai,
       ap_invoice_distributions_all aid,
       po_distributions_all         pd,
       rcv_transactions             rt,
       rcv_shipment_lines           rsl,
       rcv_shipment_headers         rsh,
       po_headers_all               ph
 where ai.invoice_id = aid.invoice_id
   and aid.set_of_books_id = '&sob'
   and aid.period_name = '&period_name'
   and aid.po_distribution_id = pd.po_distribution_id
   and pd.po_distribution_id = rt.po_distribution_id
   and rt.po_distribution_id = rsl.po_distribution_id
   and rsl.shipment_line_id = rt.shipment_line_id
   and rsh.shipment_header_id = rsl.shipment_header_id
   and rt.destination_type_code = 'RECEIVING'
   and rt.po_header_id = ph.po_header_id
 order by 1,
          2


SAP中的RV_INVOICE_CREATE和GN_INVOICE_CREATE都是用于创建发票的函数模块,但是它们针对的业务场景和使用方式略有不同。 RV_INVOICE_CREATE是用于创建标准的应付/应收发票的函数模块,支持多种发票类型和付款条件,并且可以从已有的销售订单或交货单中自动生成发票。RV_INVOICE_CREATE还可以其他SAP模块集成,如物流、会计等,实现全面的财务管理功能。以下是一个简单的RV_INVOICE_CREATE调用示例: ``` DATA: wa_invoice_header TYPE bapiinvhd, wa_invoice_item TYPE bapiinvitm. * 填写发票头信息 wa_invoice_header-invoicetype = 'RE'. wa_invoice_header-companycode = '1000'. wa_invoice_header-documentdate = sy-datum. * 填写发票行项目信息 wa_invoice_item-material = 'M-1001'. wa_invoice_item-quantity = 100. wa_invoice_item-netvalue = 1000. * 调用RV_INVOICE_CREATE创建发票 CALL FUNCTION 'RV_INVOICE_CREATE' EXPORTING invoicedata = wa_invoice_header TABLES invoicelines = wa_invoice_item. ``` GN_INVOICE_CREATE则是针对公共事业(如水、电、气等)的发票管理需求而开发的函数模块。GN_INVOICE_CREATE支持按照不同的费率和计费周期生成发票,并且可以自动计算滞纳金和优惠等费用。以下是一个简单的GN_INVOICE_CREATE调用示例: ``` DATA: wa_invoice_header TYPE gnhead, wa_invoice_item TYPE gnitem. * 填写发票头信息 wa_invoice_header-bukrs = '1000'. wa_invoice_header-periodfrom = '20210101'. wa_invoice_header-periodto = '20210131'. * 填写发票行项目信息 wa_invoice_item-gnpart = 'ELECTRICITY'. wa_invoice_item-quantity = 100. wa_invoice_item-unitprice = 1. * 调用GN_INVOICE_CREATE创建发票 CALL FUNCTION 'GN_INVOICE_CREATE' EXPORTING gnhead = wa_invoice_header TABLES gnitem = wa_invoice_item. ``` 总的来说,RV_INVOICE_CREATE和GN_INVOICE_CREATE都是用于创建发票的函数模块,但是它们的使用场景和功能略有不同,需要根据具体业务需求选择合适的函数模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值