1、传入和传出表结构都是一样的:

FUNCTION zmm_fm_po_invence.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IN_PO_ITEMS) TYPE  ZMM_PO_ITEM OPTIONAL
*"  EXPORTING
*"     VALUE(OUT_PO_ITEMS) TYPE  ZMM_PO_ITEM
*"----------------------------------------------------------------------
  TYPES:BEGIN OF typ_rseg,

belnr  LIKE rseg-belnr,
          gjahr  LIKE rseg-gjahr,
          buzei  LIKE rseg-buzei,
          ebeln  LIKE rseg-ebeln,
          ebelp  LIKE rseg-ebelp,
          wrbtr  LIKE rseg-wrbtr,
          shkzg  LIKE rseg-shkzg,
          mwskz  LIKE rseg-mwskz,

lifnr  LIKE rbkp-lifnr,
          augbl  LIKE bseg-augbl,
          awkey  LIKE bseg-awkey,

status TYPE c, "发票是否已过账
        END OF typ_rseg.

TYPES:BEGIN OF typ_bseg,
          belnr LIKE bseg-belnr,
          gjahr LIKE bseg-gjahr,
          awkey LIKE bseg-awkey,
          augbl LIKE bseg-augbl,
        END OF typ_bseg.
  DATA:gt_rseg TYPE TABLE OF typ_rseg,
       gs_rseg TYPE typ_rseg.
  DATA:gt_bseg TYPE TABLE OF typ_bseg,
       gs_bseg TYPE typ_bseg.

CHECK in_po_items IS NOT INITIAL.

SELECT
    r~belnr
    r~gjahr
    r~buzei
    r~ebeln
    r~ebelp
    r~wrbtr
    r~shkzg
    r~mwskz
    rb~lifnr

INTO CORRESPONDING FIELDS OF TABLE gt_rseg
    FROM rseg AS r
    INNER JOIN rbkp AS rb
    ON r~belnr = rb~belnr AND r~gjahr = rb~gjahr

FOR ALL ENTRIES IN in_po_items
    WHERE r~ebeln = in_po_items-ebeln
    AND   r~ebelp = in_po_items-ebelp
    AND   rb~stblg = ''.

LOOP AT gt_rseg INTO gs_rseg.
    gs_rseg-awkey = gs_rseg-belnr && gs_rseg-gjahr.
    CONDENSE gs_rseg-awkey NO-GAPS.
    MODIFY gt_rseg FROM gs_rseg TRANSPORTING awkey.

ENDLOOP.

SELECT
    belnr
    gjahr
    awkey
    augbl

INTO CORRESPONDING FIELDS OF TABLE gt_bseg
    FROM bseg AS b
    FOR ALL ENTRIES IN gt_rseg
    WHERE b~awkey = gt_rseg-awkey
     AND  b~koart = 'K'.
  SORT gt_bseg BY awkey.
  SORT gt_rseg BY awkey.

LOOP AT gt_rseg INTO gs_rseg.
    CLEAR gs_bseg.
    READ TABLE gt_bseg INTO gs_bseg WITH KEY awkey = gs_rseg-awkey.
    IF sy-subrc EQ 0.
      gs_rseg-augbl = gs_bseg-augbl.
      gs_rseg-status = 'X'."标识预制发票是否过账
    ENDIF.
    IF gs_rseg-shkzg EQ 'H'.
      gs_rseg-wrbtr = gs_rseg-wrbtr * -1.
    ENDIF.
    IF gs_rseg-augbl IS NOT INITIAL.
      gs_rseg-augbl = 'X'.
    ENDIF.
    MODIFY  gt_rseg FROM gs_rseg.
  ENDLOOP.

DATA:wa_po TYPE zmm_po_item_line.
  DATA:it_po_hash TYPE HASHED TABLE OF zmm_po_item_line
                              WITH UNIQUE KEY ebeln ebelp lifnr.
  DATA:t_t007s LIKE TABLE OF t007s WITH HEADER LINE.
  DATA:l_str1(2)  TYPE c,
       l_str2(48) TYPE c.
  DATA:shuilv TYPE int4.

LOOP AT gt_rseg INTO gs_rseg ."取出已开票过账的来统计总欠款和已清额
    wa_po-ebeln = gs_rseg-ebeln.
    wa_po-ebelp = gs_rseg-ebelp.
    wa_po-lifnr = gs_rseg-lifnr.

CLEAR:t_t007s,t_t007s[].
    CLEAR:l_str1,l_str2.
    SELECT SINGLE *
      INTO t_t007s
      FROM t007s
      WHERE spras = 1
      AND kalsm = 'TAXCN'
      AND mwskz = gs_rseg-mwskz.
    SPLIT t_t007s-text1 AT '%' INTO l_str1 l_str2.
    shuilv = l_str1.
    gs_rseg-wrbtr = gs_rseg-wrbtr * ( 100 + shuilv ) / 100 .

wa_po-fp_sum = gs_rseg-wrbtr.

IF gs_rseg-augbl EQ 'X'.
      wa_po-fp_yq = gs_rseg-wrbtr.
    ENDIF.

COLLECT wa_po INTO it_po_hash.
    CLEAR wa_po.
  ENDLOOP.

CLEAR in_po_items.
  out_po_items = it_po_hash[] .

ENDFUNCTION.

ABAP-根据采购订单行项目统计供应商未清额和已清额的更多相关文章

  1. ABAP 查看采购订单行项目已开票金额和已清金额

    FUNCTION zmm_fm_po_invence. *"----------------------------------------------------------------- ...

  2. ME_PROCESS_PO_CUST 实现采购订单行项目增强

    用户希望创建采购订单时,输入行项目时,能根据采购订单类型,自动带出科目分类类别. 业务顾问看了一下配置,不能实现这个功能,所以用增强实现. 采购订单BADI增强:ME_PROCESS_PO_CUST. ...

  3. ABAP-复制采购订单行项目到新的行

    FUNCTION zmm_fm_copy2new. *"------------------------------------------------------------------- ...

  4. SAP 采购订单行项目中科目分配被隐藏,发现行项目设置中显示字段长度为0

    1.sm30 维护 视图 TCVIEW 修改对应字段的显示长度

  5. 如何用代码填充S/4HANA销售订单行项目的数量字段

    我的任务是用代码生成S/4HANA销售订单(Sales Order)的行项目,并且填充对应的quantity(数量)值. 最开始我用了下面的代码,把quantity的值写入item字段target_q ...

  6. C4C销售订单行项目价格维护方法

    需求很简单,能够创建销售订单,在行项目里添加产品,带出价格来,同时把总价显示在销售订单抬头区域. 如下图所示: 下面是具体配置. Business Configuration里,点击Sales Ord ...

  7. Oracle EBS-SQL (PO-16):检查采购订单完成情况统计.sql

    select         e.FULL_NAME                                                     采购员,         sum(plla ...

  8. 详解EBS接口开发之采购订单导入

    采购订单常用标准表简介 1.1   常用标准表 如下表中列出了与采购订单导入相关的表和说明: 表名 说明 其他信息 po.po_headers_all 采购订单头 采购订单号,采购类型,供应商,地点, ...

  9. 【MM系列】SAP 采购订单的批量修改

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单的批量修改   前言 ...

随机推荐

  1. Disruptor 详解 二

    Disruptor 的大名从很久以前就听说了,但是一直没有时间:看完以后才发现其内部的思想异常清晰,很容易就能前移到其他的项目,所以仔细了解一下还是很有必要的这.篇博客将主要从源码角度分析,Disru ...

  2. Java编程思想:简单的泛型

    import java.util.ArrayList; import java.util.Random; public class Test { public static void main(Str ...

  3. [原创]Rsync搭建和使用

    rsync服务的搭建和使用 ***下载安装: #wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz #tar -zxvf ...

  4. python 3.5学习笔记(第五章)

    本章内容 1.什么是模块 2.模块的导入方法 3.搜索路径 4.重要标准库 一.什么是模块 1.模块本质上是一个以.py 结尾的python文件,包含了python对象定义和python语句. 2.模 ...

  5. backbone之路由锚点的替换

    1.需求 由于项目一开始做的时候不甚完善,所有的网页没有路由功能,导致一些搜索结果在页面跳转之后,没有被记录下来,在页面跳转之后回退,得到的是页面最原始的结果,没有指定的搜索条件.最近项目的在完善这些 ...

  6. rest-frameword框架的基本组件

    序列化 1.models部分 from django.db import models # Create your models here. class Book(models.Model): tit ...

  7. 第一篇:开始进入 django 之旅

    文中所有示例代码的仓库地址:https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial 开发环境说明 本教程写作时开发环境的系统平台为 ...

  8. Python_我的学习笔记 (博客停更------)

    贡献一张PyCharm快捷键图(图片是借用他人的)----------建议最大化查看,因为这样不会破坏布局 注:部分内容引用小甲鱼,其他等网页,网站内容.如有冒犯,请联系我. 2019.07.21  ...

  9. 50 行 Python 代码,带你追到女神

    今天来给大家分享一个撩妹技巧,利用 python 每天给你最心爱的人,发送微信消息,说声晚安. 废话不多说,源代码奉上 def get_news(): ... url = "http://o ...

  10. python检测是否是质数

    python检测是否是质数 编写python脚本,使得实现以下功能: 输入一个整数,通过脚本判断出输入的这个数是否是质数,然后输出是否是质数. 脚本如下图所示: Num = input("P ...