ZFI002财务凭证查询报表

这是一个使用ALV展示的财务凭证报告,用于查询和显示FI领域的财务文档数据,包括凭证类型、公司代码、凭证号、日期等关键信息。报告支持筛选和详细信息查看,并通过调用标准交易码FB03进行进一步操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就接到了新任务修改一下报表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.

  1. *&---------------------------------------------------------------------*  
  2. *& Report  ZFI002  
  3. *&---------------------------------------------------------------------*  
  4. * Author : RobertLee  
  5. * Date   : 2008.05.02  
  6. * Purpose: FI Doc Report using ALV For Finance  
  7. *  
  8. *&---------------------------------------------------------------------*  
  9. * Change : Jasson.Lee  
  10. * Date   : 2012.02.14  
  11. * Purpose: FI Doc Report using ALV For Finance  Add col  
  12. *  
  13. *----------------------------------------------------------------------  
  14. REPORT  ZFI002.  
  15.   
  16. TABLES:   BKPF,BSEG,LFA1,SKAT.  
  17. *--------------------------------  
  18. * Global Types  
  19. * Essential Declaration for ALV Display  
  20. *--------------------------------  
  21. TYPE-POOLS: slis.  
  22. *--------------------------------  
  23. * Global Internal Tables  
  24. *--------------------------------  
  25. DATA:  
  26.   i_fieldcat_alv  TYPE slis_t_fieldcat_alv ,  
  27.   i_layout        TYPE slis_layout_alv,  
  28.   i_fieldcat      TYPE slis_fieldcat_alv,  
  29.   i_events        TYPE slis_t_event,  
  30.   w_events  LIKE LINE OF i_events,  
  31.   i_list_comments TYPE slis_t_listheader,  
  32.   w_list_comments LIKE LINE OF i_list_comments,  
  33.   w_repid LIKE sy-repid.  
  34.   
  35. DATA: BEGIN OF T_BKPF OCCURS 0,  
  36.        BUKRS LIKE BKPF-BUKRS,  "CoCode  
  37.        BELNR LIKE BKPF-BELNR,  "FI Doc  
  38.        GJAHR LIKE BKPF-GJAHR,  "Fiscal Year  
  39.        BLART LIKE BKPF-BLART,  "Doc Type  
  40.        BLDAT LIKE BKPF-BLDAT,  "Doc Date  
  41.        BUDAT LIKE BKPF-BUDAT,  "Posting Date  
  42.        TCODE LIKE BKPF-TCODE,  "Transaction Code  
  43.        AWKEY LIKE BKPF-AWKEY,  "Reference Doc  
  44.        BSTAT LIKE BKPF-BSTAT,  "Document Status  
  45.        BKTXT LIKE BKPF-BKTXT,  " txt  
  46.        XBLNR LIKE BKPF-XBLNR,  " ref  
  47.        USNAM LIKE BKPF-USNAM,  " user name  
  48.       END OF T_BKPF.  
  49.   
  50. DATA: BEGIN OF T_BSEG OCCURS 0,  
  51.        BUKRS LIKE BSEG-BUKRS,  "CoCode  
  52.        BELNR LIKE BSEG-BELNR,  "FI Doc  
  53.        GJAHR LIKE BSEG-GJAHR,  "Fiscal Year  
  54.        BUZEI LIKE BSEG-BUZEI,  "Item  
  55.        SHKZG LIKE BSEG-SHKZG,  "Credit or Debit  
  56.        PSWSL LIKE BSEG-PSWSL,  "Cur  
  57.        DMBTR like BSEG-DMBTR,  "Local Amount  
  58.        PSWBT LIKE BSEG-PSWBT,  "Amount  
  59.        SAKNR LIKE BSEG-SAKNR,  "G/L Account Number  
  60.        HKONT LIKE BSEG-HKONT,  "General Ledger Account  
  61.        LIFNR LIKE BSEG-LIFNR,  "Account Number of Vendor or Creditor  
  62.        BSCHL LIKE BSEG-BSCHL,  "Posting Key  
  63.   
  64.        BLART LIKE BKPF-BLART,  "Doc Type  
  65.        BLDAT LIKE BKPF-BLDAT,  "Doc Date  
  66.        BUDAT LIKE BKPF-BUDAT,  "Posting Date  
  67.        TCODE LIKE BKPF-TCODE,  "Transaction Code  
  68.        AWKEY LIKE BKPF-AWKEY,  "Reference Doc  
  69.        BSTAT LIKE BKPF-BSTAT,  "Document status  
  70.        TXT20 LIKE SKAT-TXT20,  "G/L Acccount Name  
  71.        NAME1 LIKE LFA1-NAME1,  "Vendor Name  
  72.        PSWBT1 LIKE BSEG-PSWBT,  "Amount  
  73.        PSWBT2 LIKE BSEG-PSWBT,  "Amount  
  74.        BKTXT LIKE BKPF-BKTXT,  " txt  
  75.        XBLNR LIKE BKPF-XBLNR,  " ref  
  76.        USNAM LIKE BKPF-USNAM,  " user name  
  77.       END OF T_BSEG.  
  78.   
  79. DATA: BEGIN OF T_LFA1 OCCURS 0,  
  80.       LIFNR LIKE LFA1-LIFNR,  
  81.       NAME1 LIKE LFA1-NAME1,  
  82.      END OF T_LFA1.  
  83. DATA: BEGIN OF T_SKAT OCCURS 0,  
  84.       SAKNR LIKE SKAT-SAKNR,  
  85.       TXT20 LIKE SKAT-TXT20,  
  86.       END OF T_SKAT.  
  87. DATA W_LEN TYPE I.  
  88. *--------------------------------  
  89. * Selection Screen  
  90. *--------------------------------  
  91. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.  
  92. SELECT-OPTIONS:  
  93.   S_BUKRS FOR BKPF-BUKRS Default 5000,    "CoCode  
  94.   S_BELNR FOR BKPF-BELNR,                 "FI Doc  
  95.   S_GJAHR FOR BKPF-GJAHR Default 2008,    "Fiscal Year  
  96.   S_BLART FOR BKPF-BLART,                 "Doc Type  
  97.   S_BLDAT FOR BKPF-BLDAT,                 "Doc Date  
  98.   S_BUDAT FOR BKPF-BUDAT,                 "Posting Date  
  99.   S_USNAM FOR BKPF-USNAM.  
  100. SELECTION-SCREEN END OF BLOCK b1.  
  101.   
  102. *--------------------------------  
  103. * Initialization  
  104. *--------------------------------  
  105. INITIALIZATION.  
  106.   
  107. *--------------------------------  
  108. * At Selection Screen PBO  
  109. *--------------------------------  
  110. AT SELECTION-SCREEN OUTPUT.  
  111.   
  112. *--------------------------------  
  113. * Start of Selection  
  114. *--------------------------------  
  115. START-OF-SELECTION.  
  116.   PERFORM GET_BKPF.  
  117.   PERFORM CHECK_BKPF.  
  118.   PERFORM GET_BSEG.  
  119.   PERFORM Process_BSEG.  
  120.   PERFORM Events_build.  
  121.   PERFORM Layout_build.  
  122.   PERFORM Fields_bulid.  
  123.   PERFORM Display_data.  
  124.   
  125. END-OF-SELECTION.  
  126. *--------------------------------  
  127. * Top of Page  
  128. *--------------------------------  
  129. TOP-OF-PAGE.  
  130.   
  131. *--------------------------------  
  132. * At User Command  
  133. *--------------------------------  
  134. AT USER-COMMAND.  
  135. *--------------------------------  
  136. * At Line Selection  
  137. *--------------------------------  
  138. AT LINE-SELECTION.  
  139.   
  140. *&---------------------------------------------------------------------*  
  141. *&      Form  display_data  
  142. *&---------------------------------------------------------------------*  
  143. FORM display_data.  
  144.   
  145.   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'  
  146.    EXPORTING  
  147.      i_callback_user_command           = 'USER_COMMAND'           "用户触发事件  
  148. *    i_callback_pf_status_set          = 'PF_STATUS_SET'(001)     "调用用户事件和按钮事件  
  149.      i_callback_program                = w_repid                  "当前程序  
  150.      is_layout                         = i_layout                 "子函数layout_build填充的格式定义  
  151.      it_fieldcat                       = i_fieldcat_alv[]         "子函数fields填充的各列  
  152.      it_events                         = i_events[]  
  153.      i_save                            = 'A'                      "保存变式  
  154.     TABLES  
  155.       t_outtab                          = T_BSEG.  
  156.   
  157. ENDFORM.                    "display_data  
  158. *---------------------------------------------------------------------*  
  159. *       FORM user_command                                             *  
  160. *---------------------------------------------------------------------*  
  161. FORM USER_COMMAND  USING i_ucomm LIKE sy-ucomm  
  162.                            selfield TYPE slis_selfield.  
  163.   CASE i_ucomm.  
  164.     WHEN '&IC1'.  
  165.       CASE selfield-sel_tab_field.  
  166.         WHEN '1-BELNR'.  
  167.           SET PARAMETER ID 'BLN' FIELD selfield-value.  
  168.           SET PARAMETER ID 'BUK' FIELD T_BSEG-BUKRS.  
  169.           SET PARAMETER ID 'GJR' FIELD T_BSEG-GJAHR.  
  170.           CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.  
  171.       ENDCASE.  
  172.     WHEN OTHERS.  
  173.   ENDCASE.  
  174.   
  175. ENDFORM.                    "callback_ucomm  
  176.   
  177. *&---------------------------------------------------------------------*  
  178. *&      Form  GET_BKPF  
  179. *&---------------------------------------------------------------------*  
  180. *       text  
  181. *----------------------------------------------------------------------*  
  182. *  -->  p1        text  
  183. *  <--  p2        text  
  184. *----------------------------------------------------------------------*  
  185. FORM GET_BKPF .  
  186. *Get Data From BKPF  
  187.   SELECT BUKRS BELNR GJAHR BLART BLDAT BUDAT TCODE AWKEY BSTAT BKTXT XBLNR USNAM  
  188.   INTO TABLE T_BKPF  
  189.   FROM BKPF  
  190.   WHERE BUKRS IN S_BUKRS AND BELNR IN S_BELNR AND BLDAT IN S_BLDAT  
  191.         and GJAHR in S_GJAHR and BLART in S_BLART AND BUDAT IN S_BUDAT AND USNAM IN S_USNAM .  
  192. ENDFORM.                    " GET_BKPF  
  193. *&---------------------------------------------------------------------*  
  194. *&      Form  CHECK_BKPF  
  195. *&---------------------------------------------------------------------*  
  196. *       text  
  197. *----------------------------------------------------------------------*  
  198. *  -->  p1        text  
  199. *  <--  p2        text  
  200. *----------------------------------------------------------------------*  
  201. FORM CHECK_BKPF .  
  202.   IF T_BKPF[] IS INITIAL.  
  203.     MESSAGE I000(ZMsg) with '没找到对应的数据,请更改查询条件'.  
  204.     LEAVE LIST-PROCESSING.  
  205.   ENDIF.  
  206.   
  207. ENDFORM.                    " CHECK_BKPF  
  208. *&---------------------------------------------------------------------*  
  209. *&      Form  GET_BSEG  
  210. *&---------------------------------------------------------------------*  
  211. FORM GET_BSEG.  
  212. *Get Data From BSEG  
  213.   SELECT BUKRS BELNR GJAHR BUZEI SHKZG PSWSL DMBTR PSWBT SAKNR HKONT LIFNR BSCHL  
  214.   INTO CORRESPONDING FIELDS OF TABLE T_BSEG  
  215.   FROM BSEG  
  216.   FOR ALL ENTRIES IN T_BKPF  
  217.   WHERE BUKRS = T_BKPF-BUKRS AND BELNR = T_BKPF-BELNR AND GJAHR = T_BKPF-GJAHR.  
  218. *Get G/L Account name from skat  
  219.   SELECT SAKNR TXT20  
  220.   INTO TABLE T_SKAT  
  221.   FROM SKAT  
  222.   WHERE SPRAS = SY-LANGU AND KTOPL = 'INT'.  
  223. *Get  Vendor Info from LFA1  
  224.   SELECT LIFNR NAME1  
  225.   INTO TABLE T_LFA1  
  226.   FROM LFA1  
  227.   FOR ALL ENTRIES IN T_BSEG  
  228.   WHERE LIFNR = T_BSEG-LIFNR.  
  229. ENDFORM.                    "GET_BSEG  
  230. *&---------------------------------------------------------------------*  
  231. *&      Form  events_build  
  232. *&---------------------------------------------------------------------*  
  233. FORM events_build.  
  234.   
  235.   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'  
  236.     EXPORTING  
  237.       i_list_type = 0  
  238.     IMPORTING  
  239.       et_events   = i_events.  
  240.   
  241. *  READ TABLE i_events  WITH KEY name = 'TOP_OF_PAGE'  INTO w_events.  
  242. *  IF sy-subrc = 0.  
  243. *    MOVE 'ALV_TOP_OF_PAGE' TO w_events-form.  
  244. *    MODIFY i_events FROM w_events INDEX sy-tabix.  
  245. *  ENDIF.  
  246. *  
  247. *  READ TABLE i_events  WITH KEY name = 'END_OF_LIST'  INTO w_events.  
  248. *  IF sy-subrc = 0.  
  249. *    MOVE 'ALV_END_OF_LIST' TO w_events-form.  
  250. *    MODIFY i_events FROM w_events INDEX sy-tabix.  
  251. *  ENDIF.  
  252.   
  253.   READ TABLE i_events WITH KEY name = 'USER_COMMAND'   INTO w_events.  
  254.   IF sy-subrc = 0.  
  255.     MOVE 'USER_COMMAND' TO w_events-form.  
  256.     MODIFY i_events FROM w_events INDEX sy-tabix.  
  257.   ENDIF.  
  258.   
  259. ENDFORM.                    "events_build  
  260.   
  261. *&---------------------------------------------------------------------*  
  262. *&      Form  layout_build  
  263. *&---------------------------------------------------------------------*  
  264. FORM layout_build.  
  265. *  i_layout-detail_popup        = 'X'.    "弹出详细信息窗口  
  266. *  i-layout-no_vline            = 'X'.    "设置列间隔线  
  267.   i_layout-info_fieldname       = 'COLOR'.  "颜色值  
  268.   i_layout-colwidth_optimize    = 'X'.    "优化列宽选项  
  269.   i_layout-detail_initial_lines = 'X'.  
  270.   i_layout-detail_titlebar      = '凭证查询报表'.  
  271.   i_layout-no_colhead           =' '.  
  272.   w_repid = sy-repid.  
  273.   
  274. ENDFORM.                    "layout_build  
  275.   
  276.   
  277. *&---------------------------------------------------------------------*  
  278. *&      Form  Fields_Bulid  
  279. *&---------------------------------------------------------------------*  
  280. *       text  
  281. *----------------------------------------------------------------------*  
  282. *  -->  p1        text  
  283. *  <--  p2        text  
  284. *----------------------------------------------------------------------*  
  285. FORM fields_bulid .  
  286.   DATA tmp_pos TYPE i.  
  287.   REFRESH i_fieldcat_alv.  
  288.   CLEAR i_fieldcat.  
  289.   
  290.   tmp_pos = 1.  
  291.   i_fieldcat-col_pos = tmp_pos.  
  292.   i_fieldcat-fieldname = 'BLART'.  
  293.   i_fieldcat-seltext_l = '凭证类型'.  
  294.   i_fieldcat-key = 'X'.  
  295.   APPEND i_fieldcat TO i_fieldcat_alv.  
  296.   CLEAR i_fieldcat.  
  297.   
  298.   tmp_pos = tmp_pos + 1.  
  299.   i_fieldcat-col_pos = tmp_pos.  
  300.   i_fieldcat-fieldname = 'BUKRS'.  
  301.   i_fieldcat-seltext_l = '公司代码'.  
  302.   i_fieldcat-outputlen  = '15'.  
  303.   i_fieldcat-no_zero = 'X'.  
  304.   i_fieldcat-key = 'X'.  
  305.   APPEND i_fieldcat TO i_fieldcat_alv.  
  306.   CLEAR i_fieldcat.  
  307.   
  308.   tmp_pos = tmp_pos + 1.  
  309.   i_fieldcat-col_pos = tmp_pos.  
  310.   i_fieldcat-fieldname = 'BELNR'.  
  311.   i_fieldcat-seltext_l = '会计凭证号'.  
  312.   i_fieldcat-outputlen  = '10'.  
  313.   APPEND i_fieldcat TO i_fieldcat_alv.  
  314.   CLEAR i_fieldcat.  
  315.   
  316.   tmp_pos = tmp_pos + 1.  
  317.   i_fieldcat-col_pos = tmp_pos.  
  318.   i_fieldcat-fieldname = 'BLDAT'.  
  319.   i_fieldcat-seltext_l = '凭证日期'.  
  320.   APPEND i_fieldcat TO i_fieldcat_alv.  
  321.   CLEAR i_fieldcat.  
  322.   
  323.   tmp_pos = tmp_pos + 1.  
  324.   i_fieldcat-col_pos = tmp_pos.  
  325.   i_fieldcat-fieldname = 'BUDAT'.  
  326.   i_fieldcat-seltext_l = '过账日期'.  
  327.   APPEND i_fieldcat TO i_fieldcat_alv.  
  328.   CLEAR i_fieldcat.  
  329.   
  330.   tmp_pos = tmp_pos + 1.  
  331.   i_fieldcat-col_pos = tmp_pos.  
  332.   i_fieldcat-fieldname = 'GJAHR'.  
  333.   i_fieldcat-seltext_l = '年度'.  
  334.   APPEND i_fieldcat TO i_fieldcat_alv.  
  335.   CLEAR i_fieldcat.  
  336.   
  337.   tmp_pos = tmp_pos + 1.  
  338.   i_fieldcat-col_pos = tmp_pos.  
  339.   i_fieldcat-fieldname = 'BUZEI'.  
  340.   i_fieldcat-seltext_l = '项目'.  
  341.   APPEND i_fieldcat TO i_fieldcat_alv.  
  342.   CLEAR i_fieldcat.  
  343.   
  344.   
  345.   tmp_pos = tmp_pos + 1.  
  346.   i_fieldcat-col_pos = tmp_pos.  
  347.   i_fieldcat-fieldname = 'BSCHL'.  
  348.   i_fieldcat-seltext_l = 'PK'.  
  349.   APPEND i_fieldcat TO i_fieldcat_alv.  
  350.   CLEAR i_fieldcat.  
  351.   
  352.   tmp_pos = tmp_pos + 1.  
  353.   i_fieldcat-col_pos = tmp_pos.  
  354.   i_fieldcat-fieldname = 'SHKZG'.  
  355.   i_fieldcat-seltext_l = '借方/贷方'.  
  356.   i_fieldcat-no_out = 'X'.  
  357.   APPEND i_fieldcat TO i_fieldcat_alv.  
  358.   CLEAR i_fieldcat.  
  359.   
  360.   tmp_pos = tmp_pos + 1.  
  361.   i_fieldcat-col_pos = tmp_pos.  
  362.   i_fieldcat-fieldname = 'HKONT'.  
  363.   i_fieldcat-seltext_l = '科目'.  
  364.   i_fieldcat-No_Zero = 'X'.  
  365.   APPEND i_fieldcat TO i_fieldcat_alv.  
  366.   CLEAR i_fieldcat.  
  367.   
  368.   tmp_pos = tmp_pos + 1.  
  369.   i_fieldcat-col_pos = tmp_pos.  
  370.   i_fieldcat-fieldname = 'SAKNR'.  
  371.   i_fieldcat-seltext_l = '总帐科目'.  
  372.   i_fieldcat-No_Zero = 'X'.  
  373.   i_fieldcat-no_out = 'X'.  
  374.   APPEND i_fieldcat TO i_fieldcat_alv.  
  375.   CLEAR i_fieldcat.  
  376.   
  377.   tmp_pos = tmp_pos + 1.  
  378.   i_fieldcat-col_pos = tmp_pos.  
  379.   i_fieldcat-fieldname = 'TXT20'.  
  380.   i_fieldcat-seltext_l = '科目名'.  
  381.   APPEND i_fieldcat TO i_fieldcat_alv.  
  382.   CLEAR i_fieldcat.  
  383.   
  384.   tmp_pos = tmp_pos + 1.  
  385.   i_fieldcat-col_pos = tmp_pos.  
  386.   i_fieldcat-fieldname = 'LIFNR'.  
  387.   i_fieldcat-seltext_l = 'Vendor'.  
  388.   i_fieldcat-no_out = 'X'.  
  389.   APPEND i_fieldcat TO i_fieldcat_alv.  
  390.   CLEAR i_fieldcat.  
  391.   
  392.   tmp_pos = tmp_pos + 1.  
  393.   i_fieldcat-col_pos = tmp_pos.  
  394.   i_fieldcat-fieldname = 'NAME1'.  
  395.   i_fieldcat-seltext_l = '厂商名'.  
  396.   i_fieldcat-no_out = 'X'.  
  397.   APPEND i_fieldcat TO i_fieldcat_alv.  
  398.   CLEAR i_fieldcat.  
  399.   
  400.   tmp_pos = tmp_pos + 1.  
  401.   i_fieldcat-col_pos = tmp_pos.  
  402.   i_fieldcat-fieldname = 'PSWSL'.  
  403.   i_fieldcat-seltext_l = '币别'.  
  404.   APPEND i_fieldcat TO i_fieldcat_alv.  
  405.   CLEAR i_fieldcat.  
  406.   
  407.   tmp_pos = tmp_pos + 1.  
  408.   i_fieldcat-col_pos = tmp_pos.  
  409.   i_fieldcat-fieldname = 'PSWBT'.  
  410.   i_fieldcat-seltext_l = '金额'.  
  411.   APPEND i_fieldcat TO i_fieldcat_alv.  
  412.   CLEAR i_fieldcat.  
  413.   
  414.   tmp_pos = tmp_pos + 1.  
  415.   i_fieldcat-col_pos = tmp_pos.  
  416.   i_fieldcat-fieldname = 'DMBTR'.  
  417.   i_fieldcat-seltext_l = '本币金额'.  
  418.   APPEND i_fieldcat TO i_fieldcat_alv.  
  419.   CLEAR i_fieldcat.  
  420.   
  421.   tmp_pos = tmp_pos + 1.  
  422.   i_fieldcat-col_pos = tmp_pos.  
  423.   i_fieldcat-fieldname = 'AWKEY'.  
  424.   i_fieldcat-seltext_l = '原始凭证'.  
  425.   APPEND i_fieldcat TO i_fieldcat_alv.  
  426.   CLEAR i_fieldcat.  
  427.   
  428.   tmp_pos = tmp_pos + 1.  
  429.   i_fieldcat-col_pos = tmp_pos.  
  430.   i_fieldcat-fieldname = 'TCODE'.  
  431.   i_fieldcat-seltext_l = '原始凭证交易码'.  
  432.   APPEND i_fieldcat TO i_fieldcat_alv.  
  433.   CLEAR i_fieldcat.  
  434.   
  435.   tmp_pos = tmp_pos + 1.  
  436.   i_fieldcat-col_pos = tmp_pos.  
  437.   i_fieldcat-fieldname = 'BSTAT'.  
  438.   i_fieldcat-seltext_l = '凭证状态'.  
  439.   i_fieldcat-no_Out = 'X'.  
  440.   APPEND i_fieldcat TO i_fieldcat_alv.  
  441.   CLEAR i_fieldcat.  
  442.   
  443.   tmp_pos = tmp_pos + 1.  
  444.   i_fieldcat-col_pos = tmp_pos.  
  445.   i_fieldcat-fieldname = 'PSWBT1'.  
  446.   i_fieldcat-seltext_l = '借方发生额'.  
  447.   APPEND i_fieldcat TO i_fieldcat_alv.  
  448.   CLEAR i_fieldcat.  
  449.   
  450.   tmp_pos = tmp_pos + 1.  
  451.   i_fieldcat-col_pos = tmp_pos.  
  452.   i_fieldcat-fieldname = 'PSWBT2'.  
  453.   i_fieldcat-seltext_l = '贷方发生额'.  
  454.   APPEND i_fieldcat TO i_fieldcat_alv.  
  455.   CLEAR i_fieldcat.  
  456.   
  457.   tmp_pos = tmp_pos + 1.  
  458.   i_fieldcat-col_pos = tmp_pos.  
  459.   i_fieldcat-fieldname = 'BKTXT'.  
  460.   i_fieldcat-seltext_l = '文本'.  
  461.   APPEND i_fieldcat TO i_fieldcat_alv.  
  462.   CLEAR i_fieldcat.  
  463.   
  464.   tmp_pos = tmp_pos + 1.  
  465.   i_fieldcat-col_pos = tmp_pos.  
  466.   i_fieldcat-fieldname = 'XBLNR'.  
  467.   i_fieldcat-seltext_l = '参照'.  
  468.   APPEND i_fieldcat TO i_fieldcat_alv.  
  469.   CLEAR i_fieldcat.  
  470.   
  471.   tmp_pos = tmp_pos + 1.  
  472.   i_fieldcat-col_pos = tmp_pos.  
  473.   i_fieldcat-fieldname = 'USNAM'.  
  474.   i_fieldcat-seltext_l = '用户名'.  
  475.   APPEND i_fieldcat TO i_fieldcat_alv.  
  476.   CLEAR i_fieldcat.  
  477.   
  478.   
  479. ENDFORM.                    " Fields_Bulid  
  480. *&---------------------------------------------------------------------*  
  481. *&      Form  Process_BSEG  
  482. *&---------------------------------------------------------------------*  
  483. *       text  
  484. *----------------------------------------------------------------------*  
  485. *  -->  p1        text  
  486. *  <--  p2        text  
  487. *----------------------------------------------------------------------*  
  488. FORM process_BSEG .  
  489.   DATA l_loop LIKE sy-tabix.  
  490.   DATA L_LEN TYPE I.  
  491.   SORT T_BSEG BY BUKRS GJAHR BELNR.  
  492.   SORT T_BKPF BY BUKRS GJAHR BELNR.  
  493.   LOOP AT T_BSEG.  
  494.     L_LOOP = SY-TABIX.  
  495.     IF T_BSEG-SHKZG = 'H'.  
  496.       T_BSEG-DMBTR = T_BSEG-DMBTR * ( -1 ).  
  497.       T_BSEG-PSWBT = T_BSEG-PSWBT * ( -1 ).  
  498.       T_BSEG-PSWBT2 = T_BSEG-PSWBT * ( -1 ).  
  499.     ENDIF.  
  500.     IF T_BSEG-SHKZG = 'S'.  
  501.       T_BSEG-PSWBT1 = T_BSEG-PSWBT .  
  502.     ENDIF.  
  503. * Get G/L Account Name  
  504.     READ TABLE T_SKAT WITH KEY SAKNR = T_BSEG-HKONT BINARY SEARCH.  
  505.     IF SY-SUBRC = 0.  
  506.       T_BSEG-TXT20 = T_SKAT-TXT20.  
  507.     ENDIF.  
  508. * Get Vendor Name  
  509.     IF T_BSEG-SAKNR <> '' AND T_BSEG-LIFNR <> ''.  
  510.       T_BSEG-HKONT = T_BSEG-LIFNR.  
  511.       READ TABLE T_LFA1 WITH KEY LIFNR = T_BSEG-LIFNR BINARY SEARCH.  
  512.       IF SY-SUBRC = 0.  
  513.         T_BSEG-NAME1 = T_LFA1-NAME1.  
  514.         T_BSEG-TXT20 = T_LFA1-NAME1.  
  515.       ENDIF.  
  516.     ENDIF.  
  517. *Move Doc Header to Item  
  518.     READ TABLE T_BKPF WITH KEY BUKRS = T_BSEG-BUKRS GJAHR = T_BSEG-GJAHR  
  519.                                BELNR = T_BSEG-BELNR BINARY SEARCH.  
  520.     IF SY-SUBRC = 0.  
  521.       T_BSEG-BLART = T_BKPF-BLART .  
  522.       T_BSEG-BLDAT = T_BKPF-BLDAT .  
  523.       T_BSEG-BUDAT = T_BKPF-BUDAT .  
  524.       T_BSEG-TCODE = T_BKPF-TCODE .  
  525.       T_BSEG-AWKEY = T_BKPF-AWKEY .  
  526.       T_BSEG-BKTXT = T_BKPF-BKTXT .  
  527.       T_BSEG-XBLNR = T_BKPF-XBLNR .  
  528.       T_BSEG-USNAM = T_BKPF-USNAM .  
  529.     ENDIF.  
  530.     IF T_BSEG-AWKEY <>' '.  
  531.       W_LEN = STRLEN( T_BSEG-AWKEY ) .  
  532.       IF W_LEN = 10 OR W_LEN = 14 OR W_LEN = 18.  
  533.         T_BSEG-AWKEY = T_BSEG-AWKEY(10).  
  534.       ENDIF.  
  535.     ENDIF.  
  536.   
  537.     MODIFY T_BSEG.  
  538.     SY-TABIX = L_LOOP.  
  539.   ENDLOOP.  
  540. ENDFORM.                    " Process_BSEG  
*&---------------------------------------------------------------------*
*& 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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值