*&---------------------------------------------------------------------*
*& REPORT ZMM_PO_QUERY
*&
*& REPORTNAME :生产订单查询系统
*&---------------------------------------------------------------------*
*& CREATED BY : LIUXINYUAN
*& CREATED DATE : 2015-07-15
*&---------------------------------------------------------------------*
REPORT ZPP_CO_QUERY.
INCLUDE ZPP_CO_QUERY_TOP.
**选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK MAIN WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:S_AUFNR FOR CAUFV-AUFNR.
SELECT-OPTIONS:S_WERKS FOR CAUFV-WERKS.
SELECT-OPTIONS:S_GSTRI FOR CAUFV-GSTRI.
SELECT-OPTIONS:S_GLTRI FOR CAUFV-GLTRI.
SELECTION-SCREEN END OF BLOCK MAIN.
AT SELECTION-SCREEN.
* LOOP AT S_WERKS.
* AUTHORITY-CHECK OBJECT ‘Z_MM_003‘
* ID ‘WERKS‘ FIELD S_WERKS-LOW.
* IF SY-SUBRC <> 0.
* MESSAGE E019(ZMM001) WITH S_WERKS-LOW.
* ENDIF.
* ENDLOOP.
AT SELECTION-SCREEN OUTPUT.
**主程序
START-OF-SELECTION.
PERFORM FRM_SELECT_DATA.
PERFORM FRM_DISPLAY.
*&---------------------------------------------------------------------*
*& FORM FRM_SELECT_DATA
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
*
*----------------------------------------------------------------------*
FORM FRM_SELECT_DATA .
CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR‘
EXPORTING
TEXT = ‘数据读取中.................‘.
REFRESH ITAB.
CLEAR ITAB.
"机器 作业类型 1001
"工资 作业类型 1000
"其它 作业类型 1003
SELECT AUFNR
WERKS
AUART
KDAUF "销售订单编号
KDPOS "销售订单行项目
PLNBEZ
GAMNG
AUFPL
OBJNR
FTRMI
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM CAUFV
WHERE AUFNR IN S_AUFNR
AND WERKS IN S_WERKS
AND GSTRI IN S_GSTRI
AND GLTRI IN S_GLTRI.
IF ITAB[] IS NOT INITIAL.
REFRESH IT_AFVV.
CLEAR IT_AFVV.
SELECT AUFPL
APLZL
VGW01
VGW02
VGW03
INTO TABLE IT_AFVV
FROM AFVV
FOR ALL ENTRIES IN ITAB
WHERE AUFPL = ITAB-AUFPL.
REFRESH IT_AFVC.
CLEAR IT_AFVC.
SELECT AUFPL
APLZL
RUECK
ARBID
INTO TABLE IT_AFVC
FROM AFVC
FOR ALL ENTRIES IN ITAB
WHERE AUFPL = ITAB-AUFPL.
IF IT_AFVC[] IS NOT INITIAL.
REFRESH IT_AFRU.
CLEAR IT_AFRU.
SELECT RUECK
RMZHL
ISM01
ISM02
ISM03
STOKZ
INTO TABLE IT_AFRU
FROM AFRU
FOR ALL ENTRIES IN IT_AFVC
WHERE RUECK = IT_AFVC-RUECK.
REFRESH TIT_AFRU.
CLEAR TIT_AFRU.
LOOP AT IT_AFRU.
TIT_AFRU-RUECK = IT_AFRU-RUECK.
IF IT_AFRU-STOKZ = ‘X‘.
TIT_AFRU-ISM01 = 0 - IT_AFRU-ISM01.
TIT_AFRU-ISM02 = 0 - IT_AFRU-ISM02.
TIT_AFRU-ISM03 = 0 - IT_AFRU-ISM03.
ELSE.
TIT_AFRU-ISM01 = IT_AFRU-ISM01.
TIT_AFRU-ISM02 = IT_AFRU-ISM02.
TIT_AFRU-ISM03 = IT_AFRU-ISM03.
ENDIF.
COLLECT TIT_AFRU.
CLEAR TIT_AFRU.
ENDLOOP.
REFRESH IT_AFRU_VV.
CLEAR IT_AFRU_VV.
LOOP AT TIT_AFRU.
CLEAR IT_AFVC.
READ TABLE IT_AFVC WITH KEY RUECK = TIT_AFRU-RUECK.
IF SY-SUBRC EQ 0.
IT_AFRU_VV-AUFPL = IT_AFVC-AUFPL.
IT_AFRU_VV-APLZL = IT_AFVC-APLZL.
IT_AFRU_VV-ISM01 = TIT_AFRU-ISM01.
IT_AFRU_VV-ISM02 = TIT_AFRU-ISM02.
IT_AFRU_VV-ISM03 = TIT_AFRU-ISM03.
APPEND IT_AFRU_VV.
CLEAR IT_AFRU_VV.
ENDIF.
ENDLOOP.
ENDIF.
DATA:LV_ARBID TYPE AFVC-ARBID,
LV_ARBPL TYPE CRHD-ARBPL.
LOOP AT ITAB.
* 获取标准工时
LOOP AT IT_AFVV WHERE AUFPL = ITAB-AUFPL.
CLEAR LV_ARBID.
CLEAR IT_AFVC.
READ TABLE IT_AFVC WITH KEY AUFPL = IT_AFVV-AUFPL APLZL = IT_AFVV-APLZL.
IF SY-SUBRC EQ 0.
LV_ARBID = IT_AFVC-ARBID.
ENDIF.
CLEAR LV_ARBPL.
SELECT SINGLE
ARBPL
INTO LV_ARBPL
FROM CRHD
WHERE OBJTY = ‘A‘
AND OBJID = LV_ARBID.
DATA:LV_KOSTL TYPE CRCO-KOSTL.
CLEAR LV_KOSTL.
SELECT SINGLE
KOSTL
INTO LV_KOSTL
FROM CRCO
WHERE OBJTY = ‘A‘
AND OBJID = LV_ARBID.
IF LV_ARBPL = ‘STRZP‘ OR LV_ARBPL+0(2) = ‘ZP‘.
ITAB-ZPVGW01 = IT_AFVV-VGW01 * ITAB-GAMNG.
ITAB-ZPVGW02 = IT_AFVV-VGW02 * ITAB-GAMNG.
ITAB-ZPVGW03 = IT_AFVV-VGW03 * ITAB-GAMNG.
ITAB-ZPKOSTL = LV_KOSTL.
ELSEIF LV_ARBPL = ‘STRTS‘ OR LV_ARBPL+0(2) = ‘TS‘.
ITAB-TSVGW01 = IT_AFVV-VGW01 * ITAB-GAMNG.
ITAB-TSVGW02 = IT_AFVV-VGW02 * ITAB-GAMNG.
ITAB-TSVGW03 = IT_AFVV-VGW03 * ITAB-GAMNG.
ITAB-TSKOSTL = LV_KOSTL.
ELSEIF LV_ARBPL = ‘STRLH‘ OR LV_ARBPL+0(2) = ‘LH‘.
ITAB-LHVGW01 = IT_AFVV-VGW01 * ITAB-GAMNG.
ITAB-LHVGW02 = IT_AFVV-VGW02 * ITAB-GAMNG.
ITAB-LHVGW03 = IT_AFVV-VGW03 * ITAB-GAMNG.
ITAB-LHKOSTL = LV_KOSTL.
ELSEIF LV_ARBPL = ‘STRYJ‘ OR LV_ARBPL+0(2) = ‘YJ‘.
ITAB-JYVGW01 = IT_AFVV-VGW01 * ITAB-GAMNG.
ITAB-JYVGW02 = IT_AFVV-VGW02 * ITAB-GAMNG.
ITAB-JYVGW03 = IT_AFVV-VGW03 * ITAB-GAMNG.
ITAB-JYKOSTL = LV_KOSTL.
ELSEIF LV_ARBPL = ‘STRBZ‘ OR LV_ARBPL+0(2) = ‘BZ‘.
ITAB-BZVGW01 = IT_AFVV-VGW01 * ITAB-GAMNG.
ITAB-BZVGW02 = IT_AFVV-VGW02 * ITAB-GAMNG.
ITAB-BZVGW03 = IT_AFVV-VGW03 * ITAB-GAMNG.
ITAB-BZKOSTL = LV_KOSTL.
ENDIF.
***********下面代码依据工单下单的工时,查找标准工时的成本的单位价格,以及计算成本
* CLEAR LV_GJAHR. CLEAR LV_MONTH.
* LV_GJAHR = ITAB-FTRMI+0(4).
* LV_MONTH = ITAB-FTRMI+4(2).
* REFRESH IT_CRCO.
* CLEAR IT_CRCO.
*
* SELECT KOKRS
* KOSTL
* LSTAR
* INTO TABLE IT_CRCO
* FROM CRCO
* WHERE OBJTY = ‘A‘
* AND OBJID = LV_ARBID.
* LOOP AT IT_CRCO.
* CONCATENATE ‘KL‘ IT_CRCO-KOKRS IT_CRCO-KOSTL IT_CRCO-LSTAR INTO IT_CRCO-OBJNR.
* MODIFY IT_CRCO.
* CLEAR IT_CRCO.
* ENDLOOP.
*
*
*
* IF IT_CRCO[] IS NOT INITIAL.
* SELECT LEDNR
* OBJNR
* GJAHR
* WRTTP
* VERSN
* TARKZ
*