You are on page 1of 29

*&---------------------------------------------------------------------*

*& Report Z5
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zout_invbal MESSAGE-ID 8i.

*REPORT ZOUT_MOD MESSAGE-ID 8I.

***Table Declaration
TABLES: lips, "SD document: Delivery: Item data
vbrp, "Billing Document: Item Data
vbrk, "Billing Document: Header Data
vbfa, "Sales Document Flow
kna1, "General Data in Customer Master
t052, "Terms of Payment
bsid, "Accounting: Secondary Index for Customers
bsad. "Accounting: Secondary Index for Customers (Cleared Items)

***Types Declaration
TYPE-POOLS: slis.

***Global data
DATA: layout TYPE slis_layout_alv.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
*DATA: LT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE.

DATA: i_list_top_of_page TYPE slis_t_listheader.

DATA: lt_events TYPE slis_t_event,


ls_event TYPE slis_alv_event.

***Internal Tables Declaration

DATA : BEGIN OF i_t052 OCCURS 0.


INCLUDE STRUCTURE t052.
DATA : END OF i_t052.

DATA : BEGIN OF i_likp OCCURS 0,


vbeln LIKE likp-vbeln,
lfdat LIKE likp-lfdat,
kunnr LIKE likp-kunnr,
kunag LIKE likp-kunag.
DATA : END OF i_likp.
DATA : BEGIN OF i_vbrk OCCURS 0.
INCLUDE STRUCTURE vbrk.
DATA : END OF i_vbrk.

DATA : BEGIN OF i_vbrp OCCURS 0.


INCLUDE STRUCTURE vbrp.
DATA : END OF i_vbrp.

DATA : BEGIN OF i_vbrp1 OCCURS 0,


* INCLUDE STRUCTURE VBRP.
vbeln LIKE vbrp-vbeln,
prctr LIKE vbrp-prctr,
END OF i_vbrp1.

DATA : BEGIN OF i_vbfa OCCURS 0.


INCLUDE STRUCTURE vbfa.
DATA : END OF i_vbfa.

DATA : BEGIN OF i_bsid OCCURS 0.


INCLUDE STRUCTURE bsid.
DATA : END OF i_bsid.
DATA : BEGIN OF i_knvv OCCURS 0,
kunnr LIKE knvv-kunnr,
eikto LIKE knvv-eikto,
END OF i_knvv.
DATA : BEGIN OF i_bsid_inv OCCURS 0.
INCLUDE STRUCTURE bsid.
DATA : END OF i_bsid_inv.

DATA : BEGIN OF i_bsid_adj OCCURS 0.


INCLUDE STRUCTURE bsid.
DATA : END OF i_bsid_adj.

DATA : BEGIN OF i_bsid_adjs OCCURS 0.


INCLUDE STRUCTURE bsid.
DATA : END OF i_bsid_adjs.

*DATA : BEGIN OF I_BSAD1 OCCURS 0.


* INCLUDE STRUCTURE BSAD.
*DATA : END OF I_BSAD1.
*
DATA : BEGIN OF i_bsad OCCURS 0.
INCLUDE STRUCTURE bsad.
DATA : END OF i_bsad.

DATA : BEGIN OF i_bsad1 OCCURS 0,


bukrs LIKE bsad-bukrs,
kunnr LIKE bsad-kunnr,
zu_vb TYPE char30,
umsks LIKE bsad-umsks,
umskz LIKE bsad-umskz,
augdt LIKE bsad-augdt,
augbl LIKE bsad-augbl,
zuonr LIKE bsad-zuonr,
gjahr LIKE bsad-gjahr,
belnr LIKE bsad-belnr,
buzei LIKE bsad-buzei,
budat LIKE bsad-budat,
bldat LIKE bsad-bldat,
cpudt LIKE bsad-cpudt,
waers LIKE bsad-waers,
xblnr LIKE bsad-xblnr,
*XBLNR TYPE CHAR10,
blart LIKE bsad-blart,
monat LIKE bsad-monat,
bschl LIKE bsad-bschl,
zumsk LIKE bsad-zumsk,
shkzg LIKE bsad-shkzg,
gsber LIKE bsad-gsber,
mwskz LIKE bsad-mwskz,
dmbtr TYPE j_1iexchdr-addlval,
wrbtr LIKE bsad-wrbtr,
*MWSTS LIKE MWSTS
*WMWST LIKE WMWST
*BDIFF LIKE BDIFF
*BDIF2 LIKE BDIF2
sgtxt LIKE bsad-sgtxt,
*PROJN LIKE PROJN
aufnr LIKE bsad-aufnr,
*ANLN1 LIKE ANLN1
*ANLN2 LIKE ANLN2
saknr LIKE bsad-saknr,
hkont LIKE bsad-hkont,
fkont LIKE bsad-fkont,
*FILKD LIKE FILKD
*ZFBDT LIKE ZFBDT
zterm LIKE bsad-zterm,
*ZBD1T LIKE ZBD1T
*ZBD2T LIKE ZBD2T
*ZBD3T LIKE ZBD3T
*ZBD1P LIKE ZBD1P
*ZBD2P LIKE ZBD2P
*SKFBT LIKE SKFBT
*SKNTO LIKE SKNTO
*WSKTO LIKE WSKTO
*ZLSCH LIKE ZLSCH
*ZLSPR LIKE ZLSPR
*ZBFIX LIKE ZBFIX
*HBKID LIKE HBKID
bvtyp LIKE bsad-bvtyp,
*REBZG LIKE REBZG
*REBZJ LIKE REBZJ
*REBZZ LIKE REBZZ
*SAMNR LIKE SAMNR
*ANFBN LIKE ANFBN
*ANFBJ LIKE ANFBJ
*ANFBU LIKE ANFBU
*ANFAE LIKE ANFAE
*MANSP LIKE MANSP
mschl LIKE bsad-mschl,
*MADAT LIKE MADAT
*MANST LIKE MANST
*MABER LIKE MABER
*XNETB LIKE XNETB
*XANET LIKE XANET
*XCPDD LIKE XCPDD
*XINVE LIKE XINVE
*XZAHL LIKE XZAHL
*MWSK1 LIKE MWSK1
*DMBT1 LIKE DMBT1
*WRBT1 LIKE WRBT1
*MWSK2 LIKE MWSK2
*DMBT2 LIKE DMBT2
*WRBT2 LIKE WRBT2
*MWSK3 LIKE MWSK3
*DMBT3 LIKE DMBT3
*WRBT3 LIKE WRBT3
bstat LIKE bsad-bstat,
vbund LIKE bsad-vbund,
vbeln LIKE bsad-vbeln,
*REBZT LIKE REBZT
*INFAE LIKE INFAE
*STCEG LIKE STCEG
*EGBLD LIKE EGBLD
*EGLLD LIKE EGLLD
*RSTGR LIKE RSTGR
*XNOZA LIKE XNOZA
*VERTT LIKE VERTT
*VERTN LIKE VERTN
*VBEWA LIKE VBEWA
*WVERW LIKE WVERW
*PROJK LIKE PROJK
*FIPOS LIKE FIPOS
*NPLNR LIKE NPLNR
*AUFPL LIKE AUFPL
*APLZL LIKE APLZL
END OF i_bsad1.
DATA: i_bsad5 LIKE i_bsad1 OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF i_j_1iexchdr OCCURS 0, "Excise invoice header detail
rdoc LIKE j_1iexchdr-rdoc, "Reference Document 1
exnum LIKE j_1iexchdr-exnum, "Official Excise Document Number
exyear LIKE j_1iexchdr-exyear. "Excise Year
DATA : END OF i_j_1iexchdr.

DATA : BEGIN OF i_j_1irg23d OCCURS 0, "RG23D register for the depot


trntyp LIKE j_1irg23d-trntyp, "Excise Transaction Type
vbeln LIKE j_1irg23d-vbeln, "Delivery
posnr LIKE j_1irg23d-posnr, "Delivery item
depexnum LIKE j_1irg23d-exnum, "Official Excise Document Number
depexyear LIKE j_1irg23d-exyear. ""Excise Year
DATA : END OF i_j_1irg23d.

DATA : BEGIN OF i_kna1 OCCURS 0,


kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1.
DATA : END OF i_kna1.

DATA: l_dmbtr LIKE bsid-dmbtr.

DATA : BEGIN OF i_final OCCURS 0,


kunnr LIKE likp-kunnr, "SHIP TO PARTY
zu_vb TYPE char30,
zuonr LIKE bsid-zuonr, "assingment no
vbelv LIKE vbrp-vbeln, "REFERENCE NO
shkzg LIKE bsid-shkzg,
**************************Added on 29.09.2008 by TCS*************************
* XBLNR LIKE BSID-XBLNR,
xblnr TYPE char10,
*****************************************************************************
vbeln LIKE vbrp-vbeln, "INVOICE NO
blart LIKE bsid-blart,
hkont LIKE bsid-hkont,
fkart LIKE vbrk-fkart, "DOCUMENT TYPE
vkorg LIKE vbrk-vkorg, "Sale Org
vtweg LIKE vbrk-vtweg, "Dis Channel
vkbur LIKE vbrp-vkbur, "Sales Office
spart LIKE vbrp-spart, "Division (SBU)
werks LIKE vbrp-werks, "Plant
prctr LIKE vbrp-prctr, " PROFIT CENTER
kdgrp LIKE vbrk-kdgrp, "CUST. GRP
eikto LIKE knvv-eikto, " PROFIT CENTER
kunnr_name LIKE kna1-name1, "SHIP TO PARTY NAME
kunag LIKE likp-kunag, "SOLD TO PARTY
kunag_name LIKE kna1-name1, "SOLD TO PARTY NAME
zfbdt LIKE bsid-zfbdt, "Base Line Date
zterm LIKE bsid-zterm, "Terms of Payment
ztag1 LIKE t052-ztag1, "Credit Days
lfdat LIKE likp-lfdat, "DELIVERY DATE
lfdat1 LIKE likp-lfdat, "DELIVERY DATE
exnum LIKE j_1iexcdtl-exnum, "Excise No
vbso LIKE vbfa-vbelv, "SALES ORDER NO
waers LIKE bsid-waers,
invamt TYPE p DECIMALS 2, "TOTAL INVOICE VALUE
expamt TYPE p DECIMALS 2, "TOTAL INVOICE VALUE IN FOREIGN
CURRENCY
disc_cr TYPE p DECIMALS 2, "Disc. Credit Memo
retro_cr TYPE p DECIMALS 2, "Retro.Credit Memo
oth_cr TYPE p DECIMALS 2, "Other Credit Memo
oth_expcr TYPE p DECIMALS 2, "Other Credit Memo IN F CURR
reb_cr TYPE p DECIMALS 2, "rebate Credit Memo
oth_dr TYPE p DECIMALS 2, "Other Debit Memo
oth_expdr TYPE p DECIMALS 2, "Other Debit Memo
retro_dr TYPE p DECIMALS 2, "retro Debit Memo
oth_adj TYPE p DECIMALS 2, "other payment/adjustment
oth_expadj TYPE p DECIMALS 2, "other payment/adjustment IN F CURR
tot_inv TYPE p DECIMALS 2, "TOTAL INVOICE
tot_expinv TYPE p DECIMALS 2, "TOTAL INVOICE IN FOREIGN CURR
day_30 TYPE p DECIMALS 2,
day_60 TYPE p DECIMALS 2,
day_90 TYPE p DECIMALS 2,
day_120 TYPE p DECIMALS 2,
day_150 TYPE p DECIMALS 2,
day_180 TYPE p DECIMALS 2,
day_365 TYPE p DECIMALS 2,
day_abv TYPE p DECIMALS 2,
day_due TYPE i,
sgtxt LIKE bsid-sgtxt,
vbeln_new LIKE vbrp-vbeln.

DATA : END OF i_final.

DATA : BEGIN OF i_final1 OCCURS 0.


INCLUDE STRUCTURE i_final.
DATA : END OF i_final1.

DATA : BEGIN OF i_final2 OCCURS 0.


INCLUDE STRUCTURE i_final.
DATA : END OF i_final2.

DATA : BEGIN OF i_final3 OCCURS 0.


INCLUDE STRUCTURE i_final.
DATA : END OF i_final3.

DATA : xdate TYPE sy-datum.


DATA : g_vtweg LIKE i_final-vtweg.
DATA : g_vkbur LIKE i_final-vkbur.
DATA : g_kunag LIKE i_final-kunag.

*&---------------------------------------------------------------------*
* SELECTION-SCREEN DESIGN *
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1. "WITH FRAME TITLE 001.
SELECT-OPTIONS: s_werks FOR lips-werks, "PLANT
s_vkorg FOR vbrk-vkorg, "Sale Org
s_vtweg FOR vbrk-vtweg, "Dis Channel
s_vkbur FOR vbrp-vkbur, "Sales Office
s_spart FOR vbrp-spart, "Division (SBU)
s_kdgrp FOR vbrk-kdgrp, "Cust. Group
s_kunag FOR vbrk-kunag. "Sold To Party
PARAMETERS: p_date LIKE sy-datum OBLIGATORY DEFAULT sy-datum, "System Date
p_lcbg AS CHECKBOX. "LC/BANK GURANTEE

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.

SELECT-OPTIONS: account for bsid-hkont obligatory.

SELECTION-SCREEN END OF BLOCK b2.

*&---------------------------------------------------------------------*
* INITIALIZATION EVENT *
*&---------------------------------------------------------------------*
**Use this EVENT to initialize the SELECTION-SCREEN variables
INITIALIZATION.

MOVE 'TOP_OF_PAGE' TO ls_event-name.


MOVE 'TOP_OF_PAGE' TO ls_event-form.
APPEND ls_event TO lt_events.

*&---------------------------------------------------------------------*
* AT SELECTION-SCREEN EVENT *
*&---------------------------------------------------------------------*
**Use this EVENT to validate SELECTION-SCREEN
AT SELECTION-SCREEN.
* PERFORM F_VALIDATE.

*&---------------------------------------------------------------------*
* START-OF-SELECTION EVENT *
*&---------------------------------------------------------------------*
**Use this EVENT to Select, Process the data
START-OF-SELECTION.
xdate = sy-datum.

PERFORM f_selection_data.
**Use this FORM to write all the database selections. If necessary write
**FORMs inside that FORM
PERFORM f_process-data.
**Use this FORM to write all the processing logic. If necessary write
**FORMs inside that FORM

*&---------------------------------------------------------------------*
* END-OF-SELECTION EVENT *
*&---------------------------------------------------------------------*
**Use this EVENt to display data
END-OF-SELECTION.
PERFORM f_create_field_catalog.
PERFORM f_merge_field_catalog CHANGING i_fieldcat.
PERFORM f_comment_build USING i_list_top_of_page.

sort i_final1 by hkont.

PERFORM f_list_display TABLES i_final1.


**Use this FORM to display data. If necessary write FORMs inside that
**FORM

*&---------------------------------------------------------------------*
* TOP-OF-PAGE EVENT *
*&---------------------------------------------------------------------*
**Use this EVENT to display page header
TOP-OF-PAGE.
*&---------------------------------------------------------------------*
*& Form F_SELECTION_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_selection_data .

** select all data from open item bsid


IF p_lcbg = 'X'.
SELECT * FROM bsid INTO TABLE i_bsid
WHERE bukrs = '8888'
AND kunnr IN s_kunag
** AND GSBER IN S_WERKS
AND budat LE p_date
AND ( hkont = 'RE10000' OR
* hkont = 'A400000' OR
* hkont = 'A400001' or
hkont = '0000015002' OR
hkont = '0000181000' OR
hkont = '0000012983' OR
hkont = '0000012984' OR
hkont = '0000012985' OR
hkont = '0000012986' OR
hkont = '0000012987' OR
hkont = '0000012988' OR
hkont = '0000015003' OR
hkont = '0000015008' OR
hkont = '0000016108' OR
hkont = '0000026201' OR
hkont = '0000026202' OR
hkont = '0000026203' OR
hkont = '0000026204' OR

hkont = '0000024201' OR
hkont = '0000024202' OR
hkont = '0000024203' OR

hkont = '0000140000' OR
hkont = '0000140001' OR
hkont = '0000140002' OR
hkont = '0000181020' OR

hkont = '0000015020' OR
hkont = '0000015021' OR
hkont = '0000015022' OR
hkont = '0000181020' OR

hkont = '0000015010' OR
hkont = '0000015011' OR
hkont = '0000015012' OR
hkont = '0000181010' OR

hkont = '0000015030' OR
hkont = '0000015031' OR
hkont = '0000015032' OR
hkont = '0000181030' OR

hkont = '0000015040' OR
hkont = '0000015041' OR
hkont = '0000015042' OR
hkont = '0000181040' OR

hkont = '0000151099' OR
hkont = '0000151000' OR
hkont = '0000181060' OR
hkont = '0000050002'

or hkont in account ).

*********** FOR BSAD TABLE IN PCBLD = 'X' CONDITION **


SELECT * FROM bsad INTO CORRESPONDING FIELDS OF TABLE i_bsad1
WHERE bukrs = '8888'
AND kunnr IN s_kunag
** AND GSBER IN S_WERKS
AND budat LE p_date
AND ( hkont = 'RE10000' OR
* hkont = 'A400000' OR
* hkont = 'A400001' or
hkont = '0000015002' OR
hkont = '0000181000' OR
hkont = '0000012983' OR
hkont = '0000012984' OR
hkont = '0000012985' OR
hkont = '0000012986' OR
hkont = '0000012987' OR
hkont = '0000012988' OR
hkont = '0000015003' OR
hkont = '0000015008' OR
hkont = '0000016108' OR
hkont = '0000026201' OR
hkont = '0000026202' OR
hkont = '0000026203' OR
hkont = '0000026204' OR

hkont = '0000024201' OR
hkont = '0000024202' OR
hkont = '0000024203' OR

hkont = '0000140000' OR
hkont = '0000140001' OR
hkont = '0000140002' OR
hkont = '0000181020' OR

hkont = '0000015020' OR
hkont = '0000015021' OR
hkont = '0000015022' OR
hkont = '0000181020' OR

hkont = '0000015010' OR
hkont = '0000015011' OR
hkont = '0000015012' OR
hkont = '0000181010' OR

hkont = '0000015030' OR
hkont = '0000015031' OR
hkont = '0000015032' OR
hkont = '0000181030' OR

hkont = '0000015040' OR
hkont = '0000015041' OR
hkont = '0000015042' OR
hkont = '0000181040' OR
hkont = '0000151099' OR
hkont = '0000151000' OR
hkont = '0000181060' OR
hkont = '0000050002'

or hkont in account ).

ELSE.
SELECT * FROM bsid INTO TABLE i_bsid
WHERE bukrs = '8888'
AND kunnr IN s_kunag
AND budat LE p_date
AND ( hkont = 'RE10000' OR
* hkont = 'A400000' OR
* hkont = 'A400001' or
hkont = '0000015002' OR
hkont = '0000181000' OR
hkont = '0000015003' OR
hkont = '0000015008' OR
hkont = '0000016108' OR
hkont = '0000026201' OR
hkont = '0000026202' OR
hkont = '0000026203' OR
hkont = '0000026204' OR

hkont = '0000024201' OR
hkont = '0000024202' OR
hkont = '0000024203' OR

hkont = '0000140000' OR
hkont = '0000140001' OR
hkont = '0000140002' OR
hkont = '0000181020' OR

hkont = '0000015020' OR
hkont = '0000015021' OR
hkont = '0000015022' OR
hkont = '0000181020' OR

hkont = '0000015010' OR
hkont = '0000015011' OR
hkont = '0000015012' OR
hkont = '0000181010' OR

hkont = '0000015030' OR
hkont = '0000015031' OR
hkont = '0000015032' OR
hkont = '0000181030' OR

hkont = '0000015040' OR
hkont = '0000015041' OR
hkont = '0000015042' OR
hkont = '0000181040' OR

hkont = '0000151099' OR
hkont = '0000151000' OR
hkont = '0000181060' OR
hkont = '0000050002'

or hkont in account ) .

**************** UPDATE BSAD TABLE FOR PCBLD <> 'X' CONDITION ****

SELECT * FROM bsad INTO CORRESPONDING FIELDS OF TABLE i_bsad1


WHERE bukrs = '8888'
AND kunnr IN s_kunag
* and budat le p_date
AND ( hkont = 'RE10000' OR
* hkont = 'A400000' OR
* hkont = 'A400001' or
hkont = '0000015002' OR
hkont = '0000181000' OR
hkont = '0000015003' OR
hkont = '0000015008' OR
hkont = '0000016108' OR
hkont = '0000026201' OR
hkont = '0000026202' OR
hkont = '0000026203' OR
hkont = '0000026204' OR

hkont = '0000024201' OR
hkont = '0000024202' OR
hkont = '0000024203' OR

hkont = '0000140000' OR
hkont = '0000140001' OR
hkont = '0000140002' OR
hkont = '0000181020' OR

hkont = '0000015020' OR
hkont = '0000015021' OR
hkont = '0000015022' OR
hkont = '0000181020' OR

hkont = '0000015010' OR
hkont = '0000015011' OR
hkont = '0000015012' OR
hkont = '0000181010' OR

hkont = '0000015030' OR
hkont = '0000015031' OR
hkont = '0000015032' OR
hkont = '0000181030' OR
hkont = '0000015040' OR
hkont = '0000015041' OR
hkont = '0000015042' OR
hkont = '0000181040' OR

hkont = '0000151099' OR
hkont = '0000151000' OR
hkont = '0000181060' OR
hkont = '0000050002'

or hkont in account ) .

ENDIF.

SELECT zterm ztag1 INTO CORRESPONDING


FIELDS OF TABLE i_t052
FROM t052
FOR ALL ENTRIES IN i_bsid
WHERE zterm = i_bsid-zterm.

SELECT * FROM vbrk INTO TABLE i_vbrk


FOR ALL ENTRIES IN i_bsid
WHERE vbeln = i_bsid-belnr
AND vkorg IN s_vkorg
AND vtweg IN s_vtweg
AND kdgrp IN s_kdgrp
AND kunag IN s_kunag
AND fksto = ' '.
IF NOT i_vbrk[] IS INITIAL.
* select * from vbrp into table i_vbrp
* for all entries in i_vbrk
* where vbeln = i_vbrk-vbeln.
* and werks in s_werks
* AND VKBUR IN S_VKBUR
* and spart in s_spart.

* select * from vbfa into table i_vbfa


* for all entries in i_vbrk
* where vbeln = i_vbrk-vbeln.
* and vbtyp_n = 'M'.
** AND VBTYP_V = 'J'
DELETE i_vbfa WHERE vbtyp_n <> 'M'.
ENDIF.

* select rdoc exnum exdat exyear from j_1iexchdr


* into corresponding fields of table i_j_1iexchdr
* for all entries in i_vbrk
* where rdoc = i_vbrk-vbeln.
IF NOT i_vbfa[] IS INITIAL.
SELECT vbeln lfdat kunnr kunag FROM likp
INTO CORRESPONDING FIELDS
OF TABLE i_likp
FOR ALL ENTRIES IN i_vbfa
WHERE vbeln = i_vbfa-vbelv.
ENDIF.

* select trntyp vbeln posnr depexnum depexyear


* from j_1irg23d
* into table i_j_1irg23d
* for all entries in i_vbfa
* where vbeln = i_vbfa-vbelv.

* SELECT KUNNR NAME1 FROM KNA1


* INTO CORRESPONDING FIELDS
* OF TABLE I_KNA1
* FOR ALL ENTRIES IN I_BSID
* WHERE ( KUNNR = I_LIKP-KUNAG OR KUNNR = I_LIKP-KUNNR OR KUNNR = I_BSID-
KUNNR ).
*
ENDFORM. " F_SELECTION_DATA
*&---------------------------------------------------------------------*
*& Form F_PROCESS-DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_process-data .
DATA : wa_bsid LIKE i_bsid.
DATA : l_tabix LIKE sy-tabix,
l_date LIKE sy-datum,
l_diff TYPE i.
**************** start *************
LOOP AT i_bsad1.
IF i_bsad1-shkzg = 'S'.
i_bsad1-dmbtr = i_bsad1-dmbtr.
i_bsad1-wrbtr = i_bsad1-wrbtr.
ELSE.
i_bsad1-dmbtr = i_bsad1-dmbtr * -1.
i_bsad1-wrbtr = i_bsad1-wrbtr * -1.
ENDIF.
MODIFY i_bsad1.
ENDLOOP.
* loop at i_bsad1.
*if not i_bsad1-xblnr is initial.
* if i_bsad1-xblnr+0(4) = '0000'.
* i_bsad1-zu_vb = i_bsad1-xblnr+4(6).
* else.
* i_bsad1-zu_vb = i_bsad1-xblnr.
* endif.
*else.
** concatenate i_final-zuonr i_final-vbeln into i_final-zu_vb.
* i_bsad1-zu_vb = i_bsad1-vbeln.
*
*endif.
*modify i_bsad1.
*
* endloop.
* sort i_bsad1 by kunnr augbl.
i_bsad5[] = i_bsad1[].
DELETE i_bsad5 WHERE budat LE p_date.
DELETE i_bsad1 WHERE budat GT p_date.
SORT i_bsad5 BY kunnr augbl.
LOOP AT i_bsad1.
READ TABLE i_bsad5 WITH KEY kunnr = i_bsad1-kunnr
augbl = i_bsad1-augbl.
IF sy-subrc EQ 0.
i_bsad1-augbl = i_bsad1-xblnr.
MODIFY i_bsad1.
ENDIF.
ENDLOOP.
SORT i_bsad1 BY kunnr augdt augbl.
LOOP AT i_bsad1.
MOVE-CORRESPONDING i_bsad1 TO i_bsad.

AT END OF augbl.
SUM.
i_bsad-dmbtr = i_bsad1-dmbtr.
i_bsad-wrbtr = i_bsad1-wrbtr.
APPEND i_bsad.
CLEAR i_bsad.
ENDAT.
ENDLOOP.

DELETE i_bsad WHERE dmbtr = 0.


**************** end **************
LOOP AT i_bsad.
MOVE-CORRESPONDING i_bsad TO i_bsid.
IF i_bsad-dmbtr < 0.
i_bsid-dmbtr = i_bsad-dmbtr * -1.
i_bsid-wrbtr = i_bsad-wrbtr * -1.
i_bsid-shkzg = 'H'.
ELSE.
i_bsid-shkzg = 'S'.
ENDIF.
APPEND i_bsid.
CLEAR i_bsid.
ENDLOOP.
LOOP AT i_bsid.
IF i_bsid-shkzg = 'H'.
IF NOT i_bsid-vbeln IS INITIAL.
i_bsid-xblnr = i_bsid-vbeln.

* if i_bsid-vbeln = '0000618727'.
* concatenate '0000' i_bsid-vbeln into i_bsid-xblnr.
* endif.
MODIFY i_bsid.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT i_bsid. " where blart = 'RV'.
i_final-zuonr = i_bsid-zuonr.
i_final-vbelv = i_bsid-zuonr.
***********************Added on 29.09.2008 by TCS**********************
* if not i_bsid-xblnr is initial. "tsg 13.04.09
IF i_bsid-xblnr+0(2) ='00'. "tsg 20.04.09
i_final-xblnr = i_bsid-xblnr.
ELSE.
IF i_bsid-shkzg = 'H'.
IF NOT i_bsid-vbeln IS INITIAL.
CONCATENATE '0000' i_bsid-vbeln INTO i_final-xblnr. "add tsg 200409
ELSE.
IF i_bsid-xblnr+0(2) <> '00'.
CONCATENATE '0000' i_bsid-xblnr INTO i_final-xblnr.
ENDIF.
ENDIF.
* i_final-xblnr = i_bsid-vbeln. "tsg 130409
****************************Added on 06.05.2009**************************
IF i_final-xblnr+0(8) ='00000000'.
CONCATENATE '0000' i_bsid-xblnr INTO i_final-xblnr.
* i_final-xblnr+0(4) ='0000'.
CONDENSE i_final-xblnr NO-GAPS.
ENDIF.
ENDIF.
ENDIF.
***********************************************************************
i_final-vbeln = i_bsid-belnr.
i_final-zfbdt = i_bsid-zfbdt.
** I_FINAL-LFDAT = I_BSID-ZFBDT. "cmnt by tsg for budat
i_final-lfdat = i_bsid-budat.
** I_FINAL-LFDAT1 = I_BSID-ZFBDT. "CMNT BY TSG BY BUDAT
i_final-lfdat1 = i_bsid-budat.
i_final-zterm = i_bsid-zterm.
i_final-werks = i_bsid-gsber.
i_final-fkart = i_bsid-blart.
i_final-kunnr = i_bsid-kunnr.
i_final-kunag = i_bsid-kunnr.
i_final-blart = i_bsid-blart.
i_final-shkzg = i_bsid-shkzg.
i_final-hkont = i_bsid-hkont.
i_final-sgtxt = i_bsid-sgtxt.
i_final-waers = i_bsid-waers.

IF ( i_final-hkont = '0000141099' OR i_final-hkont = '0000141000' ).


i_final-vkorg = '3000'.
ENDIF.

IF i_final-hkont = '0000181060'.
i_final-vkorg = '3000'.
ENDIF.

CASE i_bsid-blart.

WHEN 'LE'. " legacy system update

CASE i_bsid-sgtxt.
WHEN 'INVOICE TAKE ON' OR 'EXPORT INVOICE TAKE ON' .
IF i_bsid-shkzg = 'S'.
i_final-invamt = i_bsid-dmbtr.
i_final-expamt = i_bsid-wrbtr.
ELSE.
i_final-invamt = i_bsid-dmbtr * -1.
i_final-expamt = i_bsid-wrbtr * -1.
ENDIF.

WHEN 'COLLECTION TAKE ON'.


IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr .
i_final-oth_expadj = i_bsid-wrbtr .
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'BALANCE TAKE ON'.
IF i_bsid-shkzg = 'S'.
i_final-invamt = i_bsid-dmbtr.
i_final-expamt = i_bsid-wrbtr.
ELSE.
i_final-invamt = i_bsid-dmbtr * -1.
i_final-expamt = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'COMMISSION TAKE ON'.
IF i_bsid-shkzg = 'S'.
i_final-oth_cr = i_bsid-dmbtr .
i_final-oth_expcr = i_bsid-wrbtr .
ELSE.
i_final-oth_cr = i_bsid-dmbtr * -1.
i_final-oth_expcr = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'CREDIT NOTE TAKE ON'.
IF i_bsid-shkzg = 'S'.
i_final-oth_cr = i_bsid-dmbtr .
i_final-oth_expcr = i_bsid-wrbtr .
ELSE.
i_final-oth_cr = i_bsid-dmbtr * -1.
i_final-oth_expcr = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'MISC. ADVANCES TAKE ON'.
IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr .
i_final-oth_expadj = i_bsid-wrbtr .
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'Opening Take-on'.
IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr .
i_final-oth_expadj = i_bsid-wrbtr .
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'FI-CUST ADVANCES TAKE ON'.
IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr .
i_final-oth_expadj = i_bsid-wrbtr .
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'Take On'.
IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr .
i_final-oth_expadj = i_bsid-wrbtr .
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'Interest'.
IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr .
i_final-oth_expadj = i_bsid-wrbtr .
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'CUSTOMER ADV. TAKE ON'.
IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr .
i_final-oth_expadj = i_bsid-wrbtr .
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.
* WHEN 'Indore warehouse take on'.
* IF I_BSID-SHKZG = 'S'.
* I_FINAL-OTH_ADJ = I_BSID-DMBTR.
* ELSE.
* I_FINAL-OTH_ADJ = I_BSID-DMBTR * -1.
* ENDIF.
WHEN 'PROVISION TAKE ON'.
IF i_bsid-shkzg = 'S'.
i_final-disc_cr = i_bsid-dmbtr .
ELSE.
i_final-disc_cr = i_bsid-dmbtr * -1.
ENDIF.
WHEN OTHERS.
IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr * 1.
i_final-oth_expadj = i_bsid-wrbtr * 1.
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.
ENDCASE.

WHEN 'RV'.

READ TABLE i_vbrk WITH KEY vbeln = i_final-vbeln.


IF sy-subrc = 0.
i_final-fkart = i_vbrk-fkart.
i_final-lfdat1 = i_vbrk-fkdat.
IF i_final-vkorg NE '3000'.
i_final-vkorg = i_vbrk-vkorg.
ENDIF.
i_final-vtweg = i_vbrk-vtweg.
i_final-kdgrp = i_vbrk-kdgrp.
i_final-lfdat = i_vbrk-fkdat.
READ TABLE i_vbrp WITH KEY vbeln = i_final-vbeln.
IF sy-subrc = 0.
i_final-werks = i_vbrp-werks.
i_final-vkbur = i_vbrp-vkbur.
i_final-spart = i_vbrp-spart.
* I_FINAL-PRCTR = I_VBRP-PRCTR.
ENDIF.
ENDIF.

CASE i_final-fkart.
WHEN 'F2' OR 'FV' OR 'FR' OR 'F8' OR 'ZVAT'.
IF i_bsid-shkzg = 'S'.
i_final-invamt = i_bsid-dmbtr.
i_final-expamt = i_bsid-wrbtr.
ELSE.
i_final-invamt = i_bsid-dmbtr * -1.
i_final-expamt = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'ZG2' .
IF i_bsid-shkzg = 'S'.
i_final-disc_cr = i_bsid-dmbtr.
ELSE.
i_final-disc_cr = i_bsid-dmbtr * -1.
ENDIF.
WHEN 'YG2'.
IF i_bsid-shkzg = 'S'.
i_final-retro_cr = i_bsid-dmbtr.
ELSE.
i_final-retro_cr = i_bsid-dmbtr * -1.
ENDIF.
WHEN 'G2' .
IF i_bsid-shkzg = 'S'.
i_final-oth_cr = i_bsid-dmbtr .
i_final-oth_expcr = i_bsid-wrbtr .
ELSE.
i_final-oth_cr = i_bsid-dmbtr * -1.
i_final-oth_expcr = i_bsid-wrbtr * -1.
ENDIF.
WHEN 'B1'.
IF i_bsid-shkzg = 'S'.
i_final-reb_cr = i_bsid-dmbtr.
ELSE.
i_final-reb_cr = i_bsid-dmbtr * -1.
ENDIF.
WHEN 'YL2'.
IF i_bsid-shkzg = 'S'.
i_final-retro_dr = i_bsid-dmbtr.
ELSE.
i_final-retro_dr = i_bsid-dmbtr * -1.
ENDIF.
WHEN 'L2'.
IF i_bsid-shkzg = 'S'.
i_final-oth_dr = i_bsid-dmbtr.
i_final-oth_expdr = i_bsid-wrbtr.
ELSE.
i_final-oth_dr = i_bsid-dmbtr * -1.
i_final-oth_expdr = i_bsid-wrbtr * -1.
ENDIF.
WHEN OTHERS.
IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr * 1.
i_final-oth_expadj = i_bsid-wrbtr * 1.
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.
ENDCASE.

WHEN OTHERS.
IF i_bsid-shkzg = 'S'.
i_final-oth_adj = i_bsid-dmbtr.
i_final-oth_expadj = i_bsid-wrbtr.
ELSE.
i_final-oth_adj = i_bsid-dmbtr * -1.
i_final-oth_expadj = i_bsid-wrbtr * -1.
ENDIF.

ENDCASE.

APPEND i_final.
CLEAR i_final.
ENDLOOP.
***** 15.05.2006 ****

DELETE i_final WHERE NOT vkbur IN s_vkbur AND vbelv+0(3) = '009'.


DELETE i_final WHERE NOT vtweg IN s_vtweg AND vbeln+0(3) = '009'.

*** ADD BY TSG FOR UPDATE PROFIT CENTER.

SELECT kunnr eikto FROM knvv INTO TABLE i_knvv FOR ALL ENTRIES IN i_final
WHERE kunnr = i_final-kunag.
LOOP AT i_final.
READ TABLE i_knvv WITH KEY kunnr = i_final-kunag.
IF sy-subrc = 0.
i_final-eikto = i_knvv-eikto.
MODIFY i_final.
ENDIF.
ENDLOOP.

IF i_final IS NOT INITIAL.


SORT i_final BY vbeln xblnr.
ENDIF.
SELECT vbeln prctr FROM vbrp INTO CORRESPONDING FIELDS OF TABLE i_vbrp1
* where vbeln = '0000613726'.
FOR ALL ENTRIES IN i_final
WHERE vbeln = i_final-xblnr+0(10).

LOOP AT i_final.
READ TABLE i_vbrp1 WITH KEY vbeln = i_final-xblnr+0(10).
IF sy-subrc = 0.
* I_FINAL-xblnr = I_vbrp1-vbeln.
i_final-eikto = i_vbrp1-prctr.
MODIFY i_final.
ENDIF.
ENDLOOP.
*** END BY TSG ON 07.07.2007

LOOP AT i_final.
i_final3-vkbur = i_final-vkbur.
i_final3-vtweg = i_final-vtweg.
i_final3-kunag = i_final-kunag.
APPEND i_final3.
CLEAR i_final3.
ENDLOOP.
DELETE i_final3 WHERE NOT vtweg IN s_vtweg.
DELETE i_final3 WHERE NOT vkbur IN s_vkbur.
LOOP AT i_final3.
g_vtweg = i_final3-vtweg.
g_vkbur = i_final3-vkbur.
g_kunag = i_final3-kunag.
LOOP AT i_final WHERE kunag = g_kunag.
IF i_final-vtweg IS INITIAL.
i_final-vtweg = g_vtweg.
MODIFY i_final.
ENDIF.
IF i_final-vkbur IS INITIAL.
i_final-vkbur = g_vkbur.
MODIFY i_final.
ENDIF.
ENDLOOP.
CLEAR g_vtweg.
CLEAR g_vkbur.
CLEAR g_kunag.
ENDLOOP.
*** END *****

DELETE i_final WHERE NOT vkorg IN s_vkorg.


DELETE i_final WHERE NOT vkbur IN s_vkbur.
DELETE i_final WHERE NOT kdgrp IN s_kdgrp.
DELETE i_final WHERE NOT werks IN s_werks.
* DELETE I_FINAL WHERE NOT SPART IN S_SPART.

IF i_final[] IS INITIAL.
MESSAGE e000 WITH 'NO RECORD FOUND'.
ENDIF.
*****
LOOP AT i_final .
CONCATENATE i_final-zuonr i_final-vbeln INTO i_final-zu_vb.
* if i_final-zuonr+0(3) eq '009' and i_final-vbeln+0(3) ne '009'.
* CONCATENATE I_FINAL-ZUONR I_FINAL-zuonr INTO I_FINAL-ZU_VB.
* endif.
IF NOT i_final-xblnr IS INITIAL.
IF i_final-xblnr+0(4) = '0000'.
i_final-zu_vb = i_final-xblnr+4(6).
ELSE.
i_final-zu_vb = i_final-xblnr.
ENDIF.
ELSE.
i_final-zu_vb = i_final-vbeln.
* concatenate i_final-zuonr i_final-vbeln into i_final-zu_vb.
ENDIF.
MODIFY i_final.
*
ENDLOOP.

*****
* sort i_final by kunnr zu_vb zuonr shkzg .
SORT i_final BY kunnr zu_vb fkart ASCENDING .

LOOP AT i_final.

* I_FINAL1-KUNNR = I_FINAL-KUNNR
* I_FINAL1-ZUONR = I_FINAL-ZUONR
* I_FINAL1-VBELV = I_FINAL-VBELV
* IF I_FINAL-BLART = 'RV'
* I_FINAL1-VBELN = I_FINAL-VBELN
* I_FINAL1-FKART = I_FINAL-FKART
* I_FINAL1-VKORG = I_FINAL-VKORG
* I_FINAL1-VTWEG = I_FINAL-VTWEG
* I_FINAL1-VKBUR = I_FINAL-VKBUR
* I_FINAL1-SPART = I_FINAL-SPART
* I_FINAL1-WERKS = I_FINAL-WERKS
* I_FINAL1-KDGRP = I_FINAL-KDGRP
* I_FINAL1-KUNNR_NAME = I_FINAL-KUNNR_NAME
* I_FINAL1-KUNAG = I_FINAL-KUNAG
* I_FINAL1-KUNAG_NAME = I_FINAL-KUNAG_NAME
* I_FINAL1-ZFBDT = I_FINAL-ZFBDT
* I_FINAL1-ZTERM = I_FINAL-ZTERM
* I_FINAL1-ZTAG1 = I_FINAL-ZTAG1
* I_FINAL1-LFDAT = I_FINAL-LFDAT
* I_FINAL1-LFDAT1 = I_FINAL-LFDAT1

MOVE-CORRESPONDING i_final TO i_final1.

* AT END OF ZUONR.
AT END OF zu_vb. "VBELN.
SUM.
i_final1-invamt = i_final-invamt.
i_final1-disc_cr = i_final-disc_cr.
i_final1-retro_cr = i_final-retro_cr.
i_final1-reb_cr = i_final-reb_cr.

i_final1-oth_cr = i_final-oth_cr.
i_final1-oth_dr = i_final-oth_dr.
i_final1-retro_dr = i_final-retro_dr.

i_final1-oth_adj = i_final-oth_adj.

APPEND i_final1.
CLEAR i_final1.
ENDAT.
ENDLOOP.

** 24.02.09 (wipro)
LOOP AT i_final1.
IF i_final1-zu_vb+0(1) <> '0'.
CONCATENATE '0000' i_final1-xblnr INTO i_final1-zu_vb.
READ TABLE i_final WITH KEY xblnr = i_final1-zu_vb+0(10).
IF sy-subrc EQ 0.
i_final1-lfdat = i_final-lfdat.
i_final1-lfdat1 = i_final-lfdat1.
MODIFY i_final1.
ENDIF.
ENDIF.
ENDLOOP.
** end by wipro
SELECT kunnr name1 FROM kna1
INTO CORRESPONDING FIELDS
OF TABLE i_kna1
FOR ALL ENTRIES IN i_final1
WHERE kunnr = i_final1-kunnr.

LOOP AT i_final1.
l_tabix = sy-tabix.
READ TABLE i_t052 WITH KEY zterm = i_final1-zterm.
IF sy-subrc = 0.
i_final1-ztag1 = i_t052-ztag1.
ENDIF.

READ TABLE i_j_1iexchdr WITH KEY rdoc = i_final1-vbelv.


IF sy-subrc = 0.
i_final1-exnum = i_j_1iexchdr-exnum.
ENDIF.

READ TABLE i_vbfa WITH KEY vbeln = i_final1-vbelv


vbtyp_n = 'M'
vbtyp_v = 'C'.
IF sy-subrc = 0.
i_final1-vbso = i_vbfa-vbelv.
READ TABLE i_likp WITH KEY vbeln = i_vbfa-vbelv.
IF sy-subrc = 0.

READ TABLE i_j_1irg23d WITH KEY vbeln = i_vbfa-vbelv


trntyp = 'GRPO'.
IF sy-subrc = 0.
i_final1-exnum = i_j_1irg23d-depexnum.
ENDIF.

* i_final1-kunnr = i_likp-kunnr.
i_final1-kunag = i_likp-kunag.
* I_FINAL1-LFDAT1 = I_LIKP-LFDAT.
ENDIF.
ENDIF.

* l_date = i_final1-zfbdt + i_final1-ztag1.


l_date = i_final1-lfdat1. " + I_FINAL1-ZTAG1.
l_diff = p_date - l_date.

i_final1-tot_inv = i_final1-invamt + i_final1-disc_cr + i_final1-retro_cr


+ i_final1-reb_cr + i_final1-oth_cr + i_final1-retro_dr
+ i_final1-oth_dr + i_final1-oth_adj.

i_final1-tot_expinv = i_final1-expamt + i_final1-disc_cr + i_final1-retro_cr


+ i_final1-reb_cr + i_final1-oth_expcr + i_final1-
retro_dr
+ i_final1-oth_expdr + i_final1-oth_expadj.

IF l_diff < 0.
l_diff = 0.
ENDIF.
i_final1-day_due = l_diff - i_final1-ztag1.

IF i_final1-day_due < 0 OR i_final1-tot_inv = 0.


i_final1-day_due = 0.
ENDIF.

IF l_diff BETWEEN 0 AND 30.


i_final1-day_30 = i_final1-tot_inv.
ELSEIF l_diff BETWEEN 31 AND 60.
i_final1-day_60 = i_final1-tot_inv.
ELSEIF l_diff BETWEEN 61 AND 90.
i_final1-day_90 = i_final1-tot_inv.
ELSEIF l_diff BETWEEN 91 AND 120.
i_final1-day_120 = i_final1-tot_inv.
ELSEIF l_diff BETWEEN 121 AND 150.
i_final1-day_150 = i_final1-tot_inv.
ELSEIF l_diff BETWEEN 151 AND 180.
i_final1-day_180 = i_final1-tot_inv.
ELSEIF l_diff BETWEEN 181 AND 365.
i_final1-day_365 = i_final1-tot_inv.
ELSEIF l_diff BETWEEN 366 AND 9999999999999.
i_final1-day_abv = i_final1-tot_inv.
ENDIF.
READ TABLE i_kna1 WITH KEY kunnr = i_final1-kunnr.
IF sy-subrc = 0.
i_final1-kunnr_name = i_kna1-name1.
ENDIF.
READ TABLE i_kna1 WITH KEY kunnr = i_final1-kunag.
IF sy-subrc = 0.
i_final1-kunag_name = i_kna1-name1.
ENDIF.

MODIFY i_final1 INDEX l_tabix


TRANSPORTING exnum kunnr kunnr_name kunag kunag_name lfdat ztag1 vbso
tot_inv tot_expinv day_30 day_60 day_90 day_120 day_150 day_180 day_365 day_abv
day_due.

ENDLOOP.
*delete i_final1 where tot_inv le 0.
DELETE i_final1 WHERE tot_inv = 0.

SORT i_final1 BY kunnr lfdat.

ENDFORM. " F_PROCESS-DATA


*&---------------------------------------------------------------------*
*& Form f_create_field_catalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_create_field_catalog .

PERFORM f_append_fldcat USING 'WERKS' 'I_FINAL1' '' 'B.Area' CHANGING


i_fieldcat.
PERFORM f_append_fldcat USING 'VBELN' 'I_FINAL1' 'I_FINAL1' 'ACC DOC NO'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'ZUONR' 'I_FINAL1' 'BSID' 'ASSIGNMENT NO'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'VBSO' 'I_FINAL1' '' 'SALES ORDER' CHANGING
i_fieldcat.
** PERFORM F_APPEND_FLDCAT USING 'VKORG' 'I_FINAL1' '' 'SALES ORGANISATION'
CHANGING I_FIELDCAT.
PERFORM f_append_fldcat USING 'VTWEG' 'I_FINAL1' '' 'DIST.CHANNEL'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'VKBUR' 'I_FINAL1' '' 'SALES OFFICE'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'SPART' 'I_FINAL1' '' 'SALES GROUP'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'EIKTO' 'I_FINAL1' '' 'PROFIT.CENTER'
CHANGING i_fieldcat.
* PERFORM F_APPEND_FLDCAT USING 'PRCTR' 'I_FINAL1' '' 'PROFIT.CENTER'
CHANGING I_FIELDCAT.
PERFORM f_append_fldcat USING 'HKONT' 'I_FINAL1' '' 'ACCOUNT.CD' CHANGING
i_fieldcat.
PERFORM f_append_fldcat USING 'KUNNR' 'I_FINAL1' ' ' 'SHIP.TO PARTY'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'KUNNR_NAME' 'I_FINAL1' ' ' 'SHIP TO NAME'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'KUNAG' 'I_FINAL1' ' ' 'SOLD.TO-PARTY'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'KUNAG_NAME' 'I_FINAL1' '' 'SOLD.TO NAME'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'LFDAT' 'I_FINAL1' '' 'BILLING.DATE'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'EXNUM' 'I_FINAL1' 'I_FINAL1' 'EXCISE NUMBER'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'ZTAG1' 'I_FINAL1' '' 'PAYMENT TERM'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'INVAMT' 'I_FINAL1' '' 'INVOICE AMT' CHANGING
i_fieldcat.
PERFORM f_append_fldcat USING 'EXPAMT' 'I_FINAL1' '' 'INV.AMT F.CURR'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'WAERS' 'I_FINAL1' '' 'CURRENCY' CHANGING
i_fieldcat.
** PERFORM F_APPEND_FLDCAT USING 'DISC_CR' 'I_FINAL1' '' 'DISC.CRDT' CHANGING
I_FIELDCAT.
** PERFORM F_APPEND_FLDCAT USING 'RETRO_CR' 'I_FINAL1' '' 'RETRO.CRDT'
CHANGING I_FIELDCAT.
** PERFORM F_APPEND_FLDCAT USING 'REB_CR' 'I_FINAL1' '' 'REBATE.CRDT'
CHANGING I_FIELDCAT.
PERFORM f_append_fldcat USING 'OTH_CR' 'I_FINAL1' '' 'OTH.CRDT' CHANGING
i_fieldcat.
** PERFORM F_APPEND_FLDCAT USING 'RETRO_DR' 'I_FINAL1' '' 'RETRO.DEBIT'
CHANGING I_FIELDCAT.
PERFORM f_append_fldcat USING 'OTH_DR' 'I_FINAL1' '' 'OTH.DEBIT' CHANGING
i_fieldcat.
PERFORM f_append_fldcat USING 'OTH_EXPDR' 'I_FINAL1' '' 'OTH.DEBIT FCURR'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'OTH_ADJ' 'I_FINAL1' '' 'OTH.PAYMENT/ADJ'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'OTH_EXPADJ' 'I_FINAL1' '' 'OTH.ADJ F.CURR'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'TOT_INV' 'I_FINAL1' '' 'TOTAL.OUTSTANDING'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'TOT_EXPINV' 'I_FINAL1' '' 'BALANCE FOR. CURR'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'DAY_30' 'I_FINAL1' '' 'DAYS UPTO 30'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'DAY_60' 'I_FINAL1' '' 'DAYS 31-60' CHANGING
i_fieldcat.
PERFORM f_append_fldcat USING 'DAY_90' 'I_FINAL1' '' 'DAYS 61-90' CHANGING
i_fieldcat.
PERFORM f_append_fldcat USING 'DAY_120' 'I_FINAL1' '' 'DAYS 91-120'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'DAY_150' 'I_FINAL1' '' 'DAYS 121-150'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'DAY_180' 'I_FINAL1' '' 'DAYS 151-180'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'DAY_365' 'I_FINAL1' '' 'DAYS 181-365'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'DAY_ABV' 'I_FINAL1' '' 'DAYS ABOVE 365'
CHANGING i_fieldcat.
PERFORM f_append_fldcat USING 'DAY_DUE' 'I_FINAL1' '' 'DUE DAYS' CHANGING
i_fieldcat.
PERFORM f_append_fldcat USING 'SGTXT' 'I_FINAL1' '' 'R E M A R K S'
CHANGING i_fieldcat.
******************************************Added on 29.09.2008 bt
TCS***************************************
PERFORM f_append_fldcat USING 'XBLNR' 'I_FINAL1' 'I_FINAL1' 'INVOICE NO'
CHANGING i_fieldcat.
***********************************************************************************
************************

ENDFORM. " f_create_field_catalog


*&---------------------------------------------------------------------*
*& Form f_append_fldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0875 text
* -->P_0876 text
* -->P_0877 text
* -->P_0878 text
* <--P_I_FIELDCAT text
*----------------------------------------------------------------------*
FORM f_append_fldcat USING par_fldname par_tabname par_reftabname par_seltext
CHANGING pit_fldcat TYPE slis_t_fieldcat_alv.

CLEAR ls_fieldcat.
CASE par_fldname.
WHEN 'DISC_CR' OR 'RETRO_CR' OR 'OTH_CR' OR 'OTH_ADJ' OR 'REB_CR'.
ls_fieldcat-emphasize = 'C601'.
WHEN 'INVAMT' OR 'OTH_DR' OR 'RETRO_DR'.
ls_fieldcat-emphasize = 'C510'.
WHEN 'TOT_INV'.
ls_fieldcat-emphasize = 'C310'.
WHEN 'VBELV'.
ls_fieldcat-hotspot = 'X'.
ENDCASE.

ls_fieldcat-tabname = par_tabname.
ls_fieldcat-fieldname = par_fldname.
ls_fieldcat-ref_tabname = par_reftabname.
ls_fieldcat-ref_fieldname = par_fldname.
ls_fieldcat-seltext_m = par_seltext.

CASE par_fldname.
WHEN 'INVAMT'
OR 'EXPAMT'
OR 'OTH_EXPCR'
OR 'OTH_EXPDR'
OR 'OTH_CR'
OR 'OTH_EXPADJ'
OR 'OTH_DR'
OR 'TOT_EXPINV'
OR 'OTH_ADJ'
OR 'TOT_INV'
OR 'DAY_30' OR 'DAY_60' OR 'DAY_90' OR 'DAY_120' OR 'DAY_150' OR 'DAY_180' OR
'DAY_365' OR 'DAY_ABV'.

ls_fieldcat-do_sum = 'X'.
ENDCASE.

APPEND ls_fieldcat TO pit_fldcat.

ENDFORM. " f_append_fldcat


*&---------------------------------------------------------------------*
*& Form f_list_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_I_FINAL1 text
*----------------------------------------------------------------------*
FORM f_list_display TABLES p_output.

layout-key_hotspot = 'X'.
layout-hotspot_fieldname = 'VBELN'.
* layout-DETAIL_POPUP = 'X'.
layout-zebra = 'X'.
layout-totals_text = ' '.
layout-numc_sum = 'X'.
layout-colwidth_optimize = 'X'.

* lt_events-USER_COMMAND = 'USER_VF03'.
* layout-f2code = '&ETA' .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid " 'ZSD_R003'
is_layout = layout
it_fieldcat = i_fieldcat
* i_default = 'X'
i_structure_name = 'I_FINAL'
i_save = 'A'
i_callback_user_command = 'USER_VF03'
it_events = lt_events
TABLES
t_outtab = p_output
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM. " f_list_display

*---------------------------------------------------------------------*
* FORM USER_VF03 *
*---------------------------------------------------------------------*
FORM user_vf03 USING u_ucomm LIKE sy-ucomm
us_selfield TYPE slis_selfield.

IF us_selfield-fieldname ='VBELN'.

DATA: bdcdata TYPE TABLE OF bdcdata.


DATA: itab TYPE TABLE OF bdcmsgcoll.
DATA: program LIKE sy-repid.
DATA: l_vbeln LIKE vbrk-vbeln.

READ TABLE i_final1 INDEX us_selfield-tabindex.

IF sy-subrc = 0.
l_vbeln = i_final1-vbeln.
ENDIF.

DATA : wa_bdcdata TYPE bdcdata.


wa_bdcdata-program = 'SAPMV60A'.
wa_bdcdata-dynpro = '0101'.
wa_bdcdata-dynbegin = 'X'.
APPEND wa_bdcdata TO bdcdata.
CLEAR wa_bdcdata.
wa_bdcdata-fnam = 'VBRK-VBELN'.
wa_bdcdata-fval = l_vbeln.
APPEND wa_bdcdata TO bdcdata.

CASE u_ucomm.
WHEN '&IC1'.
CALL TRANSACTION 'VF03' USING bdcdata.
ENDCASE.
ENDIF.
ENDFORM. "USER_VF03
*&---------------------------------------------------------------------*
*& Form f_merge_field_catalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_merge_field_catalog CHANGING pit_fldcat TYPE slis_t_fieldcat_alv.
.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'


EXPORTING
i_program_name = sy-repid
* I_INTERNAL_TABNAME = 'I_FINAL1'
i_structure_name = 'I_FINAL1'
CHANGING
ct_fieldcat = pit_fldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM. " f_merge_field_catalog


*&---------------------------------------------------------------------*
*& Form f_comment_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_I_LIST_TOP_OF_PAGE text
*----------------------------------------------------------------------*
FORM f_comment_build USING p_top_of_page TYPE slis_t_listheader.

DATA: ls_line TYPE slis_listheader,


l_text(100) TYPE c,
sep(20) TYPE c.

CLEAR ls_line.
ls_line-typ = 'H'.
WRITE: 'As on'(002) TO l_text+0(5),
p_date TO l_text+8(10).
ls_line-info = l_text.
APPEND ls_line TO p_top_of_page.
ENDFORM. " f_comment_build

*----------------------------------------------------------------------*
* FORM top_of_page *
*----------------------------------------------------------------------*
FORM top_of_page. "#EC CALLED
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_list_top_of_page.
ENDFORM. " TOP_OF_PAGE

You might also like