⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zfir0004.html

📁 SAP财务:合同收款发票完成情况 (ABAP) 大家请参考指点
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>ZFIR0004</title>
</head>
<body bgcolor="#FFFFE0">
<font size="3" face = "Arial" color="#000000"><b>Code listing for: ZFIR0004</b></font>
<br>
<font size="3" face = "Arial" color="#000000"><b>Description:  合同收款发票完成情况</b></font>
<hr>
<pre width="100">
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
<font color ="#0000FF">*& Report  ZFIR0004</font>
<font color ="#0000FF">*&</font>
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
<font color ="#0000FF">*&</font>
<font color ="#0000FF">*&</font>
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
REPORT  ZFIR0004.
TABLES: BSID,BSAD,VBAK,VBRK,VBRP,KONV,KNA1,LIKP,VBUK,VBFA,M_VMVAA.
DATA: BEGIN OF ITAB OCCURS 0,
        BUKRS  LIKE BSID-BUKRS,"公司代码
        KUNNR  LIKE BSID-KUNNR,"客户代码
        BELNR  LIKE BSID-BELNR,"会计凭证号
        BUDAT  LIKE BSID-BUDAT,"记帐日期
        BSTKD  LIKE VBKD-BSTKD,"采购合同编号
        DMBTR  LIKE BSID-DMBTR,"金额
        FP_VBELN LIKE BSID-VBELN,"发票编号
        DD_VBELN LIKE VBAK-VBELN,"销售订单号
        DD_POSNR LIKE VBAP-POSNR,"销售订单行项目
        DD_DMBTR LIKE BSID-DMBTR,"订单金额
        FP_DMBTR LIKE BSID-DMBTR,"发票金额
        GS_DMBTR LIKE BSID-DMBTR,"公司间发票金额
        SK_DMBTR LIKE BSID-DMBTR,"收款
        GSSK_DMBTR LIKE BSID-DMBTR,"公司收款
        DYSK_DMBTR LIKE BSID-DMBTR,"当月收款
        GSDYSK_DMBTR LIKE BSID-DMBTR,"公司当月收款
        YS_DMBTR LIKE BSID-DMBTR,"应收
        GSYS_DMBTR LIKE BSID-DMBTR,"公司间应收
        US_DMBTR LIKE BSID-DMBTR,"预收
        GSUS_DMBTR LIKE BSID-DMBTR,"公司间预收
        HKL LIKE BSID-DMBTR,"回款率
        WG_FLAG(1) TYPE C,
        UMSKZ LIKE BSID-UMSKZ,"特别总帐标志
        SHKZG LIKE BSID-SHKZG,"借贷标志
        BLART LIKE BSID-BLART,"凭证类型
        VBTYP_V LIKE VBFA-VBTYP_V,"先前的凭证类别
        ZTERM LIKE BSID-ZTERM,"付款条款
        AUGDT LIKE BSAD-AUGDT,"清帐日期
        HKONT  LIKE BSID-HKONT,"总帐科目
      END OF ITAB.
DATA: BEGIN OF ITAC OCCURS 0,
<font color ="#0000FF">*       BUKRS  LIKE BSID-BUKRS,"公司代码</font>
<font color ="#0000FF">*       KUNNR  LIKE BSID-KUNNR,"客户代码</font>
        BSTKD  LIKE VBKD-BSTKD,"采购合同编号
        DD_DMBTR LIKE BSID-DMBTR,"订单金额
        FP_DMBTR LIKE BSID-DMBTR,"客户发票金额
        GS_DMBTR LIKE BSID-DMBTR,"公司间发票金额
        SK_DMBTR LIKE BSID-DMBTR,"收款
        GSSK_DMBTR LIKE BSID-DMBTR,"公司收款
        DYSK_DMBTR LIKE BSID-DMBTR,"当月收款
        GSDYSK_DMBTR LIKE BSID-DMBTR,"公司当月收款
        YS_DMBTR LIKE BSID-DMBTR,"应收
        GSYS_DMBTR LIKE BSID-DMBTR,"公司间应收
        US_DMBTR LIKE BSID-DMBTR,"预收
        GSUS_DMBTR LIKE BSID-DMBTR,"公司间预收
        HKL(5) TYPE P DECIMALS 2,"回款率
        ZTERM LIKE VBKD-ZTERM,
        VTEXT LIKE TVZBT-VTEXT,
        FLAG(1) TYPE C,"交货标识
      END OF ITAC .
DATA: BEGIN OF ITAD OCCURS 0,
        VKORG LIKE VBAK-VKORG,
        BSTKD  LIKE VBKD-BSTKD,"采购合同编号
        AUART LIKE VBAK-AUART,"销售订单类型
        AUDAT LIKE VBAK-AUDAT,"销售订单创建日期
        VBELN LIKE VBAK-VBELN,"销售订单号
        POSNR LIKE VBAP-POSNR,"销售订单行项目
      END OF ITAD.
DATA: BEGIN OF ITAE OCCURS 0,
        BSTKD  LIKE VBKD-BSTKD,"采购合同编号
        AUART LIKE VBAK-AUART,"销售订单类型
        AUDAT LIKE VBAK-AUDAT,"销售订单创建日期
        VBELN LIKE VBAK-VBELN,"销售订单号
        POSNR LIKE VBAP-POSNR,"销售订单行项目
      END OF ITAE.
DATA: BEGIN OF IT_TVKO OCCURS 2,    "公司代码下所有的销售组织
      VKORG_P LIKE TVKO-VKORG,
      END OF IT_TVKO.
DATA: WA_NETWR LIKE VBRK-NETWR.
DATA: WA_MWSBK LIKE VBRK-MWSBK.
DATA: WA_VBTYP LIKE VBRK-VBTYP.
DATA: WA_KZWI1 LIKE VBAP-KZWI1.
DATA: WA_FKSAK LIKE VBUK-FKSAK.
DATA: WA_JS(10) TYPE P DECIMALS 0.
TYPE-POOLS SLIS.
DATA    GS_LAYOUT       TYPE SLIS_LAYOUT_ALV.
DATA    G_STATUS        TYPE SLIS_FORMNAME VALUE 'STANDARD'.
DATA: MYREPID LIKE SY-REPID.
DATA: ALLFIELDS TYPE SLIS_T_FIELDCAT_ALV.
DATA: WA_ALLFIELDS TYPE LINE OF SLIS_T_FIELDCAT_ALV.
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: BUKRS FOR BSID-BUKRS OBLIGATORY,
                GJAHR FOR BSID-GJAHR OBLIGATORY,
                KUNNR FOR BSID-KUNNR,
                ZUONR FOR VBAK-BSTNK.
PARAMETERS: BUDAT LIKE BSID-BUDAT DEFAULT SY-DATUM OBLIGATORY.
SELECTION-SCREEN END OF BLOCK BLOCK1.

START-OF-SELECTION.
  PERFORM GET_DATA.
  PERFORM DISPLAY.

END-OF-SELECTION.
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
<font color ="#0000FF">*&      Form  GET_DATA</font>
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
<font color ="#0000FF">*       text</font>
<font color ="#0000FF">*----------------------------------------------------------------------*</font>
<font color ="#0000FF">*  --&gt;  p1        text</font>
<font color ="#0000FF">*  &lt;--  p2        text</font>
<font color ="#0000FF">*----------------------------------------------------------------------*</font>
FORM GET_DATA .
  LOOP AT ZUONR.
    TRANSLATE ZUONR-LOW TO UPPER CASE.
    TRANSLATE ZUONR-HIGH TO UPPER CASE.
    MODIFY ZUONR.
  ENDLOOP.
  SELECT BUKRS KUNNR BELNR BUDAT ZUONR DMBTR XBLNR UMSKZ SHKZG BLART HKONT
            INTO (ITAB-BUKRS, ITAB-KUNNR, ITAB-BELNR, ITAB-BUDAT, ITAB-BSTKD,
                  ITAB-DMBTR, ITAB-FP_VBELN, ITAB-UMSKZ, ITAB-SHKZG, ITAB-BLART, ITAB-HKONT)
            FROM BSID
            WHERE BUKRS IN BUKRS
              AND KUNNR IN KUNNR
              AND GJAHR IN GJAHR
              AND ZUONR IN ZUONR
              AND BUDAT &lt;= BUDAT.
    ITAB-WG_FLAG = '1'.
    APPEND ITAB.
    CLEAR ITAB.
  ENDSELECT.
  SELECT BUKRS KUNNR BELNR BUDAT ZUONR DMBTR XBLNR UMSKZ SHKZG BLART AUGDT HKONT
            INTO (ITAB-BUKRS, ITAB-KUNNR, ITAB-BELNR, ITAB-BUDAT, ITAB-BSTKD,
                  ITAB-DMBTR, ITAB-FP_VBELN, ITAB-UMSKZ, ITAB-SHKZG, ITAB-BLART, ITAB-AUGDT, ITAB-HKONT)
            FROM BSAD
            WHERE BUKRS IN BUKRS
              AND KUNNR IN KUNNR
              AND GJAHR IN GJAHR
              AND ZUONR IN ZUONR
              AND BUDAT &lt;= BUDAT.
    APPEND ITAB.
    CLEAR ITAB.
  ENDSELECT.
  LOOP AT ITAB.
    IF ITAB-WG_FLAG = '1' AND ( ITAB-BLART = 'DA' OR ITAB-BLART = 'DZ' ).
      IF ITAB-UMSKZ = 'A' OR ITAB-UMSKZ = 'S' OR ITAB-UMSKZ = 'W'.
        IF ITAB-SHKZG = 'H' .
           IF ITAB-HKONT = '0022030201'.
              ITAB-GSSK_DMBTR = ITAB-GSSK_DMBTR + ITAB-DMBTR.
              ITAB-GSUS_DMBTR = ITAB-GSUS_DMBTR + ITAB-DMBTR.
              ITAB-GSYS_DMBTR = ITAB-GSYS_DMBTR - ITAB-DMBTR.
              IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                 ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR + ITAB-DMBTR.
              ENDIF.
           ELSE.
              ITAB-SK_DMBTR = ITAB-SK_DMBTR + ITAB-DMBTR.
              ITAB-US_DMBTR = ITAB-US_DMBTR + ITAB-DMBTR.
              ITAB-YS_DMBTR = ITAB-YS_DMBTR - ITAB-DMBTR.
              IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                 ITAB-DYSK_DMBTR = ITAB-DYSK_DMBTR + ITAB-DMBTR.
              ENDIF.
          ENDIF.
        ELSEIF ITAB-SHKZG = 'S' .
          IF ITAB-HKONT = '0022030201'.
             ITAB-GSSK_DMBTR = ITAB-GSSK_DMBTR - ITAB-DMBTR.
             ITAB-GSUS_DMBTR = ITAB-GSUS_DMBTR - ITAB-DMBTR.
             ITAB-GSYS_DMBTR = ITAB-GSYS_DMBTR + ITAB-DMBTR.
             IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR - ITAB-DMBTR.
             ENDIF.
          ELSE.
             ITAB-SK_DMBTR = ITAB-SK_DMBTR - ITAB-DMBTR.
             ITAB-US_DMBTR = ITAB-US_DMBTR - ITAB-DMBTR.
             ITAB-YS_DMBTR = ITAB-YS_DMBTR + ITAB-DMBTR.
             IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                ITAB-DYSK_DMBTR = ITAB-DYSK_DMBTR - ITAB-DMBTR.
             ENDIF.
          ENDIF.
        ENDIF.
      ELSE.
        IF ITAB-SHKZG = 'H' .
           IF ITAB-HKONT = '0011220102'.
              ITAB-GSSK_DMBTR = ITAB-GSSK_DMBTR + ITAB-DMBTR.
              ITAB-GSYS_DMBTR = ITAB-GSYS_DMBTR - ITAB-DMBTR.
              IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                 ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR + ITAB-DMBTR.
              ENDIF.
           ELSE.
              ITAB-SK_DMBTR = ITAB-SK_DMBTR + ITAB-DMBTR.
              ITAB-YS_DMBTR = ITAB-YS_DMBTR - ITAB-DMBTR.
              IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                 ITAB-DYSK_DMBTR = ITAB-DYSK_DMBTR + ITAB-DMBTR.
              ENDIF.
           ENDIF.
        ELSEIF ITAB-SHKZG = 'S' .
               IF ITAB-HKONT = '0011220102'.
                  ITAB-GSSK_DMBTR = ITAB-GSSK_DMBTR - ITAB-DMBTR.
                  ITAB-GSYS_DMBTR = ITAB-GSYS_DMBTR + ITAB-DMBTR.
                  IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                     ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR + ITAB-DMBTR.
                  ENDIF.
               ELSE.
                  ITAB-SK_DMBTR = ITAB-SK_DMBTR - ITAB-DMBTR.
                  ITAB-YS_DMBTR = ITAB-YS_DMBTR + ITAB-DMBTR.
                  IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                     ITAB-DYSK_DMBTR = ITAB-DYSK_DMBTR + ITAB-DMBTR.
                  ENDIF.
               ENDIF.
        ENDIF.
      ENDIF.
    ELSEIF ITAB-WG_FLAG = '1' AND ITAB-BLART = 'RV'.
      IF ITAB-SHKZG = 'H'.
         IF ITAB-HKONT = '0011220102'.
            ITAB-GSYS_DMBTR = ITAB-GSYS_DMBTR - ITAB-DMBTR.
            IF ITAB-BUDAT+0(6) = BUDAT+0(6).
               ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR - ITAB-DMBTR.
            ENDIF.
         ELSE.
            ITAB-YS_DMBTR = ITAB-YS_DMBTR - ITAB-DMBTR.
         ENDIF.
      ELSEIF ITAB-SHKZG = 'S' .
             IF ITAB-HKONT  = '0011220102'.
                ITAB-GSYS_DMBTR = ITAB-GSYS_DMBTR + ITAB-DMBTR.
                IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                   ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR + ITAB-DMBTR.
                ENDIF.
             ELSE.
                ITAB-YS_DMBTR = ITAB-YS_DMBTR + ITAB-DMBTR.
             ENDIF.
      ENDIF.
    ELSEIF ITAB-WG_FLAG = '' AND ITAB-BLART = 'RV'.
      IF ITAB-SHKZG = 'H' .
         IF ITAB-HKONT = '0011220102'.
           IF  BUDAT &lt; ITAB-AUGDT.
            ITAB-GSSK_DMBTR = ITAB-GSSK_DMBTR - ITAB-DMBTR.
            ITAB-GSYS_DMBTR = ITAB-GSYS_DMBTR - ITAB-DMBTR.
            IF ITAB-BUDAT+0(6) = BUDAT+0(6).
               ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR - ITAB-DMBTR.
            ENDIF.
           ELSE.
             ITAB-GSSK_DMBTR = ITAB-GSSK_DMBTR - ITAB-DMBTR.
             IF ITAB-BUDAT+0(6) = BUDAT+0(6).
               ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR - ITAB-DMBTR.
             ENDIF.
           ENDIF.
         ELSE.
           IF BUDAT &lt; ITAB-AUGDT.
              ITAB-SK_DMBTR = ITAB-SK_DMBTR - ITAB-DMBTR.
              ITAB-YS_DMBTR = ITAB-YS_DMBTR - ITAB-DMBTR.
              IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                 ITAB-DYSK_DMBTR = ITAB-DYSK_DMBTR - ITAB-DMBTR.
              ENDIF.
           ELSE.
             ITAB-SK_DMBTR = ITAB-SK_DMBTR - ITAB-DMBTR.
             IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                 ITAB-DYSK_DMBTR = ITAB-DYSK_DMBTR - ITAB-DMBTR.
              ENDIF.
           ENDIF.
         ENDIF.
      ELSEIF ITAB-SHKZG = 'S' .
             IF ITAB-HKONT  = '0011220102'.
               IF BUDAT &lt; ITAB-AUGDT.
                  ITAB-GSSK_DMBTR = ITAB-GSSK_DMBTR + ITAB-DMBTR.
                  ITAB-GSYS_DMBTR = ITAB-GSYS_DMBTR + ITAB-DMBTR.
                  IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                     ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR + ITAB-DMBTR.
                  ENDIF.
               ELSE.
                 ITAB-GSSK_DMBTR = ITAB-GSSK_DMBTR + ITAB-DMBTR.
                 IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                     ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR + ITAB-DMBTR.
                  ENDIF.
               ENDIF.
             ELSE.
               IF BUDAT &lt; ITAB-AUGDT.
                  ITAB-SK_DMBTR = ITAB-SK_DMBTR + ITAB-DMBTR.
                  ITAB-YS_DMBTR = ITAB-YS_DMBTR + ITAB-DMBTR.
                  IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                     ITAB-DYSK_DMBTR = ITAB-DYSK_DMBTR + ITAB-DMBTR.
                  ENDIF.
               ELSE.
                 ITAB-SK_DMBTR = ITAB-SK_DMBTR + ITAB-DMBTR.
                 IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                     ITAB-DYSK_DMBTR = ITAB-DYSK_DMBTR + ITAB-DMBTR.
                  ENDIF.
               ENDIF.
             ENDIF.
      ENDIF.
    ELSEIF ITAB-WG_FLAG = '' AND ITAB-BLART &lt;&gt; 'RV'.
      IF ITAB-UMSKZ = 'A' OR ITAB-UMSKZ = 'S' OR ITAB-UMSKZ = 'W'.
        IF ITAB-SHKZG = 'H' AND BUDAT &lt; ITAB-AUGDT.
           IF ITAB-HKONT = '0022030201'.
              ITAB-GSSK_DMBTR = ITAB-GSSK_DMBTR + ITAB-DMBTR.
              ITAB-GSUS_DMBTR = ITAB-GSUS_DMBTR + ITAB-DMBTR.
              IF ITAB-BUDAT+0(6) = BUDAT+0(6).
                 ITAB-GSDYSK_DMBTR = ITAB-GSDYSK_DMBTR + ITAB-DMBTR.
              ENDIF.
           ELSE.
              ITAB-SK_DMBTR = ITAB-SK_DMBTR + ITAB-DMBTR.
              ITAB-US_DMBTR = ITAB-US_DMBTR + ITAB-DMBTR.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -