昨天愚人节,明天即将开始新冠疫情下的清明节~
隔离加每天喉咙一插,爽飞。
不知不觉之中,已经写了8个BAPI函数系列了。
写ABAP代码的时候分分钟,要转换成BLOG技术博客的形式,还真是难。
BAPI函数BAPI_GOODSMVT_CANCEL,
SAP前台事务代码TCODE为MBST。作用是冲销物料凭证。
导入参数为:
参数名称 | 关联类型 | 可选的 | 说明 |
MATERIALDOCUMENT | BAPI2017_GM_HEAD_02-MAT_DOC | 必选 | 物料文件编号 |
MATDOCUMENTYEAR | BAPI2017_GM_HEAD_02-DOC_YEAR | 必选 | 物料文件年份 |
GOODSMVT_PSTNG_DATE | BAPI2017_GM_HEAD_02-PSTNG_DATE | 可选 | 过账日期 |
GOODSMVT_PR_UNAME | BAPI2017_GM_HEAD_01-PR_UNAME | 可选 | 打印出入库单的用户名 |
DOCUMENTHEADER_TEXT | BAPI2017_GM_HEAD_02-HEADER_TXT | 可选 | 文件抬头 |
到处参数:
参数名称 | 关联类型 | 说明 |
GOODSMVT_HEADRET | BAPI2017_GM_HEAD_RET | 物料编号或年份 |
字段名 | 类型 | 简短描述 |
MAT_DOC | MBLNR | 物料凭证编号 |
DOC_YEAR | MJAHR | 物料凭证的年 |
在实际的SAP实施项目或者SAP运维项目重,S4HANA系统的新语法和ECC系统或者R3系统有点不一样。
一些差异,对于初级SAP ABAP顾问来说,是不容易的。
作者曾经也是SAP ABAP beginners ,到处去找Tutorial for Constant。需要自学很久,没人给咱免费培训。
写个测试代码DEMO举例子。希望您喜欢~
*声明bapi相关参数
DATA:gv_materialdocument TYPE bapi2017_gm_head_02-mat_doc, “物料文件编号
gv_matdocumentyear TYPE bapi2017_gm_head_02-doc_year, “物料文件年份
gv_goodsmvt_pstng_date TYPE bapi2017_gm_head_02-pstng_date, “过账日期
gv_goodsmvt_pr_uname TYPE bapi2017_gm_head_01-pr_uname, “打印出入库单的用户名
gv_documentheader_text TYPE bapi2017_gm_head_02-header_txt, “文件抬头
gs_goodsmvt_headret TYPE bapi2017_gm_head_ret, “物料编号或年份
gt_return TYPE TABLE OF bapiret2, “返回参数信息
gt_goodsmvt_matdocitem TYPE TABLE OF bapi2017_gm_item_04. “冲销项目
*选择屏幕
PARAMETERS:p_doc TYPE bapi2017_gm_head_02-mat_doc,
p_year TYPE bapi2017_gm_head_02-doc_year,
p_date TYPE bapi2017_gm_head_02-pstng_date.
*抓取处理数据
*赋值
gv_materialdocument = p_doc. “物料凭证
gv_matdocumentyear = P_YEAR. “年份
gv_goodsmvt_pstng_date = P_DATE. “过账日期
gv_goodsmvt_pr_uname = SY-UNAME. “用户名
*调用bapi
PERFORM frm_usebapi.
*——————————————————————————–*
* Form frm_usebapi *
*———————————————————————————*
* 调用bapi
* 表:返回信息,冲销数据
* 导入:物料编号,年份,过账日期,用户名,文件抬头
* 导出:物料编号
*———————————————————————————*
FORM frm_usebapi.
DATA:lv_materialdocument TYPE bapi2017_gm_head_02-mat_doc, “物料文件编号
lv_matdocumentyear TYPE bapi2017_gm_head_02-doc_year, “物料文件年份
lv_goodsmvt_pstng_date TYPE bapi2017_gm_head_02-pstng_date, “过账日期
lv_goodsmvt_pr_uname TYPE bapi2017_gm_head_01-pr_uname, “打印出入库单的用户名
lv_documentheader_text TYPE bapi2017_gm_head_02-header_txt, “文件抬头
ls_goodsmvt_headret TYPE bapi2017_gm_head_ret, “物料编号或年份
lt_return TYPE TABLE OF bapiret2, “返回参数信息
ls_return TYPE bapiret2,
ls_goodsmvt_matdocitem TYPE bapi2017_gm_item_04,
lt_goodsmvt_matdocitem TYPE TABLE OF bapi2017_gm_item_04. “冲销项目
CLEAR lv_materialdocument.
CLEAR lv_matdocumentyear.
CLEAR lv_goodsmvt_pstng_date.
CLEAR lv_goodsmvt_pr_uname.
CLEAR lv_documentheader_text.
CLEAR ls_goodsmvt_headret.
CLEAR lt_return.
CLEAR lt_goodsmvt_matdocitem.
CLEAR ls_return.
CLEAR ls_goodsmvt_matdocitem.
*将全局变量值赋给局部变量
lv_materialdocument = gv_materialdocument.
lv_matdocumentyear = gv_matdocumentyear.
lv_goodsmvt_pstng_date = gv_goodsmvt_pstng_date.
lv_goodsmvt_pr_uname = gv_goodsmvt_pr_uname.
lv_documentheader_text = gv_documentheader_text.
ls_goodsmvt_headret = gs_goodsmvt_headret.
lt_return = gt_return.
lt_goodsmvt_matdocitem = gt_goodsmvt_matdocitem.
CALL FUNCTION ‘BAPI_GOODSMVT_CANCEL’
EXPORTING
materialdocument = lv_materialdocument
matdocumentyear = lv_matdocumentyear
goodsmvt_pstng_date = lv_goodsmvt_pstng_date
goodsmvt_pr_uname = lv_goodsmvt_pr_uname
“documentheader_text = lv_documentheader_text
IMPORTING
goodsmvt_headret = ls_goodsmvt_headret
TABLES
return = lt_return
goodsmvt_matdocitem = lt_goodsmvt_matdocitem.
IF lt_return IS NOT INITIAL.
LOOP AT lt_return INTO ls_return.
IF ls_return-type <> ‘S’.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
MESSAGE LS_RETURN-MESSAGE TYPE ‘S’ DISPLAY LIKE ‘E’.
ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
MESSAGE LS_RETURN-MESSAGE TYPE ‘S’.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
本文链接 :http://www.hot583.com/2022/04/02/bapi_goodsmvt_cancel/
本文为作者原创,如果这篇文章对您有用,欢迎转载,
转载请务必注明来源《今日热点在看》http://www.hot583.com/
我的微信公众号【 hot583 】 或者在这个链接联系我
微信原文《全文完》