• SAP中方会计凭证打印解决方案


    中方会计凭证由于 编码格式 以及 科目对照关系 是无法直接使用SAP自带的凭证打印功能的,如下为客户开发的一个解决方案,供各位参考

    1).需要定制几个Table的结构 

    zc0000fit0009【科目对照表】

    2).

       1 REPORT  zc0000fir0013 NO STANDARD PAGE HEADING
       2                       LINE-COUNT 65
       3                       LINE-SIZE 80.
       4 *---------------------------------------------------------------------*
       5 *   TABLES
       6 *---------------------------------------------------------------------*
       7 TABLES: bkpf,zc0000fit0009.
       8 
       9 TYPE-POOLS: slis.
      10 
      11 *---------------------------------------------------------------------*
      12 *   Types (ty_)
      13 *---------------------------------------------------------------------*
      14 TYPES:
      15       BEGIN OF gty_bkpf,
      16         bukrs    TYPE bkpf-bukrs,    "Company Code
      17         belnr    TYPE bkpf-belnr,    "Accounting Document Number
      18         gjahr    TYPE bkpf-gjahr,    "Fiscal Year
      19         blart    TYPE bkpf-blart,    "document type
      20         budat    TYPE bkpf-budat,    "Payment time
      21         monat    TYPE bkpf-monat,    "Fiscal Period
      22         cpudt    TYPE bkpf-cpudt,    "Day Was Entered
      23         usnam    TYPE bkpf-usnam,    "User Name
      24 *start add alex han 20130604
      25         ppnam TYPE bkpf-ppnam,
      26 *end add alex han 20130604
      27         xblnr    TYPE bkpf-xblnr,    "Reference Document Number
      28         bktxt    TYPE bkpf-bktxt,    "Document Header Text
      29         waers    TYPE bkpf-waers,    "Currency Key
      30         kursf    TYPE bkpf-kursf,    "Exchange rate
      31       END OF gty_bkpf,
      32 
      33       BEGIN OF gty_bseg,
      34         bukrs    TYPE bkpf-bukrs,    "Company Code
      35         belnr    TYPE bkpf-belnr,    "Accounting Document Number
      36         gjahr    TYPE bkpf-gjahr,    "Fiscal Year
      37         buzei    TYPE bseg-buzei,    "Number of Line
      38         hkont    TYPE bseg-hkont,    "General Ledger Account
      39         kostl    TYPE bseg-kostl,    "Cost Center
      40         prctr    TYPE bseg-prctr,    "Profit Center
      41         wrbtr    TYPE bseg-wrbtr,    "Amount in Document Currency
      42         dmbtr    TYPE bseg-dmbtr,    "amount in local currency
      43         shkzg    TYPE bseg-shkzg,    "Debit/Credit Indicator
      44         zuonr    TYPE bseg-zuonr,    "Assignment Number
      45         sgtxt    TYPE bseg-sgtxt,    "Item Text
      46         lifnr    TYPE bseg-lifnr,    "vendor
      47         kunnr    TYPE bseg-kunnr,    "customer
      48         koart    TYPE bseg-koart,    "Account Type
      49         aufnr    TYPE bseg-aufnr,    "ORER
      50 *& Start of Insertion CR0158 by Davy on 2013/08/14
      51         fkber    TYPE bseg-fkber,    "function area
      52 *& End of Insertion CR0158 by Davy on 2013/08/14
      53       END OF gty_bseg,
      54 
      55       BEGIN OF gty_head,
      56         bukrs    TYPE bkpf-bukrs,    "Company Code
      57         belnr    TYPE bkpf-belnr,    "SAP Document Number
      58         gjahr    TYPE bkpf-gjahr,    "Fiscal Year
      59         budat    TYPE char30,        "posting date
      60         name1    TYPE comp_txt,          "company name
      61         prcnr    TYPE zc0000fit0009-prcnr,"PRC number
      62         prctp    TYPE zc0000fit0008-prctp,"PRC Doc.Type Name
      63         prctt    TYPE zc0000fit0008-prctt,"PRC Doc.Type Title
      64         acmgr    TYPE text10,            "Acc mgr
      65         dbchk    TYPE text10,            "double check
      66         usnam    TYPE bkpf-usnam,        "user name
      67         ppnam    TYPE bkpf-ppnam,
      68 *&  Begin of Modification CR00222 BY YE_S on 2013/12/02
      69         persnumber TYPE adrp-persnumber,  "人员编号
      70         name_first TYPE adrp-name_first,  "
      71         name_last  TYPE adrp-name_last,   "
      72 *&  End of Modification CR00222 BY YE_S on 2013/12/02
      73       END OF gty_head,
      74 
      75       BEGIN OF gty_item,
      76         bukrs    TYPE bkpf-bukrs,    "Company Code
      77         belnr    TYPE bkpf-belnr,    "Accounting Document Number
      78         gjahr    TYPE bkpf-gjahr,    "Fiscal Year
      79         hkont    TYPE bseg-hkont,    "General Ledger Account
      80         kostl    TYPE bseg-kostl,    "Cost Center
      81         lifnr    TYPE bseg-lifnr,    "vendor
      82         kunnr    TYPE bseg-kunnr,    "customer
      83         shkzg    TYPE bseg-shkzg,    "Debit/Credit Indicator
      84         xblnr    TYPE bkpf-xblnr,    "Reference Document Number #01
      85         bktxt    TYPE bkpf-bktxt,    "Document Header Text
      86         sgtxt    TYPE bseg-sgtxt,    "Item Text
      87         zuonr    TYPE bseg-zuonr,    "Assignment Number
      88         prctr    TYPE bseg-prctr,    "Profit Center  #01
      89         name1    TYPE zc0000fit0007-prcnm1,"PRC Name1 #02
      90         name2    TYPE ad_name2,       "PRC_Name2” + “CostCenter #03
      91         waers    TYPE bkpf-waers,    "Currency Key #04
      92         wrbtr    TYPE bseg-wrbtr,    "Amount in Document Currency #05
      93         dmbtr    TYPE bseg-dmbtr,    "amount in local currency #07/8
      94         kursf    TYPE bkpf-kursf,    "Exchange rate #06
      95       END OF gty_item,
      96 
      97     BEGIN OF gty_list,
      98         sel(1)   TYPE c,             "selection flag
      99         bukrs    TYPE bkpf-bukrs,    "Company Code
     100         belnr    TYPE bkpf-belnr,    "Accounting Document Number
     101         gjahr    TYPE bkpf-gjahr,    "Fiscal Year
     102         blart    TYPE bkpf-blart,    "document type
     103         budat    TYPE bkpf-budat,    "Payment time
     104         monat    TYPE bkpf-monat,    "Fiscal Period
     105         cpudt    TYPE bkpf-cpudt,    "Day Was Entered
     106         usnam    TYPE bkpf-usnam,    "User Name
     107 *start add by alex han 20130604
     108         ppnam    TYPE bkpf-ppnam,
     109 *end add by alex han 20130604
     110         xblnr    TYPE bkpf-xblnr,    "Reference Document Number
     111         bktxt    TYPE bkpf-bktxt,    "Document Header Text
     112         waers    TYPE bkpf-waers,    "Currency Key
     113         kursf    TYPE bkpf-kursf,    "Exchange rate
     114         prcnr    TYPE zc0000fit0009-prcnr,"PRC number
     115         prctp    TYPE zc0000fit0008-prctp,"PRC Doc.Type Name
     116         name1    TYPE comp_txt,          "company name
     117         pflag    TYPE char10,            "print flag
     118        END OF gty_list,
     119 *& Start of Insertion CR0000 by Zoey on 2014/08/25
     120        BEGIN OF gty_ska,
     121          saknr   TYPE ska1-saknr,
     122          xbilk   TYPE ska1-xbilk,
     123          txt50   TYPE skat-txt50,
     124        END OF gty_ska.
     125 *& End of Insertion CR0000 by Zoey on 2014/08/25
     126 
     127 *---------------------------------------------------------------------*
     128 *   Internal Tables (git_)
     129 *---------------------------------------------------------------------*
     130 DATA:
     131   git_t001   TYPE STANDARD TABLE OF t001 WITH HEADER LINE,  "#EC *
     132   git_bkpf   TYPE STANDARD TABLE OF gty_bkpf WITH HEADER LINE, "#EC *
     133   git_bseg   TYPE STANDARD TABLE OF gty_bseg WITH HEADER LINE, "#EC *
     134   git_list   TYPE STANDARD TABLE OF gty_list WITH HEADER LINE, "#EC *
     135   git_head   TYPE STANDARD TABLE OF gty_head WITH HEADER LINE, "#EC *
     136   git_item   TYPE STANDARD TABLE OF gty_item WITH HEADER LINE, "#EC *
     137   git_prcnm  TYPE STANDARD TABLE OF zc0000fit0007 WITH HEADER LINE,"#EC*
     138   git_prctp  TYPE STANDARD TABLE OF zc0000fit0008 WITH HEADER LINE,"#EC*
     139   git_prclg  TYPE STANDARD TABLE OF zc0000fit0009 WITH HEADER LINE,"#EC*
     140   git_upd09  TYPE STANDARD TABLE OF zc0000fit0009 WITH HEADER LINE,"#EC*
     141   git_header TYPE STANDARD TABLE OF gty_head WITH HEADER LINE, "#EC *
     142   git_detail TYPE STANDARD TABLE OF gty_item WITH HEADER LINE, "#EC *
     143 *& Start of Insertion CR0000 by Zoey on 2014/08/25
     144   git_ska    TYPE STANDARD TABLE OF gty_ska WITH HEADER LINE. "#EC *
     145 *& End of Insertion CR0000 by Zoey on 2014/08/25
     146 
     147 * ALV Related
     148 DATA: git_fieldcat  TYPE slis_t_fieldcat_alv,
     149       git_comments  TYPE slis_t_listheader,
     150       git_events    TYPE slis_t_event.
     151 
     152 * Work Area
     153 DATA: gwa_fieldcat  TYPE slis_fieldcat_alv.
     154 DATA: gwa_output    TYPE gty_list.
     155 *---------------------------------------------------------------------*
     156 *   Global Variables (gv_)
     157 *---------------------------------------------------------------------*
     158 DATA: g_repid TYPE sy-repid,    "PROGRAM
     159       g_amtup TYPE char100.
     160 
     161 *----------------------------------------------------------------------*
     162 ** Range Declaration
     163 *----------------------------------------------------------------------*
     164 RANGES: r_lifnr FOR ekko-lifnr,
     165         r_ebeln FOR ekko-ebeln.
     166 
     167 *---------------------------------------------------------------------*
     168 *   Constants (c_)
     169 *---------------------------------------------------------------------*
     170 CONSTANTS:
     171   c_e                TYPE char1          VALUE 'E',
     172   c_x                TYPE char1          VALUE 'X',
     173   c_perct            TYPE char1          VALUE '%',
     174   c_sign_i           TYPE char1          VALUE 'I',
     175   c_option_eq        TYPE char2          VALUE 'EQ',
     176   c_03               TYPE char2          VALUE '03',
     177   c_sel              TYPE field_name     VALUE 'SEL',
     178   c_bukrs            TYPE field_name     VALUE 'BUKRS',
     179   c_belnr            TYPE field_name     VALUE 'BELNR',
     180   c_gjahr            TYPE field_name     VALUE 'GJAHR',
     181   c_blart            TYPE field_name     VALUE 'BLART',
     182   c_budat            TYPE field_name     VALUE 'BUDAT',
     183   c_monat            TYPE field_name     VALUE 'MONAT',
     184   c_cpudt            TYPE field_name     VALUE 'CPUDT',
     185   c_usnam            TYPE field_name     VALUE 'USNAM',
     186 *START-ADD BY ALEX HAN20130604
     187    c_ppnam            TYPE field_name     VALUE 'PPNAM',
     188 *END-ADD BY ALEX HAN 20130604
     189   c_xblnr            TYPE field_name     VALUE 'XBLNR',
     190   c_bktxt            TYPE field_name     VALUE 'BKTXT',
     191   c_waers            TYPE field_name     VALUE 'WAERS',
     192   c_kursf            TYPE field_name     VALUE 'KURSF',
     193   c_prctp            TYPE field_name     VALUE 'PRCTP',
     194   c_prcnr            TYPE field_name     VALUE 'PRCNR',
     195   c_name1            TYPE field_name     VALUE 'NAME1',
     196   c_hkont            TYPE field_name     VALUE 'HKONT',
     197   c_kostl            TYPE field_name     VALUE 'KOSTL',
     198   c_prctr            TYPE field_name     VALUE 'PRCTR',
     199   c_wrbtr            TYPE field_name     VALUE 'WRBTR',
     200   c_dmbtr            TYPE field_name     VALUE 'DMBTR',
     201   c_zuonr            TYPE field_name     VALUE 'ZUONR',
     202   c_shkzg            TYPE field_name     VALUE 'SHKZG',
     203   c_sgtxt            TYPE field_name     VALUE 'SGTXT',
     204   c_pflag            TYPE field_name     VALUE 'PFLAG',
     205   c_save_all         TYPE c LENGTH 1     VALUE 'A',
     206   c_ddictxt_l        TYPE c LENGTH 1     VALUE 'L',
     207   c_ddictxt_m        TYPE c LENGTH 1     VALUE 'M',
     208   c_ddictxt_s        TYPE c LENGTH 1     VALUE 'S',
     209   c_formname         TYPE tdsfname       VALUE 'ZC0000FIS0001',
     210   c_pf_set           TYPE slis_formname  VALUE 'PF_STATUS_SET',
     211   c_user_command     TYPE slis_formname  VALUE 'USER_COMMAND_ALV',
     212 *& Start of Insertion CR0000 by Zoey on 2014/08/25
     213   c_a001             TYPE ktopl          VALUE 'A001',
     214   c_zh               TYPE spras          VALUE '1'.
     215 *& End of Insertion CR0000 by Zoey on 2014/08/25
     216 *---------------------------------------------------------------------*
     217 *   Macro
     218 *---------------------------------------------------------------------*
     219 DEFINE set_fc.
     220   clear gwa_fieldcat.
     221   gwa_fieldcat-tabname = 'GIT_REP'.
     222   gwa_fieldcat-fieldname   = &1.
     223   gwa_fieldcat-cfieldname  = &2.
     224   gwa_fieldcat-seltext_l   = &3.
     225   gwa_fieldcat-do_sum      = &4.
     226   gwa_fieldcat-ddictxt     = c_ddictxt_l.
     227   if  gwa_fieldcat-fieldname(5) = 'PERCT'.
     228     gwa_fieldcat-just = 'R'.
     229   endif.
     230   if gwa_fieldcat-fieldname = 'BUKRS' or
     231      gwa_fieldcat-fieldname = 'BELNR' or
     232      gwa_fieldcat-fieldname = 'GJAHR'.
     233     gwa_fieldcat-key = c_x.
     234   endif.
     235   append gwa_fieldcat to git_fieldcat.
     236 END-OF-DEFINITION.
     237 
     238 *---------------------------------------------------------------------*
     239 *   Selection screen data
     240 *       select-options (s_)
     241 *       parameters     (p_)
     242 *       radio buttons  (rb_)
     243 *       checkboxes     (cb_)
     244 *       pushbuttons    (pb_)
     245 *---------------------------------------------------------------------*
     246 SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-t01.
     247 SELECT-OPTIONS:
     248   s_bukrs FOR bkpf-bukrs OBLIGATORY,
     249   s_belnr FOR bkpf-belnr OBLIGATORY,
     250   s_prcnr FOR zc0000fit0009-prcnr,
     251   s_gjahr FOR bkpf-gjahr OBLIGATORY,
     252   s_blart FOR bkpf-blart OBLIGATORY,
     253   s_budat FOR bkpf-budat NO-EXTENSION OBLIGATORY,
     254   s_cpudt FOR bkpf-cpudt NO-EXTENSION ."NO INTERVALS
     255 *START-Modify by davy 2013/06/14
     256 SELECT-OPTIONS:
     257   s_usnam FOR bkpf-usnam NO-EXTENSION NO INTERVALS,
     258   s_ppnam FOR bkpf-ppnam NO-EXTENSION NO INTERVALS.
     259 *PARAMETERS:
     260 *  p_usnam  TYPE bkpf-usnam,
     261 *START-ADD BY ALEX 20130604
     262 *  p_ppnam  TYPE bkpf-ppnam .
     263 *END-ADD BY ALEX 20130604
     264 *START-Modify by davy 2013/06/14
     265 SELECTION-SCREEN END OF BLOCK blk1.
     266 
     267 SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-t02. "#EC *
     268 PARAMETERS:
     269   p_cmpnm  TYPE comp_txt OBLIGATORY,
     270   p_acmgr  TYPE text10,
     271   p_dbchk  TYPE text10.
     272 SELECTION-SCREEN END OF BLOCK blk2.
     273 
     274 *---------------------------------------------------------------------*
     275 *  Initialization
     276 *---------------------------------------------------------------------*
     277 INITIALIZATION.
     278   PERFORM init_data.
     279 
     280 *---------------------------------------------------------------------*
     281 *  AT SELECTION-SCREEN
     282 *---------------------------------------------------------------------*
     283 AT SELECTION-SCREEN.
     284   PERFORM check_data.
     285 
     286 *---------------------------------------------------------------------*
     287 *  TOP-OF-PAGE
     288 *---------------------------------------------------------------------*
     289 *TOP-OF-PAGE.
     290 
     291 ***********************************************************************
     292 *    START-OF-SELECTION PROCESSING                                    *
     293 ***********************************************************************
     294 START-OF-SELECTION.
     295 * get data from database tabl
     296   PERFORM get_data.
     297 *  process data in internal table
     298   PERFORM process_data.
     299 
     300 ***********************************************************************
     301 *    END-OF-SELECTION PROCESSING                                      *
     302 ***********************************************************************
     303 END-OF-SELECTION.
     304   IF NOT git_list[] IS INITIAL.
     305     IF sy-batch = c_x.
     306       PERFORM print_data_background.
     307     ELSE.
     308 *  output the final data
     309       PERFORM display_data.
     310     ENDIF.
     311   ELSE.
     312     MESSAGE s099(ba) DISPLAY LIKE c_e WITH text-m01..
     313   ENDIF.
     314 
     315 *&---------------------------------------------------------------------*
     316 *&      Form  INIT_DATA
     317 *&---------------------------------------------------------------------*
     318 *       text
     319 *----------------------------------------------------------------------*
     320 *  -->  p1        text
     321 *  <--  p2        text
     322 *----------------------------------------------------------------------*
     323 FORM init_data .
     324 
     325   g_repid = sy-repid.
     326 
     327   CLEAR: git_bkpf,git_bseg,git_list,git_head,git_item,
     328          git_prctp,git_prcnm,git_prclg.
     329 
     330   REFRESH: git_bkpf,git_bseg,git_list,git_head,git_item,
     331            git_prctp,git_prcnm,git_prclg.
     332 
     333 ENDFORM.                    " INIT_DATA
     334 
     335 *&---------------------------------------------------------------------*
     336 *&      Form  CHECK_DATA
     337 *&---------------------------------------------------------------------*
     338 *       text
     339 *----------------------------------------------------------------------*
     340 *  -->  p1        text
     341 *  <--  p2        text
     342 *----------------------------------------------------------------------*
     343 FORM check_data .
     344 * check the company code valid
     345   REFRESH git_t001.
     346   SELECT * FROM t001 INTO TABLE git_t001
     347    WHERE bukrs IN s_bukrs.
     348   IF sy-subrc <> 0.
     349     MESSAGE e006(zc001) WITH s_bukrs-low s_bukrs-high.
     350   ENDIF.
     351 
     352   LOOP AT git_t001.
     353     AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
     354               ID 'BUKRS' FIELD git_t001-bukrs
     355               ID 'ACTVT' FIELD '03'.
     356     IF sy-subrc <> 0.
     357       MESSAGE e099(ba) WITH text-m02.
     358     ENDIF.
     359   ENDLOOP.
     360 
     361 ENDFORM.                    " CHECK_DATA
     362 
     363 *&---------------------------------------------------------------------*
     364 *&      Form  GET_DATA
     365 *&---------------------------------------------------------------------*
     366 *       text
     367 *----------------------------------------------------------------------*
     368 *  -->  p1        text
     369 *  <--  p2        text
     370 *----------------------------------------------------------------------*
     371 FORM get_data .
     372 * Get voucher doucment header data
     373   SELECT
     374                bukrs        "Company Code
     375                belnr        "Accounting Document Number
     376                gjahr        "Fiscal Year
     377                blart        "document type
     378                budat        "posting date
     379                monat        "Fiscal Period
     380                cpudt        "Day Was Entered
     381                usnam        "User Name
     382 *START ADD ALEX HAN 20130604
     383                ppnam
     384 *END ADD ALEX HAN 20130604
     385                xblnr        "Reference Document Number
     386                bktxt        "Document Header Text
     387                waers        "Currency Key
     388                kursf        "Exchange rate
     389           FROM bkpf
     390           INTO TABLE git_bkpf
     391           WHERE bukrs IN s_bukrs
     392             AND belnr IN s_belnr
     393             AND gjahr IN s_gjahr
     394             AND blart IN s_blart
     395             AND budat IN s_budat
     396             AND cpudt IN s_cpudt
     397             AND usnam IN s_usnam
     398 *START-ADD BY ALEXHAN 20130604
     399             AND ppnam IN s_ppnam.
     400 *END-ADD BY ALEX HAN 20130604
     401 
     402   IF git_bkpf[] IS INITIAL.
     403     MESSAGE s099(ba) DISPLAY LIKE c_e WITH text-m01.
     404     STOP.
     405   ELSE.
     406 
     407     SELECT
     408           bukrs        "Company Code
     409           belnr        "Accounting Document Number
     410           gjahr        "Fiscal Year
     411           buzei        "Number of Line
     412           hkont        "General Ledger Account
     413           kostl        "Cost Center
     414           prctr        "Profit Center
     415           wrbtr        "Amount in Document Currency
     416           dmbtr        "amount in local currency
     417           shkzg        "Debit/Credit Indicator
     418           zuonr        "Assignment Number
     419           sgtxt        "Item Text
     420           lifnr        "vendor
     421           kunnr        "customer
     422           koart        "acct type
     423           aufnr        "ORDER
     424 *& Start of Insertion CR0158 by Davy on 2013/08/14
     425           fkber        "function area
     426 *& End of Insertion CR0158 by Davy on 2013/08/14
     427      FROM bseg INTO TABLE git_bseg
     428       FOR ALL ENTRIES IN git_bkpf
     429      WHERE bukrs = git_bkpf-bukrs
     430        AND belnr = git_bkpf-belnr
     431        AND gjahr = git_bkpf-gjahr.
     432 
     433   ENDIF.
     434 
     435 * get SAP account number and PRC number
     436   SELECT * INTO TABLE git_prcnm FROM zc0000fit0007
     437    WHERE hkont <> ''.
     438 
     439 * get Document type and PRC document type mapping table
     440   SELECT * INTO TABLE git_prctp FROM zc0000fit0008
     441    WHERE blart <> ''.
     442 
     443 * get PRC number
     444   SELECT * INTO TABLE git_prclg FROM zc0000fit0009
     445    WHERE bukrs IN s_bukrs
     446      AND belnr IN s_belnr
     447      AND gjahr IN s_gjahr.
     448 *     AND prcnr IN s_prcnr.
     449 *& Start of Insertion CR0000 by Zoey on 2014/08/25
     450   SELECT a~saknr a~xbilk b~txt50 INTO TABLE git_ska FROM ska1 AS a
     451     JOIN skat AS b ON a~saknr = b~saknr
     452     FOR ALL ENTRIES IN git_bseg
     453     WHERE  a~ktopl = c_a001
     454      AND   a~saknr = git_bseg-hkont
     455      AND   b~spras = c_zh.
     456 *& End of Insertion CR0000 by Zoey on 2014/08/25
     457 ENDFORM.                    " GET_DATA
     458 *&---------------------------------------------------------------------*
     459 *&      Form  PROCESS_DATA
     460 *&---------------------------------------------------------------------*
     461 *       text
     462 *----------------------------------------------------------------------*
     463 *  -->  p1        text
     464 *  <--  p2        text
     465 *----------------------------------------------------------------------*
     466 FORM process_data.
     467   DATA: l_amt      TYPE wertv8.
     468   DATA: l_func     TYPE csks-func_area.
     469   DATA: l_name1    TYPE kna1-name1.
     470   DATA: l_xbilk    TYPE ska1-xbilk.
     471   DATA: lit_item   TYPE STANDARD TABLE OF gty_item WITH HEADER LINE.
     472   DATA: lit_bseg   TYPE STANDARD TABLE OF gty_bseg WITH HEADER LINE.
     473   DATA: l_kostl    TYPE bseg-kostl,
     474         l_aufnr    TYPE bseg-aufnr.
     475 
     476 * collect the PRC Doc.Type Name and title
     477   SORT git_prctp BY blart.
     478   SORT git_prclg BY bukrs belnr gjahr.
     479   SORT git_t001 BY bukrs.
     480 
     481   LOOP AT git_bkpf.
     482     MOVE-CORRESPONDING git_bkpf TO git_list.
     483     READ TABLE git_prctp WITH KEY blart = git_bkpf-blart.
     484     IF sy-subrc = 0.
     485       git_list-prctp = git_prctp-prctp.
     486     ENDIF.
     487 
     488     git_list-name1 = p_cmpnm.
     489 
     490     IF git_list-name1 IS INITIAL.
     491       READ TABLE git_t001 WITH KEY bukrs = git_bkpf-bukrs
     492                                    BINARY SEARCH.
     493       IF sy-subrc = 0.
     494         git_list-name1 = git_t001-butxt.
     495       ENDIF.
     496     ENDIF.
     497 
     498     READ TABLE git_prclg WITH KEY bukrs = git_bkpf-bukrs
     499                                   belnr = git_bkpf-belnr
     500                                   gjahr = git_bkpf-gjahr.
     501     IF sy-subrc = 0.
     502       git_list-prcnr = git_prclg-prcnr.
     503       git_list-pflag = text-h17.
     504     ELSE.
     505 
     506       PERFORM set_next_prcno USING git_bkpf-bukrs
     507                                    git_bkpf-gjahr
     508                                    git_bkpf-monat
     509                           CHANGING git_list-prcnr.
     510       git_list-pflag = text-h18.
     511     ENDIF.
     512 
     513     READ TABLE git_t001 WITH KEY  bukrs = git_bkpf-bukrs.
     514     IF git_bkpf-waers <> git_t001-waers. " AND
     515       PERFORM convert_rate USING git_bkpf-waers git_bkpf-kursf
     516                           CHANGING git_list-kursf.
     517     ELSE.
     518       MOVE git_list-kursf TO git_list-kursf.
     519     ENDIF.
     520 
     521     APPEND git_list.
     522     CLEAR git_list.
     523   ENDLOOP.
     524 
     525 * for print header data
     526   LOOP AT git_list.
     527 
     528     MOVE-CORRESPONDING git_list TO git_head.
     529 
     530     CONCATENATE git_list-budat(4) text-t03 git_list-budat+4(2) text-t04
     531     git_list-budat+6(2) text-t05 INTO  git_head-budat.
     532 
     533     READ TABLE git_prctp WITH KEY blart = git_list-blart.
     534     IF sy-subrc = 0.
     535       git_head-prctt = git_prctp-prctt.
     536     ENDIF.
     537 
     538     git_head-acmgr = p_acmgr.
     539     git_head-dbchk = p_dbchk.
     540 
     541     APPEND git_head.
     542     CLEAR git_head.
     543   ENDLOOP.
     544 
     545   SORT git_bkpf BY bukrs belnr gjahr.
     546   SORT git_prcnm BY hkont kostl.
     547 *& Start of Insertion CR0000 by Zoey on 2014/08/25
     548   SORT git_ska   BY saknr.
     549 *& End of Insertion CR0000 by Zoey on 2014/08/25
     550   REFRESH lit_bseg.
     551   lit_bseg[] = git_bseg[].
     552 
     553   SORT lit_bseg BY bukrs belnr gjahr lifnr kunnr.
     554 
     555 *  collect voucher data for list
     556   LOOP AT git_bseg.
     557     MOVE-CORRESPONDING git_bseg TO git_item.
     558     READ TABLE git_bkpf WITH KEY bukrs = git_bseg-bukrs
     559                                  belnr = git_bseg-belnr
     560                                  gjahr = git_bseg-gjahr.
     561     IF sy-subrc = 0.
     562       MOVE:
     563         git_bkpf-xblnr TO git_item-xblnr,
     564         git_bkpf-bktxt TO git_item-bktxt,
     565         git_bkpf-waers TO git_item-waers.
     566       READ TABLE git_t001 WITH KEY  bukrs = git_bseg-bukrs.
     567       IF git_bkpf-waers <> git_t001-waers. " AND
     568         PERFORM convert_rate USING git_bkpf-waers git_bkpf-kursf
     569                             CHANGING git_item-kursf.
     570       ELSE.
     571         MOVE git_bkpf-kursf TO git_item-kursf.
     572       ENDIF.
     573 
     574       IF git_bkpf-waers = git_t001-waers.
     575         CLEAR git_item-wrbtr.
     576       ENDIF.
     577     ENDIF.
     578 
     579     READ TABLE git_prcnm WITH KEY hkont = git_bseg-hkont.
     580     IF sy-subrc = 0.
     581       IF git_prcnm-prccd1 = 'COSTCENTER'.
     582 *   first class account
     583         SELECT SINGLE func_area INTO l_func FROM csks
     584          WHERE kostl = git_bseg-kostl
     585            AND bukrs = git_bseg-bukrs.                      "#EC *
     586         IF sy-subrc = 0.
     587           SELECT SINGLE prcnm1 INTO git_item-name1
     588             FROM zc0000fit0010
     589             WHERE func_area = l_func.
     590         ENDIF.
     591 
     592         git_item-name2 = git_prcnm-prcnm2.
     593         IF NOT git_bseg-kostl IS INITIAL.
     594 *          CONCATENATE git_item-name2 git_bseg-kostl
     595 *                 INTO git_item-name2 SEPARATED BY space.
     596 *& Start of Insertion CR0158 by Davy on 2013/08/14
     597         ELSE.
     598           IF git_item-name1 IS INITIAL.
     599             SELECT SINGLE prcnm1 INTO git_item-name1
     600               FROM zc0000fit0010
     601               WHERE func_area = git_bseg-fkber.
     602           ENDIF.
     603 *& End of Insertion CR0158 by Davy on 2013/08/14
     604         ENDIF.
     605 *       interanl order
     606         IF NOT git_bseg-aufnr IS INITIAL.
     607           CLEAR l_aufnr.
     608           CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
     609             EXPORTING
     610               input  = git_bseg-aufnr
     611             IMPORTING
     612               output = l_aufnr.
     613           CONCATENATE git_item-name2 l_aufnr
     614                  INTO git_item-name2 SEPARATED BY space.
     615         ENDIF.
     616 
     617       ELSE.
     618         git_item-name1 = git_prcnm-prcnm1.
     619         git_item-name2 = git_prcnm-prcnm2.
     620 
     621         CLEAR l_name1.
     622 
     623         IF git_bseg-lifnr <> '' AND git_bseg-koart = 'K'.
     624           SELECT SINGLE name1 INTO l_name1 FROM lfa1
     625             WHERE lifnr = git_bseg-lifnr.
     626         ENDIF.
     627         IF git_bseg-kunnr <> '' AND git_bseg-koart = 'D'.
     628           SELECT SINGLE name1 INTO l_name1 FROM kna1
     629           WHERE kunnr = git_bseg-kunnr.
     630         ENDIF.
     631 
     632         IF NOT l_name1 IS INITIAL.
     633           CONCATENATE git_item-name2 '-' l_name1 INTO git_item-name2.
     634         ENDIF.
     635 
     636       ENDIF.
     637 *& Start of Insertion CR0000 by Zoey on 2014/08/25
     638 
     639     ELSE.
     640 
     641 *  If GL account XXXXXX is not maintained in mapping table
     642 *     ZC0000FIT0007
     643       READ TABLE git_ska WITH KEY saknr = git_bseg-hkont.
     644 *     Balance sheet account
     645       IF git_ska-xbilk IS NOT INITIAL.
     646         PERFORM frm_Balance.
     647 
     648       ELSE.
     649 *     Profit & Loss account
     650         PERFORM frm_Profit.
     651 
     652       ENDIF.
     653 *& End of Insertion CR0000 by Zoey on 2014/08/25
     654     ENDIF.
     655 
     656     APPEND git_item.
     657     CLEAR git_item.
     658   ENDLOOP.
     659 
     660   CLEAR l_amt.
     661   REFRESH lit_item.
     662   SORT git_item BY bukrs belnr gjahr hkont kostl.
     663   DATA: l_flag TYPE c.
     664   CLEAR l_flag.
     665 
     666   LOOP AT git_item.
     667 
     668     AT NEW shkzg.
     669       CLEAR l_flag.
     670     ENDAT.
     671 
     672     MOVE git_item-bukrs TO lit_item-bukrs .
     673     MOVE git_item-belnr TO lit_item-belnr .
     674     MOVE git_item-gjahr TO lit_item-gjahr .
     675     MOVE git_item-hkont TO lit_item-hkont .
     676     MOVE git_item-kostl TO lit_item-kostl .
     677     MOVE git_item-xblnr TO lit_item-xblnr .
     678 
     679     IF l_flag IS INITIAL.
     680       MOVE git_item-bktxt TO lit_item-bktxt .
     681       MOVE git_item-sgtxt TO lit_item-sgtxt .
     682       MOVE git_item-zuonr TO lit_item-zuonr .
     683     ENDIF.
     684 
     685     MOVE git_item-prctr TO lit_item-prctr .
     686     MOVE git_item-name1 TO lit_item-name1 .
     687     MOVE git_item-name2 TO lit_item-name2 .
     688     MOVE git_item-waers TO lit_item-waers .
     689     MOVE git_item-kursf TO lit_item-kursf .
     690     MOVE git_item-shkzg TO lit_item-shkzg .
     691     lit_item-dmbtr = lit_item-dmbtr  + git_item-dmbtr.
     692     lit_item-wrbtr = lit_item-wrbtr  + git_item-wrbtr.
     693 
     694     l_flag = c_x.
     695     AT END OF shkzg.
     696       APPEND lit_item.
     697       CLEAR lit_item.
     698     ENDAT.
     699 
     700   ENDLOOP.
     701 
     702   REFRESH git_item.
     703   git_item[] = lit_item[].
     704 
     705 ENDFORM.                    " PROCESS_DATA
     706 
     707 *&---------------------------------------------------------------------*
     708 *&      Form  DISPLAY_DATA
     709 *&---------------------------------------------------------------------*
     710 *       text
     711 *----------------------------------------------------------------------*
     712 *  -->  p1        text
     713 *  <--  p2        text
     714 *----------------------------------------------------------------------*
     715 FORM display_data .
     716 
     717 * Local Variable
     718   DATA: l_repid      TYPE sy-repid,
     719         l_prntparams TYPE slis_print_alv.
     720 * Local Work Area
     721   DATA: lwa_layout    TYPE slis_layout_alv,
     722         lwa_variant   TYPE disvariant.
     723 
     724 * Create ALV Field Catalog/Comment/Event
     725   PERFORM create_fieldcatalog.
     726   PERFORM alv_set_variant CHANGING lwa_variant.
     727 
     728 * Assign Program ID
     729   l_repid = sy-repid.
     730 * Layout
     731   lwa_layout-box_fieldname = 'SEL'.
     732   lwa_layout-zebra = c_x.
     733   lwa_layout-colwidth_optimize = c_x.
     734 
     735 * Call ALV
     736   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     737     EXPORTING
     738       i_callback_program       = g_repid
     739       i_callback_pf_status_set = c_pf_set
     740       i_callback_user_command  = c_user_command
     741       it_events                = git_events
     742       is_layout                = lwa_layout
     743       it_fieldcat              = git_fieldcat
     744       i_save                   = c_save_all
     745       is_print                 = l_prntparams
     746       is_variant               = lwa_variant
     747     TABLES
     748       t_outtab                 = git_list
     749     EXCEPTIONS
     750       program_error            = 1
     751       OTHERS                   = 2.                         "#EC *
     752 
     753 ENDFORM.                    " DISPLAY_DATA
     754 *&---------------------------------------------------------------------*
     755 *&      Form  CREATE_FIELDCATALOG
     756 *&---------------------------------------------------------------------*
     757 *       text
     758 *----------------------------------------------------------------------*
     759 *  -->  p1        text
     760 *  <--  p2        text
     761 *----------------------------------------------------------------------*
     762 FORM create_fieldcatalog .
     763 * Create Field Catalog
     764   DATA: lit_fieldcat  TYPE slis_t_fieldcat_alv.
     765 
     766   CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
     767    EXPORTING
     768       i_program_name               = g_repid
     769       i_internal_tabname           = 'GTY_LIST'
     770 *      i_client_never_display       = c_x
     771       i_inclname                   = g_repid
     772     CHANGING
     773       ct_fieldcat                  = lit_fieldcat
     774    EXCEPTIONS
     775      inconsistent_interface       = 1
     776      program_error                = 2
     777      OTHERS                       = 3
     778             .
     779   IF sy-subrc <> 0.
     780 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
     781 *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
     782   ENDIF.
     783 
     784   set_fc: c_bukrs    c_bukrs  text-h01 ''."Company Code
     785   set_fc: c_belnr    c_belnr  text-h02 ''."Accounting Document Number
     786   set_fc: c_gjahr    c_gjahr  text-h03 ''."Fiscal Year
     787   set_fc: c_blart    c_blart  text-h04 ''."document type
     788   set_fc: c_budat    ''  text-h05 ''."Payment time
     789   set_fc: c_monat    ''  text-h06 ''."Fiscal Period
     790   set_fc: c_cpudt    ''  text-h07 ''."Day Was Entered
     791   set_fc: c_usnam    ''  text-h08 ''."User Name
     792 *start-add by alex han 20130604
     793   set_fc: c_ppnam    ''  text-h19 ''."Parked BY
     794 *end-add by alex han 20130604
     795   set_fc: c_xblnr    ''  text-h09 ''."Reference Document Number
     796   set_fc: c_bktxt    ''  text-h10 ''."Document Header Text
     797   set_fc: c_waers    ''  text-h11 ''."Currency Key
     798   set_fc: c_kursf    ''  text-h12 ''."Exchange rate
     799   set_fc: c_prcnr    ''  text-h14 ''."PRC number
     800   set_fc: c_prctp    ''  text-h13 ''."PRC Doc.Type Name
     801   set_fc: c_name1    ''  text-h15 ''. "company name
     802   set_fc: c_pflag    ''  text-h16 ''. "company name
     803 
     804 ENDFORM.                    " CREATE_FIELDCATALOG
     805 *&---------------------------------------------------------------------*
     806 *&      Form  f_alv_set_variant
     807 *&---------------------------------------------------------------------*
     808 *       text
     809 *----------------------------------------------------------------------*
     810 *      -->P_LWA_VAR  text
     811 *----------------------------------------------------------------------*
     812 FORM alv_set_variant CHANGING p_lwa_var TYPE disvariant.
     813 
     814 * Assign Variant
     815   p_lwa_var-report      = sy-repid.
     816   p_lwa_var-handle      = space.
     817   p_lwa_var-log_group   = space.
     818   p_lwa_var-username    = sy-uname.
     819   p_lwa_var-variant     = space.
     820   p_lwa_var-text        = space.
     821   p_lwa_var-dependvars  = space.
     822 
     823 ENDFORM.                    " f_alv_set_variant
     824 
     825 *&---------------------------------------------------------------------*
     826 *&      Form  PF_STATUS_SET
     827 *&---------------------------------------------------------------------*
     828 *       text
     829 *----------------------------------------------------------------------*
     830 *  -->  p1        text
     831 *  <--  p2        text
     832 *----------------------------------------------------------------------*
     833 FORM pf_status_set USING pt_extab TYPE slis_t_extab.
     834   SET PF-STATUS 'PF_STATUS' EXCLUDING pt_extab.
     835 
     836 ENDFORM.                    " PF_STATUS_SET
     837 
     838 *&---------------------------------------------------------------------*
     839 *&  Form  f_user_command_alv
     840 *&---------------------------------------------------------------------*
     841 *   User Commnad From ALV Screen
     842 *----------------------------------------------------------------------*
     843 FORM user_command_alv USING r_ucomm     LIKE sy-ucomm
     844                             ps_selfield TYPE slis_selfield.
     845 ** Local Variable
     846   DATA: l_belnr TYPE bkpf-belnr,
     847         l_bukrs TYPE bkpf-bukrs,
     848         l_gjahr TYPE bkpf-gjahr.
     849   DATA: lo_grid TYPE REF TO cl_gui_alv_grid.
     850   CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
     851     IMPORTING
     852       e_grid = lo_grid.
     853   CALL METHOD lo_grid->check_changed_data.
     854 
     855 * Check User Command
     856   CASE r_ucomm.
     857     WHEN '&IC1'.  " Double Click
     858 **     Set Parameters
     859       CHECK ps_selfield-fieldname = c_belnr.
     860       l_belnr =  ps_selfield-value.
     861       READ TABLE git_list INDEX ps_selfield-tabindex.
     862       IF sy-subrc = 0.
     863         l_bukrs = git_list-bukrs.
     864         l_gjahr = git_list-gjahr.
     865       ENDIF.
     866 
     867       SET PARAMETER ID: 'BLN' FIELD l_belnr .
     868       SET PARAMETER ID: 'BUK' FIELD l_bukrs .
     869       SET PARAMETER ID: 'GJR' FIELD l_gjahr .
     870       CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
     871       CLEAR r_ucomm.
     872 
     873     WHEN 'PRNT' OR '&PRT'.
     874       READ TABLE git_list WITH KEY sel = c_x.
     875       IF sy-subrc = 0.
     876         PERFORM print_voucher USING c_x ''..
     877         ps_selfield-refresh = c_x.
     878       ELSE.
     879         MESSAGE s099(ba) DISPLAY LIKE 'E' WITH text-m04.
     880       ENDIF.
     881 
     882     WHEN OTHERS.
     883   ENDCASE.
     884 ENDFORM.                    " f_user_command_alv
     885 *&---------------------------------------------------------------------*
     886 *&      Form  PRINT_VOUCHER
     887 *&---------------------------------------------------------------------*
     888 *       text
     889 *----------------------------------------------------------------------*
     890 *      -->P_C_X  text
     891 *      -->P_0891   text
     892 *----------------------------------------------------------------------*
     893 FORM print_voucher  USING    pu_preview TYPE tdpreview
     894                              pu_tdimmed TYPE tdimmed.
     895   DATA: lv_fm_name       TYPE rs38l_fnam,
     896         lv_ldest         TYPE usr01-spld,
     897         lwa_controlpara  TYPE ssfctrlop,
     898         lwa_output       TYPE ssfcompop.
     899   DATA:
     900 *& Start of Insertion CR00158 by Davy on 2013/08/06
     901         ls_ssfcresop     TYPE ssfcresop,
     902 *& End of Insertion CR00158 by Davy on 2013/08/06
     903         ls_ssfcrescl     TYPE ssfcrescl,
     904         ls_ssfctrlop     TYPE ssfctrlop,
     905         ls_ssfcompop     TYPE ssfcompop.
     906 
     907   DATA: ls_output_info    TYPE  ssfcrescl,
     908         ls_output_options TYPE  ssfcresop.
     909 
     910   CLEAR lv_ldest.
     911   SELECT SINGLE spld FROM usr01 INTO lv_ldest
     912    WHERE bname = sy-uname.
     913 
     914   lwa_controlpara-langu  = sy-langu.
     915   lwa_controlpara-no_dialog  = c_x.
     916   lwa_controlpara-device = 'PRINTER'.
     917   lwa_output-tddest      = lv_ldest.
     918   lwa_controlpara-preview = pu_preview.
     919   lwa_output-tdimmed = pu_tdimmed.
     920 
     921 *Get Smartform Function Name
     922   CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
     923     EXPORTING
     924       formname           = c_formname
     925     IMPORTING
     926       fm_name            = lv_fm_name
     927     EXCEPTIONS
     928       no_form            = 1
     929       no_function_module = 2
     930       OTHERS             = 3.
     931 
     932   IF sy-subrc <> 0.
     933     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
     934     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
     935     RETURN.
     936   ENDIF.
     937 
     938 *--->Setup output options berfore call smartforms
     939   ls_ssfctrlop-device = 'PRINTER'.
     940   ls_ssfctrlop-preview = c_x.
     941   ls_ssfctrlop-langu = sy-langu.
     942   ls_ssfcompop-tddest = lv_ldest.                           "'LO01'.
     943   ls_ssfcompop-tdimmed = c_x.
     944   ls_ssfcompop-tdnewid = c_x.
     945 
     946 *Open spool
     947 *& Start of Insertion CR00158 by Davy on 2013/08/06
     948   CLEAR ls_ssfcresop.
     949 *& End of Insertion CR00158 by Davy on 2013/08/06
     950   CALL FUNCTION 'SSF_OPEN'
     951     EXPORTING
     952       control_parameters = ls_ssfctrlop
     953       output_options     = ls_ssfcompop
     954       user_settings      = ' '
     955 *& Start of Insertion CR00158 by Davy on 2013/08/06
     956             IMPORTING
     957        job_output_options = ls_ssfcresop  "add importing parameters
     958 *& End of Insertion CR00158 by Davy on 2013/08/06
     959     EXCEPTIONS
     960       formatting_error   = 1
     961       internal_error     = 2
     962       send_error         = 3
     963       user_canceled      = 4.
     964   CHECK sy-subrc = 0.
     965 
     966 *--->Call Smartforms by Function Mode Name
     967   CLEAR ls_ssfctrlop.
     968   ls_ssfctrlop-no_open = c_x.
     969   ls_ssfctrlop-no_close = c_x.
     970 
     971   LOOP AT git_list WHERE sel = c_x.
     972 
     973     REFRESH git_header.
     974     REFRESH git_detail.
     975     git_header[] = git_head[].
     976     git_detail[] = git_item[].
     977 
     978     DELETE git_header WHERE bukrs <> git_list-bukrs.
     979     DELETE git_header WHERE belnr <> git_list-belnr.
     980     DELETE git_header WHERE gjahr <> git_list-gjahr.
     981 
     982     DELETE git_detail WHERE bukrs <> git_list-bukrs.
     983     DELETE git_detail WHERE belnr <> git_list-belnr.
     984     DELETE git_detail WHERE gjahr <> git_list-gjahr.
     985 
     986 *& Start of Insertion CR00158 by Davy on 2013/08/06
     987 * Reset prc number
     988     IF ls_ssfcresop-tdpreview IS INITIAL. "Print mode
     989       PERFORM update_prc_log.
     990     ENDIF.
     991 *& End of Insertion CR00158 by Davy on 2013/08/06
     992 
     993     CLEAR: ls_output_info,ls_output_options.
     994 *Open Smartforms
     995     CALL FUNCTION lv_fm_name
     996       EXPORTING
     997         control_parameters = ls_ssfctrlop "lwa_controlpara
     998         output_options     = lwa_output
     999         user_settings      = ''
    1000         im_report          = sy-repid
    1001       IMPORTING
    1002         job_output_info    = ls_output_info
    1003         job_output_options = ls_output_options
    1004       EXCEPTIONS
    1005         formatting_error   = 1
    1006         internal_error     = 2
    1007         send_error         = 3
    1008         user_canceled      = 4
    1009         OTHERS             = 5.
    1010     IF sy-subrc <> 0.
    1011       MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    1012       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    1013       RETURN.
    1014     ENDIF.
    1015 
    1016 *& Start of Deletion CR00158 by Davy on 2013/08/06
    1017 *    PERFORM update_prc_log.
    1018 *& End of Deletion CR00158 by Davy on 2013/08/06
    1019 
    1020   ENDLOOP.
    1021 
    1022 *Close spool
    1023   CALL FUNCTION 'SSF_CLOSE'
    1024     IMPORTING
    1025       job_output_info = ls_ssfcrescl.
    1026 
    1027 
    1028   IF NOT ls_ssfcrescl-spoolids[] IS INITIAL OR
    1029      ls_ssfcrescl-outputdone <> ''.
    1030     PERFORM modify_table TABLES git_upd09.
    1031 *    MODIFY zc0000fit0009 FROM TABLE git_upd09.
    1032 *    IF sy-subrc = 0.
    1033 *      COMMIT WORK.
    1034 *    ELSE.
    1035 *      ROLLBACK WORK.
    1036 *      MESSAGE s099(ba) DISPLAY LIKE c_e WITH text-m03.
    1037 *    ENDIF.
    1038 
    1039     git_list-pflag = text-h17.
    1040     MODIFY git_list TRANSPORTING pflag WHERE sel = c_x.
    1041 
    1042   ENDIF.
    1043 
    1044   REFRESH git_upd09.
    1045 
    1046 ENDFORM.                    " PRINT_VOUCHER
    1047 *&---------------------------------------------------------------------*
    1048 *&      Form  UPDATE_PRC_LOG
    1049 *&---------------------------------------------------------------------*
    1050 *       text
    1051 *----------------------------------------------------------------------*
    1052 *  -->  p1        text
    1053 *  <--  p2        text
    1054 *----------------------------------------------------------------------*
    1055 FORM update_prc_log .
    1056   DATA: lv_seq    TYPE txnum.
    1057   DATA: lv_prcnr  TYPE zc0000fit0009-prcnr.
    1058   DATA: lwa_prclg TYPE zc0000fit0009.
    1059   DATA: lit_list  TYPE STANDARD TABLE OF zc0000fit0009 WITH HEADER LINE.
    1060 *& Start of Insertion CR00158 by Davy on 2013/08/06
    1061   DATA: lwa_header TYPE gty_head.
    1062 *& End of Insertion CR00158 by Davy on 2013/08/06
    1063 
    1064   SELECT SINGLE * INTO lwa_prclg FROM zc0000fit0009
    1065   WHERE bukrs = git_list-bukrs
    1066     AND belnr = git_list-belnr
    1067     AND gjahr = git_list-gjahr.
    1068   CHECK sy-subrc <> 0.
    1069 
    1070   CLEAR: lv_seq,lv_prcnr.
    1071   REFRESH lit_list.
    1072   lit_list[] = git_upd09[].
    1073   DELETE lit_list WHERE bukrs <> git_list-bukrs.
    1074   DELETE lit_list WHERE gjahr <> git_list-gjahr.
    1075   DELETE lit_list WHERE monat <> git_list-monat.
    1076   SORT lit_list BY prcnr DESCENDING.
    1077 
    1078   READ TABLE lit_list INDEX 1.
    1079   IF sy-subrc = 0 AND lit_list-prcnr <> ''.
    1080     lv_seq  = lit_list-prcnr+6(5).
    1081 
    1082   ELSE.
    1083 
    1084     SELECT MAX( prcnr ) INTO lv_prcnr FROM zc0000fit0009
    1085     WHERE bukrs = git_list-bukrs
    1086       AND gjahr = git_list-gjahr
    1087       AND monat = git_list-monat.
    1088     IF sy-subrc = 0.
    1089       lv_seq  = lv_prcnr+6(5).
    1090     ENDIF.
    1091 
    1092   ENDIF.
    1093 
    1094   lv_seq = lv_seq + 1.
    1095   CLEAR lv_prcnr.
    1096 
    1097   CONCATENATE git_list-gjahr git_list-monat lv_seq INTO lv_prcnr.
    1098   lwa_prclg-prcnr = lv_prcnr.
    1099   lwa_prclg-bukrs = git_list-bukrs.
    1100   lwa_prclg-belnr = git_list-belnr.
    1101   lwa_prclg-gjahr = git_list-gjahr.
    1102   lwa_prclg-monat = git_list-monat.
    1103 
    1104 *& Start of Insertion CR00158 by Davy on 2013/08/06
    1105 * Reset the PRC number
    1106   lwa_header-prcnr = lv_prcnr.
    1107   MODIFY git_header FROM lwa_header TRANSPORTING prcnr
    1108    WHERE bukrs = git_list-bukrs
    1109      AND belnr = git_list-belnr
    1110      AND gjahr = git_list-gjahr.
    1111 *& End of Insertion CR00158 by Davy on 2013/08/06
    1112 
    1113   APPEND lwa_prclg TO git_upd09.
    1114   CLEAR lwa_prclg.
    1115 
    1116 ENDFORM.                    " UPDATE_PRC_LOG
    1117 *&---------------------------------------------------------------------*
    1118 *&      Form  CONV_AMOUNT
    1119 *&---------------------------------------------------------------------*
    1120 *       text
    1121 *----------------------------------------------------------------------*
    1122 *      -->P_VA1  text
    1123 *      <--P_STR  text
    1124 *----------------------------------------------------------------------*
    1125 FORM conv_amount USING value(pv_source)
    1126                  CHANGING value(pv_result).
    1127   DATA: scr(30) TYPE c, res(60) TYPE c,fen(2) TYPE c .
    1128   DATA: len TYPE i, c1 TYPE i, c2 TYPE i, c3 TYPE i, c4 TYPE i.
    1129   DATA: d1(1) TYPE c, d2(1) TYPE c, d3 TYPE i.
    1130   DATA: digit(2) TYPE c, weight(2) TYPE c.
    1131   DATA: leroy(4) TYPE c VALUE '零元'.
    1132   DATA: lfen(2)  TYPE c VALUE ''.
    1133   DATA: lint(2)  TYPE c VALUE ''.
    1134   DATA: rule1(20) TYPE c VALUE '零壹贰叁肆伍陆柒捌玖'.
    1135   DATA: rule2(30) TYPE c VALUE '分角元拾佰仟万拾佰仟亿拾佰仟万'.
    1136   scr = pv_source * 100.
    1137   CONDENSE scr NO-GAPS.
    1138   IF scr = '0'.
    1139     res = leroy. "'零元'.
    1140   ELSE.
    1141     len = STRLEN( scr ).
    1142     c1 = 0.
    1143     d1 = '0'.
    1144     CLEAR res.
    1145     DO len TIMES.
    1146       c1 = c1 + 1.
    1147       c2 = len - c1.
    1148       d2 = scr+c2(1) .
    1149       IF d2 = '0'.
    1150         d3 = 0.
    1151       ELSE.
    1152         d3 = d2.
    1153       ENDIF.
    1154       digit = rule1+d3(1) .
    1155       c3 = ( c1 - 1 ) .
    1156       weight = rule2+c3(1) .
    1157       IF d2 = '0'.
    1158         IF c1 = 3.
    1159           digit = ''.
    1160         ELSEIF c1 = 7.
    1161           digit = ''.
    1162           IF len > 10 .
    1163             c4 = len - 10.
    1164             IF scr+c4(4) = '0000'.
    1165               weight = ''.
    1166             ENDIF.
    1167           ENDIF.
    1168         ELSEIF c1 = 11.
    1169           digit = ''.
    1170         ELSEIF d1 = '0'.
    1171           digit = ''.
    1172           weight = ''.
    1173         ELSE.
    1174           weight = ''.
    1175         ENDIF.
    1176       ENDIF.
    1177       CONCATENATE digit weight res INTO res .
    1178       d1 = d2.
    1179     ENDDO.
    1180   ENDIF.
    1181   len = STRLEN( res ) - 1.
    1182   fen = res+len(1).
    1183   IF fen <> lfen. "'分' .
    1184     CONCATENATE res lint  INTO pv_result."'整'
    1185   ELSE.
    1186     pv_result = res.
    1187   ENDIF.
    1188 ENDFORM.                    " CONV_AMOUNT
    1189 *&---------------------------------------------------------------------*
    1190 *&      Form  SET_NEXT_PRCNO
    1191 *&---------------------------------------------------------------------*
    1192 *       text
    1193 *----------------------------------------------------------------------*
    1194 *      -->P_GIT_BKPF_BUKRS  text
    1195 *      -->P_GIT_BKPF_GJAHR  text
    1196 *      -->P_GIT_BKPF_MONAT  text
    1197 *      <--P_GIT_LIST_PRCNR  text
    1198 *----------------------------------------------------------------------*
    1199 FORM set_next_prcno  USING    p_git_bkpf_bukrs
    1200                               p_git_bkpf_gjahr
    1201                               p_git_bkpf_monat
    1202                      CHANGING p_git_list_prcnr.
    1203 
    1204   DATA: lv_seq    TYPE txnum.
    1205   DATA: lv_prcnr  TYPE zc0000fit0009-prcnr.
    1206   DATA: lit_list  TYPE STANDARD TABLE OF gty_list WITH HEADER LINE.
    1207 
    1208   CLEAR p_git_list_prcnr.
    1209   CLEAR: lv_seq,lv_prcnr.
    1210   REFRESH lit_list.
    1211 
    1212   lit_list[] = git_list[].
    1213   DELETE lit_list WHERE bukrs <> p_git_bkpf_bukrs.
    1214   DELETE lit_list WHERE gjahr <> p_git_bkpf_gjahr.
    1215   DELETE lit_list WHERE monat <> p_git_bkpf_monat.
    1216   SORT lit_list BY prcnr DESCENDING.
    1217 
    1218 * read table git_prclg2 with key bukrs = p_git_bkpf_bukrs
    1219 *                                gjahr = p_git_bkpf_gjahr
    1220 *                                monat = p_git_bkpf_monat.
    1221 
    1222   READ TABLE lit_list INDEX 1.
    1223   IF sy-subrc = 0 AND lit_list-prcnr <> ''.
    1224     lv_seq  = lit_list-prcnr+6(5).
    1225 
    1226   ELSE.
    1227 
    1228     SELECT MAX( prcnr ) INTO lv_prcnr FROM zc0000fit0009
    1229     WHERE bukrs = p_git_bkpf_bukrs
    1230       AND gjahr = p_git_bkpf_gjahr
    1231       AND monat = p_git_bkpf_monat.
    1232     IF sy-subrc = 0.
    1233       lv_seq  = lv_prcnr+6(5).
    1234     ENDIF.
    1235 
    1236   ENDIF.
    1237 
    1238   lv_seq = lv_seq + 1.
    1239   CLEAR lv_prcnr.
    1240 
    1241   CONCATENATE p_git_bkpf_gjahr p_git_bkpf_monat lv_seq INTO lv_prcnr.
    1242   p_git_list_prcnr = lv_prcnr.
    1243 
    1244 ENDFORM.                    " SET_NEXT_PRCNO
    1245 *&---------------------------------------------------------------------*
    1246 *&      Form  PF_SMART_GET_DATA
    1247 *&---------------------------------------------------------------------*
    1248 *       text
    1249 *----------------------------------------------------------------------*
    1250 *      -->P_IM_HEADER  text
    1251 *      -->P_IM_DETAIL  text
    1252 *----------------------------------------------------------------------*
    1253 *&---------------------------------------------------------------------*
    1254 *&      Form  pf_smart_get_data
    1255 *&---------------------------------------------------------------------*
    1256 FORM pf_smart_get_data TABLES im_header im_detail.
    1257   im_header[] = git_header[].
    1258 *  im_detail[] = git_detail[].
    1259   LOOP AT git_detail.
    1260     MOVE-CORRESPONDING git_detail TO im_detail.
    1261     APPEND im_detail.
    1262     CLEAR im_detail.
    1263   ENDLOOP.
    1264 ENDFORM.                    "pf_smart_get_data
    1265 *&---------------------------------------------------------------------*
    1266 *&      Form  PRINT_DATA_BACKGROUND
    1267 *&---------------------------------------------------------------------*
    1268 *       text
    1269 *----------------------------------------------------------------------*
    1270 *  -->  p1        text
    1271 *  <--  p2        text
    1272 *----------------------------------------------------------------------*
    1273 FORM print_data_background .
    1274   DATA: lv_fm_name      TYPE rs38l_fnam,
    1275         lv_ldest        TYPE usr01-spld,
    1276         lwa_controlpara TYPE ssfctrlop,
    1277         lwa_output      TYPE ssfcompop.
    1278   DATA:
    1279           ls_ssfcrescl TYPE ssfcrescl,
    1280           ls_ssfctrlop TYPE ssfctrlop,
    1281           ls_ssfcompop TYPE ssfcompop.
    1282 
    1283   CLEAR lv_ldest.
    1284   SELECT SINGLE spld FROM usr01 INTO lv_ldest
    1285    WHERE bname = sy-uname.
    1286 
    1287   lwa_controlpara-langu  = sy-langu.
    1288   lwa_controlpara-no_dialog  = c_x.
    1289   lwa_controlpara-device = 'PRINTER'.
    1290   lwa_output-tddest      = lv_ldest.
    1291   lwa_controlpara-preview = ''.
    1292   lwa_output-tdimmed = c_x.
    1293   lwa_controlpara-no_dialog = c_x.
    1294 
    1295 *Get Smartform Function Name
    1296   CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    1297     EXPORTING
    1298       formname           = c_formname
    1299     IMPORTING
    1300       fm_name            = lv_fm_name
    1301     EXCEPTIONS
    1302       no_form            = 1
    1303       no_function_module = 2
    1304       OTHERS             = 3.
    1305 
    1306   IF sy-subrc <> 0.
    1307     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    1308     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    1309     RETURN.
    1310   ENDIF.
    1311 
    1312 *--->Setup output options berfore call smartforms
    1313   ls_ssfctrlop-device = 'PRINTER'.
    1314   ls_ssfctrlop-preview = c_x.
    1315   ls_ssfctrlop-langu = sy-langu.
    1316   ls_ssfcompop-tddest = lv_ldest.                           "'LO01'.
    1317   ls_ssfcompop-tdimmed = c_x.
    1318   ls_ssfcompop-tdnewid = c_x.
    1319   ls_ssfcompop-tdnoprev = c_x.
    1320 
    1321 *Open spool
    1322   CALL FUNCTION 'SSF_OPEN'
    1323     EXPORTING
    1324       control_parameters = ls_ssfctrlop
    1325       output_options     = ls_ssfcompop
    1326       user_settings      = ' '
    1327     EXCEPTIONS
    1328       formatting_error   = 1
    1329       internal_error     = 2
    1330       send_error         = 3
    1331       user_canceled      = 4.
    1332   CHECK sy-subrc = 0.
    1333 
    1334 *--->Call Smartforms by Function Mode Name
    1335   CLEAR ls_ssfctrlop.
    1336   ls_ssfctrlop-no_open = c_x.
    1337   ls_ssfctrlop-no_close = c_x.
    1338 
    1339   LOOP AT git_list.
    1340 
    1341     REFRESH git_header.
    1342     REFRESH git_detail.
    1343     git_header[] = git_head[].
    1344     git_detail[] = git_item[].
    1345 
    1346     DELETE git_header WHERE bukrs <> git_list-bukrs.
    1347     DELETE git_header WHERE belnr <> git_list-belnr.
    1348     DELETE git_header WHERE gjahr <> git_list-gjahr.
    1349 
    1350     DELETE git_detail WHERE bukrs <> git_list-bukrs.
    1351     DELETE git_detail WHERE belnr <> git_list-belnr.
    1352     DELETE git_detail WHERE gjahr <> git_list-gjahr.
    1353 
    1354 *Open Smartforms
    1355     CALL FUNCTION lv_fm_name
    1356       EXPORTING
    1357         control_parameters = ls_ssfctrlop "lwa_controlpara
    1358         output_options     = lwa_output
    1359         user_settings      = ''
    1360         im_report          = sy-repid
    1361       EXCEPTIONS
    1362         formatting_error   = 1
    1363         internal_error     = 2
    1364         send_error         = 3
    1365         user_canceled      = 4
    1366         OTHERS             = 5.
    1367     IF sy-subrc <> 0.
    1368       MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    1369       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    1370       RETURN.
    1371     ENDIF.
    1372 
    1373     PERFORM update_prc_log.
    1374   ENDLOOP.
    1375 
    1376 *Close spool
    1377   CALL FUNCTION 'SSF_CLOSE'
    1378     IMPORTING
    1379       job_output_info = ls_ssfcrescl.
    1380 
    1381   IF NOT ls_ssfcrescl-spoolids[] IS INITIAL OR
    1382      ls_ssfcrescl-outputdone <> ''.
    1383     PERFORM modify_table TABLES git_upd09.
    1384 *    MODIFY zc0000fit0009 FROM TABLE git_upd09.
    1385 *    IF sy-subrc = 0.
    1386 *      COMMIT WORK.
    1387 *    ELSE.
    1388 *      ROLLBACK WORK.
    1389 *      MESSAGE s099(ba) DISPLAY LIKE c_e WITH text-m03.
    1390 *    ENDIF.
    1391   ENDIF.
    1392 
    1393   REFRESH git_upd09.
    1394 
    1395 ENDFORM.                    " PRINT_DATA_BACKGROUND
    1396 *&---------------------------------------------------------------------*
    1397 *&      Form  CONVERT_RATE
    1398 *&---------------------------------------------------------------------*
    1399 *       text
    1400 *----------------------------------------------------------------------*
    1401 *      -->P_GIT_BKPF_WAERS  text
    1402 *      <--P_GIT_ITEM_KURSF  text
    1403 *----------------------------------------------------------------------*
    1404 FORM convert_rate  USING    p_git_bkpf_waers p_git_bkpf_kursf
    1405                    CHANGING p_git_item_kursf.
    1406 
    1407   DATA: v_amount(16) TYPE p DECIMALS 6.
    1408 
    1409   v_amount = p_git_bkpf_kursf.
    1410 
    1411   TABLES: tcurx.
    1412 
    1413   SELECT SINGLE * FROM tcurx WHERE currkey = p_git_bkpf_waers.
    1414   IF sy-subrc = 0.
    1415     v_amount = v_amount * 10 ** ( tcurx-currdec - 2 ).
    1416   ENDIF.
    1417 
    1418   p_git_item_kursf = v_amount.
    1419 
    1420 ENDFORM.                    " CONVERT_RATE
    1421 *&---------------------------------------------------------------------*
    1422 *&      Form  MODIFY_TABLE
    1423 *&---------------------------------------------------------------------*
    1424 *       text
    1425 *----------------------------------------------------------------------*
    1426 *      -->P_GIT_UPD09  text
    1427 *----------------------------------------------------------------------*
    1428 FORM modify_table  TABLES   p_git_upd09 STRUCTURE zc0000fit0009.
    1429   "Insert correct name for <...>.
    1430   DATA: wa_upd09 TYPE zc0000fit0009.
    1431 
    1432   CHECK NOT p_git_upd09[] IS INITIAL.
    1433 
    1434   LOOP AT p_git_upd09 INTO wa_upd09.
    1435 
    1436     CALL FUNCTION 'ENQUEUE_EZ_ZC0000FIT0009'
    1437       EXPORTING
    1438         mode_zc0000fit0009 = 'X'
    1439         mandt              = sy-mandt
    1440         bukrs              = wa_upd09-bukrs
    1441         belnr              = wa_upd09-belnr
    1442         gjahr              = wa_upd09-gjahr
    1443       EXCEPTIONS
    1444         foreign_lock       = 1
    1445         system_failure     = 2
    1446         OTHERS             = 3.
    1447     IF sy-subrc <> 0.
    1448       MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    1449               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    1450     ENDIF.
    1451 
    1452     MODIFY zc0000fit0009 FROM wa_upd09.
    1453     IF sy-subrc = 0.
    1454       COMMIT WORK.
    1455     ELSE.
    1456       ROLLBACK WORK.
    1457       MESSAGE s099(ba) DISPLAY LIKE c_e WITH text-m03.
    1458     ENDIF.
    1459 
    1460     CALL FUNCTION 'DEQUEUE_EZ_ZC0000FIT0009'
    1461       EXPORTING
    1462         mode_zc0000fit0009 = 'X'
    1463         mandt              = sy-mandt
    1464         bukrs              = wa_upd09-bukrs
    1465         belnr              = wa_upd09-belnr
    1466         gjahr              = wa_upd09-gjahr.
    1467 
    1468   ENDLOOP.
    1469 
    1470 ENDFORM.                    " MODIFY_TABLE
    1471 *&---------------------------------------------------------------------*
    1472 *&      Form  FRM_BALANCE
    1473 *&---------------------------------------------------------------------*
    1474 *       text
    1475 *----------------------------------------------------------------------*
    1476 *  -->  p1        text
    1477 *  <--  p2        text
    1478 *----------------------------------------------------------------------*
    1479 form FRM_BALANCE .
    1480   DATA: l_func     TYPE csks-func_area.
    1481   DATA: l_name1    TYPE kna1-name1.
    1482   SPLIT git_ska-txt50 AT '-' INTO git_item-name1 git_item-name2.
    1483   IF git_bseg-lifnr <> '' AND git_bseg-koart = 'K'.
    1484     SELECT SINGLE name1 INTO l_name1 FROM lfa1
    1485       WHERE lifnr = git_bseg-lifnr.
    1486   ENDIF.
    1487   IF git_bseg-kunnr <> '' AND git_bseg-koart = 'D'.
    1488     SELECT SINGLE name1 INTO l_name1 FROM kna1
    1489     WHERE kunnr = git_bseg-kunnr.
    1490   ENDIF.
    1491 
    1492   IF NOT l_name1 IS INITIAL.
    1493     CONCATENATE git_item-name2 '-' l_name1 INTO git_item-name2.
    1494   ENDIF.
    1495 endform.                    " FRM_BALANCE
    1496 *&---------------------------------------------------------------------*
    1497 *&      Form  FRM_PROFIT
    1498 *&---------------------------------------------------------------------*
    1499 *       text
    1500 *----------------------------------------------------------------------*
    1501 *  -->  p1        text
    1502 *  <--  p2        text
    1503 *----------------------------------------------------------------------*
    1504 form FRM_PROFIT .
    1505   DATA: l_func     TYPE csks-func_area.
    1506   DATA: l_name1    TYPE kna1-name1,
    1507         l_aufnr    TYPE bseg-aufnr.
    1508 * first class account
    1509   SELECT SINGLE func_area INTO l_func FROM csks
    1510    WHERE kostl = git_bseg-kostl
    1511      AND bukrs = git_bseg-bukrs.                      "#EC *
    1512   IF sy-subrc = 0.
    1513     SELECT SINGLE prcnm1 INTO git_item-name1
    1514       FROM zc0000fit0010
    1515       WHERE func_area = l_func.
    1516   ENDIF.
    1517   git_item-name2 = git_ska-txt50.
    1518 * interanl order
    1519   IF NOT git_bseg-aufnr IS INITIAL.
    1520     CLEAR l_aufnr.
    1521     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    1522       EXPORTING
    1523         input  = git_bseg-aufnr
    1524       IMPORTING
    1525         output = l_aufnr.
    1526     CONCATENATE git_item-name2 l_aufnr
    1527            INTO git_item-name2 SEPARATED BY space.
    1528 
    1529   ENDIF.
    1530 endform.                    " FRM_PROFIT
  • 相关阅读:
    异步编程(二)----------------多线程
    异步编程(一)
    爬虫笔记(四)--基于bs4
    统计某学校考研录取信息
    爬虫笔记(三)爬取‘糗事百科’热图板块所有图
    Day1登录接口编写
    元祖
    列表
    常用函数
    字符串
  • 原文地址:https://www.cnblogs.com/SlashOut/p/4997025.html
Copyright © 2020-2023  润新知