SAP ABAP BAPI函数50连载24-BAPI_RESERVATION_CREATE1创建预留,事务代码MB21

今天我们学习SAP ABAP BAPI函数50连载24-BAPI_RESERVATION_CREATE1创建预留,对应SAP前台TCODE事务代码为MB21。

输入抬头工厂等信息,返回预留单号码。

详细参数如下:

 

导入:

参数名称 关联类型 可选的 说明
RESERVATIONHEADER BAPI2093_RES_HEAD 必选 抬头信息
TESTRUN BAPI2093_TEST 可选 切换到模拟模式以写入BAPI
ATPCHECK BAPI2093_ATPCHECK 可选 标识, ATP 检查是否应该执行
CALCHECK BAPI2093_CALCHECK 可选 标识,工厂日历是否应该检查
RESERVATION_EXTERNAL BAPI2093_RES_KEY-RESERV_NO 可选 预留/相关需求的编号

 

RESERVATIONHEADER常用字段:

字段名 类型 简短描述
MOVE_PLANT UMWRK 收货工厂/发货工厂
RES_DATE BSTER 预订基准日期
CREATED_BY USNAM 用户名
MOVE_TYPE BWART 移动类型(库存管理)
COSTCENTER KOSTL 成本中心

 

导出:

参数名称 关联类型 说明
RESERVATION BAPI2093_RES_KEY-RESERV_NO 预留/相关需求的编号

 

表:

参数名称 关联类型 可选的 说明
RESERVATIONITEMS BAPI2093_RES_ITEM 必选 预留项目字段,行项目
PROFITABILITYSEGMENT BAPI_PROFITABILITY_SEGMENT 必选 预留获利能力段
RETURN BAPIRET2 必选 返回信息
EXTENSIONIN BAPIPAREX 可选 增强,扩展字段

 

RESERVATIONITEMS常用字段:

字段名 类型 简短描述
MATERIAL MATNR18 物料编号(18个字符)
PLANT WERKS_D 工厂
BATCH CHARG_D 批号
ENTRY_QNT ERFMG 以录入项单位表示的数量
ENTRY_UOM ERFME 条目单位
GL_ACCOUNT SAKNR 总账科目编号
ITEM_TEXT SGTXT 项目文本
GR_RCPT WEMPF 收货方

 

如下是demo代码,

作为HOT583.com的码农,多年前也是SAP ABAP beginners ,最开始学习会有些难度,到处去找Tutorial for Constant。

如下是详细代码:

*& BAPI作用:创建预留
*& 事务代码:MB21
*&end——————————————————————————*
REPORT yMB21.

**BAPI Get Reservation
DATA: gs_header      LIKE bapi2093_res_head,
gt_items       LIKE bapi2093_res_item OCCURS 0 WITH HEADER LINE,
gs_reservation LIKE bapi2093_res_key-reserv_no.
DATA: gt_segment LIKE bapi_profitability_segment OCCURS 0 WITH HEADER LINE.

**BAPI Get Message(Return)WWW.HOT583.COM
DATA: gt_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

*选择屏幕
PARAMETERS:p_plant TYPE bapi2093_res_head-move_plant OBLIGATORY.  “工廠

************************取数逻辑根据实际情况编写,这仅作示范*******************************
*Header
MOVE sy-datum     TO gs_header-res_date.  “需求日期
MOVE ‘311’     TO gs_header-move_type. 移动类型 311
MOVE p_plant      TO gs_header-move_plant.“工廠
MOVE ‘0002’          TO gs_header-move_stloc.“目的倉
MOVE sy-uname     TO gs_header-created_by.“建立者

*Body
MOVE ”     TO gt_items-batch.     “來源批次
MOVE ‘661’     TO gt_items-material.  “料號
MOVE ‘LY00’     TO gt_items-plant.     “工廠
MOVE ‘131A’     TO gt_items-stge_loc.  “來源倉
MOVE 1      TO gt_items-entry_qnt. “數量
MOVE ”     TO gt_items-entry_uom. “單位
*MOVE ‘X’                  TO gt_items-movement.  “固定X
******************************************************************************************

PERFORM frm_usebapi.

*———————————————————————————*
*   调用bapi
*   表:预留项目字段/行项目、预留获利能力段、返回信息
*   导入:抬头信息、物料数据、工厂数据
*   导出:预留/相关需求的编号
*———————————————————————————*
FORM frm_usebapi.
**BAPI Get Reservation
DATA: ls_header      LIKE bapi2093_res_head,
lt_items       LIKE bapi2093_res_item OCCURS 0 WITH HEADER LINE,
ls_reservation LIKE bapi2093_res_key-reserv_no.
DATA: lt_segment LIKE bapi_profitability_segment OCCURS 0 WITH HEADER LINE.

**BAPI Get Message(Return)
DATA: lt_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
ls_return LIKE bapiret2.

CLEAR ls_header.
CLEAR lt_items.
CLEAR ls_reservation.
CLEAR lt_segment .
CLEAR lt_return.

ls_header = gs_header.
lt_items = gt_items.
ls_reservation = gs_reservation.
lt_segment = gt_segment.
lt_return = gt_return.

CALL FUNCTION ‘BAPI_RESERVATION_CREATE1’
EXPORTING
reservationheader    = ls_header
IMPORTING
reservation          = ls_reservation
TABLES
reservationitems     = lt_items
profitabilitysegment = lt_segment
return               = lt_return.

IF lt_return[] IS NOT INITIAL.
READ TABLE lt_return[] INTO ls_return INDEX 1.
IF sy-subrc = 0.
IF ls_return-type <> ‘S’.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
MESSAGE ls_return-message TYPE ‘E’.
ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
MESSAGE ls_return-message TYPE ‘S’.
ENDIF.
ENDIF.

ENDIF.

ENDFORM.

 

本文链接 http://www.hot583.com/2022/04/24/bapi_reservation_create1/

本文为作者原创,如果这篇文章对您有用,欢迎转载,

转载请务必注明来源《今日热点在看》http://www.hot583.com/

我的微信公众号【 hot583 】 或者在这个链接联系我

微信原文《全文完》

今日热点在看SAP HOT583