0% found this document useful (0 votes)
87 views10 pages

Zfi Adr Report

The document is a report program that: 1. Defines data structures and selects data from various tables like BSEG, BKPF to populate internal tables. 2. Loops through the internal tables to process the data and populate a final internal table with summarized information. 3. Configures the field catalog for displaying the final internal table. The program retrieves transactional data from various source tables, processes it to summarize debit/credit amounts, and prepares the output for display.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
87 views10 pages

Zfi Adr Report

The document is a report program that: 1. Defines data structures and selects data from various tables like BSEG, BKPF to populate internal tables. 2. Loops through the internal tables to process the data and populate a final internal table with summarized information. 3. Configures the field catalog for displaying the final internal table. The program retrieves transactional data from various source tables, processes it to summarize debit/credit amounts, and prepares the output for display.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 10

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

*& Report ZFI_ADR_REPORT


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

REPORT zfi_adr_report.
TABLES : bseg, bkpf.

TYPES: BEGIN OF ts_final,


werks TYPE t001w-werks,
name1 TYPE t001w-name1,
blart TYPE bkpf-blart,
budat TYPE bkpf-budat,
belnr TYPE bseg-belnr,
awkey TYPE bkpf-awkey,
bldat TYPE bkpf-bldat,
hkont TYPE bseg-hkont,
txt50 TYPE skat-txt50,
kostl TYPE bseg-kostl,
lifnr TYPE bseg-lifnr,
name2 TYPE lfa1-name1,
dmb_d TYPE bseg-dmbtr,
dmb_c TYPE bseg-dmbtr,
dmb_n TYPE bseg-dmbtr,
qsskz TYPE t059q-qsskz,
qsbez TYPE t059q-qsbez,
qscod TYPE t059q-qscod,
qsshb TYPE bseg-qsshb,
qproz TYPE t059q-qproz,
qbshb TYPE bseg-qbshb,
mwskz TYPE t030k-mwskz,
text1 TYPE t007s-text1,
hwbas TYPE bseg-hwbas,
END OF ts_final.

TYPES: BEGIN OF ts_t001w,


werks TYPE t001w-werks,
name1 TYPE t001w-name1,
END OF ts_t001w.
TYPES: BEGIN OF ts_bkpf,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
blart TYPE bkpf-blart,
bldat TYPE bkpf-bldat,
budat TYPE bkpf-budat,
awkey TYPE bkpf-awkey,
END OF ts_bkpf.
TYPES: BEGIN OF ts_bseg,
bukrs TYPE bseg-bukrs,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
buzei TYPE bseg-buzei,
shkzg TYPE bseg-shkzg,
mwskz TYPE bseg-mwskz,
dmbtr TYPE bseg-dmbtr,
hwbas TYPE bseg-hwbas,
qsshb TYPE bseg-qsshb,
kostl TYPE bseg-kostl,
hkont TYPE bseg-hkont,
lifnr TYPE bseg-lifnr,
qbshb TYPE bseg-qbshb,
werks TYPE bseg-werks,
END OF ts_bseg.
TYPES: BEGIN OF ts_skat,
ktopl TYPE skat-ktopl,
saknr TYPE skat-saknr,
txt50 TYPE skat-txt50,
END OF ts_skat.

TYPES: BEGIN OF ts_lfa1,


lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
END OF ts_lfa1.
TYPES: BEGIN OF ts_with_item,
bukrs TYPE with_item-bukrs,
belnr TYPE with_item-belnr,
wt_withcd TYPE with_item-wt_withcd,
wt_qsshb TYPE with_item-wt_qsshb,
wt_qbshh TYPE with_item-wt_qbshh,
qsatz TYPE with_item-qsatz,
END OF ts_with_item.
TYPES: BEGIN OF ts_t059z,
land1 TYPE t059z-land1,
wt_withcd TYPE t059z-wt_withcd,
qscod TYPE t059z-qscod,
* qsbez TYPE t059z-qsbez,
qproz TYPE t059z-qproz,
qsatz TYPE t059z-qsatz,
END OF ts_t059z.
TYPES: BEGIN OF ts_t007s,
kalsm TYPE t007s-kalsm,
mwskz TYPE t007s-mwskz,
text1 TYPE t007s-text1,
END OF ts_t007s.
TYPES: BEGIN OF ts_t059zt,
wt_withcd TYPE t059zt-wt_withcd,
text40 TYPE t059zt-text40,
END OF ts_t059zt.

DATA: gt_final TYPE TABLE OF ts_final,


gs_final LIKE LINE OF gt_final,
gt_t001w TYPE TABLE OF ts_t001w,
gs_t001w LIKE LINE OF gt_t001w,
gt_bkpf TYPE TABLE OF ts_bkpf,
gs_bkpf LIKE LINE OF gt_bkpf,
gt_bseg TYPE TABLE OF ts_bseg,
gs_bseg LIKE LINE OF gt_bseg,
gt_bseg1 TYPE TABLE OF ts_bseg,
gs_bseg1 LIKE LINE OF gt_bseg1,
gt_bseg2 TYPE TABLE OF ts_bseg,
gs_bseg2 LIKE LINE OF gt_bseg2,
gt_skat TYPE TABLE OF ts_skat,
gs_skat LIKE LINE OF gt_skat,
gt_lfa1 TYPE TABLE OF ts_lfa1,
gs_lfa1 LIKE LINE OF gt_lfa1,
gt_with TYPE TABLE OF ts_with_item,
gs_with LIKE LINE OF gt_with,
gt_t059z TYPE TABLE OF ts_t059z,
gs_t059z LIKE LINE OF gt_t059z,
gt_t059zt TYPE TABLE OF ts_t059zt,
gs_t059zt LIKE LINE OF gt_t059zt,
gt_t007s TYPE TABLE OF ts_t007s,
gs_t007s LIKE LINE OF gt_t007s,
gt_fcat TYPE slis_t_fieldcat_alv,
gs_fcat LIKE LINE OF gt_fcat,
gs_layout TYPE slis_layout_alv.

DATA : lv_index TYPE i,


lv_index1 TYPE i.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-003.


SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS : s_hkont FOR bseg-hkont,
s_budat FOR bkpf-budat NO-EXTENSION,
s_bukrs FOR bseg-bukrs NO-EXTENSION NO INTERVALS,
s_kostl FOR bseg-kostl NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : p_kostl as CHECKBOX.
SELECTION-SCREEN COMMENT 4(15) text-001.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 2.
*PARAMETERS : r_exel AS CHECKBOX .

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

PERFORM get_dat.
PERFORM process_data.
PERFORM get_fieldcat.
PERFORM display_data.

*&---------------------------------------------------------------------*
*& Form GET_DAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_dat .
CLEAR : gt_bkpf, gt_bseg.

SELECT bukrs
belnr
gjahr
buzei
shkzg
mwskz
dmbtr
hwbas
qsshb
kostl
hkont
lifnr
qbshb
werks FROM bseg INTO TABLE gt_bseg
WHERE bukrs IN s_bukrs AND hkont IN s_hkont AND kostl IN s_kostl.

IF gt_bseg IS NOT INITIAL.


SELECT bukrs
belnr
gjahr
blart
bldat
budat
awkey FROM bkpf INTO TABLE gt_bkpf
FOR ALL ENTRIES IN gt_bseg WHERE belnr = gt_bseg-belnr AND gjahr = gt_bseg-
gjahr AND bukrs IN s_bukrs AND budat IN s_budat.
ENDIF.

IF gt_bkpf IS NOT INITIAL AND gt_bseg IS NOT INITIAL.


CLEAR: gt_bseg1, gt_t001w, gt_skat, gt_with, gt_t059z, gt_t007s.

SELECT bukrs
belnr
gjahr
buzei
shkzg
mwskz
dmbtr
hwbas
qsshb
kostl
hkont
lifnr
qbshb
werks FROM bseg INTO TABLE gt_bseg1
FOR ALL ENTRIES IN gt_bkpf WHERE bukrs = gt_bkpf-bukrs AND belnr = gt_bkpf-
belnr AND gjahr = gt_bkpf-gjahr.

SELECT werks
name1 FROM t001w INTO TABLE gt_t001w
FOR ALL ENTRIES IN gt_bseg WHERE werks = gt_bseg-werks.

SELECT ktopl
saknr
txt50 FROM skat INTO TABLE gt_skat
FOR ALL ENTRIES IN gt_bseg WHERE saknr = gt_bseg-hkont
AND spras = 'EN'
AND ktopl = '1000'.
IF gt_bseg1 IS NOT INITIAL.
SELECT lifnr name1 FROM lfa1 INTO TABLE gt_lfa1
FOR ALL ENTRIES IN gt_bseg1 WHERE lifnr = gt_bseg1-lifnr.
SORT gt_lfa1 BY lifnr.
SELECT bukrs belnr wt_withcd wt_qsshb wt_qbshh qsatz FROM with_item INTO
TABLE gt_with
FOR ALL ENTRIES IN gt_bseg1 WHERE bukrs = gt_bseg1-bukrs AND belnr =
gt_bseg1-belnr AND wt_withcd <> ' '.
SORT gt_with BY belnr.

IF gt_with IS NOT INITIAL.


SELECT land1 wt_withcd qscod qproz qsatz FROM t059z INTO TABLE gt_t059z FOR
ALL ENTRIES IN gt_with WHERE wt_withcd = gt_with-wt_withcd.
SORT gt_t059z BY wt_withcd.

SELECT wt_withcd text40 FROM t059zt INTO TABLE gt_t059zt FOR ALL ENTRIES IN
gt_with WHERE wt_withcd = gt_with-wt_withcd AND spras = 'EN'.
SORT gt_t059zt BY wt_withcd.
ENDIF.

SELECT kalsm
mwskz
text1 FROM t007s INTO TABLE gt_t007s
FOR ALL ENTRIES IN gt_bseg1 WHERE mwskz = gt_bseg1-mwskz AND spras =
'EN'.
ENDIF.
ENDIF.
ENDFORM. " GET_DAT
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM process_data .

CLEAR: gt_final, gs_final, gs_bkpf.


LOOP AT gt_bkpf INTO gs_bkpf.
CLEAR: gs_bseg.
LOOP AT gt_bseg INTO gs_bseg WHERE bukrs = gs_bkpf-bukrs AND belnr = gs_bkpf-
belnr AND gjahr = gs_bkpf-gjahr.
CLEAR: gs_t001w, gs_skat, gs_t007s.

READ TABLE gt_t001w INTO gs_t001w WITH KEY werks = gs_bseg-werks.


READ TABLE gt_skat INTO gs_skat WITH KEY saknr = gs_bseg-hkont.
* READ TABLE gt_with INTO gs_with WITH KEY bukrs = gs_bseg-bukrs belnr =
gs_bseg-belnr.
* READ TABLE gt_t059q INTO gs_t059q WITH KEY qsskz = gs_with-wt_withcd.
READ TABLE gt_t007s INTO gs_t007s WITH KEY mwskz = gs_bseg-mwskz.

gs_final-werks = gs_bseg-werks.
gs_final-name1 = gs_t001w-name1.
gs_final-blart = gs_bkpf-blart.
gs_final-budat = gs_bkpf-budat.
gs_final-belnr = gs_bseg-belnr.
gs_final-awkey = gs_bkpf-awkey.
gs_final-bldat = gs_bkpf-bldat.
gs_final-hkont = gs_bseg-hkont.
gs_final-txt50 = gs_skat-txt50.
gs_final-kostl = gs_bseg-kostl.
* gs_final-qsskz = gs_t059q-qsskz.
* gs_final-qsbez = gs_t059q-qsbez.
* gs_final-qscod = gs_t059q-qscod.
* gs_final-qsshb = gs_bseg-qsshb.
* gs_final-qproz = gs_t059q-qproz.
* gs_final-qbshb = gs_bseg-qbshb.
gs_final-mwskz = gs_bseg-mwskz.
gs_final-text1 = gs_t007s-text1.
* gs_final-hwbas = gs_bseg-hwbas.

IF gs_bseg-shkzg = 'S'.
gs_final-dmb_d = gs_final-dmb_d + gs_bseg-dmbtr.
ELSEIF gs_bseg-shkzg = 'H'.
gs_final-dmb_c = gs_final-dmb_c + gs_bseg-dmbtr.
ENDIF.
CLEAR : bseg.
ENDLOOP.

IF gs_final IS NOT INITIAL.


gs_final-dmb_n = gs_final-dmb_d - gs_final-dmb_c .
ENDIF.
APPEND gs_final TO gt_final.
CLEAR: gs_final, gs_bkpf.
ENDLOOP.

LOOP AT gt_final INTO gs_final.


CLEAR: gs_bseg1, gt_bseg2, gs_bseg2, lv_index, lv_index1, gs_lfa1.
lv_index1 = sy-tabix.
LOOP AT gt_bseg1 INTO gs_bseg1 WHERE belnr = gs_final-belnr.
IF gs_bseg1-hwbas IS NOT INITIAL.
gs_final-hwbas = gs_bseg1-hwbas.
ENDIF.
APPEND gs_bseg1 TO gt_bseg2.
CLEAR: gs_bseg1.
ENDLOOP.
SORT gt_bseg2 BY buzei.
lv_index = lines( gt_bseg2 ).

READ TABLE gt_bseg2 INTO gs_bseg2 INDEX 1.


gs_final-lifnr = gs_bseg2-lifnr.
READ TABLE gt_lfa1 INTO gs_lfa1 WITH KEY lifnr = gs_bseg2-lifnr BINARY SEARCH.
gs_final-name2 = gs_lfa1-name1.

LOOP AT gt_bseg2 INTO gs_bseg1 WHERE belnr = gs_final-belnr." AND mwskz <> ' '.
CLEAR: gs_with, gs_t059z, gs_t059zt.
READ TABLE gt_with INTO gs_with WITH KEY belnr = gs_bseg1-belnr BINARY
SEARCH.
IF gs_with IS NOT INITIAL.
READ TABLE gt_t059z INTO gs_t059z WITH KEY wt_withcd = gs_with-wt_withcd
BINARY SEARCH.
READ TABLE gt_t059zt INTO gs_t059zt WITH KEY wt_withcd = gs_with-wt_withcd
BINARY SEARCH.
gs_final-qsskz = gs_t059z-wt_withcd.
gs_final-qsbez = gs_t059zt-text40.
gs_final-qscod = gs_t059z-qscod.
gs_final-qsshb = gs_with-wt_qsshb.
gs_final-qproz = gs_with-qsatz.
gs_final-qbshb = gs_with-wt_qbshh.
ENDIF.
IF gs_bseg1 IS INITIAL.
ELSE.
CLEAR: gs_bseg1.
EXIT.
ENDIF.
CLEAR: gs_bseg1.
ENDLOOP.
MODIFY gt_final FROM gs_final. "INDEX lv_index1 TRANSPORTING lifnr name2 qsskz
qsbez qscod qsshb qproz qbshb hwbas.
CLEAR : gs_final, lv_index1, lv_index, gs_with, gs_t059z, gs_bseg1, gs_bseg2,
gt_bseg2.
ENDLOOP.
ENDFORM. " PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form GET_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_fieldcat .

CLEAR : gt_fcat, gs_fcat, gs_layout.


gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'.

gs_fcat-fieldname = 'WERKS'.
gs_fcat-seltext_l = 'Plant'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'NAME1'.
gs_fcat-seltext_l = 'Plant Name'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'BLART'.
gs_fcat-seltext_l = 'Voucher Type'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'BUDAT'.
gs_fcat-seltext_l = 'Posting Date'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'BELNR'.
gs_fcat-seltext_l = 'FI No.'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'AWKEY'.
gs_fcat-seltext_l = 'Doc. No'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'BLDAT'.
gs_fcat-seltext_l = 'Doc Date'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'HKONT'.
gs_fcat-seltext_l = 'SAP GL Code No.'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'TXT50'.
gs_fcat-seltext_l = 'GL Account Name'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

if p_kostl = 'X'.
gs_fcat-fieldname = 'KOSTL'.
gs_fcat-seltext_l = 'Cost Centre'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.
endif.

gs_fcat-fieldname = 'LIFNR'.
gs_fcat-seltext_l = 'Entity Code'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'NAME2'.
gs_fcat-seltext_l = 'Entity Name'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'DMB_D'.
gs_fcat-seltext_l = 'Debit'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'DMB_C'.
gs_fcat-seltext_l = 'Credit'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'DMB_N'.
gs_fcat-seltext_l = 'Net'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'QSSKZ'.
gs_fcat-seltext_l = 'TDS Code'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'QSBEZ'.
gs_fcat-seltext_l = 'TDS Description'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'QSCOD'.
gs_fcat-seltext_l = 'Section'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.
gs_fcat-fieldname = 'QSSHB'.
gs_fcat-seltext_l = 'TDS base value'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'QPROZ'.
gs_fcat-seltext_l = 'TDS Percent'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'QBSHB'.
gs_fcat-seltext_l = 'TDS Amount'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'MWSKZ'.
gs_fcat-seltext_l = 'Tax code'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'TEXT1'.
gs_fcat-seltext_l = 'Tax code description'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.

gs_fcat-fieldname = 'HWBAS'.
gs_fcat-seltext_l = 'Tax base vale'.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.
ENDFORM. " GET_FIELDCAT
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_data .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = gs_layout
it_fieldcat = gt_fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_final
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM. " DISPLAY_DATA

You might also like