sap生产工单报工_abap 获取生产订单标准工时和实际报工工时的报表

这是一个SAP ABAP报告,用于查询生产订单的标准工时和实际报工工时。报告通过选择生产订单、工作中心等条件,从CAUFV、AFVV和AFRU表中获取数据,并计算不同类型的工时。同时,根据工单下单的工时,查找对应的成本价格,展示标准和实际工时的成本。
摘要由CSDN通过智能技术生成

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

*& 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

*          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值