查询PO的预付款剩余金额

FUNCTION zrfc_mm016.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(CALLNO) TYPE  ZCALLNO
*"     VALUE(BUKRS) LIKE  BSIK-BUKRS
*"     VALUE(GJAHR) LIKE  BSIK-GJAHR
*"  EXPORTING
*"     VALUE(FLAG) LIKE  BAPIRET2-TYPE
*"     VALUE(MESSAGE) LIKE  BAPIRET2-MESSAGE
*"  TABLES
*"      ZRS_EBELN STRUCTURE  ZRS_EBELN OPTIONAL
*"      ZRS_LIFNR STRUCTURE  ZRS_LIFNR OPTIONAL
*"      ZYFYE STRUCTURE  ZYFYE OPTIONAL
*"----------------------------------------------------------------------

TYPES:BEGIN OF ty_regup,
  lifnr   TYPE    regup-lifnr,   "供应商
  bukrs   TYPE    regup-bukrs,   "公司代码
  gjahr   TYPE    regup-gjahr,   "年度
  blart   TYPE    regup-blart,   "凭证类型
  xref3   TYPE    regup-xref3,   "参考码3
  dmbtr   TYPE    regup-dmbtr,   "金额
  wmwst   TYPE    regup-wmwst,   "税额
  zzbelnr TYPE    regup-zzbelnr, "付款成功标识
  END OF ty_regup.

DATA:lt_regup    TYPE TABLE OF ty_regup,
     lt_regup_y  TYPE TABLE OF ty_regup,
     lt_regup1   TYPE TABLE OF ty_regup,
     lt_regup_y1 TYPE TABLE OF ty_regup,
     ls_regup    TYPE ty_regup,
     ls_regup_y  TYPE ty_regup,
     l_syed      TYPE regup-dmbtr. "剩余额度

DATA:dmbtr(18),
     lv_datano TYPE i.

SELECT lifnr bukrs gjahr blart xref3 dmbtr wmwst zzbelnr
  INTO TABLE lt_regup
  FROM regup
  WHERE xvorl = ‘X‘
   AND  zbukr = bukrs
   AND  lifnr IN zrs_lifnr
   AND  bukrs = bukrs
   AND  gjahr = gjahr
   AND  xref3 IN zrs_ebeln.

DELETE lt_regup WHERE zzbelnr = ‘‘. "删除支付不成功的凭证

SORT lt_regup BY lifnr bukrs blart xref3.
lt_regup_y  =  lt_regup.
DELETE lt_regup   WHERE blart = ‘KA‘.  "应付款额度
DELETE lt_regup_y WHERE blart NE ‘KA‘. "预付款额度

*--汇总应付金额
LOOP AT lt_regup INTO ls_regup.
CLEAR:ls_regup-blart,ls_regup-zzbelnr.
COLLECT ls_regup INTO lt_regup1.
ENDLOOP.

*--汇总预付金额
LOOP AT lt_regup_y INTO ls_regup_y.
CLEAR:ls_regup_y-blart,ls_regup_y-zzbelnr.
COLLECT ls_regup_y INTO lt_regup_y1.
ENDLOOP.

LOOP AT lt_regup_y1 INTO ls_regup_y.
zyfye-bukrs = ls_regup_y-bukrs.  "公司
zyfye-gjahr = ls_regup_y-gjahr.  "年度
zyfye-lifnr = ls_regup_y-lifnr.  "供应商
zyfye-ebeln = ls_regup_y-xref3.  "PO号(参考码3)

*--预付额度 = 预付额度 + 预付税额
l_syed = ls_regup_y-dmbtr + ls_regup_y-wmwst.

READ TABLE lt_regup1 INTO ls_regup WITH KEY xref3  = ls_regup_y-xref3.

*--剩余额度 = 预付额度 - 应付额度

zyfye-dmbtr  = l_syed - ls_regup-dmbtr.

APPEND zyfye.
CLEAR:l_syed,ls_regup,ls_regup_y,zyfye.
ENDLOOP.

IF zyfye[] IS NOT INITIAL.
   flag = ‘S‘.
ELSE.
   flag = ‘E‘.
   message = ‘没有数据‘.
ENDIF.
*---记录日志
 CLEAR:gt_log,gs_log.
  LOOP AT zyfye.
    dmbtr = zyfye-dmbtr.
    lv_datano     = lv_datano + 1.
    gs_log-name   = ‘ZRFC_MM016‘.
    gs_log-cdate  = sy-datum.
    GET TIME.
    gs_log-ctime  = sy-uzeit.
    gs_log-callno = callno.
    gs_log-datano = lv_datano.
    gs_log-flag   = flag.
    gs_log-log    = message.
    CONCATENATE zrs_ebeln-sign  zrs_ebeln-option  zrs_ebeln-low  zrs_ebeln-high
                zrs_lifnr-sign  zrs_lifnr-option  zrs_lifnr-low  zrs_lifnr-high
                zyfye-bukrs     zyfye-gjahr       zyfye-lifnr    zyfye-ebeln
                dmbtr
    INTO gs_log-content SEPARATED BY ‘|‘.
    CONDENSE gs_log-content NO-GAPS.
    gs_log-length = STRLEN( gs_log-content ).
    APPEND gs_log TO gt_log.
  ENDLOOP.
  IF gt_log IS NOT INITIAL.
    INSERT zrfc_mm01out_log FROM TABLE gt_log.
    IF sy-subrc = 0.
      COMMIT WORK.
    ENDIF.
  ENDIF.

ENDFUNCTION.
时间: 2024-10-04 13:30:40

查询PO的预付款剩余金额的相关文章

Sqlserver查询数据库文件大小和剩余空间

在MS Sql Server中可以能过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率: 1.查询各个磁盘分区的剩余空间:Exec master.dbo.xp_fixeddrives 2.查询数据库的数据文件及日志文件的相关信息(包括文件组.当前文件大小.文件最大值.文件增长设置.文件逻辑名.文件路径等)select * from [数据库名].[dbo].[sysfiles]转换文件大小单位为MB:select name, convert(float,size)

与机房收费系统重相见

第一次与机房收费系统相见,大概还是在去年的8,9月份.这次与之重相见,光阴已近一载.去年与它的相见可能要用"鲁莽"."冒失"来形容.不知道这次的再聚首,它是否能感觉到我的真心诚意. 说自己真心诚意还是有原因的.就像朋友之间相处,有的朋友非常贴心.这种朋友非常了解你,对你非常用心.对于机房收费系统,我能不能算是它的一个贴心的朋友呢?--我想,如今,我仅仅能说我在努力地去了解它,理解它. 我对它的认识出现了下面问题: 搞不清楚它的"成分" 在文化大革

传递数据到后台的几种方式

0 cell-data-list.jsp <form action="cell-data-list.jhtml?functionId=1093" theme="simple" method="post" target="_self" name="searchform" id="searchform"> <div class="s_top_opt"&g

摘抄:java查询数据导出excel并返回给浏览器下载

maven地址为: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> 好了,废话不多少,上代码 jsp前端代码(根据自己的业务来) <span style="font-size:18px;">

微信红包金额分配的算法 http://timyang.net/architecture/wechat-red-packet/

虽然春节已经过去一段时间,但不少微信群里面依旧乐此不疲的在玩发红包活动,用户自发的将最初的一个春节拜年的场景功能慢慢演化成一个长尾功能. 用户在微信中抢红包时分成抢包和拆包两个操作.抢包决定红包是否还有剩余金额,但如果行动不够迅速,在拆包阶段可能红包已经被其他用户抢走的情况. 红包的金额是在什么时候算? 据某架构群腾讯财付通专家反馈,红包的金额是拆的时候实时计算,而不是预先分配,实时计算基于内存,不需要额外存储空间,并且实时计算效率也很高.每次拆红包时,系统取0.01到剩余平均值*2之间作为红包

SQL分页查询的几种方式

需求:查询表dbo.Message,每页10条,查询第2页 1:TOP() SELECT TOP(20) * FROM dbo.Message WHERE Code NOT IN (SELECT TOP(10) Code FROM dbo.Message) 2:BETWEEN *  AND *  ,  Row_Number() OVER(ORDER BY *) AS rowNum SELECT *,ROW_NUMBER() OVER(ORDER BY Code) AS rowNum INTO #

博客随笔第二天(多表查询)

sql多表查询 -1.查找员工的编号.姓名.部门和出生日期,如果出生日期为空值, --显示日期不详,并按部门排序输出,日期格式为yyyy-mm-dd. select emp_no ,emp_name ,dept , isnull(convert(char(10),birthday,120),'日期不详') birthday from employee order by dept --2.查找与喻自强在同一个单位的员工姓名.性别.部门和职称 select emp_no,emp_name,dept,

采购预付款

处理方式1: 直接在   供应商付款 中增加一个一次付款(纯粹预付,不和其他应付关联,需要删除所有debit 和 credit明细内容.),并登账, 使改供应商付应付款为负数. 然后后续的订单付款中,自动核销应付款项内容. 优点:付款时,可以自动冲减预付款,适合常用物料的采购. 问题:每次的预付款和采购订单不能一对一对应. 处理方式2: 采购订单的开票方式,选择手动开票. 付款方式,根据订单的需要, 分成多次付款,其中一笔为预付款的金额,或者比例. 问题:每个预付款项,可以单据处理,适合固定资产

个人小程序实现自然语言对话工程查询--快递,身份证,词典,天气等功能完整代码解析

这个小程序旨在通过自然语言对话查询快递.身份证.天气.诗歌.词典等等的功能. 自然语言对话,即使用中文语言直接对程序下命令,比如:‘查一下天气’,“帮我查一下123456这个运单号吧”,“我想听李白的静夜思”等等. 如果还是不明白,请阅读博客 https://i.cnblogs.com/EditPosts.aspx?postid=7203097&update=1 的前言部分. 1. 小程序功能介绍 如果希望直接体验小程序,请直接扫描下面的二维码,这样更直观. 但是发布的小程序里没有身份证查询,因