1、第 1 页 共 12 页维护客户化字段SAP 系统是个各个模块高度集成、无缝衔接的系统,特别是财务模块与各个业务模块的集成程度,是比较高的。因此,财务核算时,会涉及的大量的辅助核算问题,像 WBS元素、采购定单、内部定单、成本中心等辅助核算对象。我们把这些辅助字段称为帐户分配字段(Account assignment field),放置这些字段的屏幕我们称之为帐户分配(Account assignment) ,控制这些字段可选输入、必输、隐藏等功能的,我们称为字段状态变式(Field status) 。但是由于某些企业核算程度和方法的不一致,SAP 自带的标准的字段,并不能满足核算的需求,存在
2、新增字段的需求。如制造费用,需要分车间进行核算,需要按费用类别进行核算,还需要分配费用明细进行核算,SAP 中科目与国内系统软件的区别之一就是科目设置的明细程度是不一样的,国内系统往往将科目设置至业务层,但是 SAP 并不是这样。现将新增字段的方法介绍如下:1、Coding Block 新字段财务会计(新)-财务会计基本设置(新) -分类帐-字段- 客户字段- 编辑编码块(OXK3 ) ;添加客户化字段如图(摘自 SAP屠夫文章:Maintain Coding Block) ;T-code:OXK1|OXK2|OXK3什么是 Coding block?为了让读者彻底理解它举一个简单的例子,假设
3、你设计了一个学生成绩管理系统,其中记录学生成绩表 XSCJ有这些字段 XhID(学号),Name(姓名),grade(年级),Class(班级),Chinesescore(语文成绩),Mathscore(数学成绩) 等,现在需要在填写学生成绩同时输入学生的年纪身高信息 (在此姑且不讨论设计范式,因为按设计范式,XSCJ 表保留 XhID就足够,Name,Grade,Class 你通常会建立另一学生资料表 XSZL,如果你看 SAP的物料主数据设置,就是物料描述都建立 MAKT表,已经是第 N范式 ).这时需要的是更改 XSCJ加入这些字段或在 XSCL表中加入一个结构,这结构包含年纪身高字段.
4、 然后在记录学生成绩时定义一个子屏幕弹出(或默认带出,SAPOXK3第 2 页 共 12 页管这叫 Account Assginment coding block screen)一个窗口让用户维护学生信息,在保存学生成绩时将这些信息也一并保存.SAP Codig block一般原理基本如下,它允许增加字段,自动将增加的字段加入各模块的相关表中,并且动态产生一些支持程序. 各模块的相关表究竟是哪些表?下面将继续详细阐述 coding block的设置.OXK3 Maintain coding block fields进入后界面如图 2.1专家模式如果读者对 ABAP很熟悉,使用此模式,你将一步步
5、建立 domain, data element,structure(CI_COBL,CI_COBL_BI),然后是将增加的 field加入表BSEG(当然还有其它模块的表和 Structure),如果读者觉得自己还不是专家,就使用默认的 Light mode(简易模式)吧,它自动完成这些操作.你按 F6键 Add自定义 Field,选择开发类(47 后是 Package),输入字段类型和长度.2coding block subscreen OXK1你想在记帐的 account assignment屏幕自动加入刚才自定义字段(本例是ZZCB1),请使用它3产生一些程序4SAP标准的科目分配字段,
6、这些字段使用 SE16:TCOBF可看到,ZZCB1 也在此中. 第 3 页 共 12 页5自定的 ZZCB1,需要指出的是如果使用的是 include structure, 这字段将假如 COBL,TCOBF,BSEG等表 6只是将此结构 Append到 COBL中,OXK1 并不可见,它将被用在一些用户自定义程序中.激活字段 ZZCB1的 Logcoding block field ZZCB1激活过程由于修改了大量标准表和结构(即要将这字段插到各模块可能设计的表中),你可能需要 Access Key.读者必须耐心等待整个激活过程,在此过程中,读者可发现所有的记帐操作都可能会错误,毕竟连 B
7、SEG表都正在更新.那个著名的记帐总程序 SAPMF05A需要重新编译( 不知读者对半解释型的 ABAP的运行速度反应如何 ?).图 3读者可看到激活 field ZZCB1更新了的 ABAP对象,包括 CO用到的一些ABAP对象,典型的比如 CO Line item表 COEP和 SPL 共用的 Send table ACCIT_GLX(结构)等,SE11 你看到有了 ZZCB1 .1.在等待激活时你唯一要做的就是耐心等待,如果过程中断意味 Cancel, 这将第 4 页 共 12 页有一定风险,你可能会发现记帐出了问题,这就意味大多数会产生财务凭证的交易失败,开 PO出了问题.你可根据 A
8、BAP错误使用 SE11直接去激活 ABAP对象.如果需要,可执行这些程序重新生成程序或排错,SE38:RGUGBR18|RGUGBR00|RGUGBR26| RSINCL00. .2. 为什么激活过程会如此长?很容易理解,SAP 是一个庞大的集成系统,但是会计凭证的产生(表 BSEG)就有个模块 Post过来的相关数据,你在 BSEG加了一个字段,这些模块的相关程序或程序中使用的结构肯定要做相应调整 . 至于激活内部的设计逻辑如何, SAP AG的设计人员应该最清楚.3.什么时候要自定义 Coding block字段?一企业希望费用能按多种用途分析,Internal Order,Cost c
9、enter, Functional area等还是不能满足其需求,Line item Text 已做它用,财务部依旧要求费用区分能 By类,By 个人,By 区域,By,总之,似乎你已经没辙,这样的情况下,你就字定义 coding block字段,上面已经知道这些字段是可用于Account assignment的(OXK1).一般的财务软件都会提供一个类似功能,就是允许用户自由定义 Account assignment字段.4. SAP允许定义最多 7个 coding block fields,这些自定义字段也可用在 SPL中,因为在 SPL Send table ACCIT_GLX(结构)你
10、能看到它(前提是你必须将ZZCB1加入你定义的 SPL 表,请看接下来的相关配置).CO相关表比如 COEP你可看到 ZZCB1,这意味自定义字段的数据也能传到 CO模块,很不幸的是,你不能将自定义字段 ZZCB1内容传到 CO-PCA模块,因为似乎没有相关配置允许你更改 Ledger 8A的表 GLPCA/GLPAP/GLPCT(比如你可将 Ledger L0的 GLT1改成你自定义的 table,而这 table你包含了 ZZCB1).关于如何使用 OXK1定义 Account assignment subscreen请看例 2 维护 coding block screen 另附两篇 SA
11、P 屠夫关于客户化字段文章:客 户 化 核 算 字 段 .doc Field status和 Coding block subscreen.doc2、安装新字段到新总账汇总表 FAGLFLEXT 中财务会计(新)-财务会计基本设置(新) -分类帐-字段- 客户字段- 包括总计表中的字段(FAGL_GINS ) ;第 5 页 共 12 页输入表 FAGLFLEXT,修改进入,将自定义字段加入,FAGL_GINS输入表:FAGLFLEXT输入“自定义字段”第 6 页 共 12 页保存并激活;该步骤耗时,完成后退出,在初始界面激活汇总表;使用 SE16,检查表 FAGLFLEXT 和 BSEG,发现
12、字段 ZZFI 已经加入了;新增补的字段需要更改其记账码和字段状态组的字段状态(可使用事务码: FBKP) ,才能正常显示和输入,系统默认的状态是为 “隐藏 ”。注意维护的语言,否则可能看不到字段名;3、为 Coding Block 新字段定义凭证输入的子屏幕为了使新增补的字段能在凭证输入时比较方便的输入,使新增的字段能出现在事务 OXK3 的屏幕中:发票/ 贷项发票快速输入、总账快速输入、科目分配和预制凭证等;财务会计(新)-财务会计基本设置(新) -分类帐-字段- 客户字段- 编辑编码块(OXK3 ) ;选择菜单“环境” , “预备快速输入 ”进入新的屏幕;执行完成后,即可在 FB50,F
13、-02 的屏幕中看到新增字段;可以通过维护自定义屏幕变式和自定义子屏幕来设置字段出现的位置,路径如下:财务会计(新)-总账会计核算(新) -业务交易-总账会计过帐-满意- 在 Enjoy 事务中包括客户字段;财务会计(新)-财务会计基本设置(新) -分类帐-字段-为编码块定义子屏幕(OXK1) ;4、为 Coding Block 新字段维护数据表内容1)第一步:使用事务 SE11 创建客户自定义的数据表 ZZFI_BB;点创建后进入表格创建界面,维护参数点击“创建”进入下一屏幕点击“创建”第 7 页 共 12 页Delivery Class 字段:C 定制表,仅由客户维护,非 SAP 输入Da
14、ta Browser/Table view Maint 字段:X 允许通过标准表格维护工具维护点击“Fields ”页签,进行添加字段 “ZZFIHUA”,系统进入下一屏幕维护技术设置;点击“Fields ”页签点击“技术设置”第 8 页 共 12 页保存后激活;然后可以使用事务 SE16 直接维护数据表 ZZFI_BB 的内容;但对于一般的最终用户来说不会被分配访问数据表的操作权限,因此需要开发人员编写一段 ABAP 程序以使最终用户能简单方便的维护数据表内容;2)第二步:定义数据元素;在上面我们选择了数据元素(ZZFIHUA) ,但是并没有进行定义。选择“透明表”第 9 页 共 12 页点
15、击“创建“,出现界面如下,选择”Data element”,5、定义 Coding Block 新字段的搜索帮助为了在数据输入时方面的选择输入其数据值(F4) ,需要为新增补的字段创建搜索帮助;使用事务 SE11 创建搜索帮助;点击“创建”第 10 页 共 12 页点击“创建”按钮,系统进入下一屏幕选择“基本索引帮助” ,进入创建搜索帮助界面;保存并激活;6、分配搜索帮助给 Coding Block 新字段创建“搜索帮助”第 11 页 共 12 页使用事务 SE11 将创建号的搜索帮助分配给新增补字段;保存并激活;7、分配数据检查表给 Coding Block 新字段使用事务 SE11 修改结
16、构 CI_COBL;点修改进入,选中所需要维护的组件 ZZFI,点 ,进入搜索帮助及检查视图;点击 按钮选择“外来码”,系统弹出对话框“外来关键词不存在,创建带值表 ZZFI_BB 的建议作为检查表格? ”,选择“是”,接受系统建议;选择“复制”复制外来码关键字检查表 ZZFI_BB;此时可以看到 ZZFI_BB 已经填入到 CheckTable 中了;保存并激活;此时可以使用 FB50,F-02 试试效果;8、把方案和客户字段分配到分类帐财务会计(新)-财务会计基本设置(新) -分类帐-分类帐-把方案和客户字段分配到分类帐将客户字段 ZZFI 添加到分类帐 OL 中,这样表 FAGLFLEXT 中,就能对字段 ZZFI 产生一条汇总记录;经过这样设置,可以查询查询针对 ZZFI 的期初、发生、期末的数据了;点击“把方案和客户字段分配到分类帐” ,系统进入下一屏幕把方案和客户字段分配到分类帐第 12 页 共 12 页选择“分类账:OL”行项目,然后点击 “客户化字段”文件夹,系统进入下一屏幕点击“保存”按钮。点击“客户化字段”