应付账款账龄分析(内含自动公式).xls
- 格式:xls
- 大小:508.00 KB
- 文档页数:36
应付账龄分析报告1. 引言应付账龄是企业财务中一个重要的指标,用于衡量企业的财务状况和供应商支付能力。
应付账龄分析报告旨在对企业的应付账款进行详细的分析和评估,以帮助企业了解现有账款的结构、风险和潜在问题,并提出相关的对策和建议。
2. 数据来源本报告所使用的数据来自企业的财务系统和供应链管理系统。
数据包括应付账款的数额、日期、供应商信息等。
3. 应付账龄结构应付账龄按照账龄的时长可以分为以下几个阶段:•当前账龄(0-30天):该阶段的应付账款属于最新的欠款,通常代表企业的经营正常。
•30-60天账龄:该阶段的应付账款已经超过一个月,但尚未超过两个月。
如果该阶段的比例过高,可能代表供应商付款延迟的问题。
•60-90天账龄:该阶段的应付账款已经超过两个月,但尚未超过三个月。
较高的比例可能代表经营压力增加或供应商付款能力下降。
•90天以上账龄:该阶段的应付账款已经超过三个月,属于较长的欠款期限。
过高的比例可能代表企业的资金链风险较高。
4. 应付账龄分析结果根据分析,得出以下几个结论:1.当前账龄占比较高:当前账龄的应付账款占比超过70%,说明企业的短期欠款能够及时得到清账,资金使用效率较高。
2.30-60天账龄较低:30-60天账龄的应付账款占比较低,说明企业的供应商付款相对及时,但仍需注意对这一阶段的账龄进行控制。
3.60-90天账龄有所上升:60-90天账龄的应付账款占比相对上升,说明企业在付款时存在一定的延迟,需要加强付款的管理和监控。
4.90天以上账龄超出预期:90天以上账龄的应付账款占比超出预期,可能存在供应商付款能力下降或企业经营风险增加的风险。
5. 对策和建议为解决当前账龄分析中发现的问题,提出以下对策和建议:1.加强供应商管理:对供应商的财务状况和供应能力进行评估,选择稳定的供应商,并与供应商建立长期合作关系,提高供应商的支付信誉度。
2.优化内部流程:加强内部流程管理,简化审批流程,提高账款处理的速度,避免延迟付款的情况发生。
账龄分析表excel模板账龄分析表excel模板的工作量,有时甚至会因耗费太多的人工、时间而不能实现,但是应用Excel,其实现起来是相当轻松的,与编制表1模式的账龄分析表的工作量没有特别明显的增加。
账龄分析表excel模板。
Excel提供了数据排序功能,可以对工作表中的数据按照某个或某些字段重新进行排列顺序。
在进行账龄分析时,为了对客户数据进行分类汇总,可以事先应用Excel的排序功能,其方法是:选中被排序的数据清单中的任一单元格,单击命令【数据】|【排序】,指定关键字后则可由系统自动将数据进行重新排列。
账龄分析表excel模板。
2. 筛选 Excel提供了数据筛选功能,可以由操作人员指定筛选条件,由系统将满足条件的数据筛选出来。
数据筛选又包括自动筛选和高级筛选两种方式。
本文应用的自动筛选方法是:单击命令【数据】|【筛选】|【自动筛选】,随后指定筛选条件进行数据的筛选工作。
数据透视表是一种对大量数据进行自动快速汇总和交叉列表的交互式表格,方法是:单击命令【数据】|【数据透视表和图表报告】,随后可以在向导的提示下,由操作员指定被汇总的数据,汇总条件,“对某字段求和、求平均”等汇总方式,随后系统会自动生成数据透视表。
当前进行分析评价应收账款的时间,这样编制的账龄分析表就是一个动态的表,每天的账龄分析表都会由Excel自动更新数据内容,达到实施监督应收账款发生情况的目的。
建立Excel数据清单,包含如下一些数据项:客户名称、发货单号、业务发生日期、应收账款借方发生额、应收账款贷方发生额、信用期限等,记录应收账款相关信息,当应收账款发生或回款时,及时将信息记录在数据清单中。
应收账款数据清单如图1所示。
日常形成的应收账款数据清单记录着应收账款的发生情况,还记录着应收账款的回款情况,而账龄分析主要是对应收账款的余额进行分析,所以,事先需要对应收账款进行核销。
核销时,一般遵循的原则是,除非特别说明,认为客户返回的货款是支付最早一笔应收账款的,当然核销的原则不同,所生成的账龄分析表是截然不同的,这没有特别严格的标准,企业可以根据自己账龄分析的目的决定。
核对应付账龄分析表1.首先核算到票的(启用业务应付的情况下)总账用【核算项目余额表】【账龄分析表】(不包括业务应付)然后导出到分别导出到Excel,通过排序等等之类的操作进行核对,发现有下列差异:衡阳建滔运输有限公司——N区域应改为K区域。
分析:1.东莞市正一大同德轴承有限公司查询【应付明细表】发现应付明细表与总账是一致的,差异实际上就是那一条标红的,原因就是没有做结算。
联查到应付单看看:做了结算之后就应该相等了。
2.河北汇海化工有限公司发现余额是负数,即做了付款单。
然后查总账结果发现没有预付账款余额,只有应付账款余额。
直接点击【辅助核算明细表】并与【应付明细表】进行核对。
结果发现【应付明细表】比【辅助核算明细表】多了一笔数据。
联查到单据,下查凭证发现:该付款单是手工新增的,所生成的凭证是费用类科目,而不是往来科目。
而付款类型为“费用付款”的却属于采购付款类别。
3.惠州市通用机电设备有限公司情况同24.岳阳淡澳机电安装有限公司对比一下应付明细表与辅助核算明细表,差异见红色标记为什么账龄分析表比总账报表多呢?原因查明细可发现:该应付单是属于暂估类的,但是单据上有没有勾选“业务应付”。
后发现该单据是手工做的,正确做法如下:应该是先做订单然后下推应付单,鉴于系统还未完善业务应付多种源单据支持的方案欠缺,应将应付管理中业务应付处理时点的参数修改为“平时处理”,并在做该应付单是将“业务应付”手工勾选。
5.惠州市石松化工有限公司总账比账龄少,怀疑是没有完全结算的问题通过查询【应付明细表】然后到付款单,果然发现没有结算6.深圳深岩燃气有限公司也是未做结算的问题。
在此可以总结出结论:1.【应付明细表】与【核算项目余额表】相等,而账龄不等并大于的,都是未做结算。
2.【账龄分析表】有数而【核算项目余额表】无的,可能是应付单做的是暂估,而未勾选“业务应付”。
3.【应付明细表】比【辅助核算明细表】多的,可能是做了付款类型属于应付系统的单据,但是生成的凭证又与往来科目无关的。
利用Excel进行应收款项的账龄审计2005-6-7 12:58【大中小】【打印】【我要纠错】表一是某上市公司2004年度财务会计报告披露的母公司应收账款的会计注释:仔细分析,我们会发现表格中存在两处矛盾之处:2004年12月31日账龄为2~3年的金额为9389259.79元,而在2003年12月31日账龄为1~2年的金额仅有3808844.83元。
另外,2003年12月31日并无账龄为4~5年的应收款项,而2004年12月31日,账龄5年以上的应收款竟然会有553575.41元之多。
按照财政部财会(2002)18号的规定:采用账龄分析法计提坏账准备时,收到债务单位当期偿还的部分债务后,剩余的应收款项,不应改变其账龄,仍应按原账龄加上本期应增加的账龄确定;在存在多笔应收款项,且各笔应收款项账龄不同的情况下,收到债务单位当期偿还的部分债务,应当逐笔认定收到的是哪一笔应收款项;如果确实无法认定的,按照先发生先收回的原则确定,剩余应收款项的账龄按上述同一原则确定。
实践中,绝大多数企业采用“先发生先收回”的原则确认应收款项的账龄。
按照上述账龄划分原则,在一般情况下,企业财务会计报表的应收账款或其他应收款项目本年末账龄1~2年的金额不应该大于上年末账龄1年以内的金额;本年末账龄2~3年的金额不应该大于上年末账龄1~2年的金额;假如账龄3年以上的不再细分,本年末账龄3年以上的金额不应该大于上年末账龄2~3年和3年以上的金额的合计数。
当存在下列情况时,应收账款或其他应收款报表项目的两个连续会计年度不同账龄金额可能不遵循上面的规律:1.编制合并报表的,本年度纳入合并范围的企业增加,新增加的企业包含有账龄为1年以上的应收款项;2.由于收购、兼并或债务重组,企业本年度购入账龄为1年以上的应收款项;3.预付账款因回收无望转入其他应收款。
阅读该公司年报,公司并未披露资产收购、亦不存在预付账款调整。
因此我们可以判断,该上市公司账龄划分可能存在问题。
SAPABAP应付账款账龄分析表*&---------------------------------------------------------------------**& Report ZRP_FI_011*&*&---------------------------------------------------------------------**&*&*& 0001 2012.01.03 MINGOS 由于取余额函数取数出错,自己写FM*&---------------------------------------------------------------------*REPORT zrp_fi_011 LINE-SIZE 800 NO STANDARD PAGE HEADING.TABLES: lfa1, bsik, LFB1.* Global data declarationTYPE-POOLS: slis.TYPES:BEGIN OF gt_vend,bukrs LIKE bsid-bukrs,lifnr LIKE lfa1-lifnr,name1 LIKE lfa1-name1,gjahr LIKE bsid-gjahr,monat LIKE bsid-monat,waers LIKE fdbl_header-waers,bgber LIKE fdbl_balance_line-balance, "期初余额arber LIKE fdbl_balance_line-balance, "本期销售pyber LIKE fdbl_balance_line-balance, "本期收款blber LIKE fdbl_balance_line-balance, "本期余额END OF gt_vend.TYPES:BEGIN OF gt_bsik.INCLUDE STRUCTURE bsik.TYPES:END OF gt_bsik.* GLOBAL STRUCTURE OF LISTTYPES:BEGIN OF t_outtab,bukrs LIKE bsid-bukrs,lifnr LIKE lfa1-lifnr,name1 LIKE lfa1-name1,gjahr LIKE bsid-gjahr,monat LIKE bsid-monat,waers LIKE fdbl_header-waers,bgber LIKE fdbl_balance_line-balance, "期初余额arber LIKE fdbl_balance_line-balance, "本期销售pyber LIKE fdbl_balance_line-balance, "本期收款blber LIKE fdbl_balance_line-balance, "本期余额bera0 LIKE fdbl_balance_line-balance, "账龄<0天bera1 LIKE fdbl_balance_line-balance, "账龄0~30天bera2 LIKE fdbl_balance_line-balance, "账龄31~60天bera3 LIKE fdbl_balance_line-balance, "账龄61~90天bera4 LIKE fdbl_balance_line-balance, "账龄91~120天bera5 LIKE fdbl_balance_line-balance, "账龄121~180天bera6 LIKE fdbl_balance_line-balance, "账龄181~360天bera7 LIKE fdbl_balance_line-balance, "账龄>360天END OF t_outtab.* Data variable for use of ALVDATA: i_gt_fieldcat TYPE slis_t_fieldcat_alv.DATA: i_gt_outtab TYPE t_outtab OCCURS 0 WITH HEADER LINE.DATA: i_gt_excluding TYPE slis_t_extab.DATA: v_gt_repid LIKE sy-repid.DATA: i_gt_events TYPE slis_t_event.DATA: v_gt_variant LIKE disvariant.DATA: i_gs_layout TYPE slis_layout_alv,g_val like lfa1-lifnr.DATA: lt_vend TYPE gt_vend OCCURS 0 WITH HEADER LINE.DATA: lt_bsik TYPE gt_bsik OCCURS 0 WITH HEADER LINE.*---------------------------------------------------------------------** SELECTION SCREEN **---------------------------------------------------------------------*SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.SELECT-OPTIONS: s_bukrsFOR bsik-bukrs NO INTERVALS OBLIGATORY,s_lifnr FOR bsik-lifnr,s_ktokk FOR lfa1-ktokk,s_akont FOR lfb1-akont.PARAMETERS: p_gjahr LIKE bsid-gjahr,p_monat LIKE bsid-monat.SELECTION-SCREEN SKIP.PARAMETERS: cb_zero AS CHECKBOX DEFAULT 'X'.SELECTION-SCREEN END OF BLOCK b1.*---------------------------------------------------------------------** INITIALIZATION **---------------------------------------------------------------------** Initialization fieldcatalogINITIALIZATION.v_gt_repid = sy-repid.REFRESH: s_bukrs.s_bukrs-sign = 'I'.s_bukrs-option = 'EQ'.s_bukrs-low = '1000'.APPEND s_bukrs.GET parameter id 'GSLIF' field g_val.GET parameter id 'GSHR' field p_gjahr.GET parameter id 'GSMO' field p_monat.IF g_val is NOT INITIAL.REFRESH: s_lifnr.s_lifnr-sign = 'I'.s_lifnr-option = 'EQ'.s_lifnr-low = g_val.APPEND s_lifnr.ENDIF.IF p_gjahr is INITIAL .p_gjahr = sy-datum+0(4).p_monat = sy-datum+4(2).ENDIF.AT SELECTION-SCREEN.*---------------------------------------------------------------------** START-OF-SELECTION **---------------------------------------------------------------------** Start of SelectionSTART-OF-SELECTION.PERFORM get_data.*---------------------------------------------------------------------** END-OF-SELECTION **---------------------------------------------------------------------*END-OF-SELECTION.PERFORM fieldcat_init.PERFORM eventtab_build.PERFORM call_alv.*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM get_data .DATA: lt_bala LIKE bapi3008_7 OCCURS 0 WITH HEADER LINE, lt_spec LIKE bapi3008_a OCCURS 0 WITH HEADER LINE.DATA: lv_days LIKE sy-index.DATA: lv_budat LIKE sy-datum.REFRESH: lt_vend.SELECT a~bukrs a~lifnr a~gjahr b~name1INTO CORRESPONDING FIELDS OF TABLE lt_vendFROM lfc1 AS aINNER JOIN lfa1 AS b ON b~lifnr = a~lifnrINNER JOIN lfb1 AS c ON c~lifnr = a~lifnr AND c~bukrs = a~bukrsWHERE a~lifnr IN s_lifnrAND a~bukrs IN s_bukrsAND a~gjahr EQ p_gjahrAND b~ktokk IN s_ktokkAND c~akont IN s_akont.LOOP AT lt_vend.REFRESH: lt_bala, lt_spec.lt_vend-monat = p_monat.* CALL FUNCTION 'BAPI_AP_ACC_GETPERIODBALANCES'* EXPORTING* companycode = lt_vend-bukrs* vendor= lt_vend-lifnr* TABLES* creditor_balances = lt_bala* creditor_special_balances = lt_spec.* READ TABLE lt_bala WITH KEY vendor = lt_vend-lifnr* comp_code = lt_vend-bukrs* fisc_year = lt_vend-gjahr* fis_period = lt_vend-monat.* IF sy-subrc = 0.* lt_vend-arber = lt_bala-credit_mth.* lt_vend-pyber = lt_bala-debits_mth.* lt_vend-blber = lt_bala-balance.* lt_vend-bgber = lt_vend-blber - ( lt_vend-arber + lt_vend-pyber ).* lt_vend-waers = lt_bala-currency.* ELSE.* lt_vend-arber = 0.* lt_vend-pyber = 0.* lt_vend-blber = 0.* lt_vend-bgber = 0.* lt_vend-waers = 'CNY'.* ENDIF.CALL FUNCTION 'ZFM_FI_VENDOR_DATA'EXPORTINGIN_BUKRS = lt_vend-bukrsIN_LIFNR = lt_vend-lifnrIN_GJAHR = p_gjahrTABLEScreditor_balances = lt_bala.READ TABLE lt_bala WITH KEY vendor = lt_vend-lifnrcomp_code = lt_vend-bukrsfisc_year = lt_vend-gjahrfis_period = lt_vend-monat.IF sy-subrc = 0.lt_vend-arber = lt_bala-credit_mth. "期间借方发生额lt_vend-pyber = lt_bala-debits_mth. "期间贷方发生额lt_vend-blber = lt_bala-balance. "期末lt_vend-bgber = lt_bala-MNTH_SALES. "期初余额lt_vend-waers = lt_bala-currency.ELSE.lt_vend-arber = 0.lt_vend-pyber = 0.lt_vend-blber = 0.lt_vend-bgber = 0.lt_vend-waers = 'CNY'.ENDIF.MODIFY lt_vend.ENDLOOP.IF NOT lt_vend[] IS INITIAL.CONCATENATE p_gjahr p_monat '01' INTO lv_budat. CALL FUNCTION 'DATE_GET_MONTH_LASTDAY' EXPORTINGi_date = lv_budatIMPORTINGe_date = lv_budat.SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_bsik FROM bsikFOR ALL ENTRIES IN lt_vendWHERE bukrs = lt_vend-bukrsAND lifnr = lt_vend-lifnrAND umsks = spaceAND budat <= lv_budat.ENDIF.LOOP AT lt_vend.CLEAR: i_gt_outtab.MOVE-CORRESPONDING lt_vend TO i_gt_outtab. LOOP AT lt_bsik WHERE bukrs = lt_vend-bukrsAND lifnr = lt_vend-lifnr.lv_days = sy-datum - ( lt_bsik-zfbdt + lt_bsik-zbd1t ). IF lv_days < 0.IF lt_bsik-shkzg = 'S'.i_gt_outtab-bera0 = i_gt_outtab-bera0 + lt_bsik-dmbtr. ELSE.i_gt_outtab-bera0 = i_gt_outtab-bera0 - lt_bsik-dmbtr. ENDIF.ELSEIF lv_days >= 0 AND lv_days <= 30.IF lt_bsik-shkzg = 'S'.i_gt_outtab-bera1 = i_gt_outtab-bera1 + lt_bsik-dmbtr. ELSE.i_gt_outtab-bera1 = i_gt_outtab-bera1 - lt_bsik-dmbtr. ENDIF.ELSEIF lv_days >= 31 AND lv_days <= 60.IF lt_bsik-shkzg = 'S'.i_gt_outtab-bera2 = i_gt_outtab-bera2 + lt_bsik-dmbtr. ELSE.i_gt_outtab-bera2 = i_gt_outtab-bera2 - lt_bsik-dmbtr. ENDIF.ELSEIF lv_days >= 61 AND lv_days <= 90.IF lt_bsik-shkzg = 'S'.i_gt_outtab-bera3 = i_gt_outtab-bera3 + lt_bsik-dmbtr. ELSE.i_gt_outtab-bera3 = i_gt_outtab-bera3 - lt_bsik-dmbtr. ENDIF.ELSEIF lv_days >= 91 AND lv_days <= 120.IF lt_bsik-shkzg = 'S'.i_gt_outtab-bera4 = i_gt_outtab-bera4 + lt_bsik-dmbtr. ELSE.i_gt_outtab-bera4 = i_gt_outtab-bera4 - lt_bsik-dmbtr. ENDIF.ELSEIF lv_days >= 121 AND lv_days <= 180.IF lt_bsik-shkzg = 'S'.i_gt_outtab-bera5 = i_gt_outtab-bera5 + lt_bsik-dmbtr. ELSE.i_gt_outtab-bera5 = i_gt_outtab-bera5 - lt_bsik-dmbtr. ENDIF.ELSEIF lv_days >= 181 AND lv_days <= 360.IF lt_bsik-shkzg = 'S'.i_gt_outtab-bera6 = i_gt_outtab-bera6 + lt_bsik-dmbtr. ELSE.i_gt_outtab-bera6 = i_gt_outtab-bera6 - lt_bsik-dmbtr. ENDIF.ELSEIF lv_days > 360.IF lt_bsik-shkzg = 'S'.i_gt_outtab-bera7 = i_gt_outtab-bera7 + lt_bsik-dmbtr. ELSE.i_gt_outtab-bera7 = i_gt_outtab-bera7 - lt_bsik-dmbtr.ENDIF.ENDIF.IF cb_zero = 'X'.CHECK i_gt_outtab-arber <> 0 OR i_gt_outtab-pyber <> 0 ORi_gt_outtab-blber <> 0 OR i_gt_outtab-bgber <> 0 ORi_gt_outtab-bera0 <> 0 OR i_gt_outtab-bera1 <> 0 ORi_gt_outtab-bera2 <> 0 OR i_gt_outtab-bera3 <> 0 ORi_gt_outtab-bera4 <> 0 OR i_gt_outtab-bera5 <> 0 ORi_gt_outtab-bera6 <> 0 OR i_gt_outtab-bera7 <> 0 .ENDIF.ENDLOOP.shift i_gt_outtab-LIFNR left deleting leading '0'. "去前导空格APPEND i_gt_outtab.ENDLOOP.FREE: lt_vend, lt_bsik.SORT i_gt_outtab BY bukrs lifnr.ENDFORM. " GET_DATA*&---------------------------------------------------------------------**& Form FIELDCAT_INIT*&---------------------------------------------------------------------** Initialization fieldcatalog DEFINITION OF HEADING.* Fieldnames and ref_fieldnames MUST be UPPER CASE !!*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM fieldcat_init.DATA: l_fieldcat TYPE slis_fieldcat_alv.*---------------------------------------------------------------------** general fields selected **---------------------------------------------------------------------*DEFINE alv_fieldcat.l_fieldcat-tabname = &1.l_fieldcat-fieldname = &2.l_fieldcat-key = &3.l_fieldcat-ref_fieldname = &4.l_fieldcat-ref_tabname = &5.l_fieldcat-reptext_ddic = &6.l_fieldcat-no_out = &7.l_fieldcat-no_zero = &8.l_fieldcat-outputlen = &9.append l_fieldcat to i_gt_fieldcat.END-OF-DEFINITION.alv_fieldcat 'I_GT_OUTTAB' 'BUKRS' ' ' ' ' ' ' '公司' ' ' ' ' 4.alv_fieldcat 'I_GT_OUTTAB' 'LIFNR' ' ' ' ' ' ' '供应商' ' ' ' ' 10.alv_fieldcat 'I_GT_OUTTAB' 'NAME1' ' ' ' ' ' ' '供应商名称' ' ' ' ' 36.alv_fieldcat 'I_GT_OUTTAB' 'GJAHR' ' ' ' ' ' ' '年度' ' ' ' ' 4.alv_fieldcat 'I_GT_OUTTAB' 'MONAT' ' ' ' ' ' ' '月度' ' ' ' ' 4.alv_fieldcat 'I_GT_OUTTAB' 'WAERS' ' ' ' ' ' ' '币种' ' ' ' ' 4.alv_fieldcat 'I_GT_OUTTAB' 'BGBER' ' ' ' ' ' ' '期初余额' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'ARBER' ' ' ' ' ' ' '本期贷方' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'PYBER' ' ' ' ' ' ' '本期借方' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'BLBER' ' ' ' ' ' ' '本期余额' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'BERA0' ' ' ' ' ' ' '账龄(<0)天' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'BERA1' ' ' ' ' ' ' '账龄(0~30)天' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'BERA2' ' ' ' ' ' ' '账龄(31~60)天' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'BERA3' ' ' ' ' ' ' '账龄(61~90)天' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'BERA4' ' ' ' ' ' ' '账龄(91~120)天' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'BERA5' ' ' ' ' ' ' '账龄(121~180)天' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'BERA6' ' ' ' ' ' ' '账龄(181~360)天' ' ' ' ' 15.alv_fieldcat 'I_GT_OUTTAB' 'BERA7' ' ' ' ' ' ' '账龄(>360)天' ' ' ' ' 15.ENDFORM. "FIELDCAT_INIT*&---------------------------------------------------------------------**& Form EVENTTAB_BUILD*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM eventtab_build.DATA: l_ls_event TYPE slis_alv_event.CALL FUNCTION 'REUSE_ALV_EVENTS_GET'EXPORTINGi_list_type = 0IMPORTINGet_events = i_gt_events.*........ADD EVENT AT-USER-COMMAND .....................................READ TABLE i_gt_events WITH KEY name = slis_ev_user_commandINTO l_ls_event.IF sy-subrc = 0.MOVE slis_ev_user_command TO l_ls_event-form.APPEND l_ls_event TO i_gt_events.ENDIF.ENDFORM. "EVENTTAB_BUILD*&---------------------------------------------------------------------**& Form USER_COMMAND*&---------------------------------------------------------------------** DYNAMIC CALL FROM THE ALV*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM user_command USING r_ucomm LIKE sy-ucommrs_selfield TYPE slis_selfield.DATA: l_index LIKE sy-index,l_colno TYPE slis_sel_tab_field.DATA: rspar_tab TYPE rsparams OCCURS 0 WITH HEADER LINE.l_index = rs_selfield-tabindex. "LINE IN LISTl_colno = rs_selfield-sel_tab_field. "COLUMN HEADER*........POSITION THE CURSOR ON A LINE IN THE LIST......................IF l_index LE 0.* MESSAGE .........ENDIF.READ TABLE i_gt_outtab INDEX l_index.CASE l_colno.*........CUSTOMER DISPLAY..............................................*WHEN 'I_GT_OUTTAB-LIFNR'.SET PARAMETER ID 'LIF' FIELD i_gt_outtab-lifnr.CALL TRANSACTION 'XK03'.WHEN 'I_GT_OUTTAB-BGBER' OR 'I_GT_OUTTAB-ARBER' OR 'I_GT_OUTTAB-PYBER' OR 'I_GT_OUTTAB-BLBER'.CLEAR rspar_tab. REFRESH rspar_tab.CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS' EXPORTINGcurr_report = 'RFAPBALANCE'TABLESselection_table = rspar_tabEXCEPTIONSnot_found = 01no_report = 02.LOOP AT rspar_tab.CASE rspar_tab-selname.WHEN 'SO_LIFNR'.rspar_tab-sign = 'I'.rspar_tab-option = 'EQ'.rspar_tab-low = i_gt_outtab-lifnr.rspar_tab-high = space.WHEN 'SO_BUKRS'.rspar_tab-sign = 'I'.rspar_tab-option = 'EQ'.rspar_tab-low = i_gt_outtab-bukrs.rspar_tab-high = space.WHEN 'GP_GJAHR'.rspar_tab-sign = 'I'.rspar_tab-option = 'EQ'.rspar_tab-low = i_gt_outtab-gjahr.rspar_tab-high = space.ENDCASE.MODIFY rspar_tab.ENDLOOP.IF NOT i_gt_outtab-lifnr IS INITIAL.SUBMIT rfapbalance USING SELECTION-SCREEN '1000' WITH SELECTION-TABLE rspar_tabAND RETURN.ENDIF.WHEN 'I_GT_OUTTAB-BERA0' OR 'I_GT_OUTTAB-BERA1' OR 'I_GT_OUTTAB-BERA2' OR 'I_GT_OUTTAB-BERA3' OR'I_GT_OUTTAB-BERA4' OR 'I_GT_OUTTAB-BERA5' OR'I_GT_OUTTAB-BERA6' OR 'I_GT_OUTTAB-BERA7'. CLEAR rspar_tab. REFRESH rspar_tab.CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS' EXPORTINGcurr_report = 'RFITEMAP'TABLESselection_table = rspar_tabEXCEPTIONSnot_found = 01no_report = 02.LOOP AT rspar_tab.CASE rspar_tab-selname.WHEN 'KD_LIFNR'.rspar_tab-sign = 'I'.rspar_tab-option = 'EQ'.rspar_tab-low = i_gt_outtab-lifnr.rspar_tab-high = space.WHEN 'KD_BUKRS'.rspar_tab-sign = 'I'.rspar_tab-option = 'EQ'.rspar_tab-low = i_gt_outtab-bukrs.rspar_tab-high = space.WHEN 'X_OPSEL'.rspar_tab-sign = 'I'.rspar_tab-option = 'EQ'.rspar_tab-low = 'X'.rspar_tab-high = space.WHEN 'X_NORM'.rspar_tab-sign = 'I'.rspar_tab-option = 'EQ'.rspar_tab-low = 'X'.rspar_tab-high = space.ENDCASE.MODIFY rspar_tab.ENDLOOP.IF NOT i_gt_outtab-lifnr IS INITIAL.SUBMIT rfitemap USING SELECTION-SCREEN '1000'WITH SELECTION-TABLE rspar_tabAND RETURN.ENDIF.ENDCASE.ENDFORM. "USER_COMMAND*&---------------------------------------------------------------------**& Form CALL_ALV*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM call_alv.DATA: l_excluding TYPE slis_extab.i_gs_layout-colwidth_optimize = 'X'.* l_excluding-fcode = '&OUP'.* APPEND l_excluding TO i_gt_excluding.* l_excluding-fcode = '&ODN'.* APPEND l_excluding TO i_gt_excluding.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTING* I_INTERFACE_CHECK = ' '* I_BYPASSING_BUFFER = ' '* I_BUFFER_ACTIVE = ' 'i_callback_program = v_gt_repid* I_CALLBACK_PF_STATUS_SET = ' '* I_CALLBACK_USER_COMMAND = ' '* I_CALLBACK_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_END_OF_LIST = ' '* I_STRUCTURE_NAME =* I_BACKGROUND_ID = ' '* I_GRID_TITLE =* I_GRID_SETTINGS =is_layout = i_gs_layoutit_fieldcat = i_gt_fieldcatit_excluding = i_gt_excluding* IT_SPECIAL_GROUPS =* IT_SORT =* IT_FILTER =* IS_SEL_HIDE =i_default = 'X'i_save = 'A'is_variant = v_gt_variantit_events = i_gt_events* IT_EVENT_EXIT =* IS_PRINT =* IS_REPREP_ID =* I_SCREEN_START_COLUMN = 0* I_SCREEN_START_LINE = 0* I_SCREEN_END_COLUMN = 0* I_SCREEN_END_LINE = 0* I_HTML_HEIGHT_TOP= 0* I_HTML_HEIGHT_END = 0* IT_ALV_GRAPHICS =* IT_HYPERLINK =* IT_ADD_FIELDCAT =* IT_EXCEPT_QINFO =* IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING* E_EXIT_CAUSED_BY_CALLER =* ES_EXIT_CAUSED_BY_USER =TABLESt_outtab = i_gt_outtab EXCEPTIONS program_error = 1 OTHERS = 2.ENDFORM. " CALL_ALV。