ABAP Program for Trade Partner Statement

download ABAP Program for Trade Partner Statement

of 18

description

ABAP Program for Trade Partner Statement

Transcript of ABAP Program for Trade Partner Statement

************************************************************************* PROGRAM : ZCUST_LEDGER* Description : The report prints trade partners summary************************************************************************Report ZCUST_LEDGER no standard page heading line-size 132 Line-count 90 MESSAGE-ID ZMSG.tables : bsid, " Accounting: Secondary index for customers bsad, " acct: secondary index for cust (cleared items) bkpf, " Accounting document header bseg, " Accounting document segment kna1, " General Data in Customer Master vbrp, " Billing: Item Data mara, " material master tspa, " Organizational Unit: Sales Divis stxh, " STXD SAPscript text file header tgsb, " Business Areas tgsbt, " Business Areas text t001, " Company code master table t003t, " Document type text vbak, " Sales document header skat, " G/L Acc Master Table skb1,tspat, " G/L Acc Planning level Table vbfa,bsis ,t001w,knvv,tvkbt, t074t.data: v_debits like bseg-dmbtr,v_credits like bseg-dmbtr, v_balance like bseg-dmbtr, v_bal like bseg-dmbtr.data: rv_debits like bseg-dmbtr,rv_credits like bseg-dmbtr.ranges r_bschl for bseg-bschl.ranges r_post_key for bseg-bschl.ranges r_blart for bkpf-blart.data : begin of ibkpf occurs 0, belnr like bkpf-belnr, blart like bkpf-blart, budat like bkpf-budat, xblnr like bkpf-xblnr, zbelnr like bkpf-belnr, end of ibkpf.data v_qty like vbrp-fkimg.data $count like sy-index.data v_p_name(40).data v_desc(50).data : name like thead-tdname.clear v_desc.data: spl_gl_amount like bsad-dmbtr.data: spl_gl_amount_na like bsad-dmbtr.data: spl_gl_date like sy-datum.data : begin of header1 occurs 0. include structure thead.data : end of header1.data : begin of line1 occurs 0. include structure tline.data : end of line1.data : begin of line2 occurs 0. include structure tline.data : end of line2.************************************************************************* SELECTION SCREEN************************************************************************selection-screen skip.selection-screen begin of block b1 with frame title text-001.select-options : s_kunnr for kna1-kunnr memory id kun, av_vkbur for knvv-vkbur, s_vtweg for knvv-vtweg.select-options p_budat for bkpf-bldat obligatory default sy-datumno-extension.parameters : p_bukrs like bsid-bukrs obligatory memory id buk, p_gjahr like bsad-gjahr obligatory memory id gjr.parameters : o_po_txt radiobutton group radi default 'X', po_txt radiobutton group radi, inv_text radiobutton group radi.selection-screen end of block b1 .data s_date like sy-datum.data: v_header(60),v_sdate(10),v_edate(10).data : begin of ikna1 occurs 0, kunnr like kna1-kunnr, name1 like kna1-name1, vkbur like knvv-vkbur, vtweg like knvv-vtweg, bezei like tvkbt-bezei, end of ikna1.data begin of db_s_bal occurs 0. include structure bapi3007_a.data end of db_s_bal .data begin of return occurs 0. include structure bapireturn.data end of return.data : v_monat like bkpf-monat,v_index like sy-tabix.data: begin of ar_items occurs 0. include structure bapi3007_2.data: end of ar_items.data: begin of ar_items1 occurs 0. include structure bapi3007_2.data: end of ar_items1.data: begin of ar_items_splgl occurs 0. include structure bapi3007_2.data: end of ar_items_splgl.data : begin of p_data occurs 0, name1 like kna1-name1, kunnr like kna1-kunnr, doc_date like bapi3007_2-doc_date, doc_no like bapi3007_2-doc_no, doc_type like bapi3007_2-doc_type , desc(50), qty like vbrp-fkimg , amount like bseg-dmbtr, bal like bseg-dmbtr, item_text like bapi3007_2-item_text, end of p_data.data cnt(4).data: begin of dtab occurs 0, bukrs like bkpf-bukrs, kunnr like kna1-kunnr , name1 like kna1-name1 , vkbur like knvv-vkbur, vtweg like knvv-vtweg, bezei like tvkbt-bezei, open_bal like bapi3007_2-lc_amount, debits like bapi3007_2-lc_amount, credits like bapi3007_2-lc_amount, clos_bal like bapi3007_2-lc_amount, others like bapi3007_2-lc_amount, splgl like bapi3007_2-lc_amount, end of dtab.data:ctr type i , ctr1 type i , rv_bal like p_data-bal, " RUNNING BALANCE rcrdt like p_data-amount, " RUNNING CREDITS rdebt like p_data-amount. " RUNNING DEBITSdata year1 like bseg-gjahr.data: key_date like sy-datum.data: begin of key_bal occurs 0. include structure bapi3007_3.data: end of key_bal.data: zvamt like bseg-dmbtr.data: begin of xperiod1, gjahr like bkpf-gjahr, monat like bkpf-monat, end of xperiod1.*----------------------------------------------------------------------** initialization.*----------------------------------------------------------------------*initialization. if p_budat-high is initial . loop at p_budat. p_budat-low+6(2) = 01. p_budat-high = sy-datum. modify p_budat. endloop. endif.*----------------------------------------------------------------------** top-of-page.*----------------------------------------------------------------------*top-of-page. perform print_header.*----------------------------------------------------------------------** at selection-screen .*----------------------------------------------------------------------*at selection-screen .perform au_check_vkbur. if p_budat-high is initial . loop at p_budat. p_budat-high = p_budat-low. modify p_budat. endloop. endif. perform get_customers. if p_budat-low+6(2) ne '01'. message e015 with 'From date should be first day of the month'. endif. call function 'FI_PERIOD_DETERMINE' exporting i_budat = p_budat-low i_bukrs = 'PWPL' i_periv = 'PL' importing e_gjahr = xperiod1-gjahr e_monat = xperiod1-monat. if xperiod1-gjahr ne p_gjahr. message e015 with 'Incorrect Fiscal Year'. endif. call function 'FI_PERIOD_DETERMINE' exporting i_budat = p_budat-high i_bukrs = 'PWPL' i_periv = 'PL' importing e_gjahr = xperiod1-gjahr e_monat = xperiod1-monat. if xperiod1-gjahr ne p_gjahr. message e015 with 'To date should be under fiscal year'. endif.*----------------------------------------------------------------------** start-of-selection.*----------------------------------------------------------------------*start-of-selection. perform print_parameters. key_date = p_budat-low - 1. refresh dtab. s_date = p_budat-low. s_date+6(2) = 01. spl_gl_date = s_date - 1. perform fill_r_bschl. perform fill_r_post_key. perform get_cust_period_balances. loop at dtab. write: / dtab-vkbur,dtab-bezei. uline. format color col_key intensified on. write :/ dtab-kunnr,12(35) dtab-name1,50 dtab-vkbur,55 dtab-bezei, 75 dtab-vtweg, 78 text-015, s_date, (16) dtab-open_bal under text-009 decimals 2. format color col_normal intensified off. perform get_print_tp_ledger. perform print_tp_ledger using ''. perform print_total. perform print_spl_gl. refresh ar_items_splgl.clear ar_items_splgl. format color col_key intensified on. write:/ 'Other Transactions',64 text-015, s_date, (16) dtab-splgl under text-009 decimals 2. perform print_tp_ledger using 'X'. perform print_splgl_total. clear spl_gl_amount_na. at end of kunnr. clear spl_gl_amount_na. new-page. endat. endloop.*----------------------------------------------------------------------** at line-selection.*----------------------------------------------------------------------*at line-selection. perform display_doc.*&---------------------------------------------------------------------**& Form GET_CUST_PERIOD_BALANCES*&---------------------------------------------------------------------*form get_cust_period_balances. refresh key_bal. loop at ikna1. call function 'BAPI_AR_ACC_GETKEYDATEBALANCE' exporting companycode = p_bukrs customer = ikna1-kunnr keydate = key_date balancespgli = 'X' importing return = return tables keybalance = key_bal. check sy-subrc = 0. v_monat = p_budat-low+4(2) - 1. read table key_bal with key sp_gl_ind = 'A'. if sy-subrc eq 0. spl_gl_amount = key_bal-lc_bal. endif. read table key_bal with key sp_gl_ind = 'X'. if sy-subrc eq 0. spl_gl_amount_na = key_bal-lc_bal. endif. loop at key_bal where sp_gl_ind ne 'A' and sp_gl_ind ne 'X'. dtab-open_bal = dtab-open_bal + key_bal-lc_bal. endloop. dtab-open_bal = dtab-open_bal + spl_gl_amount. dtab-kunnr = ikna1-kunnr. dtab-name1 = ikna1-name1. dtab-vkbur = ikna1-vkbur. dtab-vtweg = ikna1-vtweg. dtab-bezei = ikna1-bezei. dtab-bukrs = p_bukrs. dtab-splgl = spl_gl_amount_na. append dtab. refresh key_bal. clear dtab. clear spl_gl_amount. clear spl_gl_amount_na. endloop. clear spl_gl_amount.endform. " GET_CUST_PERIOD_BALANCES*&---------------------------------------------------------------------**& Form GET_CUSTOMERS*&---------------------------------------------------------------------*form get_customers. refresh ikna1. clear: ikna1,$count. select kunnr name1 into (ikna1-kunnr,ikna1-name1) from kna1 where kunnr in s_kunnr. check sy-subrc = 0. select single kunnr vkbur vtweg into (ikna1-kunnr,ikna1-vkbur,ikna1-vtweg) from knvv where kunnr = ikna1-kunnr and vkbur in av_vkbur and vtweg in s_vtweg. check sy-subrc = 0. select single * from tvkbt where spras eq 'EN' and vkbur eq ikna1-vkbur. move tvkbt-bezei to ikna1-bezei. append ikna1. clear ikna1. endselect. sort ikna1 by kunnr. describe table ikna1 lines $count. if $count = 0. message e015 with 'No data found ' 'For given Customers'. endif.endform. " GET_CUSTOMERS*&---------------------------------------------------------------------**& Form PRINT_HEADER*&---------------------------------------------------------------------*form print_header. set left scroll-boundary column 32. data : ps_dat like bkpf-budat. ps_dat = p_budat-low. ps_dat+6(2) = 01. write ps_dat to v_sdate dd/mm/yyyy. write p_budat-high to v_edate dd/mm/yyyy. concatenate text-002 v_sdate ' TO ' v_edate into v_header separated by space . select single * from t001w. " where werks = '0001'. write at /50 'ABC Company Ltd.' centered. write at /48 'NEW DELHI, New Delhi'. skip. write :/'DEALER LEDGER ',v_header,115 'Page ',sy-pagno. skip. uline. write :/ text-003,12 text-004, 16 text-005,29 text-006, 50 text-010 centered,72 text-008 centered, 92 text-007 centered,110 text-009 centered. uline.endform. " PRINT_HEADER*&---------------------------------------------------------------------**& Form PRINT_TOTAL*&---------------------------------------------------------------------*form print_total. format color col_total intensified off. uline. clear: v_debits, v_credits,v_qty,v_balance.endform. " PRINT_TOTAL*&---------------------------------------------------------------------**& Form FILL_R_BSCHL*&---------------------------------------------------------------------*form fill_r_bschl. r_bschl-low = '15'. r_bschl-option = 'EQ'. r_bschl-sign = 'I'. append r_bschl. r_bschl-low = '17'. r_bschl-option = 'EQ'. r_bschl-sign = 'I'. append r_bschl. r_bschl-low = '08'. r_bschl-option = 'EQ'. r_bschl-sign = 'I'. append r_bschl. r_bschl-low = '18'. r_bschl-option = 'EQ'. r_bschl-sign = 'I'. append r_bschl.endform. " FILL_R_BSCHL*&---------------------------------------------------------------------**& Form FILL_R_POST_KEY*&---------------------------------------------------------------------*form fill_r_post_key. r_post_key-low = '06'. r_post_key-option = 'EQ'. r_post_key-sign = 'I'. append r_post_key. r_post_key-low = '09A'. r_post_key-option = 'EQ'. r_post_key-sign = 'I'. append r_post_key. r_post_key-low = '16'. r_post_key-option = 'EQ'. r_post_key-sign = 'I'. append r_post_key. r_post_key-low = '08'. r_post_key-option = 'EQ'. r_post_key-sign = 'I'. append r_post_key.endform. " FILL_R_POST_KEY*&---------------------------------------------------------------------**& Form DISPLAY_DOC*&---------------------------------------------------------------------*form display_doc. data : cursorfld(40) , cursorval(10) . get cursor field cursorfld value cursorval . if cursorfld = 'AR_ITEMS-DOC_NO' or cursorfld = 'P_DATA-DOC_NO'. set parameter id 'BLN' field cursorval. set parameter id 'BUK' field p_bukrs. set parameter id 'GJR' field p_gjahr. call transaction 'FB03' and skip first screen. endif.endform. " DISPLAY_DOC*&---------------------------------------------------------------------**& Form PRINT_QTY*&---------------------------------------------------------------------*form print_qty. select single vbeln into :bseg-vbeln from bseg where bukrs = p_bukrs and belnr = ar_items-doc_no and buzei = ar_items-item_num and gjahr = p_gjahr . select sum( fkimg ) into :vbrp-fkimg from vbrp where vbeln = :bseg-vbeln. write :vbrp-fkimg under text-010 no-zero decimals 2. p_data-qty = :vbrp-fkimg . v_qty = v_qty + :vbrp-fkimg.endform. " PRINT_QTY*&---------------------------------------------------------------------**& Form PRINT_TP_LEDGER*&---------------------------------------------------------------------*form print_tp_ledger using flag. loop at p_data where doc_type eq 'AB' and desc eq ' '. select single * from bseg where bukrs = p_bukrs and belnr = p_data-doc_no and gjahr = p_gjahr and koart ne 'D'. if sy-subrc = 0. select single * from skat where spras eq 'EN' and ktopl eq 'IN01' and saknr eq bseg-hkont. if sy-subrc = 0. p_data-desc = skat-txt20. modify p_data. endif. endif. endloop. sort p_data by doc_date doc_no desc. if flag = 'X'. rv_bal = dtab-splgl. else. rv_bal = dtab-open_bal. " RUNNING BALANCE endif. loop at p_data where doc_no ne space and kunnr = dtab-kunnr and amount ne 0. ctr1 = ( ctr mod 2 ) . if ctr1 = 0 . format color col_normal intensified . else. format color col_normal intensified off. endif. write :/ p_data-doc_date under text-003, p_data-doc_no under text-005 hotspot on, p_data-doc_type under text-004. write:(40) p_data-desc under text-006 . if p_data-doc_type = 'DZ' or p_data-doc_type = 'PD'. perform read_other_line_items. ctr = ctr + 1. else. if p_data-amount > 0. rdebt = p_data-amount. p_data-amount = abs( p_data-amount ). write:(16) p_data-amount under text-008 decimals 2. else. rcrdt = p_data-amount. p_data-amount = abs( p_data-amount ). write:(16) p_data-amount under text-007 decimals 2. endif. rv_bal = rv_bal - abs( rcrdt ) + abs( rdebt ). p_data-bal = rv_bal. write:(16) p_data-bal under text-009 decimals 2. clear: rcrdt,rdebt. ctr = ctr + 1. endif. endloop. clear : rv_bal,rdebt,rcrdt.endform. " PRINT_TP_LEDGER*&---------------------------------------------------------------------**& Form READ_OTHER_LINE_ITEMS*&---------------------------------------------------------------------*form read_other_line_items. if ctr1 = 0 . format color col_normal intensified . else. format color col_normal intensified off. endif. select * from bseg where bukrs = p_bukrs and belnr = p_data-doc_no and gjahr = p_gjahr and koart ne 'D'. " and kunnr = p_data-kunnr. check sy-subrc = 0. if bseg-shkzg = 'H'. "debits rdebt = bseg-dmbtr. bseg-dmbtr = abs( bseg-dmbtr ). write:(16) bseg-dmbtr under text-008 decimals 2. elseif bseg-shkzg = 'S'. rcrdt = bseg-dmbtr . bseg-dmbtr = abs( bseg-dmbtr ). write:(16) bseg-dmbtr under text-007 decimals 2. endif. select single * from skat where spras eq 'EN' and ktopl eq 'in01' and saknr eq bseg-hkont. write:(40) p_data-desc under text-006. rv_bal = rv_bal - abs( rcrdt ) + abs( rdebt ) . p_data-bal = rv_bal. write:(16) p_data-bal under text-009 decimals 2. ctr = ctr + 1. clear: rcrdt,rdebt. new-line. endselect.endform. " READ_OTHER_LINE_ITEMS*&---------------------------------------------------------------------**& Form GET_PRINT_TP_LEDGER*&---------------------------------------------------------------------*form get_print_tp_ledger. refresh ar_items. refresh ar_items1. call function 'BAPI_AR_ACC_GETSTATEMENT' exporting companycode = dtab-bukrs customer = dtab-kunnr date_from = p_budat-low date_to = p_budat-high noteditems = 'X' tables lineitems = ar_items exceptions others = 1. check sy-subrc = 0. v_bal = dtab-open_bal. delete ar_items where sp_gl_ind eq 'D'. loop at ar_items. if ar_items-sp_gl_ind eq 'X'. move ar_items to ar_items_splgl. append ar_items_splgl. delete ar_items. endif. endloop. loop at ar_items. if ar_items-doc_type eq 'DO' or ar_items-doc_type eq 'DC' or ar_items-doc_type eq 'DB'. append ar_items to ar_items1. clear ar_items1. delete ar_items. endif. endloop. sort ar_items1 by doc_no fisc_year. delete adjacent duplicates from ar_items1 comparing doc_no fisc_year. describe table ar_items lines cnt. clear: v_debits, v_credits,v_balance. loop at ar_items. ar_items-lc_amount = abs( ar_items-lc_amount ). p_data-kunnr = dtab-kunnr. p_data-name1 = dtab-name1. p_data-doc_date = ar_items-pstng_date. p_data-doc_no = ar_items-doc_no. p_data-doc_type = ar_items-doc_type. case ar_items-db_cr_ind. when 'S'. v_debits = v_debits + ar_items-lc_amount. v_bal = v_bal + ar_items-lc_amount. p_data-amount = ar_items-lc_amount. when 'H'. p_data-amount = ar_items-lc_amount * -1. v_credits = v_credits + ar_items-lc_amount. v_bal = v_bal - ar_items-lc_amount. endcase. perform get_account_code_01. perform print_doc_desc_oir_01. p_data-bal = v_bal. perform print_qty_01. format color col_normal intensified off. collect p_data. clear p_data. endloop. loop at ar_items1. perform get_other_items_01. if ar_items1-doc_type = 'ZV'. if zvamt < 0. v_credits = v_credits + abs( zvamt ). else. v_debits = v_debits + zvamt. endif. endif. clear zvamt. endloop.endform. " GET_PRINT_TP_LEDGER*&---------------------------------------------------------------------**& Form GET_OTHER_ITEMS_01*&---------------------------------------------------------------------*form get_other_items_01. select * from bseg where bukrs = p_bukrs and belnr = ar_items1-doc_no and gjahr = p_gjahr and koart ne 'D'. format color col_normal intensified. p_data-kunnr = dtab-kunnr. p_data-name1 = dtab-name1. p_data-doc_date = ar_items1-pstng_date. p_data-doc_no = ar_items1-doc_no. p_data-doc_type = ar_items1-doc_type. if bseg-shkzg = 'S'. if ar_items1-doc_type ne 'ZV'. v_credits = v_credits + bseg-dmbtr. else. zvamt = zvamt - bseg-dmbtr. endif. v_bal = v_bal + bseg-dmbtr. p_data-amount = ( bseg-dmbtr * -1 ). elseif bseg-shkzg = 'H'. if ar_items1-doc_type ne 'ZV'. v_debits = v_debits + bseg-dmbtr. else. zvamt = zvamt + bseg-dmbtr. endif. v_bal = v_bal - bseg-dmbtr. p_data-amount = bseg-dmbtr. endif. perform print_acc_description_01 . p_data-bal = v_bal. collect p_data. clear p_data. endselect.endform. " GET_OTHER_ITEMS_01*&---------------------------------------------------------------------**& Form PRINT_ACC_DESCRIPTION_01*&---------------------------------------------------------------------*form print_acc_description_01 . case ar_items1-doc_type . when 'DZ'. v_desc = bseg-zuonr. concatenate 'Check Rec' v_desc into v_desc separated by ' '. when 'DC'. v_desc = 'Early Pymnt Discount'. when 'ZV'. v_desc = :bkpf-xblnr. when others. v_desc = bseg-sgtxt. endcase. p_data-desc = v_desc.endform. " PRINT_ACC_DESCRIPTION_01*&---------------------------------------------------------------------**& Form PRINT_ACC_DESCRIPTION_02*&---------------------------------------------------------------------*form print_acc_description_02 . case p_data-doc_type . when 'DZ'. v_desc = bseg-zuonr. concatenate 'Cheque Recd.' v_desc into v_desc separated by ' '. when 'DC'. v_desc = 'Discount'. when 'ZV'. v_desc = :bkpf-xblnr. when others. v_desc = ar_items-item_text. endcase. p_data-desc = v_desc.endform. " PRINT_ACC_DESCRIPTION_02*&---------------------------------------------------------------------**& Form GET_ACCOUNT_CODE_01*&---------------------------------------------------------------------*form get_account_code_01.endform. " GET_ACCOUNT_CODE_01*&---------------------------------------------------------------------**& Form PRINT_DOC_DESC_OIR_01*&---------------------------------------------------------------------*form print_doc_desc_oir_01. data zvbeln like vbrk-vbeln. clear v_desc. if ar_items-doc_type eq 'DD' or ar_items-doc_type eq 'DG' or ar_items-doc_type eq 'DA' or ar_items-doc_type eq '3i' or ar_items-doc_type eq '3v'. if ar_items-doc_type eq 'DD' or ar_items-doc_type eq 'DA'. if ar_items-doc_type eq 'DA'. select single * from bkpf where belnr = ar_items-doc_no and gjahr = p_gjahr. if bkpf-stblg ne ' '. concatenate 'Reversed by' bkpf-stblg into v_desc separated byspace. else. ar_items-item_num = '001'. select single sgtxt into :bseg-sgtxt from bseg where bukrs = ar_items-comp_code and belnr = ar_items-doc_no and gjahr = p_gjahr and buzei = ar_items-item_num. if sy-subrc = 0. v_desc = :bseg-sgtxt. endif. endif. else. if inv_text eq 'X' and ar_items-doc_type eq 'DD' . select single * from t003t where spras = 'EN' and blart = ar_items-doc_type. v_desc = t003t-ltext. else. select single sgtxt into :bseg-sgtxt from bseg where bukrs = ar_items-comp_code and belnr = ar_items-doc_no and gjahr = p_gjahr and buzei = ar_items-item_num. if sy-subrc = 0. v_desc = :bseg-sgtxt. endif. endif. endif. else. if inv_text eq 'X' and ar_items-doc_type eq 'DG'. select single * from t003t where spras = 'EN' and blart = ar_items-doc_type. v_desc = t003t-ltext. else. select single vbeln into zvbeln from bseg where bukrs = ar_items-comp_code and belnr = ar_items-doc_no and gjahr = p_gjahr and buzei = ar_items-item_num. check sy-subrc = 0. select single * from vbrp where vbeln = zvbeln. if sy-subrc = 0. select single * from vbak where vbeln = vbrp-aubel. v_desc = vbak-bstnk. endif. endif. endif. else. if ar_items-doc_type eq 'ZD'. select single * from t003t where spras eq 'EN' and blart eq 'ZD'. if sy-subrc = 0. v_desc = t003t-ltext. endif. else. clear line1. free line1. select single * from vbrp where vbeln = ar_items-doc_no. if sy-subrc = 0. select single * from vbak where vbeln = vbrp-aubel. name = vbrp-aubel. call function 'READ_TEXT' exporting* CLIENT = SY-MANDT id = '0001' language = 'E' name = name object = 'VBBK'* ARCHIVE_HANDLE = 0 importing header = header1 tables lines = line1 exceptions id = 1 language = 2 name = 3 not_found = 4 object = 5 reference_check = 6 wrong_access_to_archive = 7 others = 8. read table line1 index 1. move line1-tdline to v_desc. if v_desc ' ' and inv_text eq ' '. if o_po_txt eq 'X'. concatenate vbak-bstnk '-' line1-tdline into v_desc separated by space. else. clear v_desc. v_desc = vbak-bstnk. endif. else. if inv_text eq 'X' and ( ar_items-doc_type eq 'RC' or ar_items-doc_type eq 'RV' or ar_items-doc_type eq 'RB' or ar_items-doc_type eq 'DR' or ar_items-doc_type eq 'DF' or ar_items-doc_type eq '3i' or ar_items-doc_type eq '3v' or ar_items-doc_type eq 'DD' or ar_items-doc_type eq 'DG' ) . select single * from t003t where spras = 'EN' and blart = ar_items-doc_type. v_desc = t003t-ltext. if v_desc = 'Invoice ' or v_desc = 'BILLING Doc. '. clear v_desc. v_desc = t003t-ltext(12). endif. else. v_desc = vbak-bstnk. endif. endif. else. if inv_text eq 'X' and ( ar_items-doc_type eq 'DR' ). select single * from t003t where spras = 'EN' and blart = ar_items-doc_type. v_desc = t003t-ltext. else. select single sgtxt into :bseg-sgtxt from bseg where bukrs = ar_items-comp_code and belnr = ar_items-doc_no and gjahr = p_gjahr and buzei = '002'. if sy-subrc = 0. v_desc = :bseg-sgtxt. endif. endif. endif. endif. endif. p_data-desc = v_desc.endform. " PRINT_DOC_DESC_OIR_01*&---------------------------------------------------------------------**& Form PRINT_QTY_01*&---------------------------------------------------------------------*form print_qty_01. select single vbeln into :bseg-vbeln from bseg where bukrs = p_bukrs and belnr = ar_items-doc_no and gjahr = p_gjahr and buzei = ar_items-item_num. select sum( fkimg ) into :vbrp-fkimg from vbrp where vbeln = :bseg-vbeln. p_data-qty = :vbrp-fkimg . v_qty = v_qty + :vbrp-fkimg.endform. " PRINT_QTY_01*&---------------------------------------------------------------------**& Form PRINT_PARAMETERS*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* p1 text* 0. flg_select = 'X'. endif. clear av_hlp_tvbur-vkbur. collect av_hlp_tvbur. loop at av_hlp_tvbur. authority-check object 'M_IS_VKBUR' id 'MCINF' field av_mcinf id 'VKBUR' field av_hlp_tvbur-vkbur. if sy-subrc 0. clear av_vkbur. flg_noauthor = 'X'. delete av_hlp_tvbur. if flg_select = 'X'. av_vkbur-sign = 'E'. av_vkbur-option = 'EQ'. av_vkbur-low = av_hlp_tvbur-vkbur. collect av_vkbur. av_flg_restrict = 'X'. endif. else. flg_avauthor = 'X'. if flg_select = ' '. av_vkbur-sign = 'I'. av_vkbur-option = 'EQ'. av_vkbur-low = av_hlp_tvbur-vkbur. collect av_vkbur. endif. endif. endloop. read table av_hlp_tvbur index 1. if sy-subrc ne 0. clear av_vkbur. av_vkbur-sign = 'E'. av_vkbur-option = 'CP'. av_vkbur-low = '*'. collect av_vkbur. endif. if flg_select = ' '. if flg_noauthor = ' '. clear av_vkbur. refresh av_vkbur. else. if flg_avauthor = ' '. loop at av_vkbur where sign = 'I' and option = 'EQ'. delete av_vkbur. endloop. else. loop at av_vkbur where sign = 'E' and option = 'EQ'. delete av_vkbur. endloop. endif. endif. endif.endform.*Text elements*----------------------------------------------------------* 001 General selection* 003 Doc. Dt* 004 DTy* 005 Doc. No* 006 Text* 007 Credits* 008 Debits* 009 Balance* 013 Total* 014 Balance* 015 Opening balance as on