1. 问题
- 使用BAPI POSTING_INTERFACE_CLEARING 进行清账的时候,由于标准程序使用BDC清账,而且不同科目ZFBDT字段状态不一致会导致清账失败
- 字段隐藏时,不能赋值BDC字段ZFBDT,否则抛出异常
文章图片
- FM:FI_FIELD_SELECTION_DETERMINE 可读取对应会计科目字段的状态
文章图片
DATA: ls_return TYPE bapireturn, l_faus1 TYPE tbsl-faus1, l_faus2 TYPE tbsl-faus2."G/L Account exists? CALL FUNCTION 'BAPI_GL_ACC_EXISTENCECHECK' EXPORTING companycode =
-bukrs glacct= -hkont IMPORTING return= ls_return.IF ls_return-type NE 'E'. "Determine G/L Account Field status CALL FUNCTION 'FI_FIELD_SELECTION_DETERMINE' EXPORTING i_bschl= -bschl i_bukrs= -bukrs i_saknr= -hkont IMPORTING e_faus1= l_faus1 e_faus2= l_faus2 EXCEPTIONS customizing = 1 OTHERS= 2.CASE l_faus1+4(1). WHEN '+'. "ZFBDT is Request entry WHEN '-'. "ZFBDT is Suppress entry WHEN '.'. "ZFBDT is Option entry ENDCASE.ENDIF.
- 【ABAP开发|ABAP 代码中读取会计科目的字段状态(隐藏、可选、必输)】FI_FIELD_SELECTION_DETERMINE函数 返回 E_FAUS1 参数存放字段状态;每一个字符代表一个字段状态
- “+” 代表必输 Request entry
- “-” 代表隐藏 Suppress entry
- “.” 代表可选 Option entry
文章图片
- 字段状态维护通过OBC4->表T004F OB41->表TBSL;共同作用
文章图片
- 由于 FI_FIELD_SELECTION_DETERMINE 函数读取出来的是状态标识;可在表 TMODU TMODP 中查到对应关系
- 会计科目字段排序:FAUNA = “SKB1-FAUS1” "KOART = “S”
- 查到的TMODU-MODIF的值表示当前字段(TMODU-FELDN)在 E_FAUS1的位置引用;例如:
- E_FAUS1+0(1) =“.” 表示字段ZUONR的字段状态为可选
- E_FAUS1+4(1) =“-” 表示字段ZFBDT的字段状态为隐藏
文章图片
文章图片
文章图片