需求:如果行项目有文本,则修改行项目

实现步骤
- 使用事务代码 SE19或SE18 为 BADI(ME_PROCESS_REQ_CUST )创建实现。
- 单击方法PROCESS_ITEM
- 使用方法 IF_LONGTEXTS_MM~GET_TEXTOBJECT 获取订单项文本对象 ID。
- 使用方法 IF_LONGTEXTS_MM~GET_TYPES 获取订单项文本 ID 详细信息
- 使用 IF_LONGTEXTS_MM~GET_TEXT 获取行项目长文本数据
- 使用方法 IF_PURCHASE_REQUISITION_ITEM~GET_DATA 获取项目级别数据
- 使用方法 IF_PURCHASE_REQUISITION_ITEM~SET_DATA 修改项目级别数据
示例代码
METHOD if_ex_me_process_req_cust~process_item.
DATA : lv_tdobject TYPE tdobject,
lv_metafield TYPE mmpur_metafield,
lt_texttypes TYPE mmpur_t_texttypes,
ls_texttypes TYPE mmpur_texttypes,
lt_textlines TYPE mmpur_t_textlines,
ls_textlines TYPE mmpur_textlines.
** Get Text Object **
CLEAR : lv_metafield, lv_tdobject.
im_item->if_longtexts_mm~get_textobject(
IMPORTING
ex_tdobject = lv_tdobject
ex_metafield = lv_metafield ).
** Get Text IDs **
REFRESH : lt_texttypes.
CLEAR : ls_texttypes.
im_item->if_longtexts_mm~get_types(
IMPORTING
ex_texttypes = lt_texttypes ).
** Reading Item Text **
LOOP AT lt_texttypes INTO ls_texttypes WHERE tdid EQ 'B01'.
im_item->if_longtexts_mm~get_text(
EXPORTING
im_tdid = ls_texttypes-tdid
im_texttype = ls_texttypes
IMPORTING
ex_textlines = lt_textlines
).
ENDLOOP.
READ TABLE lt_textlines INTO ls_textlines INDEX 1.
IF ls_textlines-tdline IS INITIAL.
RETURN.
ENDIF.
** Updating Item Data
DATA(lw_item) = im_item->get_data( ).
IF lw_item-bsart EQ 'NB' AND ( lw_item-werks EQ '2200' OR lw_item-werks EQ '1106' ).
lw_item-fixkz = 'X'.
im_item->set_data( im_data = lw_item ).
DATA(lw_itemx) = im_item->get_datax( ).
lw_itemx-fixkz = 'X'.
im_item->set_datax( im_datax = lw_itemx ).
ENDIF.
ENDMETHOD.