按月分布转换报告

Transform report with distribution by months

我从 RFKSLD00 程序生成了以下 ALV 报告:

我需要根据上面的报告生成一份报告(作为我工作的一部分):

有什么办法吗?我不是在寻求解决方案,而是关于如何实现这一目标的一些步骤。

原始报告的每一行都是你报告的一行,你只需要调整当地货币的总和,即将所有值乘以当地货币汇率。黄色总计线不会让您感到困惑,它们是由网格生成的,而不是由报表生成的。

原始报告中唯一缺少的是余额结转的借方和贷方,我想在原始报告中你已经核对了价值。要为其获取单独的值,您需要检查代码。

第一步是声明最终结构并table基于它:

 TYPES: BEGIN OF ty_report,
          rec_acc TYPE skont,
          vendor TYPE lifnr,
          ...
          jan_deb TYPE wrbtr,
          jan_cred TYPE wrbtr,
          febr_deb TYPE wrbtr,
          febr_cred TYPE wrbtr,
          ...
          acc_bal_deb TYPE wrbtr,
          acc_bal_cred TYPE wrbtr,
        END OF ty_report,
        tt_report TYPE TABLE OF ty_report.
 DATA:  lt_report TYPE tt_report.

那么您只需要在内部循环原始报告 table 并填充您的最终结构,不要缺少货币转换:

select single * from tcurr
        into @DATA(tcurr)
        where fcurr = 'EUR'
        and   tcurr = 'AUD'. "<- your  local currency

DATA(lv_ukurs) = tcurr-ukurs.

LOOP AT orig_table INTO DATA(orig_line).

 APPEND INITIAL LINE INTO lt_report ASSIGNING FIELD-SYMBOL(<fs_rep>).
 MOVE-CORRESPONDING orig_line TO <fs_rep>.

 CASE orig_line-monat. "<- your period
  WHEN '01'.
   <fs_rep>-jan_deb = orig_line-debit.
   <fs_rep>-jan_cred = orig_line-credit.
  WHEN '02'.
   <fs_rep>-febr_deb = orig_line-debit.
   <fs_rep>-febr_cred = orig_line-credit.
  ...
 ENDCASE.

 DO 30 TIMES.
  ASSIGN COMPONENT sy-index OF STRUCTURE <fs_rep> TO FIELD-SYMBOL(<field>).
   CHECK sy-subrc = 0.
  DESCRIBE FIELD <field> TYPE DATA(TYP).
   CHECK TYP = 'P'.
  CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
   EXPORTING
   DATE                    = sy-datum
   FOREIGN_CURRENCY        = 'EUR'
   LOCAL_CURRENCY          = 'AUD'
   FOREIGN_AMOUNT          = <field>
   TYPE_OF_RATE            = 'M'
  IMPORTING
   EXCHANGE_RATE           = lv_ukurs
   LOCAL_AMOUNT            = <field>.
 ENDDO.

ENDLOOP.

我建议将最终结构的所有组件ty_report命名为尽可能与原始结构相同。因此,您可以最大限度地利用 MOVE-CORRESPONDING 并避免手动编码。

这只是快速拍摄,我可能会遗漏一些细节和错误。