• 生产日报表


    ---恢复内容开始---

    虽然各个公司都不一样,但是这个报表还是可以参考一下的。字段不清楚可以先看FIELDCAT。反正就是报工和消耗产出。

    *&---------------------------------------------------------------------*
    *&  包含                ZPPR0013_TOP
    *&---------------------------------------------------------------------*
    TABLES:AUFM,AFRU,AFKO,RESB,AFVC,CRHD,CRTX,AUFK,MAKT.
    
    
    TYPES:BEGIN OF TY_SHOW,
            SEL(1)   TYPE C,
            WERKS    TYPE AUFM-WERKS,"工厂
            BUDAT    TYPE AUFM-BUDAT,"生产日期
            ARBPL    TYPE CRHD-ARBPL,"生产线编码
            MAKTX    TYPE MAKT-MAKTX,"项目描述
            MOTYP(4) TYPE C,
            MENG1    TYPE AUFM-MENGE,"项目描述
            MENG2    TYPE AUFM-MENGE,"项目描述
            MENG3    TYPE AUFM-MENGE,"项目描述
            MENG4    TYPE AUFM-MENGE,"项目描述
            MENG5    TYPE AUFM-MENGE,"班次为空数量
            KTEXT    TYPE CRTX-KTEXT,"生产线描述
            MATNR    TYPE AUFM-MATNR,"项目编码
            MEINS    TYPE AUFM-MEINS,"项目描述
          END OF TY_SHOW,
          BEGIN OF TY_AUFM,
            MBLNR TYPE AUFM-MBLNR,
            MJAHR TYPE AUFM-MJAHR,
            ZEILE TYPE AUFM-ZEILE,
            BLDAT TYPE AUFM-BLDAT,
            BUDAT TYPE AUFM-BUDAT,
            ABLAD TYPE AUFM-ABLAD,
            BWART TYPE AUFM-BWART,
            MATNR TYPE AUFM-MATNR,
            MAKTX TYPE MAKT-MAKTX,
            WERKS TYPE AUFM-WERKS,
            AUFNR TYPE AUFM-AUFNR,
            MENGE TYPE AUFM-MENGE,
            MEINS TYPE AUFM-MEINS,
          END OF TY_AUFM,
          BEGIN OF TY_AFRU,
            RUECK TYPE AFRU-RUECK,
            RMZHL TYPE AFRU-RMZHL,
            BUDAT TYPE AFRU-BUDAT,
            WERKS TYPE AFRU-WERKS,
            AUFNR TYPE AFRU-AUFNR,
            GRUND TYPE AFRU-GRUND,
            ILE03 TYPE AFRU-ILE03,
            ISM03 TYPE AFRU-ISM03,
            ILE04 TYPE AFRU-ILE04,
            ISM04 TYPE AFRU-ISM04,
            ILE05 TYPE AFRU-ILE05,
            ISM05 TYPE AFRU-ISM05,
            AUFPL TYPE AFRU-AUFPL,
            APLZL TYPE AFRU-APLZL,
            SCSJ  TYPE AFRU-SCSJ,
            TJSJ  TYPE AFRU-TJSJ,
            ZLSYL TYPE AFRU-ZLSYL,
            RSYL  TYPE AFRU-RSYL,
            STOKZ TYPE AFRU-STOKZ,
          END OF TY_AFRU,
          BEGIN OF TY_AFRUD,
            RUECK  TYPE AFRU-RUECK,
            RMZHL  TYPE AFRU-RMZHL,
            BUDAT  TYPE AFRU-BUDAT,
            WABLNR TYPE AFRU-WABLNR,
            GRUND  TYPE AFRU-GRUND,
          END OF TY_AFRUD,
          BEGIN OF TY_RESB,
            AUFNR TYPE AFKO-AUFNR,
            MATNR TYPE AFKO-PLNBEZ,
            RSNUM TYPE RESB-RSNUM,
            RSPOS TYPE RESB-RSPOS,
            AUFPL TYPE RESB-AUFPL,
            APLZL TYPE RESB-APLZL,
          END OF TY_RESB,
          BEGIN OF TY_MARC,
            MATNR TYPE MARC-MATNR,
            WERKS TYPE MARC-WERKS,
            RGEKZ TYPE MARC-RGEKZ,
            DISGR TYPE MARC-DISGR,
          END OF TY_MARC,
          BEGIN OF TY_AFVC,
            AUFPL TYPE AFVC-AUFPL,
            APLZL TYPE AFVC-APLZL,
            ARBID TYPE AFVC-ARBID,
          END OF TY_AFVC,
          BEGIN OF TY_CRHD,
            OBJID TYPE CRHD-OBJID,
            ARBPL TYPE CRHD-ARBPL,
          END OF TY_CRHD,
          BEGIN OF TY_CRTX,
            OBJID TYPE CRTX-OBJID,
            KTEXT TYPE CRTX-KTEXT,
          END OF TY_CRTX.
    "TABLE DEFINE
    DATA:GT_SHOW  TYPE TABLE OF TY_SHOW,
         GS_SHOW  LIKE LINE OF  GT_SHOW,
         GT_AUFM  TYPE TABLE OF TY_AUFM,
         GS_AUFM  LIKE LINE OF  GT_AUFM,
         GT_AFRU  TYPE TABLE OF TY_AFRU,
         GS_AFRU  LIKE LINE OF  GT_AFRU,
         GT_AFRUD TYPE TABLE OF TY_AFRUD,
         GS_AFRUD LIKE LINE OF  GT_AFRUD,
         GT_RESB  TYPE TABLE OF TY_RESB,
         GS_RESB  LIKE LINE OF  GT_RESB,
         GT_AFVC  TYPE TABLE OF TY_AFVC,
         GS_AFVC  LIKE LINE OF  GT_AFVC,
         GT_CRHD  TYPE TABLE OF TY_CRHD,
         GS_CRHD  LIKE LINE OF  GT_CRHD,
         GT_CRTX  TYPE TABLE OF TY_CRTX,
         GS_CRTX  LIKE LINE OF  GT_CRTX,
         GT_MARC  TYPE TABLE OF TY_MARC,
         GS_MARC  LIKE LINE OF  GT_MARC.
    
    DATA:GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
    
    DEFINE APPEND_FIELDCAT .
      CLEAR GS_FIELDCAT.
      GS_FIELDCAT-FIELDNAME = &1.
      GS_FIELDCAT-SELTEXT_L = &2.
      GS_FIELDCAT-OUTPUTLEN = &3.
      GS_FIELDCAT-NO_ZERO = &4.
      APPEND GS_FIELDCAT TO GT_FIELDCAT.
    END-OF-DEFINITION.
    
    DEFINE RANGE.
      &2-LOW = &3.
      &2-SIGN = 'I'.
      &2-OPTION = 'EQ'.
      APPEND &2 TO &1.
    END-OF-DEFINITION.
    
    SELECTION-SCREEN BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:S_WERKS FOR AUFM-WERKS,
                   S_BUDAT FOR AUFM-BUDAT DEFAULT SY-DATUM,
                   S_ARBPL FOR CRHD-ARBPL MATCHCODE OBJECT CRAM.
    SELECTION-SCREEN END OF BLOCK BLK01.
    *&---------------------------------------------------------------------*
    *&  包含                ZPPR0013_FRM
    *&---------------------------------------------------------------------*
    *&---------------------------------------------------------------------*
    *&      Form  PRM_GET_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM PRM_GET_DATA .
      REFRESH:GT_AUFM,GT_AFRU,GT_SHOW,GT_RESB,GT_AFVC,GT_CRHD,GT_CRTX,GT_AFRUD,GT_MARC.
      DATA:RT_BWART TYPE RANGE OF BWART,
           RS_BWART LIKE LINE OF  RT_BWART.
      DATA:LV_VALUE TYPE P VALUE -1.
      DATA:LV_C1 TYPE STRING VALUE '13579'.
      RANGE:RT_BWART RS_BWART '101',
            RT_BWART RS_BWART '102',
            RT_BWART RS_BWART '261',
            RT_BWART RS_BWART '262',
            RT_BWART RS_BWART '531',
            RT_BWART RS_BWART '532'.
      SELECT  A~MBLNR
              A~MJAHR
              A~ZEILE
              A~BLDAT
              A~BUDAT
              A~ABLAD
              A~BWART
              A~MATNR
              B~MAKTX
              A~WERKS
              A~AUFNR
              A~MENGE
              A~MEINS
        INTO CORRESPONDING FIELDS OF TABLE GT_AUFM
        FROM AUFM AS A
        INNER JOIN MAKT AS B
        ON A~MATNR = B~MATNR
        WHERE A~BUDAT IN S_BUDAT
        AND   A~WERKS IN S_WERKS
        AND   A~BWART IN RT_BWART
        AND   B~SPRAS = '1'.
    
      SELECT
           RUECK
           RMZHL
           WERKS
           BUDAT
           AUFNR
           GRUND
           ILE03
           ISM03
           ILE04
           ISM04
           ILE05
           ISM05
           AUFPL
           APLZL
           SCSJ
           TJSJ
           ZLSYL
           RSYL
           STOKZ
        INTO CORRESPONDING FIELDS OF TABLE GT_AFRU
        FROM AFRU
        WHERE BUDAT IN S_BUDAT
        AND   WERKS IN S_WERKS.
    
    
      IF GT_AUFM[] IS INITIAL AND GT_AFRU[] IS INITIAL.
        MESSAGE '选择范围内无结果!' TYPE 'E'.
        EXIT.
      ENDIF.
      IF GT_AUFM IS NOT INITIAL.
        SELECT MATNR WERKS DISGR RGEKZ INTO CORRESPONDING FIELDS OF TABLE GT_MARC
          FROM MARC
          FOR ALL ENTRIES IN GT_AUFM
          WHERE MATNR = GT_AUFM-MATNR
          AND   WERKS = GT_AUFM-WERKS
          AND   RGEKZ = '1'.
    *      AND   DISGR = 'DL02'."change by ly 20150807
        SORT GT_MARC[] BY MATNR.
        DELETE ADJACENT DUPLICATES FROM GT_MARC[] COMPARING MATNR WERKS.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_AFRUD
          FROM AFRU FOR ALL ENTRIES IN GT_AUFM
          WHERE WABLNR = GT_AUFM-MBLNR.
        SELECT RSNUM
             RSPOS
             AUFPL
             APLZL
             AUFNR
             MATNR
        INTO CORRESPONDING FIELDS OF TABLE GT_RESB
        FROM RESB
        FOR ALL ENTRIES IN GT_AUFM
        WHERE AUFNR = GT_AUFM-AUFNR.
    *    AND   MATNR = GT_AUFM-MATNR.
    
        DELETE GT_RESB[] WHERE AUFPL IS INITIAL.
        SORT GT_RESB BY RSNUM AUFPL APLZL.
        DELETE ADJACENT DUPLICATES FROM GT_RESB COMPARING RSNUM AUFPL APLZL.
        IF GT_RESB[] IS NOT INITIAL.
          SELECT AUFPL
               APLZL
               ARBID
          INTO CORRESPONDING FIELDS OF TABLE GT_AFVC
          FROM AFVC
          FOR ALL ENTRIES IN GT_RESB
          WHERE AUFPL = GT_RESB-AUFPL
          AND   APLZL = GT_RESB-APLZL.
        ENDIF.
      ENDIF.
    
    
      IF GT_AFRU[] IS NOT INITIAL.
        SELECT AUFPL
           APLZL
           ARBID
      APPENDING CORRESPONDING FIELDS OF TABLE GT_AFVC
      FROM AFVC
      FOR ALL ENTRIES IN GT_AFRU
      WHERE AUFPL = GT_AFRU-AUFPL
      AND   APLZL = GT_AFRU-APLZL.
      ENDIF.
    
    
      SORT GT_AFVC BY AUFPL APLZL.
      DELETE ADJACENT DUPLICATES FROM GT_AFVC COMPARING AUFPL APLZL.
    
      IF GT_AFVC[] IS NOT INITIAL.
        SELECT OBJID
             ARBPL
        INTO CORRESPONDING FIELDS OF TABLE GT_CRHD
        FROM CRHD
        FOR ALL ENTRIES IN GT_AFVC
        WHERE OBJID = GT_AFVC-ARBID
        AND  ARBPL IN S_ARBPL.
    
        SELECT OBJID
               KTEXT
         INTO CORRESPONDING FIELDS OF TABLE GT_CRTX
         FROM CRTX
         FOR ALL ENTRIES IN GT_AFVC
         WHERE OBJID = GT_AFVC-ARBID.
      ENDIF.
    
    
      LOOP AT GT_AUFM INTO GS_AUFM.
        GS_SHOW-WERKS = GS_AUFM-WERKS.
        GS_SHOW-BUDAT = GS_AUFM-BUDAT.
        GS_SHOW-MAKTX = GS_AUFM-MAKTX.
    
        GS_SHOW-MATNR = GS_AUFM-MATNR.
        GS_SHOW-MEINS = GS_AUFM-MEINS.
    *    IF GS_AUFM-ABLAD IS INITIAL.
    *      CLEAR:GS_SHOW.
    *      CONTINUE.
    *    ENDIF.
        IF GS_AUFM-BWART+2(1) CO LV_C1.
        ELSE.
          GS_AUFM-MENGE = GS_AUFM-MENGE * -1.
        ENDIF.
        IF GS_AUFM-BWART = '531' OR GS_AUFM-BWART = '532' OR
          GS_AUFM-BWART = '101' OR GS_AUFM-BWART = '102'.
          GS_SHOW-MOTYP = '产出'.
        ELSE.
          GS_SHOW-MOTYP = '消耗'.
        ENDIF.
        READ TABLE GT_MARC INTO GS_MARC WITH KEY MATNR = GS_AUFM-MATNR WERKS = GS_AUFM-WERKS.
        IF SY-SUBRC = 0.
          READ TABLE GT_AFRUD INTO GS_AFRUD WITH KEY WABLNR = GS_AUFM-MBLNR.
          IF SY-SUBRC = 0.
            CASE GS_AFRUD-GRUND.
              WHEN '0001'.
                GS_SHOW-MENG1 = GS_AUFM-MENGE.
              WHEN '0002'.
                GS_SHOW-MENG2 = GS_AUFM-MENGE.
              WHEN '0003'.
                GS_SHOW-MENG3 = GS_AUFM-MENGE.
              WHEN OTHERS.
                GS_SHOW-MENG5 = GS_AUFM-MENGE.
    *            CLEAR:GS_SHOW.
    *            CONTINUE.
            ENDCASE.
          ELSE.
            CASE GS_AUFM-ABLAD.
              WHEN '甲班' OR '1' OR 'A'.
                GS_SHOW-MENG1 = GS_AUFM-MENGE.
              WHEN '乙班' OR '2' OR 'B'.
                GS_SHOW-MENG2 = GS_AUFM-MENGE.
              WHEN '丙班' OR '3' OR 'C'.
                GS_SHOW-MENG3 = GS_AUFM-MENGE.
              WHEN OTHERS.
                GS_SHOW-MENG5 = GS_AUFM-MENGE.
    *            CLEAR:GS_SHOW.
    *            CONTINUE.
            ENDCASE.
          ENDIF.
        ELSE.
          CASE GS_AUFM-ABLAD.
            WHEN '甲班' OR '1' OR 'A'.
              GS_SHOW-MENG1 = GS_AUFM-MENGE.
            WHEN '乙班' OR '2' OR 'B'.
              GS_SHOW-MENG2 = GS_AUFM-MENGE.
            WHEN '丙班' OR '3' OR 'C'.
              GS_SHOW-MENG3 = GS_AUFM-MENGE.
            WHEN OTHERS.
              GS_SHOW-MENG5 = GS_AUFM-MENGE.
    *            CLEAR:GS_SHOW.
    *            CONTINUE.
          ENDCASE.
        ENDIF.
    
        GS_SHOW-MENG4 = GS_AUFM-MENGE.
        READ TABLE GT_RESB INTO GS_RESB WITH KEY AUFNR = GS_AUFM-AUFNR." MATNR = GS_AUFM-MATNR.
        IF SY-SUBRC = 0.
          READ TABLE GT_AFVC INTO GS_AFVC WITH KEY AUFPL = GS_RESB-AUFPL APLZL = GS_RESB-APLZL.
          IF SY-SUBRC = 0.
            READ TABLE GT_CRHD INTO GS_CRHD WITH KEY OBJID = GS_AFVC-ARBID.
            IF SY-SUBRC = 0.
              GS_SHOW-ARBPL = GS_CRHD-ARBPL.
            ELSE.
              IF S_ARBPL IS NOT INITIAL.
                CLEAR:GS_SHOW.
                CONTINUE.
              ENDIF.
            ENDIF.
            READ TABLE GT_CRTX INTO GS_CRTX WITH KEY OBJID = GS_AFVC-ARBID.
            IF SY-SUBRC = 0.
              GS_SHOW-KTEXT = GS_CRTX-KTEXT.
            ENDIF.
          ENDIF.
        ENDIF.
        CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
          EXPORTING
            INPUT          = GS_SHOW-MEINS
            LANGUAGE       = SY-LANGU
          IMPORTING
    *       LONG_TEXT      =
            OUTPUT         = GS_SHOW-MEINS
    *       SHORT_TEXT     =
          EXCEPTIONS
            UNIT_NOT_FOUND = 1
            OTHERS         = 2.
        IF SY-SUBRC <> 0.
    * Implement suitable error handling here
        ENDIF.
    
        COLLECT GS_SHOW INTO GT_SHOW.
        CLEAR:GS_SHOW.
      ENDLOOP.
    
      LOOP AT GT_AFRU INTO GS_AFRU.
        GS_SHOW-WERKS = GS_AFRU-WERKS.
        GS_SHOW-BUDAT = GS_AFRU-BUDAT.
    
        READ TABLE GT_AFVC INTO GS_AFVC WITH KEY AUFPL = GS_AFRU-AUFPL APLZL = GS_AFRU-APLZL.
        IF SY-SUBRC = 0.
          READ TABLE GT_CRHD INTO GS_CRHD WITH KEY OBJID = GS_AFVC-ARBID.
          IF SY-SUBRC = 0.
            GS_SHOW-ARBPL = GS_CRHD-ARBPL.
          ELSE.
            IF S_ARBPL IS NOT INITIAL.
              CLEAR:GS_SHOW.
              CONTINUE.
            ENDIF.
          ENDIF.
          READ TABLE GT_CRTX INTO GS_CRTX WITH KEY OBJID = GS_AFVC-ARBID.
          IF SY-SUBRC = 0.
            GS_SHOW-KTEXT = GS_CRTX-KTEXT.
          ENDIF.
        ENDIF.
        IF GS_AFRU-GRUND IS INITIAL.
          CLEAR:GS_SHOW.
          CONTINUE.
        ENDIF.
        IF GS_AFRU-STOKZ = 'X'.
          LV_VALUE = -1.
        ELSE.
          LV_VALUE = 1.
        ENDIF.
        GS_SHOW-MOTYP = '消耗'.
        CASE GS_AFRU-GRUND.
          WHEN '0001'.
    
            IF GS_AFRU-ISM03 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM03'.
              GS_SHOW-MEINS = 'KWH'.
              IF GS_AFRU-ILE03 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM03
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE03
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM03
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG1 = GS_AFRU-ISM03 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM03 * LV_VALUE.
              GS_SHOW-MAKTX = '电耗'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ISM04 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM04'.
              GS_SHOW-MEINS = 'KG'.
              IF GS_AFRU-ILE04 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM04
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE04
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM04
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG1 = GS_AFRU-ISM04 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM04 * LV_VALUE.
              GS_SHOW-MAKTX = '蒸汽用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ISM05 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM05'.
              GS_SHOW-MEINS = 'M3'.
              IF GS_AFRU-ILE05 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM05
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE05
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM05
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG1 = GS_AFRU-ISM05 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM05 * LV_VALUE.
              GS_SHOW-MAKTX = '天然气用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-SCSJ IS NOT INITIAL.
              GS_SHOW-MATNR = 'SCSJ'.
              GS_SHOW-MEINS = 'H'.
              GS_SHOW-MENG1 = GS_AFRU-SCSJ * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-SCSJ * LV_VALUE.
              GS_SHOW-MAKTX = '生产时间'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-TJSJ IS NOT INITIAL.
              GS_SHOW-MATNR = 'TJSJ'.
              GS_SHOW-MEINS = 'H'.
              GS_SHOW-MENG1 = GS_AFRU-TJSJ * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-TJSJ * LV_VALUE.
              GS_SHOW-MAKTX = '停机时间'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ZLSYL IS NOT INITIAL.
              GS_SHOW-MATNR = 'ZLSYL'.
              GS_SHOW-MEINS = 'T'.
              GS_SHOW-MENG1 = GS_AFRU-ZLSYL * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ZLSYL * LV_VALUE.
              GS_SHOW-MAKTX = '自来水用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-RSYL IS NOT INITIAL.
              GS_SHOW-MATNR = 'RSYL'.
              GS_SHOW-MEINS = 'T'.
              GS_SHOW-MENG1 = GS_AFRU-RSYL * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-RSYL * LV_VALUE.
              GS_SHOW-MAKTX = '软水用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
    
          WHEN '0002'.
            IF GS_AFRU-ISM03 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM03'.
              GS_SHOW-MEINS = 'KWH'.
              IF GS_AFRU-ILE03 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM03
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE03
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM03
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG2 = GS_AFRU-ISM03 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM03 * LV_VALUE.
              GS_SHOW-MAKTX = '电耗'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ISM04 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM04'.
              GS_SHOW-MEINS = 'KG'.
              IF GS_AFRU-ILE04 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM04
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE04
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM04
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG2 = GS_AFRU-ISM04 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM04 * LV_VALUE.
              GS_SHOW-MAKTX = '蒸汽用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ISM05 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM05'.
              GS_SHOW-MEINS = 'M3'.
              IF GS_AFRU-ILE05 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM05
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE05
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM05
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG2 = GS_AFRU-ISM05 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM05 * LV_VALUE.
              GS_SHOW-MAKTX = '天然气用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-SCSJ IS NOT INITIAL.
              GS_SHOW-MATNR = 'SCSJ'.
              GS_SHOW-MEINS = 'H'.
              GS_SHOW-MENG2 = GS_AFRU-SCSJ * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-SCSJ * LV_VALUE.
              GS_SHOW-MAKTX = '生产时间'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-TJSJ IS NOT INITIAL.
              GS_SHOW-MATNR = 'TJSJ'.
              GS_SHOW-MEINS = 'H'.
              GS_SHOW-MENG2 = GS_AFRU-TJSJ * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-TJSJ * LV_VALUE.
              GS_SHOW-MAKTX = '停机时间'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ZLSYL IS NOT INITIAL.
              GS_SHOW-MATNR = 'ZLSYL'.
              GS_SHOW-MEINS = 'T'.
              GS_SHOW-MENG2 = GS_AFRU-ZLSYL * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ZLSYL * LV_VALUE.
              GS_SHOW-MAKTX = '自来水用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-RSYL IS NOT INITIAL.
              GS_SHOW-MATNR = 'RSYL'.
              GS_SHOW-MEINS = 'T'.
              GS_SHOW-MENG2 = GS_AFRU-RSYL * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-RSYL * LV_VALUE.
              GS_SHOW-MAKTX = '软水用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
          WHEN '0003'.
            IF GS_AFRU-ISM03 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM03'.
              GS_SHOW-MEINS = 'KWH'.
              IF GS_AFRU-ILE03 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM03
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE03
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM03
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG3 = GS_AFRU-ISM03 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM03 * LV_VALUE.
              GS_SHOW-MAKTX = '电耗'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ISM04 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM04'.
              GS_SHOW-MEINS = 'KG'.
              IF GS_AFRU-ILE04 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM04
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE04
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM04
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG3 = GS_AFRU-ISM04 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM04 * LV_VALUE.
              GS_SHOW-MAKTX = '蒸汽用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ISM05 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM05'.
              GS_SHOW-MEINS = 'M3'.
              IF GS_AFRU-ILE05 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM05
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE05
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM05
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG3 = GS_AFRU-ISM05 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM05 * LV_VALUE.
              GS_SHOW-MAKTX = '天然气用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-SCSJ IS NOT INITIAL.
              GS_SHOW-MATNR = 'SCSJ'.
              GS_SHOW-MEINS = 'H'.
              GS_SHOW-MENG3 = GS_AFRU-SCSJ * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-SCSJ * LV_VALUE.
              GS_SHOW-MAKTX = '生产时间'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-TJSJ IS NOT INITIAL.
              GS_SHOW-MATNR = 'TJSJ'.
              GS_SHOW-MEINS = 'H'.
              GS_SHOW-MENG3 = GS_AFRU-TJSJ * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-TJSJ * LV_VALUE.
              GS_SHOW-MAKTX = '停机时间'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ZLSYL IS NOT INITIAL.
              GS_SHOW-MATNR = 'ZLSYL'.
              GS_SHOW-MEINS = 'T'.
              GS_SHOW-MENG3 = GS_AFRU-ZLSYL * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ZLSYL * LV_VALUE.
              GS_SHOW-MAKTX = '自来水用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-RSYL IS NOT INITIAL.
              GS_SHOW-MATNR = 'RSYL'.
              GS_SHOW-MEINS = 'T'.
              GS_SHOW-MENG3 = GS_AFRU-RSYL * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-RSYL * LV_VALUE.
              GS_SHOW-MAKTX = '软水用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
    
          WHEN OTHERS.
    
            IF GS_AFRU-ISM03 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM03'.
              GS_SHOW-MEINS = 'KWH'.
              IF GS_AFRU-ILE03 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM03
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE03
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM03
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG5 = GS_AFRU-ISM03 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM03 * LV_VALUE.
              GS_SHOW-MAKTX = '电耗'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ISM04 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM04'.
              GS_SHOW-MEINS = 'KG'.
              IF GS_AFRU-ILE04 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM04
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE04
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM04
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG5 = GS_AFRU-ISM04 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM04 * LV_VALUE.
              GS_SHOW-MAKTX = '蒸汽用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ISM05 IS NOT INITIAL.
              GS_SHOW-MATNR = 'ISM05'.
              GS_SHOW-MEINS = 'M3'.
              IF GS_AFRU-ILE05 <> GS_SHOW-MEINS.
                CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
                  EXPORTING
                    INPUT                = GS_AFRU-ISM05
                    ROUND_SIGN           = 'X'
                    UNIT_IN              = GS_AFRU-ILE05
                    UNIT_OUT             = GS_SHOW-MEINS
                  IMPORTING
                    OUTPUT               = GS_AFRU-ISM05
                  EXCEPTIONS
                    CONVERSION_NOT_FOUND = 1
                    DIVISION_BY_ZERO     = 2
                    INPUT_INVALID        = 3
                    OUTPUT_INVALID       = 4
                    OVERFLOW             = 5
                    TYPE_INVALID         = 6
                    UNITS_MISSING        = 7
                    UNIT_IN_NOT_FOUND    = 8
                    UNIT_OUT_NOT_FOUND   = 9
                    OTHERS               = 10.
                IF SY-SUBRC <> 0.
                ENDIF.
              ENDIF.
              GS_SHOW-MENG5 = GS_AFRU-ISM05 * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ISM05 * LV_VALUE.
              GS_SHOW-MAKTX = '天然气用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-SCSJ IS NOT INITIAL.
              GS_SHOW-MATNR = 'SCSJ'.
              GS_SHOW-MEINS = 'H'.
              GS_SHOW-MENG5 = GS_AFRU-SCSJ * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-SCSJ * LV_VALUE.
              GS_SHOW-MAKTX = '生产时间'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-TJSJ IS NOT INITIAL.
              GS_SHOW-MATNR = 'TJSJ'.
              GS_SHOW-MEINS = 'H'.
              GS_SHOW-MENG5 = GS_AFRU-TJSJ * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-TJSJ * LV_VALUE.
              GS_SHOW-MAKTX = '停机时间'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-ZLSYL IS NOT INITIAL.
              GS_SHOW-MATNR = 'ZLSYL'.
              GS_SHOW-MEINS = 'T'.
              GS_SHOW-MENG5 = GS_AFRU-ZLSYL * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-ZLSYL * LV_VALUE.
              GS_SHOW-MAKTX = '自来水用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
            IF GS_AFRU-RSYL IS NOT INITIAL.
              GS_SHOW-MATNR = 'RSYL'.
              GS_SHOW-MEINS = 'T'.
              GS_SHOW-MENG5 = GS_AFRU-RSYL * LV_VALUE.
              GS_SHOW-MENG4 = GS_AFRU-RSYL * LV_VALUE.
              GS_SHOW-MAKTX = '软水用量'.
              COLLECT GS_SHOW INTO GT_SHOW.
            ENDIF.
    
        ENDCASE.
        CLEAR:GS_SHOW.
      ENDLOOP.
    
      LOOP AT GT_SHOW INTO GS_SHOW.
        IF GS_SHOW-MENG1 IS INITIAL AND GS_SHOW-MENG2 IS INITIAL AND GS_SHOW-MENG3 IS INITIAL AND GS_SHOW-MENG5 IS INITIAL.
          DELETE TABLE GT_SHOW FROM GS_SHOW .
        ENDIF.
      ENDLOOP.
    
    
    
    ENDFORM.                    " PRM_GET_DATA
    *&---------------------------------------------------------------------*
    *&      Form  PRM_SET_FIELDCAT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM PRM_SET_FIELDCAT .
      APPEND_FIELDCAT:   'WERKS'           '工厂'           4   '',
                         'BUDAT'           '生产日期'       8   '',
                         'ARBPL'           '生产线编码'     8   '',
                         'KTEXT'           '生产线描述'     30  '',
                         'MATNR'           '项目编码'       10  'X',
                         'MAKTX'           '项目描述'       30  '',
                         'MOTYP'           '移动类型'       10  '',
                         'MEINS'           '单位'           5   '',
                         'MENG1'           '甲班数量'       13  '',
                         'MENG2'           '乙班数量'       13  '',
                         'MENG3'           '丙班数量'       13  '',
                         'MENG5'           '未对应班次数量'       13  '',
                         'MENG4'           '汇总数量'       13  ''.
    
      LS_LAYOUT-COLWIDTH_OPTIMIZE    = 'X'. "优化列宽选项是否设置
      LS_LAYOUT-ZEBRA                = 'X'.
      LS_LAYOUT-BOX_FIELDNAME        = 'SEL'.
      LS_LAYOUT-HEADER_TEXT        = '生产日报表'.
    
    
    ENDFORM.                    " PRM_SET_FIELDCAT
    *&---------------------------------------------------------------------*
    *&      Form  PRM_SHOW_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM PRM_SHOW_DATA .
      DATA:GT_SORT TYPE         SLIS_T_SORTINFO_ALV,
           GS_SORT LIKE LINE OF GT_SORT.
      GS_SORT-FIELDNAME = 'WERKS'.
      GS_SORT-UP = 'X'.
      APPEND GS_SORT TO GT_SORT.
      GS_SORT-FIELDNAME = 'BUDAT'.
      GS_SORT-UP = 'X'.
      APPEND GS_SORT TO GT_SORT.
      GS_SORT-FIELDNAME = 'ARBPL'.
      GS_SORT-UP = 'X'.
      APPEND GS_SORT TO GT_SORT.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
    *     I_INTERFACE_CHECK           = ' '
    *     I_BYPASSING_BUFFER          = ' '
    *     I_BUFFER_ACTIVE             = ' '
          I_CALLBACK_PROGRAM          = SY-REPID
    *     I_CALLBACK_PF_STATUS_SET    = ' '
    *     I_CALLBACK_USER_COMMAND     = ' '
    *     I_CALLBACK_TOP_OF_PAGE      = 'FRM_TOP_OF_PAGE'
          I_CALLBACK_HTML_TOP_OF_PAGE = 'FRM_HTML_TOP_OF_PAGE'
    *     I_CALLBACK_HTML_END_OF_LIST = ' '
    *     I_STRUCTURE_NAME            =
    *     I_BACKGROUND_ID             = ' '
    *     I_GRID_TITLE                = '生产日报表'
    *     I_GRID_SETTINGS             =
          IS_LAYOUT                   = LS_LAYOUT
          IT_FIELDCAT                 = GT_FIELDCAT
    *     IT_EXCLUDING                =
    *     IT_SPECIAL_GROUPS           =
          IT_SORT                     = GT_SORT
    *     IT_FILTER                   =
    *     IS_SEL_HIDE                 =
    *     I_DEFAULT                   = 'X'
          I_SAVE                      = 'A'
    *     IS_VARIANT                  =
    *     IT_EVENTS                   =
    *     IT_EVENT_EXIT               =
    *     IS_PRINT                    =
    *     IS_REPREP_ID                =
    *     I_SCREEN_START_COLUMN       = 0
    *     I_SCREEN_START_LINE         = 0
    *     I_SCREEN_END_COLUMN         = 0
    *     I_SCREEN_END_LINE           = 0
    *     I_HTML_HEIGHT_TOP           = 0
    *     I_HTML_HEIGHT_END           = 0
    *     IT_ALV_GRAPHICS             =
    *     IT_HYPERLINK                =
    *     IT_ADD_FIELDCAT             =
    *     IT_EXCEPT_QINFO             =
    *     IR_SALV_FULLSCREEN_ADAPTER  =
    * IMPORTING
    *     E_EXIT_CAUSED_BY_CALLER     =
    *     ES_EXIT_CAUSED_BY_USER      =
        TABLES
          T_OUTTAB                    = GT_SHOW
        EXCEPTIONS
          PROGRAM_ERROR               = 1
          OTHERS                      = 2.
      IF SY-SUBRC <> 0.
    * Implement suitable error handling here
      ENDIF.
    
    ENDFORM.                    " PRM_SHOW_DATA
    FORM FRM_HTML_TOP_OF_PAGE USING CL_DD TYPE REF TO CL_DD_DOCUMENT.
      DATA: M_P TYPE I.
      DATA: M_BUFF TYPE STRING.
      DATA:M_WERKS TYPE STRING.
      DATA:LV_FLAG TYPE C.
    
      LOOP AT S_WERKS.
        IF S_WERKS-LOW = '2001' OR S_WERKS-HIGH = '2001'.
          IF LV_FLAG = '1' OR LV_FLAG IS INITIAL.
            LV_FLAG = '1'.
          ELSEIF LV_FLAG = '2'.
            LV_FLAG = '3'.
          ENDIF.
        ENDIF.
        IF S_WERKS-LOW = '2002' OR S_WERKS-HIGH = '2002'.
          IF LV_FLAG = '2' OR LV_FLAG IS INITIAL.
            LV_FLAG = '2'.
          ELSEIF LV_FLAG = '1'.
            LV_FLAG = '3'.
          ENDIF.
        ENDIF.
      ENDLOOP.
    
      IF LV_FLAG = '1'.
        M_WERKS = '广州东凌粮油生产日报表'.
      ELSEIF LV_FLAG = '2'.
        M_WERKS = '广州植之元油脂实业生产日报表'.
      ELSE.
        M_WERKS = '生产日报表'.
      ENDIF.
    
    *表头其实完全可以是一个html文件,自己使用html语言进行格式控制
    
      M_BUFF = '<html>'.
    
      CALL METHOD CL_DD->HTML_INSERT
        EXPORTING
          CONTENTS = M_BUFF
        CHANGING
          POSITION = M_P.
    
      CONCATENATE '<center><H2>' M_WERKS  '</H2></Center>' INTO M_BUFF.
    
    *  M_BUFF = '<center><H2>生产日报表</H2></Center>'.
    
      CALL METHOD CL_DD->HTML_INSERT
        EXPORTING
          CONTENTS = M_BUFF
        CHANGING
          POSITION = M_P.
    
      CONCATENATE '<center>报表日期:' SY-DATUM+0(4) '' SY-DATUM+4(2) ''  SY-DATUM+6(2) '' '</Center>' INTO M_BUFF.
    *  CONCATENATE '报表日期:' S_DATE-LOW ' TO ' S_DATE-HIGH  '<BR>' INTO M_BUFF.
    
      CALL METHOD CL_DD->HTML_INSERT
        EXPORTING
          CONTENTS = M_BUFF
        CHANGING
          POSITION = M_P.
    
      M_BUFF = '</html>'.
    
      CALL METHOD CL_DD->HTML_INSERT
        EXPORTING
          CONTENTS = M_BUFF
        CHANGING
          POSITION = M_P.
    
    *  DATA: LV_TOP      TYPE STRING,
    *        LV_HTML     TYPE STRING,
    *        LV_LINE     TYPE I,
    *        LV_MONTH(2),
    *        LV_DAY(2).
    
    *  LV_HTML = '<html><body style="font-family:微软雅黑;font-size:12pt;font-weight:bold;margin:0;padding:0;line-height:25px;text-align:left">'.
    *  LV_HTML = LV_HTML && '<div style="font-size:14pt;margin-left:2CM;margin-top:2MM;">'.
    *  IF P_YEAR EQ 'X'.
    *    LV_TOP = LV_HTML && P_PYEAR && TEXT-013 && TEXT-014.
    *  ELSEIF P_MONT EQ 'X'.
    *    LV_MONTH = P_PMONT.
    *    SHIFT LV_MONTH LEFT DELETING LEADING '0'.
    *    LV_TOP = LV_HTML && P_PYEAR && TEXT-013 && LV_MONTH && TEXT-006 && TEXT-016 && TEXT-014.
    *  ENDIF.
    *  LV_MONTH = SY-DATUM+4(2).
    *  SHIFT LV_MONTH LEFT DELETING LEADING '0'.
    *  LV_DAY = SY-DATUM+6(2).
    *  SHIFT LV_DAY LEFT DELETING LEADING '0'.
    *  LV_TOP = LV_TOP && '</div><div style="margin-left:8CM;margin-top:3MM">' && TEXT-015 &&
    *           SY-DATUM(4) && '/' && LV_MONTH && '/' && LV_DAY && '</div></body></html>'.
    *  LV_TOP = '生产日报表'.
    *
    *  CALL METHOD CL_DD->HTML_INSERT
    *    EXPORTING
    *      CONTENTS = LV_TOP
    *    CHANGING
    *      POSITION = LV_LINE.
    
    ENDFORM.
    

    ---恢复内容结束---

  • 相关阅读:
    BZOJ
    Codeforces
    GYM
    UOJ
    Java集合之Queue
    【HIHOCODER 1478】 水陆距离(BFS)
    Java集合之Stack
    Java集合之Vector
    Java多线程入门Ⅱ
    【HIHOCODER 1604】股票价格II(堆)
  • 原文地址:https://www.cnblogs.com/sapSB/p/4815460.html
Copyright © 2020-2023  润新知