Skip to Content
Technical Articles
Author's profile photo Albert Molnar

QM Open Note – #3 – Next Inspection Date update (code level)

QM Open Note

QM Open Note is a blog post series about topics, which can be useful when working with Quality Management.


Overview

Current blog post contains some scenarios with code places, where the Next Inspection Date for a batch is updated (MCHA-QNDAT).

In detail

Documentation of Data element ‘QNPDAT’:

“Next Inspection Date

Defines the date for the next recurring inspection for the batch.

Dependencies
There is a program that runs on a cyclical basis for monitoring the date. If necessary, this program creates an inspection lot.

You can also use the following functions for deadline monitoring:

  • The job overview display function
  • The job planning maintenance function”

Scenarios:

  1. Usage decision is made for an inspection lot (transaction QA11):

    1. Call Stack:
      8 FORM WIEDERKEHRENDE_PRUEFUNG SAPMQEVA MQEVAF40
      7 FORM CHARGE_KLASSIFIZIEREN SAPMQEVA MQEVAF40
      6 FORM OK_FCODE_BUCHEN SAPMQEVA MQEVAF30
      5 FORM FCODE_BEARBEITEN SAPLV00F LV00FF0F
    2. Code:
      */Nächstes Prüfdatum ist heute plus Prüfintervall aus Materialstamm
        g_npruefdatum = sy-datum + marc-prfrq.
        WRITE g_npruefdatum DD/MM/YY TO l_datum_aufbereitet.
      
      */Customer-Function für 'Neues Prüfdatum'
        CALL CUSTOMER-FUNCTION '003'
          EXPORTING
            i_qals       = qals
            i_qave       = qave
            i_prfrq      = marc-prfrq
            i_zeugnisbis = qals-zeugnisbis
            i_qndat      = g_mchar-qndat
          IMPORTING
            e_qndat_neu  = l_qndat2.​

      Customer Exit for Calculating Next Inspection Date is EXIT_SAPMQEVA_003 (Enhancement QEVA0003).

  2. Goods receipt for a purchase order (transaction MIGO or MIGO_GR):

    1. Call Stack:
      14 FORM CHARGENDATEN_MAT_SETZEN SAPFM07M FM07MFCL_CHARGENDATEN_MAT_SETZ
      13 FORM MATERIAL_PRUEFEN SAPFM07M FM07MEM0_MATERIAL_PRUEFEN
      12 FORM LAGERORTDATEN SAPMM07M MM07MFL0_LAGERORTDATEN
      11 FUNCTION MB_CREATE_GOODS_ISSUE_ITEM SAPLMBWL LMBWLU04
      10 FUNCTION MB_CREATE_GOODS_MOVEMENT SAPLMBWL LMBWLU14
      9 FUNCTION MB_CREATE_GOODS_MOVEMENT SAPLMBWL LMBWLU14
      8 METHOD DOCUMENT_OPERATION SAPLMIGO LMIGOKD1
    2. Code:
      * Set next inspection date via BAdI MB_BATCH_MASTER
        DATA: lv_qndat_keep TYPE xfeld.                           "1947010
        TRY.
            GET BADI g_badi_batch_master.
            CALL BADI g_badi_batch_master->maintain_inspection_date
              EXPORTING
                is_vm07m    = vm07m
                is_mbefu    = mbefu
                is_dm07m    = dm07m
                is_mcha_buf = loc_mcha_buf
              IMPORTING
                ev_qndat      = vm07m-qndat
                ev_qndat_keep = lv_qndat_keep.                    "1947010
          CATCH cx_badi_not_implemented.
        ENDTRY.
      * Setzten des nächsten Prüfdatums wenn noch nicht gesetzt
        IF lv_qndat_keep IS INITIAL.                              "1947010
          IF vm07m-qndat IS INITIAL AND NOT mbefu-prfrq IS INITIAL
                                  AND mbefu-qndat IS INITIAL
                                  AND NOT vm07m-lwedt IS INITIAL.
          vm07m-qndat = vm07m-lwedt + mbefu-prfrq.
        ENDIF.
        ENDIF.​

      Setting of Batch Data on Goods Movement with BAdI MB_BATCH_MASTER, including Next Inspection Date. (Interface IF_EX_MB_BATCH_MASTER, Enhancement Spot MB_GOODSMOVEMENT)

  3. Enter production order confirmation (transaction CO15 with goods movement):

    1. Call Stack:
      22 FORM CHARGENDATEN_MAT_SETZEN SAPFM07M FM07MFCL_CHARGENDATEN_MAT_SETZ
      21 FORM MATERIAL_PRUEFEN SAPFM07M FM07MEM0_MATERIAL_PRUEFEN
      20 FORM LAGERORTDATEN SAPMM07M MM07MFL0_LAGERORTDATEN
      19 FUNCTION MB_CREATE_GOODS_ISSUE_ITEM SAPLMBWL LMBWLU04
      18 FUNCTION MB_CREATE_GOODS_MOVEMENT SAPLMBWL LMBWLU14
      17 FUNCTION MB_CREATE_GOODS_MOVEMENT SAPLMBWL LMBWLU14
      16 FUNCTION CO_RU_GOODS_MOVEMENT SAPLCORF LCORFU42
      15 FORM VB_GOODS_MOVEMENT SAPLCORF LCORFF4S
      14 FUNCTION CO_RU_CONF_POST SAPLCORF LCORFU46
      13 FUNCTION PROCESS_CC234_MESSAGES SAPLCOPD LCOPDU13
      12 FUNCTION PLANT_DATA_ANALYZE SAPLCOPD LCOPDU06
      11 FUNCTION CO_RU_CONFIRMATION_POST SAPLCORF LCORFU08
    2. Code: same as in Scenario 2.) with the MIGO, as same function modules and forms are called.

 

Known problem & solution

Transaction QA07 (Program RQAAAS10) can be used to trigger recurring inspection / deadline monitoring of batches.

There are some requirements for the successful selection of batches according to the program documentation:

“…

The batch master data corresponds to the selection conditions.
Only those batches that fulfill the following conditions are examined:

  • The batch status is “released”.
  • The unrestricted-use stock is greater than zero.
  • The stock is not in an HU storage location.
  • The stock is not special stock.

…”

See SAP Note about possible room for custom development:
608830 – BIC: BAdI implementation for the recurring inspection


Feel free to share your experience/feedback in the Comment Section. Thank you.

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.