点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)亲爱的专家。 实施...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)亲爱的专家。 实施...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
亲爱的专家。
实施BAdI UJJ_CALCULATE_AMOUNT时出现问题。 当我保存日记帐且某些字段为空白时,会发生错误。
此后,我跟踪BAdI的检查条件。 我发现在此行的 CL_UJJ_JRN_MGR 方法 CHECK_CALCULATED_AMOUNTS 中出现了错误:
凭直觉,我试图确保BAdI的输出没有空白。 所以我将每个维度的值都更改为'#'。 更改所有内容后,便可以保存日记。 但是,日记帐发布时会出现新的问题。
现在,我不知道为什么会这样。
这是我的BAdI代码:
方法IF_UJJ_CALCULATED_AMOUNT〜CALCULATE_AMOUNTS。 常数: dim_acct类型uj_dim_name值'ZGRPACCNO', dim_flow类型uj_dim_name值'ZFLOW', 关闭流类型uj_dim_name值'F_999', 递增流类型uj_dim_name值'F_410', 减少流类型uj_dim_name值'F_420', net_income_cy_acct类型uj_dim_name值'0035000004', re_up_acct类型uj_dim_name值'0035000003'。 数据: ls_journal_amounts类型ujj_s_badi_ca_journal_amounts, ls_journal_amounts2类型ujj_s_badi_ca_journal_amounts, l_dim_member类型uj_dim_member, l_is_leaf_of_1类型abap_bool, l_tabkey类型的tabkey, l_is_leaf_of_2键入abap_bool, l_is_leaf_of_f_tot类型abap_bool, l_acct_property类型uj_value, ls_amount_details类型ujj_s_badi_ca_amount, ls_amount类型ujj_s_badi_ca_amount, ls_amount2类型ujj_s_badi_ca_amount, lo_exception类型引用到cx_root, lo_static_check类型参考cx_static_check, l_acct_value类型uj_value, l_flow_value类型uj_value, l_flow_is_available类型abap_bool, l_acct_is_available类型abap_bool, member_temp类型ujj_s_keymem。 字段符号:键入ujj_s_keymem, 类型ujj_s_keymem, 类型ujj_s_keymem, 类型uj_value, 类型ujj_s_badi_ca_amount, 键入ujj_s_badi_ca_journal。 *永远循环调试 *数据flag_debug类型abap_bool值abap_true。 * WHILE flag_debug = abap_true。 *结束。 尝试。 *遍历所有日记 循环到分配 的it_journals。 清除ls_journal_amounts。 ls_journal_amounts-journal_id = -jrn_id。 *循环日记的每一行 循环 -分配 的数量。 *获取总帐帐户 l_tabkey = dim_acct。 读取表 -成员,使用键tabkey = l_tabkey分配 。 如果sy-subrc EQ 0。 l_acct_value = -成员。 万一。 *获得流量 l_tabkey = dim_flow。 读取表 -成员,使用键tabkey = l_tabkey分配 。 如果sy-subrc EQ 0。 l_flow_value = -成员。 万一。 ls_amount = 。 清除ls_amount-members。 在 中循环-分配 的成员。 如果 -is_hdr_fld等于abap_false。 将对应的 移动到member_temp。 IF member_temp-member =''。 member_temp-member ='#'。 万一。 将member_temp附加到ls_amount-members。 万一。 结束循环。 *获取总帐科目的字段符号 l_tabkey = dim_acct。 读取表ls_amount-members,分配键为tabkey = l_tabkey的 。 如果sy-subrc EQ 0。 l_acct_is_available = abap_true。 万一。 *获取流程的字段符号 l_tabkey = dim_flow。 读取表ls_amount-members,使用键tabkey = l_tabkey分配 。 如果sy-subrc EQ 0。 l_flow_is_available = abap_true。 万一。 *检查会员流和帐户是否同时存在 如果l_flow_is_available EQ abap_true和l_acct_is_available EQ abap_true。 *如果组帐户是资产负债表 如果l_acct_value> ='0010000000'并且l_acct_value <='0039999999'。 *创建期末余额 如果l_flow_value <> close_flow。 -member =闭合流。 将ls_amount附加到ls_journal_amounts-amounts。 万一。 *如果组帐户是盈亏 elseif l_acct_value> ='0040000000'和l_acct_value <='0089999999'。 *将"损益"数据复制到流量为F_300的损益本年度 -member ='F_300'。 -成员= net_income_cy_acct。 将ls_amount附加到ls_journal_amounts-amounts。 *将"利润和亏损"数据复制到流量关闭的当年利润和亏损 -member =闭合流。 -成员= net_income_cy_acct。 将ls_amount附加到ls_journal_amounts-amounts。 elseif l_acct_value> ='0090000000'和l_acct_value <='0099999999'。 如果l_acct_value ='0091100001'。 -member ='F_308'。 -member ='0034000001'。 将ls_amount附加到ls_journal_amounts-amounts。 -member =闭合流。 将ls_amount附加到ls_journal_amounts-amounts。 elseif l_acct_value ='0091100002'。 -member ='F_309'。 -member ='0034000002'。 将ls_amount附加到ls_journal_amounts-amounts。 -member =闭合流。 将ls_amount附加到ls_journal_amounts-amounts。 elseif l_acct_value ='0091100003'。 -member ='F_315'。 -member ='0034000006'。 将ls_amount附加到ls_journal_amounts-amounts。 -member =闭合流。 将ls_amount附加到ls_journal_amounts-amounts。 elseif l_acct_value ='0091100004'。 -member ='F_314'。 -member ='0034000005'。 将ls_amount附加到ls_journal_amounts-amounts。 -member =闭合流。 将ls_amount附加到ls_journal_amounts-amounts。 elseif l_acct_value ='0091199998'。 -member ='F_310'。 -member ='0034000004'。 将ls_amount附加到ls_journal_amounts-amounts。 -member =闭合流。 将ls_amount附加到ls_journal_amounts-amounts。 elseif l_acct_value ='0091105001'。 -member ='F_318'。 -member ='0034100001'。 将ls_amount附加到ls_journal_amounts-amounts。 -member =闭合流。 将ls_amount附加到ls_journal_amounts-amounts。 elseif l_acct_value ='0091105002'。 -member ='F_317'。 -member ='0034100002'。 将ls_amount附加到ls_journal_amounts-amounts。 -member =闭合流。 将ls_amount附加到ls_journal_amounts-amounts。 elseif l_acct_value ='0091200001'。 -member ='F_316'。 -member ='0034000007'。 将ls_amount附加到ls_journal_amounts-amounts。 -member =闭合流。 将ls_amount附加到ls_journal_amounts-amounts。 万一。 万一。 万一。 结束循环。 如果lines(ls_journal_amounts-amounts)> 0。 将ls_journal_amounts附加到et_calculated_amounts。 万一。 结束循环。 将cx_root捕获到lo_exception中。 引发异常类型cx_ujj_exception 出口 前一个= lo_exception textid = cx_ujj_exception => ex_badi_exception。 努力。 方法。
注意:
这是我的系统规范:
SAP NETWEAVER 7.5
亲切的问候,
钱德拉.M.P
(98.2 kB)
问有关badi的问题,也不提供badi代码? 奇怪的方法!
一周热门 更多>