Professional Documents
Culture Documents
DB Operation SELECT For ... Found.
DB Operation SELECT For ... Found.
*& Report Z5
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
***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.
*&---------------------------------------------------------------------*
* 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
*&---------------------------------------------------------------------*
* INITIALIZATION EVENT *
*&---------------------------------------------------------------------*
**Use this EVENT to initialize the SELECTION-SCREEN variables
INITIALIZATION.
*&---------------------------------------------------------------------*
* 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.
*&---------------------------------------------------------------------*
* 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 .
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 ).
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 ****
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.
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.
* 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 = '0000181060'.
i_final-vkorg = '3000'.
ENDIF.
CASE i_bsid-blart.
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 'RV'.
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 ****
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.
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 *****
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
* 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.
* i_final1-kunnr = i_likp-kunnr.
i_final1-kunag = i_likp-kunag.
* I_FINAL1-LFDAT1 = I_LIKP-LFDAT.
ENDIF.
ENDIF.
IF l_diff < 0.
l_diff = 0.
ENDIF.
i_final1-day_due = l_diff - i_final1-ztag1.
ENDLOOP.
*delete i_final1 where tot_inv le 0.
DELETE i_final1 WHERE tot_inv = 0.
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.
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.
*---------------------------------------------------------------------*
* FORM USER_VF03 *
*---------------------------------------------------------------------*
FORM user_vf03 USING u_ucomm LIKE sy-ucomm
us_selfield TYPE slis_selfield.
IF us_selfield-fieldname ='VBELN'.
IF sy-subrc = 0.
l_vbeln = i_final1-vbeln.
ENDIF.
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.
.
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