背景
NWBC新建会计科目时,需要默认科目编码,取当前科目组最大编码+1
实现
增强位置
代码
DATA:ls_account TYPE /mdg/_s_0g_pp_account.
CONSTANTS:lc_default_account_table TYPE ktopl VALUE 'SY00'.
CHECK iv_raised_by_own_ui EQ 'X'.
DATA(ls_fpm_runtime) = me->core_object->mo_fpm_toolbox->mo_fpm->get_runtime_info( ).
CHECK ls_fpm_runtime-application EQ 'MDGF_OVP_GEN' AND
ls_fpm_runtime-config_id EQ 'MDGF_0G_OVP_FI_ACCOUNT' AND
me->core_object->ms_instance_key-component EQ 'FPM_FORM_UIBB_GL2' AND
me->core_object->ms_instance_key-config_id EQ 'MDGF_0G_FI_ACCOUNT' AND
me->core_object->mv_fpm_edit_mode EQ 'E'.
IF me->core_object->mo_entity IS BOUND.
me->core_object->mo_entity->get_properties(
IMPORTING
es_attributes = ls_account
).
IF ls_account-coa IS INITIAL.
me->core_object->mo_entity->set_property(
EXPORTING
iv_attr_name = 'COA'
iv_value = lc_default_account_table
).
ENDIF.
IF ls_account-account IS INITIAL AND
ls_account-coa IS NOT INITIAL AND
ls_account-accgrpacc IS NOT INITIAL."科目组
"获取科目组对应的编码范围
SELECT SINGLE FROM t077s
FIELDS vonnr AS acc_low,
bisnr AS acc_high
WHERE ktopl EQ @ls_account-coa
AND ktoks EQ @ls_account-accgrpacc
INTO @DATA(ls_acc_range).
cl_usmd_adapter_provider=>get_model_generation_adapter(
EXPORTING
i_usmd_model = '0G'
IMPORTING
eo_model_gen_adapter = DATA(lo_model_gen_adapter)
et_message = DATA(lt_message)
).
lo_model_gen_adapter->get_generated_objects(
IMPORTING
et_message = lt_message
et_log_phys_name = DATA(lt_phys_name)
).
READ TABLE lt_phys_name INTO DATA(ls_phsy_table)
WITH KEY kind = 'TABL' entity = 'ACCOUNT' sub_kind = 'C'.
IF sy-subrc ne 0.
return.
ENDIF.
DATA:lv_acc_max TYPE usmdz1_account.
SELECT MAX( /1md/0gaccount )
FROM (ls_phsy_table-phys_name)
INTO @lv_acc_max
WHERE /1md/0gaccount GE @ls_acc_range-acc_low
AND /1md/0gaccount LE @ls_acc_range-acc_high.
"最大值+1为当前编码
IF lv_acc_max IS NOT INITIAL .
DATA(lv_acc_new) = lv_acc_max + 1.
me->core_object->mo_entity->set_property(
EXPORTING
iv_attr_name = 'ACCOUNT'
iv_value = lv_acc_new
).
ENDIF.
ENDIF.
ENDIF.