Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Pls help me to debug a program

Former Member
0 Likes
1,043

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

1 ACCEPTED SOLUTION
Read only

former_member194669
Active Contributor
0 Likes
768

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.

3 REPLIES 3
Read only

former_member194669
Active Contributor
0 Likes
769

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.

Read only

0 Likes
768

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.

Read only

0 Likes
768

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