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. springcloud-eureka客户端服务注册(含demo源码)

    1. 场景描述 前几天介绍了下springcloud的Eureka注册中心(springcloud-注册中心快速构建),今天结合springboot-web介绍下eureka客户端服务注册. 2. 解 ...

  2. C语言中的函数与数学上的函数很类似

    函数,是C语言编程中一个很重要的概念,重要到个人认为可以与指针并驾齐驱.好多教材.老师.学习资源都会专门挑出一章来讲函数.我今天也来说说函数,只不过我是从数学课上的函数来引申到C语言中的函数. 先来说 ...

  3. Cookie起源与发展

    上一篇我们在讲优酷弹幕爬虫的时候,引入了一个新的知识点:Cookie,由于篇幅有限当时只是简单的给大家介绍了一下它的作用,今天我们就来全面了解一下Cookie(小饼干)以及相关的知识! 相信很多同学肯 ...

  4. 20141126-DotNetStack

  5. MyBatis从入门到精通:第一章配置MyBatis

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...

  6. 整型,布尔值,字符串详解,for语句

    整型 -- 数字 用于比较和计算 + - * / // python 2 int --- long (长整型) /获取的是整数 Python3 int---整型 / 获取的浮点数 二进制 --- 就是 ...

  7. [二次编码,数据类型补充以及各种坑]https://i.cnblogs.com/EditPosts.aspx?postid=11184330

    数据类型补充 str:不可变数据类型 1.capitalize首字母大写 name="song" n=name.capitalize() print(n) Song 2.title ...

  8. 苹果IOS内购二次验证返回state为21002的坑

    项目是三四年前的老项目,之前有IOS内购二次验证的接口,貌似很久都没用了,然而最近IOS的妹子说接口用不了,让我看看啥问题.接口流程时很简单的,就是前端IOS在购买成功之后,接收到receipt后进行 ...

  9. Excel催化剂开源第43波-Excel选择对象Selection在.Net开发中的使用

    Excel的二次开发有一极大的优势所在,可以结合用户的交互进行程序的运行,大量用户的交互,都是从选择对象开始,用户选择了单元格区域.图形.图表等对象,之后再进行程序代码的加工处理,生成用户所需的最终结 ...

  10. .NET Core 3.0之深入源码理解HttpClientFactory(一)

    写在前面 创建HttpClient实例的时候,在内部会创建HttpMessageHandler链,我们知道HttpMessageHandler是负责建立连接的抽象处理程序,所以HttpClient的维 ...