PM 通知单更新 IW22

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.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值