Professional Documents
Culture Documents
REPORT ZFI_TDS_REVISED.
TYPE-POOLS: SLIS .
*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.
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 = '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'.