ABAP Eclipse解决OXK3财务定制新增字段导致BSEG表Dump

S4 HANA版本开始,OXK3客户化字段新增,会导致BSEG等各种财务相关报表内容无法执行,OXK3的建立方法,可查看NOTE或者百度,

简化模式或专家模式建立后生成CI_COBL与CI_COBL_BI两个结构

同时CI_COBL会更新到财务相关的表内,并更新到关联表,注释2206980

如:V_COEP、NSDM_V_MSEG等,关联表的作用,是因为S4更新后,大部分表更新,旧表保留,新旧表需要通过关联表来同步更新数据,导致CI_COBL在更新的时候,旧表未同步该节构或字段,导致MSEG等表无法使用,直接Dump。

与ERP R/3相比,S / 4HANA中的MM-IM数据模型已更改。实际库存数据将不再存储在以前的关键指标物料主数据表中,物料凭证也将不再存储在表MKPF(表头数据)和MSEG(项目数据)中。取而代之的是,引入了单个表MATDOC,该表存储了物料凭证,并且由于每个物料凭证都是库存变动,因此可以即时计算实际库存数据

在SE16N或其它方法读取相关表时转储错误,报错如图:

开始修复之前,您需要检查所有这些先决条件(以下方法请先百度安装):

  1. 在工作站中安装了SAP GUI;

  2. 您需要在其中修复错误的环境中具有完全权限的权限;

  3. 工作站中安装了Eclipse或Hana studio;

  4. 将ADT(Abap开发工具)安装到Eclipse或Hana Studio中

步骤01 –下载和阅读SAP note 2240878 – MM-IM:将客户包括CI_COBL添加到MATDOC

阅读此SAP注释非常重要,因为每个S / 4版本都有解决问题的不同方法。在这里,我将讨论S / 4HANA 1709 SP 01。

步骤02 –运行Eclipse

步骤03 –打开或创建一个新项目

步骤04 –创建一个新的扩展视图(就像您在下面的图片中看到的一样)

 

步骤05 –选择下面的选项(核心数据服务–>数据定义)

 

步骤06 –用类似下面的内容填充字段:

 步骤07 –选择一个变更请求或创建一个新的变更请求:

 

选择下一步

步骤08 –选择“扩展视图”:

 按“完成”。

完成后,您将看到如下屏幕:

 

现在,您需要创建此代码(以下示例来自实际情况,因为某些字段与我在此处的解释完全不同):

@AbapCatalog.sqlViewAppendName: 'Z_CI_COBL'
@EndUserText.label: 'Extension view for Append CI_COBL'
extend view nsdm_e_mseg with Zci_Cobl_Dll {
    zturno
}

 

在我的场景中,在“编码块”中配置的字段仅为“ ZTURNO”。您需要使用已插入编码阻止增强功能的所有字段进行更新。

步骤10 –保存(按右下角)

步骤11 –激活(按右下角)

现在,只有在“激活”没有任何错误消息之后,您才能继续执行下一步。

 步骤12 –为了解决此问题,我们需要运行程序NSDM_PROXY_SUBSTITUTION

运行后,您需要查看所有符号都等于绿色的日志。这意味着一切正常。

这篇文章解决的问题与菜鸟家园早期发布的文章解决的问题一致,因版本不同,解决方式不同,解决思路仅供参考。

CI_COBL结构激活不一致问题

成旭平,公众号:嘟嘟熊之快乐驿站CI_COBL结构激活不一致问题

往期推荐

HR信息类型增强(非添加字段)

干货!SAP业务顾问也会的增强——标准字段文本修改的4种方法

SAP标准报表显示格式切换

SAP小技巧:快捷图标

清除ALV缓存

S4系统主题切换以及凭证概览小技巧

预制与冲销

ABAP:BTE的查找及使用

ABAP调试器的一些高级用法

GRIR重分类(上)

GRIR重分类(下)

批次管理(上)

批次管理(下)

屏幕变式设置(方式一)

因增强导致BDC录屏执行异常的梗

序列号Serial Number管理

字串拼接“空格”的使用

Select-options restrict

ERP 本地client copy

S4系统中如何锁定事务代码

动动小手,一键三连

关注公众号,加入SAP顾问讨论群!

扫描二维码

获取更多精彩

菜鸟家园

声明:本文章仅用于SAP软件的应用与学习,不代表SAP公司。(注:文中所示截图来源SAP软件,相应著作权归SAP所有。)

文章转载于 @SAP顾问笔记

<think>我们正在讨论如何扩展BSEG以添加自定义字段。在SAP系统中,BSEG是一个簇(cluster table),不能直接通过事务码SE11追加字段。正确的方法是通过SAP提供的标准扩展方式:使用CI(Component Interface)结构来添加字段。 以下是扩展BSEG的步骤: ### 步骤1:创建扩展结构 1. 使用事务码 `SE11` 创建结构: - 结构名:以 `CI_` 开头,例如 `ZCI_BSEG`(注意:SAP标准结构为 `CI_BSEG`,但自定义结构需要以Z开头) - 或者使用SAP提供的标准扩展结构 `CI_BSEG`(如果存在)的附加结构(Append Structure) 2. 在结构中添加自定义字段: - 字段名:以 `ZZ` 或 `YY` 开头(遵循自定义字段命名规范) - 数据类型:根据需求选择(如 `CHAR`,`NUMC`,`CURR` 等) ### 步骤2:将扩展结构附加到标准结构 `CI_BSEG` - 由于SAP标准结构 `CI_BSEG` 已经预留了附加结构,因此可以直接将自定义结构附加到 `CI_BSEG` 上: - 在事务码 `SE11` 中打开结构 `CI_BSEG`。 - 选择菜单:实用程序(Utilities)-> 附加结构(Append Structure)... - 输入自定义附加结构的名称(如 `ZCI_BSEG`)并保存。 ### 步骤3:激活结构 - 激活自定义结构 `ZCI_BSEG` 和修改后的 `CI_BSEG`。 ### 步骤4:在财务凭证中传递扩展字段的值 - 在增强(如BAdI `MB_DOCUMENT_BADI`)中,通过行项目的 `EXTENSION` 内传递自定义字段的值: ```abap METHOD if_ex_mb_document_badi~change_document. LOOP AT c_document-item ASSIGNING FIELD-SYMBOL(<ls_item>). " 将自定义字段的值添加到EXTENSION内 APPEND VALUE #( fieldname = &#39;ZZKOSTL&#39; " 自定义字段名(必须与CI_BSEG字段名一致) value = &#39;123456&#39; " 要写入的值 ) TO <ls_item>-extension. ENDLOOP. ENDMETHOD. ``` ### 注意事项 1. **字段命名规范**: - 自定义字段必须以 `ZZ` 或 `YY` 开头(避免与标准字段冲突)[^1]。 2. **数据一致性**: - 确保传递的值符合字段的数据类型和长度。 3. **结构更新**: - 扩展后,BSEG数据库中实际存储的字段不会立即显示,但在财务凭证过账时,系统会自动将扩展字段的值存储到簇BSEG中。 4. **查看数据**: - 通过事务码 `FB03` 查看凭证时,扩展字段不会直接显示。需要创建增强来显示在凭证行项目上,或者通过函数模块 `RFITEMIS` 或 `RFITEMAS` 来获取。 ### 常见问题 - **为什么在SE11中看不到BSEG字段?** 因为BSEG是簇,其实际结构由多个结构组合而成(包括CI_BSEG)。我们只能通过扩展CI_BSEG来间接扩展BSEG。 ### 相关问题 1. 如何在财务凭证显示界面(FB03)中显示自定义字段? 2. 如何通过ABAP读取BSEG中的自定义字段3. 在MIRO发票校验中,如何将采购订单中的自定义字段传递到财务凭证? --- 通过以上步骤,您就可以成功地在BSEG中添加自定义字段,并在凭证过账时写入数据。如果您在实施过程中遇到问题,请参考SAP官方文档或咨询SAP支持。</think>### 在ABAP中扩展BSEG添加自定义字段的步骤 在SAP中,BSEG是簇(cluster table),不能直接通过事务码SE11追加字段。必须通过以下标准方法扩展: #### ✅ 正确扩展流程(通过CI_BSEG结构) 1. **创建扩展结构** (事务码SE11) - 结构名:`ZCI_BSEG` (需Z/Y开头) - 添加自定义字段,例如: ```abap ZZFIELD1 TYPE CHAR20, " 文本字段 ZZFIELD2 TYPE CURR " 金额字段 ``` 2. **附加到标准结构** - 打开标准结构 `CI_BSEG` (事务码SE11) - 菜单路径:实用程序(Utilities) → 附加结构(Append Structure) - 选择刚创建的 `ZCI_BSEG` 3. **激活结构** - 激活 `ZCI_BSEG` 和 `CI_BSEG` - 系统自动更新底层物理BDCP[^1] 4. **在增强中使用字段** ```abap " 在BAdI MB_DOCUMENT_BADI中写入值 APPEND VALUE bape_bset( fieldname = &#39;ZZFIELD1&#39; value = &#39;自定义值&#39; ) TO <ls_item>-extension. ``` #### ⚠️ 关键注意事项 1. **字段命名规范**: - 必须以 `ZZ` 或 `YY` 开头(避免与标准字段冲突)[^1] - 禁止使用标准字段名(如 `KOSTL`) 2. **数据类型限制**: - 支持常规类型:`CHAR`, `NUMC`, `CURR`, `QUAN`, `DATS`, `TIMS` - 不支持深层结构(如引用类型) 3. **部署要求**: - 需传输所有相关对象(结构+增强实现) - 生产系统部署前需通过财务模块测试 #### 🔍 验证扩展是否成功 1. 使用事务码 `SE16N` 查看 `BDCP` ```sql SELECT * FROM bdcp WHERE tabname = &#39;BSEG&#39; AND fieldname = &#39;ZZFIELD1&#39; ``` 2. 在财务凭证过账后,通过函数 `RFITEMIS` 读取BSEG数据验证 #### ❌ 错误做法 - 直接修改标准结构 `CI_BSEG` - 使用隐式增强修改结构 - 通过UPDATE语句直接写BSEG(违反财务模块规则) --- ### 常见问题解答 **Q:为什么在SE11看不到BSEG字段?** A:BSEG是簇,物理存储为BDCP/BDCK等,必须通过CI_BSEG扩展[^1]。 **Q:自定义字段如何显示在FB03凭证界面?** A:需额外开发屏幕增强,使用子屏幕追加字段(事务码SPRO路径:财务会计→总账会计→业务交易→凭证→屏幕格式)。 --- ### 相关问题 1. 如何在财务凭证显示界面(FB03)显示自定义字段? 2. 如何通过ABAP读取BSEG中的自定义字段3. 在MIRO发票校验中,如何将采购订单的自定义字段传递到财务凭证? [^1]: SAP扩展技术指南(OSS Note 207882) [^2]: ABAP数据字典簇管理规范
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值