自定义报表调用FAGL_ACCOUNT_ITEMS_GL时无法传递自由选择条件
以下是针对你的代码的几个关键排查点:
表名正确性验证
你设置的表名是ACDOCA_FS,但需要确认FAGLL03的自由选择界面中,字段RMVCT实际归属的表。打开FAGLL03,进入自由选择对话框,找到RMVCT字段,查看其所属表(通常是ACDOCA或BKPF),将代码中的trange_line-tablename修改为实际表名。ACDOCA_FS可能是视图而非FAGLL03自由选择关联的基础表,导致条件无法识别。检查
FREE_SELECTIONS_RANGE_2_EX的输出结果
在调用该函数后,设置断点查看lt_texpr的内容。如果该内表为空或结构异常,说明范围转换失败。可以显式设置trange_line-kind = 'T'(表示表类型的自由选择),确保结构初始化正确。SUBMIT语句的VIA SELECTION-SCREEN参数影响
该参数会弹出FAGLL03的选择屏幕,此时自由选择条件可能已传递但未在界面上默认展开显示。可以先去掉VIA SELECTION-SCREEN,直接执行报表,查看结果是否符合RMVCT = 'Z20'的条件,以此判断条件是否实际传递成功。确认
RMVCT字段在FAGLL03自由选择中的可用性
部分字段可能未被配置为FAGLL03自由选择的可用字段。在FAGLL03的选择屏幕中,点击“自由选择”按钮,搜索RMVCT,如果找不到该字段,需要通过配置(如SE11维护表字段的显示属性,或通过报表的选择屏幕增强添加该字段到自由选择)使其可用。检查
lt_rspar内表的冲突条件
如果lt_rspar中包含了RMVCT字段的选择条件,可能会覆盖自由选择传递的条件。确保lt_rspar中没有与自由选择冲突的设置,或者清空lt_rspar后单独测试自由选择的传递。SUBMIT中自由选择的语法正确性
尝试将WITH FREE SELECTIONS lt_texpr修改为WITH FREE SELECTIONS = lt_texpr,确保语法符合ABAP规范。虽然两种写法在多数版本中都支持,但部分版本可能需要等号来明确赋值。x_opsel和x_aisel参数的影响x_opsel EQ abap_false会关闭“操作选择”复选框,x_aisel EQ abap_true开启“科目选择”,这两个参数理论上不影响自由选择,但可以尝试临时注释这两行,测试是否是参数组合导致的条件丢失。
内容的提问来源于stack exchange,提问作者Manoj

