You are on page 1of 14

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

*& Report ZFI_TDS_REVISED


*& Report developed by
*& This report is showing seccode wise data.
*& In the first part of the program (for the blank seccodes the base
*& value may be wrong in some cases as those entries are manual.
*&---------------------------------------------------------------------*
*&_____________________________________________________________________*
*&
*&*& Changes made on 01.03.2007
*&---------------------------------------------------------------------*
*&

REPORT ZFI_TDS_REVISED.
TYPE-POOLS: SLIS .

TABLES: BSEG , LFA1 , WITH_ITEM , T059Z ,BKPF.

DATA: NAME(30) TYPE C .


DATA: G_REPID TYPE SY-REPID,
I_LAYOUT TYPE SLIS_LAYOUT_ALV,
* i_events TYPE slis_t_event,
S_FIELDTAB TYPE SLIS_FIELDCAT_ALV,
I_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
GLOBAL_LISTHEADER TYPE SLIS_T_LISTHEADER,
LOCAL_LISTHEADER TYPE SLIS_LISTHEADER,
I_GLOBAL_EVENT TYPE SLIS_T_EVENT,
I_LOCAL_EVENT TYPE SLIS_ALV_EVENT.
DATA: T_SORT TYPE SLIS_T_SORTINFO_ALV.

DATA:BEGIN OF ITABS OCCURS 0 ,


BELNR LIKE BKPF-BELNR , " document no.
BUDAT LIKE BKPF-BUDAT,
GJAHR LIKE BKPF-GJAHR , "
fiscal year
GSBER LIKE BSEG-GSBER , "
business area
LIFNR LIKE LFA1-LIFNR , "
vendor code
NAME1 LIKE LFA1-NAME1 , "
vendor name
* witht like with_item-witht , "indctr for witholding tax
*type
* wt_withcd like with_item-wt_withcd ,"withhldng tax code
QSCOD LIKE T059Z-QSCOD , "section code
QSSKZ_BASE LIKE BSEG-DMBTR ,
QSSKZ_BASIC LIKE BSEG-DMBTR , " seccode
QSSKZ_SURCHARGE LIKE BSEG-DMBTR , " seccode
QSSKZ_EDCESS LIKE BSEG-DMBTR , " seccode
QSSKZ_TOTAL LIKE BSEG-DMBTR,
END OF ITABS .
DATA: BEGIN OF I_BSEG OCCURS 0,
BUKRS LIKE BSEG-BUKRS,
BELNR LIKE BSEG-BELNR , " document no.
DMBTR LIKE BSEG-DMBTR , "VALUE
GJAHR LIKE BSEG-GJAHR , "fiscal year
GSBER LIKE BSEG-GSBER , "business area
LIFNR LIKE BSEG-LIFNR , "vendor code
HKONT LIKE BSEG-HKONT, " gL acc no.
* QSSKZ like BSEG-QSSKZ, " WITH HOLDING TAX CODE
QSSHB LIKE BSEG-QSSHB, " WITHHOLDING TAX BASE VALUE
SHKZG LIKE BSEG-SHKZG,
END OF I_BSEG.
DATA: BEGIN OF I_BSEGC OCCURS 0.
INCLUDE STRUCTURE I_BSEG.
DATA: END OF I_BSEGC.
DATA: BEGIN OF I_WITH_ITEM OCCURS 0,
BUKRS LIKE WITH_ITEM-BUKRS,
BELNR LIKE WITH_ITEM-BELNR , " document no.
GJAHR LIKE WITH_ITEM-GJAHR,
BUZEI LIKE WITH_ITEM-BUZEI,
WITHT LIKE WITH_ITEM-WITHT , "indctr for witholding tax type
WT_WITHCD LIKE WITH_ITEM-WT_WITHCD , "withhldng tax code
QSCOD LIKE T059Z-QSCOD , "section code(TAX KEY)
HKONT LIKE WITH_ITEM-HKONT,
WT_QSSHH LIKE WITH_ITEM-WT_QSSHH,
END OF I_WITH_ITEM.

DATA: BEGIN OF I_T059Z OCCURS 0,


WT_WITHCD LIKE T059Z-WT_WITHCD , " withhldng tax code
WITHT LIKE T059Z-WITHT , "indctr for witholding tax type
QSCOD LIKE T059Z-QSCOD , "section code(TAX KEY)
END OF I_T059Z.

DATA: BEGIN OF I_LFA1 OCCURS 0 ,


LIFNR LIKE LFA1-LIFNR , "vendor code
NAME1 LIKE LFA1-NAME1 , "vendor name
END OF I_LFA1 .
DATA: BEGIN OF I_BKPF OCCURS 0 ,
BUKRS LIKE BKPF-BUKRS,
BELNR LIKE BKPF-BELNR , " document no.
GJAHR LIKE BKPF-GJAHR , "business area
BUDAT LIKE BKPF-BUDAT , "business date
END OF I_BKPF .

RANGES: R_BUKRS FOR BSEG-BUKRS.

*SELECTION-SCREEN BEGIN OF SCREEN 3000 .


SELECT-OPTIONS:S_GSBER FOR BSEG-GSBER ,
S_GJAHR FOR BSEG-GJAHR NO INTERVALS
NO-EXTENSION ,
S_LIFNR FOR LFA1-LIFNR ,
S_QSCOD FOR T059Z-QSCOD NO INTERVALS,
S_DATE FOR BKPF-BUDAT .
*SELECTION-SCREEN END OF SCREEN 3000 .
*CALL SCREEN 3000 STARTING AT 2 2 .
*start-of-selection.
R_BUKRS-OPTION = 'EQ'.
R_BUKRS-SIGN = 'I'.
SELECT BUKRS FROM T001 INTO R_BUKRS-LOW.
APPEND R_BUKRS.
ENDSELECT.
PERFORM GET_I_BKPF .
IF I_BKPF[] IS NOT INITIAL.
PERFORM GET_I_BSEG .
PERFORM GET_I_LFA1 .
PERFORM GET_I_WITH_ITEM .
PERFORM GET_I_T059Z .
PERFORM GET_ITABS .
* perform del_i_bseg.
PERFORM DEL_QSCOD_EXTRA.
PERFORM DEL_ITABS.
PERFORM UPDATE_ITABS.

*end-of-selection .
IF ITABS[] IS NOT INITIAL.
* Subroutine that populates the field catalog
PERFORM BUILD_FIELD_CAT .
* Subroutine that populates the layout
PERFORM POPULATE_LAYOUT .
* Subroutine that sort the data .
PERFORM SORT_DATA .
PERFORM CREATE_LIST_HEADER.
PERFORM CREATE_EVENT.
* Subroutine that display the final ALV list
PERFORM DISPLAY_REPORT .
* ELSE.
* MESSAGE I398(00) WITH TEXT-001.
ENDIF.
*ELSE.
* MESSAGE I398(00) WITH TEXT-001.
ENDIF.
*&---------------------------------------------------------------------*
*& Form get_i_bseg
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_I_BSEG .
IF NOT I_BKPF[] IS INITIAL.
SELECT BUKRS
BELNR
DMBTR
GJAHR
GSBER
LIFNR
HKONT
* QSSKZ
QSSHB
SHKZG
FROM BSEG
INTO TABLE I_BSEG
FOR ALL ENTRIES IN I_BKPF
WHERE BUKRS = I_BKPF-BUKRS
AND BELNR = I_BKPF-BELNR
AND GJAHR = I_BKPF-GJAHR
AND BUZEI BETWEEN 000 AND 999.
* and hkont in ('0000131101','0000131111','0000131121').
* AND gsber in s_gsber.
ENDIF.
* delete i_bseg where belnr not in i_bkpf.
IF NOT S_GSBER[] IS INITIAL.
DELETE I_BSEG WHERE GSBER NOT IN S_GSBER.
ENDIF.
IF NOT S_LIFNR[] IS INITIAL.
DELETE I_BSEG WHERE LIFNR NOT IN S_LIFNR.
ENDIF.
ENDFORM. " get_i_bseg
*&---------------------------------------------------------------------*
*& Form get_i_lfa1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_I_LFA1.
SELECT LIFNR
NAME1
FROM LFA1
INTO CORRESPONDING FIELDS OF TABLE I_LFA1
FOR ALL ENTRIES IN I_BSEG
* WHERE lifnr in s_lifnr.
WHERE LIFNR = I_BSEG-LIFNR.
ENDFORM. " get_i_lfa1

*&---------------------------------------------------------------------*
*& Form get_i_with_item
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_I_WITH_ITEM.
* SELECT belnr
* witht
* wt_withcd
* FROM with_item
* INTO CORRESPONDING FIELDS OF TABLE i_with_item
* for all entries in i_bseg
* WHERE belnr = i_bseg-belnr.
*
SELECT WITH_ITEM~BUKRS
WITH_ITEM~BELNR
WITH_ITEM~GJAHR
WITH_ITEM~BUZEI
WITH_ITEM~WITHT
WITH_ITEM~WT_WITHCD
T059Z~QSCOD
WITH_ITEM~HKONT
WITH_ITEM~WT_QSSHH
INTO TABLE I_WITH_ITEM FROM WITH_ITEM INNER JOIN T059Z ON
WITH_ITEM~WITHT = T059Z~WITHT AND
WITH_ITEM~WT_WITHCD = T059Z~WT_WITHCD.
SORT I_WITH_ITEM BY BELNR DESCENDING.
* DELETE I_WITH_ITEM WHERE HKONT <> '0000131101'.
ENDFORM. " get_i_with_item
*&---------------------------------------------------------------------*
*& Form get_i_t059z
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_I_T059Z.

SELECT witht
wt_withcd
qscod
FROM t059z
INTO CORRESPONDING FIELDS OF TABLE i_t059z
WHERE qscod in s_qscod.
*
ENDFORM. " get_i_t059z
**&---------------------------------------------------------------------
**
**& Form get_i_bkpf
**&---------------------------------------------------------------------
**
** text
**----------------------------------------------------------------------
**
** --> p1 text
** <-- p2 text
**----------------------------------------------------------------------
**
*FORM get_i_bkpf.
*
* SELECT budat
* gjahr
* belnr
* FROM bkpf
* INTO CORRESPONDING FIELDS OF TABLE i_bkpf
* WHERE belnr = bkpf-belnr
* and gjahr in s_gjahr.
*
*
*ENDFORM. " get_i_t059z

*&---------------------------------------------------------------------*
*& Form get_itabs
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_ITABS .
I_BSEGC[] = I_BSEG[].
SORT I_BSEGC BY BELNR LIFNR DESCENDING.
DELETE ADJACENT DUPLICATES FROM I_BSEGC COMPARING BELNR .
*sort i_bseg by belnr descending.
LOOP AT I_BSEGC .
READ TABLE I_WITH_ITEM WITH KEY BELNR = I_BSEGC-BELNR.
IF SY-SUBRC = 0.
CLEAR I_WITH_ITEM.
LOOP AT I_WITH_ITEM WHERE BELNR = I_BSEGC-BELNR.
ITABS-BELNR = I_BSEGC-BELNR .
* itabs-qsskz = bseg-dmbtr .
ITABS-GJAHR = I_BSEGC-GJAHR .
ITABS-GSBER = I_BSEGC-GSBER .
ITABS-LIFNR = I_BSEGC-LIFNR .
ITABS-QSCOD = I_WITH_ITEM-QSCOD.
ITABS-QSSKZ_BASE = I_WITH_ITEM-WT_QSSHH.

READ TABLE I_LFA1 WITH KEY LIFNR = I_BSEGC-LIFNR .


IF SY-SUBRC EQ 0 .
* itabs-lifnr = i_lfa1-lifnr .
ITABS-NAME1 = I_LFA1-NAME1 .
ENDIF .
READ TABLE i_with_item WITH KEY belnr = i_bkpf-belnr .
* read table I_WITH_ITEM with key BELNR = I_BSEG-BELNR.
if SY-SUBRC eq 0 .
itabs-belnr = i_with_item-belnr .
* itabs-witht = i_with_item-witht .
* itabs-wt_withcd = i_with_item-wt_withcd.
ITABS-QSCOD = I_WITH_ITEM-QSCOD.
endif .
* READ TABLE i_t059z WITH KEY witht = i_with_item-witht .
* IF sy-subrc EQ 0 .
* itabs-witht = i_t059z-witht.
* itabs-wt_withcd = i_t059z-wt_withcd .
* itabs-qscod = i_t059z-qscod .
* ENDIF .
* READ TABLE i_bseg WITH KEY belnr = i_bkpf-belnr .
* IF sy-subrc EQ 0 .
* itabs-qsskz = i_bseg-qsskz.
* itabs-gsber = i_bseg-gsber .
* itabs-lifnr = i_bseg-lifnr .
* ENDIF .
*case: ibseg-hkont.
*where '0000131101
*
READ TABLE I_BKPF WITH KEY BELNR = I_BSEGC-BELNR.
IF SY-SUBRC = 0.
ITABS-BUDAT = I_BKPF-BUDAT.
ENDIF.

APPEND ITABS .
CLEAR ITABS .
ENDLOOP.
ELSE.
ITABS-BELNR = I_BSEGC-BELNR .
* itabs-qsskz = bseg-dmbtr .
ITABS-GJAHR = I_BSEGC-GJAHR .
ITABS-GSBER = I_BSEGC-GSBER .
ITABS-LIFNR = I_BSEGC-LIFNR .
READ TABLE I_LFA1 WITH KEY LIFNR = I_BSEGC-LIFNR .
IF SY-SUBRC EQ 0 .
* itabs-lifnr = i_lfa1-lifnr .
ITABS-NAME1 = I_LFA1-NAME1 .
ENDIF .
READ TABLE I_BKPF WITH KEY BELNR = I_BSEGC-BELNR.
IF SY-SUBRC = 0.
ITABS-BUDAT = I_BKPF-BUDAT.
ENDIF.
APPEND ITABS.
CLEAR ITABS.
ENDIF.
ENDLOOP .
ENDFORM. "get_itabs

*&---------------------------------------------------------------------*
*& Form display_report
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DISPLAY_REPORT .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = I_FIELDTAB
IT_EVENTS = I_GLOBAL_EVENT
IT_SORT = T_SORT
I_SAVE = 'U'
TABLES
T_OUTTAB = ITABS
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. " DISPLAY_REPORT
*&---------------------------------------------------------------------*
*& Form build_field_cat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FIELD_CAT .
CLEAR : S_FIELDTAB ,
I_FIELDTAB[] .

S_FIELDTAB-FIELDNAME = 'BELNR '.


S_FIELDTAB-SELTEXT_L = 'Doc no'(002) .
S_FIELDTAB-TABNAME = 'ITABS '.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.
S_FIELDTAB-FIELDNAME = 'BUDAT '.
S_FIELDTAB-SELTEXT_L = 'POSTING DATE'(003).
S_FIELDTAB-TABNAME = 'ITABS '.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.

S_FIELDTAB-FIELDNAME = 'LIFNR '.


S_FIELDTAB-SELTEXT_L = 'Vendor Code'(004).
S_FIELDTAB-TABNAME = 'ITABS '.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.
S_FIELDTAB-FIELDNAME = 'NAME1 '.
S_FIELDTAB-SELTEXT_L = 'Vendor name'(005).
S_FIELDTAB-TABNAME = 'ITABS '.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.
* *changes made by ravi kumar on 01.03.2007
S_FIELDTAB-FIELDNAME = 'GSBER '.
S_FIELDTAB-SELTEXT_L = 'Business Area'(012).
S_FIELDTAB-TABNAME = 'ITABS '.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.

S_FIELDTAB-FIELDNAME = 'QSCOD '.


S_FIELDTAB-SELTEXT_L = 'Off Key'(006).
S_FIELDTAB-TABNAME = 'ITABS '.
APPEND S_FIELDTAB TO I_FIELDTAB.
CLEAR S_FIELDTAB.
S_FIELDTAB-FIELDNAME = 'QSSKZ_BASE '.
S_FIELDTAB-SELTEXT_L = 'BASE VALUE '.
S_FIELDTAB-TABNAME = 'ITABS '.
S_FIELDTAB-DO_SUM = 'X'.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.

S_FIELDTAB-FIELDNAME = 'QSSKZ_BASIC '.


S_FIELDTAB-SELTEXT_L = 'BASIC '.
S_FIELDTAB-TABNAME = 'ITABS '.
S_FIELDTAB-DO_SUM = 'X'.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.
S_FIELDTAB-FIELDNAME = 'QSSKZ_SURCHARGE '.
S_FIELDTAB-SELTEXT_L = 'SURCHARGE'.
S_FIELDTAB-TABNAME = 'ITABS '.
S_FIELDTAB-DO_SUM = 'X'.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.
S_FIELDTAB-FIELDNAME = 'QSSKZ_EDCESS '.
S_FIELDTAB-SELTEXT_L = 'ED.CESS'.
S_FIELDTAB-TABNAME = 'ITABS '.
S_FIELDTAB-DO_SUM = 'X'.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.
S_FIELDTAB-FIELDNAME = 'QSSKZ_TOTAL '.
S_FIELDTAB-SELTEXT_L = 'TOTAL'.
S_FIELDTAB-TABNAME = 'ITABS '.
S_FIELDTAB-DO_SUM = 'X'.
APPEND S_FIELDTAB TO I_FIELDTAB .
CLEAR S_FIELDTAB.

* s_fieldtab-fieldname = 'LIFNR'.
* s_fieldtab-seltext_l = 'VENDOR CODE'.
* s_fieldtab-tabname = 'ITABS'.
* APPEND s_fieldtab TO i_fieldtab.
* CLEAR s_fieldtab.
*
* s_fieldtab-fieldname = 'NAME1'.
* s_fieldtab-seltext_l = 'VENDOR NAME'.
* s_fieldtab-tabname = 'ITABS'.
* APPEND s_fieldtab TO i_fieldtab.
* CLEAR s_fieldtab.
ENDFORM. " build_field_cat
*&---------------------------------------------------------------------*
*& Form populate_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM POPULATE_LAYOUT .
CLEAR : I_LAYOUT.
I_LAYOUT-ZEBRA = 'X'.
I_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
I_LAYOUT-INFO_FIELDNAME = 'COL'.
* I_LAYOUT-NO_TOTALLINE = 'X'.

ENDFORM. " populate_layout


*&---------------------------------------------------------------------*
*& Form sort_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SORT_DATA .
DATA: WS_SORT LIKE T_SORT WITH HEADER LINE .
CLEAR WS_SORT.
*
WS_SORT-SPOS = '1'.
WS_SORT-FIELDNAME = 'GSBER'.
WS_SORT-TABNAME = 'ITABS'.
* ws_sort-subtot = 'X'.
WS_SORT-UP = 'X'.
* WS_SORT-SUBTOT = 'X'.
APPEND WS_SORT TO T_SORT.
CLEAR WS_SORT.
WS_SORT-SPOS = '2'.
WS_SORT-FIELDNAME = 'QSCOD'.
WS_SORT-TABNAME = 'ITABS'.
* ws_sort-subtot = 'X'.
WS_SORT-UP = 'X'.
WS_SORT-SUBTOT = 'X'.
APPEND WS_SORT TO T_SORT.

ENDFORM. " sort_data


*&---------------------------------------------------------------------*
*& Form del_qscod_extra
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DEL_QSCOD_EXTRA .
IF S_QSCOD[] IS NOT INITIAL.
DELETE ITABS WHERE QSCOD NOT IN S_QSCOD.
ENDIF.
ENDFORM. " del_qscod_extra
*&---------------------------------------------------------------------*
*& Form calculate_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
*&---------------------------------------------------------------------*
*& Form del_itabs
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DEL_ITABS .
SORT ITABS BY BELNR LIFNR QSCOD DESCENDING.
DELETE ADJACENT DUPLICATES FROM ITABS COMPARING BELNR QSCOD.
* delete ITABS where QSSKZ_BASIC = 0 and
* QSSKZ_SURCHARGE = 0 and
* QSSKZ_EDCESS = 0 and
* QSSKZ_TOTAL = 0.
ENDFORM. " del_itabs
*
*&---------------------------------------------------------------------*
*& Form update_itabs
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM UPDATE_ITABS .
SORT I_BSEG BY BELNR HKONT DESCENDING.
LOOP AT ITABS.
LOOP AT I_BSEG WHERE BELNR = ITABS-BELNR.
CASE : I_BSEG-HKONT.
WHEN '0016613101'.
IF I_BSEG-SHKZG = 'S'.
ITABS-QSSKZ_BASIC = I_BSEG-DMBTR.
ELSE.
ITABS-QSSKZ_BASIC = - I_BSEG-DMBTR.
ENDIF.
WHEN '0016613106'.
IF I_BSEG-SHKZG = 'S'.
ITABS-QSSKZ_SURCHARGE = I_BSEG-DMBTR.
ELSE.
ITABS-QSSKZ_SURCHARGE = - I_BSEG-DMBTR.
ENDIF.
WHEN '0016613108'.
IF I_BSEG-SHKZG = 'S'.
ITABS-QSSKZ_EDCESS = I_BSEG-DMBTR.
ELSE.
ITABS-QSSKZ_EDCESS = - I_BSEG-DMBTR.
ENDIF.
WHEN OTHERS.
IF ITABS-QSCOD = ' '.
IF I_BSEG-LIFNR IS NOT INITIAL.
IF I_BSEG-SHKZG = 'S'.
ITABS-QSSKZ_BASE = I_BSEG-DMBTR.
ELSE.
ITABS-QSSKZ_BASE = - I_BSEG-DMBTR.
ENDIF.
ENDIF.
* else.
* if I_BSEG-QSSHB = 0 and
* if i_bseg-lifnr is initial.
*
* if I_BSEG-SHKZG = 'S'.
* ITABS-QSSKZ_BASE = I_BSEG-DMBTR.
* else.
* ITABS-QSSKZ_BASE = - I_BSEG-DMBTR.
* endif.
* endif.
ENDIF.
ENDCASE.
ENDLOOP.
ITABS-QSSKZ_TOTAL = ( ITABS-QSSKZ_BASIC + ITABS-QSSKZ_SURCHARGE +
ITABS-QSSKZ_EDCESS ).
MODIFY ITABS.
ENDLOOP.
DELETE ITABS WHERE QSSKZ_TOTAL = 0 OR LIFNR IS INITIAL.
ENDFORM. " update_itabs
*&---------------------------------------------------------------------*
*& Form del_i_bseg
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DEL_I_BSEG .
*loop at i_bseg.
*if i_bseg-hkont ne '0000131101' or
* i_bseg-hkont ne '0000131111' or
* i_bseg-hkont ne '0000131121'.
*delete i_bseg.
*endif.
*endloop.
*delete i_bseg where hkont ne '0000131101'.
*delete i_bseg where hkont ne '0000131111'.
*delete i_bseg where hkont ne '0000131121'.
ENDFORM. " del_i_bseg
*&---------------------------------------------------------------------*
*& Form get_i_bkpf
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_I_BKPF .
SELECT BUKRS BELNR GJAHR BUDAT FROM BKPF INTO TABLE I_BKPF
WHERE BUKRS IN R_BUKRS
AND BELNR BETWEEN '0000000000' AND '9999999999'
AND GJAHR IN S_GJAHR
AND BUDAT BETWEEN '20070801' AND '99991231'.
SORT I_BKPF BY BELNR DESCENDING.
DELETE I_BKPF WHERE GJAHR NOT IN S_GJAHR.
DELETE I_BKPF WHERE BUDAT NOT IN S_DATE.
ENDFORM. " get_i_bkpf
*&---------------------------------------------------------------------*
*& Form create_list_header
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_LIST_HEADER .
CLEAR: LOCAL_LISTHEADER,
GLOBAL_LISTHEADER[].
LOCAL_LISTHEADER-TYP = 'H'.
LOCAL_LISTHEADER-INFO = 'GTA REPORT'.
APPEND LOCAL_LISTHEADER TO GLOBAL_LISTHEADER.
CLEAR LOCAL_LISTHEADER.
ENDFORM. " create_list_header
*&---------------------------------------------------------------------*
*& Form create_event
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_EVENT .
CLEAR:
I_LOCAL_EVENT,
I_GLOBAL_EVENT[].
I_LOCAL_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
I_LOCAL_EVENT-FORM = 'GEN_TOP_OF_PAGE'.
APPEND I_LOCAL_EVENT TO I_GLOBAL_EVENT.
CLEAR I_LOCAL_EVENT.
ENDFORM. " create_event
*&---------------------------------------------------------------------*
*& Form GEN_TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GEN_TOP_OF_PAGE .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GLOBAL_LISTHEADER.
ENDFORM. "GEN_TOP_OF_PAGE

You might also like