ZFI002财务凭证查询报表
来源:互联网 发布:阿沁网络红人淘宝 编辑:程序博客网 时间:2024/04/29 05:44
春节刚过,还没得心情来上班。就接到了新任务修改一下报表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.
*&---------------------------------------------------------------------**& 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[] i_save = 'A' "保存变式 TABLES t_outtab = T_BSEG.ENDFORM. "display_data*---------------------------------------------------------------------** FORM user_command **---------------------------------------------------------------------*FORM USER_COMMAND USING i_ucomm LIKE sy-ucomm selfield TYPE slis_selfield. CASE i_ucomm. WHEN '&IC1'. CASE selfield-sel_tab_field. WHEN '1-BELNR'. SET PARAMETER ID 'BLN' FIELD selfield-value. SET PARAMETER ID 'BUK' FIELD T_BSEG-BUKRS. SET PARAMETER ID 'GJR' FIELD T_BSEG-GJAHR. CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. ENDCASE. WHEN OTHERS. ENDCASE.ENDFORM. "callback_ucomm*&---------------------------------------------------------------------**& Form GET_BKPF*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM GET_BKPF .*Get Data From BKPF SELECT BUKRS BELNR GJAHR BLART BLDAT BUDAT TCODE AWKEY BSTAT BKTXT XBLNR USNAM INTO TABLE T_BKPF FROM BKPF WHERE BUKRS IN S_BUKRS AND BELNR IN S_BELNR AND BLDAT IN S_BLDAT and GJAHR in S_GJAHR and BLART in S_BLART AND BUDAT IN S_BUDAT AND USNAM IN S_USNAM .ENDFORM. " GET_BKPF*&---------------------------------------------------------------------**& Form CHECK_BKPF*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM CHECK_BKPF . IF T_BKPF[] IS INITIAL. MESSAGE I000(ZMsg) with '没找到对应的数据,请更改查询条件'. LEAVE LIST-PROCESSING. ENDIF.ENDFORM. " CHECK_BKPF*&---------------------------------------------------------------------**& Form GET_BSEG*&---------------------------------------------------------------------*FORM GET_BSEG.*Get Data From BSEG SELECT BUKRS BELNR GJAHR BUZEI SHKZG PSWSL DMBTR PSWBT SAKNR HKONT LIFNR BSCHL INTO CORRESPONDING FIELDS OF TABLE T_BSEG FROM BSEG FOR ALL ENTRIES IN T_BKPF WHERE BUKRS = T_BKPF-BUKRS AND BELNR = T_BKPF-BELNR AND GJAHR = T_BKPF-GJAHR.*Get G/L Account name from skat SELECT SAKNR TXT20 INTO TABLE T_SKAT FROM SKAT WHERE SPRAS = SY-LANGU AND KTOPL = 'INT'.*Get Vendor Info from LFA1 SELECT LIFNR NAME1 INTO TABLE T_LFA1 FROM LFA1 FOR ALL ENTRIES IN T_BSEG WHERE LIFNR = T_BSEG-LIFNR.ENDFORM. "GET_BSEG*&---------------------------------------------------------------------**& Form events_build*&---------------------------------------------------------------------*FORM events_build. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 IMPORTING et_events = i_events.* READ TABLE i_events WITH KEY name = 'TOP_OF_PAGE' INTO w_events.* IF sy-subrc = 0.* MOVE 'ALV_TOP_OF_PAGE' TO w_events-form.* MODIFY i_events FROM w_events INDEX sy-tabix.* ENDIF.** READ TABLE i_events WITH KEY name = 'END_OF_LIST' INTO w_events.* IF sy-subrc = 0.* MOVE 'ALV_END_OF_LIST' TO w_events-form.* MODIFY i_events FROM w_events INDEX sy-tabix.* ENDIF. READ TABLE i_events WITH KEY name = 'USER_COMMAND' INTO w_events. IF sy-subrc = 0. MOVE 'USER_COMMAND' TO w_events-form. MODIFY i_events FROM w_events INDEX sy-tabix. ENDIF.ENDFORM. "events_build*&---------------------------------------------------------------------**& Form layout_build*&---------------------------------------------------------------------*FORM layout_build.* i_layout-detail_popup = 'X'. "弹出详细信息窗口* i-layout-no_vline = 'X'. "设置列间隔线 i_layout-info_fieldname = 'COLOR'. "颜色值 i_layout-colwidth_optimize = 'X'. "优化列宽选项 i_layout-detail_initial_lines = 'X'. i_layout-detail_titlebar = '凭证查询报表'. i_layout-no_colhead =' '. w_repid = sy-repid.ENDFORM. "layout_build*&---------------------------------------------------------------------**& Form Fields_Bulid*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM fields_bulid . DATA tmp_pos TYPE i. REFRESH i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'BLART'. i_fieldcat-seltext_l = '凭证类型'. i_fieldcat-key = 'X'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'BUKRS'. i_fieldcat-seltext_l = '公司代码'. i_fieldcat-outputlen = '15'. i_fieldcat-no_zero = 'X'. i_fieldcat-key = 'X'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'BELNR'. i_fieldcat-seltext_l = '会计凭证号'. i_fieldcat-outputlen = '10'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'BLDAT'. i_fieldcat-seltext_l = '凭证日期'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'BUDAT'. i_fieldcat-seltext_l = '过账日期'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'GJAHR'. i_fieldcat-seltext_l = '年度'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'BUZEI'. i_fieldcat-seltext_l = '项目'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'BSCHL'. i_fieldcat-seltext_l = 'PK'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'SHKZG'. i_fieldcat-seltext_l = '借方/贷方'. i_fieldcat-no_out = 'X'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'HKONT'. i_fieldcat-seltext_l = '科目'. i_fieldcat-No_Zero = 'X'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'SAKNR'. i_fieldcat-seltext_l = '总帐科目'. i_fieldcat-No_Zero = 'X'. i_fieldcat-no_out = 'X'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'TXT20'. i_fieldcat-seltext_l = '科目名'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'LIFNR'. i_fieldcat-seltext_l = 'Vendor'. i_fieldcat-no_out = 'X'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'NAME1'. i_fieldcat-seltext_l = '厂商名'. i_fieldcat-no_out = 'X'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'PSWSL'. i_fieldcat-seltext_l = '币别'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'PSWBT'. i_fieldcat-seltext_l = '金额'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'DMBTR'. i_fieldcat-seltext_l = '本币金额'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'AWKEY'. i_fieldcat-seltext_l = '原始凭证'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'TCODE'. i_fieldcat-seltext_l = '原始凭证交易码'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'BSTAT'. i_fieldcat-seltext_l = '凭证状态'. i_fieldcat-no_Out = 'X'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'PSWBT1'. i_fieldcat-seltext_l = '借方发生额'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'PSWBT2'. i_fieldcat-seltext_l = '贷方发生额'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'BKTXT'. i_fieldcat-seltext_l = '文本'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'XBLNR'. i_fieldcat-seltext_l = '参照'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat. tmp_pos = tmp_pos + 1. i_fieldcat-col_pos = tmp_pos. i_fieldcat-fieldname = 'USNAM'. i_fieldcat-seltext_l = '用户名'. APPEND i_fieldcat TO i_fieldcat_alv. CLEAR i_fieldcat.ENDFORM. " Fields_Bulid*&---------------------------------------------------------------------**& Form Process_BSEG*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM process_BSEG . DATA l_loop LIKE sy-tabix. DATA L_LEN TYPE I. SORT T_BSEG BY BUKRS GJAHR BELNR. SORT T_BKPF BY BUKRS GJAHR BELNR. LOOP AT T_BSEG. L_LOOP = SY-TABIX. IF T_BSEG-SHKZG = 'H'. T_BSEG-DMBTR = T_BSEG-DMBTR * ( -1 ). T_BSEG-PSWBT = T_BSEG-PSWBT * ( -1 ). T_BSEG-PSWBT2 = T_BSEG-PSWBT * ( -1 ). ENDIF. IF T_BSEG-SHKZG = 'S'. T_BSEG-PSWBT1 = T_BSEG-PSWBT . ENDIF.* Get G/L Account Name READ TABLE T_SKAT WITH KEY SAKNR = T_BSEG-HKONT BINARY SEARCH. IF SY-SUBRC = 0. T_BSEG-TXT20 = T_SKAT-TXT20. ENDIF.* Get Vendor Name IF T_BSEG-SAKNR <> '' AND T_BSEG-LIFNR <> ''. T_BSEG-HKONT = T_BSEG-LIFNR. READ TABLE T_LFA1 WITH KEY LIFNR = T_BSEG-LIFNR BINARY SEARCH. IF SY-SUBRC = 0. T_BSEG-NAME1 = T_LFA1-NAME1. T_BSEG-TXT20 = T_LFA1-NAME1. ENDIF. ENDIF.*Move Doc Header to Item READ TABLE T_BKPF WITH KEY BUKRS = T_BSEG-BUKRS GJAHR = T_BSEG-GJAHR BELNR = T_BSEG-BELNR BINARY SEARCH. IF SY-SUBRC = 0. T_BSEG-BLART = T_BKPF-BLART . T_BSEG-BLDAT = T_BKPF-BLDAT . T_BSEG-BUDAT = T_BKPF-BUDAT . T_BSEG-TCODE = T_BKPF-TCODE . T_BSEG-AWKEY = T_BKPF-AWKEY . T_BSEG-BKTXT = T_BKPF-BKTXT . T_BSEG-XBLNR = T_BKPF-XBLNR . T_BSEG-USNAM = T_BKPF-USNAM . ENDIF. IF T_BSEG-AWKEY <>' '. W_LEN = STRLEN( T_BSEG-AWKEY ) . IF W_LEN = 10 OR W_LEN = 14 OR W_LEN = 18. T_BSEG-AWKEY = T_BSEG-AWKEY(10). ENDIF. ENDIF. MODIFY T_BSEG. SY-TABIX = L_LOOP. ENDLOOP.ENDFORM. " Process_BSEG
- ZFI002财务凭证查询报表
- SAP财务凭证冲销
- 财务凭证的替代
- ABAP 外销财务凭证与客户采购合同对应关系报表
- BAPI_ACC_GL_POSTING_POST生成财务预制凭证
- BAPI_ACC_GL_POSTING_POST生成财务预制凭证
- BAPI_ACC_GL_POSTING_POST生成财务预制凭证
- 财务凭证过账增强 BAPI_ACC_DOCUMENT_POST
- 报表,财务,会计
- 通过实例学习冲销财务凭证
- SAP财务中国本土化报表
- 我们做的一个财务凭证的记账界面
- 如何实现进销存的单据导入财务凭证
- 一般来说进销存哪些单据导入财务里的凭证
- 在财务凭证如何用费用冲抵付款
- SAP SD Rebate 的财务凭证的说明
- 基于ESB实现商友与K3财务凭证集成
- 使用程序生成财务预制凭证的方法(一)
- 分布式实时数据库-立体数据
- 身份证提取生日,判断性别
- Linux内核抢占实现机制分析
- 《android2.2自带通讯录》之联系人按拼音排序以及按汉字首字母或全拼搜索
- kmp
- ZFI002财务凭证查询报表
- 数据仓库与元数据
- php中文手册读书笔记
- (转)WINCE物理和虚拟地址的问题
- 怎么提高基于ArcSDE存储的要素类大数据量要素选择的性能
- 【兼容ie6笔记】当li为父级元素,子级元素使用了position:absolute,并用left定位时
- Android就是狗屎
- 【TOMCAT】Tomcat6 类装载器
- C#常用小数取整数