SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇

这篇具有很好参考价值的文章主要介绍了SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过CSV文件创建物料主数据的一些建议

  1. 在Staging Area中创建/修改小批量的物料主数据,推荐使用标准文件上载功能(USMD_FILE_UPLOAD)。

  2. 使用Data Import Framework (DIF),配合转换器也可以实现在Staging Area中上传物料:

    • 所有治理范围内的实体都将基于给定的主键而创建(工厂,分销链等)。
    • 这可能导致出现大量的Maintenance Status数据。
    • 这可能导致一些意料之外的必输字段检查,比如由于扩展出销售视图,导致重量单位必填。
  3. 如果你想直接在Active Area中创建完整的物料主数据,你也可以选择其他方式,比如开发自定义批导程序,使用LSMW,使用Migration Cockpit,使用MDG-合并模块等。

下面的章节将详细解释如何基于DIF根据CSV文件批量创建物料主数据。
记住,想要使用DIF在Staging Area中修改物料主数据是不可能的;DIF只允许直接在Active Area中修改物料主数据。

在DIF中使用CSV文件

DIF必须经过一些配置才可以使用CSV文件进行物料主数据导入。下面的步骤展现了如何定义一个新的自定义转换器,并创建对应的BAdI实施。

文件转换器类型

  • 定义文件转换器
    自定义的文件转换器将在文件导入之后立即执行(可以用于从XML文件匹配字段)
  • 文件转换器的BAdI
    实施文件转换器

SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇

BAdI

SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
创建新的BAdI实施
SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
增强点:MDG_FILECONVERTER
BAdI定义:BADI_MDG_FILECONVERTER

SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
为你的转换器设置过滤器
SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
备注:如果你想直接使用Excel文件取代CSV文件用于数据导入,你同样需要自己编写转换器代码。相关代码可参考自SRM包 /SAPSRM/EXCEL,你可以从这个包中复制标准代码,用于在Webdynpro上处理Excel文件。

备注:如果你想支持物料编码的内部给号,可以调用BAPI_STDMATERIAL_GETINTNUMBER来获取新的物料编号,以便在该BAdI中使用。

BAdI 示例代码

METHOD if_ex_mdg_fileconverter~get_data.
* 将文件加载到String字符串
* 按行按列分割字符串得到各字段值
* 转换到IDoc结构
* 包含了MARAMAKT(默认使用当前登录语言),MARC的内容
  DATA: lo_conv       TYPE REF TO cl_abap_conv_in_ce.
  DATA: lv_file       TYPE string.
  DATA: lt_table_line TYPE STANDARD TABLE OF string.
  DATA: lt_fields     TYPE STANDARD TABLE OF string.
  DATA: lt_content    TYPE mdg_idoc_data_t.
  DATA: ls_edidd      TYPE edidd.
  DATA: ls_maram      TYPE e1maram.
  DATA: ls_maktm      TYPE e1maktm.
  DATA: ls_marcm      TYPE e1marcm.
  DATA: lv_docnum     TYPE edi_docnum.
  DATA: lt_matnr TYPE TABLE OF bapimatinr.
  FIELD-SYMBOLS: <ls_table_line> TYPE string.
  FIELD-SYMBOLS: <ls_content>    TYPE mdg_idoc_data.

  CLEAR: et_content, es_message. " But not EV_CONTENT!
* 获取文件内容
* 使用UTF-8解码
  lo_conv = cl_abap_conv_in_ce=>create( encoding = 'UTF-8'
                                        input = iv_file_content_frontend ).
  TRY.
      CALL METHOD lo_conv->read( IMPORTING data = lv_file ).
    CATCH cx_sy_conversion_codepage
          cx_sy_codepage_converter_init
          cx_parameter_invalid_type
          cx_parameter_invalid_range.
      RETURN.
  ENDTRY.
* 从文件流中获取行
  SPLIT lv_file AT gc_delimeter_line INTO TABLE lt_table_line.
* 忽略第一行的抬头信息
  DELETE lt_table_line INDEX 1.
* 得到字段值
  LOOP AT lt_table_line ASSIGNING <ls_table_line>.

    CLEAR: lt_matnr.

    SPLIT <ls_table_line> AT gc_delimeter_field INTO TABLE lt_fields.
    CHECK NOT lt_fields IS INITIAL.
    lv_docnum = lv_docnum + 1.
    APPEND INITIAL LINE TO lt_content ASSIGNING <ls_content>.
    " 将字段信息映射到IDoc结构
    CLEAR: ls_maram, ls_maktm.
    CALL METHOD fill_no_data_sign( EXPORTING iv_segment_name = gc_segment_mara CHANGING cs_segment = ls_maram ).
    CALL METHOD fill_no_data_sign( EXPORTING iv_segment_name = gc_segment_makt CHANGING cs_segment = ls_maktm ).
    CALL METHOD fill_no_data_sign( EXPORTING iv_segment_name = gc_segment_marc CHANGING cs_segment = ls_marcm ).

    READ TABLE lt_fields INDEX 2 INTO ls_maram-matnr.
    READ TABLE lt_fields INDEX 2 INTO ls_maram-matnr_long.
    READ TABLE lt_fields INDEX 3 INTO ls_maram-mtart.
    " 如果未输入物料号,则获取内部编号
    IF ls_maram-matnr IS INITIAL.
      CALL FUNCTION 'BAPI_STDMATERIAL_GETINTNUMBER'
        EXPORTING
          material_type   = ls_maram-mtart
        TABLES
          material_number = lt_matnr.
      ls_maram-matnr = lt_matnr[ 1 ]-material.
      ls_maram-matnr_long = lt_matnr[ 1 ]-material.
    ENDIF.
    READ TABLE lt_fields INDEX 4 INTO ls_maram-mbrsh.
    READ TABLE lt_fields INDEX 5 INTO ls_maram-meins.
    READ TABLE lt_fields INDEX 6 INTO ls_maram-matkl.
    READ TABLE lt_fields INDEX 7 INTO ls_maram-gewei.
    READ TABLE lt_fields INDEX 8 INTO ls_maktm-maktx.
    READ TABLE lt_fields INDEX 9 INTO ls_marcm-werks.
    READ TABLE lt_fields INDEX 10 INTO ls_marcm-ekgrp.
    READ TABLE lt_fields INDEX 11 INTO ls_marcm-mtvfp.
    READ TABLE lt_fields INDEX 12 INTO ls_marcm-dismm.
    READ TABLE lt_fields INDEX 13 INTO ls_marcm-dispo.
    ls_maktm-spras = sy-langu.
    " 填充 ET_CONTENT
    ls_edidd-docnum = lv_docnum.
    ls_edidd-segnam = gc_segment_mara.
    ls_edidd-sdata  = ls_maram.
    ls_edidd-dtint2 = strlen( ls_maram ).
    APPEND ls_edidd TO <ls_content>-idoc_data.
    ls_edidd-docnum = lv_docnum.
    ls_edidd-segnam = gc_segment_makt.
    ls_edidd-sdata  = ls_maktm.
    ls_edidd-dtint2 = strlen( ls_maktm ).
    APPEND ls_edidd TO <ls_content>-idoc_data.
    ls_edidd-docnum = lv_docnum.
    ls_edidd-segnam = gc_segment_marc.
    ls_edidd-sdata  = ls_marcm.
    ls_edidd-dtint2 = strlen( ls_marcm ).
    APPEND ls_edidd TO <ls_content>-idoc_data.
    <ls_content>-idoc_control-docnum = lv_docnum.
    <ls_content>-idoc_control-idoctp = gc_matmas.
    <ls_content>-idoc_control-sndprn = gv_parnum. "MDG-M MATMAS loader 需要合作伙伴信息
    <ls_content>-idoc_control-sndprt = gc_partyp. "MDG-M MATMAS loader 需要合作伙伴信息
  ENDLOOP.
  CLEAR: ev_content.
  et_content = lt_content.
ENDMETHOD.

测试

你可以使用如下的CSV文件用于测试:
该文件中并没有输入物料号,因为FERT物料类型使用内部给号。
SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
导入结果日志:
SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇
物料主数据:
SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇

SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇

SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇

DIF全篇总结

DIF系列文章到此告一段落,本系列从最初的什么是DIF,是否该使用DIF,到DIF的应用、配置和开发都有一些详细的介绍和演示。DIF工具对于标准数据对象,例如物料、客户、供应商、及其他对象(SAP提供了26种标准数据对象)的批量导入有着得天独厚的优势。在导入方式上,大部分标准对象都使用了标准的IDoc或Webservice接口进行数据导入,针对MDG管控范围内的对象,还可选择导入MDG Staging Area生成变更申请。此外,在多并发处理、导入排程管理、导入结果日志监控等方面也都有标准功能支撑。顾问在使用时只需关注导入模板设计,及导入模板字段映射标准IDoc/Webervice结构的相关开发。这些都是使用DIF工具的优点。

缺点方面,一是该工具有一些上手难度,国内缺乏实践和相关资料。二是DIF较为小众,相较于更广为人知的LSMW,MM16,甚至是Migration Cockpit或自开发程序,国内几乎无人知道DIF的存在。此外,针对大批量的数据导入,由于底层还是使用的IDoc或Webservice接口,在效率上比传统BAPI会更慢一些。文章来源地址https://www.toymoban.com/news/detail-421466.html

到了这里,关于SAP MDG —— 使用DIF导入物料主数据 Part4 开发篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SAP变式物料之采购<转载>,通过可配置物料实现同一个物料不同型号下采购订单的时候出现不同的价格

    原文链接:https://blog.csdn.net/weixin_42137700/article/details/125104140 SAP一般物料采购,一个物料只有一个价格,在采购定价的时候也是同一个物料对应一个价格,但是有些场景中,比如,一个电脑不同的型号,不同的内存价格是不一样的,这个时候就需要SAP的变式物料了,在下PO的时

    2024年01月20日
    浏览(36)
  • C# GDAL 数字图像处理Part4 获得鼠标位置的地理坐标

            其实在程序设计中,很大部分的工作量都在搞懂Winform的各种控件及其接口,网上的讲解质量也良莠不齐,所以如何使用控件也是一个很苦恼的问题(舍友深受困扰:怎么没有系统性讲Winform的资料)。我也在考虑要不要写一下文章讲讲comboBox、listView、tabControl、pictureBo

    2024年02月10日
    浏览(28)
  • 【果树农药喷洒机器人】Part4:果树冠层图像实例分割模型优化

    📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉 📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处 为准确获取柑橘树

    2024年02月13日
    浏览(29)
  • [Machine learning][Part4] 多维矩阵下的梯度下降线性预测模型的实现

    目录 模型初始化信息: 模型实现: 多变量损失函数: 多变量梯度下降实现: 多变量梯度实现: 多变量梯度下降实现: 之前部分实现的梯度下降线性预测模型中的training example只有一个特征属性:房屋面积,这显然是不符合实际情况的,这里增加特征属性的数量再实现一次

    2024年02月06日
    浏览(32)
  • SAP MM 定义物料类型的属性配置里的New entries按钮

    SAP MM 定义物料类型的属性配置里的 New entries 按钮     在 SAP 的很多后台配置界面上都有 New Entries( 新条目 ) 按钮,方便企业用户可以根据企业特有业务需求来增加新的配置条目。   事实上,并不是所有的配置界面里,都能很随意很方便的允许企业用户点击’ New Entries ’按钮

    2024年04月28日
    浏览(28)
  • [足式机器人]Part4 机械设计 Ch00/01 绪论+机器结构组成与连接 ——【课程笔记】

    本文仅供学习使用 本文参考: 《机械设计》 王德伦 马雅丽 课件与日常作业可登录网址 http://edu.bell-lab.com/manage/#/login ,选择观摩登录,查看 2023机械设计2 。 机械设计 Machines Design ,在传统课程中,更倾向于 机械零件设计 Machine Elements Design :预期 装置 (运动/结构)与 性能

    2024年02月13日
    浏览(37)
  • [足式机器人]Part4 南科大高等机器人控制课 CH11 Bascis of Optimization

    本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ Optimization is argulably the most important tool for modern engineering Robotics: Differential Inverse Kinematics Dynamics : ABA (most efficient

    2024年02月04日
    浏览(51)
  • [足式机器人]Part4 南科大高等机器人控制课 CH12 Robotic Motion Control

    本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 机器人—— 运动能力 、计算能力、感知决策能力 的机电系统 Steady-state error : e s s = lim ⁡ t → ∞ θ e ( t ) e_{m

    2024年02月03日
    浏览(32)
  • [足式机器人]Part4 南科大高等机器人控制课 CH10 Bascis of Stability Analysis

    本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang This lecture introduces basic concepts and results on Lyapunov stability of nonlinear systems system asymptotic/ˌæsimp\\\'tɔtik,-kəl/ 渐进的 behavior (not too much about transient/\\\'trænzɪənt/短暂的 ) ability to return to the des

    2024年02月04日
    浏览(31)
  • [足式机器人]Part4 南科大高等机器人控制课 Ch09 Dynamics of Open Chains

    本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang Recall Newton-Euler Equation for a single rigid body: F = d d t H = I A + V ~ ∗ I V mathcal{F} =frac{mathrm{d}}{mathrm{d}t}mathcal{H} =mathcal{I} mathcal{A} +tilde{mathcal{V}}^*mathcal{I} mathcal{V} F = d t d ​ H = I A + V

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包