QPL1_INSPECTION_LOTS_POSTING创建检验批后无反应不报错有检验批生成最后数据库中并没有真正生成检验批

源代码(部分代码)

  "程序中存在直接更新标准表QALS自定义字段zdetectionid
  DATA:L_QALS     TYPE QALS,
       LO_QALS    TYPE QALS,
       L_RMQED    TYPE RMQED,
       L_PRUEFLOS TYPE QALS-PRUEFLOS,
       L_SUBRC    TYPE SY-SUBRC,
       LV_MATNR   TYPE MARA-MATNR,
       LV_VPSTA   TYPE MARA-VPSTA,
       LV_WERKS   TYPE T001W-WERKS,
       LS_MESSAGE TYPE BAPIRET2,
       RS_OUT     TYPE ZPIMT_OTHERQM0011,
       RS_IN      TYPE ZPIMT_OTHERQM001_FEDBK1.
  DATA:LS_BAPIRET2 TYPE BAPIRET2.
 

    CALL FUNCTION 'QPL1_INITIALIZE'
      EXPORTING
        I_LOT_DATA_ONLY 'X'.
*ZDETECTIONID
    "创建检验批
    L_QALS-MATNR = LV_MATNR.
    L_QALS-WERK  = LV_WERKS.
    L_QALS-HERKUNFT '89'.
    L_QALS-ART = IS_INPUT-DATA-ART.
    L_QALS-MANDANT = SY-MANDT.
    L_QALS-EBELN =  IS_INPUT-DATA-EBELN.

*  L_QALS-KUNNR = PKUNNR.
    L_QALS-KTEXTLOS = IS_INPUT-DATA-KTEXTLOS.

    L_RMQED-DBS_STEUER '01'.
    L_RMQED-DBS_FLAG   'X'.
    L_RMQED-DBS_EDUNK  'X'.
    L_RMQED-DBS_FDUNK  'X'.
    L_RMQED-DBS_NOERR  'X'.
    L_RMQED-DBS_NOWRN  'X'.
    L_RMQED-DBS_NOCHG  'X'.
    L_RMQED-DBS_SUBRC  'X'.
    L_RMQED-DBS_NOAUF  'X'.

    CLEAR:LS_INPUT,LS_WMS066_OUTPUT,LS_BATCHS,LS_WMS066_INPUT.
    LS_WMS066_INPUT-DEST-DEST_ID 'WMS'.
    "调用接口获取批次
    LS_INPUT-WERKS = L_QALS-WERK.
    APPEND LS_INPUT TO LS_WMS066_INPUT-DATA.
    CALL FUNCTION 'ZFM_IF_ZWMS066'
      EXPORTING
        IS_INPUT = LS_WMS066_INPUT
      IMPORTING
        ES_OUT   = LS_WMS066_OUTPUT.
    IF LS_WMS066_OUTPUT-DATA IS NOT INITIAL.
      READ TABLE LS_WMS066_OUTPUT-DATA INTO LS_BATCHS INDEX 1.
      IF SY-SUBRC 0.
        L_QALS-CHARG = LS_BATCHS-CHARG.
      ENDIF.
    ENDIF.
* Create lot in local LUW...
    CALL FUNCTION 'QPL1_INSPECTION_LOT_CREATE'
      EXPORTING
        QALS_IMP   = L_QALS
        RMQED_IMP  = L_RMQED
      IMPORTING
        E_PRUEFLOS = L_PRUEFLOS
        E_QALS     = LO_QALS
        E_RETURN   = LS_BAPIRET2
        SUBRC      = L_SUBRC.
    IF L_PRUEFLOS IS NOT INITIAL.
      LO_QALS-PRUEFLOS = L_PRUEFLOS.
      LO_QALS-LOSMENGE = IS_INPUT-DATA-LOSMENGE.
      ES_OUTPUT-DATA-CHARG = L_QALS-CHARG.
* Update memory stack for actual posting...
      CALL FUNCTION 'QPL1_UPDATE_MEMORY'
        EXPORTING
          I_QALS  = LO_QALS
          I_UPDKZ 'I'.
* Post lot to DataBase...
      CALL FUNCTION 'QPL1_INSPECTION_LOTS_POSTING'.
      COMMIT WORK AND WAIT.
ELSE.      
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.      
CONCATENATE '检验批创建失败:' LS_BAPIRET2-TYPE LS_BAPIRET2-MESSAGE INTO ES_OUTPUT-DATA-MESSAGE.     

ENDIF.

 

检查代码没问题,最后发现传入检验批数量为0导致每次生成了检验批消息返回成功但是没有真正的生成检验批。通过校验检验批数量返回错误消息即可解决此问题!

posted @   别忘了带红领巾  阅读(460)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 一个费力不讨好的项目,让我损失了近一半的绩效!
点击右上角即可分享
微信分享提示