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


    FUNCTION zmm_fm_po_invence.
    *"----------------------------------------------------------------------
    *"*"本地接口:
    *"  TABLES
    *"      IT_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 it_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 it_po_items
        WHERE r~ebeln = it_po_items-ebeln
        AND   r~ebelp = it_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.

      LOOP AT gt_rseg INTO gs_rseg  WHERE status EQ 'X'."取出已开票过账的来统计总欠款和已清额
        wa_po-ebeln = gs_rseg-ebeln.
        wa_po-ebelp = gs_rseg-ebelp.
        wa_po-lifnr = gs_rseg-lifnr.
        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 it_po_items.
      it_po_items[] = it_po_hash[] .




    ENDFUNCTION.

  • 相关阅读:
    API `requireNativePlugin` is not yet implemented
    undefined报错问题
    多线程的libcurl的使用
    RabbitMQ初识及简单实践
    献芹奏曝Python面试题算法数组篇
    饮冰三年人工智能Django淘宝拾遗75数据准备
    献芹奏曝Python面试题算法动态规划篇
    目录遍历学习
    单例模式在创建数据库连接中的运用
    Case When Then判断
  • 原文地址:https://www.cnblogs.com/eagle-dtq/p/11242943.html
Copyright © 2020-2023  润新知