生产日报表

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

虽然各个公司都不一样,但是这个报表还是可以参考一下的。字段不清楚可以先看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.

 

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

转载于:https://www.cnblogs.com/sapSB/p/4815460.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值