FUNCTION zpm_notifclsd.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(NOTIFCLSD) TYPE ZSPM_NOTIFCLSD
*" EXPORTING
*" VALUE(RETURN) TYPE ZSPM_RETURN
*"----------------------------------------------------------------------
DATA : ls_notif_head TYPE bapi2080_nothdri,
ls_notif_headx TYPE bapi2080_nothdri_x,
lt_notitem TYPE STANDARD TABLE OF bapi2080_notitemi,
lt_notifcaus TYPE STANDARD TABLE OF bapi2080_notcausi,
lt_notifactv TYPE STANDARD TABLE OF bapi2080_notactvi,
lt_return TYPE STANDARD TABLE OF bapiret2,
ls_return TYPE bapiret2,
ls_notitem TYPE bapi2080_notitemi,
ls_notifcaus TYPE bapi2080_notcausi,
ls_notifactv TYPE bapi2080_notactvi,
ls_stat TYPE bapi2080_notsti,
lv_user TYPE j_stext.
alphain 'ALPHA' notifclsd-qmnum.
SELECT SINGLE * FROM viqmel WHERE qmnum = notifclsd-qmnum.
IF sy-subrc <> 0.
ret 'E' '通知单不存在'.
ENDIF.
SELECT SINGLE * FROM v_equi WHERE equnr = viqmel-equnr AND datbi >= viqmel-qmdat. "#EC *
IF sy-subrc <> 0.
ret 'E' '通知单对象设备不存在'.
ENDIF.
"状态检查
CALL FUNCTION 'STATUS_TEXT_EDIT'
EXPORTING
objnr = viqmel-objnr
spras = sy-langu
IMPORTING
line = lv_user "DLID 删除标志,NOCO 通知完成
EXCEPTIONS
object_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
IF lv_user CS 'DLID' OR lv_user CS 'NOCO'.
ret 'E' '(IM:264)因为通知单已经完成, 不能新输入'.
ENDIF.
ENDIF.
def:notifclsd-ausvn viqmel-ausvn,
notifclsd-auztv viqmel-auztv,
notifclsd-ausbs sy-datum,
notifclsd-auztb sy-uzeit.
ls_notif_head-refobjectkey = ''. "对象关键字
"表头
ls_notif_head-short_text = notifclsd-qmtxt.
ls_notif_head-breakdown = notifclsd-msaus.
ls_notif_head-strmlfndate = notifclsd-ausvn. "故障日期
ls_notif_head-strmlfntime = notifclsd-auztv. "故障时间
ls_notif_head-endmlfndate = notifclsd-ausbs. "故障结束(日期)
ls_notif_head-endmlfntime = notifclsd-auztb. "故障结束(时间)
ls_notif_headx-short_text = 'X'.
ls_notif_headx-breakdown = 'X'.
ls_notif_headx-strmlfndate = 'X'.
ls_notif_headx-strmlfntime = 'X'.
ls_notif_headx-endmlfndate = 'X'.
ls_notif_headx-endmlfntime = 'X'.
"项目 - QMFE
"故障代码 ==> QPCT-KATALOGART = 'B'. CODEGRUPPE = V_EQUI–RBNR.
"故障现象 ==> QPCT-KATALOGART = 'C'. CODEGRUPPE = V_EQUI–RBNR.
ls_notitem-refobjectkey = ''. "对象关键字
ls_notitem-item_key = '0001'. "项目记录中的项目号
ls_notitem-item_sort_no = '0001'. "排序项目编号
ls_notitem-descript = notifclsd-fetxt. "通知项目的短文本
ls_notitem-d_codegrp = v_equi-rbnr. "代码组 - 问题
ls_notitem-d_code = notifclsd-fecod. "问题或损坏代码
ls_notitem-dl_codegrp = v_equi-rbnr. "代码组 - 对象部分
ls_notitem-dl_code = notifclsd-oteil. "对象部分
APPEND ls_notitem TO lt_notitem.
CLEAR ls_notitem.
"原因 - QMUR
"原因代码 ==> QPCT-KATALOGART = '5'. CODEGRUPPE = V_EQUI–RBNR.
ls_notifcaus-refobjectkey = ''. "对象关键字
ls_notifcaus-cause_key = '0001'. "原因的系列号
ls_notifcaus-cause_sort_no = '0001'. "原因的排序编号
ls_notifcaus-item_key = '0001'. "项目记录中的项目号
ls_notifcaus-causetext = notifclsd-urtxt. "原因文本
ls_notifcaus-cause_codegrp = v_equi-rbnr. "代码组 - 原因
ls_notifcaus-cause_code = notifclsd-urcod. "原因代码
ls_notifcaus-item_sort_no = '0001'. "排序项目编号
APPEND ls_notifcaus TO lt_notifcaus.
CLEAR ls_notifcaus.
"作业 - QMMA
"作业 ==> QPCT-KATALOGART = 'A'. CODEGRUPPE = V_EQUI–RBNR.
ls_notifactv-refobjectkey = ''. "对象关键字
ls_notifactv-act_key = '0001'. "作业的连续号码
ls_notifactv-act_sort_no = '0001'. "排序作业号
ls_notifactv-acttext = notifclsd-matxt. "作业文本
ls_notifactv-act_codegrp = v_equi-rbnr. "代码组 - 作业
ls_notifactv-act_code = notifclsd-mncod. "活动代码
* ls_notifactv-start_date = sy-datum. "开始日期
* ls_notifactv-start_time = sy-uzeit. "作业的启动时间
* ls_notifactv-end_date = sy-datum + 1. "终止日期
* ls_notifactv-end_time = sy-uzeit. "作业结束时间
ls_notifactv-item_sort_no = '0001'. "排序项目编号
APPEND ls_notifactv TO lt_notifactv.
CLEAR ls_notifactv.
"修改表头
CALL FUNCTION 'BAPI_ALM_NOTIF_DATA_MODIFY'
EXPORTING
number = notifclsd-qmnum
notifheader = ls_notif_head
notifheader_x = ls_notif_headx
TABLES
return = lt_return.
msg return-message return-zrest '200'.
REFRESH lt_return.
"添加项目
CALL FUNCTION 'BAPI_ALM_NOTIF_DATA_ADD'
EXPORTING
number = notifclsd-qmnum
TABLES
notitem = lt_notitem
notifcaus = lt_notifcaus
notifactv = lt_notifactv
return = lt_return.
msg return-message return-zrest '200'.
REFRESH lt_return.
"设置完成(状态)
ls_stat-langu = sy-langu.
ls_stat-refdate = notifclsd-ausbs.
ls_stat-reftime = notifclsd-auztb.
CALL FUNCTION 'BAPI_ALM_NOTIF_CLOSE'
EXPORTING
number = notifclsd-qmnum
syststat = ls_stat
TABLES
return = lt_return.
msg return-message return-zrest '200'.
REFRESH lt_return.
"保存通知单
CALL FUNCTION 'BAPI_ALM_NOTIF_SAVE'
EXPORTING
number = notifclsd-qmnum
TABLES
return = lt_return.
msg return-message return-zrest '200'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
return-zrest = '100'.
REFRESH : lt_notitem, lt_notifcaus, lt_notifactv, lt_return.
CLEAR : ls_notif_head, ls_notif_headx, ls_notitem,
ls_notifcaus, ls_notifactv, ls_return.
ENDFUNCTION.
PM 通知单更新 IW22
最新推荐文章于 2023-04-24 10:24:10 发布