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. 多线程总结-同步之ReentrantLock

    目录 1 ReentrantLock与synchronized对比 2.示例用法 2.1 基本用法 2.2 尝试锁 2.3 可打断 2.4 公平锁 1 ReentrantLock与synchroniz ...

  2. 【POJ - 1573】Robot Motion

    -->Robot Motion 直接中文 Descriptions: 样例1 样例2 有一个N*M的区域,机器人从第一行的第几列进入,该区域全部由'N' , 'S' , 'W' , 'E' ,走 ...

  3. CSS Grid网格布局全攻略

    CSS Grid网格布局全攻略 所有奇技淫巧都只在方寸之间. 几乎从我们踏入前端开发这个领域开始,就不停地接触不同的布局技术.从常见的浮动到表格布局,再到如今大行其道的flex布局,css布局技术一直 ...

  4. Jquery serialize()提交多个表单数据

    ajax提交多个表单数据: 先把不同的表单分别用serialize()函数,然后把序列化后的数据用+拼接提交给后台,具体例子如下 var data1 = $('#form1).serialize(); ...

  5. JavaScript控制语句结构、函数部分

    HTML页面代码: <html> <head> <meta charset="UTF-8"> <title>HelloWorld&l ...

  6. py+selenium 报错NameError: name 'NoSuchElementException' is not defined【已解决】

     报错:NameError: name 'NoSuchElementException' is not defined  如图 解决方法: 头部加一句:from selenium.common.exc ...

  7. rabbitmq升级新版本后,需要新建用户。新版本默认禁止别的机器用guest用户访问。

    rabbitmq升级新版本后,需要新建用户.新版本默认禁止别的机器用guest用户访问.

  8. [OpenGL] 绘制并且判断凹凸多边形、自相交多边形。

    #include <iostream> #include <ctime> #include <GL/glut.h> #include <math.h> ...

  9. .net持续集成sonarqube篇之sonarqube基本操作(一)

    系列目录 Sonarqube Web管理界面虽然设计的简洁大方,也非常直观,但是由于功能繁多,这对快速入手以及快速定位到想要的功能都是一个挑战,在以后的几个小节里我们简要介绍. OwerView(概览 ...

  10. Python小故事--------Tkinter的组件描述及解析

    概念 Tkinter: 是Tk图形用户界面工具包标准(ctl)的Python接口,作为一个轻量级的跨平台图形用户界面(GUI)开发工具 frame: 屏幕上的一块矩形区域,多是用来作为容器(conta ...