SAP Coding Block
是一个好用的功能可以将字段安装到FAGLFLEXT表中(这个其实不是一个表,是一个CDS视图,所以新增的字段还需要安装ADT环境写一个扩展的CDS视图写进来)
路径:【1809】SPRO=>财务会计=>财务会计全局设置=>分类账=>字段=>客户字段=>编辑编码块,
此步骤会将激活包入请求中,持续时间半个小时到一个小时,耐心等待别让系统掉线。同时,系统会自动生成9999屏幕,用于凭证输入时输入自定义字段的内容这一步执行时间较长,为防止中途超时掉线,需要有人值守,如果需要BASIS调整下前端回话超时限制
上图的定位字段是控制字段的显示顺序用的,后续生成成功的屏幕字段顺序做个对比,也可以点击预览做字段的显示顺序调整
8.如果需要将上述添加的字段作为科目余额汇总的一个维度,则需要将字段对应添加到科目余额汇总表FAGLFLEXT,如果不需要则可以跳过本步骤
9.OBY6 / OBC4 / FS00(总账科目)/ OB41(修改记账码40、50的增强字段)
11.此时MSEG表是DUMP状态,DUMP信息显示缺少几个字段需要增强到MSEG中,SE16N查看表MSEG如下显示有代理对象,这种表没有办法直接放增强字段进去,需要在Eclipse中安装ABAP
开发工具 ADT做一个CDS的扩展视图
看表能否直接增强字段也可以从SE11这里查看到,MARA物料主数据表替代对象为空则可以直接增强。
以上字段增强就算完成了,前台可以展示存储了,对于ABAP来说还需要做一个创建会计凭证时的增强,这部分很简单,BADI名称BADI_ACC_DOCUMENT
新BADI : BADI_ACC_DOCUMENT
直接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扩展字段的使用网上例子很多,这里就不赘述代码了。