SAP ABAP常用BAPI函数50个之9-[BAPI_GOODSMVT_CANCEL]MBST

昨天愚人节,明天即将开始新冠疫情下的清明节~

隔离加每天喉咙一插,爽飞。

不知不觉之中,已经写了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 】 或者在这个链接联系我

微信原文《全文完》