abap qm01创建质检通知单相关bapi:IQS4_CREATE_NOTIFICATION

  网上查找关于创建质检通知单相关bapi时,基本都是显示BAPI_QUALNOT_CREATE该函数,经查看,该函数缺少QF01缺陷记录的参数,比如检验批,退货数量等字段,同时即使该函数成功执行,生成的通知单也是有问题的,记录的原因,活动,任务都是空白,并未保存成功,qm模块网上资料甚少,经过不懈查找终于找到该IQS4_CREATE_NOTIFICATION函数完美匹配写入参数。

  该函数可写入检验批,退货数量,缺陷记录报告类型,绑定生产订单,工艺路线以及工序编号等数据,并且标准表记录数值。

下面是该函数的使用简例:

DATA: ls_riqs5      TYPE riqs5,
      ls_viqmel     TYPE viqmel,
      lt_rfc_tline  TYPE TABLE OF rfc_tline,
      lt_rfc_viqmfe TYPE TABLE OF rfc_viqmfe,
      lt_rfc_viqmur TYPE TABLE OF rfc_viqmur,
      lt_rfc_viqmsm TYPE TABLE OF rfc_viqmsm,
      lt_rfc_viqmma TYPE TABLE OF rfc_viqmma,
      lt_rfc_ihpa   TYPE TABLE OF rfc_ihpa,
      lt_rfc_key    TYPE TABLE OF rfc_key,
      ls_rfc_tline  TYPE  rfc_tline,
      ls_rfc_viqmfe TYPE  rfc_viqmfe,
      ls_rfc_viqmur TYPE  rfc_viqmur,
      ls_rfc_viqmsm TYPE  rfc_viqmsm,
      ls_rfc_viqmma TYPE  rfc_viqmma,
      ls_rfc_ihpa   TYPE  rfc_ihpa,
      ls_rfc_key    TYPE  rfc_key.

LOOP AT gt_alv2 INTO wa_alv2.
    IF wa_alv2-prueflos+1(1) = '1'.
      ls_riqs5-qmart = 'F2'.
    ELSEIF wa_alv2-prueflos+1(1) = '3'.
      ls_riqs5-qmart = 'F3'.
    ENDIF.
    "抬头
    ls_riqs5-matnr = wa_alv2-matnr.
    ls_riqs5-mawerk = wa_alv2-werks.
    ls_riqs5-ekorg =  wa_alv2-ekorg.
    ls_riqs5-qmtxt = wa_alv2-qmtxt.
    ls_riqs5-priok = wa_alv2-priok.
    ls_riqs5-strmn = wa_alv2-strmn.
*    ls_riqs5-qmkat = 'D'.
    ls_riqs5-qmkat = wa_alv2-qmkat.
    ls_riqs5-qmgrp = wa_alv2-qmgrp.
    ls_riqs5-qmcod = wa_alv2-qmcod.
*    ls_riqs5-bzmng = '200'.
*    ls_riqs5-rkmng = '200'.
    ls_riqs5-rgmng = wa_alv2-rgmng.
    ls_riqs5-prueflos = wa_alv2-prueflos.
    IF wa_alv2-aufnr IS NOT INITIAL.
      ls_riqs5-fertaufnr = wa_alv2-aufnr.            "生产订单
      ls_riqs5-fertaufpl = wa_alv2-aufpl.            "工艺路线

      READ TABLE lt_afvc INTO DATA(ls_afvc) WITH KEY aufpl = wa_alv2-aufpl
                                                     vornr = wa_alv2-vornr
                                                     BINARY SEARCH.
      IF sy-subrc = 0.
        ls_riqs5-pnlkn = ls_afvc-aplzl.            "计数器(工序VORNR)
        ls_riqs5-arbpl = ls_afvc-arbid.            "工作中心对象标识
        ls_riqs5-arbplwerk = ls_afvc-werks.        "工作中心工厂
      ENDIF.
    ENDIF.
    
	"长文本写入
    ls_rfc_tline-refobjtyp = 'QMEL'.
    ls_rfc_tline-tdformat = '*'.
    ls_rfc_tline-tdline = wa_alv2-longtext.
    APPEND ls_rfc_tline TO lt_rfc_tline.

    LOOP AT gt_alv INTO wa_alv WHERE prueflos = wa_alv2-prueflos.
      "项目
      ls_rfc_viqmfe-fenum = wa_alv-urnum.
      ls_rfc_viqmfe-fetxt = wa_alv-fetxt.
      ls_rfc_viqmfe-fekat =  '9'.
      ls_rfc_viqmfe-fegrp = wa_alv-fegrp.
      ls_rfc_viqmfe-fecod = wa_alv-fecod.
      ls_rfc_viqmfe-otkat = 'E'.
      ls_rfc_viqmfe-otgrp = wa_alv-otgrp.
      ls_rfc_viqmfe-oteil = wa_alv-oteil.
      lv_len = strlen( wa_alv-bautl ).
      IF lv_len > 18.
        wa_alv-bautl = |{ wa_alv-bautl ALPHA = IN }|.
        ls_rfc_viqmfe-bautl = wa_alv-bautl.
      ELSE.
        lv_bautl = |{ wa_alv-bautl ALPHA = IN }|.
        ls_rfc_viqmfe-bautl = lv_bautl.
      ENDIF.
      ls_rfc_viqmfe-posnr = wa_alv-urnum.
      ls_rfc_viqmfe-anzfehler = wa_alv-anzfehler.
      ls_rfc_viqmfe-feart = '00000042'.    "缺陷记录的报告类型
      APPEND ls_rfc_viqmfe TO lt_rfc_viqmfe.
      "原因
      ls_rfc_viqmur-fenum = wa_alv-urnum.
      ls_rfc_viqmur-urnum = wa_alv-urnum.
      ls_rfc_viqmur-urkat = '5'.
      ls_rfc_viqmur-urtxt = wa_alv-urtxt.
      ls_rfc_viqmur-urgrp = wa_alv-urgrp.
      ls_rfc_viqmur-urcod = wa_alv-urcod.
      ls_rfc_viqmur-posnr = wa_alv-vornr.          "工序编号
      ls_rfc_viqmur-qurnum = wa_alv-qurnum.   "通知单项目号
      APPEND ls_rfc_viqmur TO lt_rfc_viqmur.
      "任务
      ls_rfc_viqmsm-fenum = wa_alv-urnum.
      ls_rfc_viqmsm-manum = wa_alv-urnum.
      ls_rfc_viqmsm-matxt = wa_alv-matxt.
      ls_rfc_viqmsm-mnkat = '2'.
      ls_rfc_viqmsm-mngrp = wa_alv-mngrp.
      ls_rfc_viqmsm-mncod = wa_alv-mncod.
      ls_rfc_viqmsm-qsmnum = wa_alv-qsmnum.
      ls_rfc_viqmsm-parvw = 'VU'.
      ls_rfc_viqmsm-parnr = sy-uname.
      ls_rfc_viqmsm-posnr = wa_alv-vornr.
      APPEND ls_rfc_viqmsm TO lt_rfc_viqmsm.
      "作业
      ls_rfc_viqmma-fenum = wa_alv-urnum.
      ls_rfc_viqmma-manum = wa_alv-urnum.
      ls_rfc_viqmma-matxt = wa_alv-matxt1.
      ls_rfc_viqmma-mnkat = '8'.
      ls_rfc_viqmma-mngrp = wa_alv-mngrp1.
      ls_rfc_viqmma-mncod = wa_alv-mncod1.
      ls_rfc_viqmma-qmanum = wa_alv-qmanum.
      ls_rfc_viqmma-posnr = wa_alv-vornr.
      APPEND ls_rfc_viqmma TO lt_rfc_viqmma.
	"合作伙伴
      IF wa_alv2-prueflos+1(1) = '1'.
        ls_rfc_ihpa-parvw =  'LF'.
        ls_rfc_ihpa-parnr =  wa_alv-lifnr.
        APPEND ls_rfc_ihpa TO lt_rfc_ihpa.
      ELSEIF wa_alv2-prueflos+1(1) = '3'.
        ls_rfc_ihpa-parvw =  'AO'.
        ls_rfc_ihpa-parnr =  sy-uname.
        APPEND ls_rfc_ihpa TO lt_rfc_ihpa.
      ENDIF.

      ls_rfc_ihpa-parvw =  'KU'.
      ls_rfc_ihpa-parnr =  sy-uname.
      APPEND ls_rfc_ihpa TO lt_rfc_ihpa.

      CLEAR:wa_alv,ls_rfc_viqmfe,ls_rfc_viqmur,ls_rfc_viqmsm,ls_rfc_viqmma,ls_rfc_ihpa.
    ENDLOOP.
    "创建质量通知单
    CALL FUNCTION 'IQS4_CREATE_NOTIFICATION'
      EXPORTING
*       I_QMNUM            =
*       I_AUFNR            =
        i_riqs5            = ls_riqs5
*       I_TASK_DET         = ' '
*       I_CONV             = ' '
*       I_BIN_RELATIONSHIP = ' '
*       I_SENDER           =
        i_post             = 'X'
        i_commit           = 'X'
        i_wait             = 'X'
        i_refresh_complete = 'X'
        i_check_parnr_comp = 'X'
        i_rfc_call         = 'X'
        i_rbnr             = 'X'
*       I_NOTIF_COPY       = ' '
*       I_DMS_COPY         = ' '
*       I_GEO_COPY         = ' '
*       I_DATE_ADJUSTMENT  = 'O'
      IMPORTING
        e_viqmel           = ls_viqmel
*       E_RIWO03           =
      TABLES
        i_inlines_t        = lt_rfc_tline
        i_viqmfe_t         = lt_rfc_viqmfe
        i_viqmur_t         = lt_rfc_viqmur
        i_viqmsm_t         = lt_rfc_viqmsm
        i_viqmma_t         = lt_rfc_viqmma
        i_ihpa_t           = lt_rfc_ihpa
        e_keys             = lt_rfc_key
*       E_BIN_RELATION_TAB =
        return             = lt_return.

    LOOP AT lt_return INTO ls_return WHERE type = 'E' OR type = 'A'.
      lv_mess = lv_mess && ls_return-message && '/'.
    ENDLOOP.
    IF sy-subrc <> 0.
	 "通知单保存
      CALL FUNCTION 'IQS4_SAVE_NOTIFICATION'
        EXPORTING
          i_qmnum  = ls_viqmel-qmnum
          i_commit = 'X'
          i_wait   = 'X'
*       IMPORTING
*         E_VIQMEL =
        TABLES
          return   = lt_return.

      LOOP AT lt_return INTO ls_return WHERE type = 'E' OR type = 'A'.
        lv_mess = lv_mess && ls_return-message && '/'.
      ENDLOOP.
      IF sy-subrc <> 0.
      "提交
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
        wa_alv-zmess = wa_alv-zmess && '/' && '通知单创建成功'.
        wa_alv-icon = icon_green_light.
        wa_alv-qmnum = ls_viqmel-qmnum.
        MODIFY gt_alv FROM wa_alv TRANSPORTING zmess icon qmnum WHERE prueflos = wa_alv2-prueflos.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        wa_alv-zmess = wa_alv-zmess && '/' && lv_mess.
        wa_alv-icon = icon_red_light.
        MODIFY gt_alv FROM wa_alv TRANSPORTING zmess icon WHERE prueflos = wa_alv2-prueflos.
      ENDIF.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

      wa_alv-zmess = wa_alv-zmess && '/' && lv_mess.
      wa_alv-icon = icon_red_light.
      MODIFY gt_alv FROM wa_alv TRANSPORTING zmess icon WHERE prueflos = wa_alv2-prueflos.
    ENDIF.

    CLEAR:wa_alv2,ls_riqs5,lt_rfc_viqmfe,lt_rfc_viqmur,lt_rfc_viqmsm,lt_rfc_viqmma,lt_rfc_ihpa,lt_return,lt_lines,ls_viqmel,lt_rfc_tline,ls_afvc.
  ENDLOOP.

另外,该系列函数还有:
通知单查询:IQS4_GET_NOTIFICATION
通知单修改:IQS4_MODIFY_NOTIFICATION
通知单添加:IQS4_ADD_DATA_NOTIFICATION
通知单删除:IQS4_DEL_DATA_NOTIFICATION
通知单保存:IQS4_SAVE_NOTIFICATION

qm模块相关表:
检验批:qals
通知单抬头:qmel
通知单明细:qmfe
通知-作业:qmma
通知-任务:qmsm
通知-原因:qmur
通知检验批关系:qmfel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值