维修工单下达BAPI

博客介绍了IBAPI_ALM_ORDER_RELEASE BAPI,它可将工单状态设为下达状态,但需工单已维护结算规则。该BAPI下达的工单修改保存会导致程序DUMP,不建议使用,建议用BAPI_ALM_ORDER_MAINTAIN。还说明了BAPI使用规则、参数处理及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IBAPI_ALM_ORDER_RELEASE

本BAPI可以将工单的状态设置为下达状态(REL)。但工单下达有一个前提:那就是工单必须已经维护了结算规则。本BAPI下达过的工单经过实测,在修改内容后保存时,会导致程序DUMP,因此,不建议使用此BAPI进行工单下达,建议使用BAPIBAPI_ALM_ORDER_MAINTAIN 来进行工单下达

 

BAPI的使用有通用的规则,比如BAPI在生成对象时,有最小的满足条件,即至少传入某些字段的值,才能保证生成相应的对象,上述表格中添加了黄色着色的字段的为本BAPI必须要传入的信息或者重要的传出信息;另外BAPI调用后,往往会至少返回一些个消息结构或者消息内表,这里需要根据返回的消息进行相应的处理:如果BAPI调用成功,则提交BAPI;如果BAPI调用失败,则回滚BAPI。

这里传入的工单需要带有前导0,如果没有,需要使用函数CONVERSION_EXIT_ALPHA_INPUT进行前导0补充,这里不详细说明,而对于传出的消息,需要逐条循环,使用MESSAGE_TEXT_BUILD函数来生成消息文本,以下为一个工单下达的完整示例代码:

 

"BAPI相关参数定义
DATALS_MSG TYPE BAL_S_MSG,
    LT_MSG TYPE TABLE OF BAL_S_MSG.     "BAPI调用返回消息
DATALV_AUFNR TYPE AUFNR.            "待下达的工单号
DATALS_HEADER TYPE BAPI_ALM_ORDER_HEADER_E.  "BAPI返回的工单头部信息

DATALV_MESSAGE TYPE STRING,          "消息文本变量
    EV_TYPE TYPE BAPI_MTYPE,          "消息类型
    EV_MESSAGE TYPE BAPI_MSG.         "消息文本

CLEAR:EV_TYPE,EV_MESSAGE,LV_MESSAGE,LS_MSG,LV_AUFNR,LS_HEADER,LT_MSG.

*-----1 准备BAPI传入的参数
LV_AUFNR '000004001837'.

*-----2 调用BAPI创建工单
CALL FUNCTION 'IBAPI_ALM_ORDER_RELEASE'
  EXPORTING
    IV_ORDERID    LV_AUFNR
  
IMPORTING
    ES_HEADER_RESULT LS_HEADER
  
TABLES
    ET_MESSAGES    LT_MSG.

*-----3 根据BAPI执行结果,返回结果处理
LOOP AT LT_MSG INTO LS_MSG WHERE MSGTY CA 'EA'.
  CALL FUNCTION 'MESSAGE_TEXT_BUILD'
    EXPORTING
      MSGID LS_MSG-MSGID
      MSGNR 
LS_MSG-MSGNO
      MSGV1 
LS_MSG-MSGV1
      MSGV2 
LS_MSG-MSGV2
      MSGV3 
LS_MSG-MSGV3
      MSGV4 
LS_MSG-MSGV4
    
IMPORTING
      MESSAGE_TEXT_OUTPUT LV_MESSAGE.

  IF EV_MESSAGE IS INITIAL.
    EV_MESSAGE LV_MESSAGE.
  ELSE.
     CONCATENATE LV_MESSAGE '/' EV_MESSAGE INTO EV_MESSAGE."拼接输出的失败消息
  ENDIF.
ENDLOOP.

IF  SY-SUBRC 0.
  EV_TYPE 'E'.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.    "回滚BAPI
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'      "提交BAPI
  EXPORTING
    WAIT 'X'.
  EV_TYPE 'S'.    "将输出的消息类型设置为S
  CONCATENATE '工单' LV_AUFNR '下达成功!' INTO EV_MESSAGE.
*  MESSAGE EV_MESSAGE TYPE 'I'.
ENDIF.

 

 

 

  1. 本BAPI成功执行后,返回的消息内表ET_MESSAGES中,如果内表为空,则表示BAPI执行成功,则可以提交BAPI;如果消息中有A或者E类型的,则视为下达失败,先回滚BAPI,同时将消息内表中所有的E和A类型的消息拼接输出,用来告诉用户应该去纠正那些问题。
  2. 传入的工单号必须带有前导0。

本BAPI下达后的工单,有一定的BUG,当对下达的工单进行修改时,会造成程序DUMP。原因是BAPI的下达逻辑存在BUG,导致了工单的状态的不一致,从而造成修改时的DUMP。因此不建议使用此BAPI来进行工单下达,强烈建议使用BAPI:BAPI_ALM_ORDER_MAINTAIN 来进行工单下达

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值