‎2008 Feb 12 3:10 AM
Hi,
I need your help to debugging the following program:
The output does not display the value of the 'Doc Number' even there are values in the t_bseg_belnr.
The condition is c_sort1 at statment 813. The write statement is at statement 842.
I has bee work on this for 4 hours and have not find where is the problem.
When I test, I enter the parameters: company code, the Entry Date is from 1/1/2006 - 12/31/2007
the vendor number and the fiscal year is 2006.
Thank you so much!!
Helen
-
REPORT ztgfr001_rp0 NO STANDARD PAGE HEADING
LINE-COUNT 65
LINE-SIZE 132 MESSAGE-ID zp.
-----Tables--
TABLES: bkpf, "Accounting document header
bseg, "Accounting document segment
lfa1, "Vendor master (general section)
payr, "Payment Medium File
reguh, "Settlement data from payment program
faede, "Transfer Structure for Determining Due Date
csks. "Cost center master
-----Internal-Tables-and-Structures--
Record Definition for BKPF table
TYPES: BEGIN OF bkpf_rec,
mandt LIKE bkpf-mandt, "Company
bukrs LIKE bkpf-bukrs, "Company
belnr LIKE bkpf-belnr, "Doc Number
gjahr LIKE bkpf-gjahr, "Fiscal Year
blart LIKE bkpf-blart, "Doc Type
bldat LIKE bkpf-bldat, "Doc Date
budat LIKE bkpf-budat, "Posting Date
monat LIKE bkpf-monat, "Accting Period
usnam LIKE bkpf-usnam, "User ID
bvorg LIKE bkpf-bvorg, "Number of X-Company Posting Tran
xblnr LIKE bkpf-xblnr, "Ref Doc
bstat LIKE bkpf-bstat, "Document Status
xreversal LIKE bkpf-xreversal, "Reversal indicator
END OF bkpf_rec.
BKPF table
DATA: t_bkpf TYPE STANDARD TABLE
OF bkpf_rec
INITIAL SIZE 0
WITH HEADER LINE.
Record Definition for BSEG table
TYPES: BEGIN OF bseg_rec,
mandt LIKE bkpf-mandt, "Client
bukrs LIKE bseg-bukrs, "Company
belnr LIKE bseg-belnr, "Doc Number
augdt LIKE bseg-augdt, "Clearing date
augbl LIKE bseg-augbl, "Clearing doc number
bschl LIKE bseg-bschl, "Post Key
koart LIKE bseg-koart, "Account type
shkzg LIKE bseg-shkzg, "Debit/Credit
wrbtr LIKE bseg-wrbtr, "Amount
zuonr LIKE bseg-zuonr, "Assignment number
sgtxt LIKE bseg-sgtxt, "Text
kostl LIKE bseg-kostl, "Cost Center
aufnr LIKE bseg-aufnr, "Internal Order N
hkont LIKE bseg-hkont, "G/L Account
lifnr LIKE bseg-lifnr, "Vendor Number
zfbdt LIKE bseg-zfbdt, "Due Date
zterm LIKE bseg-zterm, "Terms of payment key
zbd1t LIKE bseg-zbd1t, "Cash discount days 1
zbd2t LIKE bseg-zbd2t, "Cash discount days 2
zbd3t LIKE bseg-zbd3t, "Net Payment Terms Period
zbd1p LIKE bseg-zbd1p, "Cash discount percentage 1
zbd2p LIKE bseg-zbd2p, "Cash Discount Percentage 2
rebzg LIKE bseg-rebzg, "Number of Invoic Tran Belongs to
rebzt LIKE bseg-rebzt, "Follow-On Document Type
ebeln LIKE bseg-ebeln, "PO Doc Number
nplnr LIKE bseg-nplnr, "Network Num for Acct Assignment
projk LIKE bseg-projk, "WBS
zzreg_acct LIKE bseg-zzreg_acct,"SCM Reg Account
blart LIKE bkpf-blart, "Doc Type
bldat LIKE bkpf-bldat, "Doc Date
budat LIKE bkpf-budat, "Posting
monat LIKE bkpf-monat, "Accting Period
bvorg LIKE bkpf-bvorg, "Cross company
xblnr LIKE bkpf-xblnr, "Ref Doc
usnam LIKE bkpf-usnam, "User ID
bstat LIKE bkpf-bstat, "Rev/Park Ind.
name1 LIKE lfa1-name1, "Vendor Name
vblnr LIKE reguh-vblnr, "Payment Document
zaldt LIKE reguh-zaldt, "Payment Date
rzawe LIKE reguh-rzawe, "Payment Method
chect LIKE payr-chect, "Check Number
END OF bseg_rec.
BSEG Data and records to be output
DATA: t_bseg TYPE STANDARD TABLE
OF bseg_rec
INITIAL SIZE 0
WITH HEADER LINE.
Structure containing Bseg data
DATA: BEGIN OF s_bseg OCCURS 0,
bukrs LIKE bseg-bukrs, "Company
belnr LIKE bseg-belnr, "Doc Number
augdt LIKE bseg-augdt, "Clearing date
augbl LIKE bseg-augbl, "Clearing doc number
buzei LIKE bseg-buzei, "Num of LineItem Within Acctg Doc
bschl LIKE bseg-bschl, "Post Key
koart LIKE bseg-koart, "Account type
shkzg LIKE bseg-shkzg, "Debit/Credit
wrbtr LIKE bseg-wrbtr, "Amount
zuonr LIKE bseg-zuonr, "Assignment number
sgtxt LIKE bseg-sgtxt, "Text
kostl LIKE bseg-kostl, "Cost Center
aufnr LIKE bseg-aufnr, "Internal Order N
hkont LIKE bseg-hkont, "G/L Account
lifnr LIKE bseg-lifnr, "Vendor Number
zfbdt LIKE bseg-zfbdt, "Due Date
zterm LIKE bseg-zterm, "Terms of payment key
zbd1t LIKE bseg-zbd1t, "Cash discount days 1
zbd2t LIKE bseg-zbd2t, "Cash discount days 2
zbd3t LIKE bseg-zbd3t, "Net Payment Terms Period
zbd1p LIKE bseg-zbd1p, "Cash discount percentage 1
zbd2p LIKE bseg-zbd2p, "Cash Discount Percentage 2
rebzg LIKE bseg-rebzg, "Num of Invoice Tran Belongs to
rebzt LIKE bseg-rebzt, "Follow-On Document Type
ebeln LIKE bseg-ebeln, "PO Doc Number
nplnr LIKE bseg-nplnr, "Network Num for Acct Assignment
projk LIKE bseg-projk, "WBS
zzreg_acct LIKE bseg-zzreg_acct,"SCM Reg Account
END OF s_bseg.
Structure containing Bseg data
DATA: BEGIN OF x_bseg,
bukrs LIKE bseg-bukrs, "Company
belnr LIKE bseg-belnr, "Doc Number
augdt LIKE bseg-augdt, "Clearing date
augbl LIKE bseg-augbl, "Clearing doc number
buzei LIKE bseg-buzei, "Num of LineItem Within Acctg Doc
bschl LIKE bseg-bschl, "Post Key
koart LIKE bseg-koart, "Account type
shkzg LIKE bseg-shkzg, "Debit/Credit
wrbtr LIKE bseg-wrbtr, "Amount
zuonr LIKE bseg-zuonr, "Assignment number
sgtxt LIKE bseg-sgtxt, "Text
kostl LIKE bseg-kostl, "Cost Center
aufnr LIKE bseg-aufnr, "Internal Order N
hkont LIKE bseg-hkont, "G/L Account
lifnr LIKE bseg-lifnr, "Vendor Number
zfbdt LIKE bseg-zfbdt, "Due Date
zterm LIKE bseg-zterm, "Terms of payment key
zbd1t LIKE bseg-zbd1t, "Cash discount days 1
zbd2t LIKE bseg-zbd2t, "Cash discount days 2
zbd3t LIKE bseg-zbd3t, "Net Payment Terms Period
zbd1p LIKE bseg-zbd1p, "Cash discount percentage 1
zbd2p LIKE bseg-zbd2p, "Cash Discount Percentage 2
rebzg LIKE bseg-rebzg, "Num of Invoice Tran Belongs to
rebzt LIKE bseg-rebzt, "Follow-On Document Type
ebeln LIKE bseg-ebeln, "PO Doc Number
nplnr LIKE bseg-nplnr, "Network Num for Acct Assignment
projk LIKE bseg-projk, "WBS
zzreg_acct LIKE bseg-zzreg_acct,"SCM Reg Account
END OF x_bseg.
Record definition for Vendor name Table
TYPES: BEGIN OF lfa1_rec,
lifnr LIKE lfa1-lifnr, "Vendor Number
name1 LIKE lfa1-name1, "Vendor Name
END OF lfa1_rec.
Vendor Name table
DATA: t_lfa1 TYPE SORTED TABLE
OF lfa1_rec
WITH UNIQUE KEY lifnr
INITIAL SIZE 0
WITH HEADER LINE.
*----
Internal table for REGUH
*----
DATA: BEGIN OF h_reguh OCCURS 0,
zaldt LIKE reguh-zaldt, "Date pgm to be run
rzawe LIKE reguh-rzawe, "Payment Method
zbukr LIKE reguh-zbukr, "Paying Company Code
lifnr LIKE reguh-lifnr, "Account number of vendor
vblnr LIKE reguh-vblnr, "Doc Number of Payment
END OF h_reguh.
*----
Internal table for PAYR
*----
DATA: BEGIN OF h_payr OCCURS 0,
zbukr LIKE payr-zbukr, "Paying Company Code
lifnr LIKE payr-lifnr, "Account number of vendor
vblnr LIKE payr-vblnr, "Doc no of payment doc
laufd LIKE payr-laufd, "Date on which pgm to be run
chect LIKE payr-chect, "Check number
voidd LIKE payr-voidd, "Voided check date
END OF h_payr.
*----
Internal table for payr list
*----
DATA: BEGIN OF payr_list OCCURS 0,
zaldt LIKE reguh-zaldt, "Posting date of payment doc
zbukr LIKE reguh-zbukr, "Paying company code
lifnr LIKE reguh-lifnr, "Vendor
vblnr LIKE reguh-vblnr, "Doc Num of the Payment Document
END OF payr_list.
DATA: BEGIN OF s_sortkey1,
bukrs LIKE bseg-bukrs, "Company Code
hkont LIKE bseg-hkont, "General Ledger Account
kostl LIKE bseg-kostl, "Cost Center
END OF s_sortkey1.
DATA: BEGIN OF s_sortkey2,
bukrs LIKE bseg-bukrs, "Company Code
lifnr LIKE bseg-lifnr, "Vendor
END OF s_sortkey2.
DATA: BEGIN OF s_sortkey3,
bukrs LIKE bseg-bukrs, "Company Code
name1 LIKE lfa1-name1, "Vendor name
kostl LIKE bseg-kostl, "Cost Center
zzreg_acct LIKE bseg-zzreg_acct,"SCM Reg Account
END OF s_sortkey3.
DATA: BEGIN OF s_sortkey4,
bukrs LIKE bseg-bukrs, "Company Code
name1 LIKE lfa1-name1, "Vendor name
kostl LIKE bseg-kostl, "Cost Center
hkont LIKE bseg-hkont, "General Ledger Account
END OF s_sortkey4.
DATA: BEGIN OF s_sortkey5,
lifnr LIKE bseg-lifnr, "Vendor
bukrs LIKE bseg-bukrs, "Company Code
END OF s_sortkey5.
DATA: BEGIN OF s_sortkey6,
bukrs LIKE bseg-bukrs, "Company Code
kostl LIKE bseg-kostl, "Cost Center
zzreg_acct LIKE bseg-zzreg_acct,"SCM Reg Account
END OF s_sortkey6.
DATA: BEGIN OF s_sortkey7,
bukrs LIKE bseg-bukrs, "Company Code
kostl LIKE bseg-kostl, "Cost Center
hkont LIKE bseg-hkont, "General Ledger Account
END OF s_sortkey7.
DATA: BEGIN OF s_sortkey8,
bukrs LIKE bseg-bukrs, "Company Code
kostl LIKE bseg-kostl, "Cost Center
lifnr LIKE bseg-lifnr, "Vendor
END OF s_sortkey8.
-----Working-Data--
DATA: title1 LIKE sy-title,
title2 LIKE sy-title,
title3 LIKE sy-title,
header TYPE c,
sort_opt TYPE c,
group_total LIKE bsik-wrbtr,
report_total LIKE bsik-wrbtr,
item_cnt LIKE bseg-buzei,
buzei LIKE bseg-buzei,
vendor LIKE bseg-lifnr,
due_dt LIKE bseg-zfbdt,
beg_date LIKE sy-datum,
end_date LIKE sy-datum,
beg_date_text(10) TYPE c,
end_date_text(10) TYPE c,
date_flag TYPE c,
elapsed1 LIKE sy-uzeit,
elapsed2 LIKE sy-uzeit,
elapsed3 LIKE sy-uzeit,
elapsed4 LIKE sy-uzeit,
elapsed5 LIKE sy-uzeit,
elapsed6 LIKE sy-uzeit,
elapsed7 LIKE sy-uzeit,
elapsed8 LIKE sy-uzeit,
elapsed9 LIKE sy-uzeit,
elapsed10 LIKE sy-uzeit,
elapsed11 LIKE sy-uzeit,
elapsed12 LIKE sy-uzeit,
ln_h_bseg TYPE i,
ln_h_reguh TYPE i,
ln_h_payr TYPE i,
start_select_payr LIKE sy-uzeit,
end_select_payr LIKE sy-uzeit,
start_select_reguh LIKE sy-uzeit,
end_select_reguh LIKE sy-uzeit,
odd TYPE i.
- declare with new stucture
DATA: iwksheet TYPE TABLE OF ztgfr001rp0out WITH HEADER LINE.
*
DATA: BEGIN OF ititle, "OCCURS 1,
mandt(6) TYPE c VALUE 'Client',
bukrs(04) TYPE c VALUE 'Comp', "Company
belnr(10) TYPE c VALUE 'Doc Number',
bschl(3) TYPE c VALUE 'PK ', "Post Key
shkzg(3) TYPE c VALUE 'D/C', "Debit/Credit
hkont(10) TYPE c VALUE 'G/L Acount',
kostl(10) TYPE c VALUE 'CostCenter',
aufnr(10) TYPE c VALUE 'I Order No',
projk(24) TYPE c VALUE 'WBS',
lifnr(10) TYPE c VALUE 'Vendor ',
name1(35) TYPE c VALUE 'Vendor Name',
zfbdt(12) TYPE c VALUE 'Due Date ',
ebeln(10) TYPE c VALUE 'PO Number ',
blart(05) TYPE c VALUE 'DType',
bldat(12) TYPE c VALUE 'Invoice Date',
budat(12) TYPE c VALUE 'Posting Date',
monat(06) TYPE c VALUE 'Period',
xblnr(16) TYPE c VALUE 'Reference',
sgtxt(50) TYPE c VALUE 'Text',"Text
nplnr(12) TYPE c VALUE 'NetWork',
wrbtr(17) TYPE c VALUE ' Amount ',
buzei(3) TYPE c VALUE 'ITM', "Line Item
zzreg_acct(7) TYPE c VALUE 'RegAcc', "SCM Reg Account
vblnr(10) TYPE c VALUE 'Pmt Doc', "Payment Document
zaldt(8) TYPE c VALUE 'PmtDate', "Payment Date
rzawe(8) TYPE c VALUE 'PmtMeth', "Payment Method
chect(13) TYPE c VALUE 'CheckNumber',"Check Number
END OF ititle.
DATA: switch TYPE i VALUE 0,
false TYPE i VALUE 0,
true TYPE i VALUE 1.
INCLUDE ole2incl.
DATA: h_appl TYPE ole2_object,
h_work TYPE ole2_object,
h_cell TYPE ole2_object.
-----Constants--
CONSTANTS: c_xval TYPE c VALUE 'X',
c_header1 TYPE c VALUE '1',
c_header2 TYPE c VALUE '2',
c_header3 TYPE c VALUE '3',
c_header4 TYPE c VALUE '4',
c_header5 TYPE c VALUE '5',
c_header6 TYPE c VALUE '6',
c_header7 TYPE c VALUE '7',
c_header8 TYPE c VALUE '8',
c_sort1 TYPE c VALUE '1',
c_sort2 TYPE c VALUE '2',
c_sort3 TYPE c VALUE '3',
c_sort4 TYPE c VALUE '4',
c_sort5 TYPE c VALUE '5',
c_sort6 TYPE c VALUE '6',
c_sort7 TYPE c VALUE '7',
c_sort8 TYPE c VALUE '8',
c_hval TYPE c VALUE 'H'.
-----Field-Symbols--
-----Select-Options-and-Parameters--
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
Select Options Block
SELECTION-SCREEN BEGIN OF BLOCK blk1a WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs OBLIGATORY "Company
NO INTERVALS,
s_blart FOR bkpf-blart OBLIGATORY. "Doc Typ
SELECTION-SCREEN BEGIN OF BLOCK blk1a_1.
SELECT-OPTIONS: s_cpudt FOR bkpf-cpudt, "Entry Date
s_budat FOR bkpf-budat. "Post Date
SELECTION-SCREEN END OF BLOCK blk1a_1.
SELECT-OPTIONS: s_belnr FOR bkpf-belnr, "Doc Num
s_hkont FOR bseg-hkont, "Account
s_zzreg FOR bseg-zzreg_acct, "Reg Acct
s_kostl FOR csks-kostl, "CostCnt
s_lifnr FOR bseg-lifnr, "Vendor
s_name1 FOR lfa1-name1, "Vendor name
s_xblnr FOR bkpf-xblnr, "Reference nbr
s_vblnr FOR reguh-vblnr, "Payment Doc
s_zaldt FOR reguh-zaldt, "Payment Date
s_chect FOR payr-chect, "Check Number
s_rzawe FOR reguh-rzawe, "Payment Method
s_ebeln FOR bseg-ebeln, "Purchasing Doc
s_bstat FOR bkpf-bstat. "Doc Status
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(25) text-003.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETER: p_gjahr LIKE bkpf-gjahr OBLIGATORY
DEFAULT sy-datum+0(4).
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK blk1a.
Sort Option Block
SELECTION-SCREEN BEGIN OF BLOCK blk1b WITH FRAME TITLE text-004.
Sort option 1 Account
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_sort1 RADIOBUTTON GROUP r1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(55) text-005.
SELECTION-SCREEN END OF LINE.
Sort option 2 Vendor
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_sort2 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 5(55) text-006.
SELECTION-SCREEN END OF LINE.
Sort option 3 Vendor Name, CC, SEC REG
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_sort3 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 5(55) text-007.
SELECTION-SCREEN END OF LINE.
Sort option 4 Vendor Name, CC, SAP G/L Account
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_sort4 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 5(55) text-008.
SELECTION-SCREEN END OF LINE.
Sort option 5 Vendor Number and Company
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_sort5 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 5(55) text-009.
SELECTION-SCREEN END OF LINE.
Sort option 6 CC, SEC REG
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_sort6 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 5(55) text-012.
SELECTION-SCREEN END OF LINE.
Sort option 7 CC, SAP G/L Account
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_sort7 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 5(55) text-013.
SELECTION-SCREEN END OF LINE.
Sort option 8 CC, Vendor
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_sort8 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 5(55) text-014.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK blk1b.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK b5 WITH FRAME TITLE text-885.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(75) text-ss3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(75) text-ss4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(75) text-ss5.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: excel AS CHECKBOX DEFAULT ' ' USER-COMMAND alvsel.
SELECTION-SCREEN COMMENT 4(20) text-ss1 FOR FIELD excel.
PARAMETERS: alvvar TYPE slis_vari.
SELECTION-SCREEN COMMENT 40(15) text-ss2 FOR FIELD alvvar.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b5.
-----Selection-Screen-Processing--
*- Entry or Posting date must be populated
AT SELECTION-SCREEN ON BLOCK blk1a_1.
IF s_cpudt IS INITIAL AND
s_budat IS INITIAL.
MESSAGE e896(zp).
Entry or Posting Date is Required
ENDIF.
-Display possible variants for ALV grid
AT SELECTION-SCREEN ON VALUE-REQUEST FOR alvvar.
DATA: l_disvariant TYPE disvariant.
l_disvariant-report = sy-repid.
CALL FUNCTION 'LVC_VARIANT_SAVE_LOAD'
EXPORTING
i_save_load = 'F' "F4 help
CHANGING
cs_variant = l_disvariant
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
ALV variant display failed
MESSAGE e417 WITH text-e04.
ELSE.
Fill parameter with the value the user selected
alvvar = l_disvariant-variant.
ENDIF.
-----Initialization--
INITIALIZATION.
PERFORM program_authority_check.
-----Top-Of-Page--
TOP-OF-PAGE.
CLEAR: title1, title2, title3.
CASE header.
WHEN c_header1.
*- Set Titles for Header 1
CONCATENATE text-001 t_bseg-bukrs INTO title1
SEPARATED BY space.
Voucher Register Report
title2 = text-010.
Grouped by Company, Account & Cost Center
IF date_flag EQ 'P'.
CONCATENATE text-040 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ELSEIF date_flag EQ 'E'.
CONCATENATE text-042 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ENDIF.
*- Output Page Heading
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
title1 = title1
title2 = title2
title3 = title3.
WHEN c_header2.
*- Set Titles for Header 1
CONCATENATE text-001 t_bseg-bukrs INTO title1
SEPARATED BY space.
Voucher Register Report
title2 = text-011.
Grouped by Company & Vendor
IF date_flag EQ 'P'.
CONCATENATE text-040 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ELSEIF date_flag EQ 'E'.
CONCATENATE text-042 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ENDIF.
*- Output Page Heading
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
title1 = title1
title2 = title2
title3 = title3.
WHEN c_header3.
*- Set Titles for Header 1
CONCATENATE text-001 t_bseg-bukrs INTO title1
SEPARATED BY space.
Voucher Register Report
title2 = text-015.
Grouped by VendorName CostCenter SCM REG Acct
IF date_flag EQ 'P'.
CONCATENATE text-040 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ELSEIF date_flag EQ 'E'.
CONCATENATE text-042 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ENDIF.
*- Output Page Heading
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
title1 = title1
title2 = title2
title3 = title3.
WHEN c_header4.
*- Set Titles for Header 1
CONCATENATE text-001 t_bseg-bukrs INTO title1
SEPARATED BY space.
Voucher Register Report
title2 = text-016.
Grouped by VendorName CostCenter SAP G/L Acct
IF date_flag EQ 'P'.
CONCATENATE text-040 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ELSEIF date_flag EQ 'E'.
CONCATENATE text-042 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ENDIF.
*- Output Page Heading
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
title1 = title1
title2 = title2
title3 = title3.
WHEN c_header5.
*- Set Titles for Header 1
CONCATENATE text-001 t_bseg-bukrs INTO title1
SEPARATED BY space.
Voucher Register Report
title2 = text-017.
Grouped by Vendor Number and Company
IF date_flag EQ 'P'.
CONCATENATE text-040 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ELSEIF date_flag EQ 'E'.
CONCATENATE text-042 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ENDIF.
*- Output Page Heading
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
title1 = title1
title2 = title2
title3 = title3.
WHEN c_header6.
*- Set Titles for Header 1
CONCATENATE text-001 t_bseg-bukrs INTO title1
SEPARATED BY space.
Voucher Register Report
title2 = text-018.
Grouped by Cost Center and SCM REG Account
IF date_flag EQ 'P'.
CONCATENATE text-040 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ELSEIF date_flag EQ 'E'.
CONCATENATE text-042 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ENDIF.
*- Output Page Heading
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
title1 = title1
title2 = title2
title3 = title3.
WHEN c_header7.
*- Set Titles for Header 1
CONCATENATE text-001 t_bseg-bukrs INTO title1
SEPARATED BY space.
Voucher Register Report
title2 = text-019.
Grouped by Cost Center and SAP G/L Account
IF date_flag EQ 'P'.
CONCATENATE text-040 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ELSEIF date_flag EQ 'E'.
CONCATENATE text-042 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ENDIF.
*- Output Page Heading
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
title1 = title1
title2 = title2
title3 = title3.
WHEN c_header8.
*- Set Titles for Header 1
CONCATENATE text-001 t_bseg-bukrs INTO title1
SEPARATED BY space.
Voucher Register Report
title2 = text-033.
Grouped by Cost Center and Vendor
IF date_flag EQ 'P'.
CONCATENATE text-040 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ELSEIF date_flag EQ 'E'.
CONCATENATE text-042 beg_date_text text-041 end_date_text
INTO title3 SEPARATED BY space.
ENDIF.
*- Output Page Heading
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
title1 = title1
title2 = title2
title3 = title3.
ENDCASE.
************************************************************************
Start of Selection *
************************************************************************
START-OF-SELECTION.
PERFORM company_authority_check.
IF ( excel = 'X' ) AND ( sy-batch = 'X' )."Don't want to do itinbatch
MESSAGE e417 WITH text-900.
ENDIF.
*- Assign Begin and End Dates
PERFORM assign_dates.
*- Get BKPF - Header Data
PERFORM get_bkpf.
*- Get BSEG - Item Data
PERFORM get_bseg.
*- Select REGUH - Settlement data
PERFORM select_reguh.
*- Select PAYR - Payment Medium
PERFORM select_payr.
*- Get LFA1 - Vendor Name
PERFORM get_lfa1.
*- Sort Output
PERFORM sort_output.
*- Output Report
PERFORM output_report.
END-OF-SELECTION.
*- Create Excel Worksheet
IF excel = 'X'.
CALL SCREEN 100. "Display ALV Grid
ENDIF.
&----
*& Form GET_BKPF
&----
FORM get_bkpf.
SELECT mandt
bukrs "Company
belnr "Doc Number
gjahr "Fiscal Year
blart "Doc Type
bldat "Doc Date
budat "Posting Date
monat "Accting Period
usnam "User ID
bvorg
xblnr "Ref Doc
bstat
xreversal
FROM bkpf INTO TABLE t_bkpf
WHERE bukrs IN s_bukrs "Company
AND belnr IN s_belnr "Doc Number
AND gjahr <= p_gjahr "Year
AND blart IN s_blart "Doc Type
AND budat IN s_budat "Posting Dat
AND cpudt IN s_cpudt. "Entry Date
IF sy-subrc NE 0.
MESSAGE e664(zp) WITH 'BKPF'.
No Data found in table & to match selection set
ENDIF.
SORT t_bkpf BY bukrs belnr gjahr.
ENDFORM. " GET_BKPF
&----
*& Form GET_LFA1
&----
FORM get_lfa1.
CLEAR t_lfa1. REFRESH t_lfa1.
SELECT lifnr
name1
INTO TABLE t_lfa1 FROM lfa1 WHERE
lifnr IN s_lifnr.
IF sy-subrc NE 0.
MESSAGE e664(zp) WITH 'LFA1'.
No Data found in table & to match selection set
ENDIF.
LOOP AT t_bseg.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
t_bseg-name1 = t_lfa1-name1.
MODIFY t_bseg.
ENDIF.
ENDLOOP.
ENDFORM. " GET_LFA1
&----
*& Form SORT_OUTPUT
&----
FORM sort_output.
NEW-PAGE.
IF p_sort1 EQ c_xval. "Sort by Company Cost Center & Account
sort_opt = c_sort1.
header = c_header1.
SORT t_bseg ASCENDING BY bukrs kostl hkont.
ELSEIF p_sort2 EQ c_xval. "Sort by Company & VendorNumber
sort_opt = c_sort2.
header = c_header2.
SORT t_bseg ASCENDING BY bukrs lifnr.
ELSEIF p_sort3 EQ c_xval. "Sort by VendorName CostCenter SCMRegAcct
sort_opt = c_sort3.
header = c_header3.
SORT t_bseg ASCENDING BY bukrs name1 kostl zzreg_acct.
ELSEIF p_sort4 EQ c_xval. "Sort by VendorName CostCenter SAPGLAcct
sort_opt = c_sort4.
header = c_header4.
SORT t_bseg ASCENDING BY bukrs name1 kostl hkont.
ELSEIF p_sort5 EQ c_xval. "Sort by VendorNumber Company
sort_opt = c_sort5.
header = c_header5.
SORT t_bseg ASCENDING BY lifnr bukrs.
ELSEIF p_sort6 EQ c_xval. "Sort by CostCenter SCMRegAcct
sort_opt = c_sort6.
header = c_header6.
SORT t_bseg ASCENDING BY bukrs kostl zzreg_acct.
ELSEIF p_sort7 EQ c_xval. "Sort by CostCenter SAPGLAcct
sort_opt = c_sort7.
header = c_header7.
SORT t_bseg ASCENDING BY bukrs kostl hkont.
ELSEIF p_sort8 EQ c_xval. "Sort by CostCenter VendorNumber
sort_opt = c_sort8.
header = c_header8.
SORT t_bseg ASCENDING BY bukrs kostl lifnr.
ENDIF.
ENDFORM. " SORT_OUTPUT
&----
*& Form OUTPUT_REPORT
&----
FORM output_report.
DATA: tmp_bukrs LIKE bseg-bukrs,
tmp_kostl LIKE bseg-kostl.
CLEAR: s_sortkey1, s_sortkey2, s_sortkey3, s_sortkey4,
s_sortkey5, s_sortkey6, s_sortkey7, s_sortkey8,
group_total, report_total,
tmp_bukrs, tmp_kostl.
sy-pagno = 1.
*- Depending on how the user chose to sort the output the report is
*- broken out and displayed differently.
CASE sort_opt.
WHEN c_sort1.
LOOP AT t_bseg.
*- Check for new group
IF t_bseg-bukrs NE s_sortkey1-bukrs OR
t_bseg-hkont NE s_sortkey1-hkont OR
t_bseg-kostl NE s_sortkey1-kostl.
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'Acct/Cost Cent Total => '(060),
110 group_total.
CLEAR group_total.
ENDIF.
*- Output new page on company change
IF t_bseg-bukrs NE tmp_bukrs AND sy-tabix GT 1.
NEW-PAGE.
tmp_bukrs = t_bseg-bukrs.
ELSE.
tmp_bukrs = t_bseg-bukrs.
ENDIF.
*- Output new page on Cost Center change
IF t_bseg-kostl NE tmp_kostl AND sy-tabix GT 1.
NEW-PAGE.
tmp_kostl = t_bseg-kostl.
ELSE.
tmp_kostl = t_bseg-kostl.
ENDIF.
*- Write group Combination
SKIP 2. FORMAT INTENSIFIED ON.
WRITE: / 'Cost Center: '(037), t_bseg-kostl,
/ 'Account : '(036), t_bseg-hkont.
PERFORM write_line_header.
FORMAT INTENSIFIED OFF.
*- Set SortKey1
MOVE: t_bseg-bukrs TO s_sortkey1-bukrs,
t_bseg-hkont TO s_sortkey1-hkont,
t_bseg-kostl TO s_sortkey1-kostl.
ENDIF.
*- If rec is a credit, mult amount by -1 to show credit on report
IF t_bseg-shkzg EQ c_hval.
t_bseg-wrbtr = t_bseg-wrbtr * -1.
ENDIF.
*- Calc Group and Report Totals
group_total = group_total + t_bseg-wrbtr.
report_total = report_total + t_bseg-wrbtr.
*- Get Vendor Name
CLEAR t_lfa1.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr.
*- Write line
WRITE:/ t_bseg-zfbdt UNDER text-020,
t_bseg-belnr UNDER text-021,
t_bseg-bldat UNDER text-022,
t_bseg-xblnr UNDER text-023,
t_bseg-lifnr UNDER text-039,
t_bseg-name1(18) UNDER text-025,
t_bseg-blart UNDER text-026,
t_bseg-bschl UNDER text-027,
t_bseg-hkont UNDER text-031,
t_bseg-kostl UNDER text-032,
t_bseg-aufnr UNDER text-028.
119 t_bseg-wrbtr.
WRITE:/ t_bseg-aufnr UNDER text-028,
t_bseg-ebeln UNDER text-024,
t_bseg-zzreg_acct UNDER text-045,
t_bseg-vblnr UNDER text-047,
t_bseg-chect UNDER text-052,
t_bseg-rzawe UNDER text-051,
t_bseg-zuonr UNDER text-054,
t_bseg-usnam UNDER text-055,
t_bseg-bstat UNDER text-058.
IF excel = 'X'.
MOVE-CORRESPONDING t_bseg TO iwksheet.
WRITE t_bseg-projk TO iwksheet-projk.
WRITE t_lfa1-name1 TO iwksheet-name1.
APPEND iwksheet.
ENDIF.
ENDLOOP. "Loop at t_bseg
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'Acct/Cost Cent Total => '(060), 110 group_total.
CLEAR group_total.
ENDIF.
*- Output Total dollars
SKIP 2. ULINE.
FORMAT INTENSIFIED ON.
WRITE:/55 'Total Dollars Reported => '(061), 110 report_total.
ULINE.
WHEN c_sort2.
LOOP AT t_bseg.
*- Check for new group combination
IF t_bseg-bukrs NE s_sortkey2-bukrs OR
t_bseg-lifnr NE s_sortkey2-lifnr.
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'Vendor Total =>'(059),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output new page on company change
IF t_bseg-bukrs NE tmp_bukrs.
NEW-PAGE.
tmp_bukrs = t_bseg-bukrs.
ENDIF.
*- Get Vendor Name
CLEAR t_lfa1.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr.
*- Write group combinatioin
SKIP 2. FORMAT INTENSIFIED ON.
WRITE: / 'Vendor : '(039), t_lfa1-name1.
PERFORM write_line_header.
FORMAT INTENSIFIED OFF.
*- Set SortKey2
MOVE: t_bseg-bukrs TO s_sortkey2-bukrs,
t_bseg-lifnr TO s_sortkey2-lifnr.
ENDIF.
*- If rec is a credit, mult amount by -1 to show credit on report
IF t_bseg-shkzg EQ c_hval.
t_bseg-wrbtr = t_bseg-wrbtr * -1.
ENDIF.
*- Calc Group and Report Totals
group_total = group_total + t_bseg-wrbtr.
report_total = report_total + t_bseg-wrbtr.
*- Get Vendor Name
CLEAR t_lfa1.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr.
*- Write Line
WRITE:/ t_bseg-zfbdt UNDER text-020,
t_bseg-belnr UNDER text-021,
t_bseg-bldat UNDER text-022,
t_bseg-xblnr UNDER text-023,
t_bseg-lifnr UNDER text-039,
t_bseg-name1(18) UNDER text-025,
t_bseg-blart UNDER text-026,
t_bseg-bschl UNDER text-027,
t_bseg-hkont UNDER text-031,
t_bseg-kostl UNDER text-032,
t_bseg-aufnr UNDER text-028,
119 t_bseg-wrbtr.
WRITE:/ t_bseg-aufnr UNDER text-028,
t_bseg-ebeln UNDER text-024,
t_bseg-zzreg_acct UNDER text-045,
t_bseg-vblnr UNDER text-047,
t_bseg-chect UNDER text-052,
t_bseg-rzawe UNDER text-051,
t_bseg-zuonr UNDER text-054,
t_bseg-usnam UNDER text-055,
t_bseg-bstat UNDER text-058.
IF excel = 'X'.
MOVE-CORRESPONDING t_bseg TO iwksheet.
WRITE t_bseg-projk TO iwksheet-projk.
WRITE t_lfa1-name1 TO iwksheet-name1.
APPEND iwksheet.
ENDIF.
ENDLOOP. "Loop at t_bseg
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'Vendor Total => '(059), 113 group_total.
CLEAR group_total.
ENDIF.
*- Output Total dollars
SKIP 2. ULINE.
FORMAT INTENSIFIED ON.
WRITE:/55 'Total Dollars Reported => '(061), 113 report_total.
ULINE.
WHEN c_sort3.
LOOP AT t_bseg.
*- Check for new group combination
IF t_bseg-bukrs NE s_sortkey3-bukrs OR
t_bseg-name1 NE s_sortkey3-name1 OR
t_bseg-kostl NE s_sortkey3-kostl OR
t_bseg-zzreg_acct NE s_sortkey3-zzreg_acct.
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'VendName/CostCent/SCMREGAcct Total =>'(062),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output new page on company change
IF t_bseg-bukrs NE tmp_bukrs.
NEW-PAGE.
tmp_bukrs = t_bseg-bukrs.
ENDIF.
*- Write group Combination
SKIP 2. FORMAT INTENSIFIED ON.
WRITE: / 'VendName:'(046), t_bseg-name1,
/ 'Cost Center: '(037), t_bseg-kostl,
/ 'SCMREG Account: '(045), t_bseg-zzreg_acct.
PERFORM write_line_header.
FORMAT INTENSIFIED OFF.
*- Set SortKey3
MOVE: t_bseg-bukrs TO s_sortkey3-bukrs,
t_bseg-kostl TO s_sortkey3-kostl,
t_bseg-name1 TO s_sortkey3-name1,
t_bseg-zzreg_acct TO s_sortkey3-zzreg_acct.
ENDIF.
*- If rec is a credit, mult amount by -1 to show credit on report
IF t_bseg-shkzg EQ c_hval.
t_bseg-wrbtr = t_bseg-wrbtr * -1.
ENDIF.
*- Calc Group and Report Totals
group_total = group_total + t_bseg-wrbtr.
report_total = report_total + t_bseg-wrbtr.
*- Get Vendor Name
CLEAR t_lfa1.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr.
*- Write Line
WRITE:/ t_bseg-zfbdt UNDER text-020,
t_bseg-belnr UNDER text-021,
t_bseg-bldat UNDER text-022,
t_bseg-xblnr UNDER text-023,
t_bseg-lifnr UNDER text-039,
t_bseg-name1(18) UNDER text-025,
t_bseg-blart UNDER text-026,
t_bseg-bschl UNDER text-027,
t_bseg-hkont UNDER text-031,
t_bseg-kostl UNDER text-032,
t_bseg-aufnr UNDER text-028,
119 t_bseg-wrbtr.
WRITE:/ t_bseg-aufnr UNDER text-028,
t_bseg-ebeln UNDER text-024,
t_bseg-zzreg_acct UNDER text-045,
t_bseg-vblnr UNDER text-047,
t_bseg-chect UNDER text-052,
t_bseg-rzawe UNDER text-051,
t_bseg-zuonr UNDER text-054,
t_bseg-usnam UNDER text-055,
t_bseg-bstat UNDER text-058.
IF excel = 'X'.
MOVE-CORRESPONDING t_bseg TO iwksheet.
WRITE t_bseg-projk TO iwksheet-projk.
WRITE t_lfa1-name1 TO iwksheet-name1.
APPEND iwksheet.
ENDIF.
ENDLOOP. "Loop at t_bseg
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'VendName/CostCent/SCMREGAcct Total =>'(062),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output Total dollars
SKIP 2. ULINE.
FORMAT INTENSIFIED ON.
WRITE:/55 'Total Dollars Reported => '(061), 113 report_total.
ULINE.
WHEN c_sort4.
LOOP AT t_bseg.
*- Check for new group combination
IF t_bseg-bukrs NE s_sortkey4-bukrs OR
t_bseg-name1 NE s_sortkey4-name1 OR
t_bseg-kostl NE s_sortkey4-kostl OR
t_bseg-hkont NE s_sortkey4-hkont.
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'VendName/CostCent/SAPG/LAcct Total =>'(063),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output new page on company change
IF t_bseg-bukrs NE tmp_bukrs.
NEW-PAGE.
tmp_bukrs = t_bseg-bukrs.
ENDIF.
*- Write group Combination
SKIP 2. FORMAT INTENSIFIED ON.
WRITE: / 'VendName:'(046), t_bseg-name1,
/ 'Cost Center: '(037), t_bseg-kostl,
/ 'SAPG/L Account: '(045), t_bseg-hkont.
PERFORM write_line_header.
FORMAT INTENSIFIED OFF.
*- Set SortKey4
MOVE: t_bseg-bukrs TO s_sortkey4-bukrs,
t_bseg-kostl TO s_sortkey4-kostl,
t_bseg-name1 TO s_sortkey4-name1,
t_bseg-hkont TO s_sortkey4-hkont.
ENDIF.
*- If rec is a credit, mult amount by -1 to show credit on report
IF t_bseg-shkzg EQ c_hval.
t_bseg-wrbtr = t_bseg-wrbtr * -1.
ENDIF.
*- Calc Group and Report Totals
group_total = group_total + t_bseg-wrbtr.
report_total = report_total + t_bseg-wrbtr.
*- Get Vendor Name
CLEAR t_lfa1.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr.
*- Write Line
WRITE:/ t_bseg-zfbdt UNDER text-020,
t_bseg-belnr UNDER text-021,
t_bseg-bldat UNDER text-022,
t_bseg-xblnr UNDER text-023,
t_bseg-lifnr UNDER text-039,
t_bseg-name1(18) UNDER text-025,
t_bseg-blart UNDER text-026,
t_bseg-bschl UNDER text-027,
t_bseg-hkont UNDER text-031,
t_bseg-kostl UNDER text-032,
t_bseg-aufnr UNDER text-028,
119 t_bseg-wrbtr.
WRITE:/ t_bseg-aufnr UNDER text-028,
t_bseg-ebeln UNDER text-024,
t_bseg-zzreg_acct UNDER text-045,
t_bseg-vblnr UNDER text-047,
t_bseg-chect UNDER text-052,
t_bseg-rzawe UNDER text-051,
t_bseg-zuonr UNDER text-054,
t_bseg-usnam UNDER text-055,
t_bseg-bstat UNDER text-058.
IF excel = 'X'.
MOVE-CORRESPONDING t_bseg TO iwksheet.
WRITE t_bseg-projk TO iwksheet-projk.
WRITE t_lfa1-name1 TO iwksheet-name1.
APPEND iwksheet.
ENDIF.
ENDLOOP. "Loop at t_bseg
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'VendName/CostCent/SAPG/LAcct Total =>'(063),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output Total dollars
SKIP 2. ULINE.
FORMAT INTENSIFIED ON.
WRITE:/55 'Total Dollars Reported => '(061), 113 report_total.
ULINE.
WHEN c_sort5.
LOOP AT t_bseg.
*- Check for new group combination
IF t_bseg-bukrs NE s_sortkey5-bukrs OR
t_bseg-lifnr NE s_sortkey5-lifnr.
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'VendorNumber/Company Total =>'(064),
113 group_total.
CLEAR group_total.
ENDIF.
*- Write group Combination
SKIP 2. FORMAT INTENSIFIED ON.
WRITE: / 'VendorNumber:'(046), t_bseg-lifnr,
/ 'Company: '(037), t_bseg-bukrs.
PERFORM write_line_header.
FORMAT INTENSIFIED OFF.
*- Set SortKey5
MOVE: t_bseg-bukrs TO s_sortkey5-bukrs,
t_bseg-lifnr TO s_sortkey5-lifnr.
ENDIF.
*- If rec is a credit, mult amount by -1 to show credit on report
IF t_bseg-shkzg EQ c_hval.
t_bseg-wrbtr = t_bseg-wrbtr * -1.
ENDIF.
*- Calc Group and Report Totals
group_total = group_total + t_bseg-wrbtr.
report_total = report_total + t_bseg-wrbtr.
*- Get Vendor Name
CLEAR t_lfa1.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr.
*- Write Line
WRITE:/ t_bseg-zfbdt UNDER text-020,
t_bseg-belnr UNDER text-021,
t_bseg-bldat UNDER text-022,
t_bseg-xblnr UNDER text-023,
t_bseg-lifnr UNDER text-039,
t_bseg-name1(18) UNDER text-025,
t_bseg-blart UNDER text-026,
t_bseg-bschl UNDER text-027,
t_bseg-hkont UNDER text-031,
t_bseg-kostl UNDER text-032,
t_bseg-aufnr UNDER text-028,
119 t_bseg-wrbtr.
WRITE:/ t_bseg-aufnr UNDER text-028,
t_bseg-ebeln UNDER text-024,
t_bseg-zzreg_acct UNDER text-045,
t_bseg-vblnr UNDER text-047,
t_bseg-chect UNDER text-052,
t_bseg-rzawe UNDER text-051,
t_bseg-zuonr UNDER text-054,
t_bseg-usnam UNDER text-055,
t_bseg-bstat UNDER text-058.
IF excel = 'X'.
MOVE-CORRESPONDING t_bseg TO iwksheet.
WRITE t_bseg-projk TO iwksheet-projk.
WRITE t_lfa1-name1 TO iwksheet-name1.
APPEND iwksheet.
ENDIF.
ENDLOOP. "Loop at t_bseg
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'VendorNumber/Company Total =>'(064),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output Total dollars
SKIP 2. ULINE.
FORMAT INTENSIFIED ON.
WRITE:/55 'Total Dollars Reported => '(061), 113 report_total.
ULINE.
WHEN c_sort6.
LOOP AT t_bseg.
*- Check for new group combination
IF t_bseg-bukrs NE s_sortkey6-bukrs OR
t_bseg-kostl NE s_sortkey6-kostl OR
t_bseg-zzreg_acct NE s_sortkey6-zzreg_acct.
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'CostCent/SCMREGAcct Total =>'(065),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output new page on company change
IF t_bseg-bukrs NE tmp_bukrs.
NEW-PAGE.
tmp_bukrs = t_bseg-bukrs.
ENDIF.
*- Write group Combination
SKIP 2. FORMAT INTENSIFIED ON.
WRITE: / 'Cost Center: '(037), t_bseg-kostl,
/ 'SCMREG Account: '(045), t_bseg-zzreg_acct.
PERFORM write_line_header.
FORMAT INTENSIFIED OFF.
*- Set SortKey6
MOVE: t_bseg-bukrs TO s_sortkey6-bukrs,
t_bseg-kostl TO s_sortkey6-kostl,
t_bseg-zzreg_acct TO s_sortkey6-zzreg_acct.
ENDIF.
*- If rec is a credit, mult amount by -1 to show credit on report
IF t_bseg-shkzg EQ c_hval.
t_bseg-wrbtr = t_bseg-wrbtr * -1.
ENDIF.
*- Calc Group and Report Totals
group_total = group_total + t_bseg-wrbtr.
report_total = report_total + t_bseg-wrbtr.
*- Get Vendor Name
CLEAR t_lfa1.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr.
*- Write Line
WRITE:/ t_bseg-zfbdt UNDER text-020,
t_bseg-belnr UNDER text-021,
t_bseg-bldat UNDER text-022,
t_bseg-xblnr UNDER text-023,
t_bseg-lifnr UNDER text-039,
t_bseg-name1(18) UNDER text-025,
t_bseg-blart UNDER text-026,
t_bseg-bschl UNDER text-027,
t_bseg-hkont UNDER text-031,
t_bseg-kostl UNDER text-032,
t_bseg-aufnr UNDER text-028,
119 t_bseg-wrbtr.
WRITE:/ t_bseg-aufnr UNDER text-028,
t_bseg-ebeln UNDER text-024,
t_bseg-zzreg_acct UNDER text-045,
t_bseg-vblnr UNDER text-047,
t_bseg-chect UNDER text-052,
t_bseg-rzawe UNDER text-051,
t_bseg-zuonr UNDER text-054,
t_bseg-usnam UNDER text-055,
t_bseg-bstat UNDER text-058.
IF excel = 'X'.
MOVE-CORRESPONDING t_bseg TO iwksheet.
WRITE t_bseg-projk TO iwksheet-projk.
WRITE t_lfa1-name1 TO iwksheet-name1.
APPEND iwksheet.
ENDIF.
ENDLOOP. "Loop at t_bseg
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'CostCent/SCMREGAcct Total =>'(065),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output Total dollars
SKIP 2. ULINE.
FORMAT INTENSIFIED ON.
WRITE:/55 'Total Dollars Reported => '(061), 113 report_total.
ULINE.
WHEN c_sort7.
LOOP AT t_bseg.
*- Check for new group combination
IF t_bseg-bukrs NE s_sortkey7-bukrs OR
t_bseg-kostl NE s_sortkey7-kostl OR
t_bseg-hkont NE s_sortkey7-hkont.
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'CostCent/SAPG/LAcct Total =>'(066),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output new page on company change
IF t_bseg-bukrs NE tmp_bukrs.
NEW-PAGE.
tmp_bukrs = t_bseg-bukrs.
ENDIF.
*- Write group Combination
SKIP 2. FORMAT INTENSIFIED ON.
WRITE: / 'Cost Center: '(037), t_bseg-kostl,
/ 'SAPG/L Account: '(047), t_bseg-hkont.
PERFORM write_line_header.
FORMAT INTENSIFIED OFF.
*- Set SortKey7
MOVE: t_bseg-bukrs TO s_sortkey7-bukrs,
t_bseg-kostl TO s_sortkey7-kostl,
t_bseg-hkont TO s_sortkey7-hkont.
ENDIF.
*- If rec is a credit, mult amount by -1 to show credit on report
IF t_bseg-shkzg EQ c_hval.
t_bseg-wrbtr = t_bseg-wrbtr * -1.
ENDIF.
*- Calc Group and Report Totals
group_total = group_total + t_bseg-wrbtr.
report_total = report_total + t_bseg-wrbtr.
*- Get Vendor Name
CLEAR t_lfa1.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr.
*- Write Line
WRITE:/ t_bseg-zfbdt UNDER text-020,
t_bseg-belnr UNDER text-021,
t_bseg-bldat UNDER text-022,
t_bseg-xblnr UNDER text-023,
t_bseg-lifnr UNDER text-039,
t_bseg-name1(18) UNDER text-025,
t_bseg-blart UNDER text-026,
t_bseg-bschl UNDER text-027,
t_bseg-hkont UNDER text-031,
t_bseg-kostl UNDER text-032,
t_bseg-aufnr UNDER text-028,
119 t_bseg-wrbtr.
WRITE:/ t_bseg-aufnr UNDER text-028,
t_bseg-ebeln UNDER text-024,
t_bseg-zzreg_acct UNDER text-045,
t_bseg-vblnr UNDER text-047,
t_bseg-chect UNDER text-052,
t_bseg-rzawe UNDER text-051,
t_bseg-zuonr UNDER text-054,
t_bseg-usnam UNDER text-055,
t_bseg-bstat UNDER text-058.
IF excel = 'X'.
MOVE-CORRESPONDING t_bseg TO iwksheet.
WRITE t_bseg-projk TO iwksheet-projk.
WRITE t_lfa1-name1 TO iwksheet-name1.
APPEND iwksheet.
ENDIF.
ENDLOOP. "Loop at t_bseg
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'CostCent/SAPG/LAcct Total =>'(066),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output Total dollars
SKIP 2. ULINE.
FORMAT INTENSIFIED ON.
WRITE:/55 'Total Dollars Reported => '(061), 113 report_total.
ULINE.
WHEN c_sort8.
LOOP AT t_bseg.
*- Check for new group combination
IF t_bseg-bukrs NE s_sortkey8-bukrs OR
t_bseg-kostl NE s_sortkey8-kostl OR
t_bseg-lifnr NE s_sortkey8-lifnr.
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'CostCent/Vendor Total =>'(067),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output new page on company change
IF t_bseg-bukrs NE tmp_bukrs.
NEW-PAGE.
tmp_bukrs = t_bseg-bukrs.
ENDIF.
*- Write group Combination
SKIP 2. FORMAT INTENSIFIED ON.
WRITE: / 'Cost Center: '(037), t_bseg-kostl,
/ 'SAPG/L Account: '(047), t_bseg-hkont.
PERFORM write_line_header.
FORMAT INTENSIFIED OFF.
*- Set SortKey8
MOVE: t_bseg-bukrs TO s_sortkey8-bukrs,
t_bseg-kostl TO s_sortkey8-kostl,
t_bseg-lifnr TO s_sortkey8-lifnr.
ENDIF.
*- If rec is a credit, mult amount by -1 to show credit on report
IF t_bseg-shkzg EQ c_hval.
t_bseg-wrbtr = t_bseg-wrbtr * -1.
ENDIF.
*- Calc Group and Report Totals
group_total = group_total + t_bseg-wrbtr.
report_total = report_total + t_bseg-wrbtr.
*- Get Vendor Name
CLEAR t_lfa1.
READ TABLE t_lfa1 WITH KEY lifnr = t_bseg-lifnr.
*- Write Line
WRITE:/ t_bseg-zfbdt UNDER text-020,
t_bseg-belnr UNDER text-021,
t_bseg-bldat UNDER text-022,
t_bseg-xblnr UNDER text-023,
t_bseg-lifnr UNDER text-039,
t_bseg-name1(18) UNDER text-025,
t_bseg-blart UNDER text-026,
t_bseg-bschl UNDER text-027,
t_bseg-hkont UNDER text-031,
t_bseg-kostl UNDER text-032,
t_bseg-aufnr UNDER text-028,
119 t_bseg-wrbtr.
WRITE:/ t_bseg-aufnr UNDER text-028,
t_bseg-ebeln UNDER text-024,
t_bseg-zzreg_acct UNDER text-045,
t_bseg-vblnr UNDER text-047,
t_bseg-chect UNDER text-052,
t_bseg-rzawe UNDER text-051,
t_bseg-zuonr UNDER text-054,
t_bseg-usnam UNDER text-055,
t_bseg-bstat UNDER text-058.
IF excel = 'X'.
MOVE-CORRESPONDING t_bseg TO iwksheet.
WRITE t_bseg-projk TO iwksheet-projk.
WRITE t_lfa1-name1 TO iwksheet-name1.
APPEND iwksheet.
ENDIF.
ENDLOOP. "Loop at t_bseg
*- Check Group Total and output if not initial
IF NOT group_total IS INITIAL.
SKIP 1.
WRITE: /55 'CostCent/Vendor Total =>'(067),
113 group_total.
CLEAR group_total.
ENDIF.
*- Output Total dollars
SKIP 2. ULINE.
FORMAT INTENSIFIED ON.
WRITE:/55 'Total Dollars Reported => '(061), 113 report_total.
ULINE.
ENDCASE.
ENDFORM. " OUTPUT_REPORT
&----
*& Form WRITE_LINE_HEADER
&----
FORM write_line_header.
SKIP 1.
CASE header.
WHEN c_header1.
*- Output Line Heading 1
WRITE:/ text-020, 12 text-021, 23 text-022, 34 text-023,
51 text-039, 62 text-025, 81 text-026, 84 text-027,
87 text-031, 99 text-032, 119 text-030.
WRITE: /12 text-028, 25 text-024, 40 text-045,
52 text-047, 64 text-052, 75 text-051, 90 text-054,
95 text-055, 108 text-058.
WHEN c_header2.
*- Output Line Heading 2
WRITE:/ text-020, 12 text-021, 23 text-022, 34 text-023,
51 text-039, 62 text-025, 81 text-026, 84 text-027,
87 text-031, 99 text-032, 119 text-030.
WRITE: /12 text-028, 25 text-024, 40 text-045,
52 text-047, 64 text-052, 75 text-051, 90 text-054,
95 text-055, 108 text-058.
WHEN c_header3.
*- Output Line Heading 3
WRITE:/ text-020, 12 text-021, 23 text-022, 34 text-023,
51 text-039, 62 text-025, 81 text-026, 84 text-027,
87 text-031, 99 text-032, 119 text-030.
WRITE: /12 text-028, 25 text-024, 40 text-045,
52 text-047, 64 text-052, 75 text-051, 90 text-054,
95 text-055, 108 text-058.
WHEN c_header4.
*- Output Line Heading 4
WRITE:/ text-020, 12 text-021, 23 text-022, 34 text-023,
51 text-039, 62 text-025, 81 text-026, 84 text-027,
87 text-031, 99 text-032, 119 text-030.
WRITE: /12 text-028, 25 text-024, 40 text-045,
52 text-047, 64 text-052, 75 text-051, 90 text-054,
95 text-055, 108 text-058.
WHEN c_header5.
*- Output Line Heading 5
WRITE:/ text-020, 12 text-021, 23 text-022, 34 text-023,
51 text-039, 62 text-025, 81 text-026, 84 text-027,
87 text-031, 99 text-032, 119 text-030.
WRITE: /12 text-028, 25 text-024, 40 text-045,
52 text-047, 64 text-052, 75 text-051, 90 text-054,
95 text-055, 108 text-058.
WHEN c_header6.
*- Output Line Heading 6
WRITE:/ text-020, 12 text-021, 23 text-022, 34 text-023,
51 text-039, 62 text-025, 81 text-026, 84 text-027,
87 text-031, 99 text-032, 119 text-030.
WRITE: /12 text-028, 25 text-024, 40 text-045,
52 text-047, 64 text-052, 75 text-051, 90 text-054,
95 text-055, 108 text-058.
WHEN c_header7.
*- Output Line Heading 7
WRITE:/ text-020, 12 text-021, 23 text-022, 34 text-023,
51 text-039, 62 text-025, 81 text-026, 84 text-027,
87 text-031, 99 text-032, 119 text-030.
WRITE: /12 text-028, 25 text-024, 40 text-045,
52 text-047, 64 text-052, 75 text-051, 90 text-054,
95 text-055, 108 text-058.
WHEN c_header8.
*- Output Line Heading 8
WRITE:/ text-020, 12 text-021, 23 text-022, 34 text-023,
51 text-039, 62 text-025, 81 text-026, 84 text-027,
87 text-031, 99 text-032, 119 text-030.
WRITE: /12 text-028, 25 text-024, 40 text-045,
52 text-047, 64 text-052, 75 text-051, 90 text-054,
95 text-055, 108 text-058.
*
ENDCASE.
ULINE.
ENDFORM. " WRITE_LINE_HEADER
&----
*& Form ASSIGN_DATES
&----
FORM assign_dates.
DATA: entry_cnt LIKE sy-tabix.
CLEAR entry_cnt.
*- Set Beginning and Ending dates for heading. If both date ranges are
*- populated use the posting date
IF NOT s_budat IS INITIAL.
date_flag = 'P'. "Posting Date
DESCRIBE TABLE s_budat LINES entry_cnt.
IF entry_cnt GT 1.
READ TABLE s_budat INDEX 1.
MOVE s_budat-low TO beg_date. "Assign Begin Date
READ TABLE s_budat INDEX entry_cnt.
IF s_budat-high IS INITIAL.
MOVE s_budat-low TO end_date. "Assign End Date
ELSE.
MOVE s_budat-high TO end_date. "Assign End Date
ENDIF.
ELSE.
MOVE s_budat-low TO beg_date. "Assign Begin Date
IF s_budat-high IS INITIAL.
MOVE s_budat-low TO end_date. "Assign End Date
ELSE.
MOVE s_budat-high TO end_date. "Assign End Date
ENDIF.
ENDIF.
ELSE.
date_flag = 'E'. "Entry Date
DESCRIBE TABLE s_cpudt LINES entry_cnt.
IF entry_cnt GT 1.
READ TABLE s_cpudt INDEX 1.
MOVE s_cpudt-low TO beg_date. "Assign Begin Date
READ TABLE s_cpudt INDEX entry_cnt.
IF s_cpudt-high IS INITIAL.
MOVE s_cpudt-low TO end_date. "Assign End Date
ELSE.
MOVE s_cpudt-high TO end_date. "Assign End Date
ENDIF.
ELSE.
MOVE s_cpudt-low TO beg_date. "Assign Begin Date
IF s_cpudt-high IS INITIAL.
MOVE s_cpudt-low TO end_date. "Assign End Date
ELSE.
MOVE s_cpudt-high TO end_date. "Assign End Date
ENDIF.
ENDIF.
ENDIF.
*- Put dates into a text field for an output visually appealing to the
*- user - MM/DD/YYYY
CONCATENATE beg_date4(2) '/' beg_date6(2) '/' beg_date+0(4)
INTO beg_date_text.
CONCATENATE end_date4(2) '/' end_date6(2) '/' end_date+0(4)
INTO end_date_text.
ENDFORM. " ASSIGN_DATES
&----
*& Form PROGRAM_AUTHORITY_CHECK
&----
FORM program_authority_check.
AUTHORITY-CHECK OBJECT 'S_PROGRAM'
ID 'P_GROUP' FIELD sy-cprog
ID 'P_ACTION' FIELD 'SUBMIT'.
IF sy-subrc NE 0.
MESSAGE e243(zp) WITH sy-cprog.
User not authorized to run program &
ENDIF.
ENDFORM. " PROGRAM_AUTHORITY_CHECK
&----
*& Form COMPANY_AUTHORITY_CHECK
&----
FORM company_authority_check.
LOOP AT s_bukrs.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD s_bukrs-low
ID 'ACTVT' FIELD '03'.
IF sy-subrc NE 0.
MESSAGE e072(aa) WITH s_bukrs-low.
No authorization for company code &
ENDIF.
ENDLOOP.
ENDFORM. " COMPANY_AUTHORITY_CHECK
&----
&----
*& Form DETERMINE_DUE_DATE
&----
FORM determine_due_date.
IF x_bseg-koart = 'K'
OR x_bseg-koart = 'D'.
MOVE-CORRESPONDING t_bkpf TO faede.
MOVE-CORRESPONDING x_bseg TO faede.
CALL FUNCTION 'DETERMINE_DUE_DATE'
EXPORTING
i_faede = faede
IMPORTING
e_faede = faede.
x_bseg-zfbdt = faede-netdt.
ENDIF.
ENDFORM. " DETERMINE_DUE_DATE
&----
*& Form GET_THE_LIFNR
&----
----
FORM get_the_lifnr.
IF s_bseg-lifnr IS INITIAL.
IF NOT t_bkpf-bvorg IS INITIAL.
PERFORM get_the_lifnr_other_co.
ELSE.
SWITCH = 1.
ENDIF.
ELSE.
SWITCH = 1.
ENDIF.
ENDFORM. " GET_THE_LIFNR
&----
*& Form GET_THE_LIFNR_OTHER_CO
&----
----
FORM get_the_lifnr_other_co.
DATA: cc_bukrs LIKE bseg-bukrs,
cc_belnr LIKE bseg-belnr,
cc_gjahr LIKE bseg-gjahr,
cc_buzei LIKE bseg-buzei.
MOVE t_bkpf-bvorg+0(10) TO cc_belnr.
MOVE t_bkpf-bvorg+10(4) TO cc_bukrs.
MOVE t_bkpf-gjahr TO cc_gjahr.
switch = false.
cc_buzei = 1.
DO.
CLEAR x_bseg.
SELECT SINGLE bukrs "Company 1
belnr "Doc Number 2
augdt "Clearing date
augbl "Clearing doc#
buzei
bschl "Post Key 3
koart " like bseg-koart, 14
shkzg "Debit/Credit 4
wrbtr "Amount 5
zuonr "Assignment
sgtxt "Text "Gene 13
kostl "Cost Center 6
aufnr "Internal Order Number 7
hkont "G/L Account 8
lifnr "Vendor Number 9
zfbdt "Due Date 10
zterm " like bseg-zterm, 15
zbd1t " like bseg-zbd1t, 18
zbd2t " like bseg-zbd2t, 19
zbd3t " like bseg-zbd3t, 20
zbd1p " like bseg-zbd1p, 16
zbd2p " like bseg-zbd2p, 17
rebzg " like bseg-zebzg, 21
rebzt " like bseg-rebzt, 22
ebeln "PO Doc Number 11
nplnr " 23
projk "WBS 12
zzreg_acct
FROM bseg INTO x_bseg
WHERE bukrs EQ cc_bukrs
AND belnr EQ cc_belnr
AND gjahr EQ cc_gjahr
AND buzei EQ cc_buzei.
*- If no record selected exit do loop
IF sy-subrc NE 0.
EXIT.
ENDIF.
IF NOT x_bseg-lifnr IS INITIAL.
s_bseg-lifnr = x_bseg-lifnr.
PERFORM determine_due_date.
s_bseg-zfbdt = x_bseg-zfbdt.
switch = true.
EXIT.
ENDIF.
cc_buzei = cc_buzei + 1.
ENDDO.
ENDFORM. " GET_THE_LIFNR_OTHER_CO
&----
*& Form APPEND_BSEG
&----
FORM append_bseg.
CASE t_bseg-bschl.
WHEN '21'.
WHEN '31'.
WHEN '22'.
WHEN '32'.
WHEN OTHERS.
APPEND t_bseg. CLEAR t_bseg.
ENDCASE.
ENDFORM. " APPEND_BSEG
&----
*& Form GET_BSEG
&----
text
----
FORM get_bseg.
CLEAR t_bseg. REFRESH t_bseg.
*- For performance purposes the program will loop at T_Bkpf and perform
*- single selects on BSEG for appropriate line items. This will avoid
*- full table scans on BSEG that may take many hours to complete.
LOOP AT t_bkpf.
CLEAR s_bseg. REFRESH s_bseg.
PERFORM get_bseg_into_table.
IF t_bkpf-blart <> 'WE'.
SORT s_bseg BY lifnr DESCENDING bschl.
ELSE.
SORT s_bseg. "scending bschl.
ENDIF.
*- Select records from BSEG for all possible line items
item_cnt = 0.
CLEAR vendor.
CLEAR due_dt.
LOOP AT s_bseg.
ADD 1 TO item_cnt.
*- The Voucher Register Report is only interested in the G/L entry
*- piece of BSEG. Therefor, we do not want to report the accounts,
*= cost centers or dollars for the A/P side of the entry. The A/P
*- side of the entry is stored in line item 001 of BSEG and the G/L
*- piece is stored in the remaining line items. Also note that the
*- vendor number is stored in the A/P part of the entry.
CASE item_cnt.
WHEN 1. "Get Vendor Number
*- Check for Doc Type 'WE' - This is the only doc type that
*- does not follow the same rules as the others. 'WE' is a
*- Goods receipt and the G/L Entry in BSEG always preceeds
*- the A/P entry, even if there are multiple line item
CASE t_bkpf-blart.
WHEN 'WE'. "Goods Receipt
*- Check that Account is in S_Hkont and
*- that Cost Center is in S_Kostl and
*- that Vendor is in S_Lifnr
IF s_bseg-hkont IN s_hkont AND
s_bseg-kostl IN s_kostl AND
s_bseg-lifnr IN s_lifnr.
MOVE-CORRESPONDING t_bkpf TO t_bseg.
MOVE-CORRESPONDING s_bseg TO t_bseg.
IF s_bseg-zfbdt IS INITIAL.
due_dt = t_bkpf-bldat.
ELSE.
due_dt = s_bseg-zfbdt.
ENDIF.
vendor = s_bseg-lifnr.
t_bseg-zfbdt = due_dt.
IF t_bseg-bstat = space.
MOVE t_bkpf-xreversal TO t_bseg-bstat.
ENDIF.
PERFORM append_bseg.
ENDIF.
WHEN OTHERS.
*- Check that vendor is in S_Lifnr
PERFORM get_the_lifnr.
IF s_bseg-lifnr IN s_lifnr.
vendor = s_bseg-lifnr.
x_bseg = s_bseg.
PERFORM determine_due_date.
IF x_bseg-zfbdt IS INITIAL.
due_dt = t_bkpf-bldat.
ELSE.
due_dt = x_bseg-zfbdt.
ENDIF.
IF switch = true.
IF s_bseg-hkont IN s_hkont AND
s_bseg-kostl IN s_kostl.
MOVE-CORRESPONDING t_bkpf TO t_bseg.
MOVE-CORRESPONDING s_bseg TO t_bseg.
t_bseg-lifnr = vendor.
t_bseg-zfbdt = due_dt.
IF t_bseg-bstat = space.
MOVE t_bkpf-xreversal TO t_bseg-bstat.
ENDIF.
PERFORM append_bseg.
ENDIF.
ENDIF.
ENDIF.
ENDCASE.
WHEN OTHERS. "Get G/L info
*- For Doc Types 'WE' that contain multiple line items the
*- G/L line preceeds the A/P. So for multiple line 'WE' docs
*- the odd number line items are the G/L line items.
CASE t_bkpf-blart.
WHEN 'WE'.
*- Check for odd line number
odd = item_cnt MOD 2.
IF odd NE 0.
*- Check that Account is in S_Hkont and
*- that Cost Center is in S_Kostl and
*- that Vendor is in S_Lifnr
IF s_bseg-hkont IN s_hkont AND
s_bseg-kostl IN s_kostl AND
s_bseg-lifnr IN s_lifnr.
MOVE-CORRESPONDING t_bkpf TO t_bseg.
MOVE-CORRESPONDING s_bseg TO t_bseg.
IF s_bseg-zfbdt IS INITIAL.
due_dt = t_bkpf-bldat.
ELSE.
due_dt = s_bseg-zfbdt.
ENDIF.
t_bseg-zfbdt = due_dt.
IF t_bseg-bstat = space.
MOVE t_bkpf-xreversal TO t_bseg-bstat.
ENDIF.
PERFORM append_bseg.
ENDIF.
ENDIF.
WHEN OTHERS.
*- Check that Account is in S_Hkont and
*- that Cost Center is in S_Kostl
IF s_bseg-hkont IN s_hkont AND
s_bseg-kostl IN s_kostl.
IF vendor IN s_lifnr.
MOVE-CORRESPONDING t_bkpf TO t_bseg.
MOVE-CORRESPONDING s_bseg TO t_bseg.
t_bseg-lifnr = vendor.
t_bseg-zfbdt = due_dt.
IF t_bseg-bstat = space.
MOVE t_bkpf-xreversal TO t_bseg-bstat.
ENDIF.
PERFORM append_bseg.
ENDIF.
ENDIF.
ENDCASE.
ENDCASE.
ENDLOOP.
ENDLOOP. "loop at T_Bkpf
CHECK NOT s_lifnr IS INITIAL.
DELETE t_bseg WHERE NOT lifnr IN s_lifnr.
DESCRIBE TABLE t_bseg LINES ln_h_bseg.
ENDFORM. " GET_BSEG
&----
*& Form GET_BSEG_INTO_TABLE
&----
----
FORM get_bseg_into_table.
SELECT bukrs "Company 1
belnr "Doc Number 2
augdt "Clearing date
augbl "Clearing doc#
buzei
bschl "Post Key 3
koart " like bseg-koart, 14
shkzg "Debit/Credit 4
wrbtr "Amount 5
zuonr "Assignment
sgtxt "Text "Gene 13
kostl "Cost Center 6
aufnr "Internal Order Number 7
hkont "G/L Account 8
lifnr "Vendor Number 9
zfbdt "Due Date 10
zterm " like bseg-zterm, 15
zbd1t " like bseg-zbd1t, 18
zbd2t " like bseg-zbd2t, 19
zbd3t " like bseg-zbd3t, 20
zbd1p " like bseg-zbd1p, 16
zbd2p " like bseg-zbd2p, 17
rebzg " like bseg-zebzg, 21
rebzt " like bseg-rebzt, 22
ebeln "PO Doc Number 11
nplnr " LIKE BSEG-nplnr,
projk "WBS 12
zzreg_acct " SCM Reg Account
FROM bseg INTO TABLE s_bseg
WHERE bukrs EQ t_bkpf-bukrs
AND belnr EQ t_bkpf-belnr
AND gjahr EQ t_bkpf-gjahr.
ENDFORM. " GET_BSEG_INTO_TABLE
&----
*& Form SELECT_REGUH
&----
FORM select_reguh.
GET TIME.
start_select_reguh = sy-uzeit.
IF ln_h_bseg <> 0.
SELECT zaldt
rzawe
zbukr
lifnr
vblnr
FROM reguh
INTO CORRESPONDING FIELDS OF TABLE h_reguh
FOR ALL ENTRIES IN t_bseg
WHERE zbukr = t_bseg-bukrs AND
zaldt = t_bseg-augdt AND
lifnr = t_bseg-lifnr AND
vblnr = t_bseg-augbl.
IF sy-subrc NE 0.
FORMAT INTENSIFIED OFF COLOR COL_TOTAL.
MESSAGE i417 WITH text-049 ' ' ' ' ' '.
WRITE: / text-049.
No entries selected from REGUH
FORMAT COLOR OFF.
ENDIF.
SORT h_reguh BY zbukr lifnr vblnr.
ELSE.
FORMAT INTENSIFIED OFF COLOR COL_TOTAL.
MESSAGE i417 WITH text-056 ' ' ' ' ' '.
WRITE: / text-056.
No entries selected from REGUH because BSEG is empty.
FORMAT COLOR OFF.
ENDIF.
GET TIME.
end_select_reguh = sy-uzeit.
elapsed6 = elapsed6 +
( end_select_reguh - start_select_reguh ).
DESCRIBE TABLE h_reguh LINES ln_h_reguh.
IF ln_h_reguh > 0.
LOOP AT t_bseg.
READ TABLE h_reguh WITH KEY zbukr = t_bseg-bukrs
lifnr = t_bseg-lifnr
vblnr = t_bseg-augbl
BINARY SEARCH.
IF sy-subrc = 0.
t_bseg-vblnr = h_reguh-vblnr.
t_bseg-zaldt = h_reguh-zaldt.
t_bseg-rzawe = h_reguh-rzawe.
MODIFY t_bseg.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " SELECT_REGUH
&----
*& Form SELECT_PAYR
&----
FORM select_payr.
IF ln_h_reguh <> 0.
LOOP AT h_reguh.
payr_list-zaldt = h_reguh-zaldt.
payr_list-zbukr = h_reguh-zbukr.
payr_list-lifnr = h_reguh-lifnr.
payr_list-vblnr = h_reguh-vblnr.
COLLECT payr_list.
ENDLOOP.
SORT payr_list BY zbukr lifnr vblnr.
GET TIME.
start_select_payr = sy-uzeit.
SELECT zbukr
chect
zaldt
lifnr
vblnr
voidd
FROM payr
INTO CORRESPONDING FIELDS OF TABLE h_payr
FOR ALL ENTRIES IN payr_list
WHERE zbukr = payr_list-zbukr AND
lifnr = payr_list-lifnr AND
vblnr = payr_list-vblnr.
IF sy-subrc NE 0.
FORMAT INTENSIFIED OFF COLOR COL_TOTAL.
MESSAGE i417 WITH text-053 ' ' ' ' ' '.
WRITE: / text-053.
No entries selected from PAYR
FORMAT COLOR OFF.
ENDIF.
SORT h_payr BY zbukr lifnr vblnr.
GET TIME.
end_select_payr = sy-uzeit.
elapsed10 = elapsed10 +
( end_select_payr - start_select_payr ).
ELSE.
FORMAT INTENSIFIED OFF COLOR COL_TOTAL.
MESSAGE i417 WITH text-057 ' ' ' ' ' '.
WRITE: / text-057.
No entries selected from PAYR because BSEG empty
FORMAT COLOR OFF.
ENDIF.
DESCRIBE TABLE h_payr LINES ln_h_payr.
IF ln_h_payr > 0.
LOOP AT t_bseg.
READ TABLE h_payr WITH KEY zbukr = t_bseg-bukrs
lifnr = t_bseg-lifnr
vblnr = t_bseg-augbl
BINARY SEARCH.
IF sy-subrc = 0.
t_bseg-chect = h_payr-chect.
MODIFY t_bseg.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " SELECT_PAYR
&----
*& Module STATUS_0100 OUTPUT
&----
Display output in ALV Grid
----
MODULE status_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR 'xxx'.
DATA: gr_alvgrid TYPE REF TO cl_gui_alv_grid,
gc_cc_name TYPE scrfname VALUE 'HOLDALV',
gr_contain TYPE REF TO cl_gui_custom_container,
gt_fieldcat TYPE lvc_t_fcat,
ls_fieldcat TYPE lvc_s_fcat,
gr_variant TYPE disvariant,
gs_layout TYPE lvc_s_layo.
Create or refresh grid as necessary (do not expect to encounter
refresh in this report, but code added just in case)
IF gr_alvgrid IS INITIAL.
Create custom container instance
CREATE OBJECT gr_contain EXPORTING container_name = gc_cc_name.
Creating ALV Grid instance
CREATE OBJECT gr_alvgrid EXPORTING i_parent = gr_contain.
Generate fieldcatalog from structure
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZTGFR001RP0OUT'
CHANGING
ct_fieldcat = gt_fieldcat[]
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
Field Catalog creation for ALV failed
MESSAGE e417 WITH text-e01.
ENDIF.
Adjust field catalog
LOOP AT gt_fieldcat INTO ls_fieldcat.
CASE ls_fieldcat-fieldname.
WHEN 'MANDT'.
ls_fieldcat-tech = space.
ls_fieldcat-coltext = 'Client'.
ls_fieldcat-outputlen = '5'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'BUKRS'.
ls_fieldcat-coltext = 'Comp'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'BELNR'.
ls_fieldcat-coltext = 'Doc Number'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'BSCHL'.
ls_fieldcat-tech = space.
ls_fieldcat-coltext = 'PK'.
ls_fieldcat-outputlen = '5'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'SHKZG'.
ls_fieldcat-coltext = 'D/C'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'AUFNR'.
ls_fieldcat-coltext = 'I Order'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'PROJK'.
ls_fieldcat-coltext = 'WBS'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'NAME1'.
ls_fieldcat-coltext = 'Vendor Name'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'ZFBDT'.
ls_fieldcat-coltext = 'Due Date'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'EBELN'.
ls_fieldcat-coltext = 'PO Number'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'BLART'.
ls_fieldcat-coltext = 'DTY'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'BLDAT'.
ls_fieldcat-coltext = 'Invoice Date'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'BUDAT'.
ls_fieldcat-coltext = 'Posting Date'.
MODIFY gt_fieldcat FROM ls_fieldcat.
WHEN 'MONAT'.
ls_fieldcat-coltext = 'Period'.
MODIFY gt_fieldcat FROM ls_fieldcat.
ENDCASE.
ENDLOOP.
Layout
****If desired, add layout considerations here using gs_layout
Allow variants/layouts to be selected/changed/saved
gr_variant-report = sy-repid.
gr_variant-variant = alvvar.
*
CALL METHOD gr_alvgrid->set_table_for_first_display
EXPORTING
is_variant = gr_variant
i_save = 'A'
i_structure_name =
is_layout = gs_layout
CHANGING
it_outtab = iwksheet[]
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
ALV display failed
MESSAGE e417 WITH text-e02.
ENDIF.
ELSE.
Refresh the ALV grid display
CALL METHOD gr_alvgrid->refresh_table_display
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
ALV refresh failed
MESSAGE e417 WITH text-e03.
ENDIF.
*
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
Exit ALV Grid and display output report
----
MODULE user_command_0100 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE TO SCREEN 0.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
‎2008 Feb 12 3:18 AM
For testing purpose simply write only belnr alone(then check whether values are coming)?
WRITE:/ t_bseg-belnr.
*WRITE:/ t_bseg-zfbdt UNDER text-020,
*t_bseg-belnr UNDER text-021,
*t_bseg-bldat UNDER text-022,
*t_bseg-xblnr UNDER text-023,
*t_bseg-lifnr UNDER text-039,
*t_bseg-name1(18) UNDER text-025,
*t_bseg-blart UNDER text-026,
*t_bseg-bschl UNDER text-027,
*t_bseg-hkont UNDER text-031,
*t_bseg-kostl UNDER text-032,
*t_bseg-aufnr UNDER text-028.
‎2008 Feb 12 3:18 AM
For testing purpose simply write only belnr alone(then check whether values are coming)?
WRITE:/ t_bseg-belnr.
*WRITE:/ t_bseg-zfbdt UNDER text-020,
*t_bseg-belnr UNDER text-021,
*t_bseg-bldat UNDER text-022,
*t_bseg-xblnr UNDER text-023,
*t_bseg-lifnr UNDER text-039,
*t_bseg-name1(18) UNDER text-025,
*t_bseg-blart UNDER text-026,
*t_bseg-bschl UNDER text-027,
*t_bseg-hkont UNDER text-031,
*t_bseg-kostl UNDER text-032,
*t_bseg-aufnr UNDER text-028.
‎2008 Feb 12 3:47 AM
Thank you for the suggestion. It works and I found every items were display ok until the statement
119 t_bseg-wrbtr.
After execute the above statement, the Doc Number were erased. Do you know how to fix it?
Thanks,
Helen
WRITE:/ t_bseg-zfbdt UNDER text-020,
t_bseg-belnr UNDER text-021,
t_bseg-bldat UNDER text-022,
t_bseg-xblnr UNDER text-023,
t_bseg-lifnr UNDER text-039,
t_bseg-name1(18) UNDER text-025,
t_bseg-blart UNDER text-026,
t_bseg-bschl UNDER text-027,
t_bseg-hkont UNDER text-031,
t_bseg-kostl UNDER text-032,
t_bseg-aufnr UNDER text-028,
119 t_bseg-wrbtr.
‎2008 Feb 12 3:57 AM
I think this is because of UNDER while something get overwritting.
may be change yor write statement this way and try
WRITE:/ 0(10) text-020,
11(10) text-021,
......
.....
......
100(10) text-032.
write 😕 0(10) t_bseg-bldat,
11(10) t_bseg-xblnr,
......
.......
119(10) t_bseg-wrbtr.
aRs