今天我们学习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 】 或者在这个链接联系我
微信原文《全文完》