就接到了新任务修改一下报表ZFI002财务凭证查询报表。当然对于老手来说这样的事情是小菜一碟了。也确实我是新手都2个小时搞定。所以清闲的很,用来记录以下过程。给需要的童鞋学习。任务主要是要新增加栏位:借方发生额,贷方发生额,文本,参照,用户名。并且用户名可以输入。不管它啦。先看看之前的是什么样子。呵呵~~
输入(查询条件):公司代码:BKPF-BUKRS 凭证编号:BKPF-BELNR 会计年度: BKPF- GJAHR 凭证类型: BKPF- BLART 凭证日期: BKPF-BLDAT 过账日期: BKPF-BUDAT 用户名: BKPF-USNAM(新增加哦~)
表有:T_BKPF,T_BSEG,T_LFA1,T_SKAT
处理过程有:GET_BKPF()-->CHECK_BKPF()-->GET_BSEG()-->PROCESS_BSEG()-->EVENTS_BUILD()-->LAYOUT_BUILD()-->FIELDS_BUILD()-->DISPLAY_BUILD().
是不是很啰嗦啊,其实就是那么简单嘛,分析要求:取数据-->处理数据-->alv显示 其实很多ABAP的报表都是这样的一个套路。好了,其他的也就不多说了,直接上Code.
输入(查询条件):公司代码:BKPF-BUKRS 凭证编号:BKPF-BELNR 会计年度: BKPF- GJAHR 凭证类型: BKPF- BLART 凭证日期: BKPF-BLDAT 过账日期: BKPF-BUDAT 用户名: BKPF-USNAM(新增加哦~)
表有:T_BKPF,T_BSEG,T_LFA1,T_SKAT
处理过程有:GET_BKPF()-->CHECK_BKPF()-->GET_BSEG()-->PROCESS_BSEG()-->EVENTS_BUILD()-->LAYOUT_BUILD()-->FIELDS_BUILD()-->DISPLAY_BUILD().
是不是很啰嗦啊,其实就是那么简单嘛,分析要求:取数据-->处理数据-->alv显示 其实很多ABAP的报表都是这样的一个套路。好了,其他的也就不多说了,直接上Code.
- *&---------------------------------------------------------------------*
- *& Report ZFI002
- *&---------------------------------------------------------------------*
- * Author : RobertLee
- * Date : 2008.05.02
- * Purpose: FI Doc Report using ALV For Finance
- *
- *&---------------------------------------------------------------------*
- * Change : Jasson.Lee
- * Date : 2012.02.14
- * Purpose: FI Doc Report using ALV For Finance Add col
- *
- *----------------------------------------------------------------------
- REPORT ZFI002.
- TABLES: BKPF,BSEG,LFA1,SKAT.
- *--------------------------------
- * Global Types
- * Essential Declaration for ALV Display
- *--------------------------------
- TYPE-POOLS: slis.
- *--------------------------------
- * Global Internal Tables
- *--------------------------------
- DATA:
- i_fieldcat_alv TYPE slis_t_fieldcat_alv ,
- i_layout TYPE slis_layout_alv,
- i_fieldcat TYPE slis_fieldcat_alv,
- i_events TYPE slis_t_event,
- w_events LIKE LINE OF i_events,
- i_list_comments TYPE slis_t_listheader,
- w_list_comments LIKE LINE OF i_list_comments,
- w_repid LIKE sy-repid.
- DATA: BEGIN OF T_BKPF OCCURS 0,
- BUKRS LIKE BKPF-BUKRS, "CoCode
- BELNR LIKE BKPF-BELNR, "FI Doc
- GJAHR LIKE BKPF-GJAHR, "Fiscal Year
- BLART LIKE BKPF-BLART, "Doc Type
- BLDAT LIKE BKPF-BLDAT, "Doc Date
- BUDAT LIKE BKPF-BUDAT, "Posting Date
- TCODE LIKE BKPF-TCODE, "Transaction Code
- AWKEY LIKE BKPF-AWKEY, "Reference Doc
- BSTAT LIKE BKPF-BSTAT, "Document Status
- BKTXT LIKE BKPF-BKTXT, " txt
- XBLNR LIKE BKPF-XBLNR, " ref
- USNAM LIKE BKPF-USNAM, " user name
- END OF T_BKPF.
- DATA: BEGIN OF T_BSEG OCCURS 0,
- BUKRS LIKE BSEG-BUKRS, "CoCode
- BELNR LIKE BSEG-BELNR, "FI Doc
- GJAHR LIKE BSEG-GJAHR, "Fiscal Year
- BUZEI LIKE BSEG-BUZEI, "Item
- SHKZG LIKE BSEG-SHKZG, "Credit or Debit
- PSWSL LIKE BSEG-PSWSL, "Cur
- DMBTR like BSEG-DMBTR, "Local Amount
- PSWBT LIKE BSEG-PSWBT, "Amount
- SAKNR LIKE BSEG-SAKNR, "G/L Account Number
- HKONT LIKE BSEG-HKONT, "General Ledger Account
- LIFNR LIKE BSEG-LIFNR, "Account Number of Vendor or Creditor
- BSCHL LIKE BSEG-BSCHL, "Posting Key
- BLART LIKE BKPF-BLART, "Doc Type
- BLDAT LIKE BKPF-BLDAT, "Doc Date
- BUDAT LIKE BKPF-BUDAT, "Posting Date
- TCODE LIKE BKPF-TCODE, "Transaction Code
- AWKEY LIKE BKPF-AWKEY, "Reference Doc
- BSTAT LIKE BKPF-BSTAT, "Document status
- TXT20 LIKE SKAT-TXT20, "G/L Acccount Name
- NAME1 LIKE LFA1-NAME1, "Vendor Name
- PSWBT1 LIKE BSEG-PSWBT, "Amount
- PSWBT2 LIKE BSEG-PSWBT, "Amount
- BKTXT LIKE BKPF-BKTXT, " txt
- XBLNR LIKE BKPF-XBLNR, " ref
- USNAM LIKE BKPF-USNAM, " user name
- END OF T_BSEG.
- DATA: BEGIN OF T_LFA1 OCCURS 0,
- LIFNR LIKE LFA1-LIFNR,
- NAME1 LIKE LFA1-NAME1,
- END OF T_LFA1.
- DATA: BEGIN OF T_SKAT OCCURS 0,
- SAKNR LIKE SKAT-SAKNR,
- TXT20 LIKE SKAT-TXT20,
- END OF T_SKAT.
- DATA W_LEN TYPE I.
- *--------------------------------
- * Selection Screen
- *--------------------------------
- SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
- SELECT-OPTIONS:
- S_BUKRS FOR BKPF-BUKRS Default 5000, "CoCode
- S_BELNR FOR BKPF-BELNR, "FI Doc
- S_GJAHR FOR BKPF-GJAHR Default 2008, "Fiscal Year
- S_BLART FOR BKPF-BLART, "Doc Type
- S_BLDAT FOR BKPF-BLDAT, "Doc Date
- S_BUDAT FOR BKPF-BUDAT, "Posting Date
- S_USNAM FOR BKPF-USNAM.
- SELECTION-SCREEN END OF BLOCK b1.
- *--------------------------------
- * Initialization
- *--------------------------------
- INITIALIZATION.
- *--------------------------------
- * At Selection Screen PBO
- *--------------------------------
- AT SELECTION-SCREEN OUTPUT.
- *--------------------------------
- * Start of Selection
- *--------------------------------
- START-OF-SELECTION.
- PERFORM GET_BKPF.
- PERFORM CHECK_BKPF.
- PERFORM GET_BSEG.
- PERFORM Process_BSEG.
- PERFORM Events_build.
- PERFORM Layout_build.
- PERFORM Fields_bulid.
- PERFORM Display_data.
- END-OF-SELECTION.
- *--------------------------------
- * Top of Page
- *--------------------------------
- TOP-OF-PAGE.
- *--------------------------------
- * At User Command
- *--------------------------------
- AT USER-COMMAND.
- *--------------------------------
- * At Line Selection
- *--------------------------------
- AT LINE-SELECTION.
- *&---------------------------------------------------------------------*
- *& Form display_data
- *&---------------------------------------------------------------------*
- FORM display_data.
- CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
- EXPORTING
- i_callback_user_command = 'USER_COMMAND' "用户触发事件
- * i_callback_pf_status_set = 'PF_STATUS_SET'(001) "调用用户事件和按钮事件
- i_callback_program = w_repid "当前程序
- is_layout = i_layout "子函数layout_build填充的格式定义
- it_fieldcat = i_fieldcat_alv[] "子函数fields填充的各列
- it_events = i_events[]