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.

最新文章

  1. qt 设置等待事件
  2. golang flag包
  3. iOS中的预编译指令的初步探究
  4. Divide Two Integers leetcode
  5. SQL - 生成指定范围内的随机数
  6. 对socket的一点理解笔记
  7. 关于header跳转之后的乱码问题
  8. 实现Action类
  9. opencv249配置
  10. void指针
  11. Spark Streaming连接TCP Socket
  12. Qt 代码: 子窗口调用父窗口(其实就是用指针直接访问)
  13. freemarker错误七
  14. 主机windwo7+虚拟机centos如何配置虚拟机可以上网,且与主机互ping通
  15. VS2013装扩展RazorGenerator
  16. vue-cli工具搭建vue-webpack项目
  17. linux下关闭网络命令
  18. 2018-2019-2 20165239 《网络对抗技术》Kali的安装 第一周
  19. Spark访问与HBase关联的Hive表
  20. 前端框架(kraken、Express、Node、MVC)

热门文章

  1. 虚拟机linux下git clone 报SSL connect error错误
  2. 查询亿级数据毫秒级返回!Elasticsearch 是如何做到的?
  3. Centos7 下nginx 搭建文件图片服务器
  4. [leetcode] 80. Remove Duplicates from Sorted Array II (Medium)
  5. vue 的基本语法和常用指令
  6. hdu6396 Swordsman(贪心)
  7. java练习---2
  8. 手动创建MySQL服务
  9. Java常用命令及参数
  10. 从零开发一款自己的小程序UI组件库(一)