检验批数据查找接口

下面是整体代码:

FUNCTION ZRFC_WMS016.
*"----------------------------------------------------------------------
*"*"區域介面:
*"  IMPORTING
*"     VALUE(I_QAMR_FLAG) TYPE  CHAR1 DEFAULT 'X'
*"     VALUE(I_QAKL_FLAG) TYPE  CHAR1 DEFAULT 'X'
*"     VALUE(I_QMFE_FLAG) TYPE  CHAR1 DEFAULT 'X'
*"  EXPORTING
*"     VALUE(EV_TYPE) TYPE  BAPI_MTYPE
*"     VALUE(EV_MESSAGE) TYPE  BAPI_MSG
*"  TABLES
*"      IT_PRUEFLOS STRUCTURE  ZRANGES_PRUEFLOS OPTIONAL
*"      IT_BUDAT STRUCTURE  ZRANGES_DATUM OPTIONAL
*"      IT_MATNR STRUCTURE  ZRANGES_MATNR OPTIONAL
*"      IT_MBLNR STRUCTURE  ZRANGES_MBLNR OPTIONAL
*"      IT_MJAHR STRUCTURE  ZRANGES_MJAHR OPTIONAL
*"      OT_QALS STRUCTURE  ZWMS016_QALS OPTIONAL
*"      OT_QAMR STRUCTURE  ZWMS016_QAMR OPTIONAL
*"      OT_QAKL_SE STRUCTURE  ZWMS016_QAKL_SE OPTIONAL
*"      OT_QMFE STRUCTURE  ZWMS016_QMFE OPTIONAL
*"----------------------------------------------------------------------

  "QAMV 檢驗處理的特性規格
  "QAMR 在檢驗處理間的特性結果   检验批的检验特性的判定结果
  "QASR 檢查特性的採樣結果(结果为0)
  "QASE 樣品單位的結果表格 检验批的检验特性测量值(包括多个值)
  "QAKL 數值等級的結果表格 记录合格或者不合格等
  "QMFE 品質通知 - 項目    记录的瑕疵,包括瑕疵代码,数量等
  "QMEL 检验批关联该表,QMEL~QMNUM = QMFE~QMNUM
  "QAVE 檢查處理:檢驗結果判定


  "正式 040000931591 例子
  DATA: I_WERKS TYPE WERKS_D.
  I_WERKS = '6100'.
  DATA:LW_RC27M TYPE RC27M.

  FIELD-SYMBOLS: <FS_ITEM> TYPE ZWMS016_QALS.

  " 获取 检验批检验特性查询 及总判定结果
  SELECT A~PRUEFLOS A~ART A~HERKUNFT A~OBJNR A~MATNR A~WERK AS WERKS A~PLNTY A~PLNNR "A~PLNAL
         A~MJAHR A~MBLNR A~ZEILE A~BUDAT A~BWART
         C~VERWE C~STATU C~PLNAL C~ZAEHL C~VAGRP "C~ABANZ
         B~MERKNR B~VERWMERKM B~KURZTEXT B~PRUEFQUALI B~PRUEFUMF B~STICHPRVER B~PROBEMGEH B~STELLEN
         B~SOLLWERT B~SOLLWNI B~TOLERANZUN B~TOLUNNI B~TOLERANZOB B~TOLOBNI
         D~KZART D~ZAEHLER D~VKATART D~VWERKS D~VAUSWAHLMG D~VCODEGRP D~VCODE D~VBEWERTUNG D~DBEWERTUNG D~QKENNZAHL
    INTO CORRESPONDING FIELDS OF TABLE OT_QALS
    FROM QALS AS A INNER JOIN PLKO AS C ON A~PLNTY = C~PLNTY
                                       AND A~PLNNR = C~PLNNR
                                       AND A~ZAEHL = C~ZAEHL
                   INNER JOIN QAMV AS B ON B~PRUEFLOS = A~PRUEFLOS
*                                       AND B~PLNNR = C~PLNNR
*                                       AND B~PLNKN = C~ZAEHL
                   LEFT  JOIN QAVE AS D ON D~PRUEFLOS = A~PRUEFLOS
    WHERE A~PRUEFLOS IN IT_PRUEFLOS
      AND A~BUDAT IN IT_BUDAT
      AND A~MATNR IN IT_MATNR
      AND A~MBLNR IN IT_MBLNR
      AND A~MJAHR IN IT_MJAHR
      AND A~WERK = I_WERKS.
*    AND   A~PLNTY = 'Q'.
*    AND   A~LOEKZ = ' '
*    AND   C~VERWE IN IT_VERWE
*    AND   C~STATU EQ I_STATU
*    AND   B~LOEKZ <> 'X'.

  IF OT_QALS[] IS INITIAL.
    EV_TYPE = 'E'.
*      EV_MESSAGE = '在'.
    CONCATENATE '在工厂' I_WERKS '中,未找到检验批' '的检验项目' INTO EV_MESSAGE.
    RETURN.
  ENDIF.

  IF OT_QALS[] IS NOT INITIAL.
    "获取 检验批的特性判定结果
    IF I_QAMR_FLAG EQ 'X'.
      SELECT *
        INTO CORRESPONDING FIELDS OF TABLE OT_QAMR
        FROM QAMR AS A
         FOR ALL ENTRIES IN OT_QALS
       WHERE A~PRUEFLOS EQ OT_QALS-PRUEFLOS.
    ENDIF.

    "获取 检验批检验特性测量值
    IF I_QAKL_FLAG EQ 'X'.
      SELECT A~PRUEFLOS A~VORGLFNR A~MERKNR A~DETAILERG A~ERSTELLER A~ERSTELLDAT
             A~STUECKNR A~PRUEFER A~MBEWERTG A~ORIGINAL_INPUT
        INTO CORRESPONDING FIELDS OF TABLE OT_QAKL_SE
        FROM QASE AS A
         FOR ALL ENTRIES IN OT_QALS
       WHERE A~PRUEFLOS EQ OT_QALS-PRUEFLOS.

      SELECT A~PRUEFLOS A~VORGLFNR A~MERKNR A~DETAILERG A~ERSTELLER A~ERSTELLDAT
             A~ANZKLASEH A~KATALOG A~GRUPPE A~CODE A~FEHLKLAS
        APPENDING CORRESPONDING FIELDS OF TABLE OT_QAKL_SE
        FROM QAKL AS A
         FOR ALL ENTRIES IN OT_QALS
       WHERE A~PRUEFLOS EQ OT_QALS-PRUEFLOS
         AND A~ANZKLASEH NE 0.
    ENDIF.

    "获取品质(瑕疵)
    IF I_QMFE_FLAG EQ 'X'.
      SELECT A~QMNUM A~QMART A~ARTPR A~ERNAM A~ERDAT A~AENAM A~AEDAT A~MZEIT A~QMDAT A~QMNAM
             A~MATNR A~REVLV A~MATKL A~PRDHA A~OBJNR A~RBNR A~HERKZ A~LIFNUM A~VBELN A~BSTNK
             A~BSTDK A~SPART A~VKORG A~VTWEG A~MAWERK A~PRUEFLOS A~CHARG A~LGORTCHARG A~LGORTCHARG
             A~EKORG A~BKGRP A~LGORTVORG A~EBELN A~EBELP A~MJAHR A~MBLNR A~MBLPO A~LS_KDAUF A~LS_KDPOS
             A~LS_VBELN A~LS_POSNR A~MGEIN A~BZMNG A~RKMNG
             B~FENUM B~FETXT B~FEKAT B~FEGRP B~FECOD B~FEVER B~FEQKLAS B~FEART B~PNLKN B~MERKNR B~CROBJTY
             B~ARBPL B~ARBPLWERK
        INTO CORRESPONDING FIELDS OF TABLE OT_QMFE
        FROM QMEL AS A JOIN QMFE AS B ON A~QMNUM EQ B~QMNUM
         FOR ALL ENTRIES IN OT_QALS
       WHERE A~PRUEFLOS EQ OT_QALS-PRUEFLOS.
    ENDIF.
  ENDIF.

  LOOP AT OT_QALS ASSIGNING <FS_ITEM>.
***物料描述
    CALL FUNCTION 'CZ_MATERIAL_READ'
        EXPORTING
          MATNR             = <FS_ITEM>-MATNR
          WERKS             = <FS_ITEM>-WERKS
*     VERID             = ' '
*     DIR_INP_FLG       = ' '
*     NO_MESSAGE        = ' '
       IMPORTING
           RC27M_EXP         = LW_RC27M.

    <FS_ITEM>-MAKTX = LW_RC27M-MAKTX.

    IF <FS_ITEM>-VERWMERKM+0(1) =  'L'.

      CALL FUNCTION 'FLTP_CHAR_CONVERSION'
        EXPORTING
          INPUT = <FS_ITEM>-SOLLWERT  "Sollwert
          IVALU = <FS_ITEM>-SOLLWNI
          DECIM = <FS_ITEM>-STELLEN
        IMPORTING
          FLSTR = <FS_ITEM>-L_SOLLWERT.

      CALL FUNCTION 'FLTP_CHAR_CONVERSION'
        EXPORTING
          INPUT = <FS_ITEM>-TOLERANZUN"untere Toleranz
          IVALU = <FS_ITEM>-TOLUNNI
          DECIM = <FS_ITEM>-STELLEN
        IMPORTING
          FLSTR = <FS_ITEM>-L_TOLERANZUN.
      CALL FUNCTION 'FLTP_CHAR_CONVERSION'
        EXPORTING
          IVALU = <FS_ITEM>-TOLOBNI
          INPUT = <FS_ITEM>-TOLERANZOB"obere Toleranz
          DECIM = <FS_ITEM>-STELLEN
        IMPORTING
          FLSTR = <FS_ITEM>-L_TOLERANZOB.
    ENDIF.
  ENDLOOP.

  EV_TYPE = 'S'.
  EV_MESSAGE = '查询完成'.
ENDFUNCTION.
View Code

 

posted @ 2026-05-22 11:01  蛀牙首领  阅读(7)  评论(0)    收藏  举报