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

Posted jzdwajue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了abap 获取生产订单标准工时和实际报工工时的报表相关的知识,希望对你有一定的参考价值。

*&---------------------------------------------------------------------*
*& 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
*  <--  P2        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
*                      PERBL
*
*                      TKG001
*                      TKG002
*                      TKG003
*                      TKG004
*                      TKG005
*                      TKG006
*                      TKG007
*                      TKG008
*                      TKG009
*                      TKG010
*                      TKG011
*                      TKG012
*
*                      TKE001
*                      TKE002
*                      TKE003
*                      TKE004
*                      TKE005
*                      TKE006
*                      TKE007
*                      TKE008
*                      TKE009
*                      TKE010
*                      TKE011
*                      TKE012
*                      INTO TABLE IT_COST
*                      FROM COST
*                      FOR ALL ENTRIES IN IT_CRCO
*                      WHERE LEDNR = ‘00‘
*                        AND OBJNR = IT_CRCO-OBJNR
*                        AND GJAHR = LV_GJAHR
*                        AND TARKZ = ‘001‘.
*
*              CLEAR LV_TKG01.
*              CLEAR LV_TKE01.
*              CLEAR LV_TKG02.
*              CLEAR LV_TKE02.
*              CLEAR LV_TKG03.
*              CLEAR LV_TKE03.
*
*              LOOP AT IT_COST.
*                    IF IT_COST+17(4) = ‘1001‘.
*                       IF LV_MONTH = ‘01‘.
*                           LV_TKG01 = IT_COST-TKG001.
*                           LV_TKE01 = IT_COST-TKE001.
*                       ELSEIF LV_MONTH = ‘02‘.
*                           LV_TKG01 = IT_COST-TKG002.
*                           LV_TKE01 = IT_COST-TKE002.
*                       ELSEIF LV_MONTH = ‘03‘.
*                           LV_TKG01 = IT_COST-TKG003.
*                           LV_TKE01 = IT_COST-TKE003.
*                       ELSEIF LV_MONTH = ‘04‘.
*                           LV_TKG01 = IT_COST-TKG004.
*                           LV_TKE01 = IT_COST-TKE004.
*                       ELSEIF LV_MONTH = ‘05‘.
*                           LV_TKG01 = IT_COST-TKG005.
*                           LV_TKE01 = IT_COST-TKE005.
*                       ELSEIF LV_MONTH = ‘06‘.
*                           LV_TKG01 = IT_COST-TKG006.
*                           LV_TKE01 = IT_COST-TKE006.
*                       ELSEIF LV_MONTH = ‘07‘.
*                           LV_TKG01 = IT_COST-TKG007.
*                           LV_TKE01 = IT_COST-TKE007.
*                       ELSEIF LV_MONTH = ‘08‘.
*                           LV_TKG01 = IT_COST-TKG008.
*                           LV_TKE01 = IT_COST-TKE008.
*                       ELSEIF LV_MONTH = ‘09‘.
*                           LV_TKG01 = IT_COST-TKG009.
*                           LV_TKE01 = IT_COST-TKE009.
*                       ELSEIF LV_MONTH = ‘10‘.
*                           LV_TKG01 = IT_COST-TKG010.
*                           LV_TKE01 = IT_COST-TKE010.
*                       ELSEIF LV_MONTH = ‘11‘.
*                           LV_TKG01 = IT_COST-TKG011.
*                           LV_TKE01 = IT_COST-TKE011.
*                       ELSEIF LV_MONTH = ‘12‘.
*                           LV_TKG01 = IT_COST-TKG012.
*                           LV_TKE01 = IT_COST-TKE012.
*                       ENDIF.
*
*                    ELSEIF IT_COST+17(4) = ‘1000‘.
*                       IF LV_MONTH = ‘01‘.
*                           LV_TKG02 = IT_COST-TKG001.
*                           LV_TKE02 = IT_COST-TKE001.
*                       ELSEIF LV_MONTH = ‘02‘.
*                           LV_TKG02 = IT_COST-TKG002.
*                           LV_TKE02 = IT_COST-TKE002.
*                       ELSEIF LV_MONTH = ‘03‘.
*                           LV_TKG02 = IT_COST-TKG003.
*                           LV_TKE02 = IT_COST-TKE003.
*                       ELSEIF LV_MONTH = ‘04‘.
*                           LV_TKG02 = IT_COST-TKG004.
*                           LV_TKE02 = IT_COST-TKE004.
*                       ELSEIF LV_MONTH = ‘05‘.
*                           LV_TKG02 = IT_COST-TKG005.
*                           LV_TKE02 = IT_COST-TKE005.
*                       ELSEIF LV_MONTH = ‘06‘.
*                           LV_TKG02 = IT_COST-TKG006.
*                           LV_TKE02 = IT_COST-TKE006.
*                       ELSEIF LV_MONTH = ‘07‘.
*                           LV_TKG02 = IT_COST-TKG007.
*                           LV_TKE02 = IT_COST-TKE007.
*                       ELSEIF LV_MONTH = ‘08‘.
*                           LV_TKG02 = IT_COST-TKG008.
*                           LV_TKE02 = IT_COST-TKE008.
*                       ELSEIF LV_MONTH = ‘09‘.
*                           LV_TKG02 = IT_COST-TKG009.
*                           LV_TKE02 = IT_COST-TKE009.
*                       ELSEIF LV_MONTH = ‘10‘.
*                           LV_TKG02 = IT_COST-TKG010.
*                           LV_TKE02 = IT_COST-TKE010.
*                       ELSEIF LV_MONTH = ‘11‘.
*                           LV_TKG02 = IT_COST-TKG011.
*                           LV_TKE02 = IT_COST-TKE011.
*                       ELSEIF LV_MONTH = ‘12‘.
*                           LV_TKG02 = IT_COST-TKG012.
*                           LV_TKE02 = IT_COST-TKE012.
*                       ENDIF.
*                    ELSEIF IT_COST+17(4) = ‘1003‘.
*                       IF LV_MONTH = ‘01‘.
*                           LV_TKG03 = IT_COST-TKG001.
*                           LV_TKE03 = IT_COST-TKE001.
*                       ELSEIF LV_MONTH = ‘02‘.
*                           LV_TKG03 = IT_COST-TKG002.
*                           LV_TKE03 = IT_COST-TKE002.
*                       ELSEIF LV_MONTH = ‘03‘.
*                           LV_TKG03 = IT_COST-TKG003.
*                           LV_TKE03 = IT_COST-TKE003.
*                       ELSEIF LV_MONTH = ‘04‘.
*                           LV_TKG03 = IT_COST-TKG004.
*                           LV_TKE03 = IT_COST-TKE004.
*                       ELSEIF LV_MONTH = ‘05‘.
*                           LV_TKG03 = IT_COST-TKG005.
*                           LV_TKE03 = IT_COST-TKE005.
*                       ELSEIF LV_MONTH = ‘06‘.
*                           LV_TKG03 = IT_COST-TKG006.
*                           LV_TKE03 = IT_COST-TKE006.
*                       ELSEIF LV_MONTH = ‘07‘.
*                           LV_TKG03 = IT_COST-TKG007.
*                           LV_TKE03 = IT_COST-TKE007.
*                       ELSEIF LV_MONTH = ‘08‘.
*                           LV_TKG03 = IT_COST-TKG008.
*                           LV_TKE03 = IT_COST-TKE008.
*                       ELSEIF LV_MONTH = ‘09‘.
*                           LV_TKG03 = IT_COST-TKG009.
*                           LV_TKE03 = IT_COST-TKE009.
*                       ELSEIF LV_MONTH = ‘10‘.
*                           LV_TKG03 = IT_COST-TKG010.
*                           LV_TKE03 = IT_COST-TKE010.
*                       ELSEIF LV_MONTH = ‘11‘.
*                           LV_TKG03 = IT_COST-TKG011.
*                           LV_TKE03 = IT_COST-TKE011.
*                       ELSEIF LV_MONTH = ‘12‘.
*                           LV_TKG03 = IT_COST-TKG012.
*                           LV_TKE03 = IT_COST-TKE012.
*                       ENDIF.
*                    ENDIF.
*              ENDLOOP.
*           ENDIF.
*
*
*              ITAB-ZPVGW01 * LV_TKG01 / LV_TKE01
*              ITAB-ZPVGW02 * LV_TKG02 / LV_TKE01
*              ITAB-ZPVGW03 * LV_TKG03 / LV_TKE01
*
*              ITAB-TSVGW01 * LV_TKG01 / LV_TKE01
*              ITAB-TSVGW02 * LV_TKG02 / LV_TKE01
*              ITAB-TSVGW03 * LV_TKG03 / LV_TKE01
*
*              ITAB-LHVGW01 * LV_TKG01 / LV_TKE01
*              ITAB-LHVGW02 * LV_TKG02 / LV_TKE01
*              ITAB-LHVGW03 * LV_TKG03 / LV_TKE01
*
*              ITAB-JYVGW01 * LV_TKG01 / LV_TKE01
*              ITAB-JYVGW02 * LV_TKG02 / LV_TKE01
*              ITAB-JYVGW03 * LV_TKG03 / LV_TKE01
*
*              ITAB-BZVGW01 * LV_TKG01 / LV_TKE01
*              ITAB-BZVGW02 * LV_TKG02 / LV_TKE01
*              ITAB-BZVGW03 * LV_TKG03 / LV_TKE01
*
************下面代码依据工单下单的工时,查找标准工时的成本的单位价格,以及计算成本



        ENDLOOP.





*       获取实际工时
        LOOP AT IT_AFRU_VV WHERE AUFPL = ITAB-AUFPL.
           CLEAR LV_ARBID.
           CLEAR IT_AFVC.
           READ TABLE IT_AFVC WITH KEY AUFPL = IT_AFRU_VV-AUFPL APLZL = IT_AFRU_VV-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.

           IF LV_ARBPL = ‘STRZP‘ OR LV_ARBPL+0(2) = ‘ZP‘.
              ITAB-BZPVGW01 = IT_AFRU_VV-ISM01.
              ITAB-BZPVGW02 = IT_AFRU_VV-ISM02.
              ITAB-BZPVGW03 = IT_AFRU_VV-ISM03.
           ELSEIF LV_ARBPL = ‘STRTS‘ OR LV_ARBPL+0(2) = ‘TS‘.
              ITAB-BTSVGW01 = IT_AFRU_VV-ISM01.
              ITAB-BTSVGW02 = IT_AFRU_VV-ISM02.
              ITAB-BTSVGW03 = IT_AFRU_VV-ISM03.
           ELSEIF LV_ARBPL = ‘STRLH‘ OR LV_ARBPL+0(2) = ‘LH‘.
              ITAB-BLHVGW01 = IT_AFRU_VV-ISM01.
              ITAB-BLHVGW02 = IT_AFRU_VV-ISM02.
              ITAB-BLHVGW03 = IT_AFRU_VV-ISM03.
           ELSEIF LV_ARBPL = ‘STRYJ‘ OR LV_ARBPL+0(2) = ‘YJ‘.
              ITAB-BJYVGW01 = IT_AFRU_VV-ISM01.
              ITAB-BJYVGW02 = IT_AFRU_VV-ISM02.
              ITAB-BJYVGW03 = IT_AFRU_VV-ISM03.
           ELSEIF LV_ARBPL = ‘STRBZ‘ OR LV_ARBPL+0(2) = ‘BZ‘.
              ITAB-BBZVGW01 = IT_AFRU_VV-ISM01.
              ITAB-BBZVGW02 = IT_AFRU_VV-ISM02.
              ITAB-BBZVGW03 = IT_AFRU_VV-ISM03.
           ENDIF.
        ENDLOOP.



        MODIFY ITAB.
        CLEAR ITAB.
   ENDLOOP.
ENDIF.





DATA: T_STATUS LIKE BSVX-STTXT.

LOOP AT ITAB.

    CALL FUNCTION ‘STATUS_TEXT_EDIT‘
                 EXPORTING
*                   CLIENT        = SY-MANDT
*                   FLG_USER_STAT = ‘ ‘
                   OBJNR         = ITAB-OBJNR               " 单据号码
*                   ONLY_ACTIVE   = ‘X‘
                   SPRAS         = ‘E‘
*                   BYPASS_BUFFER = ‘ ‘
                 IMPORTING
                   LINE          =  ITAB-XTZT.            " 返回状态


   SELECT SINGLE
          MAKTX
          INTO ITAB-MAKTX
          FROM MAKT
          WHERE MATNR = ITAB-PLNBEZ
            AND SPRAS = SY-LANGU.

   SELECT SINGLE
          BKLAS
          INTO ITAB-BKLAS
          FROM MBEW
          WHERE MATNR = ITAB-PLNBEZ
            AND BWKEY = ITAB-WERKS.

   SELECT SINGLE
          MTART
          INTO ITAB-MTART
          FROM MARA
          WHERE MATNR = ITAB-PLNBEZ.

   SELECT SINGLE
          VKBUR
          INTO ITAB-VKBUR
          FROM VBAK
          WHERE VBELN = ITAB-KDAUF.


   SELECT SINGLE
          WEMNG
          INTO ITAB-GWEMG
          FROM AFPO
          WHERE AUFNR = ITAB-AUFNR.

   CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT‘
      EXPORTING
        INPUT  = ITAB-AUFNR
      IMPORTING
       OUTPUT = ITAB-AUFNR.

   CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT‘
      EXPORTING
        INPUT  = ITAB-PLNBEZ
      IMPORTING
       OUTPUT = ITAB-PLNBEZ.

   MODIFY ITAB.
   CLEAR ITAB.
ENDLOOP.




ENDFORM.                    " FRM_SELECT_DATA



*&---------------------------------------------------------------------*
*&      FORM  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM FRM_DISPLAY .



    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘AUFNR‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘生产订单编号‘.
    FIELDCAT-SELTEXT_M     = ‘生产订单编号‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘XTZT‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘系统状态‘.
    FIELDCAT-SELTEXT_M     = ‘系统状态‘.
    FIELDCAT-OUTPUTLEN     = 20.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘WERKS‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘工厂‘.
    FIELDCAT-SELTEXT_M     = ‘工厂‘.
    FIELDCAT-OUTPUTLEN     = 10.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘AUART‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘订单类型‘.
    FIELDCAT-SELTEXT_M     = ‘订单类型‘.
    FIELDCAT-OUTPUTLEN     = 8.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘KDAUF‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘销售订单编号‘.
    FIELDCAT-SELTEXT_M     = ‘销售订单编号‘.
    FIELDCAT-OUTPUTLEN     = 12.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘KDPOS‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘销售订单行项目‘.
    FIELDCAT-SELTEXT_M     = ‘销售订单行项目‘.
    FIELDCAT-OUTPUTLEN     = 12.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘VKBUR‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘办事处‘.
    FIELDCAT-SELTEXT_M     = ‘办事处‘.
    FIELDCAT-OUTPUTLEN     = 12.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘PLNBEZ‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘物料编号‘.
    FIELDCAT-SELTEXT_M     = ‘物料编号‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘MAKTX‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘物料描写叙述‘.
    FIELDCAT-SELTEXT_M     = ‘物料描写叙述‘.
    FIELDCAT-OUTPUTLEN     = 35.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘GAMNG‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘订单数量‘.
    FIELDCAT-SELTEXT_M     = ‘订单数量‘.
    FIELDCAT-OUTPUTLEN     = 12.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘GWEMG‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘确认数量‘.
    FIELDCAT-SELTEXT_M     = ‘确认数量‘.
    FIELDCAT-OUTPUTLEN     = 12.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BKLAS‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘评估类‘.
    FIELDCAT-SELTEXT_M     = ‘评估类‘.
    FIELDCAT-OUTPUTLEN     = 10.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘MTART‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘物料类型‘.
    FIELDCAT-SELTEXT_M     = ‘物料类型‘.
    FIELDCAT-OUTPUTLEN     = 10.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘ZPVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘装配-折旧标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘装配-折旧标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘ZPVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘装配-工资标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘装配-工资标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘ZPVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘装配-其它标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘装配-其它标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BZPVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘装配-折旧实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘装配-折旧实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BZPVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘装配-工资实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘装配-工资实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BZPVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘装配-其它实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘装配-其它实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.



    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘ZPKOSTL‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘装配-成本中心‘.
    FIELDCAT-SELTEXT_M     = ‘装配-成本中心‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.









    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘TSVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘调试-折旧标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘调试-折旧标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘TSVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘调试-工资标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘调试-工资标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘TSVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘调试-其它标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘调试-其它标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BTSVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘调试-折旧实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘调试-折旧实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BTSVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘调试-工资实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘调试-工资实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BTSVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘调试-其它实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘调试-其它实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.




    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘TSKOSTL‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘调试-成本中心‘.
    FIELDCAT-SELTEXT_M     = ‘调试-成本中心‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.






    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘LHVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘老化-折旧标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘老化-折旧标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘LHVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘老化-工资标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘老化-工资标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘LHVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘老化-其它标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘老化-其它标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BLHVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘老化-折旧实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘老化-折旧实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BLHVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘老化-工资实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘老化-工资实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BLHVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘老化-其它实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘老化-其它实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.




    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘LHKOSTL‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘老化-成本中心‘.
    FIELDCAT-SELTEXT_M     = ‘老化-成本中心‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.





    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘JYVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘检验-折旧标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘检验-折旧标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘JYVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘检验-工资标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘检验-工资标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘JYVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘检验-其它标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘检验-其它标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BJYVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘检验-折旧实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘检验-折旧实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BJYVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘检验-工资实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘检验-工资实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BJYVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘检验-其它实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘检验-其它实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.



    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘JYKOSTL‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘检验-成本中心‘.
    FIELDCAT-SELTEXT_M     = ‘检验-成本中心‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BZVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘包装-折旧标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘包装-折旧标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BZVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘包装-工资标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘包装-工资标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BZVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘包装-其它标准工时‘.
    FIELDCAT-SELTEXT_M     = ‘包装-其它标准工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BBZVGW01‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘包装-折旧实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘包装-折旧实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BBZVGW02‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘包装-工资实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘包装-工资实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.

    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BBZVGW03‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘包装-其它实际工时‘.
    FIELDCAT-SELTEXT_M     = ‘包装-其它实际工时‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.


    CLEAR FIELDCAT.
    FIELDCAT-FIELDNAME     = ‘BZKOSTL‘.
    FIELDCAT-TABNAME       = ‘ITAB‘.
    FIELDCAT-SELTEXT_S     = ‘包装-成本中心‘.
    FIELDCAT-SELTEXT_M     = ‘包装-成本中心‘.
    FIELDCAT-OUTPUTLEN     = 18.
    APPEND FIELDCAT.



*    CLEAR FIELDCAT.
*    FIELDCAT-FIELDNAME     = ‘ZJVGW01‘.
*    FIELDCAT-TABNAME       = ‘ITAB‘.
*    FIELDCAT-SELTEXT_S     = ‘折旧标准成本‘.
*    FIELDCAT-SELTEXT_M     = ‘折旧标准成本‘.
*    FIELDCAT-OUTPUTLEN     = 18.
*    APPEND FIELDCAT.
*
*
*    CLEAR FIELDCAT.
*    FIELDCAT-FIELDNAME     = ‘GZVGW02‘.
*    FIELDCAT-TABNAME       = ‘ITAB‘.
*    FIELDCAT-SELTEXT_S     = ‘工资标准成本‘.
*    FIELDCAT-SELTEXT_M     = ‘工资标准成本‘.
*    FIELDCAT-OUTPUTLEN     = 18.
*    APPEND FIELDCAT.
*
*    CLEAR FIELDCAT.
*    FIELDCAT-FIELDNAME     = ‘QTVGW03‘.
*    FIELDCAT-TABNAME       = ‘ITAB‘.
*    FIELDCAT-SELTEXT_S     = ‘其它标准成本‘.
*    FIELDCAT-SELTEXT_M     = ‘其它标准成本‘.
*    FIELDCAT-OUTPUTLEN     = 18.
*    APPEND FIELDCAT.
*
*
*
*    CLEAR FIELDCAT.
*    FIELDCAT-FIELDNAME     = ‘BZJVGW01‘.
*    FIELDCAT-TABNAME       = ‘ITAB‘.
*    FIELDCAT-SELTEXT_S     = ‘折旧实际成本‘.
*    FIELDCAT-SELTEXT_M     = ‘折旧实际成本‘.
*    FIELDCAT-OUTPUTLEN     = 18.
*    APPEND FIELDCAT.
*
*
*    CLEAR FIELDCAT.
*    FIELDCAT-FIELDNAME     = ‘BGZVGW02‘.
*    FIELDCAT-TABNAME       = ‘ITAB‘.
*    FIELDCAT-SELTEXT_S     = ‘工资实际成本‘.
*    FIELDCAT-SELTEXT_M     = ‘工资实际成本‘.
*    FIELDCAT-OUTPUTLEN     = 18.
*    APPEND FIELDCAT.
*
*    CLEAR FIELDCAT.
*    FIELDCAT-FIELDNAME     = ‘BQTVGW03‘.
*    FIELDCAT-TABNAME       = ‘ITAB‘.
*    FIELDCAT-SELTEXT_S     = ‘其它实际成本‘.
*    FIELDCAT-SELTEXT_M     = ‘其它实际成本‘.
*    FIELDCAT-OUTPUTLEN     = 18.
*    APPEND FIELDCAT.



*  LAYOUT-colwidth_optimize = ‘X‘.
  CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY‘
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-REPID
      IT_FIELDCAT              = FIELDCAT[]
      I_CALLBACK_PF_STATUS_SET = ‘SET_PF‘
      I_CALLBACK_USER_COMMAND  = ‘USER_COMMAND‘
      I_BACKGROUND_ID          = ‘ALV_BACKGROUND‘
      IS_LAYOUT                = LAYOUT
      I_DEFAULT                = ‘X‘
      I_SAVE                   = ‘A‘
    TABLES
      T_OUTTAB                 = ITAB
    EXCEPTIONS
      OTHERS                   = 2.



ENDFORM.                    " DISPLAY_DATA

*&---------------------------------------------------------------------*
*&      FORM  STANDARD_FULLSCREEN
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
FORM SET_PF USING RT_EXTAB TYPE SLIS_T_EXTAB.

  SET PF-STATUS ‘STANDARD_FULLSCREEN‘.

ENDFORM.                    "SET_STATUS

以上是关于abap 获取生产订单标准工时和实际报工工时的报表的主要内容,如果未能解决你的问题,请参考以下文章

SAP-PS笔记项目报工之CATS与PS的集成

产品生产成本核算中,生产订单差异计算逻辑及生产订单成本公式

标准工时分析怎么做?精益生产下的VIOOVI 标准工时分析软件

标准工时计算方法有哪些?如何计算标准工时?

装配标准工时如何计算?详解:装配的标准工时计算方法

如何进行工时测定?什么工时测定软件比较准确?