网上查找关于创建质检通知单相关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