*===============================基本信息===============================*
* 标题:合并损益报表
* 创建日期:2005-01-20
*===============================定 义===============================*
************************************************************************
* 基本代码
************************************************************************
REPORT ZR_FI_015
NO STANDARD PAGE HEADING
LINE-COUNT 65
LINE-SIZE 135
MESSAGE-ID ZFI1.
************************************************************************
* INCLUDE:包含文件
************************************************************************
INCLUDE OLE2INCL.
************************************************************************
* TABLE: 定义TABLE
************************************************************************
TABLES:
SKAT, "总帐科目主记录(科目表:说明)
GLT0, "总帐科目主记录业务额
T001, "公司代码
RF011Z, "将资产负债表行项目分配到科目
RF011Q. "会计报表项说明文字
************************************************************************
*INTERNAL TABLES
************************************************************************
*定义内表ITABS(作为辅助使用)
DATA: BEGIN OF ITABS OCCURS 10.
INCLUDE STRUCTURE GLT0.
DATA: TAMOUNT LIKE GLT0-HSLVT.
DATA: END OF ITABS.
*定义本期数内表ITAB1
DATA: BEGIN OF ITAB1,
CPXSSR LIKE GLT0-HSLVT, "1产品销售收入
CLCB LIKE GLT0-HSLVT, "2材料成本
CLCBCY LIKE GLT0-HSLVT, "3材料成本差异
SCCBCY LIKE GLT0-HSLVT, "4生产成本差异
JGCGTZ LIKE GLT0-HSLVT, "41价格重估调整
CPXSSJ LIKE GLT0-HSLVT, "5产品销售税金几附加
YTCKSJ LIKE GLT0-HSLVT, "6预提当月出口税金
CPXSML LIKE GLT0-HSLVT, "7产品销售毛利
XSFY LIKE GLT0-HSLVT, "8销售费用
GLFY LIKE GLT0-HSLVT, "9管理费用
CWFY LIKE GLT0-HSLVT, "10财务费用
YYFYHJ LIKE GLT0-HSLVT, "11营业费用合计
QTYWZC LIKE GLT0-HSLVT, "12其他业务支出
YYWZC LIKE GLT0-HSLVT, "13营业外支出
QTYWZCHJ LIKE GLT0-HSLVT, "14其他支出合计
QTYWSR LIKE GLT0-HSLVT, "15其他业务收入
YYWSR LIKE GLT0-HSLVT, "16营业处收入
QTYWSRHJ LIKE GLT0-HSLVT, "17其他业务收入合计
SQJLR LIKE GLT0-HSLVT, "18税前净利润
SDS LIKE GLT0-HSLVT, "19所得税
JLR LIKE GLT0-HSLVT, "20净利润
END OF ITAB1.
*定义本期占销售百分比数内表ITAB2
DATA: ITAB2 LIKE ITAB1.
*定义去年本期数内表ITAB3
DATA: ITAB3 LIKE ITAB1.
*定义去年本期数占销售百分比内表ITAB4
DATA: ITAB4 LIKE ITAB1.
*定义本本期比去年本期百分比内表ITAB5
DATA: ITAB5 LIKE ITAB1.
*定义本年累计数内表ITAB6
DATA: ITAB6 LIKE ITAB1.
*定义去年累计数占销售百分比内表ITAB7
DATA: ITAB7 LIKE ITAB1.
*定义去年累计数内表ITAB8
DATA: ITAB8 LIKE ITAB1.
*定义去年累计数占销售百分比内表ITAB9
DATA: ITAB9 LIKE ITAB1.
*定义本去年累计数比去年本期百分比内表ITAB10
DATA: ITAB10 LIKE ITAB1.
*定义字符型字段的内表-本期数(用于转换数值的负号显示形式)
DATA: BEGIN OF ITAB1_C OCCURS 0,
CPXSSR(20), "1产品销售收入
CLCB(20), "2材料成本
CLCBCY(20), "3材料成本差异
SCCBCY(20), "4生产成本差异
JGCGTZ(20), "41价格重估调整
CPXSSJ(20), "5产品销售税金几附加
YTCKSJ(20), "6预提当月出口税金
CPXSML(20), "7产品销售毛利
XSFY(20), "8销售费用
GLFY(20), "9管理费用
CWFY(20), "10财务费用
YYFYHJ(20), "11营业费用合计
QTYWZC(20), "12其他业务支出
YYWZC(20), "13营业外支出
QTYWZCHJ(20), "14其他支出合计
QTYWSR(20), "15其他业务收入
YYWSR(20), "16营业处收入
QTYWSRHJ(20), "17其他业务收入合计
SQJLR(20), "18税前净利润
SDS(20), "19所得税
JLR(20), "20净利润
END OF ITAB1_C.
*定义去年本期数内表ITAB3
DATA: ITAB3_C LIKE ITAB1_C.
*定义本年累计数内表ITAB6
DATA: ITAB6_C LIKE ITAB1_C.
*定义去年累计数内表ITAB8
DATA: ITAB8_C LIKE ITAB1_C.
*定义内表,处理非寄售出退货信息
DATA: BEGIN OF IT_PRINT_001 OCCURS 0.
DATA FLAG.
DATA CNO LIKE KNA1-KUNNR. "客户代码,送达方
DATA CNAME LIKE KNA1-NAME1. "客户名称
DATA CLASS LIKE KNA1-NAME1. "事务类别
DATA ORDERNO LIKE LIKP-VBELN. "交退货单号
DATA ORDERDATE LIKE LIKP-ERDAT. "交货单/退货交货单日期
DATA OLDERDATE LIKE LIKP-ERDAT. "交货单原始日期
DATA OTHERNO LIKE LIKP-VBELN. "交货单参考单号
DATA PRODNO LIKE LIPS-MATNR. "产品型号
DATA PRODNAME LIKE MAKT-MAKTX. "产品名称
DATA PRODQTY LIKE LIPS-LFIMG. "数量
DATA PRICE LIKE LIPS-NETPR. "单价
DATA AMOUNT LIKE LIPS-NETPR. "金额
DATA PRODQTY_C(20).
DATA AMOUNT_C(20).
DATA AUART LIKE VBAK-AUART. "订单类型
DATA VGBEL LIKE LIPS-VGBEL. "参考凭证的凭证号(销售订单号)
DATA VGPOS LIKE LIPS-VGPOS. "销售和分销凭证的项目号
DATA KDMAT LIKE LIPS-KDMAT. "客户物料号
DATA BSTNK LIKE VBAK-BSTNK. "采购订单编号
DATA VTWEG LIKE VBAK-VTWEG. "分销渠道
DATA VKORG LIKE VBAK-VKORG. "公司代码
DATA: END OF IT_PRINT_001.
*定义内表IT_PRINT_003
DATA: BEGIN OF IT_PRINT_003 OCCURS 10.
INCLUDE STRUCTURE MBEWH.
DATA: MBEWH_DATE LIKE LIKP-ERDAT.
DATA: BELNR LIKE MLCRP-BELNR.
DATA: END OF IT_PRINT_003.
*定义内表IT_PRINT_103
DATA: BEGIN OF IT_PRINT_103 OCCURS 10.
INCLUDE STRUCTURE MLCRP.
DATA: MBEWH_DATE LIKE LIKP-ERDAT.
DATA: END OF IT_PRINT_103.
*取销售净价及货币
DATA: BEGIN OF IT_PRINT_004 OCCURS 0.
DATA NETPR LIKE VBAP-NETPR. "净价
DATA WAERK LIKE VBAP-WAERK. "SD 凭证货币
DATA KPEIN LIKE VBAP-KPEIN. "条件定价单位
DATA: END OF IT_PRINT_004.
*取汇率
DATA: BEGIN OF IT_PRINT_005 OCCURS 0.
DATA UKURS LIKE TCURR-UKURS. "汇率
DATA GDATU LIKE TCURR-GDATU. "汇率有效起始日期
DATA: END OF IT_PRINT_005.
*定义内表IT_PRINT_006(为取损益表上的值)
DATA: BEGIN OF IT_PRINT_006 OCCURS 10.
INCLUDE STRUCTURE ZFI01.
DATA: END OF IT_PRINT_006.
*定义2005/2期未数据内表
DATA: BEGIN OF ITAB_FIRST OCCURS 10.
INCLUDE STRUCTURE ZFI04.
DATA: END OF ITAB_FIRST.
*往数据库增加运行日志
DATA: BEGIN OF IT_ZREPORTLOG OCCURS 0.
INCLUDE TYPE ZREPORTLOG.
DATA: END OF IT_ZREPORTLOG.
************************************************************************
* CONSTANTS : 定义常量
************************************************************************
DATA: L_PRICE_SR TYPE P DECIMALS 6,
L_PRICE_CB TYPE P DECIMALS 6,
L_AMOUNT_SR LIKE LIPS-NETPR,
L_AMOUNT_CB LIKE LIPS-NETPR,
L_TAX TYPE P DECIMALS 2 VALUE '0.17'.
************************************************************************
* TYPE : 定义数据类型
************************************************************************
TYPE-POOLS: SLIS.
************************************************************************
* DATA : 定义变量
************************************************************************
*单据表格上相关坐标值定义
DATA: A1 TYPE I VALUE 0,
A2 TYPE I VALUE 0,
A3 TYPE I VALUE 0,
A4 TYPE I VALUE 0,
A5 TYPE I VALUE 0,
A6 TYPE I VALUE 0,
A7 TYPE I VALUE 0,
A8 TYPE I VALUE 0,
A9 TYPE I VALUE 0,
A10 TYPE I VALUE 0,
A11 TYPE I VALUE 0,
A12 TYPE I VALUE 0.
DATA: B1 TYPE I VALUE 0,
B2 TYPE I VALUE 0,
B3 TYPE I VALUE 0,
B4 TYPE I VALUE 0,
B5 TYPE I VALUE 0,
B6 TYPE I VALUE 0,
B7 TYPE I VALUE 0,
B8 TYPE I VALUE 0,
B9 TYPE I VALUE 0,
B10 TYPE I VALUE 0,
B11 TYPE I VALUE 0.
DATA: G_DAY(2),
G_LEN TYPE I,
G_MOD TYPE I,
P_RYEAR_L(4), "去年度
G_BUKRS LIKE GLT0-BUKRS, "公司
G_PRODNO LIKE LIPS-MATNR,
G_DATE LIKE LIKP-ERDAT,
G_PRICE TYPE P DECIMALS 6,
G_VGBEL LIKE VBAK-VGBEL.
************************************************************************
* DEFINE: 定义宏
************************************************************************
*普通报表格式的输出宏
DATA L8(15).
DEFINE GRID1. "数据输出 负号前至
CLEAR L8.
MOVE &1 TO L8.
IF &1 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT /A1 SY-VLINE.
WRITE: AT B1 L8 LEFT-JUSTIFIED.
WRITE: AT A2 SY-VLINE.
CLEAR L8.
MOVE &2 TO L8.
IF &2 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT B2 L8 LEFT-JUSTIFIED.
WRITE: AT A3 SY-VLINE.
CLEAR L8.
MOVE &3 TO L8.
IF &3 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT B3 L8 LEFT-JUSTIFIED.
WRITE: AT A4 SY-VLINE.
CLEAR L8.
MOVE &4 TO L8.
IF &4 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT B4 L8 LEFT-JUSTIFIED.
CLEAR L8.
MOVE &5 TO L8.
IF &5 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT A5 SY-VLINE.
WRITE: AT B5 L8 LEFT-JUSTIFIED.
WRITE: AT A6 SY-VLINE.
WRITE: AT B6 &6 LEFT-JUSTIFIED.
WRITE: AT A7 SY-VLINE.
CLEAR L8.
MOVE &7 TO L8.
IF &7 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT B7 L8 LEFT-JUSTIFIED.
WRITE: AT A8 SY-VLINE.
CLEAR L8.
MOVE &8 TO L8.
IF &8 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT B8 L8 LEFT-JUSTIFIED.
WRITE: AT A9 SY-VLINE.
CLEAR L8.
MOVE &9 TO L8.
IF &9 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT B9 L8 LEFT-JUSTIFIED.
END-OF-DEFINITION.
DEFINE GRID11.
WRITE: AT A10 SY-VLINE.
CLEAR L8.
MOVE &1 TO L8.
IF &1 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT B10 L8 LEFT-JUSTIFIED.
WRITE: AT A11 SY-VLINE.
CLEAR L8.
MOVE &2 TO L8.
IF &2 < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = L8
EXCEPTIONS
OTHERS = 1.
ENDIF.
SHIFT L8 LEFT DELETING LEADING SPACE.
WRITE: AT B11 L8 LEFT-JUSTIFIED.
WRITE: AT A12 SY-VLINE.
END-OF-DEFINITION.
DEFINE GRID2. "输出表头
WRITE: AT /A1 SY-VLINE.
WRITE: AT B1 &1 LEFT-JUSTIFIED.
WRITE: AT A2 SY-VLINE.
WRITE: AT B2 &2 LEFT-JUSTIFIED.
WRITE: AT A3 SY-VLINE.
WRITE: AT B3 &3 LEFT-JUSTIFIED.
WRITE: AT A4 SY-VLINE.
WRITE: AT B4 &4 LEFT-JUSTIFIED.
WRITE: AT A5 SY-VLINE.
WRITE: AT B5 &5 LEFT-JUSTIFIED.
WRITE: AT A6 SY-VLINE.
WRITE: AT B6 &6 LEFT-JUSTIFIED.
WRITE: AT A7 SY-VLINE.
WRITE: AT B7 &7 LEFT-JUSTIFIED.
WRITE: AT A8 SY-VLINE.
WRITE: AT B8 &8 LEFT-JUSTIFIED.
WRITE: AT A9 SY-VLINE.
WRITE: AT B9 &9 LEFT-JUSTIFIED.
END-OF-DEFINITION.
DEFINE GRID22. "输出表头
WRITE: AT A10 SY-VLINE.
WRITE: AT B10 &1 LEFT-JUSTIFIED.
WRITE: AT A11 SY-VLINE.
WRITE: AT B11 &2 LEFT-JUSTIFIED.
WRITE: AT A12 SY-VLINE.
END-OF-DEFINITION.
************************************************************************
* SELECTION SCREEN : 定义报表筛选条件
************************************************************************
*确定过滤参数
SELECTION-SCREEN BEGIN OF BLOCK BLK_001 WITH FRAME. TITLE BLK_001 .
SELECTION-SCREEN SKIP.
PARAMETERS : P_RYEAR(4) TYPE C OBLIGATORY DEFAULT SY-DATUM+0(4)."报表年度
PARAMETERS : P_MONAT(2) TYPE C OBLIGATORY DEFAULT SY-DATUM+4(2)."报表期间
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK BLK_001.
*===============================事 件===============================*
************************************************************************
* INITIALIZATION.启动程序开始执行
************************************************************************
INITIALIZATION.
BLK_001 = '检索参数'.
PERFORM. SUB_INI.
P_RYEAR = SY-DATUM(4). "会计年度
P_RYEAR_L = P_RYEAR - 1.
************************************************************************
* AT SELECTION SCREEN:
************************************************************************
AT SELECTION-SCREEN.
PERFORM. F_CHECK_INPUT. "检查用户输入
************************************************************************
* START OF SELECTION:
************************************************************************
START-OF-SELECTION.
*往数据库增加运行日志
IT_ZREPORTLOG-MANDT = SY-MANDT.
IT_ZREPORTLOG-TCODE = SY-TCODE.
IT_ZREPORTLOG-DATUM = SY-DATUM.
IT_ZREPORTLOG-UZEIT = SY-UZEIT.
IT_ZREPORTLOG-UNAME = SY-UNAME.
IT_ZREPORTLOG-TITLE = SY-TITLE.
APPEND IT_ZREPORTLOG.
INSERT INTO ZREPORTLOG VALUES IT_ZREPORTLOG .
PERFORM. CAL_DAY. "每月天数判断
PERFORM. F_READ_DATA_GLT0. "去GLT0
PERFORM. F_READ_DATA_GLT0_999. "取0999 的 GLT0
PERFORM. F_READ_DATA_XS. "去销售订单数据
PERFORM. F_CHANGE. "去负号
PERFORM. SUB_TOTAL. "最终数据合计及总计
PERFORM. SUB_JS. "计算百分比
************************************************************************
* END OF SELECTION
************************************************************************
END-OF-SELECTION.
PERFORM. F_PRINT_REPORT.
************************************************************************
* TOP OF PAGE
************************************************************************
TOP-OF-PAGE.
PERFORM. SUB_HEAD.
************************************************************************
* END OF PAGE
************************************************************************
END-OF-PAGE.
PERFORM. SUB_BOTTOM.
*===============================子 例 程===============================*
*&---------------------------------------------------------------------*
*过滤条件有效性检查
*&---------------------------------------------------------------------*
FORM. F_CHECK_INPUT.
DATA: L_DATE LIKE LIKP-ERDAT.
IF STRLEN( P_MONAT ) = 1.
CONCATENATE '0' P_MONAT INTO P_MONAT.
ENDIF.
CONCATENATE P_RYEAR P_MONAT '01' INTO L_DATE.
IF L_DATE <= '20050201'.
MESSAGE E001. "不能运行该期间的报表!
ENDIF.
IF ( P_MONAT < '01' ) OR ( P_MONAT > '16' ).
MESSAGE E000. "该会计期间不存在!
ENDIF.
ENDFORM. " F_CHECK_INPUT
*&---------------------------------------------------------------------*
*从数据库中读取数据,填充报表输出时所用的内表
*&---------------------------------------------------------------------*
FORM. F_READ_DATA_GLT0 .
PERFORM. GET_BN_GLT0.
PERFORM. GET_QN_GLT0.
ENDFORM. " F_READ_DATA
*&---------------------------------------------------------------------*
*& 去负号
*&---------------------------------------------------------------------*
FORM. F_CHANGE.
*本月和本年累计
*差异
ITAB1-CLCBCY = 0 - ITAB1-CLCBCY.
ITAB6-CLCBCY = 0 - ITAB6-CLCBCY.
ITAB1-SCCBCY = 0 - ITAB1-SCCBCY.
ITAB6-SCCBCY = 0 - ITAB6-SCCBCY.
*ITAB1-JGCGTZ = 0 - ITAB1-JGCGTZ.
*ITAB6-JGCGTZ = 0 - ITAB6-JGCGTZ.
*本月数
*ITAB1-QTYWSR = 0 - ITAB1-QTYWSR.
ITAB1-QTYWZC = 0 - ITAB1-QTYWZC.
ITAB1-YYWSR = 0 - ITAB1-YYWSR.
*本年累计数
*ITAB6-QTYWSR = 0 - ITAB6-QTYWSR.
ITAB6-QTYWZC = 0 - ITAB6-QTYWZC.
ITAB6-YYWSR = 0 - ITAB6-YYWSR.
*上年本月和上年累计
*差异
ITAB3-CLCBCY = 0 - ITAB3-CLCBCY.
ITAB8-CLCBCY = 0 - ITAB8-CLCBCY.
ITAB3-SCCBCY = 0 - ITAB3-SCCBCY.
ITAB8-SCCBCY = 0 - ITAB8-SCCBCY.
*ITAB3-JGCGTZ = 0 - ITAB3-JGCGTZ.
*ITAB8-JGCGTZ = 0 - ITAB8-JGCGTZ.
*本月数
*ITAB1-QTYWSR = 0 - ITAB1-QTYWSR.
ITAB3-QTYWZC = 0 - ITAB3-QTYWZC.
ITAB3-YYWSR = 0 - ITAB3-YYWSR.
*本年累计数
*ITAB6-QTYWSR = 0 - ITAB6-QTYWSR.
ITAB8-QTYWZC = 0 - ITAB8-QTYWZC.
ITAB8-YYWSR = 0 - ITAB8-YYWSR.
ENDFORM.
*&---------------------------------------------------------------------*
*& 最终数据合计及总计
*&---------------------------------------------------------------------*
FORM. SUB_TOTAL.
*计算本年
*处理ITAB1本期
"7产品销售毛利 1-2-3-4-5-8
ITAB1-CPXSML = ITAB1-CPXSSR - ITAB1-CLCB - ITAB1-CLCBCY - ITAB1-SCCBCY
- ITAB1-JGCGTZ - ITAB1-CPXSSJ - ITAB1-YTCKSJ.
"11营业费用合计
ITAB1-YYFYHJ = ITAB1-XSFY + ITAB1-GLFY + ITAB1-CWFY.
"14其他指出合计
ITAB1-QTYWZCHJ = ITAB1-QTYWZC + ITAB1-YYWZC.
"17其他收入合计
ITAB1-QTYWSRHJ = ITAB1-QTYWSR + ITAB1-YYWSR.
"18税前净利润
ITAB1-SQJLR = ITAB1-CPXSML - ITAB1-YYFYHJ - ITAB1-QTYWZCHJ + ITAB1-QTYWSRHJ.
"20净利润
ITAB1-JLR = ITAB1-SQJLR - ITAB1-SDS.
*处理ITAB6本年累计
"7产品销售毛利 1-2-3-4-5-8
ITAB6-CPXSML = ITAB6-CPXSSR - ITAB6-CLCB - ITAB6-CLCBCY - ITAB6-SCCBCY
- ITAB6-JGCGTZ - ITAB6-CPXSSJ - ITAB6-YTCKSJ.
"11营业费用合计
ITAB6-YYFYHJ = ITAB6-XSFY + ITAB6-GLFY + ITAB6-CWFY.
"14其他指出合计
ITAB6-QTYWZCHJ = ITAB6-QTYWZC + ITAB6-YYWZC.
"17其他收入合计
ITAB6-QTYWSRHJ = ITAB6-QTYWSR + ITAB6-YYWSR.
"18税前净利润
ITAB6-SQJLR = ITAB6-CPXSML - ITAB6-YYFYHJ - ITAB6-QTYWZCHJ + ITAB6-QTYWSRHJ.
"20净利润
ITAB6-JLR = ITAB6-SQJLR - ITAB6-SDS.
*计算去年
*处理ITAB3本期
"7产品销售毛利 1-2-3-4-5-8
ITAB3-CPXSML = ITAB3-CPXSSR - ITAB3-CLCB - ITAB3-CLCBCY - ITAB3-SCCBCY
- ITAB3-JGCGTZ - ITAB3-CPXSSJ - ITAB3-YTCKSJ.
"11营业费用合计
ITAB3-YYFYHJ = ITAB3-XSFY + ITAB3-GLFY + ITAB3-CWFY.
"14其他指出合计
ITAB3-QTYWZCHJ = ITAB3-QTYWZC + ITAB3-YYWZC.
"17其他收入合计
ITAB3-QTYWSRHJ = ITAB3-QTYWSR + ITAB3-YYWSR.
"18税前净利润
ITAB3-SQJLR = ITAB3-CPXSML - ITAB3-YYFYHJ - ITAB3-QTYWZCHJ + ITAB3-QTYWSRHJ.
"20净利润
ITAB3-JLR = ITAB3-SQJLR - ITAB3-SDS.
*处理ITAB6本年累计
"7产品销售毛利 1-2-3-4-5-8
ITAB8-CPXSML = ITAB8-CPXSSR - ITAB8-CLCB - ITAB8-CLCBCY - ITAB8-SCCBCY
- ITAB8-JGCGTZ - ITAB8-CPXSSJ - ITAB8-YTCKSJ.
"11营业费用合计
ITAB8-YYFYHJ = ITAB8-XSFY + ITAB8-GLFY + ITAB8-CWFY.
"14其他指出合计
ITAB8-QTYWZCHJ = ITAB8-QTYWZC + ITAB8-YYWZC.
"17其他收入合计
ITAB8-QTYWSRHJ = ITAB8-QTYWSR + ITAB8-YYWSR.
"18税前净利润
ITAB8-SQJLR = ITAB8-CPXSML - ITAB8-YYFYHJ - ITAB8-QTYWZCHJ + ITAB8-QTYWSRHJ.
"20净利润
ITAB8-JLR = ITAB8-SQJLR - ITAB8-SDS.
ENDFORM.
*&---------------------------------------------------------------------*
*普通报表格式的打印
*&---------------------------------------------------------------------*
FORM. F_PRINT_REPORT.
GRID1 ITAB1-CPXSSR ITAB2-CPXSSR ITAB3-CPXSSR ITAB4-CPXSSR ITAB5-CPXSSR
'产品销售收入' ITAB6-CPXSSR ITAB7-CPXSSR ITAB8-CPXSSR.
GRID11 ITAB9-CPXSSR ITAB10-CPXSSR.
ULINE.
GRID1 ITAB1-CLCB ITAB2-CLCB ITAB3-CLCB ITAB4-CLCB ITAB5-CLCB
'产品销售成本' ITAB6-CLCB ITAB7-CLCB ITAB8-CLCB.
GRID11 ITAB9-CLCB ITAB10-CLCB.
ULINE.
GRID1 ITAB1-CLCBCY ITAB2-CLCBCY ITAB3-CLCBCY ITAB4-CLCBCY ITAB5-CLCBCY
'材料成本差异' ITAB6-CLCBCY ITAB7-CLCBCY ITAB8-CLCBCY.
GRID11 ITAB9-CLCBCY ITAB10-CLCBCY.
ULINE.
GRID1 ITAB1-SCCBCY ITAB2-SCCBCY ITAB3-SCCBCY ITAB4-SCCBCY ITAB5-SCCBCY
'生产成本差异' ITAB6-SCCBCY ITAB7-SCCBCY ITAB8-SCCBCY.
GRID11 ITAB9-SCCBCY ITAB10-SCCBCY.
ULINE.
GRID1 ITAB1-JGCGTZ ITAB2-JGCGTZ ITAB3-JGCGTZ ITAB4-JGCGTZ ITAB5-JGCGTZ
'价格重估调整' ITAB6-JGCGTZ ITAB7-JGCGTZ ITAB8-JGCGTZ.
GRID11 ITAB9-JGCGTZ ITAB10-JGCGTZ.
ULINE.
GRID1 ITAB1-CPXSSJ ITAB2-CPXSSJ ITAB3-CPXSSJ ITAB4-CPXSSJ ITAB5-CPXSSJ
'产品销售税金及附加' ITAB6-CPXSSJ ITAB7-CPXSSJ ITAB8-CPXSSJ.
GRID11 ITAB9-CPXSSJ ITAB10-CPXSSJ.
ULINE.
GRID1 ITAB1-YTCKSJ ITAB2-YTCKSJ ITAB3-YTCKSJ ITAB4-YTCKSJ ITAB5-YTCKSJ
'预提当月出口税金' ITAB6-YTCKSJ ITAB7-YTCKSJ ITAB8-YTCKSJ.
GRID11 ITAB9-YTCKSJ ITAB10-YTCKSJ.
ULINE.
GRID1 ITAB1-CPXSML ITAB2-CPXSML ITAB3-CPXSML ITAB4-CPXSML ITAB5-CPXSML
'产品销售毛利' ITAB6-CPXSML ITAB7-CPXSML ITAB8-CPXSML.
GRID11 ITAB9-CPXSML ITAB10-CPXSML.
ULINE.
GRID1 ITAB1-XSFY ITAB2-XSFY ITAB3-XSFY ITAB4-XSFY ITAB5-XSFY
'销售费用' ITAB6-XSFY ITAB7-XSFY ITAB8-XSFY.
GRID11 ITAB9-XSFY ITAB10-XSFY.
ULINE.
GRID1 ITAB1-GLFY ITAB2-GLFY ITAB3-GLFY ITAB4-GLFY ITAB5-GLFY
'管理费用' ITAB6-GLFY ITAB7-GLFY ITAB8-GLFY.
GRID11 ITAB9-GLFY ITAB10-GLFY.
ULINE.
GRID1 ITAB1-CWFY ITAB2-CWFY ITAB3-CWFY ITAB4-CWFY ITAB5-CWFY
'财务费用' ITAB6-CWFY ITAB7-CWFY ITAB8-CWFY.
GRID11 ITAB9-CWFY ITAB10-CWFY.
ULINE.
GRID1 ITAB1-YYFYHJ ITAB2-YYFYHJ ITAB3-YYFYHJ ITAB4-YYFYHJ ITAB5-YYFYHJ
'营业费用合计' ITAB6-YYFYHJ ITAB7-YYFYHJ ITAB8-YYFYHJ.
GRID11 ITAB9-YYFYHJ ITAB10-YYFYHJ.
ULINE.
GRID1 ITAB1-QTYWZC ITAB2-QTYWZC ITAB3-QTYWZC ITAB4-QTYWZC ITAB5-QTYWZC
'其它业务支出' ITAB6-QTYWZC ITAB7-QTYWZC ITAB8-QTYWZC.
GRID11 ITAB9-QTYWZC ITAB10-QTYWZC.
ULINE.
GRID1 ITAB1-YYWZC ITAB2-YYWZC ITAB3-YYWZC ITAB4-YYWZC ITAB5-YYWZC
'营业外支出' ITAB6-YYWZC ITAB7-YYWZC ITAB8-YYWZC.
GRID11 ITAB9-YYWZC ITAB10-YYWZC.
ULINE.
GRID1 ITAB1-QTYWZCHJ ITAB2-QTYWZCHJ ITAB3-QTYWZCHJ ITAB4-QTYWZCHJ ITAB5-QTYWZCHJ
'其它支出合计' ITAB6-QTYWZCHJ ITAB7-QTYWZCHJ ITAB8-QTYWZCHJ.
GRID11 ITAB9-QTYWZCHJ ITAB10-QTYWZCHJ.
ULINE.
GRID1 ITAB1-QTYWSR ITAB2-QTYWSR ITAB3-QTYWSR ITAB4-QTYWSR ITAB5-QTYWSR
'其它业务收入' ITAB6-QTYWSR ITAB7-QTYWSR ITAB8-QTYWSR.
GRID11 ITAB9-QTYWSR ITAB10-QTYWSR.
ULINE.
GRID1 ITAB1-YYWSR ITAB2-YYWSR ITAB3-YYWSR ITAB4-YYWSR ITAB5-YYWSR
'营业外收入' ITAB6-YYWSR ITAB7-YYWSR ITAB8-YYWSR.
GRID11 ITAB9-YYWSR ITAB10-YYWSR.
ULINE.
GRID1 ITAB1-QTYWSRHJ ITAB2-QTYWSRHJ ITAB3-QTYWSRHJ ITAB4-QTYWSRHJ ITAB5-QTYWSRHJ
'其它业务收入合计' ITAB6-QTYWSRHJ ITAB7-QTYWSRHJ ITAB8-QTYWSRHJ.
GRID11 ITAB9-QTYWSRHJ ITAB10-QTYWSRHJ.
ULINE.
GRID1 ITAB1-SQJLR ITAB2-SQJLR ITAB3-SQJLR ITAB4-SQJLR ITAB5-SQJLR
'税前净利润' ITAB6-SQJLR ITAB7-SQJLR ITAB8-SQJLR.
GRID11 ITAB9-SQJLR ITAB10-SQJLR.
ULINE.
GRID1 ITAB1-SDS ITAB2-SDS ITAB3-SDS ITAB4-SDS ITAB5-SDS
'所得税' ITAB6-SDS ITAB7-SDS ITAB8-SDS.
GRID11 ITAB9-SDS ITAB10-SDS.
ULINE.
GRID1 ITAB1-JLR ITAB2-JLR ITAB3-JLR ITAB4-JLR ITAB5-JLR
'净利润' ITAB6-JLR ITAB7-JLR ITAB8-JLR.
GRID11 ITAB9-JLR ITAB10-JLR.
ULINE.
PERFORM. SUB_BOTTOM.
*-将本期值保存到ZFI01中.
* PERFORM. F_SAVE.
ENDFORM. " F_PRINT_REPORT
*&---------------------------------------------------------------------*
*& 将本期值保存到ZFI01中
*&---------------------------------------------------------------------*
FORM. F_SAVE.
*DATA: FLAG TYPE I,
* L_DATE LIKE LIKP-KODAT,
* L_RYEAR(4),
* L_MONAT(2),
* L_DAY(2),
* L_MOD TYPE I.
*
* SELECT *
* FROM ZFI01
* INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_006
* WHERE WERKS = P_BUKRS AND
* RYEAR = P_RYEAR AND
* RPMAX = P_MONAT.
*
* FLAG = 0.
* LOOP AT IT_PRINT_006.
* UPDATE ZFI01
* SET AMOUNT = ITAB1-JLR
* JGCGTZ = ITAB1-JGCGTZ
* FLAG = '2'
* AEDAT = SY-DATUM
* AENAM = SY-UNAME
* WHERE WERKS = P_BUKRS AND
* RYEAR = P_RYEAR AND
* RPMAX = P_MONAT.
* FLAG = 1.
* ENDLOOP.
*
* "整理日期
* L_RYEAR = P_RYEAR.
* L_MONAT = P_MONAT.
*
* IF L_MONAT = '04' OR L_MONAT = '06' OR
* L_MONAT = '09' OR L_MONAT = '11'.
* L_DAY = '30'.
* ELSEIF L_MONAT = '02'.
* L_MOD = L_RYEAR MOD 4.
* IF L_MOD = 0.
* L_DAY = '29'.
* ELSE.
* L_DAY = '28'.
* ENDIF.
* ELSE.
* L_DAY = '31'.
* ENDIF.
*
* CONCATENATE L_RYEAR L_MONAT L_DAY INTO L_DATE.
*
* CLEAR IT_PRINT_006.
* REFRESH IT_PRINT_006.
* IT_PRINT_006-FLAG = '2'. "1表示对内损益表,2表示合并损益表
* IT_PRINT_006-WERKS = P_BUKRS.
* IT_PRINT_006-RYEAR = P_RYEAR.
* IT_PRINT_006-RPMAX = P_MONAT.
* IT_PRINT_006-PODAT = L_DATE.
* IT_PRINT_006-AMOUNT = ITAB1-JLR.
* IT_PRINT_006-JGCGTZ = ITAB1-JGCGTZ.
* IT_PRINT_006-TEXT = ''.
* IT_PRINT_006-ERDAT = SY-DATUM.
* IT_PRINT_006-AEDAT = SY-DATUM.
* IT_PRINT_006-ERNAM = SY-UNAME.
* IT_PRINT_006-AENAM = SY-UNAME.
*
* IF FLAG = 0.
* INSERT INTO ZFI01
* VALUES IT_PRINT_006 .
* ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& 单据表头显示
*&---------------------------------------------------------------------*
FORM. SUB_HEAD.
DATA:L_COMP(22),
L_TAXNO(15).
"取税款所属期
IF P_MONAT > '12'.
P_MONAT = '12'.
ENDIF.
WRITE: /55 '合 并 损 益 表'.
SKIP.
* WRITE: /2 '纳税人识别号:',L_TAXNO.
* WRITE: 88 '纳税人名称:',L_COMP.
WRITE: /2 '报表期间:',P_RYEAR,'-',P_MONAT,'-','01',
'至',P_RYEAR,'-',P_MONAT,'-',G_DAY.
WRITE: 88 '填表日期:',SY-DATUM,' 金额单位:人民币元'.
ULINE AT /A1 .
GRID2 '本月数' '占销售%' '去年同期数' '占销售%' '比去年%' '项目' '本年累计数' '占销售%' '去年同期数'.
GRID22 '占销售%' '比去年%'.
ULINE.
ENDFORM. " SUB_OUTPUTHEAD
*&---------------------------------------------------------------------
*& 单据表尾显示
*&---------------------------------------------------------------------
FORM. SUB_BOTTOM.
WRITE: AT 2 '单位负责人:',' 财会负责人:'.
WRITE: AT 80 '复核:',' 制表:'.
ENDFORM. "SUB_BOTTOM
*&---------------------------------------------------------------------*
* 各月天数判断
*----------------------------------------------------------------------*
FORM. CAL_DAY.
IF P_MONAT = '04' OR P_MONAT = '06' OR
P_MONAT = '09' OR P_MONAT = '11'.
G_DAY = '30'.
ELSEIF P_MONAT = '02'.
G_MOD = P_RYEAR MOD 4.
IF G_MOD = 0.
G_DAY = '29'.
ELSE.
G_DAY = '28'.
ENDIF.
ELSE.
G_DAY = '31'.
ENDIF.
CONDENSE G_DAY NO-GAPS.
ENDFORM. "CAL_DAY
*&---------------------------------------------------------------------*
*& 计算单价
*&---------------------------------------------------------------------*
FORM. F_GET_PRICE.
DATA: L_DATE LIKE LIKP-KODAT,
L_RYEAR(4),
L_MONAT(2),
L_DAY(2),
L_MOD TYPE I,
L_PEINH LIKE MBEW-PEINH. "价格单位
CLEAR IT_PRINT_003.
REFRESH IT_PRINT_003.
CLEAR IT_PRINT_103.
REFRESH IT_PRINT_103.
*--取价格释放的记录(MBEWH)
SELECT *
FROM MBEWH
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_003
WHERE MATNR = G_PRODNO "物料号
AND BWKEY = G_BUKRS "估价范围
AND BWTAR = '' "评估类型
AND VPRSV = 'S'. "价格控制指示符
*--取价格更改的记录(MR21)
SELECT A~BELNR "物料明细帐凭证/价格更改凭证的编号
A~KJAHR "库存年度
A~POSNR "物料明细帐凭证项目
A~BDATJ "记帐日期 YYYY
A~POPER "过帐期间
A~STPRS_NEW "新的标准价格
A~PEINH_NEW "物料分类帐信息价格单位
B~MATNR "物料号
FROM MLCRP AS A INNER JOIN MLIT AS B ON A~BELNR = B~BELNR
AND A~POSNR = B~POSNR
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_103
WHERE B~MATNR = G_PRODNO "物料号
AND B~BWKEY = G_BUKRS. "估价范围
"MBEWH与MR21两记录合并
LOOP AT IT_PRINT_103.
IT_PRINT_003-BELNR = IT_PRINT_103-BELNR.
IT_PRINT_003-LFGJA = IT_PRINT_103-BDATJ.
IT_PRINT_003-LFMON = IT_PRINT_103-POPER.
IT_PRINT_003-STPRS = IT_PRINT_103-STPRS_NEW.
IT_PRINT_003-PEINH = IT_PRINT_103-PEINH_NEW.
APPEND IT_PRINT_003.
ENDLOOP.
"整理日期
LOOP AT IT_PRINT_003.
L_RYEAR = IT_PRINT_003-LFGJA.
L_MONAT = IT_PRINT_003-LFMON.
IF L_MONAT = '04' OR L_MONAT = '06' OR
L_MONAT = '09' OR L_MONAT = '11'.
L_DAY = '30'.
ELSEIF L_MONAT = '02'.
L_MOD = L_RYEAR MOD 4.
IF L_MOD = 0.
L_DAY = '29'.
ELSE.
L_DAY = '28'.
ENDIF.
ELSE.
L_DAY = '31'.
ENDIF.
CONCATENATE L_RYEAR L_MONAT L_DAY INTO L_DATE.
IT_PRINT_003-MBEWH_DATE = L_DATE.
MODIFY IT_PRINT_003.
ENDLOOP.
"排序日期递增、编号递减
SORT IT_PRINT_003 BY MBEWH_DATE ASCENDING BELNR DESCENDING.
* SORT IT_PRINT_003 BY MBEWH_DATE DESCENDING BELNR ASCENDING.
"取最近的价格
G_PRICE = 0.
LOOP AT IT_PRINT_003.
IF IT_PRINT_003-MBEWH_DATE >= G_DATE.
G_PRICE = IT_PRINT_003-STPRS / IT_PRINT_003-PEINH.
EXIT.
ENDIF.
ENDLOOP.
"假如上面取不到值,用如下处理。
IF G_PRICE = 0.
"取该物料的价格单位
L_PEINH = 1.
SELECT SINGLE PEINH
FROM MBEW
INTO L_PEINH
WHERE MATNR = G_PRODNO "物料号
AND BWKEY = G_BUKRS. "估价范围
"取物料标准价格及金额
SELECT SINGLE STPRS
FROM MBEW
INTO G_PRICE
WHERE MATNR = G_PRODNO "物料号
AND BWKEY = G_BUKRS. "估价范围
G_PRICE = G_PRICE / L_PEINH.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& 单据表格上相关坐标值初始
*&---------------------------------------------------------------------*
FORM. SUB_INI .
MOVE 1 TO A1. "项目
MOVE 2 TO B1.
MOVE 17 TO A2. "行次
MOVE 18 TO B2.
MOVE 25 TO A3. "本月数
MOVE 26 TO B3.
MOVE 41 TO A4. "本年累计数
MOVE 42 TO B4.
MOVE 49 TO A5.
MOVE 50 TO B5.
MOVE 58 TO A6.
MOVE 59 TO B6.
MOVE 77 TO A7.
MOVE 78 TO B7.
MOVE 93 TO A8.
MOVE 94 TO B8.
MOVE 101 TO A9.
MOVE 102 TO B9.
MOVE 117 TO A10.
MOVE 118 TO B10.
MOVE 125 TO A11.
MOVE 126 TO B11.
MOVE 135 TO A12.
ENDFORM. " SUB_INI
*&---------------------------------------------------------------------*
*& Form F_READ_DATA_XS
*&---------------------------------------------------------------------*
FORM. F_READ_DATA_XS .
PERFORM. GET_BQ. "本期
PERFORM. GET_BNLJ. "本年累计
PERFORM. GET_BQ_Q. "去年本期
PERFORM. GET_BNLJ_Q. "去年累计
PERFORM. F_JGCGTZ. "价格重估调整
ENDFORM. " F_READ_DATA_XS
*&---------------------------------------------------------------------*
*& Form get_bq
*&---------------------------------------------------------------------*
FORM. GET_BQ .
*日期初始化
DATA: G_DATE1 LIKE LIKP-LFDAT, "月初日期
G_DATE2 LIKE LIKP-LFDAT. "月末日期
G_DATE1(4) = P_RYEAR.
G_DATE1+4(2) = P_MONAT.
G_DATE1+6(2) = '01'.
G_DATE2 = G_DATE1.
IF P_MONAT = '12'.
G_DATE2(4) = P_RYEAR + 1.
G_DATE2+4(2) = '01'.
G_DATE2 = G_DATE2 - 1.
ELSE.
G_DATE2+4(2) = P_MONAT + 1.
G_DATE2 = G_DATE2 - 1.
ENDIF.
*END
*取发货的数据
L_AMOUNT_SR = 0.
L_AMOUNT_CB = 0.
REFRESH IT_PRINT_001.
"取交货数量
SELECT A~MATNR AS PRODNO "物料号
A~LFIMG AS PRODQTY "实际已交货量
B~KUNNR AS CNO "送达方
B~VBELN AS ORDERNO "交货单号
B~KODAT AS ORDERDATE "拣配日期
B~LFART AS CLASS "交货类型
A~VGBEL "参考凭证的凭证号(销售订单号)
A~KDMAT "
D~BSTNK "客户采购订单编号
D~VTWEG "分销渠道
D~VKORG "公司代码
A~VGPOS "参考项目号
FROM LIPS AS A INNER JOIN LIKP AS B ON A~VBELN = B~VBELN
INNER JOIN VBUK AS C ON A~VBELN = C~VBELN
INNER JOIN VBAK AS D ON A~VGBEL = D~VBELN
* INNER JOIN VBUP AS E ON A~VBELN = E~VBELN
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE B~KODAT >= G_DATE1 AND
B~KODAT <= G_DATE2 AND
* D~VKORG = P_BUKRS AND "公司代码
B~LFART = 'LF' AND "交货
A~ERNAM <> 'SD01' AND "去掉补单记录
A~ERNAM <> 'SD02' AND
A~ERNAM <> 'SD03' AND
( D~AUART = 'ZDL' OR "代理销售订单
D~AUART = 'ZOR') AND "
* C~WBSTK <> 'C' AND "说明不包含已发货过账
( C~KOSTK = 'B' OR "全部拣配/堆放状态
C~KOSTK = 'C' ).
* AND C~FKSTK <> 'C'. "出具发票状态
"取单价及金额
LOOP AT IT_PRINT_001.
"取销售收入
REFRESH IT_PRINT_004.
REFRESH IT_PRINT_005.
L_PRICE_SR = 0.
L_PRICE_CB = 0.
SELECT NETPR WAERK KPEIN
FROM VBAP
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_004
WHERE VBELN = IT_PRINT_001-VGBEL AND
MATNR = IT_PRINT_001-PRODNO AND
POSNR = IT_PRINT_001-VGPOS.
LOOP AT IT_PRINT_004.
L_PRICE_SR = IT_PRINT_004-NETPR / IT_PRINT_004-KPEIN.
"取外币汇率及其单价
IF IT_PRINT_004-WAERK <> 'RMB'."取外币汇率及其单价
SELECT UKURS GDATU
FROM TCURR
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_005
WHERE KURST = 'M' "汇率类型
AND FCURR = IT_PRINT_004-WAERK "从货币
AND TCURR = 'RMB'. "最终货币
SORT IT_PRINT_005 DESCENDING BY GDATU.
LOOP AT IT_PRINT_005.
L_PRICE_SR = IT_PRINT_004-NETPR * IT_PRINT_005-UKURS / IT_PRINT_004-KPEIN.
EXIT.
ENDLOOP.
ENDIF.
EXIT.
ENDLOOP.
L_AMOUNT_SR = L_AMOUNT_SR + L_PRICE_SR * IT_PRINT_001-PRODQTY.
"取标准成本
G_BUKRS = IT_PRINT_001-VKORG.
G_PRODNO = IT_PRINT_001-PRODNO.
G_DATE = IT_PRINT_001-ORDERDATE.
PERFORM. F_GET_PRICE.
L_AMOUNT_CB = L_AMOUNT_CB + G_PRICE * IT_PRINT_001-PRODQTY.
ENDLOOP.
"取退货金额
REFRESH IT_PRINT_001.
SELECT A~MATNR AS PRODNO "物料号
A~LFIMG AS PRODQTY "实际已交货量
B~KUNNR AS CNO "送达方
B~VBELN AS ORDERNO "交货单号
B~WADAT_IST AS ORDERDATE "发货过账日期
B~LFART AS CLASS "交货类型
A~VGBEL "参考凭证的凭证号(销售订单号)
A~KDMAT
D~BSTNK "客户采购订单编号
D~VTWEG "分销渠道
D~VKORG
A~VGPOS "参考项目号
FROM LIPS AS A INNER JOIN LIKP AS B ON A~VBELN = B~VBELN
INNER JOIN VBUK AS C ON A~VBELN = C~VBELN
INNER JOIN VBAK AS D ON A~VGBEL = D~VBELN
* INNER JOIN VBUP AS E ON A~VBELN = E~VBELN
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE B~WADAT_IST >= G_DATE1 AND
B~WADAT_IST <= G_DATE2 AND
* D~VKORG = P_BUKRS AND "公司代码
B~LFART = 'LR' AND "退货
A~ERNAM <> 'SD01' AND "去掉补单记录
A~ERNAM <> 'SD02' AND
A~ERNAM <> 'SD03' AND
D~AUART = 'ZRE' AND "标准退货订单
C~WBSTK = 'C'. "已发货过账
* ( C~KOSTK = 'B' OR "全部拣配/堆放状态
* C~KOSTK = 'C' ).
* C~FKSTK <> 'C'. "出具发票状态
"取单价及金额
LOOP AT IT_PRINT_001.
L_PRICE_SR = 0.
L_PRICE_CB = 0.
"取销售收入
REFRESH IT_PRINT_004.
REFRESH IT_PRINT_005.
SELECT NETPR WAERK KPEIN
FROM VBAP
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_004
WHERE VBELN = IT_PRINT_001-VGBEL AND
MATNR = IT_PRINT_001-PRODNO AND
POSNR = IT_PRINT_001-VGPOS.
LOOP AT IT_PRINT_004.
L_PRICE_SR = IT_PRINT_004-NETPR / IT_PRINT_004-KPEIN.
"取外币汇率及其单价
IF IT_PRINT_004-WAERK <> 'RMB'."取外币汇率及其单价
SELECT UKURS GDATU
FROM TCURR
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_005
WHERE KURST = 'M' "汇率类型
AND FCURR = IT_PRINT_004-WAERK "从货币
AND TCURR = 'RMB'. "最终货币
SORT IT_PRINT_005 DESCENDING BY GDATU.
LOOP AT IT_PRINT_005.
L_PRICE_SR = IT_PRINT_004-NETPR * IT_PRINT_005-UKURS / IT_PRINT_004-KPEIN.
EXIT.
ENDLOOP.
ENDIF.
EXIT.
ENDLOOP.
 
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/765243/viewspace-253298/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/765243/viewspace-253298/