MB21预留BAPI创建及增强字段

BAPI:BAPI_RESERVATION_CREATE1

注:BAPI_RESERVATION_CREATE没有增强字段结构EXTENSIONIN

创建预留BAPI例子:
DATA: reservation_header LIKE bapi2093_res_head."预留表头。
DATA calcheck TYPE bapi2093_calcheck.
DATA: reservation_items LIKE bapi2093_res_item OCCURS 0 WITH HEADER LINE."预留表行项目
DATA: reservation LIKE bapi2093_res_key-reserv_no."输出预留编号
DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE."执行结果提示
DATA: g_repid LIKE sy-repid.
DATA profitabilitysegment LIKE bapi_profitability_segment OCCURS 0 WITH HEADER LINE.
DATA extensionin LIKE bapiparex OCCURS 0 WITH HEADER LINE.

REFRESH reservation_items.

reservation_header-res_date = sy-datum. "基准日期。
reservation_header-created_by = sy-uname. "用户名
reservation_header-move_type = 'Z01'."移动类型
reservation_header-move_plant = '1000'.
reservation_header-costcenter = '1000010101'.

calcheck-calcheck = 'X'.

reservation_items-plant = '1000'."工厂
reservation_items-material = '000000001000000001'. "物料号
*reservation_items-material_long = '000000003100000044'. "物料号
reservation_items-entry_qnt = '10'."数量
reservation_items-stge_loc = 'L001'."库存地点
*reservation_items-item_text = wa_out1-sgtxt.
reservation_items-movement = 'X'.

APPEND reservation_items.
*APPEND profitabilitysegment.

"抬头的增强字段
extensionin-structure = 'ZSRKPF_APPEND'.
extensionin-valuepart1 = '2000'.
APPEND extensionin.

"明细的增强字段
extensionin-structure = 'ZSRESB_APPEND'.
extensionin-valuepart1 = '0001'. "明细行号
extensionin-valuepart2 = 'S'. "状态
APPEND extensionin.

CALL FUNCTION 'BAPI_RESERVATION_CREATE1'
EXPORTING
reservationheader = reservation_header
calcheck = calcheck
IMPORTING
reservation = reservation
TABLES
reservationitems = reservation_items
profitabilitysegment = profitabilitysegment
return = return
extensionin = extensionin.

IF return-type <> 'E' AND return-type <> 'A'.
* IF RESERVATION IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.

注:BAPI中的profitabilitysegment不能注释,可以不塞值,但是不能加空行。否则都会报错

增强结构和功能实现

创建结构(抬头或明细)

BADI:MB_RES_BAPI_CREATE1

通过BADI创建增强实施:

在方法EXTENSIONIN_TO_RESB写入代码:

METHOD if_ex_mb_res_bapi_create1~extensionin_to_resb.
DATA: ls_extension LIKE LINE OF it_extension_in,
ls_resb TYPE resb,
ls_zresb TYPE zsresb_append.

LOOP AT it_extension_in INTO ls_extension.
"更新抬头的增强字段
IF ls_extension-structure = 'ZSRKPF_APPEND'.
MOVE ls_extension-valuepart1 TO cs_rkpf-zzgrund. "移动原因
MOVE ls_extension-valuepart2 TO cs_rkpf-zzaufnr. "订单
MOVE ls_extension-valuepart3 TO cs_rkpf-zmblnr. "领料单
ENDIF.

"更新明细的增强字段
IF ls_extension-structure = 'ZSRESB_APPEND'.
MOVE ls_extension-valuepart1 TO ls_zresb-rspos. "预留 / 相关需求的项目编号
MOVE ls_extension-valuepart2 TO ls_zresb-zzstatus. "状态

"确定修改行
READ TABLE resb INTO ls_resb INDEX ls_zresb-rspos.
IF sy-subrc EQ 0.
ls_resb-zzstatus = ls_zresb-zzstatus.

MODIFY resb FROM ls_resb INDEX ls_zresb-rspos TRANSPORTING zzstatus.
ENDIF.

ENDIF.
ENDLOOP.
ENDMETHOD.

注:抬头的增强字段可以直接用签名中的CS_RKPF结构;明细行的是表结构,所以要通过明确行项来进行修改。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值