点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的SAP专家
在创建每月余额时,我们有很多会计凭证,这些会计凭证必须在此时手动过账。 提到的会计凭证包括总账帐户和个人帐户(供应商/客户)。 目前无法使用excel副本快速复制每个文件并通过excel进行快速记录,因为它只允许总账科目。
只有一种方法可以将个人帐户单独记录在效率极低(耗时)的"其他订单项"块中。
我的目的是写一点报告,以记录excel文件中的总帐和个人帐户。 excel文件包含以下9列:
- 下一个订单项(RF05A-NEWBS)的发布键
- 下一个订单项(RF05A-NEWKO)的帐户或匹配代码
- 借记卡中的凭证货币金额(BSEG-WRBTR)
- 信用证中的凭证货币金额(BSEG-WRBTR)
- 销售/购买代码(BSEG-MWSKZ)
- 交易类型(COBL-RMVCT)
- 成本中心(COBL-KOSTL)
- 项目文本(BSEG-SGTXT)
- 自动计算税款(BKPF-XMWST)
接下来的9个字段将从excel文件的每一行的选择屏幕中读取:
- 公司代码(BKPF- BUKRS)
- 文档类型(BKPF-BLART)
- 文档中的文档日期(BKPF- BLDAT)
- 文档中的过帐日期(BKPF-BUDAT)
- 会计期间(BKPF-MONAT)
- 会计凭证编号(BKPF- BELNR)
- 参考文档编号(BKPF- XBLNR)
- 文档标题文本(BKPF- BKTXT)
- 货币密钥(BKPF-WAERS)
波纹管报告是来自互联网的示例的修改版本(请参见此处)使用BAPI" BAPI_ACC_DOCUMENT_POST"。
SPAN { 字体家族:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 { 字体样式:斜体; 颜色:#808080; } .L0S32 { 颜色:#3399FF; } .L0S33 { 颜色:#4DA619; } .L0S52 { 颜色:#0000FF; } .L0S55 { 颜色:#800080; } .L0S70 { 颜色:#808080; } REPORT zreport_test。 表格: bkpf。 常数: lc_waers TYPE waers VALUE'EUR', lc_bus_act TYPE glvor值" RFBU", lc_acctype_glaccount像tbsl-koart VALUE'S', lc_acctype_creditor类似于tbsl-koart值'K', lc_acctype_debitor喜欢tbsl-koart值'D'。 类型: 开始于gty_gl_account, bs TYPE newbs, konto TYPE newko, betrag_soll TYPE wrbtr, betrag_haben TYPE wrbtr, stkz TYPE mwskz, bwa TYPE rmvct, kst TYPE kostl, 文字TYPE sgtxt, xmwst TYPE xmwst, 结束于gty_gl_account。 数据: lv_rc TYPE i, lt_file_table TYPE文件表, lt_raw TYPE truxs_t_text_data, ls_file_table与lt_file_table类似, lt_gl_account gty_gl_account的类型标准表, ls_gl_account与lt_gl_account类似。 带有框架标题text-001的块参数的选择屏幕开始。 参数: p_bukrs喜欢bkpf-bukrs, p_blart喜欢bkpf-blart, p_waers喜欢bkpf-waers默认lc_waers, p_bldat喜欢bkpf-bldat, p_budat喜欢bkpf-budat, p_monat像bkpf-monat, p_xblnr像bkpf-xblnr, p_bktxt喜欢bkpf-bktxt。 选择屏幕结束参数。 带有标题标题text-002的blockparam1的选择屏幕开始。 参数p_fname类型rlgrap文件名。 SELECTION-SCREEN END OF BLOCK参数1。 在p_fname值请求的选择屏幕上。 呼叫方法cl_gui_frontend_services => file_open_dialog 出口 window_title ='请选择Excel文件' file_filter ='* .XLS)| * .XLSX' 改变 file_table = lt_file_table rc = lv_rc 例外情况 file_open_dialog_failed = 1 cntl_error = 2 error_no_gui = 3 not_supported_by_gui = 4 其他= 5。 如果sy-subrc EQ 0。 读取表lt_file_table INTO ls_file_table INDEX 1。 将ls_file_table-filename写入p_fname。 其他。 消息ID sy-msgid类型sy-msgty编号sy-msgno 与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 万一。 选择开始。 通话功能" TEXT_CONVERT_XLS_TO_SAP" 出口 i_line_header = abap_true i_tab_raw_data = lt_raw i_filename = p_fname 桌子 i_tab_converted_data = lt_gl_account 例外情况 conversion_failed = 1 其他= 2。 如果sy-subrc <> 0。 消息ID sy-msgid类型sy-msgty编号sy-msgno 与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 其他。 使用lt_gl_account执行PERFORM帐户记录。 万一。 使用VALUE(ls_gl_account)之类的lt_gl_account来记录表单帐户。 数据: l_obj_type TYPE bapiache09-obj_type, l_obj_key TYPE bapiache09-obj_key, l_obj_sys类型bapiache09-obj_sys, ls_docheader TYPE bapiache09, lt_gl_accountpositions bapiacgl09的类型表, ls_gl_accountpositions TYPE bapiacgl09, lt_debitorpositions bapiacar09的类型表, ls_debitorpositions TYPE bapiacar09, lt_creditorpositions bapiacap09的类型表, ls_creditorpositions TYPE bapiacap09, lt_amaountinfos bapiaccr09的类型表, ls_amaountinfos TYPE bapiaccr09, lt_bapi_messages bapiret2的类型表, ls_posnr TYPE posnr_acc, lt_tax_data rtax1u15的类型表, ls_tax_data TYPE rtax1u15, ls_tmp_account与ls_gl_account类似, lv_kunnr TYPE newko, wrbtr TYPE wrbtr, docnum TYPE belnr_d, lv_posting_key TYPE tbsl。 * ------------------------------------------------- ---------------------- *初始化 * ------------------------------------------------- ---------------------- 清除:lt_gl_accountpositions [], lt_debitorpositions [], lt_amaountinfos [], lt_bapi_messages [], ls_docheader。 * ------------------------------------------------- ---------------------- *单据头填写一次 * ------------------------------------------------- ---------------------- ls_docheader-doc_date = p_bldat。 ls_docheader-doc_type = p_blart。 ls_docheader-comp_code = p_bukrs。 ls_docheader-pstng_date = p_budat。 ls_docheader-fis_period = p_monat。 ls_docheader-ref_doc_no = p_xblnr。 ls_docheader-header_txt = p_bktxt。 ls_docheader-bus_act = lc_bus_act。 ls_docheader-用户名= sy-uname。 * ------------------------------------------------- ---------------------- *计算税收数据 * ------------------------------------------------- ---------------------- 环回ls_gl_account INTO ls_tmp_account。 如果ls_tmp_account-betrag_soll不是INITIAL。 wrbtr = ls_tmp_account-betrag_soll。 其他。 wrbtr = ls_tmp_account-betrag_haben。 万一。 通话功能" CALCULATE_TAX_FROM_GROSSAMOUNT" 出口 i_bukrs = p_bukrs i_mwskz = ls_tmp_account-stkz i_waers = p_waers i_wrbtr = wrbtr 桌子 t_mwdat = lt_tax_data 例外情况 其他= 16 IF sy-subrc NE 0。 消息ID sy-msgid类型sy-msgty编号sy-msgno 与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 其他。 读取表lt_tax_data INTO ls_tax_data INDEX 1。 万一。 * ------------------------------------------------- ---------------------- *找出发布密钥 * ------------------------------------------------- ---------------------- 通话功能'FI_POSTING_KEY_DATA' 出口 i_bschl = ls_tmp_account-bs 输入 e_tbsl = lv_posting_key。 案例lv_posting_key-koart。 * ------------------------------------------------- ---------------------- * 1.创建订单项是借方 * ------------------------------------------------- ---------------------- lc_acctype_debitor时。 将10加到ls_posnr。 清除:ls_debitorpositions,ls_amaountinfos。 ls_debitorpositions-itemno_acc = ls_posnr。 ls_debitorpositions-customer = lv_kunnr。 ls_debitorpositions-item_text = ls_tmp_account-text。 ls_amaountinfos-itemno_acc = ls_posnr。 ls_amaountinfos-currency = p_waers。 ls_amaountinfos-amt_doccur = wrbtr。 ls_amaountinfos-amt_base = wrbtr。 附录:ls_debitorpositions至lt_debitorpositions, ls_amaountinfos至lt_amaountinfos。 * ------------------------------------------------- ---------------------- * 2.为gl帐户创建订单项 * ------------------------------------------------- ---------------------- lc_acctype_glaccount时。 将10加到ls_posnr。 清除:ls_gl_accountpositions,ls_amaountinfos。 ls_gl_accountpositions-itemno_acc = ls_posnr。 ls_gl_accountpositions-gl_account = ls_tmp_account-konto。 ls_gl_accountpositions-costcenter = ls_tmp_account-kst。 ls_gl_accountpositions-item_text = ls_tmp_account-text。 ls_gl_accountpositions-tax_code = ls_tmp_account-stkz。 ls_amaountinfos-itemno_acc = ls_posnr。 ls_amaountinfos-currency = p_waers。 ls_amaountinfos-amt_doccur = ls_tax_data-kawrt *-1。 ls_amaountinfos-amt_base = ls_tax_data-kawrt * -1。 附录:ls_gl_accountpositions至lt_gl_accountpositions, ls_amaountinfos至lt_amaountinfos。 * ------------------------------------------------- ---------------------- * 2.为债权人创建行项目 * ------------------------------------------------- ---------------------- 当lc_acctype_creditor时。 将10加到ls_posnr。 清除:ls_creditorpositions,ls_amaountinfos。 ls_creditorpositions-itemno_acc = ls_posnr。 ls_creditorpositions-vendor_no ='0231000187'。 ls_creditorpositions-item_text = ls_tmp_account-text。 ls_amaountinfos-itemno_acc = ls_posnr。 ls_amaountinfos-currency = p_waers。 ls_amaountinfos-amt_doccur = wrbtr。 ls_amaountinfos-amt_base = wrbtr。 附录:ls_creditorpositions至lt_creditorpositions, ls_amaountinfos至lt_amaountinfos。 结束。 结局。 * ------------------------------------------------- ---------------------- * BAPI调用 * ------------------------------------------------- ---------------------- 通话功能'BAPI_ACC_DOCUMENT_POST' 出口 documentheader = ls_docheader 输入 obj_type = l_obj_type obj_key = l_obj_key obj_sys = l_obj_sys 桌子 accountgl = lt_gl_accountpositions 应收帐款= lt_debitorpositions 应付款= lt_creditorpositions currencyamount = lt_amaountinfos return = lt_bapi_messages。 * ------------------------------------------------- ---------------------- * BAPI消息输出和提交 * ------------------------------------------------- ---------------------- 描述表lt_bapi_messages线数据(lv_linenr)。 如果lv_linenr> 1。 回滚工作。 通话功能'C14ALD_BAPIRET2_SHOW' 桌子 i_bapiret2_tab = lt_bapi_messages。 其他。 提交工作。 万一。 ENDFORM。
但是我收到以下错误消息:
我检查了SKA1和SKB1表,并且帐户存在于帐户Z000的图表中。
我该如何解决问题?
(46.4 kB)
你好Emal,
我们将LSMW与SAP标准程序RFBIBL00结合使用,而不是编写ABAP程序,它可以在所有情况下运行;
你好,塔米,
谢谢您的贡献。 目前,我无法正确回答您的问题。 因为我必须阅读旧版系统迁移工作台和批处理输入(程序RFBIBL00)。
但是,如果有人对上述报告的问题有任何解决方案,请随时给出答案。
亲切的问候,
正常
一周热门 更多>