当前位置: 首页 > news >正文

SAP中BAPI_MATERIAL_SAVEDATA分析和使用

本文目录

BAPI_MATERIAL_SAVEDATA结构

1. 导入参数(EXPORTING)

2. 导出参数(IMPORTING)

3. 表参数(TABLES)

BAPI_MATERIAL_SAVEDATA使用

BAPI_MATERIAL_SAVEDATA修改物料类型不能成功原因分析

BAPI使用注意项


        业务背景:前面有提到批量修改物料类型的前台操作,现在需要实现后台代码中修改物料类型,查找到sap系统中有相关标准的BAPI--BAPI_MATERIAL_SAVEDATA,现分析是否可以使用。

 BAPI的详细定义和自创建BAPI见:https://blog.csdn.net/qq_55841727/article/details/143712907?fromshare=blogdetail&sharetype=blogdetail&sharerId=143712907&sharerefer=PC&sharesource=qq_55841727&sharefrom=from_link

BAPI_MATERIAL_SAVEDATA结构

        BAPI_MATERIAL_SAVEDATA 是 SAP 系统中用于创建和修改物料主数据的标准 BAPI(业务应用程序接口),需要该BAPI中哪些可以使用和修改,就需要了解它的结构,传入传出的字段。进入SE37,输入该BAPI点击显示。

BAPI_MATERIAL_SAVEDATA 的参数分为导入参数(EXPORTING)、导出参数(IMPORTING)和表参数(TABLES),点击每行参数后边的显示还会有解释说明,会指出具体的字段使用。例如HEADDATA的显示

以下是主要参数的说明:

1. 导入参数(EXPORTING)
  • HEADDATA:包含物料的基本控制信息,如物料号、物料类型、行业领域等。创建物料时,必须至少选择一个视图(如基本视图、工厂视图等)。
  • CLIENTDATA:客户端层次的物料数据,对应后台表 MARA。
  • PLANTDATA:工厂级别的物料数据,对应后台表 MARC。
  • SALESDATA:销售视图数据,对应后台表 MVKE。
  • VALUATIONDATA:财务视图数据,对应后台表 MBEW。
  • FORECASTPARAMETERS:预测视图数据,对应后台表 MPOP。
  • STORAGELOCATIONDATA:库存地点视图数据,对应后台表 MARD。
2. 导出参数(IMPORTING)
  • RETURN:返回操作结果和错误信息,用于判断调用是否成功。
3. 表参数(TABLES)
  • MATERIALDESCRIPTION:物料的语言相关描述,对应表 MAKT。
  • TAXCLASSIFICATIONS:物料的税分类,对应表 MLAN。
  • EXTENSIONIN 和 EXTENSIONINX:用于传递自定义字段的数据和操作标记。

BAPI_MATERIAL_SAVEDATA使用

        SAP系统中的BAPI参数结构设计遵循一种特定的模式:相关字段通常会被组织在同一个结构中,同时会配备一个名称相似但以"X"结尾的配套结构。这个配套结构中的字段名称与数据结构完全对应,但每个字段都是单字符类型,充当开关作用,明确指示BAPI是否需要处理相应字段的变更,精确控制哪些数据需要更新。

根据以上规则,先定义:
 

DATA:ls_headdata             LIKE  bapimathead,ls_clientdata           LIKE  bapi_mara,ls_clientdatax          LIKE  bapi_marax,ls_plantdata            LIKE  bapi_marc,ls_plantdatax           LIKE  bapi_marcx,ls_salesdata            LIKE  bapi_mvke,ls_salesdatax           LIKE  bapi_mvkex,ls_valuationdata        LIKE  bapi_mbew,ls_valuationdatax       LIKE  bapi_mbewx,ls_storagelocationdata  LIKE  bapi_mard,ls_storagelocationdatax LIKE  bapi_mardx,ls_extensionin          LIKE  bapiparex,ls_bapi_te_mara         LIKE  bapi_te_mara,pt_extensionin          TYPE  bapiparextab,lt_bapi_te_mara         LIKE TABLE OF bapi_te_mara,lt_extensionin          LIKE  TABLE OF bapiparex,ls_extensioninx         LIKE  bapiparexx,lt_extensioninx         LIKE  TABLE OF bapiparexx,l_container             TYPE me_max_container,ls_bapi_te_marax        LIKE bapi_te_marax,lt_unitsofmeasure       LIKE TABLE OF bapi_marm WITH HEADER LINE,lt_unitsofmeasurex      LIKE TABLE OF bapi_marmx WITH HEADER LINE,lt_materiallongtext     LIKE TABLE OF bapi_mltx WITH HEADER LINE,lt_materialdescription  LIKE TABLE OF bapi_makt WITH HEADER LINE,lt_taxclassifications   LIKE TABLE OF bapi_mlan WITH HEADER LINE,ls_return               LIKE  bapiret2.

定义之后,填充数据(表头的和一些视图的基本数据),并且维护是否可修改的控制:

        ls_headdata-material   = lv_matnr.ls_headdata-material_long = lv_matnr.ls_headdata-basic_view = 'X' .ls_headdata-ind_sector = 'M'.ls_clientdata-unit_of_wt = 'G'.ls_clientdatax-unit_of_wt = 'X'.lt_materialdescription-langu     = '1'.lt_materialdescription-matl_desc = is_item-maktx.APPEND lt_materialdescription .ls_clientdata-base_uom   = is_item-meins.ls_clientdatax-base_uom    = 'X' .ls_clientdata-matl_group = is_item-matkl .ls_clientdatax-matl_group  = 'X' .ls_bapi_te_mara-material = is_item-matnr.ls_bapi_te_mara-ztxt     = is_item-ztxt.ls_bapi_te_mara-zpm      = is_item-zpm.ls_bapi_te_mara-zggxh    = is_item-zggxh.ls_bapi_te_mara-zpp      = is_item-zpp.ls_bapi_te_mara-zsbxp    = is_item-zsbxp.ls_bapi_te_mara-zcz      = is_item-zcz.ls_bapi_te_mara-zbz      = is_item-zbz.ls_bapi_te_mara-zmrpjx   = is_item-zmrpjx.ls_bapi_te_mara-zzBm     = is_item-zzbm.IF is_item-brgew IS NOT INITIAL.ls_bapi_te_mara-brgew  = is_item-brgew.ENDIF.ls_headdata-work_sched_view = 'X'.ls_headdata-storage_view    = 'X'.ls_plantdata-plant          = is_item-werks.ls_plantdatax-plant         = is_item-werks.

最后调用BAPI传值:
 

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'EXPORTINGheaddata            = ls_headdataclientdata          = ls_clientdataclientdatax         = ls_clientdataxplantdata           = ls_plantdataplantdatax          = ls_plantdatax
*           FORECASTPARAMETERS  =
*           FORECASTPARAMETERSX =
*           PLANNINGDATA        =
*           PLANNINGDATAX       =
*           STORAGELOCATIONDATA =
*           STORAGELOCATIONDATAX        =
*           VALUATIONDATA       =
*           VALUATIONDATAX      =
*           WAREHOUSENUMBERDATA =
*           WAREHOUSENUMBERDATAX        =
*           SALESDATA           =
*           SALESDATAX          =
*           STORAGETYPEDATA     =
*           STORAGETYPEDATAX    =
*           FLAG_ONLINE         = ' '
*           FLAG_CAD_CALL       = ' '
*           NO_DEQUEUE          = ' '
*           NO_ROLLBACK_WORK    = ' '
*           CLIENTDATACWM       =
*           CLIENTDATACWMX      =
*           VALUATIONDATACWM    =
*           VALUATIONDATACWMX   =
*           MATPLSTADATA        =
*           MATPLSTADATAX       =
*           MARC_APS_EXTDATA    =
*           MARC_APS_EXTDATAX   =IMPORTINGreturn              = ls_returnTABLESmaterialdescription = lt_materialdescription
*           UNITSOFMEASURE      =
*           UNITSOFMEASUREX     =
*           INTERNATIONALARTNOS =
*           MATERIALLONGTEXT    =
*           TAXCLASSIFICATIONS  =
*           RETURNMESSAGES      =
*           PRTDATA             =
*           PRTDATAX            =extensionin         = lt_extensioninextensioninx        = lt_extensioninx
*           UNITSOFMEASURECWM   =
*           UNITSOFMEASURECWMX  =
*           SEGMRPGENERALDATA   =
*           SEGMRPGENERALDATAX  =
*           SEGMRPQUANTITYDATA  =
*           SEGMRPQUANTITYDATAX =
*           SEGVALUATIONTYPE    =
*           SEGVALUATIONTYPEX   =
*           SEGSALESSTATUS      =
*           SEGSALESSTATUSX     =
*           SEGWEIGHTVOLUME     =
*           SEGWEIGHTVOLUMEX    =
*           DEMAND_PENALTYDATA  =
*           DEMAND_PENALTYDATAX =
*           NFMCHARGEWEIGHTS    =
*           NFMCHARGEWEIGHTSX   =
*           NFMSTRUCTURALWEIGHTS        =
*           NFMSTRUCTURALWEIGHTSX       =.IF ls_return-type = 'S'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ret-code = 'S'.ret-msg = '物料:创建成功'.IF sy-subrc = 0 .COMMIT WORK AND WAIT.ENDIF.ELSE.ret-code = ls_return-type.ret-msg  = '物料创建:' && ls_return-message && is_item-matnr.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ENDIF.

BAPI_MATERIAL_SAVEDATA修改物料类型不能成功原因分析

        上一段中强调了参数和对应的结构,物料类型字段MATL_TYPE存在BAPIMATHEAD带有控制信息的表头段结构中,但是系统中不存在BAPIMATHEAD的配套结构,尽管后续在程序中使用了控制语句 ls_headdata-matl_type = 'X'依旧不能起作用。
        后续的方法是在程序中使用BDC的方法完成了对物料类型的修改程序。BDC方法参考见此前的博文:https://blog.csdn.net/qq_55841727/article/details/143705153?fromshare=blogdetail&sharetype=blogdetail&sharerId=143705153&sharerefer=PC&sharesource=qq_55841727&sharefrom=from_link

BAPI使用注意项

  • 涉及更新操作的BAPI(如创建、修改或删除)与读取操作之间必须以上一次COMMIT WORK为界。
  • 事务提交与回滚必须通过调用SAP标准业务对象BapiService的相应方法完成,外部程序在验证BAPI执行成功(检查RETURN参数中无E类消息)后,调用BAPI_TRANSACTION_COMMIT提交事务;若存在错误消息,则必须使用BAPI_TRANSACTION_ROLLBACK撤销操作。
http://www.dtcms.com/a/403602.html

相关文章:

  • 云手机能否稳定的运行传奇游戏
  • 做网站应该先从什么地方开始西宁seo快速排名
  • Tomcat 相关漏洞扫描器(二)
  • PyTorch张量切片的陷阱:视图与副本
  • 旅游酒店网站建设零基础可以学平面设计吗
  • 哪里学网站开发店铺设计图片
  • 小淇云库-Docker 新手入门:容器创建、镜像打包与数据卷管理基础
  • Docker 部署 Ollama 详细教程以及镜像高速下载地址
  • Rust数组与向量
  • 【LeetCode 每日一题】1886. 判断矩阵经轮转后是否一致
  • linux下进程coredump分析
  • 【数据结构学习篇】--栈和stack
  • 钻研视频——破细节
  • 网站建设哪家某网站项目策划书
  • 网站建设制作设计公司佛山内蒙网站建设赫伟创意星空科技
  • 上海网站seo策划设计工具
  • 声明式事务6
  • 南京建设网站公司做车品的网站
  • Next.js动态路由介绍([projectId]/page.tsx:动态路由参数、参数占位符、动态参数、动态数据)无需预创建目录、共享页面逻辑
  • Java核心之泛型
  • 直播进入“智”时代!智享 AI 驱动个性化内容,升级高效互动场景
  • 河南襄县做网站的公司查企业官网
  • Linux:fork()函数详解:原理、用法及经典面试题解析
  • tensorflow卷积层1——卷积和池化
  • tensorflow加载和预处理数据
  • DAY 03 CSS的认识
  • 黑群晖做php网站pc网站手机网站
  • Jakarta EE 实验 — Web 聊天室(过滤器、监听器版)
  • 做js题目的网站知乎抖音代运营公司合法吗
  • MyBatis的最佳搭档(MyBatis-Plus)