关于 SAPCoding Block

作者:郑德鼎 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Basis, CO, Data Engineering, FI, SD, WM, 仓库管理, 开发, 数据工程, 系统管理, 财务, 销售分销
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

SAP Coding Block

是一个好用的功能可以将字段安装到FAGLFLEXT表中(这个其实不是一个表,是一个CDS视图,所以新增的字段还需要安装ADT环境写一个扩展的CDS视图写进来)

1.路径如下,OXK3 事务码

路径:【1809】SPRO=>财务会计=>财务会计全局设置=>分类账=>字段=>客户字段=>编辑编码块,

此步骤会将激活包入请求中,持续时间半个小时到一个小时,耐心等待别让系统掉线。同时,系统会自动生成9999屏幕,用于凭证输入时输入自定义字段的内容这一步执行时间较长,为防止中途超时掉线,需要有人值守,如果需要BASIS调整下前端回话超时限制

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

2.检查ACDOCA / BSEG / FAGLFLEXT(视图)

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

3.激活日志

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

4.OXK3前后效果

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

5.BSEG / ACDOCA 表前后对比

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

6.OXK3 ->环境->准备快速输入

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

7.OXK3 ->环境->子屏幕

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

上图的定位字段是控制字段的显示顺序用的,后续生成成功的屏幕字段顺序做个对比,也可以点击预览做字段的显示顺序调整

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

8.如果需要将上述添加的字段作为科目余额汇总的一个维度,则需要将字段对应添加到科目余额汇总表FAGLFLEXT,如果不需要则可以跳过本步骤

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

9.OBY6 / OBC4 / FS00(总账科目)/ OB41(修改记账码40、50的增强字段)

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

10.OB41(修改记账码40、50的增强字段)

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

11.此时MSEG表是DUMP状态,DUMP信息显示缺少几个字段需要增强到MSEG中,SE16N查看表MSEG如下显示有代理对象,这种表没有办法直接放增强字段进去,需要在Eclipse中安装ABAP

开发工具 ADT做一个CDS的扩展视图

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

看表能否直接增强字段也可以从SE11这里查看到,MARA物料主数据表替代对象为空则可以直接增强。

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

以上字段增强就算完成了,前台可以展示存储了,对于ABAP来说还需要做一个创建会计凭证时的增强,这部分很简单,BADI名称BADI_ACC_DOCUMENT

新BADI : BADI_ACC_DOCUMENT

关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图
关于 SAPCoding Block - 封面图

直接COPY不需要修改:

METHOD IF_EX_ACC_DOCUMENT~CHANGE.DATA: WA_EXTENSION TYPE BAPIPAREX, EXT_VALUE(960) TYPE C, WA_ACCIT TYPE ACCIT, L_REF TYPE REF TO DATA.

FIELD-SYMBOLS: <L_STRUC> TYPE ANY, <L_FIELD> TYPE ANY.

SORT C_EXTENSION2 BY STRUCTURE.

LOOP AT C_EXTENSION2 INTO WA_EXTENSION.AT NEW STRUCTURE.CREATE DATA L_REF TYPE (WA_EXTENSION-STRUCTURE). ASSIGN L_REF->* TO <L_STRUC>. ENDAT. CONCATENATE WA_EXTENSION-VALUEPART1 WA_EXTENSION-VALUEPART2 WA_EXTENSION-VALUEPART3 WA_EXTENSION-VALUEPART4INTO EXT_VALUE.MOVE EXT_VALUE TO <L_STRUC>. ASSIGN COMPONENT 'POSNR' OF STRUCTURE <L_STRUC> TO <L_FIELD>.READ TABLE C_ACCIT WITH KEY POSNR = <L_FIELD>INTO WA_ACCIT.IF SY-SUBRC IS INITIAL.MOVE-CORRESPONDING <L_STRUC> TO WA_ACCIT.MODIFY C_ACCIT FROM WA_ACCIT INDEX SY-TABIX. ENDIF. ENDLOOP. ENDMETHOD.

BAPI BAPI_ACC_DOCUMENT_POST扩展字段的使用网上例子很多,这里就不赘述代码了。

郑德鼎

关于作者:郑德鼎

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「关于SAPCodingBlock.md」整理生成,仅用于内部技术分享与学习交流。