快速记录总账和个人账户及报告。

2020-09-16 06:00发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的SAP专家 ...

         点击此处--->   EasySAP.com群内免费提供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)