前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP 取汇率的程序

ABAP 取汇率的程序

作者头像
matinal
发布2021-12-06 16:51:48
5850
发布2021-12-06 16:51:48
举报
文章被收录于专栏:SAP TechnicalSAP Technical

其实这个报表没有含金亮,只是在写这个报表的时候没有注意2点.1),取汇率的时候没有使用标准的函数去取,所以自己取的时候总是出现问题. 2),表TCURR 中有个"逆算日期"的问题,这2个问题搞得自己有些运乎晕乎的了!~还好最后解决了!~~

代码语言:javascript
复制
*&---------------------------------------------------------------------*

 *& Report ZPPR0035 *

 *& Create By: Chouer

 *& Create date:2007.11.15

 *& Description: 成品原料销售成本分析

 *&---------------------------------------------------------------------*

 *&M O D I F I C A T I O N L O G

 *&---------------------------------------------------------------------*

 **

 **

 ************************************************************************

 **CHANGEDATE POGRAMMER REQUEST DESCRIPTION

 **============= ============== ================== =====================

 **

 **

 *&---------------------------------------------------------------------*

 REPORT ZPPR0035.
TABLES: MKPF,

 MSEG,CRHD.
**---Initial table it_mkpf

 TYPES: BEGIN OF STR_MKPF,

 MBLNR LIKE MKPF-MBLNR, "物料凭证编号

 MJAHR LIKE MKPF-MJAHR, "物料凭证年度

 BUDAT LIKE MKPF-BUDAT, "凭证中的记帐日期

 END OF STR_MKPF.

 DATA: WA_MKPF TYPE STR_MKPF,

 IT_MKPF TYPE TABLE OF STR_MKPF.
**---Initial table it_mseg

 TYPES: BEGIN OF STR_MSEG,

 MBLNR LIKE MSEG-MBLNR, "物料凭证编号

 ZEILE LIKE MSEG-ZEILE,

 MJAHR LIKE MSEG-MJAHR, "物料凭证年度

 SGTXT LIKE MSEG-SGTXT, "项目文本

 AUFNR LIKE MSEG-AUFNR, "订单编码

 MATNR LIKE MSEG-MATNR, "物料号

 MENGE LIKE MSEG-MENGE, "数量

 MEINS LIKE MSEG-MEINS, "基本计量单位

 BWART LIKE MSEG-BWART, "移动类型 (库存管理)

 WAERS LIKE MSEG-WAERS, "货币代码

 CHARG LIKE MSEG-CHARG,

 END OF STR_MSEG.

 DATA: WA_MSEG TYPE STR_MSEG,

 IT_MSEG TYPE TABLE OF STR_MSEG.

 DATA: WA_MSEG2 TYPE STR_MSEG,

 IT_MSEG2 TYPE TABLE OF STR_MSEG.
**---Initial table it_afpo

 TYPES: BEGIN OF STR_AFPO,

 AUFNR LIKE AFPO-AUFNR, "订单编码

 KDAUF LIKE AFPO-KDAUF, "销售订单号

 KDPOS LIKE AFPO-KDPOS, "销售订单行项

 WEMNG LIKE AFPO-WEMNG, "此订单项的收货数量

 MEINS LIKE AFPO-MEINS, "

 END OF STR_AFPO.

 DATA: WA_AFPO TYPE STR_AFPO,

 IT_AFPO TYPE TABLE OF STR_AFPO.
**---Initial table it_aufm

 TYPES: BEGIN OF STR_AUFM,

 AUFNR LIKE AUFM-AUFNR, "订单编码

 MATNR LIKE AUFM-MATNR, "物料号

 BWART LIKE AUFM-BWART, "移动类型 (库存管理)

 MENGE LIKE AUFM-MENGE, "数量

 MEINS LIKE AUFM-MEINS, "基本计量单位

 WERKS LIKE AUFM-WERKS, "plant

 BUDAT LIKE AUFM-BUDAT,

 MBLNR LIKE AUFM-MBLNR,

 MJAHR LIKE AUFM-MJAHR,

 ZEILE LIKE AUFM-ZEILE,

 END OF STR_AUFM.

 DATA: WA_AUFM TYPE STR_AUFM,

 IT_AUFM TYPE TABLE OF STR_AUFM.
**---Initial table it_mbew

 TYPES: BEGIN OF STR_MBEW,

 MATNR LIKE MBEW-MATNR, "物料号

 STPRS LIKE MBEW-STPRS, "标准价格

 END OF STR_MBEW.

 DATA: WA_MBEW TYPE STR_MBEW,

 IT_MBEW TYPE TABLE OF STR_MBEW.
**---Initial table it_mbewh

 TYPES: BEGIN OF STR_MBEWH,

 MATNR LIKE MBEWH-MATNR, "物料号

 LFGJA LIKE MBEWH-LFGJA,

 LFMON LIKE MBEWH-LFMON,

 BWKEY LIKE MBEWH-BWKEY,

 STPRS LIKE MBEWH-STPRS, "标准价格

 END OF STR_MBEWH.

 DATA: WA_MBEWH TYPE STR_MBEWH,

 IT_MBEWH TYPE TABLE OF STR_MBEWH.
**---Initial table it_abap

 TYPES: BEGIN OF STR_VBAP,

 VBELN LIKE VBAP-VBELN, "销售凭证

 POSNR LIKE VBAP-POSNR, "销售凭证 Item

 UMVKN LIKE VBAP-UMVKN, "销售量转换为SKU的值(除数)

 UMVKZ LIKE VBAP-UMVKZ, "销售数量转换成SKU的分子(因子)

 VRKME LIKE VBAP-VRKME, "销售单位

 GEWEI LIKE VBAP-GEWEI, "重量单位

 KWMENG LIKE VBAP-KWMENG, "定单重量

 NETWR LIKE VBAP-NETWR, "净价值

 WAERK LIKE VBAP-WAERK, "SD 凭证货币

 KNUMV LIKE VBAK-KNUMV,

 END OF STR_VBAP.

 DATA: WA_VBAP TYPE STR_VBAP,

 IT_VBAP TYPE TABLE OF STR_VBAP.
**---Initial table it_vbak

 TYPES: BEGIN OF STR_VBAK,

 KNUMV LIKE VBAK-KNUMV,

 VBELN LIKE VBAK-VBELN,

 END OF STR_VBAK.

 DATA: WA_VBAK TYPE STR_VBAK,

 IT_VBAK TYPE TABLE OF STR_VBAK.
**---initial table it_vbkd

 TYPES: BEGIN OF STR_VBKD,

 VBELN LIKE VBKD-VBELN, "销售凭证

 POSNR LIKE VBKD-POSNR, "销售凭证 Item

 PRSDT LIKE VBKD-PRSDT, "定价日期

 KURSK LIKE VBKD-KURSK, "汇率

 END OF STR_VBKD.

 DATA: WA_VBKD TYPE STR_VBKD,

 IT_VBKD TYPE TABLE OF STR_VBKD.
**---Initial table it_konv

 TYPES: BEGIN OF STR_KONV,

 KNUMV LIKE KONV-KNUMV, "单据条件数

 KBETR LIKE KONV-KBETR, "金额

 WAERS LIKE KONV-WAERS, "货币代码

 KPOSN LIKE KONV-KPOSN,

 END OF STR_KONV.

 DATA: WA_KONV TYPE STR_KONV,

 IT_KONV TYPE TABLE OF STR_KONV.

 DATA: WA_KONV2 TYPE STR_KONV,

 IT_KONV2 TYPE TABLE OF STR_KONV.
**---Initial table it_tab

 TYPES: BEGIN OF STR_TAB,

 BUDAT LIKE MKPF-BUDAT, "凭证中的记帐日期

 ZEILE LIKE AUFM-ZEILE,

 WERKS LIKE AUFM-WERKS, "plant

 MBLNR LIKE MSEG-MBLNR, "物料凭证编号

 MJAHR LIKE MSEG-MJAHR, "物料凭证年度

 SGTXT LIKE MSEG-SGTXT, "项目文本

 * AUFNR LIKE MSEG-AUFNR, "订单编码

 MATNR LIKE MSEG-MATNR, "物料号

 MENGE LIKE MSEG-MENGE, "数量

 MEINS LIKE MSEG-MEINS, "基本计量单位

 BWART LIKE MSEG-BWART, "移动类型 (库存管理)

 WAERS LIKE MSEG-WAERS, "货币代码

 KDAUF LIKE AFPO-KDAUF, "销售订单号

 KDPOS LIKE AFPO-KDPOS, "销售订单行项

 WEMNG LIKE AFPO-WEMNG, "此订单项的收货数量

 AUFNR LIKE AUFM-AUFNR, "订单编码

 MATNR_M LIKE AUFM-MATNR, "物料号

 MENGE_M LIKE AUFM-MENGE, "数量

 MEINS_M LIKE AUFM-MEINS, "基本计量单位

 STPRS LIKE MBEW-STPRS, "标准价格

 UMVKN LIKE VBAP-UMVKN, "销售量转换为SKU的值(除数)

 UMVKZ LIKE VBAP-UMVKZ, "销售数量转换成SKU的分子(因子)

 VRKME LIKE VBAP-VRKME, "销售单位

 GEWEI LIKE VBAP-GEWEI, "重量单位

 KWMENG LIKE VBAP-KWMENG, "定单重量

 NETWR LIKE VBAP-NETWR, "净价值

 WAERK LIKE VBAP-WAERK, "SD 凭证货币

 KSCHL LIKE KONV-KSCHL, "条件类型

 KBETR LIKE KONV-KBETR, "金额

 WAERS_S LIKE KONV-WAERS, "货币代码

 KURSK LIKE VBKD-KURSK, "汇率

 XSDDJ TYPE P DECIMALS 3, "销售单单价

 BZ TYPE P DECIMALS 3,

 BZJE TYPE P DECIMALS 3,

 CPJE TYPE P DECIMALS 3,

 END OF STR_TAB.

 DATA: WA_TAB TYPE STR_TAB,

 IT_TAB TYPE TABLE OF STR_TAB.

 DATA: WA_TAB2 TYPE STR_TAB,

 IT_TAB2 TYPE TABLE OF STR_TAB.

 DATA: WA_TAB3 TYPE STR_TAB,

 IT_TAB3 TYPE TABLE OF STR_TAB.

 DATA: DAT_L LIKE MKPF-BUDAT.

 DATA: MY_UKURS LIKE TCURR-UKURS.

 DATA: MY_GDATU LIKE TCURR-GDATU.

 DATA: DAT1(4),

 DAT2(2).
* Type-pools

 TYPE-POOLS: SLIS.

 TYPE-POOLS: IBXX, IBCO2.

 TYPES: IBCO2_VALUE_REC LIKE IBVALUE0.

 TYPES: IBCO2_VALUE_TAB TYPE IBCO2_VALUE_REC OCCURS 0.
DATA: V_SAVE(1) TYPE C,

 V_EXIT(1) TYPE C,

 V_VARIANT1 LIKE DISVARIANT,

 V_VARIANT2 LIKE DISVARIANT.

 DATA C_PROG LIKE SY-REPID.
DATA:FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

 FIELDCAT_LN LIKE LINE OF FIELDCAT,

 SORTCAT TYPE SLIS_T_SORTINFO_ALV,

 LS_SORT TYPE SLIS_SORTINFO_ALV,

 GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

 GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

 GT_EVENTS TYPE SLIS_T_EVENT,

 G_REPID LIKE SY-REPID .
DATA: SC_TITLE(70) TYPE C.
*&---------------------------------------------------------------------*

 **Selection-screen

 *&---------------------------------------------------------------------*

 SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

 SELECT-OPTIONS: S_BUDAT FOR MKPF-BUDAT OBLIGATORY NO-EXTENSION,

 S_ARBPL FOR CRHD-ARBPL OBLIGATORY .

 * S_SGTXT FOR MSEG-SGTXT.

 SELECTION-SCREEN END OF BLOCK B1.

 SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-004.

 PARAMETERS: P_GR1 RADIOBUTTON GROUP G1,

 P_GR2 RADIOBUTTON GROUP G1 DEFAULT 'X'.

 SELECTION-SCREEN END OF BLOCK B3.

 SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-003.

 PARAMETERS: P_VARIN LIKE DISVARIANT-VARIANT.

 SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARIN.

 PERFORM F4_FOR_VARIANT.
*&---------------------------------------------------------------------*

 **Start-of-selection

 *&---------------------------------------------------------------------*

 START-OF-SELECTION.

 PERFORM SELECT_DATA.

 PERFORM SELECT_DATA_MATERIAL.

 PERFORM GET_DATA.

 PERFORM GET_LAST_DATA.
**---显示汇总报表

 IF P_GR2 = 'X'.

 PERFORM GET_TOTAL_DATA.

 ENDIF.

 **---得到标题

 PERFORM GET_TITLE.

 *&---------------------------------------------------------------------*

 *&End-of-selection

 *&---------------------------------------------------------------------*

 END-OF-SELECTION.

 C_PROG = SY-REPID.

 PERFORM INITIALIZE_VARIANT.

 IF P_GR2 = 'X'.

 PERFORM SUB_FIELD_OUT_ALV2 CHANGING FIELDCAT.

 ELSE.

 PERFORM SUB_FIELD_OUT_ALV CHANGING FIELDCAT.

 ENDIF.

 PERFORM SUB_LAYOUT_OUT_ALV CHANGING GS_LAYOUT.

 PERFORM CALL_ALV_DATA_OUTPUT.

 *&---------------------------------------------------------------------*

 *& Form Select_data

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * --> p1 text

 * <-- p2 text

 *----------------------------------------------------------------------*

 FORM SELECT_DATA .

 SELECT MBLNR MJAHR BUDAT

 INTO CORRESPONDING FIELDS OF TABLE IT_MKPF

 FROM MKPF

 WHERE BUDAT IN S_BUDAT.
IF NOT IT_MKPF IS INITIAL.

 SELECT MBLNR MJAHR ZEILE SGTXT AUFNR MATNR MENGE MEINS BWART WAERS

 CHARG

 INTO CORRESPONDING FIELDS OF TABLE IT_MSEG

 FROM MSEG

 FOR ALL ENTRIES IN IT_MKPF

 WHERE MBLNR = IT_MKPF-MBLNR

 AND MJAHR = IT_MKPF-MJAHR

 AND ( BWART = '101' OR BWART = '102' )

 * OR BWART = 'Z31' OR BWART = 'Z32'

 * OR BWART = '531' OR BWART = '532')

 AND SGTXT LIKE 'S%'.

 ENDIF.
LOOP AT IT_MSEG INTO WA_MSEG.
**---取SGTXT前3位作为机台号

 WA_MSEG-SGTXT = WA_MSEG-SGTXT+0(3).
**---移动类型为102 数量取负

 IF WA_MSEG-BWART = '102'.

 WA_MSEG-MENGE = 0 - WA_MSEG-MENGE.

 ENDIF.
MODIFY IT_MSEG FROM WA_MSEG.

 CLEAR WA_MSEG.

 ENDLOOP.
**--删除不符合条件的机台号

 DELETE IT_MSEG WHERE NOT SGTXT IN S_ARBPL.
***---合并生产定单中的数量

 REFRESH IT_MSEG2.

 * IT_MSEG2[] = IT_MSEG[].

 LOOP AT IT_MSEG INTO WA_MSEG.

 MOVE: WA_MSEG-SGTXT TO WA_MSEG2-SGTXT,

 WA_MSEG-AUFNR TO WA_MSEG2-AUFNR,

 WA_MSEG-MATNR TO WA_MSEG2-MATNR,

 WA_MSEG-MENGE TO WA_MSEG2-MENGE,

 WA_MSEG-MEINS TO WA_MSEG2-MEINS,

 WA_MSEG-WAERS TO WA_MSEG2-WAERS.

 COLLECT WA_MSEG2 INTO IT_MSEG2.

 CLEAR:WA_MSEG,WA_MSEG2.

 ENDLOOP.

 ENDFORM. " Select_data
*&---------------------------------------------------------------------*

 *& Form select_data_material

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * --> p1 text

 * <-- p2 text

 *----------------------------------------------------------------------*

 FORM SELECT_DATA_MATERIAL .

 IF NOT IT_MSEG2 IS INITIAL.

 SELECT AUFNR KDAUF KDPOS WEMNG

 INTO CORRESPONDING FIELDS OF TABLE IT_AFPO

 FROM AFPO

 FOR ALL ENTRIES IN IT_MSEG2

 WHERE AUFNR = IT_MSEG2-AUFNR.
SELECT AUFNR MATNR BWART MENGE MEINS BUDAT MBLNR MJAHR ZEILE WERKS

 INTO CORRESPONDING FIELDS OF TABLE IT_AUFM

 FROM AUFM

 FOR ALL ENTRIES IN IT_MSEG2

 WHERE AUFNR = IT_MSEG2-AUFNR

 AND ( BWART = '261' OR BWART = '262'

 * ).

 OR BWART = 'Z31' OR BWART = 'Z32').
IF NOT IT_AUFM IS INITIAL.

 SELECT MATNR STPRS

 INTO CORRESPONDING FIELDS OF TABLE IT_MBEW

 FROM MBEW

 FOR ALL ENTRIES IN IT_AUFM

 WHERE MATNR = IT_AUFM-MATNR

 AND BWKEY = IT_AUFM-WERKS.

 ENDIF.
IF NOT IT_AFPO IS INITIAL.

 SELECT VBELN POSNR UMVKN UMVKZ VRKME

 GEWEI KWMENG NETWR WAERK

 INTO CORRESPONDING FIELDS OF TABLE IT_VBAP

 FROM VBAP

 FOR ALL ENTRIES IN IT_AFPO

 WHERE VBELN = IT_AFPO-KDAUF

 AND POSNR = IT_AFPO-KDPOS.
SELECT VBELN KNUMV

 INTO CORRESPONDING FIELDS OF TABLE IT_VBAK

 FROM VBAK

 FOR ALL ENTRIES IN IT_AFPO

 WHERE VBELN = IT_AFPO-KDAUF.
SELECT VBELN POSNR PRSDT KURSK

 INTO CORRESPONDING FIELDS OF TABLE IT_VBKD

 FROM VBKD

 FOR ALL ENTRIES IN IT_AFPO

 WHERE VBELN = IT_AFPO-KDAUF.

 ENDIF.
LOOP AT IT_VBAP INTO WA_VBAP.

 READ TABLE IT_VBAK INTO WA_VBAK WITH KEY VBELN = WA_VBAP-VBELN.

 IF SY-SUBRC = 0.

 MOVE WA_VBAK-KNUMV TO WA_VBAP-KNUMV.

 MODIFY IT_VBAP FROM WA_VBAP TRANSPORTING KNUMV.

 ENDIF.

 ENDLOOP.
IF NOT IT_VBAP IS INITIAL.

 SELECT KNUMV KSCHL KBETR WAERS KPOSN

 INTO CORRESPONDING FIELDS OF TABLE IT_KONV

 FROM KONV

 FOR ALL ENTRIES IN IT_VBAP

 WHERE KNUMV = IT_VBAP-KNUMV

 AND KPOSN = IT_VBAP-POSNR

 AND ( KSCHL = 'ZVA1' OR KSCHL = 'ZKF0' ).

 ENDIF.

 ENDIF.
LOOP AT IT_VBKD INTO WA_VBKD.

 IF WA_VBKD-KURSK = '1.00000'.

 **---计算输入日期的最后一天

 CALL FUNCTION 'LAST_DAY_OF_MONTHS'

 EXPORTING

 DAY_IN = WA_VBKD-PRSDT

 IMPORTING

 LAST_DAY_OF_MONTH = WA_VBKD-PRSDT

 EXCEPTIONS

 DAY_IN_NO_DATE = 1

 OTHERS = 2.
**--从汇率表中重新取汇率,取该月月末的汇率

 CALL FUNCTION 'READ_EXCHANGE_RATE'

 EXPORTING

 DATE = WA_VBKD-PRSDT

 FOREIGN_CURRENCY = 'USD'

 LOCAL_CURRENCY = 'CNY'

 TYPE_OF_RATE = 'M'

 IMPORTING

 EXCHANGE_RATE = MY_UKURS

 EXCEPTIONS

 NO_RATE_FOUND = 1

 NO_FACTORS_FOUND = 2

 NO_SPREAD_FOUND = 3

 DERIVED_2_TIMES = 4

 OVERFLOW = 5

 ZERO_RATE = 6

 OTHERS = 7.

 MOVE MY_UKURS TO WA_VBKD-KURSK.

 MODIFY IT_VBKD FROM WA_VBKD TRANSPORTING KURSK.

 CLEAR WA_VBKD.

 ENDIF.

 ENDLOOP.

 ENDFORM. " select_data_material
*&---------------------------------------------------------------------*

 *& Form GET_DATA

 *&---------------------------------------------------------------------*

 * 整理数据

 *----------------------------------------------------------------------*

 * --> p1 text

 * <-- p2 text

 *----------------------------------------------------------------------*

 FORM GET_DATA .
**---运费+印花税

 REFRESH IT_KONV2.

 LOOP AT IT_KONV INTO WA_KONV.

 MOVE-CORRESPONDING WA_KONV TO WA_KONV2.

 COLLECT WA_KONV2 INTO IT_KONV2.

 CLEAR: WA_KONV2, WA_KONV.

 ENDLOOP.
REFRESH IT_TAB.

 SORT IT_AUFM BY AUFNR.

 LOOP AT IT_AUFM INTO WA_AUFM.

 MOVE: WA_AUFM-AUFNR TO WA_TAB-AUFNR,

 WA_AUFM-MATNR TO WA_TAB-MATNR_M,

 WA_AUFM-MEINS TO WA_TAB-MEINS_M.

 * WA_AUFM-BUDAT TO WA_TAB-BUDAT,

 * WA_AUFM-MBLNR TO WA_TAB-MBLNR,

 * WA_AUFM-MJAHR TO WA_TAB-MJAHR,

 * WA_AUFM-ZEILE TO WA_TAB-ZEILE.
IF WA_AUFM-BWART = '262' OR WA_AUFM-BWART = 'Z31'.

 WA_TAB-MENGE_M = 0 - WA_AUFM-MENGE.

 ELSE.

 MOVE: WA_AUFM-MENGE TO WA_TAB-MENGE_M.

 ENDIF.
**----计算物料的标准价格

 PERFORM GET_BZJG_HISTORY USING WA_AUFM-BUDAT

 WA_AUFM-MATNR

 WA_AUFM-WERKS

 CHANGING WA_TAB-STPRS.
**---如果价格为空,就去当月的标准价格

 IF WA_TAB-STPRS = ''.

 READ TABLE IT_MBEW INTO WA_MBEW WITH KEY MATNR = WA_TAB-MATNR_M.

 IF SY-SUBRC = 0.

 MOVE: WA_MBEW-STPRS TO WA_TAB-STPRS.

 ENDIF.

 ENDIF.
APPEND WA_TAB TO IT_TAB.

 CLEAR: WA_TAB,WA_AUFM.

 ENDLOOP.
LOOP AT IT_TAB INTO WA_TAB.

 READ TABLE IT_AFPO INTO WA_AFPO WITH KEY AUFNR = WA_TAB-AUFNR.

 IF SY-SUBRC = 0.

 MOVE: WA_AFPO-KDAUF TO WA_TAB-KDAUF,

 WA_AFPO-KDPOS TO WA_TAB-KDPOS,

 WA_AFPO-WEMNG TO WA_TAB-WEMNG.
READ TABLE IT_VBAP INTO WA_VBAP WITH KEY VBELN = WA_AFPO-KDAUF

 POSNR = WA_AFPO-KDPOS.

 IF SY-SUBRC = 0.

 MOVE:WA_VBAP-UMVKN TO WA_TAB-UMVKN,

 WA_VBAP-UMVKZ TO WA_TAB-UMVKZ,

 WA_VBAP-VRKME TO WA_TAB-VRKME,

 WA_VBAP-GEWEI TO WA_TAB-GEWEI,

 WA_VBAP-KWMENG TO WA_TAB-KWMENG,

 WA_VBAP-NETWR TO WA_TAB-NETWR,

 WA_VBAP-WAERK TO WA_TAB-WAERK.
ENDIF.
**---取汇率

 READ TABLE IT_VBKD INTO WA_VBKD WITH KEY VBELN = WA_AFPO-KDAUF.

 IF SY-SUBRC = 0.

 MOVE: WA_VBKD-KURSK TO WA_TAB-KURSK.

 ENDIF.
**---取运输费和印花税

 READ TABLE IT_VBAP INTO WA_VBAP WITH KEY VBELN = WA_AFPO-KDAUF

 POSNR = WA_AFPO-KDPOS.

 IF SY-SUBRC = 0.

 READ TABLE IT_KONV2 INTO WA_KONV2

 WITH KEY KNUMV = WA_VBAP-KNUMV.

 IF SY-SUBRC = 0.

 MOVE: WA_KONV2-KBETR TO WA_TAB-KBETR,

 WA_KONV2-WAERS TO WA_TAB-WAERS_S.

 ENDIF.

 ENDIF.

 ENDIF.
READ TABLE IT_MSEG2 INTO WA_MSEG2 WITH KEY AUFNR = WA_TAB-AUFNR.

 IF SY-SUBRC = 0.

 MOVE:WA_MSEG2-SGTXT TO WA_TAB-SGTXT,

 WA_MSEG2-MATNR TO WA_TAB-MATNR,

 WA_MSEG2-MENGE TO WA_TAB-MENGE,

 WA_MSEG2-MEINS TO WA_TAB-MEINS,

 WA_MSEG2-BWART TO WA_TAB-BWART,

 WA_MSEG2-WAERS TO WA_TAB-WAERS.

 ENDIF.
**---计算成品数量/已交货数量*单个原料的数量

 IF WA_TAB-WEMNG = 0.

 * MESSAGE '已交货数量不能为0' TYPE 'E'.

 * STOP.

 ELSE.

 WA_TAB-BZ = WA_TAB-MENGE / WA_TAB-WEMNG * WA_TAB-MENGE_M.

 ENDIF.

 MODIFY IT_TAB FROM WA_TAB.

 CLEAR: WA_TAB,WA_AFPO,WA_MBEW,WA_MSEG2.

 ENDLOOP.

 ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*

 *& Form GET_LAST_DATA

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * --> p1 text

 * <-- p2 text

 *----------------------------------------------------------------------*

 FORM GET_LAST_DATA .

 LOOP AT IT_TAB INTO WA_TAB.

 **---若单位为'EA'的,成品的单价为0

 IF WA_TAB-VRKME = 'EA'.

 WA_TAB-XSDDJ = 0.

 ELSE.

 **---计算单价

 IF WA_TAB-KWMENG = 0.

 * MESSAGE '销售定单的数量不能为0' TYPE 'E'.

 * STOP.

 ELSE.

 WA_TAB-XSDDJ = WA_TAB-NETWR / WA_TAB-KWMENG.

 ENDIF.
**---减去运费和印花税

 WA_TAB-XSDDJ = WA_TAB-XSDDJ - WA_TAB-KBETR.
**---转换成人民币/KG

 IF WA_TAB-WAERK = 'USD'.

 WA_TAB-XSDDJ = WA_TAB-XSDDJ * WA_TAB-KURSK

 / ( WA_TAB-UMVKZ / WA_TAB-UMVKN ).

 ELSEIF WA_TAB-WAERK = 'CNY'.

 WA_TAB-XSDDJ = WA_TAB-XSDDJ

 / ( WA_TAB-UMVKZ / WA_TAB-UMVKN ).

 ELSEIF WA_TAB-WAERK = ''.

 WA_TAB-XSDDJ = 0.

 ENDIF.

 ENDIF.

 **---去掉工单和销售单前面的0

 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

 EXPORTING

 INPUT = WA_TAB-AUFNR

 IMPORTING

 OUTPUT = WA_TAB-AUFNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

 EXPORTING

 INPUT = WA_TAB-KDAUF

 IMPORTING

 OUTPUT = WA_TAB-KDAUF.
**---计算比例原料的金额

 WA_TAB-BZJE = WA_TAB-BZ * WA_TAB-STPRS.
MODIFY IT_TAB FROM WA_TAB.

 CLEAR WA_TAB.

 ENDLOOP.
LOOP AT IT_TAB INTO WA_TAB.

 MOVE: WA_TAB-AUFNR TO WA_TAB3-AUFNR,

 WA_TAB-MATNR_M TO WA_TAB3-MATNR_M,

 WA_TAB-MENGE_M TO WA_TAB3-MENGE_M,

 WA_TAB-MEINS_M TO WA_TAB3-MEINS_M,

 WA_TAB-BZ TO WA_TAB3-BZ,

 WA_TAB-BZJE TO WA_TAB3-BZJE.

 COLLECT WA_TAB3 INTO IT_TAB3.

 CLEAR: WA_TAB,WA_TAB3.

 ENDLOOP.
LOOP AT IT_TAB3 INTO WA_TAB3.

 READ TABLE IT_TAB INTO WA_TAB WITH KEY AUFNR = WA_TAB3-AUFNR

 MATNR_M = WA_TAB3-MATNR_M.

 IF SY-SUBRC = 0.

 MOVE: WA_TAB-SGTXT TO WA_TAB3-SGTXT,

 WA_TAB-MENGE TO WA_TAB3-MENGE,

 WA_TAB-MEINS TO WA_TAB3-MEINS,

 WA_TAB-XSDDJ TO WA_TAB3-XSDDJ,

 WA_TAB-KDAUF TO WA_TAB3-KDAUF,

 WA_TAB-KDPOS TO WA_TAB3-KDPOS,

 WA_TAB-MATNR TO WA_TAB3-MATNR,

 WA_TAB-STPRS TO WA_TAB3-STPRS,

 WA_TAB-KURSK TO WA_TAB3-KURSK.

 ENDIF.

 MODIFY IT_TAB3 FROM WA_TAB3.

 CLEAR: WA_TAB,WA_TAB3.

 ENDLOOP.
REFRESH IT_TAB.

 IT_TAB[] = IT_TAB3[].
ENDFORM. " GET_LAST_DATA

 *&---------------------------------------------------------------------*

 *& Form INITIALIZE_VARIANT

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * --> p1 text

 * <-- p2 text

 *----------------------------------------------------------------------*

 FORM INITIALIZE_VARIANT .

 CLEAR V_VARIANT1.

 V_SAVE = 'A'.

 V_VARIANT1-REPORT = C_PROG.

 V_VARIANT2 = V_VARIANT1.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

 EXPORTING

 I_SAVE = V_SAVE

 CHANGING

 CS_VARIANT = V_VARIANT2

 EXCEPTIONS

 NOT_FOUND = 2.
IF SY-SUBRC = 0.

 P_VARIN = V_VARIANT2-VARIANT.

 ENDIF.
ENDFORM. " INITIALIZE_VARIANT

 *&---------------------------------------------------------------------*

 *& Form SUB_FIELD_OUT_ALV

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * <--P_FIELDCAT text

 *----------------------------------------------------------------------*

 FORM SUB_FIELD_OUT_ALV CHANGING P_FIELDCAT.

 * FIELDCAT_LN-FIELDNAME = 'BUDAT' .

 * FIELDCAT_LN-KEY = 'X'.

 * FIELDCAT_LN-SELTEXT_L = '记帐日期'.

 * APPEND FIELDCAT_LN TO FIELDCAT.

 *

 * FIELDCAT_LN-FIELDNAME = 'MBLNR' .

 * FIELDCAT_LN-KEY = 'X'.

 * FIELDCAT_LN-SELTEXT_L = '物料凭证'.

 * APPEND FIELDCAT_LN TO FIELDCAT.

 *

 * FIELDCAT_LN-FIELDNAME = 'MJAHR' .

 * FIELDCAT_LN-KEY = 'X'.

 * FIELDCAT_LN-SELTEXT_L = '年度'.

 * APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'SGTXT' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '机台'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'AUFNR' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '订单编码'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MATNR' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '物料号码(成品)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MENGE' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '物料数量(成品)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MEINS' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '单位(成品)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'XSDDJ' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '成品单价(RMB/KG)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'KDAUF' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '销售订单号'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'KDPOS' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '销售订单行项'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MATNR_M' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '物料号码(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MENGE_M' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '物料数量(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MEINS_M' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '单位(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'STPRS' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '标准单价(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'BZ' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '比例用量(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'BZJE' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '比例金额(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'KURSK' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '汇率'.

 APPEND FIELDCAT_LN TO FIELDCAT.
ENDFORM. " SUB_FIELD_OUT_ALV

 *&---------------------------------------------------------------------*

 *& Form SUB_LAYOUT_OUT_ALV

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * <--P_GS_LAYOUT text

 *----------------------------------------------------------------------*

 FORM SUB_LAYOUT_OUT_ALV CHANGING P_GS_LAYOUT.

 GS_LAYOUT-ZEBRA = 'X'. " 斑马线表示

 GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. " 最适合列宽

 ENDFORM. " sub_layout_out_alv
*&---------------------------------------------------------------------*

 *& Form CALL_ALV_DATA_OUTPUT

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * --> p1 text

 * <-- p2 text

 *----------------------------------------------------------------------*

 FORM CALL_ALV_DATA_OUTPUT .

 IF P_GR2 = 'X'.

 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

 EXPORTING

 I_CALLBACK_PROGRAM = G_REPID

 IS_LAYOUT = GS_LAYOUT

 I_GRID_TITLE = SC_TITLE

 IT_FIELDCAT = FIELDCAT

 IT_SORT = SORTCAT

 I_SAVE = 'A'

 IS_VARIANT = V_VARIANT2

 * IT_EVENTS = GT_EVENTS[]

 TABLES

 T_OUTTAB = IT_TAB2

 EXCEPTIONS

 PROGRAM_ERROR = 1

 OTHERS = 2.

 IF SY-SUBRC NE 0.

 WRITE: 'SY-SUBRC: ', SY-SUBRC,

 'REUSE_ALV_GRID_DISPLAY'.

 ENDIF.
ELSE.

 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

 EXPORTING

 I_CALLBACK_PROGRAM = G_REPID

 IS_LAYOUT = GS_LAYOUT

 I_GRID_TITLE = SC_TITLE

 IT_FIELDCAT = FIELDCAT

 IT_SORT = SORTCAT

 I_SAVE = 'A'

 IS_VARIANT = V_VARIANT2

 * IT_EVENTS = GT_EVENTS[]

 TABLES

 T_OUTTAB = IT_TAB

 EXCEPTIONS

 PROGRAM_ERROR = 1

 OTHERS = 2.

 IF SY-SUBRC NE 0.

 WRITE: 'SY-SUBRC: ', SY-SUBRC,

 'REUSE_ALV_GRID_DISPLAY'.

 ENDIF.

 ENDIF.

 ENDFORM. " CALL_ALV_DATA_OUTPUT
*&---------------------------------------------------------------------*

 *& Form F4_FOR_VARIANT

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * --> p1 text

 * <-- p2 text

 *----------------------------------------------------------------------*

 FORM F4_FOR_VARIANT .

 CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

 EXPORTING

 IS_VARIANT = V_VARIANT1

 I_SAVE = V_SAVE

 IMPORTING

 E_EXIT = V_EXIT

 ES_VARIANT = V_VARIANT2

 EXCEPTIONS

 NOT_FOUND = 2.
IF SY-SUBRC = 2.

 MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO

 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

 ELSE.

 IF V_EXIT = SPACE.

 P_VARIN = V_VARIANT2-VARIANT.

 ENDIF.

 ENDIF.
ENDFORM. " F4_FOR_VARIANT
*&---------------------------------------------------------------------*

 *& Form get_total_data

 *&---------------------------------------------------------------------*

 * 输出汇总的报表

 *----------------------------------------------------------------------*

 * --> p1 text

 * <-- p2 text

 *----------------------------------------------------------------------*

 FORM GET_TOTAL_DATA .

 REFRESH IT_TAB2.

 LOOP AT IT_TAB INTO WA_TAB.

 MOVE:

 * WA_TAB-MBLNR TO WA_TAB2-MBLNR,

 * WA_TAB-MJAHR TO WA_TAB2-MJAHR,

 WA_TAB-SGTXT TO WA_TAB2-SGTXT,

 WA_TAB-MATNR TO WA_TAB2-MATNR,

 WA_TAB-WAERS TO WA_TAB2-WAERS,

 WA_TAB-KDAUF TO WA_TAB2-KDAUF,

 WA_TAB-KDPOS TO WA_TAB2-KDPOS,

 WA_TAB-AUFNR TO WA_TAB2-AUFNR,

 WA_TAB-BZJE TO WA_TAB2-BZJE,

 WA_TAB-MENGE_M TO WA_TAB2-MENGE_M,

 WA_TAB-MEINS_M TO WA_TAB2-MEINS_M,

 WA_TAB-BZ TO WA_TAB2-BZ.

 COLLECT WA_TAB2 INTO IT_TAB2.

 CLEAR: WA_TAB,WA_TAB2.

 ENDLOOP.
LOOP AT IT_TAB2 INTO WA_TAB2.

 READ TABLE IT_TAB INTO WA_TAB WITH KEY

 * MBLNR = WA_TAB2-MBLNR

 * MJAHR = WA_TAB2-MJAHR

 SGTXT = WA_TAB2-SGTXT

 AUFNR = WA_TAB2-AUFNR

 MATNR = WA_TAB2-MATNR.

 IF SY-SUBRC = 0.

 **---计算成品的总金额

 WA_TAB2-CPJE = WA_TAB-MENGE * WA_TAB-XSDDJ.
**---合并

 MOVE:WA_TAB-MENGE TO WA_TAB2-MENGE,

 WA_TAB-MEINS TO WA_TAB2-MEINS,

 WA_TAB-XSDDJ TO WA_TAB2-XSDDJ,

 WA_TAB-KURSK TO WA_TAB2-KURSK.

 ENDIF.
MODIFY IT_TAB2 FROM WA_TAB2.

 ENDLOOP.

 ENDFORM. " get_total_data
*&---------------------------------------------------------------------*

 *& Form SUB_FIELD_OUT_ALV2

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * <--P_FIELDCAT text

 *----------------------------------------------------------------------*

 FORM SUB_FIELD_OUT_ALV2 CHANGING P_FIELDCAT.

 * FIELDCAT_LN-FIELDNAME = 'MBLNR' .

 * FIELDCAT_LN-KEY = 'X'.

 * FIELDCAT_LN-SELTEXT_L = '物料凭证'.

 * APPEND FIELDCAT_LN TO FIELDCAT.

 *

 * FIELDCAT_LN-FIELDNAME = 'MJAHR' .

 * FIELDCAT_LN-KEY = 'X'.

 * FIELDCAT_LN-SELTEXT_L = '年度'.

 * APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'SGTXT' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '机台'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'AUFNR' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '订单编码'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MATNR' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '物料号码(成品)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MENGE' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '物料数量(成品)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MEINS' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '单位(成品)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'XSDDJ' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '成品单价(RMB/KG)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'CPJE' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '成品总金额'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'KDAUF' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '销售订单号'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'KDPOS' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '销售订单行项'.

 APPEND FIELDCAT_LN TO FIELDCAT.
* FIELDCAT_LN-FIELDNAME = 'MATNR_M' .

 * FIELDCAT_LN-KEY = 'X'.

 * FIELDCAT_LN-SELTEXT_L = '物料号码(原料)'.

 * APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MENGE_M' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '物料数量(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'MEINS_M' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '单位(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
* FIELDCAT_LN-FIELDNAME = 'STPRS' .

 * FIELDCAT_LN-KEY = 'X'.

 * FIELDCAT_LN-SELTEXT_L = '标准单价(原料)'.

 * APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'BZ' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '比例用量(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'BZJE' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '比例总金额(原料)'.

 APPEND FIELDCAT_LN TO FIELDCAT.
FIELDCAT_LN-FIELDNAME = 'KURSK' .

 FIELDCAT_LN-KEY = 'X'.

 FIELDCAT_LN-SELTEXT_L = '汇率'.

 ENDFORM. " SUB_FIELD_OUT_ALV2
*&---------------------------------------------------------------------*

 *& Form GET_TITLE

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * --> p1 text

 * <-- p2 text

 *----------------------------------------------------------------------*

 FORM GET_TITLE .

 DATA: DAT(28) TYPE C,

 JT(20).

 IF S_BUDAT IS INITIAL.

 CONCATENATE '记帐日期:' '全部日期'INTO DAT.

 ELSEIF S_BUDAT-LOW <> '' AND S_BUDAT-HIGH = ''.

 CONCATENATE '记帐日期:' S_BUDAT-LOW INTO DAT.

 ELSEIF S_BUDAT-LOW <> '' AND S_BUDAT-HIGH <> ''.

 CONCATENATE '记帐日期:' S_BUDAT-LOW '~' S_BUDAT-HIGH INTO DAT.

 ELSEIF S_BUDAT-LOW = '' AND S_BUDAT-HIGH <> ''.

 CONCATENATE '记帐日期:' '00000000 ' '~' S_BUDAT-HIGH INTO DAT.

 ENDIF.
IF S_ARBPL IS INITIAL.

 CONCATENATE '机台号码:' '全部日期'INTO JT.

 ELSEIF S_ARBPL-LOW <> '' AND S_ARBPL-HIGH = ''.

 CONCATENATE '机台号码:' S_ARBPL-LOW INTO JT.

 ELSEIF S_ARBPL-LOW <> '' AND S_ARBPL-HIGH <> ''.

 CONCATENATE '机台号码:' S_ARBPL-LOW '~' S_ARBPL-HIGH INTO JT.

 ELSEIF S_ARBPL-LOW = '' AND S_ARBPL-HIGH <> ''.

 CONCATENATE '机台号码:' '00000000 ' '~' S_ARBPL-HIGH INTO JT.

 ENDIF.
**---合并日期与机台

 CONCATENATE DAT ' ' JT INTO SC_TITLE(70).
ENDFORM. " GET_TITLE

 *&---------------------------------------------------------------------*

 *& Form GET_BZJG_HISTORY

 *&---------------------------------------------------------------------*

 * text

 *----------------------------------------------------------------------*

 * -->P_DAT text

 * -->P_WA_TAB_MATNR_M text

 * -->P_WA_TAB_WERKS text

 * <--P_WA_TAB_STPRS text

 *----------------------------------------------------------------------*

 FORM GET_BZJG_HISTORY USING P_BUDAT LIKE AUFM-BUDAT

 P_MATNR LIKE AUFM-MATNR

 P_WERKS LIKE AUFM-WERKS

 CHANGING P_STPRS LIKE MBEWH-STPRS.
**---计算输入日期的最后一天

 CALL FUNCTION 'LAST_DAY_OF_MONTHS'

 EXPORTING

 DAY_IN = P_BUDAT

 IMPORTING

 LAST_DAY_OF_MONTH = DAT_L

 EXCEPTIONS

 DAY_IN_NO_DATE = 1

 OTHERS = 2.

 **---计算输入日期的下一个月

 DAT_L = DAT_L + 1.

 DAT1 = DAT_L+(4).

 DAT2 = DAT_L+4(2).
**---取历史单价表里面的标准价格

 SELECT SINGLE STPRS

 INTO P_STPRS

 FROM MBEWH

 WHERE MATNR = P_MATNR

 AND BWKEY = P_WERKS

 AND LFGJA = DAT1

 AND LFMON = DAT2.
ENDFORM. " GET_BZJG_HISTORY
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档