在sap可以通过“字段状态变式”和“定义过帐码-字段状态”来控制财务凭证的是否显示,是否强制输入,可选输入。
设置步骤和相关TCODE:
Step1:OB41 - Maintain Accounting Configuration: Posting Keys
IMG-〉财务会计->财务会计的全局设置->凭证->控制->定义过账码->
Step2:OBC4 - Maintain Field Status Group. The group can be assigned to account. The group can be assigned to account. Field Status Group Allows you to hide or add fields to financial transactions, depending on the Posting Key and Field Status Group, assigned to the account.
IMG-〉财务会计->财务会计的全局设置->凭证->控制->维护字段状态变式
Step3:OBC5-Assign Company Code to Field Status Variants
IMG-〉财务会计->财务会计的全局设置->凭证->控制->向字段状态变式分配公司代码
Step4:FS00-Maintain Account(设置科目的“创建/银行/利息”-“字段状态组”)
会计->财务会计->总分类账->主记录->单个处理
相关数据表:
SKB1/SKA1: 总帐科目主记录
T004F:字段状态定义组
TBSL:记帐码 (TBSL-FAUS1)
相关函数:
FI_FIELD_SELECTION_DETERMINE
直接从表T004F或者通过上面的函数获取字段状态信息如下图:
上图中的信息和字段状态特征码(‘.’、‘ ’、‘-’),分别对应下图中的selection field status: 点号代表Option entry,即可选输入; 加好代表Request entry,即必输字段; 减号代表Suppress entry, 即隐藏字段。
那接下来的问题就是,前面的Transactions对应的表T004F字段Filed selection的第几位标记符号。 这里提供一种办法就是前台去更改OBC4下面的一个某个字段状态组的对应的transaction的Field selection状态。 对应观察表T004F中字段中标记符号的变化,比如上图中的Value date就是对应Field selection字段的第6位。 那么我们如果要在代码逻辑中去判断某个科目下某个字段是否必输就可以对一个去这个标记是什么就可以了。