2007 Mar 21 1:22 PM
Hi all,
I have a production issue and my report takes around 4 to 5 hours for its execution and i've finded out that the 2nd from first query has a corresponding tale with it and when i modified it to below one its displaying the output and when i check it in ST05 i have no i_bsad and i_bsid table query times mentioned in it.Where in when i have the corresponding tale included i get the above both queries time interval and this table works fine.(i have to have this select statements included for my business scenario logic).But because of the inclusion of this this both table are eating lot of time.Need to include them and reduce the time comsumption of the both the tables.
SELECT vbeln fkart vbtyp knumv fkdat gjahr kdgrp rfbsk zterm bukrs
netwr kunrg kunag
bstnk_vf xblnr mwsbk rfbsk
INTO TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
vbtyp IN zvbtyp AND
fkdat IN zfkdat AND
bukrs IN zbukrs AND
kunag IN zkunag AND
bstnk_vf IN zbstnkvf AND
xblnr IN zxblnr AND
fksto NE 'X' .
SELECT vbeln fkart vbtyp knumv fkdat bukrs gjahr kdgrp zterm netwr
kunrg kunag
bstnk_vf xblnr mwsbk rfbsk
INTO CORRESPONDING FIELDS OF TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
kunag IN zkunag AND
fkdat IN zfkdat AND
xblnr IN zxblnr AND
bstnk_vf IN zbstnkvf AND
vbtyp IN zvbtyp AND
fksto NE 'X' AND
bukrs IN zbukrs .
This are the both table which has to be included ,
SELECT belnr buzei dmbtr shkzg APPENDING TABLE i_bsad
FROM bsad
FOR ALL ENTRIES IN l_tab_temp
WHERE
bukrs EQ l_tab_temp-bukrs AND
gjahr EQ l_tab_temp-gjahr AND
belnr EQ l_tab_temp-vbeln.
SELECT belnr buzei shkzg dmbtr rebzg FROM bsid APPENDING CORRESPONDING FIELDS OF TABLE i_bsid
FOR ALL ENTRIES IN l_tab_temp
WHERE bukrs EQ l_tab_temp-bukrs
"PRA927038 "PRA927150 vbeln pick
AND NOT AUGBL = SPACE
*AND BELNR = L_TAB_TEMP-VBELN
AND gjahr = l_tab_temp-gjahr
AND gjahr IN zgjahr.
AND vbeln = l_tab_temp-vbeln .
AND rebzg = l_tab_temp-vbeln
AND rebzj = l_tab_temp-gjahr.
Can any one help me in tuning this if u guys still have questions please ask me.And for your understanding this my coding please go through it
&----
*& Report ZAR_REC001 *
*& *
&----
REPORT zar_rec001 NO STANDARD PAGE HEADING
LINE-SIZE 355
LINE-COUNT 60
MESSAGE-ID zuserm.
TYPE-POOLS : slis.
TABLES : vbrk,
vbrp,
bsid,
bsad,
kna1,
lfa1,
knvv,
zar1_detail,
zar1_struc1,
vbak,
vbap,
zcustomfields,
konv,
zvlxxsr,
mara,
t023t,
sscrfields,
konp,
tvarv,
tvkgr,
tvgrt. "IMR928046
TYPES : BEGIN OF t_tvkgr,
vkgrp TYPE vbrp-vkgrp,
END OF t_tvkgr.
TYPES : BEGIN OF ty_vbrp, "IMR928046
vkgrp TYPE vkgrp,
END OF ty_vbrp.
DATA : BEGIN OF i_zgjahr OCCURS 0,
zgjahr LIKE bsid-gjahr,
END OF i_zgjahr.
DATA : BEGIN OF i_vbrk OCCURS 0,
vbeln LIKE vbrk-vbeln,
fkart LIKE vbrk-fkart,
vbtyp LIKE vbrk-vbtyp,
knumv LIKE vbrk-knumv,
fkdat LIKE vbrk-fkdat,
gjahr LIKE vbrk-gjahr, "KRISHNA
kdgrp LIKE vbrk-kdgrp,
zterm LIKE vbrk-zterm,
bukrs LIKE vbrk-bukrs, "krishna
rfbsk LIKE vbrk-rfbsk, " KYH25882
netwr LIKE vbrk-netwr,
kunrg LIKE vbrk-kunrg,
kunag LIKE vbrk-kunag,
bstnk_vf LIKE vbrk-bstnk_vf,
xblnr LIKE vbrk-xblnr,
mwsbk LIKE vbrk-mwsbk,
name1 LIKE kna1-name1,
vkgrp LIKE knvv-vkgrp,
bezei LIKE tvgrt-bezei, "IMR928046
partialpmt LIKE vbrk-netwr,
opendmbtr LIKE vbrk-netwr,
gmdpercent LIKE vbrp-netwr,
gmdnetwr LIKE vbrp-netwr,
aubel LIKE vbrp-aubel,
aupos LIKE vbrp-aupos,
ihrez LIKE vbak-ihrez,
kdmat LIKE vbap-kdmat,
mwsbp LIKE vbrp-mwsbp,
kzwi5 LIKE vbrp-kzwi5,
due1 LIKE vbrp-netwr,
due2 LIKE vbrp-netwr,
due3 LIKE vbrp-netwr,
due4 LIKE vbrp-netwr,
due5 LIKE vbrp-netwr,
due6 LIKE vbrp-netwr.
DATA: END OF i_vbrk.
DATA : BEGIN OF i_vbrp OCCURS 0.
INCLUDE STRUCTURE zar1_struc1.
DATA: zzp_mfrnr LIKE vbrp-zzp_mfrnr,
vgbel LIKE vbrp-vgbel,
vgpos LIKE vbrp-vgpos.
DATA : END OF i_vbrp.
DATA : d_vbrp LIKE i_vbrp OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF d1_vbrp OCCURS 0.
INCLUDE STRUCTURE zar1_detail.
DATA : END OF d1_vbrp.
DATA : BEGIN OF i_bsad OCCURS 0,
belnr LIKE bsad-belnr, "krishna
buzei LIKE bsad-buzei, "Vijay
dmbtr LIKE bsad-dmbtr, "krishna
shkzg. "ppo924471
DATA : END OF i_bsad.
*--- begin of ppo924396
DATA : BEGIN OF i_bsid OCCURS 0,
augbl like bsad-augbl, "PRA927038
vbeln LIKE bsid-vbeln, "vma928512
rebzg LIKE bsid-rebzg, "vma928512
belnr LIKE bsid-belnr,
buzei LIKE bsid-buzei,
shkzg LIKE bsad-shkzg, "ppo924471
dmbtr LIKE bsad-dmbtr.
DATA : END OF i_bsid.
DATA : l_partialpmt LIKE bsad-dmbtr.
*--- end of ppo924396
DATA : BEGIN OF i_kunag OCCURS 0,
kunag LIKE vbrk-kunag.
DATA : END OF i_kunag.
DATA : BEGIN OF i_knumv OCCURS 0,
knumv LIKE vbrk-knumv.
DATA : END OF i_knumv.
DATA: BEGIN OF i_konv OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
kschl LIKE konv-kschl,
knumh LIKE konv-knumh,
kbetr LIKE konv-kbetr,
kwert LIKE konv-kwert,
kopos LIKE konv-kopos,
END OF i_konv.
DATA : BEGIN OF i_kna1 OCCURS 0,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
name2 LIKE kna1-name2,
name3 LIKE kna1-name3,
stras LIKE kna1-stras,
ort01 LIKE kna1-ort01,
regio LIKE kna1-regio,
pstlz LIKE kna1-pstlz,
adrnr LIKE kna1-adrnr.
DATA : END OF i_kna1.
*DATA : I_KNA1 TYPE HASHED TABLE OF T_KNA1 WITH UNIQUE KEY KUNNR.
*DATA : L_WA_KNA1 TYPE T_KNA1.
TYPES : BEGIN OF t_t023t,
matkl LIKE t023t-matkl,
wgbez LIKE t023t-wgbez.
TYPES : END OF t_t023t.
DATA : i_t023t TYPE HASHED TABLE OF t_t023t WITH UNIQUE KEY matkl.
DATA : l_wa_t023t TYPE t_t023t.
DATA : BEGIN OF i_t179t OCCURS 0,
prodh LIKE t179t-prodh,
vtext LIKE t179t-vtext.
DATA : END OF i_t179t.
TYPES : BEGIN OF t_mara,
matnr LIKE mara-matnr,
mfrpn LIKE mara-mfrpn.
TYPES : END OF t_mara.
DATA : i_mara TYPE HASHED TABLE OF t_mara WITH UNIQUE KEY matnr.
DATA : l_wa_mara TYPE t_mara.
DATA : BEGIN OF i_vbak OCCURS 0,
vbeln LIKE vbak-vbeln,
bname LIKE vbak-bname,
zz_ccenter LIKE vbak-zz_ccenter,
zz_dept LIKE vbak-zz_dept,
ihrez LIKE vbak-ihrez.
DATA : END OF i_vbak.
DATA: BEGIN OF i_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
erdat LIKE vbap-erdat,
prodh LIKE vbap-prodh,
ihrez LIKE vbak-ihrez,
kdmat LIKE vbap-kdmat,
posex LIKE vbap-posex,
END OF i_vbap.
DATA : BEGIN OF i_zcustomfields OCCURS 0,
vbeln LIKE zcustomfields-vbeln,
posnr LIKE zcustomfields-posnr,
valueid LIKE zcustomfields-valueid,
value LIKE zcustomfields-value.
DATA : END OF i_zcustomfields.
DATA : BEGIN OF i_vbpa OCCURS 0,
vbeln LIKE vbpa-vbeln,
kunnr LIKE vbpa-kunnr,
adrnr LIKE vbpa-adrnr.
DATA : END OF i_vbpa.
DATA d_vbpa LIKE i_vbpa OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF i_zvlxxsr OCCURS 0.
INCLUDE STRUCTURE zvlxxsr.
DATA : END OF i_zvlxxsr.
TYPES: BEGIN OF t_lfa1,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1.
TYPES: END OF t_lfa1.
DATA : i_lfa1 TYPE HASHED TABLE OF t_lfa1 WITH UNIQUE KEY lifnr.
DATA : l_wa_lfa1 TYPE t_lfa1.
DATA : i_tvkgr TYPE STANDARD TABLE OF t_tvkgr.
DATA : l_tvkgr TYPE t_tvkgr.
DATA : g_date_diff TYPE p.
DATA: fieldcat_sno TYPE slis_t_fieldcat_alv,
g_append_d_vbrp,
tcode LIKE sy-tcode,
fkimg_tot LIKE vbrp-fkimg,
Begin DEVK926013 KYH26013
NETPR_TOT LIKE I_VBRP-NETPR,
NETWR_TOT LIKE I_VBRP-NETPR,
KBETR_TOT LIKE I_VBRP-NETPR,
KBETRQTY_TOT LIKE I_VBRP-NETPR,
GMDPERCENT_TOT LIKE I_VBRP-NETPR,
GMDNETWR_TOT LIKE I_VBRP-NETPR,
netpr_tot LIKE vbrp-netwr,
netwr_tot LIKE vbrp-netwr,
kbetr_tot LIKE vbrp-netwr,
kbetrqty_tot LIKE vbrp-netwr,
gmdpercent_tot LIKE vbrp-netwr,
gmdnetwr_tot LIKE vbrp-netwr,
End DEVK926013 KYH26013
auth_failure.
DATA: objnum LIKE vbrk-knumv.
DATA: auth(3) TYPE c.
DATA: authcnt TYPE i VALUE 0.
DATA: cntserno TYPE i.
DATA: l_from TYPE i,
l_to TYPE i,
l_lines TYPE i,
l_rows(9) TYPE p DECIMALS 5,
l_loop TYPE i.
*--- begin of ppo924234
DATA: BEGIN OF down_sum OCCURS 0,
vbeln LIKE vbrk-vbeln,
fkart LIKE vbrk-fkart,
fkdat(8),
kunrg LIKE vbrk-kunrg,
kunag LIKE vbrk-kunag,
name1 LIKE kna1-name1,
vkgrp LIKE knvv-vkgrp,
bezei LIKE tvgrt-bezei, "IMR928046
zterm LIKE vbrk-zterm,
bstnk_vf LIKE vbrk-bstnk_vf,
xblnr LIKE vbrk-xblnr,
netwr(15),
partialpmt(15),
due1(15),
due2(15),
due3(15),
due4(15),
due5(15),
due6(15),
kdgrp LIKE vbrk-kdgrp,
END OF down_sum.
DATA: BEGIN OF down_sum_get OCCURS 0,
line(255),
END OF down_sum_get.
DATA: BEGIN OF down_det OCCURS 0,
zzid TYPE zchar8,
zcount(10),
vbeln TYPE zvbeln,
posnr(6),
fkdat(8),
bstnk_vf TYPE bstnk,
fkimg(13),
name1_mfg TYPE zmfg_zar1,
matnr TYPE matnr,
arktx TYPE arktx,
netpr(11),
kzwi5(13),
netwr(15),
kbetr(11),
kbetrqty(11),
mwsbp(13),
gmdpercent(15),
gmdnetwr(15),
name1 TYPE zsold_zar1,
name1_sh TYPE zship_zar1,
name2_sh TYPE zship2_zar1,
name3_sh TYPE zship3_zar1,
stras_sh TYPE stras,
ort01_sh TYPE ort01,
regio_sh TYPE regio,
pstlz_sh TYPE pstlz,
bname TYPE zbname_zar1,
vkgrp TYPE vkgrp,
aubel TYPE vbeln_va ,
aupos(6),
audat(8),
sernr TYPE gernr,
prodh TYPE prodh_d,
wgbez TYPE wgbez,
vtext TYPE bezei20,
asstg TYPE zasstg,
matkl TYPE matkl,
fkart TYPE fkart,
kunag TYPE kunag,
vbtyp TYPE vbtyp,
ihrez TYPE ihrez,
kdmat TYPE matnr_ku,
posex TYPE posex,
zz_ccenter TYPE zv_ccenter,
zz_dept TYPE zv_dept,
zz_cap_exp_code TYPE zv_cap_exp_code,
zz_cap_exp_id TYPE zv_cap_exp_id,
zz_project TYPE zv_project,
zz_aprvd_by TYPE zv_aprvd_by,
kdgrp_auft TYPE kdgrp_auft,
END OF down_det.
*--- end of ppo924234
*--- begin of ppo924471
DATA: BEGIN OF i_tvfk OCCURS 0,
fkart TYPE fkart,
END OF i_tvfk.
*--- end of ppo924471
begin of KYH
DATA: fiscal_yr_begn(8) TYPE c,
fiscal_yr_end(8) TYPE c,
fiscal_yr LIKE bsid-gjahr,
fnyear(4) TYPE c,
fnyear_pre(4) TYPE c.
END of KYH
DATA : v_gjahr LIKE bsid-gjahr. " KYH25882
TYPES : BEGIN OF t_konp,
knumh LIKE konp-knumh,
kopos LIKE konp-kopos,
KBETR LIKE KONP-KBETR. " KYH26013
kbetr LIKE vbrk-netwr. " KYH26013
TYPES : END OF t_konp.
DATA :i_konp TYPE HASHED TABLE OF t_konp WITH UNIQUE KEY knumh kopos.
DATA : l_wa_konp TYPE t_konp.
DATA : l_e_fyv TYPE periv VALUE 10,
l_i_fyear LIKE t009b-bdatj,
l_bsid_index TYPE sy-tabix VALUE 1,
l_bsad_index TYPE sy-tabix VALUE 1.
CLASS cl_abap_char_utilities DEFINITION LOAD. "IMR928770
CONSTANTS:
c_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
c_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.
CONSTANTS c_index TYPE i VALUE 2000. "KYH25969
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME.
SELECT-OPTIONS : zkunag FOR vbrk-kunag MATCHCODE OBJECT debi,
zvbeln FOR vbrk-vbeln MATCHCODE OBJECT vmcf,
zfkdat FOR vbrk-fkdat OBLIGATORY,
zvkbur FOR knvv-vkbur,
zvkgrp FOR knvv-vkgrp OBLIGATORY,
zbukrs FOR bsid-bukrs OBLIGATORY,
zgjahr FOR bsid-gjahr OBLIGATORY,
zvbtyp FOR vbrk-vbtyp NO-DISPLAY,
zbstnkvf FOR vbrk-bstnk_vf,
zxblnr FOR vbrk-xblnr.
SELECTION-SCREEN : END OF BLOCK blk1.
SELECTION-SCREEN : BEGIN OF BLOCK blk2 WITH FRAME.
PARAMETER : zopeninv RADIOBUTTON GROUP inv,
zallinv RADIOBUTTON GROUP inv DEFAULT 'X'.
SELECTION-SCREEN : END OF BLOCK blk2.
SELECTION-SCREEN : BEGIN OF BLOCK blk3 WITH FRAME.
PARAMETER : zinvoice AS CHECKBOX,
zdebit AS CHECKBOX,
zcredit AS CHECKBOX.
SELECTION-SCREEN : END OF BLOCK blk3.
SELECTION-SCREEN : BEGIN OF BLOCK blk4 WITH FRAME.
PARAMETER : zsumrep RADIOBUTTON GROUP rep DEFAULT 'X',
zdetrep RADIOBUTTON GROUP rep.
SELECT-OPTIONS : zmfrnr FOR vbrp-zzp_mfrnr MATCHCODE OBJECT kred.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN PUSHBUTTON /1(42) prun_det USER-COMMAND prun.
PARAMETERS: zid LIKE zar1_detail-zzid.
SELECTION-SCREEN : END OF BLOCK blk4.
*--- begin of ppo924234
SELECTION-SCREEN BEGIN OF BLOCK blk5 WITH FRAME TITLE text-001.
PARAMETERS: p_appfil RADIOBUTTON GROUP file DEFAULT 'X',
p_prsfil RADIOBUTTON GROUP file.
PARAMETERS: filepath LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk5.
*--- end of ppo924234
INITIALIZATION.
MOVE : 'Detail Report results of the previous run' TO prun_det.
zid = sy-uname(8).
tcode = sy-tcode.
IF NOT tcode IS INITIAL.
tvarv-name = 'ZTCODE_ZAR_INVOICE'.
tvarv-type = 'P'.
tvarv-low = tcode.
MODIFY tvarv.
ENDIF.
IF tcode NE 'ZAR2'.
NEW-PAGE LINE-SIZE 255.
ELSE.
NEW-PAGE LINE-SIZE 170.
ENDIF.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'PRUN'.
PERFORM call_ze16.
EXIT.
ENDIF.
*--- begin of ppo924234
AT SELECTION-SCREEN ON BLOCK blk5.
IF p_prsfil = 'X' AND filepath IS INITIAL.
MESSAGE e001(00) WITH 'Enter the File Name'.
ENDIF.
*--- end of ppo924234
START-OF-SELECTION.
PERFORM check_tcode.
PERFORM check_authorization.
IF auth_failure = 'X'.
EXIT.
ENDIF.
PERFORM get_sd_doc_category.
PERFORM get_invoice_data.
IF NOT i_vbrk[] IS INITIAL. "KYH25969
PERFORM get_accounting_data.
PERFORM get_other_data.
ENDIF. "KYH25969
END-OF-SELECTION.
IF NOT i_vbrk[] IS INITIAL. " KYH25969
PERFORM process_data.
IF NOT zsumrep IS INITIAL.
*--- begin of ppo924234
IF NOT filepath IS INITIAL.
CLEAR down_sum.
REFRESH down_sum.
MOVE: 'Invoice No' TO down_sum-vbeln,
'ITyp' TO down_sum-fkart,
'Bill Dt' TO down_sum-fkdat,
'Bill-to#' TO down_sum-kunrg,
'Customer#' TO down_sum-kunag,
'Name' TO down_sum-name1,
'SPN' TO down_sum-vkgrp,
'Spn Name' TO down_sum-bezei, "IMR928046
'PayT' TO down_sum-zterm,
'PO No' TO down_sum-bstnk_vf,
'Ref Doc' TO down_sum-xblnr,
'Invoice Total' TO down_sum-netwr,
'Payments' TO down_sum-partialpmt,
'Due(00-29 Days)' TO down_sum-due1,
'Due(30-44 Days)' TO down_sum-due2,
'Due(45-59 Days)' TO down_sum-due3,
'Due(60-74 Days)' TO down_sum-due4,
'Due(75-89 Days)' TO down_sum-due5,
'Due(Ovr 90Days)' TO down_sum-due6,
'CGrp' TO down_sum-kdgrp.
APPEND down_sum.
LOOP AT i_vbrk.
MOVE-CORRESPONDING i_vbrk TO down_sum.
APPEND down_sum.
CLEAR down_sum.
ENDLOOP.
PERFORM download_file TABLES down_sum USING down_sum.
ENDIF.
*--- end of ppo924234
PERFORM display_summary_output.
ELSE.
for Detail report
IF NOT i_vbrk[] IS INITIAL. " KYH26282
PERFORM get_data_for_detail_report.
PERFORM process_data_for_detail_report.
PERFORM display_detail_report.
ELSE.
MESSAGE i001(00) WITH 'No data exists for the given selection'.
" KYH26282
ENDIF. "KYH26282
ENDIF.
ELSE.
MESSAGE i001(00) WITH 'No data exists for the given selection'.
"KYH25969
ENDIF. " KYH25969
&----
*& Form GET_INVOICE_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_invoice_data .
TYPES : BEGIN OF t1_vbrp,
vbeln TYPE vbeln,
gmdnetwr LIKE zar1_struc1-gmdnetwr,
gmdpercent LIKE zar1_struc1-gmdpercent,
vkgrp TYPE vkgrp.
TYPES END OF t1_vbrp.
DATA : v_end_flag(1) TYPE c.
DATA : l_tab_vbrp TYPE STANDARD TABLE OF t1_vbrp. "KYH
DATA: l_wa_vbrp LIKE LINE OF i_vbrp.
DATA : l1_vbrp TYPE t1_vbrp.
DATA : l_tab_temp LIKE STANDARD TABLE OF i_vbrk.
DATA : l_sy_tabix LIKE sy-tabix,
gmdnetwr LIKE i_vbrp-gmdnetwr,
gmdpercent LIKE i_vbrp-gmdpercent,
l_count LIKE sy-tabix,
l_tabix TYPE sy-tabix.
CLEAR: l_sy_tabix, l_tabix.
SELECT vbeln fkart vbtyp knumv fkdat gjahr kdgrp rfbsk zterm bukrs
netwr kunrg kunag "IMR928882
bstnk_vf xblnr mwsbk rfbsk
INTO TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
vbtyp IN zvbtyp AND
fkdat IN zfkdat AND
bukrs IN zbukrs AND
kunag IN zkunag AND
bstnk_vf IN zbstnkvf AND
xblnr IN zxblnr AND
fksto NE 'X' .
IF sy-dbcnt NE 0.
IF NOT zsumrep IS INITIAL.
IF NOT i_vbrk[] IS INITIAL.
PERFORM fiscal_year_check. " KYH25882
IF NOT i_vbrk[] IS INITIAL. " KYH25882
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
SELECT vbeln posnr vkgrp mwsbp kzwi5 aubel aupos
kdgrp_auft
APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
FROM vbrp FOR ALL ENTRIES IN l_tab_temp
WHERE
vbeln = l_tab_temp-vbeln
AND
vkbur IN zvkbur AND
vkgrp IN zvkgrp.
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
ENDIF.
*Remove entries from VBRK checkinf for SPN on selection screen
PERFORM check_spn. " KRI926835
ENDIF.
ELSE.
IF NOT i_vbrk[] IS INITIAL.
PERFORM fiscal_year_check. " KYH25882
IF NOT i_vbrk[] IS INITIAL. " KYH25882
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
SELECT vbeln posnr fkimg matnr arktx netwr vkgrp aubel aupos
sernr
zzp_mfrnr vgbel vgpos aupos matkl mwsbp kzwi5 kdgrp_auft
APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
FROM vbrp FOR ALL ENTRIES IN l_tab_temp WHERE
vbeln = l_tab_temp-vbeln AND
vkbur IN zvkbur AND
vkgrp IN zvkgrp AND
zzp_mfrnr IN zmfrnr.
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
ENDIF. " KYH25882
ENDIF.
ENDIF.
IF NOT i_vbrk[] IS INITIAL. "KYH25882
SORT i_vbrk BY vbeln. "KYH25882
SORT i_vbrp BY vbeln posnr. "KYH25882
LOOP AT i_vbrk.
MOVE i_vbrk-kunag TO i_kunag-kunag.
APPEND i_kunag.
MOVE i_vbrk-knumv TO i_knumv-knumv.
APPEND i_knumv.
ENDLOOP.
ENDIF. " KYH25882
*----
ENDFORM. " GET_INVOICE_DATA
&----
*& Form GET_ACCOUNTING_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_accounting_data .
DATA : l_tab_vbrp LIKE STANDARD TABLE OF i_vbrp. "KYH
DATA: l_tab_temp LIKE STANDARD TABLE OF i_vbrk.
CONSTANTS c_index TYPE i VALUE 4000.
IF NOT i_vbrk[] IS INITIAL.
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
DELETE l_tab_temp WHERE rfbsk <> 'C'. " KYH25882
IF NOT l_tab_temp[] IS INITIAL . " KYH25882
SELECT belnr buzei dmbtr shkzg APPENDING TABLE i_bsad
FROM bsad
FOR ALL ENTRIES IN l_tab_temp
WHERE
bukrs EQ l_tab_temp-bukrs AND
gjahr EQ l_tab_temp-gjahr AND
belnr EQ l_tab_temp-vbeln.
ENDIF. " KYH25882
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
*--- begin of ppo924396
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
DELETE l_tab_temp WHERE rfbsk <> 'C'. " KYH25882
IF NOT l_tab_temp[] IS INITIAL . " KYH25882
SELECT belnr buzei shkzg dmbtr rebzg FROM bsid "vma928512
APPENDING CORRESPONDING FIELDS OF TABLE i_bsid
FOR ALL ENTRIES IN l_tab_temp
WHERE bukrs EQ l_tab_temp-bukrs
"PRA927038 "PRA927150 vbeln pick
ENDIF. " KYH25882
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
SELECT fkart FROM tvfk INTO TABLE i_tvfk WHERE vbtyp = 'O'.
"ppo924471
delete i_bsid where augbl = space. " PRA927093
ENDIF. " KYH25882
ENDFORM. " GET_ACCOUNTING_DATA
&----
*& Form GET_SD_DOC_CATEGORY
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_sd_doc_category .
Exclude SD Doc Category N and S
zvbtyp-sign = 'E'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'N'.
APPEND zvbtyp.
zvbtyp-sign = 'E'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'S'.
APPEND zvbtyp.
Get only Invoices
IF NOT zinvoice IS INITIAL.
zvbtyp-sign = 'I'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'M'.
APPEND zvbtyp.
ENDIF.
Get only Credit Memos
IF NOT zcredit IS INITIAL.
zvbtyp-sign = 'I'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'O'.
APPEND zvbtyp.
ENDIF.
Get only Debit Memos
IF NOT zdebit IS INITIAL.
zvbtyp-sign = 'I'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'P'.
APPEND zvbtyp.
ENDIF.
GET Fiscal year.
IF NOT zgjahr IS INITIAL.
zgjahr-sign = 'I'.
zgjahr-option = 'EQ'.
APPEND i_zgjahr.
APPEND zgjahr. "IMR928882
ENDIF.
ENDFORM. " GET_SD_DOC_CATEGORY
&----
*& Form GET_OTHER_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_other_data .
IF NOT i_kunag[] IS INITIAL. " KYH25882
SORT i_kunag BY kunag.
DELETE ADJACENT DUPLICATES FROM i_kunag COMPARING kunag.
SELECT kunnr name1 name2 name3 stras ort01 regio pstlz adrnr FROM
kna1 INTO CORRESPONDING FIELDS OF TABLE i_kna1 FOR ALL ENTRIES
IN i_kunag WHERE kunnr = i_kunag-kunag.
SELECT kunnr name1 name2 name3 stras ort01 regio pstlz adrnr FROM
kna1 INTO TABLE i_kna1 FOR ALL ENTRIES "IMR928882
IN i_kunag WHERE kunnr = i_kunag-kunag.
*
IF NOT I_KNUMV[] IS INITIAL. " KYH25882
SORT I_KNUMV BY KNUMV.
DELETE ADJACENT DUPLICATES FROM I_KNUMV COMPARING KNUMV.
*
ENDIF. " KYH25882
ENDIF. " KYH25882
ENDFORM. " GET_OTHER_DATA
&----
*& Form PROCESS_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM process_data .
IF NOT i_vbrk[] IS INITIAL. " KYH25882
DATA: l_sy_tabix LIKE sy-tabix.
CLEAR l_sy_tabix.
SORT i_kna1 BY kunnr.
SORT i_bsad BY belnr.
SORT i_bsid BY belnr.
LOOP AT i_vbrk.
l_sy_tabix = sy-tabix.
PERFORM invoice_total_get. "ppo924692
PERFORM payments_get.
IF NOT zopeninv IS INITIAL AND i_vbrk-opendmbtr = 0.
IF NOT zopeninv IS INITIAL.
start pradeep
perform openinvoices.
DELETE i_vbrk.
CONTINUE.
ENDIF.
PERFORM customer_name_get. "krishna
PERFORM return_cal_sum. "ppo925435
PERFORM dues_data_get. "ppo925435
PERFORM spn_get. "IMR928046
MODIFY i_vbrk INDEX l_sy_tabix.
CLEAR i_vbrk.
ENDLOOP.
ENDIF. " KYH25882
ENDFORM. " PROCESS_DATA
&----
*& Form DISPLAY_SUMMARY_OUTPUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_summary_output .
IF i_vbrk[] IS INITIAL.
MESSAGE i001(00) WITH 'No data exists for the given selection'.
EXIT.
ENDIF.
PERFORM build_field_cat.
PERFORM call_alv.
ENDFORM. " DISPLAY_SUMMARY_OUTPUT
&----
*& Form BUILD_FIELD_CAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_field_cat .
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Invoice No'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'FKART'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'ITyp'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'FKDAT'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Bill Dt'. "IMR928770
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'KUNRG'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'Bill To #'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'KUNAG'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Customer #'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-ref_tabname = 'KNA1'. "IMR928770
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Name'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'VKGRP'.
ls_fieldcat-ref_tabname = 'VBRP'. "IMR928770
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Spn'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat. "IMR928046
ls_fieldcat-fieldname = 'BEZEI'.
ls_fieldcat-ref_tabname = 'TVGRT'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Spn Name'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ZTERM'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'PayT'. "IMR928770
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BSTNK_VF'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Client PO'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'XBLNR'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Ref Doc'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'NETWR'.
ls_fieldcat-ref_tabname = 'VBRP'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Invoice Total'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PARTIALPMT'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Payment'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE1'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 0 - 29)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE2'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 30 - 44)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE3'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 45 - 59)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE4'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 60 - 74)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE5'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 75 - 89)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE6'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( Over 90)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'KDGRP'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'CGrp'. "IMR928770
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
ENDFORM. " BUILD_FIELD_CAT
&----
*& Form CALL_ALV
&----
text
----
--> p1 text
<-- p2 text
----
FORM call_alv .
DATA : l_prg LIKE sy-repid.
l_prg = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = l_prg
it_fieldcat = fieldcat_sno
i_callback_user_command = 'CALL_VF03' "ppo924692
i_save = 'A'
TABLES
t_outtab = i_vbrk.
ENDFORM. " CALL_ALV
&----
*& Form CUSTOMER_NAME_GET
&----
text
----
--> p1 text
<-- p2 text
----
FORM customer_name_get .
READ TABLE i_kna1 WITH KEY kunnr = i_vbrk-kunag BINARY SEARCH.
IF sy-subrc EQ 0.
i_vbrk-name1 = i_kna1-name1.
ENDIF.
ENDFORM. " CUSTOMER_NAME_GET
&----
*& Form INVOICE_TOTAL_GET
&----
text
----
--> p1 text
<-- p2 text
----
FORM invoice_total_get .
i_vbrk-netwr = i_vbrk-netwr + i_vbrk-mwsbk.
ENDFORM. " INVOICE_TOTAL_GET
&----
*& Form PAYMENTS_GET
&----
text
----
--> p1 text
<-- p2 text
----
FORM payments_get .
DATA :
"L_PARTIALPMT LIKE BSAD-DMBTR, "ppo924396
l_paydue LIKE bsad-dmbtr,
l_shkzg, "ppo924471
l_shkzg_bsid, "vma928665
l_wa_bsad LIKE i_bsad,
l_wa_bsid LIKE i_bsid.
*
CLEAR: l_partialpmt, l_paydue.
Begin of Changes KYH DEVK925834
CLEAR: i_tvfk, l_shkzg, l_shkzg_bsid. "vma928665
SORT i_tvfk BY fkart. " KYH25882
READ TABLE i_tvfk WITH KEY fkart = i_vbrk-fkart BINARY SEARCH.
IF sy-subrc EQ 0.
l_shkzg = 'H'.
l_shkzg_bsid = 'S'. "vma928665
ELSE.
l_shkzg = 'S'.
l_shkzg_bsid = 'H'. "vma928665
ENDIF.
End of changes KYH DEVK925834
*--- begin of ppo924396
SORT i_bsad BY belnr.
READ TABLE i_bsad TRANSPORTING NO FIELDS WITH KEY belnr = i_vbrk-vbeln
BINARY SEARCH.
" KYH25882
IF sy-subrc EQ 0.
*--- begin of ppo924471
CLEAR: I_TVFK, L_SHKZG.
READ TABLE I_TVFK WITH KEY FKART = I_VBRK-FKART.
IF SY-SUBRC EQ 0.
L_SHKZG = 'H'.
ELSE.
L_SHKZG = 'S'.
ENDIF.
*--- end of ppo924471
*--- end of ppo924396
LOOP AT i_bsad WHERE belnr = i_vbrk-vbeln AND shkzg = l_shkzg.
"ppo924471.
IF i_bsad-belnr NE i_vbrk-vbeln OR i_bsad-shkzg NE l_shkzg.
EXIT.
ENDIF.
l_partialpmt = l_partialpmt + i_bsad-dmbtr.
CLEAR i_bsad.
ENDLOOP.
*--- begin of ppo924396
ELSE.
*sort i_bsid by belnr.
*READ TABLE i_bsid TRANSPORTING NO FIELDS WITH KEY belnr = i_vbrk-vbeln.
BINARY SEARCH.
" KYH25882
BEGIN " KYH26588
LOOP AT I_BSID FROM SY-TABIX. " WHERE BELNR = I_VBRK-VBELN
AND SHKZG = H. "ppo924471
LOOP AT I_BSID WHERE SHKZG = 'H'.
*IF SY-SUBRC = 0.
LOOP AT i_bsid WHERE belnr = i_vbrk-vbeln
AND shkzg = 'H'.
*
{ begin of "vma928411------------------------------------------------*
LOOP AT i_bsid WHERE rebzg = i_vbrk-vbeln "vma928512
AND shkzg = l_shkzg_bsid. "vma928665
IF I_BSID-BELNR NE I_VBRK-VBELN OR I_BSID-SHKZG NE L_SHKZG.
EXIT.
ENDIF.
END " KYH26588
l_partialpmt = l_partialpmt + i_bsid-dmbtr.
CLEAR i_bsid.
*
*
ENDLOOP.
end of "vma928411 }--------------------------------------------------*
ENDIF.
ENDIF.
*--- end of ppo924396
delete the processed records so that the number of
loops for next iteration will be reduced. "krishna
DELETE I_BSAD WHERE BELNR = I_VBRK-VBELN. "krishna
DELETE I_BSID WHERE BELNR = I_VBRK-VBELN. "krishna
i_vbrk-partialpmt = l_partialpmt. "PRA927150
*
IF I_VBRK-NETWR EQ I_VBRK-PARTIALPMT.
I_VBRK-OPENDMBTR = 0.
ELSE.
LOOP AT I_BSID WHERE BELNR = I_VBRK-VBELN.
L_PAYDUE = L_PAYDUE + I_BSID-DMBTR.
CLEAR I_BSID.
ENDLOOP.
I_VBRK-OPENDMBTR = L_PAYDUE.
ENDIF.
i_vbrk-opendmbtr = i_vbrk-netwr - l_partialpmt.
ENDFORM. " PAYMENTS_GET
&----
*& Form DUES_DATA_GET
&----
text
----
--> p1 text
<-- p2 text
----
FORM dues_data_get .
DATA : l_dt_diff(6) TYPE n.
CLEAR l_dt_diff.
l_dt_diff = sy-datum - i_vbrk-fkdat.
i_vbrk-partialpmt = l_partialpmt. "PRA927135
IF ( l_dt_diff GE 0 ) AND ( l_dt_diff LE 29 ).
i_vbrk-due1 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 30 ) AND ( l_dt_diff LE 44 ).
i_vbrk-due2 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 45 ) AND ( l_dt_diff LE 59 ).
i_vbrk-due3 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 60 ) AND ( l_dt_diff LE 74 ).
i_vbrk-due4 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 75 ) AND ( l_dt_diff LE 89 ).
i_vbrk-due5 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 90 ).
i_vbrk-due6 = i_vbrk-opendmbtr.
ENDIF.
ENDFORM. " DUES_DATA_GET
&----
*& Form GET_DATA_FOR_DETAIL_REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data_for_detail_report .
PERFORM get_material_info.
PERFORM get_sd_info.
PERFORM get_prod_hierarchies_info.
PERFORM get_conditions_info.
PERFORM get_serial_nos_info.
PERFORM get_partner_profile_info.
ENDFORM. " GET_DATA_FOR_DETAIL_REPORT
&----
*& Form PROCESS_DATA_FOR_DETAIL_REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM process_data_for_detail_report .
CLEAR d_vbrp.
REFRESH d_vbrp.
IF NOT i_vbrp[] IS INITIAL . " KYH25882
SORT i_t179t BY prodh. " KYH25882
SORT I_VBPA BY VBELN.
SORT i_lfa1 BY lifnr. " KYH25987
SORT i_t023t BY matkl. " KYH25882
SORT i_mara BY matnr. " KYH25882
LOOP AT i_vbrp.
MOVE-CORRESPONDING i_vbrp TO d_vbrp.
IF NOT d_vbrp-fkimg IS INITIAL.
d_vbrp-netpr = ( d_vbrp-netwr - d_vbrp-kzwi5 ) / d_vbrp-fkimg.
ENDIF.
PERFORM move_vbrk_info.
PERFORM move_material_info.
PERFORM move_sd_info.
PERFORM move_prod_hierarchies_info.
PERFORM MOVE_CONDITIONS_INFO.
PERFORM move_partner_profile_info.
PERFORM calculate_gmd.
PERFORM move_serial_nos_info.
IF g_append_d_vbrp IS INITIAL.
MOVE-CORRESPONDING d_vbrp TO d1_vbrp.
APPEND d_vbrp.
APPEND d1_vbrp.
ENDIF.
*CLEAR : I_VBRP , D_VBRP ,D1_VBRP, I_VBAK , I_VBAP , I_MARA , I_KNA1.
CLEAR : i_vbrp , d_vbrp ,d1_vbrp, i_vbak , i_vbap ,
i_kna1. "KYH26443
ENDLOOP.
ENDIF. " KYH25882
CLEAR i_mara. " KYH26443
ENDFORM. " PROCESS_DATA_FOR_DETAIL_REPORT
&----
*& Form DISPLAY_DETAIL_REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_detail_report .
DELETE FROM zar1_detail WHERE ( zcount GE 0 ) OR ( zzid EQ space ).
IF NOT d1_vbrp[] IS INITIAL. " KYH25882
LOOP AT d1_vbrp.
d1_vbrp-zzid = zid.
d1_vbrp-zcount = sy-tabix.
IF d1_vbrp-vbtyp EQ 'O'.
d1_vbrp-netwr = d1_vbrp-netwr * -1.
d1_vbrp-kbetr = d1_vbrp-kbetr * -1.
d1_vbrp-netpr = d1_vbrp-netpr * -1.
d1_vbrp-kbetrqty = d1_vbrp-kbetrqty * -1.
d1_vbrp-gmdnetwr = d1_vbrp-gmdnetwr * -1.
ENDIF.
ADD d1_vbrp-fkimg TO fkimg_tot.
ADD d1_vbrp-netpr TO netpr_tot.
ADD d1_vbrp-netwr TO netwr_tot.
ADD d1_vbrp-kbetr TO kbetr_tot.
ADD d1_vbrp-kbetrqty TO kbetrqty_tot.
ADD d1_vbrp-gmdpercent TO gmdpercent_tot.
ADD d1_vbrp-gmdnetwr TO gmdnetwr_tot.
MODIFY d1_vbrp.
CLEAR d1_vbrp.
ENDLOOP.
d1_vbrp-vbeln = '9999999999'.
d1_vbrp-posnr = '999999'.
d1_vbrp-fkdat = '99991231'.
d1_vbrp-bstnk_vf = 'zz***** TOTAL *****'.
d1_vbrp-zzid = zid.
d1_vbrp-zcount = 9999999999.
d1_vbrp-fkimg = fkimg_tot.
d1_vbrp-netpr = netpr_tot.
d1_vbrp-netwr = netwr_tot.
d1_vbrp-kbetr = kbetr_tot.
d1_vbrp-kbetrqty = kbetrqty_tot.
d1_vbrp-gmdpercent = gmdpercent_tot.
d1_vbrp-gmdnetwr = gmdnetwr_tot.
APPEND d1_vbrp.
CLEAR d1_vbrp.
ENDIF. " KYH25882
INSERT zar1_detail FROM TABLE d1_vbrp.
*--- begin of ppo924234
IF NOT filepath IS INITIAL. " KYH25882
CLEAR down_det.
REFRESH down_det.
MOVE: 'USER' TO down_det-zzid,
'Counter' TO down_det-zcount,
'SD Billing Doc#' TO down_det-vbeln,
'Item' TO down_det-posnr,
'Bill date' TO down_det-fkdat,
'PO Number' TO down_det-bstnk_vf,
'Billed qty' TO down_det-fkimg,
'Manufacturer' TO down_det-name1_mfg,
'Material' TO down_det-matnr,
'Description' TO down_det-arktx,
'Unit price' TO down_det-netpr,
'Freight Amount' TO down_det-kzwi5,
'Ext. price + Freight' TO down_det-netwr ,
'Cost' TO down_det-kbetr,
'Ext. cost' TO down_det-kbetrqty,
'Tax amount' TO down_det-mwsbp ,
'GMD %' TO down_det-gmdpercent ,
'GMD $' TO down_det-gmdnetwr,
'Sold-to' TO down_det-name1,
'Ship-to' TO down_det-name1_sh,
'Ship to Name 2' TO down_det-name2_sh,
'Ship to Name 3' TO down_det-name3_sh,
'House No/Street' TO down_det-stras_sh,
'City' TO down_det-ort01_sh ,
'Region' TO down_det-regio_sh ,
'Postal Code' TO down_det-pstlz_sh,
'Sales Order User' TO down_det-bname ,
'Sales group' TO down_det-vkgrp ,
'Sales Document' TO down_det-aubel ,
'Item' TO down_det-aupos,
'Document date' TO down_det-audat,
'Serial number' TO down_det-sernr,
'Prod.hierarchy' TO down_det-prodh ,
'Matl grp descr' TO down_det-wgbez,
'Description' TO down_det-vtext,
'Asset Tag' TO down_det-asstg,
'MatGrp' TO down_det-matkl,
'Billing Type' TO down_det-fkart,
'Sold-to party' TO down_det-kunag,
'Document cat' TO down_det-vbtyp,
'Your ref' TO down_det-ihrez,
'Cust. Material' TO down_det-kdmat,
'PO itm' TO down_det-posex,
'Cost Center' TO down_det-zz_ccenter,
'Department' TO down_det-zz_dept,
'cap Exp code' TO down_det-zz_cap_exp_code,
'cap exp id' TO down_det-zz_cap_exp_id ,
'Project No' TO down_det-zz_project,
'Apprvd by' TO down_det-zz_aprvd_by,
'CustGrpSlsOrder' TO down_det-kdgrp_auft.
APPEND down_det.
LOOP AT d1_vbrp.
MOVE-CORRESPONDING d1_vbrp TO down_det.
APPEND down_det.
CLEAR down_det.
ENDLOOP.
PERFORM download_file TABLES down_det USING down_det.
ENDIF. " KYH25882
*--- end of ppo924234
IF sy-subrc EQ 0 AND sy-batch IS INITIAL.
PERFORM call_ze16.
ENDIF.
ENDFORM. " DISPLAY_DETAIL_REPORT
&----
*& Form GET_MATERIAL_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_material_info .
DATA : d_vbrp LIKE i_vbrp OCCURS 0 WITH HEADER LINE,
sytabix LIKE sy-tabix.
CLEAR d_vbrp.
REFRESH d_vbrp.
start pradeep N
IF NOT i_vbrk[] IS INITIAL.
SORT i_vbrk BY vbeln.
SORT i_vbrp BY vbeln.
LOOP AT i_vbrp.
sytabix = sy-tabix.
READ TABLE i_vbrk WITH KEY vbeln = i_vbrp-vbeln.
IF sy-subrc NE 0.
DELETE i_vbrp INDEX sytabix.
ENDIF.
ENDLOOP.
ENDIF.
end pradeep N
IF NOT i_vbrp[] IS INITIAL. " KYH25882
d_vbrp[] = i_vbrp[].
SORT d_vbrp BY matkl.
DELETE ADJACENT DUPLICATES FROM d_vbrp COMPARING matkl.
SELECT matkl wgbez
INTO CORRESPONDING FIELDS OF TABLE i_t023t
FROM t023t FOR ALL ENTRIES IN d_vbrp
WHERE matkl = d_vbrp-matkl
AND spras = 'E'.
IF NOT i_t023t[] IS INITIAL. " KYH25882
SORT i_t023t BY matkl. " KYH25882
ENDIF. " KYH25882
CLEAR d_vbrp.
REFRESH d_vbrp.
d_vbrp[] = i_vbrp[].
SORT d_vbrp BY matnr.
DELETE ADJACENT DUPLICATES FROM d_vbrp COMPARING matnr.
SELECT matnr mfrpn
INTO CORRESPONDING FIELDS OF TABLE i_mara
FROM mara FOR ALL ENTRIES IN d_vbrp
WHERE matnr = d_vbrp-matnr.
IF NOT i_mara[] IS INITIAL. " KYH25882
SORT i_mara BY matnr.
ENDIF. " KYH25882
ENDIF.
ENDFORM. " GET_MATERIAL_INFO
&----
*& Form GET_SD_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_sd_info .
DATA : d_vbrp LIKE i_vbrp OCCURS 0 WITH HEADER LINE.
CLEAR d_vbrp.
REFRESH d_vbrp.
IF NOT i_vbrp[] IS INITIAL. " KYH25882
d_vbrp[] = i_vbrp[].
SORT d_vbrp BY aubel.
DELETE ADJACENT DUPLICATES FROM d_vbrp COMPARING aubel.
SELECT vbeln bname zz_ccenter zz_dept ihrez
INTO CORRESPONDING FIELDS OF TABLE i_vbak
FROM vbak FOR ALL ENTRIES IN d_vbrp
WHERE vbeln = d_vbrp-aubel.
IF NOT I_VBAK[] IS INITIAL. " KYH25882
SORT i_vbak BY vbeln.
ENDIF. " KYH25882
SELECT vbeln posnr knumh erdat prodh kdmat posex
INTO CORRESPONDING FIELDS OF TABLE i_vbap
FROM vbap FOR ALL ENTRIES IN i_vbrp
WHERE vbeln = i_vbrp-aubel
AND posnr = i_vbrp-aupos.
SELECT vbeln posnr valueid value INTO TABLE i_zcustomfields
FROM zcustomfields FOR ALL ENTRIES IN i_vbrp
WHERE vbeln = i_vbrp-aubel AND
( posnr = i_vbrp-aupos OR posnr = '000000' )
AND
( valueid = 'VAPR' OR valueid = 'VCC' OR
valueid = 'VDEP' OR
valueid = 'VEXP' OR valueid = 'VID' OR
valueid = 'VPRJ' ).
IF NOT I_ZCUSTOMFIELDS[] IS INITIAL. "KYH
SORT I_ZCUSTOMFIELDS BY VBELN POSNR VALUEID.
*
ENDIF. " KYH25882
ENDIF. " KYH25882
ENDFORM. " GET_SD_INFO
&----
*& Form GET_CONDITIONS_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_conditions_info .
IF NOT i_knumv[] IS INITIAL. "" KYH25882
SORT i_knumv BY knumv.
DELETE ADJACENT DUPLICATES FROM i_knumv COMPARING knumv.
SELECT knumv kposn kschl knumh kbetr kwert kopos FROM konv
INTO CORRESPONDING FIELDS OF TABLE i_konv
FOR ALL ENTRIES IN i_knumv
WHERE knumv = i_knumv-knumv
AND ( kschl = 'VPRS' OR kschl = 'ZLPR' ).
ENDIF.
BEGIN " DEVK925893 KYH25952
IF NOT i_konv[] IS INITIAL.
SELECT knumh kopos kbetr INTO TABLE i_konp FROM konp
FOR ALL ENTRIES IN i_konv
WHERE knumh = i_konv-knumh
AND kopos = i_konv-kopos.
ENDIF.
SORT i_konp BY knumh kopos.
END " KYH25952
"$$
"$$
ENDFORM. " GET_CONDITIONS_INFO
&----
*& Form GET_SERIAL_NOS_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_serial_nos_info .
IF NOT i_vbrp[] IS INITIAL. " KYH25882
SELECT * FROM zvlxxsr INTO TABLE i_zvlxxsr
FOR ALL ENTRIES IN i_vbrp
WHERE vbeln = i_vbrp-vgbel
AND posnr = i_vbrp-vgpos.
ENDIF. " KYH25882
ENDFORM. " GET_SERIAL_NOS_INFO
&----
*& Form GET_PARTNER_PROFILE_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_partner_profile_info .
CLEAR d_vbpa.
REFRESH d_vbpa.
IF NOT i_vbrk[] IS INITIAL. " KYH26282
SELECT vbeln kunnr adrnr INTO CORRESPONDING FIELDS OF TABLE i_vbpa
FROM vbpa FOR ALL ENTRIES IN i_vbrk
WHERE vbeln = i_vbrk-vbeln
AND parvw = 'WE'.
IF NOT i_vbpa[] IS INITIAL. "KYH
SORT i_vbpa BY adrnr.
LOOP AT i_vbpa WHERE adrnr IS INITIAL.
MOVE-CORRESPONDING i_vbpa TO d_vbpa.
APPEND d_vbpa.
DELETE i_vbpa.
ENDLOOP.
SORT i_vbpa BY adrnr DESCENDING.
CLEAR i_kna1.
REFRESH i_kna1.
SELECT DISTINCT kunnr name1 name2 name3 stras ort01 regio pstlz
INTO CORRESPONDING FIELDS OF TABLE i_kna1
FROM kna1 FOR ALL ENTRIES IN d_vbpa
WHERE kunnr = d_vbpa-kunnr.
SELECT DISTINCT addrnumber AS adrnr name1 name2 name3 street AS
stras
city1 AS ort01 region AS regio post_code1 AS pstlz
APPENDING CORRESPONDING FIELDS OF TABLE i_kna1
FROM adrc FOR ALL ENTRIES IN i_vbpa
WHERE addrnumber = i_vbpa-adrnr.
SORT i_kna1 BY adrnr DESCENDING.
*LOOP AT I_KNA1 INTO L_WA_KNA1 WHERE ( KUNNR IS INITIAL ) AND ( ADRNR NE
*SPACE ).
LOOP AT i_kna1 WHERE ( kunnr IS INITIAL ) AND ( adrnr NE space ).
READ TABLE i_vbpa WITH KEY adrnr = i_kna1-adrnr.
IF sy-subrc EQ 0.
i_kna1-kunnr = i_vbpa-kunnr.
MODIFY TABLE i_kna1.
ELSE.
DELETE TABLE i_kna1.
ENDIF.
ENDLOOP.
SORT i_kna1 BY kunnr.
ENDIF. "KYH
IF NOT i_vbrp[] IS INITIAL.
SELECT lifnr name1 FROM lfa1 INTO CORRESPONDING FIELDS OF TABLE
i_lfa1
FOR ALL ENTRIES IN i_vbrp
WHERE lifnr = i_vbrp-zzp_mfrnr.
ENDIF.
ENDIF.
ENDFORM. " GET_PARTNER_PROFILE_INFO
&----
*& Form MOVE_I_ZCUSTOMFIELDS_DATA_1
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_i_zcustomfields_data_1 .
CASE i_zcustomfields-valueid.
WHEN 'VCC'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_ccenter.
WHEN 'VDEP'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_dept.
WHEN 'VAPR'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_aprvd_by.
WHEN 'VEXP'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_cap_exp_code.
WHEN 'VID'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_cap_exp_id.
WHEN 'VPRJ'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_project.
ENDCASE.
ENDFORM. " MOVE_I_ZCUSTOMFIELDS_DATA_1
&----
*& Form MOVE_I_ZCUSTOMFIELDS_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_i_zcustomfields_data .
IF NOT i_zcustomfields[] IS INITIAL. " KYH25882
READ TABLE i_zcustomfields WITH KEY vbeln = d_vbrp-aubel
posnr = d_vbrp-posnr
BINARY SEARCH.
IF sy-subrc EQ 0.
LOOP AT i_zcustomfields WHERE vbeln = d_vbrp-aubel AND
posnr = d_vbrp-aupos.
PERFORM move_i_zcustomfields_data_1. "ppo925709
ENDLOOP.
ELSE.
READ TABLE I_ZCUSTOMFIELDS WITH KEY VBELN = D_VBRP-AUBEL
POSNR = '000000'.
LOOP AT i_zcustomfields WHERE vbeln = d_vbrp-aubel AND
posnr = '000000'.
PERFORM move_i_zcustomfields_data_1.
ENDLOOP.
ENDIF.
ENDIF. " KYH25882
ENDFORM. " MOVE_I_ZCUSTOMFIELDS_DATA
&----
*& Form MOVE_SD_MOVE_SD_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_sd_info .
IF NOT i_vbak[] IS INITIAL. " KYH25882
READ TABLE i_vbak WITH KEY vbeln = d_vbrp-aubel.
IF sy-subrc EQ 0.
d_vbrp-bname = i_vbak-bname.
d_vbrp-zz_ccenter = i_vbak-zz_ccenter.
d_vbrp-zz_dept = i_vbak-zz_dept.
d_vbrp-ihrez = i_vbak-ihrez.
ENDIF.
ENDIF. " KYH25882
IF NOT i_vbap[] IS INITIAL. " KYH25882
READ TABLE i_vbap WITH KEY vbeln = d_vbrp-aubel
posnr = d_vbrp-aupos
BINARY SEARCH.
IF sy-subrc = 0.
d_vbrp-audat = i_vbap-erdat.
d_vbrp-prodh = i_vbap-prodh.
d_vbrp-kdmat = i_vbap-kdmat.
d_vbrp-posex = i_vbap-posex.
ENDIF.
PERFORM move_i_zcustomfields_data.
ENDIF. " KYH25882
ENDFORM. " MOVE_SD_INFO
&----
*& Form MOVE_MATERIAL_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_material_info .
IF NOT i_t023t[] IS INITIAL . " KYH25882
READ TABLE i_t023t INTO l_wa_t023t WITH TABLE KEY matkl =
i_vbrp-matkl.
IF sy-subrc EQ 0.
d_vbrp-wgbez = l_wa_t023t-wgbez.
ENDIF.
ENDIF.
IF NOT I_MARA[] IS INITIAL. " KYH25882
READ TABLE i_mara INTO l_wa_mara WITH TABLE KEY matnr = i_vbrp-matnr.
IF sy-subrc EQ 0.
d_vbrp-matnr = l_wa_mara-mfrpn+0(18).
ENDIF.
ENDIF. " KYH25882
ENDFORM. " MOVE_MATERIAL_INFO
**&----
**
**& Form MOVE_CONDITIONS_INFO
**&----
**
text
**----
**
--> p1 text
<-- p2 text
**----
**
*FORM MOVE_CONDITIONS_INFO .
*
*ENDFORM. " MOVE_CONDITIONS_INFO
&----
*& Form MOVE_SERIAL_NOS_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_serial_nos_info .
DATA l_count TYPE i.
CLEAR : l_count , g_append_d_vbrp.
IF NOT i_zvlxxsr[] IS INITIAL. " KYH25882
LOOP AT i_zvlxxsr WHERE vbeln = d_vbrp-vgbel AND posnr =
d_vbrp-vgpos.
l_count = l_count + 1.
d_vbrp-sernr = i_zvlxxsr-sernr.
d_vbrp-asstg = i_zvlxxsr-asstg.
d1_vbrp-zzid = zid.
d1_vbrp-zcount = l_count.
IF l_count > 1.
CLEAR : d_vbrp-fkimg,d_vbrp-netpr, d_vbrp-netwr, d_vbrp-kbetr,
d_vbrp-kbetrqty,d_vbrp-gmdpercent,
d_vbrp-mwsbp, d_vbrp-kzwi5, d_vbrp-gmdnetwr.
ENDIF.
MOVE-CORRESPONDING d_vbrp TO d1_vbrp.
APPEND d_vbrp.
APPEND d1_vbrp.
g_append_d_vbrp = 'X'.
CLEAR : i_zvlxxsr.
ENDLOOP.
ENDIF. " KYH25882
ENDFORM. " MOVE_SERIAL_NOS_INFO
&----
*& Form MOVE_PARTNER_PROFILE_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_partner_profile_info .
CLEAR i_kna1.
READ TABLE i_vbpa WITH KEY vbeln = i_vbrk-vbeln .
"BINARY SEARCH. " KYH25882
IF sy-subrc = 0.
READ TABLE i_kna1 WITH KEY adrnr = i_vbpa-adrnr.
ELSE.
READ TABLE d_vbpa WITH KEY vbeln = i_vbrk-vbeln.
" BINARY SEARCH. " KYH25882
IF sy-subrc EQ 0.
READ TABLE i_kna1 WITH KEY kunnr = d_vbpa-kunnr.
ENDIF.
ENDIF.
CLEAR kna1.
SELECT SINGLE * FROM kna1 WHERE kunnr EQ i_vbrk-kunag.
MOVE kna1-name1 TO d_vbrp-name1.
d_vbrp-name1_sh = i_kna1-name1.
d_vbrp-name2_sh = i_kna1-name2.
d_vbrp-name3_sh = i_kna1-name3.
d_vbrp-stras_sh = i_kna1-stras.
d_vbrp-ort01_sh = i_kna1-ort01.
d_vbrp-regio_sh = i_kna1-regio.
d_vbrp-pstlz_sh = i_kna1-pstlz.
READ TABLE i_lfa1 INTO l_wa_lfa1 WITH TABLE KEY lifnr =
i_vbrp-zzp_mfrnr.
IF sy-subrc EQ 0.
d_vbrp-name1_mfg = l_wa_lfa1-name1.
ENDIF.
ENDFORM. " MOVE_PARTNER_PROFILE_INFO
&----
*& Form CHECK_AUTHORIZATION
&----
text
----
--> p1 text
<-- p2 text
----
FORM check_authorization .
CLEAR auth_failure.
SELECT vkgrp FROM tvkgr INTO TABLE i_tvkgr
WHERE vkgrp IN zvkgrp .
IF NOT i_tvkgr[] IS INITIAL. " KYH25882
SORT i_tvkgr.
DELETE ADJACENT DUPLICATES FROM i_tvkgr COMPARING vkgrp.
IF sy-dbcnt NE 0.
LOOP AT i_tvkgr INTO l_tvkgr.
AUTHORITY-CHECK OBJECT 'V_VBKA_VKO'
ID 'VKORG' DUMMY
ID 'VTWEG' DUMMY
ID 'SPART' DUMMY
ID 'VKBUR' DUMMY
ID 'VKGRP' FIELD l_tvkgr-vkgrp
ID 'KTAAR' DUMMY
ID 'ACTVT' DUMMY.
IF sy-subrc <> 0.
MESSAGE i016(ds) WITH 'No authorization for sales group'
l_tvkgr-vkgrp.
auth_failure = 'X'.
EXIT.
ENDIF.
CLEAR :l_tvkgr.
ENDLOOP.
ENDIF.
ENDIF. " KYH25882
ENDFORM. " CHECK_AUTHORIZATION
&----
*& Form CHECK_TCODE
&----
text
----
--> p1 text
<-- p2 text
----
FORM check_tcode .
IF tcode IS INITIAL.
SELECT low UP TO 1 ROWS FROM tvarv INTO tcode
WHERE name = 'ZTCODE_ZAR_INVOICE'
AND type = 'P'.
ENDSELECT.
ENDIF.
ENDFORM. " CHECK_TCODE
&----
*& Form CALCULATE_GMD
&----
text
----
--> p1 text
<-- p2 text
----
FORM calculate_gmd .
IF NOT i_vbrk[] IS INITIAL. "" KYH25882
CLEAR i_vbrk.
SORT i_konv BY knumv.
READ TABLE i_vbrk WITH KEY vbeln = d_vbrp-vbeln.
IF NOT i_konv[] IS INITIAL. " KYH25882
READ TABLE i_konv WITH KEY knumv = i_vbrk-knumv " KYH26013
kposn = d_vbrp-posnr BINARY SEARCH.
" KYH26013
IF sy-subrc = 0.
LOOP AT i_konv FROM sy-tabix.
IF i_konv-knumv NE i_vbrk-knumv OR i_konv-kposn NE
d_vbrp-posnr . " KYH26013
EXIT. " KYH26013
ENDIF. " KYH26013
IF i_konv-knumh IS INITIAL.
Cost
d_vbrp-kbetr = i_konv-kbetr.
Ext.cost
d_vbrp-kbetrqty = i_konv-kwert.
GMD in $
d_vbrp-gmdnetwr = d_vbrp-netwr - d_vbrp-kbetrqty.
move t_vbrp-gmdnetwr to t_vbrk-gmdnetwr.
GMD in %
IF NOT d_vbrp-netwr IS INITIAL.
d_vbrp-gmdpercent = d_vbrp-gmdnetwr * 100 / d_vbrp-netwr.
ELSE.
d_vbrp-gmdpercent = 0.
ENDIF.
ELSE.
BEGIN KYH25952
SELECT SINGLE * FROM KONP
WHERE KNUMH = I_KONV-KNUMH
AND KOPOS = I_KONV-KOPOS.
IF SY-SUBRC EQ 0.
IF NOT i_konp[] IS INITIAL.
READ TABLE i_konp INTO l_wa_konp WITH TABLE KEY knumh =
i_konv-knumh
kopos =
i_konv-kopos.
IF sy-subrc = 0.
END KYH25952
Cost
D_VBRP-KBETR = KONP-KBETR.
d_vbrp-kbetr = l_wa_konp-kbetr. " KYH25893
Ext.cost
D_VBRP-KBETRQTY = KONP-KBETR * D_VBRP-FKIMG.
d_vbrp-kbetrqty = l_wa_konp-kbetr * d_vbrp-fkimg.
"KYH25893
GMD in $
d_vbrp-gmdnetwr = d_vbrp-netwr - d_vbrp-kbetrqty.
move t_vbrp-gmdnetwr to t_vbrk-gmdnetwr.
ENDIF.
ENDIF.
GMD in %
IF NOT d_vbrp-netwr IS INITIAL.
d_vbrp-gmdpercent = d_vbrp-gmdnetwr * 100 / d_vbrp-netwr.
move t_vbrp-gmdpercent to t_vbrk-gmdpercent.
ELSE.
d_vbrp-gmdpercent = 0.
ENDIF.
ENDIF.
ENDIF.
tO BE ANALYSED
IF T_KONV-KSCHL = 'VPRS'. EXIT. ENDIF. "VPRS priority
ENDLOOP.
ENDIF.
ENDIF. " KYH25882
ENDIF. " KYH25882
ENDFORM. " CALCULATE_GMD
&----
*& Form GET_PROD_HIERARCHIES_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_prod_hierarchies_info .
DATA d_vbap LIKE i_vbap OCCURS 0 WITH HEADER LINE.
CLEAR d_vbap.
REFRESH d_vbap.
IF NOT i_vbap[] IS INITIAL. " KYH25882
d_vbap[] = i_vbap[].
SORT d_vbap BY prodh.
DELETE ADJACENT DUPLICATES FROM d_vbap COMPARING prodh.
SELECT prodh vtext INTO TABLE i_t179t
FROM t179t FOR ALL ENTRIES IN d_vbap
WHERE prodh = d_vbap-prodh
AND spras = 'E'.
IF NOT i_t179t[] IS INITIAL. " KYH25882
SORT i_t179t BY prodh.
ENDIF. " KYH25882
ENDIF. " KYH25882
ENDFORM. " GET_PROD_HIERARCHIES_INFO
&----
*& Form MOVE_PROD_HIERARCHIES_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_prod_hierarchies_info .
IF NOT i_t179t[] IS INITIAL.
SORT i_t179t[] BY prodh.
READ TABLE i_t179t WITH KEY prodh = d_vbrp-prodh BINARY SEARCH.
IF sy-subrc = 0.
d_vbrp-vtext = i_t179t-vtext.
ENDIF.
ENDIF.
ENDFORM. " MOVE_PROD_HIERARCHIES_INFO
&----
*& Form CALL_ZE16
&----
text
----
--> p1 text
<-- p2 text
----
FORM call_ze16 .
DATA: BEGIN OF seltab OCCURS 0.
INCLUDE STRUCTURE rsparams.
DATA: END OF seltab.
seltab-selname = 'I1'.
seltab-kind = 'P'.
seltab-sign = 'I'.
seltab-option = 'EQ'.
seltab-low = zid.
APPEND seltab.
seltab-selname = 'LIST_BRE'.
seltab-kind = 'P'.
seltab-sign = 'I'.
seltab-option = 'EQ'.
seltab-low = '1000'.
APPEND seltab.
seltab-selname = 'MAX_SEL'.
seltab-kind = 'P'.
seltab-sign = 'I'.
seltab-option = 'EQ'.
seltab-low = '9999999'.
APPEND seltab.
CALL FUNCTION 'RS_TABLE_LIST_CREATE'
EXPORTING
table_name = 'ZAR1_DETAIL'
generation_forced = space
TABLES
seltab = seltab.
ENDFORM. " CALL_ZE16
&----
*& Form MOVE_VBRK_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_vbrk_info .
CLEAR i_vbrk.
IF NOT i_vbrk[] IS INITIAL. " KYH25882
READ TABLE i_vbrk WITH KEY vbeln = i_vbrp-vbeln.
MOVE i_vbrk-fkdat TO d_vbrp-fkdat.
MOVE i_vbrk-fkart TO d_vbrp-fkart.
MOVE i_vbrk-kunag TO d_vbrp-kunag.
MOVE i_vbrk-vbtyp TO d_vbrp-vbtyp.
MOVE i_vbrk-bstnk_vf TO d_vbrp-bstnk_vf.
ENDIF. " KYH25882
ENDFORM. " MOVE_VBRK_INFO
&----
*& Form RETURN_CAL_SUM
&----
text
----
--> p1 text
<-- p2 text
----
FORM return_cal_sum .
IF i_vbrk-vbtyp EQ 'O'.
i_vbrk-netwr = i_vbrk-netwr * -1.
i_vbrk-partialpmt = i_vbrk-partialpmt * 1.
i_vbrk-opendmbtr = i_vbrk-opendmbtr * -1.
ENDIF.
ENDFORM. " RETURN_CAL_SUM
*--- begin of ppo924234
&----
*& Form DOWNLOAD_FILE
&----
downloading the data to application/presentation server
----
FORM download_file TABLES t_down_tab USING u_down_line.
*
DATA: l_file TYPE string.
CLEAR: l_file.
DATA: tab. "IMR928770
DATA: t_outputline(300).
FIELD-SYMBOLS: <f>.
Column break in excel sheet when runned in background "IMR928770
tab = cl_abap_char_utilities=>horizontal_tab.
IF p_prsfil = 'X'.
MOVE filepath TO l_file.
*--- downloading data into presentation server
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_file
filetype = 'ASC'
write_field_separator = 'X'
dat_mode = 'X'
TABLES
data_tab = t_down_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
*--- downloading data into application server
*********Begin of changes to download and populate the file into its
*respective columns. "IMR928770
OPEN DATASET filepath FOR OUTPUT IN TEXT MODE.
OPEN DATASET filepath FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc = 0.
LOOP AT t_down_tab INTO u_down_line.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE u_down_line TO <f>.
IF sy-subrc NE 0.
EXIT.
ENDIF.
IF sy-index = 1.
MOVE <f> TO t_outputline.
ELSE.
CONCATENATE t_outputline <f> INTO t_outputline SEPARATED BY tab
.
ENDIF.
ENDDO.
Transfer data to excel file
TRANSFER t_outputline TO filepath.
CLEAR t_outputline.
TRANSFER u_down_line TO filepath.
ENDLOOP.
ENDIF.
*End of changes "IMR928770
CLOSE DATASET filepath.
ENDIF.
ENDFORM. " DOWNLOAD_FILE
*--- end of ppo924234
*--- begin of ppo924692
&----
*& Form CALL_VF03
&----
Calling the transactin code VF03 on double clicking on Invoice#
----
FORM call_vf03 USING l_ucomm TYPE sy-ucomm
l_selfield TYPE slis_selfield.
CASE l_ucomm.
WHEN '&IC1'.
IF l_selfield-sel_tab_field = 'I_VBRK-VBELN'.
READ TABLE i_vbrk INDEX l_selfield-tabindex.
CHECK sy-subrc = 0.
SET PARAMETER ID 'VF' FIELD i_vbrk-vbeln.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM. "CALL_VF03
*--- end of ppo924692
KYH25882 BEGIN
&----
*& Form BILLING_FISCAL_YEAR
&----
By using the (FKDAT)Billing date, finding this fiscal year( GJAHR)
which is required,while selecting the data from table BSID and BSAD,
updating internal table I_VBRK.
----
FORM billing_fiscal_year USING p_i_vbrk_fkdat
CHANGING p_v_gjahr.
KRI925987 Begin
FNYEAR = P_I_VBRK_FKDAT.
FNYEAR_PRE = FNYEAR - 1 .
CONCATENATE FNYEAR_PRE '10' '01' INTO FISCAL_YR_BEGN.
CONCATENATE FNYEAR '09' '30' INTO FISCAL_YR_END.
*
*IF P_I_VBRK_FKDAT GE FISCAL_YR_BEGN AND P_I_VBRK_FKDAT LE
*FISCAL_YR_END. "KYH25969
P_V_GJAHR = FNYEAR .
*
ELSEIF P_I_VBRK_FKDAT LT FISCAL_YR_BEGN.
P_V_GJAHR = FNYEAR - 1.
ENDIF.
KRI925987 END.
CLEAR : l_i_fyear.
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
EXPORTING
i_date = p_i_vbrk_fkdat
i_monmit = 00
i_periv = l_e_fyv
IMPORTING
E_BUPER = S_PERD
e_gjahr = l_i_fyear
EXCEPTIONS
input_false = 1
t009_notfound = 2
t009b_notfound = 3
OTHERS = 4 .
p_v_gjahr = l_i_fyear.
ENDFORM. " BILLING_FISCAL_YEAR
&----
*& Form FISCAL_YEAR_CHECK
&----
text
----
FORM fiscal_year_check .
LOOP AT i_vbrk.
PERFORM billing_fiscal_year USING i_vbrk-fkdat CHANGING v_gjahr.
i_vbrk-gjahr = v_gjahr.
MODIFY i_vbrk.
ENDLOOP.
DELETE i_vbrk WHERE NOT gjahr IN zgjahr.
ENDFORM. " FISCAL_YEAR_CHECK
KYH25882 END
&----
*& Form CHECK_SPN
&----
Check for SPN given in selection screen
from VBRP against the invoice number and remove those invoices
which are not having the SPN given on selection screen
*
----
--> p1 text
<-- p2 text
----
FORM check_spn . "KRI926835
SORT i_vbrp BY vbeln.
LOOP AT i_vbrk.
READ TABLE i_vbrp WITH KEY vbeln = i_vbrk-vbeln
BINARY SEARCH.
READ TABLE i_vbrp WITH KEY vbeln = i_vbrk-vbeln.
IF NOT sy-subrc IS INITIAL. "no line items found
DELETE i_vbrk.
CONTINUE.
ENDIF.
ENDLOOP.
ENDFORM. " CHECK_SPN
&----
*& Form spn_get
&----
text
----
FORM spn_get. "IMR928046
DATA : BEGIN OF t_vkgrp ,
vbeln TYPE vbeln,
vkgrp TYPE vkgrp,
END OF t_vkgrp.
DATA: BEGIN OF t_tvgrt OCCURS 0,
vkgrp TYPE vkgrp,
bezei TYPE bezei,
END OF t_tvgrt.
CLEAR: t_vkgrp, t_tvgrt.
IF NOT i_vbrp[] IS INITIAL.
READ TABLE i_vbrp WITH KEY vbeln = i_vbrk-vbeln.
MOVE i_vbrp-vkgrp TO i_vbrk-vkgrp.
ENDIF.
SELECT SINGLE bezei
FROM tvgrt INTO i_vbrk-bezei
WHERE vkgrp = i_vbrk-vkgrp
AND spras = 'E'.
ENDFORM. "spn_get
**********************************************************************
&----
*& Form openinvoices
&----
text
----
--> p1 text
<-- p2 text
----
FORM openinvoices .
ENDFORM. " openinvoices
Hi all,
I have a production issue and my report takes around 4 to 5 hours for its execution and i've finded out that the 2nd from first query has a corresponding tale with it and when i modified it to below one its displaying the output and when i check it in ST05 i have no i_bsad and i_bsid table query times mentioned in it.Where in when i have the corresponding tale included i get the above both queries time interval and this table works fine.(i have to have this select statements included for my business scenario logic).But because of the inclusion of this this both table are eating lot of time.Need to include them and reduce the time comsumption of the both the tables.
SELECT vbeln fkart vbtyp knumv fkdat gjahr kdgrp rfbsk zterm bukrs
netwr kunrg kunag
bstnk_vf xblnr mwsbk rfbsk
INTO TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
vbtyp IN zvbtyp AND
fkdat IN zfkdat AND
bukrs IN zbukrs AND
kunag IN zkunag AND
bstnk_vf IN zbstnkvf AND
xblnr IN zxblnr AND
fksto NE 'X' .
SELECT vbeln fkart vbtyp knumv fkdat bukrs gjahr kdgrp zterm netwr
kunrg kunag
bstnk_vf xblnr mwsbk rfbsk
INTO CORRESPONDING FIELDS OF TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
kunag IN zkunag AND
fkdat IN zfkdat AND
xblnr IN zxblnr AND
bstnk_vf IN zbstnkvf AND
vbtyp IN zvbtyp AND
fksto NE 'X' AND
bukrs IN zbukrs .
This are the both table which has to be included ,
SELECT belnr buzei dmbtr shkzg APPENDING TABLE i_bsad
FROM bsad
FOR ALL ENTRIES IN l_tab_temp
WHERE
bukrs EQ l_tab_temp-bukrs AND
gjahr EQ l_tab_temp-gjahr AND
belnr EQ l_tab_temp-vbeln.
SELECT belnr buzei shkzg dmbtr rebzg FROM bsid APPENDING CORRESPONDING FIELDS OF TABLE i_bsid
FOR ALL ENTRIES IN l_tab_temp
WHERE bukrs EQ l_tab_temp-bukrs
"PRA927038 "PRA927150 vbeln pick
AND NOT AUGBL = SPACE
*AND BELNR = L_TAB_TEMP-VBELN
AND gjahr = l_tab_temp-gjahr
AND gjahr IN zgjahr.
AND vbeln = l_tab_temp-vbeln .
AND rebzg = l_tab_temp-vbeln
AND rebzj = l_tab_temp-gjahr.
Can any one help me in tuning this if u guys still have questions please ask me.And for your understanding this my coding please go through it
&----
*& Report ZAR_REC001 *
*& *
&----
REPORT zar_rec001 NO STANDARD PAGE HEADING
LINE-SIZE 355
LINE-COUNT 60
MESSAGE-ID zuserm.
TYPE-POOLS : slis.
TABLES : vbrk,
vbrp,
bsid,
bsad,
kna1,
lfa1,
knvv,
zar1_detail,
zar1_struc1,
vbak,
vbap,
zcustomfields,
konv,
zvlxxsr,
mara,
t023t,
sscrfields,
konp,
tvarv,
tvkgr,
tvgrt. "IMR928046
TYPES : BEGIN OF t_tvkgr,
vkgrp TYPE vbrp-vkgrp,
END OF t_tvkgr.
TYPES : BEGIN OF ty_vbrp, "IMR928046
vkgrp TYPE vkgrp,
END OF ty_vbrp.
DATA : BEGIN OF i_zgjahr OCCURS 0,
zgjahr LIKE bsid-gjahr,
END OF i_zgjahr.
DATA : BEGIN OF i_vbrk OCCURS 0,
vbeln LIKE vbrk-vbeln,
fkart LIKE vbrk-fkart,
vbtyp LIKE vbrk-vbtyp,
knumv LIKE vbrk-knumv,
fkdat LIKE vbrk-fkdat,
gjahr LIKE vbrk-gjahr, "KRISHNA
kdgrp LIKE vbrk-kdgrp,
zterm LIKE vbrk-zterm,
bukrs LIKE vbrk-bukrs, "krishna
rfbsk LIKE vbrk-rfbsk, " KYH25882
netwr LIKE vbrk-netwr,
kunrg LIKE vbrk-kunrg,
kunag LIKE vbrk-kunag,
bstnk_vf LIKE vbrk-bstnk_vf,
xblnr LIKE vbrk-xblnr,
mwsbk LIKE vbrk-mwsbk,
name1 LIKE kna1-name1,
vkgrp LIKE knvv-vkgrp,
bezei LIKE tvgrt-bezei, "IMR928046
partialpmt LIKE vbrk-netwr,
opendmbtr LIKE vbrk-netwr,
gmdpercent LIKE vbrp-netwr,
gmdnetwr LIKE vbrp-netwr,
aubel LIKE vbrp-aubel,
aupos LIKE vbrp-aupos,
ihrez LIKE vbak-ihrez,
kdmat LIKE vbap-kdmat,
mwsbp LIKE vbrp-mwsbp,
kzwi5 LIKE vbrp-kzwi5,
due1 LIKE vbrp-netwr,
due2 LIKE vbrp-netwr,
due3 LIKE vbrp-netwr,
due4 LIKE vbrp-netwr,
due5 LIKE vbrp-netwr,
due6 LIKE vbrp-netwr.
DATA: END OF i_vbrk.
DATA : BEGIN OF i_vbrp OCCURS 0.
INCLUDE STRUCTURE zar1_struc1.
DATA: zzp_mfrnr LIKE vbrp-zzp_mfrnr,
vgbel LIKE vbrp-vgbel,
vgpos LIKE vbrp-vgpos.
DATA : END OF i_vbrp.
DATA : d_vbrp LIKE i_vbrp OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF d1_vbrp OCCURS 0.
INCLUDE STRUCTURE zar1_detail.
DATA : END OF d1_vbrp.
DATA : BEGIN OF i_bsad OCCURS 0,
belnr LIKE bsad-belnr, "krishna
buzei LIKE bsad-buzei, "Vijay
dmbtr LIKE bsad-dmbtr, "krishna
shkzg. "ppo924471
DATA : END OF i_bsad.
*--- begin of ppo924396
DATA : BEGIN OF i_bsid OCCURS 0,
augbl like bsad-augbl, "PRA927038
vbeln LIKE bsid-vbeln, "vma928512
rebzg LIKE bsid-rebzg, "vma928512
belnr LIKE bsid-belnr,
buzei LIKE bsid-buzei,
shkzg LIKE bsad-shkzg, "ppo924471
dmbtr LIKE bsad-dmbtr.
DATA : END OF i_bsid.
DATA : l_partialpmt LIKE bsad-dmbtr.
*--- end of ppo924396
DATA : BEGIN OF i_kunag OCCURS 0,
kunag LIKE vbrk-kunag.
DATA : END OF i_kunag.
DATA : BEGIN OF i_knumv OCCURS 0,
knumv LIKE vbrk-knumv.
DATA : END OF i_knumv.
DATA: BEGIN OF i_konv OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
kschl LIKE konv-kschl,
knumh LIKE konv-knumh,
kbetr LIKE konv-kbetr,
kwert LIKE konv-kwert,
kopos LIKE konv-kopos,
END OF i_konv.
DATA : BEGIN OF i_kna1 OCCURS 0,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
name2 LIKE kna1-name2,
name3 LIKE kna1-name3,
stras LIKE kna1-stras,
ort01 LIKE kna1-ort01,
regio LIKE kna1-regio,
pstlz LIKE kna1-pstlz,
adrnr LIKE kna1-adrnr.
DATA : END OF i_kna1.
*DATA : I_KNA1 TYPE HASHED TABLE OF T_KNA1 WITH UNIQUE KEY KUNNR.
*DATA : L_WA_KNA1 TYPE T_KNA1.
TYPES : BEGIN OF t_t023t,
matkl LIKE t023t-matkl,
wgbez LIKE t023t-wgbez.
TYPES : END OF t_t023t.
DATA : i_t023t TYPE HASHED TABLE OF t_t023t WITH UNIQUE KEY matkl.
DATA : l_wa_t023t TYPE t_t023t.
DATA : BEGIN OF i_t179t OCCURS 0,
prodh LIKE t179t-prodh,
vtext LIKE t179t-vtext.
DATA : END OF i_t179t.
TYPES : BEGIN OF t_mara,
matnr LIKE mara-matnr,
mfrpn LIKE mara-mfrpn.
TYPES : END OF t_mara.
DATA : i_mara TYPE HASHED TABLE OF t_mara WITH UNIQUE KEY matnr.
DATA : l_wa_mara TYPE t_mara.
DATA : BEGIN OF i_vbak OCCURS 0,
vbeln LIKE vbak-vbeln,
bname LIKE vbak-bname,
zz_ccenter LIKE vbak-zz_ccenter,
zz_dept LIKE vbak-zz_dept,
ihrez LIKE vbak-ihrez.
DATA : END OF i_vbak.
DATA: BEGIN OF i_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
erdat LIKE vbap-erdat,
prodh LIKE vbap-prodh,
ihrez LIKE vbak-ihrez,
kdmat LIKE vbap-kdmat,
posex LIKE vbap-posex,
END OF i_vbap.
DATA : BEGIN OF i_zcustomfields OCCURS 0,
vbeln LIKE zcustomfields-vbeln,
posnr LIKE zcustomfields-posnr,
valueid LIKE zcustomfields-valueid,
value LIKE zcustomfields-value.
DATA : END OF i_zcustomfields.
DATA : BEGIN OF i_vbpa OCCURS 0,
vbeln LIKE vbpa-vbeln,
kunnr LIKE vbpa-kunnr,
adrnr LIKE vbpa-adrnr.
DATA : END OF i_vbpa.
DATA d_vbpa LIKE i_vbpa OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF i_zvlxxsr OCCURS 0.
INCLUDE STRUCTURE zvlxxsr.
DATA : END OF i_zvlxxsr.
TYPES: BEGIN OF t_lfa1,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1.
TYPES: END OF t_lfa1.
DATA : i_lfa1 TYPE HASHED TABLE OF t_lfa1 WITH UNIQUE KEY lifnr.
DATA : l_wa_lfa1 TYPE t_lfa1.
DATA : i_tvkgr TYPE STANDARD TABLE OF t_tvkgr.
DATA : l_tvkgr TYPE t_tvkgr.
DATA : g_date_diff TYPE p.
DATA: fieldcat_sno TYPE slis_t_fieldcat_alv,
g_append_d_vbrp,
tcode LIKE sy-tcode,
fkimg_tot LIKE vbrp-fkimg,
Begin DEVK926013 KYH26013
NETPR_TOT LIKE I_VBRP-NETPR,
NETWR_TOT LIKE I_VBRP-NETPR,
KBETR_TOT LIKE I_VBRP-NETPR,
KBETRQTY_TOT LIKE I_VBRP-NETPR,
GMDPERCENT_TOT LIKE I_VBRP-NETPR,
GMDNETWR_TOT LIKE I_VBRP-NETPR,
netpr_tot LIKE vbrp-netwr,
netwr_tot LIKE vbrp-netwr,
kbetr_tot LIKE vbrp-netwr,
kbetrqty_tot LIKE vbrp-netwr,
gmdpercent_tot LIKE vbrp-netwr,
gmdnetwr_tot LIKE vbrp-netwr,
End DEVK926013 KYH26013
auth_failure.
DATA: objnum LIKE vbrk-knumv.
DATA: auth(3) TYPE c.
DATA: authcnt TYPE i VALUE 0.
DATA: cntserno TYPE i.
DATA: l_from TYPE i,
l_to TYPE i,
l_lines TYPE i,
l_rows(9) TYPE p DECIMALS 5,
l_loop TYPE i.
*--- begin of ppo924234
DATA: BEGIN OF down_sum OCCURS 0,
vbeln LIKE vbrk-vbeln,
fkart LIKE vbrk-fkart,
fkdat(8),
kunrg LIKE vbrk-kunrg,
kunag LIKE vbrk-kunag,
name1 LIKE kna1-name1,
vkgrp LIKE knvv-vkgrp,
bezei LIKE tvgrt-bezei, "IMR928046
zterm LIKE vbrk-zterm,
bstnk_vf LIKE vbrk-bstnk_vf,
xblnr LIKE vbrk-xblnr,
netwr(15),
partialpmt(15),
due1(15),
due2(15),
due3(15),
due4(15),
due5(15),
due6(15),
kdgrp LIKE vbrk-kdgrp,
END OF down_sum.
DATA: BEGIN OF down_sum_get OCCURS 0,
line(255),
END OF down_sum_get.
DATA: BEGIN OF down_det OCCURS 0,
zzid TYPE zchar8,
zcount(10),
vbeln TYPE zvbeln,
posnr(6),
fkdat(8),
bstnk_vf TYPE bstnk,
fkimg(13),
name1_mfg TYPE zmfg_zar1,
matnr TYPE matnr,
arktx TYPE arktx,
netpr(11),
kzwi5(13),
netwr(15),
kbetr(11),
kbetrqty(11),
mwsbp(13),
gmdpercent(15),
gmdnetwr(15),
name1 TYPE zsold_zar1,
name1_sh TYPE zship_zar1,
name2_sh TYPE zship2_zar1,
name3_sh TYPE zship3_zar1,
stras_sh TYPE stras,
ort01_sh TYPE ort01,
regio_sh TYPE regio,
pstlz_sh TYPE pstlz,
bname TYPE zbname_zar1,
vkgrp TYPE vkgrp,
aubel TYPE vbeln_va ,
aupos(6),
audat(8),
sernr TYPE gernr,
prodh TYPE prodh_d,
wgbez TYPE wgbez,
vtext TYPE bezei20,
asstg TYPE zasstg,
matkl TYPE matkl,
fkart TYPE fkart,
kunag TYPE kunag,
vbtyp TYPE vbtyp,
ihrez TYPE ihrez,
kdmat TYPE matnr_ku,
posex TYPE posex,
zz_ccenter TYPE zv_ccenter,
zz_dept TYPE zv_dept,
zz_cap_exp_code TYPE zv_cap_exp_code,
zz_cap_exp_id TYPE zv_cap_exp_id,
zz_project TYPE zv_project,
zz_aprvd_by TYPE zv_aprvd_by,
kdgrp_auft TYPE kdgrp_auft,
END OF down_det.
*--- end of ppo924234
*--- begin of ppo924471
DATA: BEGIN OF i_tvfk OCCURS 0,
fkart TYPE fkart,
END OF i_tvfk.
*--- end of ppo924471
begin of KYH
DATA: fiscal_yr_begn(8) TYPE c,
fiscal_yr_end(8) TYPE c,
fiscal_yr LIKE bsid-gjahr,
fnyear(4) TYPE c,
fnyear_pre(4) TYPE c.
END of KYH
DATA : v_gjahr LIKE bsid-gjahr. " KYH25882
TYPES : BEGIN OF t_konp,
knumh LIKE konp-knumh,
kopos LIKE konp-kopos,
KBETR LIKE KONP-KBETR. " KYH26013
kbetr LIKE vbrk-netwr. " KYH26013
TYPES : END OF t_konp.
DATA :i_konp TYPE HASHED TABLE OF t_konp WITH UNIQUE KEY knumh kopos.
DATA : l_wa_konp TYPE t_konp.
DATA : l_e_fyv TYPE periv VALUE 10,
l_i_fyear LIKE t009b-bdatj,
l_bsid_index TYPE sy-tabix VALUE 1,
l_bsad_index TYPE sy-tabix VALUE 1.
CLASS cl_abap_char_utilities DEFINITION LOAD. "IMR928770
CONSTANTS:
c_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
c_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.
CONSTANTS c_index TYPE i VALUE 2000. "KYH25969
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME.
SELECT-OPTIONS : zkunag FOR vbrk-kunag MATCHCODE OBJECT debi,
zvbeln FOR vbrk-vbeln MATCHCODE OBJECT vmcf,
zfkdat FOR vbrk-fkdat OBLIGATORY,
zvkbur FOR knvv-vkbur,
zvkgrp FOR knvv-vkgrp OBLIGATORY,
zbukrs FOR bsid-bukrs OBLIGATORY,
zgjahr FOR bsid-gjahr OBLIGATORY,
zvbtyp FOR vbrk-vbtyp NO-DISPLAY,
zbstnkvf FOR vbrk-bstnk_vf,
zxblnr FOR vbrk-xblnr.
SELECTION-SCREEN : END OF BLOCK blk1.
SELECTION-SCREEN : BEGIN OF BLOCK blk2 WITH FRAME.
PARAMETER : zopeninv RADIOBUTTON GROUP inv,
zallinv RADIOBUTTON GROUP inv DEFAULT 'X'.
SELECTION-SCREEN : END OF BLOCK blk2.
SELECTION-SCREEN : BEGIN OF BLOCK blk3 WITH FRAME.
PARAMETER : zinvoice AS CHECKBOX,
zdebit AS CHECKBOX,
zcredit AS CHECKBOX.
SELECTION-SCREEN : END OF BLOCK blk3.
SELECTION-SCREEN : BEGIN OF BLOCK blk4 WITH FRAME.
PARAMETER : zsumrep RADIOBUTTON GROUP rep DEFAULT 'X',
zdetrep RADIOBUTTON GROUP rep.
SELECT-OPTIONS : zmfrnr FOR vbrp-zzp_mfrnr MATCHCODE OBJECT kred.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN PUSHBUTTON /1(42) prun_det USER-COMMAND prun.
PARAMETERS: zid LIKE zar1_detail-zzid.
SELECTION-SCREEN : END OF BLOCK blk4.
*--- begin of ppo924234
SELECTION-SCREEN BEGIN OF BLOCK blk5 WITH FRAME TITLE text-001.
PARAMETERS: p_appfil RADIOBUTTON GROUP file DEFAULT 'X',
p_prsfil RADIOBUTTON GROUP file.
PARAMETERS: filepath LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk5.
*--- end of ppo924234
INITIALIZATION.
MOVE : 'Detail Report results of the previous run' TO prun_det.
zid = sy-uname(8).
tcode = sy-tcode.
IF NOT tcode IS INITIAL.
tvarv-name = 'ZTCODE_ZAR_INVOICE'.
tvarv-type = 'P'.
tvarv-low = tcode.
MODIFY tvarv.
ENDIF.
IF tcode NE 'ZAR2'.
NEW-PAGE LINE-SIZE 255.
ELSE.
NEW-PAGE LINE-SIZE 170.
ENDIF.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'PRUN'.
PERFORM call_ze16.
EXIT.
ENDIF.
*--- begin of ppo924234
AT SELECTION-SCREEN ON BLOCK blk5.
IF p_prsfil = 'X' AND filepath IS INITIAL.
MESSAGE e001(00) WITH 'Enter the File Name'.
ENDIF.
*--- end of ppo924234
START-OF-SELECTION.
PERFORM check_tcode.
PERFORM check_authorization.
IF auth_failure = 'X'.
EXIT.
ENDIF.
PERFORM get_sd_doc_category.
PERFORM get_invoice_data.
IF NOT i_vbrk[] IS INITIAL. "KYH25969
PERFORM get_accounting_data.
PERFORM get_other_data.
ENDIF. "KYH25969
END-OF-SELECTION.
IF NOT i_vbrk[] IS INITIAL. " KYH25969
PERFORM process_data.
IF NOT zsumrep IS INITIAL.
*--- begin of ppo924234
IF NOT filepath IS INITIAL.
CLEAR down_sum.
REFRESH down_sum.
MOVE: 'Invoice No' TO down_sum-vbeln,
'ITyp' TO down_sum-fkart,
'Bill Dt' TO down_sum-fkdat,
'Bill-to#' TO down_sum-kunrg,
'Customer#' TO down_sum-kunag,
'Name' TO down_sum-name1,
'SPN' TO down_sum-vkgrp,
'Spn Name' TO down_sum-bezei, "IMR928046
'PayT' TO down_sum-zterm,
'PO No' TO down_sum-bstnk_vf,
'Ref Doc' TO down_sum-xblnr,
'Invoice Total' TO down_sum-netwr,
'Payments' TO down_sum-partialpmt,
'Due(00-29 Days)' TO down_sum-due1,
'Due(30-44 Days)' TO down_sum-due2,
'Due(45-59 Days)' TO down_sum-due3,
'Due(60-74 Days)' TO down_sum-due4,
'Due(75-89 Days)' TO down_sum-due5,
'Due(Ovr 90Days)' TO down_sum-due6,
'CGrp' TO down_sum-kdgrp.
APPEND down_sum.
LOOP AT i_vbrk.
MOVE-CORRESPONDING i_vbrk TO down_sum.
APPEND down_sum.
CLEAR down_sum.
ENDLOOP.
PERFORM download_file TABLES down_sum USING down_sum.
ENDIF.
*--- end of ppo924234
PERFORM display_summary_output.
ELSE.
for Detail report
IF NOT i_vbrk[] IS INITIAL. " KYH26282
PERFORM get_data_for_detail_report.
PERFORM process_data_for_detail_report.
PERFORM display_detail_report.
ELSE.
MESSAGE i001(00) WITH 'No data exists for the given selection'.
" KYH26282
ENDIF. "KYH26282
ENDIF.
ELSE.
MESSAGE i001(00) WITH 'No data exists for the given selection'.
"KYH25969
ENDIF. " KYH25969
&----
*& Form GET_INVOICE_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_invoice_data .
TYPES : BEGIN OF t1_vbrp,
vbeln TYPE vbeln,
gmdnetwr LIKE zar1_struc1-gmdnetwr,
gmdpercent LIKE zar1_struc1-gmdpercent,
vkgrp TYPE vkgrp.
TYPES END OF t1_vbrp.
DATA : v_end_flag(1) TYPE c.
DATA : l_tab_vbrp TYPE STANDARD TABLE OF t1_vbrp. "KYH
DATA: l_wa_vbrp LIKE LINE OF i_vbrp.
DATA : l1_vbrp TYPE t1_vbrp.
DATA : l_tab_temp LIKE STANDARD TABLE OF i_vbrk.
DATA : l_sy_tabix LIKE sy-tabix,
gmdnetwr LIKE i_vbrp-gmdnetwr,
gmdpercent LIKE i_vbrp-gmdpercent,
l_count LIKE sy-tabix,
l_tabix TYPE sy-tabix.
CLEAR: l_sy_tabix, l_tabix.
SELECT vbeln fkart vbtyp knumv fkdat gjahr kdgrp rfbsk zterm bukrs
netwr kunrg kunag "IMR928882
bstnk_vf xblnr mwsbk rfbsk
INTO TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
vbtyp IN zvbtyp AND
fkdat IN zfkdat AND
bukrs IN zbukrs AND
kunag IN zkunag AND
bstnk_vf IN zbstnkvf AND
xblnr IN zxblnr AND
fksto NE 'X' .
IF sy-dbcnt NE 0.
IF NOT zsumrep IS INITIAL.
IF NOT i_vbrk[] IS INITIAL.
PERFORM fiscal_year_check. " KYH25882
IF NOT i_vbrk[] IS INITIAL. " KYH25882
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
SELECT vbeln posnr vkgrp mwsbp kzwi5 aubel aupos
kdgrp_auft
APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
FROM vbrp FOR ALL ENTRIES IN l_tab_temp
WHERE
vbeln = l_tab_temp-vbeln
AND
vkbur IN zvkbur AND
vkgrp IN zvkgrp.
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
ENDIF.
*Remove entries from VBRK checkinf for SPN on selection screen
PERFORM check_spn. " KRI926835
ENDIF.
ELSE.
IF NOT i_vbrk[] IS INITIAL.
PERFORM fiscal_year_check. " KYH25882
IF NOT i_vbrk[] IS INITIAL. " KYH25882
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
SELECT vbeln posnr fkimg matnr arktx netwr vkgrp aubel aupos
sernr
zzp_mfrnr vgbel vgpos aupos matkl mwsbp kzwi5 kdgrp_auft
APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
FROM vbrp FOR ALL ENTRIES IN l_tab_temp WHERE
vbeln = l_tab_temp-vbeln AND
vkbur IN zvkbur AND
vkgrp IN zvkgrp AND
zzp_mfrnr IN zmfrnr.
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
ENDIF. " KYH25882
ENDIF.
ENDIF.
IF NOT i_vbrk[] IS INITIAL. "KYH25882
SORT i_vbrk BY vbeln. "KYH25882
SORT i_vbrp BY vbeln posnr. "KYH25882
LOOP AT i_vbrk.
MOVE i_vbrk-kunag TO i_kunag-kunag.
APPEND i_kunag.
MOVE i_vbrk-knumv TO i_knumv-knumv.
APPEND i_knumv.
ENDLOOP.
ENDIF. " KYH25882
*----
ENDFORM. " GET_INVOICE_DATA
&----
*& Form GET_ACCOUNTING_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_accounting_data .
DATA : l_tab_vbrp LIKE STANDARD TABLE OF i_vbrp. "KYH
DATA: l_tab_temp LIKE STANDARD TABLE OF i_vbrk.
CONSTANTS c_index TYPE i VALUE 4000.
IF NOT i_vbrk[] IS INITIAL.
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
DELETE l_tab_temp WHERE rfbsk <> 'C'. " KYH25882
IF NOT l_tab_temp[] IS INITIAL . " KYH25882
SELECT belnr buzei dmbtr shkzg APPENDING TABLE i_bsad
FROM bsad
FOR ALL ENTRIES IN l_tab_temp
WHERE
bukrs EQ l_tab_temp-bukrs AND
gjahr EQ l_tab_temp-gjahr AND
belnr EQ l_tab_temp-vbeln.
ENDIF. " KYH25882
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
*--- begin of ppo924396
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
DELETE l_tab_temp WHERE rfbsk <> 'C'. " KYH25882
IF NOT l_tab_temp[] IS INITIAL . " KYH25882
SELECT belnr buzei shkzg dmbtr rebzg FROM bsid "vma928512
APPENDING CORRESPONDING FIELDS OF TABLE i_bsid
FOR ALL ENTRIES IN l_tab_temp
WHERE bukrs EQ l_tab_temp-bukrs
"PRA927038 "PRA927150 vbeln pick
ENDIF. " KYH25882
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
SELECT fkart FROM tvfk INTO TABLE i_tvfk WHERE vbtyp = 'O'.
"ppo924471
delete i_bsid where augbl = space. " PRA927093
ENDIF. " KYH25882
ENDFORM. " GET_ACCOUNTING_DATA
&----
*& Form GET_SD_DOC_CATEGORY
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_sd_doc_category .
Exclude SD Doc Category N and S
zvbtyp-sign = 'E'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'N'.
APPEND zvbtyp.
zvbtyp-sign = 'E'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'S'.
APPEND zvbtyp.
Get only Invoices
IF NOT zinvoice IS INITIAL.
zvbtyp-sign = 'I'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'M'.
APPEND zvbtyp.
ENDIF.
Get only Credit Memos
IF NOT zcredit IS INITIAL.
zvbtyp-sign = 'I'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'O'.
APPEND zvbtyp.
ENDIF.
Get only Debit Memos
IF NOT zdebit IS INITIAL.
zvbtyp-sign = 'I'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'P'.
APPEND zvbtyp.
ENDIF.
GET Fiscal year.
IF NOT zgjahr IS INITIAL.
zgjahr-sign = 'I'.
zgjahr-option = 'EQ'.
APPEND i_zgjahr.
APPEND zgjahr. "IMR928882
ENDIF.
ENDFORM. " GET_SD_DOC_CATEGORY
&----
*& Form GET_OTHER_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_other_data .
IF NOT i_kunag[] IS INITIAL. " KYH25882
SORT i_kunag BY kunag.
DELETE ADJACENT DUPLICATES FROM i_kunag COMPARING kunag.
SELECT kunnr name1 name2 name3 stras ort01 regio pstlz adrnr FROM
kna1 INTO CORRESPONDING FIELDS OF TABLE i_kna1 FOR ALL ENTRIES
IN i_kunag WHERE kunnr = i_kunag-kunag.
SELECT kunnr name1 name2 name3 stras ort01 regio pstlz adrnr FROM
kna1 INTO TABLE i_kna1 FOR ALL ENTRIES "IMR928882
IN i_kunag WHERE kunnr = i_kunag-kunag.
*
IF NOT I_KNUMV[] IS INITIAL. " KYH25882
SORT I_KNUMV BY KNUMV.
DELETE ADJACENT DUPLICATES FROM I_KNUMV COMPARING KNUMV.
*
ENDIF. " KYH25882
ENDIF. " KYH25882
ENDFORM. " GET_OTHER_DATA
&----
*& Form PROCESS_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM process_data .
IF NOT i_vbrk[] IS INITIAL. " KYH25882
DATA: l_sy_tabix LIKE sy-tabix.
CLEAR l_sy_tabix.
SORT i_kna1 BY kunnr.
SORT i_bsad BY belnr.
SORT i_bsid BY belnr.
LOOP AT i_vbrk.
l_sy_tabix = sy-tabix.
PERFORM invoice_total_get. "ppo924692
PERFORM payments_get.
IF NOT zopeninv IS INITIAL AND i_vbrk-opendmbtr = 0.
IF NOT zopeninv IS INITIAL.
start pradeep
perform openinvoices.
DELETE i_vbrk.
CONTINUE.
ENDIF.
PERFORM customer_name_get. "krishna
PERFORM return_cal_sum. "ppo925435
PERFORM dues_data_get. "ppo925435
PERFORM spn_get. "IMR928046
MODIFY i_vbrk INDEX l_sy_tabix.
CLEAR i_vbrk.
ENDLOOP.
ENDIF. " KYH25882
ENDFORM. " PROCESS_DATA
&----
*& Form DISPLAY_SUMMARY_OUTPUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_summary_output .
IF i_vbrk[] IS INITIAL.
MESSAGE i001(00) WITH 'No data exists for the given selection'.
EXIT.
ENDIF.
PERFORM build_field_cat.
PERFORM call_alv.
ENDFORM. " DISPLAY_SUMMARY_OUTPUT
&----
*& Form BUILD_FIELD_CAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_field_cat .
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Invoice No'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'FKART'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'ITyp'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'FKDAT'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Bill Dt'. "IMR928770
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'KUNRG'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'Bill To #'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'KUNAG'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Customer #'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-ref_tabname = 'KNA1'. "IMR928770
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Name'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'VKGRP'.
ls_fieldcat-ref_tabname = 'VBRP'. "IMR928770
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Spn'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat. "IMR928046
ls_fieldcat-fieldname = 'BEZEI'.
ls_fieldcat-ref_tabname = 'TVGRT'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Spn Name'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ZTERM'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'PayT'. "IMR928770
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BSTNK_VF'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Client PO'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'XBLNR'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Ref Doc'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'NETWR'.
ls_fieldcat-ref_tabname = 'VBRP'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Invoice Total'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PARTIALPMT'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Payment'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE1'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 0 - 29)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE2'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 30 - 44)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE3'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 45 - 59)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE4'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 60 - 74)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE5'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 75 - 89)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE6'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( Over 90)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'KDGRP'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'CGrp'. "IMR928770
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
ENDFORM. " BUILD_FIELD_CAT
&----
*& Form CALL_ALV
&----
text
----
--> p1 text
<-- p2 text
----
FORM call_alv .
DATA : l_prg LIKE sy-repid.
l_prg = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = l_prg
it_fieldcat = fieldcat_sno
i_callback_user_command = 'CALL_VF03' "ppo924692
i_save = 'A'
TABLES
t_outtab = i_vbrk.
ENDFORM. " CALL_ALV
&----
*& Form CUSTOMER_NAME_GET
&----
text
----
--> p1 text
<-- p2 text
----
FORM customer_name_get .
READ TABLE i_kna1 WITH KEY kunnr = i_vbrk-kunag BINARY SEARCH.
IF sy-subrc EQ 0.
i_vbrk-name1 = i_kna1-name1.
ENDIF.
ENDFORM. " CUSTOMER_NAME_GET
&----
*& Form INVOICE_TOTAL_GET
&----
text
----
--> p1 text
<-- p2 text
----
FORM invoice_total_get .
i_vbrk-netwr = i_vbrk-netwr + i_vbrk-mwsbk.
ENDFORM. " INVOICE_TOTAL_GET
&----
*& Form PAYMENTS_GET
&----
text
----
--> p1 text
<-- p2 text
----
FORM payments_get .
DATA :
"L_PARTIALPMT LIKE BSAD-DMBTR, "ppo924396
l_paydue LIKE bsad-dmbtr,
l_shkzg, "ppo924471
l_shkzg_bsid, "vma928665
l_wa_bsad LIKE i_bsad,
l_wa_bsid LIKE i_bsid.
*
CLEAR: l_partialpmt, l_paydue.
Begin of Changes KYH DEVK925834
CLEAR: i_tvfk, l_shkzg, l_shkzg_bsid. "vma928665
SORT i_tvfk BY fkart. " KYH25882
READ TABLE i_tvfk WITH KEY fkart = i_vbrk-fkart BINARY SEARCH.
IF sy-subrc EQ 0.
l_shkzg = 'H'.
l_shkzg_bsid = 'S'. "vma928665
ELSE.
l_shkzg = 'S'.
l_shkzg_bsid = 'H'. "vma928665
ENDIF.
End of changes KYH DEVK925834
*--- begin of ppo924396
SORT i_bsad BY belnr.
READ TABLE i_bsad TRANSPORTING NO FIELDS WITH KEY belnr = i_vbrk-vbeln
BINARY SEARCH.
" KYH25882
IF sy-subrc EQ 0.
*--- begin of ppo924471
CLEAR: I_TVFK, L_SHKZG.
READ TABLE I_TVFK WITH KEY FKART = I_VBRK-FKART.
IF SY-SUBRC EQ 0.
L_SHKZG = 'H'.
ELSE.
L_SHKZG = 'S'.
ENDIF.
*--- end of ppo924471
*--- end of ppo924396
LOOP AT i_bsad WHERE belnr = i_vbrk-vbeln AND shkzg = l_shkzg.
"ppo924471.
IF i_bsad-belnr NE i_vbrk-vbeln OR i_bsad-shkzg NE l_shkzg.
EXIT.
ENDIF.
l_partialpmt = l_partialpmt + i_bsad-dmbtr.
CLEAR i_bsad.
ENDLOOP.
*--- begin of ppo924396
ELSE.
*sort i_bsid by belnr.
*READ TABLE i_bsid TRANSPORTING NO FIELDS WITH KEY belnr = i_vbrk-vbeln.
BINARY SEARCH.
" KYH25882
BEGIN " KYH26588
LOOP AT I_BSID FROM SY-TABIX. " WHERE BELNR = I_VBRK-VBELN
AND SHKZG = H. "ppo924471
LOOP AT I_BSID WHERE SHKZG = 'H'.
*IF SY-SUBRC = 0.
LOOP AT i_bsid WHERE belnr = i_vbrk-vbeln
AND shkzg = 'H'.
*
{ begin of "vma928411------------------------------------------------*
LOOP AT i_bsid WHERE rebzg = i_vbrk-vbeln "vma928512
AND shkzg = l_shkzg_bsid. "vma928665
IF I_BSID-BELNR NE I_VBRK-VBELN OR I_BSID-SHKZG NE L_SHKZG.
EXIT.
ENDIF.
END " KYH26588
l_partialpmt = l_partialpmt + i_bsid-dmbtr.
CLEAR i_bsid.
*
*
ENDLOOP.
end of "vma928411 }--------------------------------------------------*
ENDIF.
ENDIF.
*--- end of ppo924396
delete the processed records so that the number of
loops for next iteration will be reduced. "krishna
DELETE I_BSAD WHERE BELNR = I_VBRK-VBELN. "krishna
DELETE I_BSID WHERE BELNR = I_VBRK-VBELN. "krishna
i_vbrk-partialpmt = l_partialpmt. "PRA927150
*
IF I_VBRK-NETWR EQ I_VBRK-PARTIALPMT.
I_VBRK-OPENDMBTR = 0.
ELSE.
LOOP AT I_BSID WHERE BELNR = I_VBRK-VBELN.
L_PAYDUE = L_PAYDUE + I_BSID-DMBTR.
CLEAR I_BSID.
ENDLOOP.
I_VBRK-OPENDMBTR = L_PAYDUE.
ENDIF.
i_vbrk-opendmbtr = i_vbrk-netwr - l_partialpmt.
ENDFORM. " PAYMENTS_GET
&----
*& Form DUES_DATA_GET
&----
text
----
--> p1 text
<-- p2 text
----
FORM dues_data_get .
DATA : l_dt_diff(6) TYPE n.
CLEAR l_dt_diff.
l_dt_diff = sy-datum - i_vbrk-fkdat.
i_vbrk-partialpmt = l_partialpmt. "PRA927135
IF ( l_dt_diff GE 0 ) AND ( l_dt_diff LE 29 ).
i_vbrk-due1 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 30 ) AND ( l_dt_diff LE 44 ).
i_vbrk-due2 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 45 ) AND ( l_dt_diff LE 59 ).
i_vbrk-due3 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 60 ) AND ( l_dt_diff LE 74 ).
i_vbrk-due4 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 75 ) AND ( l_dt_diff LE 89 ).
i_vbrk-due5 = i_vbrk-opendmbtr.
ELSEIF ( l_dt_diff GE 90 ).
i_vbrk-due6 = i_vbrk-opendmbtr.
ENDIF.
ENDFORM. " DUES_DATA_GET
&----
*& Form GET_DATA_FOR_DETAIL_REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data_for_detail_report .
PERFORM get_material_info.
PERFORM get_sd_info.
PERFORM get_prod_hierarchies_info.
PERFORM get_conditions_info.
PERFORM get_serial_nos_info.
PERFORM get_partner_profile_info.
ENDFORM. " GET_DATA_FOR_DETAIL_REPORT
&----
*& Form PROCESS_DATA_FOR_DETAIL_REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM process_data_for_detail_report .
CLEAR d_vbrp.
REFRESH d_vbrp.
IF NOT i_vbrp[] IS INITIAL . " KYH25882
SORT i_t179t BY prodh. " KYH25882
SORT I_VBPA BY VBELN.
SORT i_lfa1 BY lifnr. " KYH25987
SORT i_t023t BY matkl. " KYH25882
SORT i_mara BY matnr. " KYH25882
LOOP AT i_vbrp.
MOVE-CORRESPONDING i_vbrp TO d_vbrp.
IF NOT d_vbrp-fkimg IS INITIAL.
d_vbrp-netpr = ( d_vbrp-netwr - d_vbrp-kzwi5 ) / d_vbrp-fkimg.
ENDIF.
PERFORM move_vbrk_info.
PERFORM move_material_info.
PERFORM move_sd_info.
PERFORM move_prod_hierarchies_info.
PERFORM MOVE_CONDITIONS_INFO.
PERFORM move_partner_profile_info.
PERFORM calculate_gmd.
PERFORM move_serial_nos_info.
IF g_append_d_vbrp IS INITIAL.
MOVE-CORRESPONDING d_vbrp TO d1_vbrp.
APPEND d_vbrp.
APPEND d1_vbrp.
ENDIF.
*CLEAR : I_VBRP , D_VBRP ,D1_VBRP, I_VBAK , I_VBAP , I_MARA , I_KNA1.
CLEAR : i_vbrp , d_vbrp ,d1_vbrp, i_vbak , i_vbap ,
i_kna1. "KYH26443
ENDLOOP.
ENDIF. " KYH25882
CLEAR i_mara. " KYH26443
ENDFORM. " PROCESS_DATA_FOR_DETAIL_REPORT
&----
*& Form DISPLAY_DETAIL_REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_detail_report .
DELETE FROM zar1_detail WHERE ( zcount GE 0 ) OR ( zzid EQ space ).
IF NOT d1_vbrp[] IS INITIAL. " KYH25882
LOOP AT d1_vbrp.
d1_vbrp-zzid = zid.
d1_vbrp-zcount = sy-tabix.
IF d1_vbrp-vbtyp EQ 'O'.
d1_vbrp-netwr = d1_vbrp-netwr * -1.
d1_vbrp-kbetr = d1_vbrp-kbetr * -1.
d1_vbrp-netpr = d1_vbrp-netpr * -1.
d1_vbrp-kbetrqty = d1_vbrp-kbetrqty * -1.
d1_vbrp-gmdnetwr = d1_vbrp-gmdnetwr * -1.
ENDIF.
ADD d1_vbrp-fkimg TO fkimg_tot.
ADD d1_vbrp-netpr TO netpr_tot.
ADD d1_vbrp-netwr TO netwr_tot.
ADD d1_vbrp-kbetr TO kbetr_tot.
ADD d1_vbrp-kbetrqty TO kbetrqty_tot.
ADD d1_vbrp-gmdpercent TO gmdpercent_tot.
ADD d1_vbrp-gmdnetwr TO gmdnetwr_tot.
MODIFY d1_vbrp.
CLEAR d1_vbrp.
ENDLOOP.
d1_vbrp-vbeln = '9999999999'.
d1_vbrp-posnr = '999999'.
d1_vbrp-fkdat = '99991231'.
d1_vbrp-bstnk_vf = 'zz***** TOTAL *****'.
d1_vbrp-zzid = zid.
d1_vbrp-zcount = 9999999999.
d1_vbrp-fkimg = fkimg_tot.
d1_vbrp-netpr = netpr_tot.
d1_vbrp-netwr = netwr_tot.
d1_vbrp-kbetr = kbetr_tot.
d1_vbrp-kbetrqty = kbetrqty_tot.
d1_vbrp-gmdpercent = gmdpercent_tot.
d1_vbrp-gmdnetwr = gmdnetwr_tot.
APPEND d1_vbrp.
CLEAR d1_vbrp.
ENDIF. " KYH25882
INSERT zar1_detail FROM TABLE d1_vbrp.
*--- begin of ppo924234
IF NOT filepath IS INITIAL. " KYH25882
CLEAR down_det.
REFRESH down_det.
MOVE: 'USER' TO down_det-zzid,
'Counter' TO down_det-zcount,
'SD Billing Doc#' TO down_det-vbeln,
'Item' TO down_det-posnr,
'Bill date' TO down_det-fkdat,
'PO Number' TO down_det-bstnk_vf,
'Billed qty' TO down_det-fkimg,
'Manufacturer' TO down_det-name1_mfg,
'Material' TO down_det-matnr,
'Description' TO down_det-arktx,
'Unit price' TO down_det-netpr,
'Freight Amount' TO down_det-kzwi5,
'Ext. price + Freight' TO down_det-netwr ,
'Cost' TO down_det-kbetr,
'Ext. cost' TO down_det-kbetrqty,
'Tax amount' TO down_det-mwsbp ,
'GMD %' TO down_det-gmdpercent ,
'GMD $' TO down_det-gmdnetwr,
'Sold-to' TO down_det-name1,
'Ship-to' TO down_det-name1_sh,
'Ship to Name 2' TO down_det-name2_sh,
'Ship to Name 3' TO down_det-name3_sh,
'House No/Street' TO down_det-stras_sh,
'City' TO down_det-ort01_sh ,
'Region' TO down_det-regio_sh ,
'Postal Code' TO down_det-pstlz_sh,
'Sales Order User' TO down_det-bname ,
'Sales group' TO down_det-vkgrp ,
'Sales Document' TO down_det-aubel ,
'Item' TO down_det-aupos,
'Document date' TO down_det-audat,
'Serial number' TO down_det-sernr,
'Prod.hierarchy' TO down_det-prodh ,
'Matl grp descr' TO down_det-wgbez,
'Description' TO down_det-vtext,
'Asset Tag' TO down_det-asstg,
'MatGrp' TO down_det-matkl,
'Billing Type' TO down_det-fkart,
'Sold-to party' TO down_det-kunag,
'Document cat' TO down_det-vbtyp,
'Your ref' TO down_det-ihrez,
'Cust. Material' TO down_det-kdmat,
'PO itm' TO down_det-posex,
'Cost Center' TO down_det-zz_ccenter,
'Department' TO down_det-zz_dept,
'cap Exp code' TO down_det-zz_cap_exp_code,
'cap exp id' TO down_det-zz_cap_exp_id ,
'Project No' TO down_det-zz_project,
'Apprvd by' TO down_det-zz_aprvd_by,
'CustGrpSlsOrder' TO down_det-kdgrp_auft.
APPEND down_det.
LOOP AT d1_vbrp.
MOVE-CORRESPONDING d1_vbrp TO down_det.
APPEND down_det.
CLEAR down_det.
ENDLOOP.
PERFORM download_file TABLES down_det USING down_det.
ENDIF. " KYH25882
*--- end of ppo924234
IF sy-subrc EQ 0 AND sy-batch IS INITIAL.
PERFORM call_ze16.
ENDIF.
ENDFORM. " DISPLAY_DETAIL_REPORT
&----
*& Form GET_MATERIAL_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_material_info .
DATA : d_vbrp LIKE i_vbrp OCCURS 0 WITH HEADER LINE,
sytabix LIKE sy-tabix.
CLEAR d_vbrp.
REFRESH d_vbrp.
start pradeep N
IF NOT i_vbrk[] IS INITIAL.
SORT i_vbrk BY vbeln.
SORT i_vbrp BY vbeln.
LOOP AT i_vbrp.
sytabix = sy-tabix.
READ TABLE i_vbrk WITH KEY vbeln = i_vbrp-vbeln.
IF sy-subrc NE 0.
DELETE i_vbrp INDEX sytabix.
ENDIF.
ENDLOOP.
ENDIF.
end pradeep N
IF NOT i_vbrp[] IS INITIAL. " KYH25882
d_vbrp[] = i_vbrp[].
SORT d_vbrp BY matkl.
DELETE ADJACENT DUPLICATES FROM d_vbrp COMPARING matkl.
SELECT matkl wgbez
INTO CORRESPONDING FIELDS OF TABLE i_t023t
FROM t023t FOR ALL ENTRIES IN d_vbrp
WHERE matkl = d_vbrp-matkl
AND spras = 'E'.
IF NOT i_t023t[] IS INITIAL. " KYH25882
SORT i_t023t BY matkl. " KYH25882
ENDIF. " KYH25882
CLEAR d_vbrp.
REFRESH d_vbrp.
d_vbrp[] = i_vbrp[].
SORT d_vbrp BY matnr.
DELETE ADJACENT DUPLICATES FROM d_vbrp COMPARING matnr.
SELECT matnr mfrpn
INTO CORRESPONDING FIELDS OF TABLE i_mara
FROM mara FOR ALL ENTRIES IN d_vbrp
WHERE matnr = d_vbrp-matnr.
IF NOT i_mara[] IS INITIAL. " KYH25882
SORT i_mara BY matnr.
ENDIF. " KYH25882
ENDIF.
ENDFORM. " GET_MATERIAL_INFO
&----
*& Form GET_SD_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_sd_info .
DATA : d_vbrp LIKE i_vbrp OCCURS 0 WITH HEADER LINE.
CLEAR d_vbrp.
REFRESH d_vbrp.
IF NOT i_vbrp[] IS INITIAL. " KYH25882
d_vbrp[] = i_vbrp[].
SORT d_vbrp BY aubel.
DELETE ADJACENT DUPLICATES FROM d_vbrp COMPARING aubel.
SELECT vbeln bname zz_ccenter zz_dept ihrez
INTO CORRESPONDING FIELDS OF TABLE i_vbak
FROM vbak FOR ALL ENTRIES IN d_vbrp
WHERE vbeln = d_vbrp-aubel.
IF NOT I_VBAK[] IS INITIAL. " KYH25882
SORT i_vbak BY vbeln.
ENDIF. " KYH25882
SELECT vbeln posnr knumh erdat prodh kdmat posex
INTO CORRESPONDING FIELDS OF TABLE i_vbap
FROM vbap FOR ALL ENTRIES IN i_vbrp
WHERE vbeln = i_vbrp-aubel
AND posnr = i_vbrp-aupos.
SELECT vbeln posnr valueid value INTO TABLE i_zcustomfields
FROM zcustomfields FOR ALL ENTRIES IN i_vbrp
WHERE vbeln = i_vbrp-aubel AND
( posnr = i_vbrp-aupos OR posnr = '000000' )
AND
( valueid = 'VAPR' OR valueid = 'VCC' OR
valueid = 'VDEP' OR
valueid = 'VEXP' OR valueid = 'VID' OR
valueid = 'VPRJ' ).
IF NOT I_ZCUSTOMFIELDS[] IS INITIAL. "KYH
SORT I_ZCUSTOMFIELDS BY VBELN POSNR VALUEID.
*
ENDIF. " KYH25882
ENDIF. " KYH25882
ENDFORM. " GET_SD_INFO
&----
*& Form GET_CONDITIONS_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_conditions_info .
IF NOT i_knumv[] IS INITIAL. "" KYH25882
SORT i_knumv BY knumv.
DELETE ADJACENT DUPLICATES FROM i_knumv COMPARING knumv.
SELECT knumv kposn kschl knumh kbetr kwert kopos FROM konv
INTO CORRESPONDING FIELDS OF TABLE i_konv
FOR ALL ENTRIES IN i_knumv
WHERE knumv = i_knumv-knumv
AND ( kschl = 'VPRS' OR kschl = 'ZLPR' ).
ENDIF.
BEGIN " DEVK925893 KYH25952
IF NOT i_konv[] IS INITIAL.
SELECT knumh kopos kbetr INTO TABLE i_konp FROM konp
FOR ALL ENTRIES IN i_konv
WHERE knumh = i_konv-knumh
AND kopos = i_konv-kopos.
ENDIF.
SORT i_konp BY knumh kopos.
END " KYH25952
"$$
"$$
ENDFORM. " GET_CONDITIONS_INFO
&----
*& Form GET_SERIAL_NOS_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_serial_nos_info .
IF NOT i_vbrp[] IS INITIAL. " KYH25882
SELECT * FROM zvlxxsr INTO TABLE i_zvlxxsr
FOR ALL ENTRIES IN i_vbrp
WHERE vbeln = i_vbrp-vgbel
AND posnr = i_vbrp-vgpos.
ENDIF. " KYH25882
ENDFORM. " GET_SERIAL_NOS_INFO
&----
*& Form GET_PARTNER_PROFILE_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_partner_profile_info .
CLEAR d_vbpa.
REFRESH d_vbpa.
IF NOT i_vbrk[] IS INITIAL. " KYH26282
SELECT vbeln kunnr adrnr INTO CORRESPONDING FIELDS OF TABLE i_vbpa
FROM vbpa FOR ALL ENTRIES IN i_vbrk
WHERE vbeln = i_vbrk-vbeln
AND parvw = 'WE'.
IF NOT i_vbpa[] IS INITIAL. "KYH
SORT i_vbpa BY adrnr.
LOOP AT i_vbpa WHERE adrnr IS INITIAL.
MOVE-CORRESPONDING i_vbpa TO d_vbpa.
APPEND d_vbpa.
DELETE i_vbpa.
ENDLOOP.
SORT i_vbpa BY adrnr DESCENDING.
CLEAR i_kna1.
REFRESH i_kna1.
SELECT DISTINCT kunnr name1 name2 name3 stras ort01 regio pstlz
INTO CORRESPONDING FIELDS OF TABLE i_kna1
FROM kna1 FOR ALL ENTRIES IN d_vbpa
WHERE kunnr = d_vbpa-kunnr.
SELECT DISTINCT addrnumber AS adrnr name1 name2 name3 street AS
stras
city1 AS ort01 region AS regio post_code1 AS pstlz
APPENDING CORRESPONDING FIELDS OF TABLE i_kna1
FROM adrc FOR ALL ENTRIES IN i_vbpa
WHERE addrnumber = i_vbpa-adrnr.
SORT i_kna1 BY adrnr DESCENDING.
*LOOP AT I_KNA1 INTO L_WA_KNA1 WHERE ( KUNNR IS INITIAL ) AND ( ADRNR NE
*SPACE ).
LOOP AT i_kna1 WHERE ( kunnr IS INITIAL ) AND ( adrnr NE space ).
READ TABLE i_vbpa WITH KEY adrnr = i_kna1-adrnr.
IF sy-subrc EQ 0.
i_kna1-kunnr = i_vbpa-kunnr.
MODIFY TABLE i_kna1.
ELSE.
DELETE TABLE i_kna1.
ENDIF.
ENDLOOP.
SORT i_kna1 BY kunnr.
ENDIF. "KYH
IF NOT i_vbrp[] IS INITIAL.
SELECT lifnr name1 FROM lfa1 INTO CORRESPONDING FIELDS OF TABLE
i_lfa1
FOR ALL ENTRIES IN i_vbrp
WHERE lifnr = i_vbrp-zzp_mfrnr.
ENDIF.
ENDIF.
ENDFORM. " GET_PARTNER_PROFILE_INFO
&----
*& Form MOVE_I_ZCUSTOMFIELDS_DATA_1
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_i_zcustomfields_data_1 .
CASE i_zcustomfields-valueid.
WHEN 'VCC'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_ccenter.
WHEN 'VDEP'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_dept.
WHEN 'VAPR'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_aprvd_by.
WHEN 'VEXP'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_cap_exp_code.
WHEN 'VID'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_cap_exp_id.
WHEN 'VPRJ'.
MOVE: i_zcustomfields-value TO d_vbrp-zz_project.
ENDCASE.
ENDFORM. " MOVE_I_ZCUSTOMFIELDS_DATA_1
&----
*& Form MOVE_I_ZCUSTOMFIELDS_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_i_zcustomfields_data .
IF NOT i_zcustomfields[] IS INITIAL. " KYH25882
READ TABLE i_zcustomfields WITH KEY vbeln = d_vbrp-aubel
posnr = d_vbrp-posnr
BINARY SEARCH.
IF sy-subrc EQ 0.
LOOP AT i_zcustomfields WHERE vbeln = d_vbrp-aubel AND
posnr = d_vbrp-aupos.
PERFORM move_i_zcustomfields_data_1. "ppo925709
ENDLOOP.
ELSE.
READ TABLE I_ZCUSTOMFIELDS WITH KEY VBELN = D_VBRP-AUBEL
POSNR = '000000'.
LOOP AT i_zcustomfields WHERE vbeln = d_vbrp-aubel AND
posnr = '000000'.
PERFORM move_i_zcustomfields_data_1.
ENDLOOP.
ENDIF.
ENDIF. " KYH25882
ENDFORM. " MOVE_I_ZCUSTOMFIELDS_DATA
&----
*& Form MOVE_SD_MOVE_SD_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_sd_info .
IF NOT i_vbak[] IS INITIAL. " KYH25882
READ TABLE i_vbak WITH KEY vbeln = d_vbrp-aubel.
IF sy-subrc EQ 0.
d_vbrp-bname = i_vbak-bname.
d_vbrp-zz_ccenter = i_vbak-zz_ccenter.
d_vbrp-zz_dept = i_vbak-zz_dept.
d_vbrp-ihrez = i_vbak-ihrez.
ENDIF.
ENDIF. " KYH25882
IF NOT i_vbap[] IS INITIAL. " KYH25882
READ TABLE i_vbap WITH KEY vbeln = d_vbrp-aubel
posnr = d_vbrp-aupos
BINARY SEARCH.
IF sy-subrc = 0.
d_vbrp-audat = i_vbap-erdat.
d_vbrp-prodh = i_vbap-prodh.
d_vbrp-kdmat = i_vbap-kdmat.
d_vbrp-posex = i_vbap-posex.
ENDIF.
PERFORM move_i_zcustomfields_data.
ENDIF. " KYH25882
ENDFORM. " MOVE_SD_INFO
&----
*& Form MOVE_MATERIAL_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_material_info .
IF NOT i_t023t[] IS INITIAL . " KYH25882
READ TABLE i_t023t INTO l_wa_t023t WITH TABLE KEY matkl =
i_vbrp-matkl.
IF sy-subrc EQ 0.
d_vbrp-wgbez = l_wa_t023t-wgbez.
ENDIF.
ENDIF.
IF NOT I_MARA[] IS INITIAL. " KYH25882
READ TABLE i_mara INTO l_wa_mara WITH TABLE KEY matnr = i_vbrp-matnr.
IF sy-subrc EQ 0.
d_vbrp-matnr = l_wa_mara-mfrpn+0(18).
ENDIF.
ENDIF. " KYH25882
ENDFORM. " MOVE_MATERIAL_INFO
**&----
**
**& Form MOVE_CONDITIONS_INFO
**&----
**
text
**----
**
--> p1 text
<-- p2 text
**----
**
*FORM MOVE_CONDITIONS_INFO .
*
*ENDFORM. " MOVE_CONDITIONS_INFO
&----
*& Form MOVE_SERIAL_NOS_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_serial_nos_info .
DATA l_count TYPE i.
CLEAR : l_count , g_append_d_vbrp.
IF NOT i_zvlxxsr[] IS INITIAL. " KYH25882
LOOP AT i_zvlxxsr WHERE vbeln = d_vbrp-vgbel AND posnr =
d_vbrp-vgpos.
l_count = l_count + 1.
d_vbrp-sernr = i_zvlxxsr-sernr.
d_vbrp-asstg = i_zvlxxsr-asstg.
d1_vbrp-zzid = zid.
d1_vbrp-zcount = l_count.
IF l_count > 1.
CLEAR : d_vbrp-fkimg,d_vbrp-netpr, d_vbrp-netwr, d_vbrp-kbetr,
d_vbrp-kbetrqty,d_vbrp-gmdpercent,
d_vbrp-mwsbp, d_vbrp-kzwi5, d_vbrp-gmdnetwr.
ENDIF.
MOVE-CORRESPONDING d_vbrp TO d1_vbrp.
APPEND d_vbrp.
APPEND d1_vbrp.
g_append_d_vbrp = 'X'.
CLEAR : i_zvlxxsr.
ENDLOOP.
ENDIF. " KYH25882
ENDFORM. " MOVE_SERIAL_NOS_INFO
&----
*& Form MOVE_PARTNER_PROFILE_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_partner_profile_info .
CLEAR i_kna1.
READ TABLE i_vbpa WITH KEY vbeln = i_vbrk-vbeln .
"BINARY SEARCH. " KYH25882
IF sy-subrc = 0.
READ TABLE i_kna1 WITH KEY adrnr = i_vbpa-adrnr.
ELSE.
READ TABLE d_vbpa WITH KEY vbeln = i_vbrk-vbeln.
" BINARY SEARCH. " KYH25882
IF sy-subrc EQ 0.
READ TABLE i_kna1 WITH KEY kunnr = d_vbpa-kunnr.
ENDIF.
ENDIF.
CLEAR kna1.
SELECT SINGLE * FROM kna1 WHERE kunnr EQ i_vbrk-kunag.
MOVE kna1-name1 TO d_vbrp-name1.
d_vbrp-name1_sh = i_kna1-name1.
d_vbrp-name2_sh = i_kna1-name2.
d_vbrp-name3_sh = i_kna1-name3.
d_vbrp-stras_sh = i_kna1-stras.
d_vbrp-ort01_sh = i_kna1-ort01.
d_vbrp-regio_sh = i_kna1-regio.
d_vbrp-pstlz_sh = i_kna1-pstlz.
READ TABLE i_lfa1 INTO l_wa_lfa1 WITH TABLE KEY lifnr =
i_vbrp-zzp_mfrnr.
IF sy-subrc EQ 0.
d_vbrp-name1_mfg = l_wa_lfa1-name1.
ENDIF.
ENDFORM. " MOVE_PARTNER_PROFILE_INFO
&----
*& Form CHECK_AUTHORIZATION
&----
text
----
--> p1 text
<-- p2 text
----
FORM check_authorization .
CLEAR auth_failure.
SELECT vkgrp FROM tvkgr INTO TABLE i_tvkgr
WHERE vkgrp IN zvkgrp .
IF NOT i_tvkgr[] IS INITIAL. " KYH25882
SORT i_tvkgr.
DELETE ADJACENT DUPLICATES FROM i_tvkgr COMPARING vkgrp.
IF sy-dbcnt NE 0.
LOOP AT i_tvkgr INTO l_tvkgr.
AUTHORITY-CHECK OBJECT 'V_VBKA_VKO'
ID 'VKORG' DUMMY
ID 'VTWEG' DUMMY
ID 'SPART' DUMMY
ID 'VKBUR' DUMMY
ID 'VKGRP' FIELD l_tvkgr-vkgrp
ID 'KTAAR' DUMMY
ID 'ACTVT' DUMMY.
IF sy-subrc <> 0.
MESSAGE i016(ds) WITH 'No authorization for sales group'
l_tvkgr-vkgrp.
auth_failure = 'X'.
EXIT.
ENDIF.
CLEAR :l_tvkgr.
ENDLOOP.
ENDIF.
ENDIF. " KYH25882
ENDFORM. " CHECK_AUTHORIZATION
&----
*& Form CHECK_TCODE
&----
text
----
--> p1 text
<-- p2 text
----
FORM check_tcode .
IF tcode IS INITIAL.
SELECT low UP TO 1 ROWS FROM tvarv INTO tcode
WHERE name = 'ZTCODE_ZAR_INVOICE'
AND type = 'P'.
ENDSELECT.
ENDIF.
ENDFORM. " CHECK_TCODE
&----
*& Form CALCULATE_GMD
&----
text
----
--> p1 text
<-- p2 text
----
FORM calculate_gmd .
IF NOT i_vbrk[] IS INITIAL. "" KYH25882
CLEAR i_vbrk.
SORT i_konv BY knumv.
READ TABLE i_vbrk WITH KEY vbeln = d_vbrp-vbeln.
IF NOT i_konv[] IS INITIAL. " KYH25882
READ TABLE i_konv WITH KEY knumv = i_vbrk-knumv " KYH26013
kposn = d_vbrp-posnr BINARY SEARCH.
" KYH26013
IF sy-subrc = 0.
LOOP AT i_konv FROM sy-tabix.
IF i_konv-knumv NE i_vbrk-knumv OR i_konv-kposn NE
d_vbrp-posnr . " KYH26013
EXIT. " KYH26013
ENDIF. " KYH26013
IF i_konv-knumh IS INITIAL.
Cost
d_vbrp-kbetr = i_konv-kbetr.
Ext.cost
d_vbrp-kbetrqty = i_konv-kwert.
GMD in $
d_vbrp-gmdnetwr = d_vbrp-netwr - d_vbrp-kbetrqty.
move t_vbrp-gmdnetwr to t_vbrk-gmdnetwr.
GMD in %
IF NOT d_vbrp-netwr IS INITIAL.
d_vbrp-gmdpercent = d_vbrp-gmdnetwr * 100 / d_vbrp-netwr.
ELSE.
d_vbrp-gmdpercent = 0.
ENDIF.
ELSE.
BEGIN KYH25952
SELECT SINGLE * FROM KONP
WHERE KNUMH = I_KONV-KNUMH
AND KOPOS = I_KONV-KOPOS.
IF SY-SUBRC EQ 0.
IF NOT i_konp[] IS INITIAL.
READ TABLE i_konp INTO l_wa_konp WITH TABLE KEY knumh =
i_konv-knumh
kopos =
i_konv-kopos.
IF sy-subrc = 0.
END KYH25952
Cost
D_VBRP-KBETR = KONP-KBETR.
d_vbrp-kbetr = l_wa_konp-kbetr. " KYH25893
Ext.cost
D_VBRP-KBETRQTY = KONP-KBETR * D_VBRP-FKIMG.
d_vbrp-kbetrqty = l_wa_konp-kbetr * d_vbrp-fkimg.
"KYH25893
GMD in $
d_vbrp-gmdnetwr = d_vbrp-netwr - d_vbrp-kbetrqty.
move t_vbrp-gmdnetwr to t_vbrk-gmdnetwr.
ENDIF.
ENDIF.
GMD in %
IF NOT d_vbrp-netwr IS INITIAL.
d_vbrp-gmdpercent = d_vbrp-gmdnetwr * 100 / d_vbrp-netwr.
move t_vbrp-gmdpercent to t_vbrk-gmdpercent.
ELSE.
d_vbrp-gmdpercent = 0.
ENDIF.
ENDIF.
ENDIF.
tO BE ANALYSED
IF T_KONV-KSCHL = 'VPRS'. EXIT. ENDIF. "VPRS priority
ENDLOOP.
ENDIF.
ENDIF. " KYH25882
ENDIF. " KYH25882
ENDFORM. " CALCULATE_GMD
&----
*& Form GET_PROD_HIERARCHIES_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_prod_hierarchies_info .
DATA d_vbap LIKE i_vbap OCCURS 0 WITH HEADER LINE.
CLEAR d_vbap.
REFRESH d_vbap.
IF NOT i_vbap[] IS INITIAL. " KYH25882
d_vbap[] = i_vbap[].
SORT d_vbap BY prodh.
DELETE ADJACENT DUPLICATES FROM d_vbap COMPARING prodh.
SELECT prodh vtext INTO TABLE i_t179t
FROM t179t FOR ALL ENTRIES IN d_vbap
WHERE prodh = d_vbap-prodh
AND spras = 'E'.
IF NOT i_t179t[] IS INITIAL. " KYH25882
SORT i_t179t BY prodh.
ENDIF. " KYH25882
ENDIF. " KYH25882
ENDFORM. " GET_PROD_HIERARCHIES_INFO
&----
*& Form MOVE_PROD_HIERARCHIES_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_prod_hierarchies_info .
IF NOT i_t179t[] IS INITIAL.
SORT i_t179t[] BY prodh.
READ TABLE i_t179t WITH KEY prodh = d_vbrp-prodh BINARY SEARCH.
IF sy-subrc = 0.
d_vbrp-vtext = i_t179t-vtext.
ENDIF.
ENDIF.
ENDFORM. " MOVE_PROD_HIERARCHIES_INFO
&----
*& Form CALL_ZE16
&----
text
----
--> p1 text
<-- p2 text
----
FORM call_ze16 .
DATA: BEGIN OF seltab OCCURS 0.
INCLUDE STRUCTURE rsparams.
DATA: END OF seltab.
seltab-selname = 'I1'.
seltab-kind = 'P'.
seltab-sign = 'I'.
seltab-option = 'EQ'.
seltab-low = zid.
APPEND seltab.
seltab-selname = 'LIST_BRE'.
seltab-kind = 'P'.
seltab-sign = 'I'.
seltab-option = 'EQ'.
seltab-low = '1000'.
APPEND seltab.
seltab-selname = 'MAX_SEL'.
seltab-kind = 'P'.
seltab-sign = 'I'.
seltab-option = 'EQ'.
seltab-low = '9999999'.
APPEND seltab.
CALL FUNCTION 'RS_TABLE_LIST_CREATE'
EXPORTING
table_name = 'ZAR1_DETAIL'
generation_forced = space
TABLES
seltab = seltab.
ENDFORM. " CALL_ZE16
&----
*& Form MOVE_VBRK_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM move_vbrk_info .
CLEAR i_vbrk.
IF NOT i_vbrk[] IS INITIAL. " KYH25882
READ TABLE i_vbrk WITH KEY vbeln = i_vbrp-vbeln.
MOVE i_vbrk-fkdat TO d_vbrp-fkdat.
MOVE i_vbrk-fkart TO d_vbrp-fkart.
MOVE i_vbrk-kunag TO d_vbrp-kunag.
MOVE i_vbrk-vbtyp TO d_vbrp-vbtyp.
MOVE i_vbrk-bstnk_vf TO d_vbrp-bstnk_vf.
ENDIF. " KYH25882
ENDFORM. " MOVE_VBRK_INFO
&----
*& Form RETURN_CAL_SUM
&----
text
----
--> p1 text
<-- p2 text
----
FORM return_cal_sum .
IF i_vbrk-vbtyp EQ 'O'.
i_vbrk-netwr = i_vbrk-netwr * -1.
i_vbrk-partialpmt = i_vbrk-partialpmt * 1.
i_vbrk-opendmbtr = i_vbrk-opendmbtr * -1.
ENDIF.
ENDFORM. " RETURN_CAL_SUM
*--- begin of ppo924234
&----
*& Form DOWNLOAD_FILE
&----
downloading the data to application/presentation server
----
FORM download_file TABLES t_down_tab USING u_down_line.
*
DATA: l_file TYPE string.
CLEAR: l_file.
DATA: tab. "IMR928770
DATA: t_outputline(300).
FIELD-SYMBOLS: <f>.
Column break in excel sheet when runned in background "IMR928770
tab = cl_abap_char_utilities=>horizontal_tab.
IF p_prsfil = 'X'.
MOVE filepath TO l_file.
*--- downloading data into presentation server
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_file
filetype = 'ASC'
write_field_separator = 'X'
dat_mode = 'X'
TABLES
data_tab = t_down_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
*--- downloading data into application server
*********Begin of changes to download and populate the file into its
*respective columns. "IMR928770
OPEN DATASET filepath FOR OUTPUT IN TEXT MODE.
OPEN DATASET filepath FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc = 0.
LOOP AT t_down_tab INTO u_down_line.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE u_down_line TO <f>.
IF sy-subrc NE 0.
EXIT.
ENDIF.
IF sy-index = 1.
MOVE <f> TO t_outputline.
ELSE.
CONCATENATE t_outputline <f> INTO t_outputline SEPARATED BY tab
.
ENDIF.
ENDDO.
Transfer data to excel file
TRANSFER t_outputline TO filepath.
CLEAR t_outputline.
TRANSFER u_down_line TO filepath.
ENDLOOP.
ENDIF.
*End of changes "IMR928770
CLOSE DATASET filepath.
ENDIF.
ENDFORM. " DOWNLOAD_FILE
*--- end of ppo924234
*--- begin of ppo924692
&----
*& Form CALL_VF03
&----
Calling the transactin code VF03 on double clicking on Invoice#
----
FORM call_vf03 USING l_ucomm TYPE sy-ucomm
l_selfield TYPE slis_selfield.
CASE l_ucomm.
WHEN '&IC1'.
IF l_selfield-sel_tab_field = 'I_VBRK-VBELN'.
READ TABLE i_vbrk INDEX l_selfield-tabindex.
CHECK sy-subrc = 0.
SET PARAMETER ID 'VF' FIELD i_vbrk-vbeln.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM. "CALL_VF03
*--- end of ppo924692
KYH25882 BEGIN
&----
*& Form BILLING_FISCAL_YEAR
&----
By using the (FKDAT)Billing date, finding this fiscal year( GJAHR)
which is required,while selecting the data from table BSID and BSAD,
updating internal table I_VBRK.
----
FORM billing_fiscal_year USING p_i_vbrk_fkdat
CHANGING p_v_gjahr.
KRI925987 Begin
FNYEAR = P_I_VBRK_FKDAT.
FNYEAR_PRE = FNYEAR - 1 .
CONCATENATE FNYEAR_PRE '10' '01' INTO FISCAL_YR_BEGN.
CONCATENATE FNYEAR '09' '30' INTO FISCAL_YR_END.
*
*IF P_I_VBRK_FKDAT GE FISCAL_YR_BEGN AND P_I_VBRK_FKDAT LE
*FISCAL_YR_END. "KYH25969
P_V_GJAHR = FNYEAR .
*
ELSEIF P_I_VBRK_FKDAT LT FISCAL_YR_BEGN.
P_V_GJAHR = FNYEAR - 1.
ENDIF.
KRI925987 END.
CLEAR : l_i_fyear.
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
EXPORTING
i_date = p_i_vbrk_fkdat
i_monmit = 00
i_periv = l_e_fyv
IMPORTING
E_BUPER = S_PERD
e_gjahr = l_i_fyear
EXCEPTIONS
input_false = 1
t009_notfound = 2
t009b_notfound = 3
OTHERS = 4 .
p_v_gjahr = l_i_fyear.
ENDFORM. " BILLING_FISCAL_YEAR
&----
*& Form FISCAL_YEAR_CHECK
&----
text
----
FORM fiscal_year_check .
LOOP AT i_vbrk.
PERFORM billing_fiscal_year USING i_vbrk-fkdat CHANGING v_gjahr.
i_vbrk-gjahr = v_gjahr.
MODIFY i_vbrk.
ENDLOOP.
DELETE i_vbrk WHERE NOT gjahr IN zgjahr.
ENDFORM. " FISCAL_YEAR_CHECK
KYH25882 END
&----
*& Form CHECK_SPN
&----
Check for SPN given in selection screen
from VBRP against the invoice number and remove those invoices
which are not having the SPN given on selection screen
*
----
--> p1 text
<-- p2 text
----
FORM check_spn . "KRI926835
SORT i_vbrp BY vbeln.
LOOP AT i_vbrk.
READ TABLE i_vbrp WITH KEY vbeln = i_vbrk-vbeln
BINARY SEARCH.
READ TABLE i_vbrp WITH KEY vbeln = i_vbrk-vbeln.
IF NOT sy-subrc IS INITIAL. "no line items found
DELETE i_vbrk.
CONTINUE.
ENDIF.
ENDLOOP.
ENDFORM. " CHECK_SPN
&----
*& Form spn_get
&----
text
----
FORM spn_get. "IMR928046
DATA : BEGIN OF t_vkgrp ,
vbeln TYPE vbeln,
vkgrp TYPE vkgrp,
END OF t_vkgrp.
DATA: BEGIN OF t_tvgrt OCCURS 0,
vkgrp TYPE vkgrp,
bezei TYPE bezei,
END OF t_tvgrt.
CLEAR: t_vkgrp, t_tvgrt.
IF NOT i_vbrp[] IS INITIAL.
READ TABLE i_vbrp WITH KEY vbeln = i_vbrk-vbeln.
MOVE i_vbrp-vkgrp TO i_vbrk-vkgrp.
ENDIF.
SELECT SINGLE bezei
FROM tvgrt INTO i_vbrk-bezei
WHERE vkgrp = i_vbrk-vkgrp
AND spras = 'E'.
ENDFORM. "spn_get
**********************************************************************
&----
*& Form openinvoices
&----
text
----
--> p1 text
<-- p2 text
----
FORM openinvoices .
ENDFORM. " openinvoices
2007 Mar 21 1:45 PM
Hi
1. Avoid NE in the select(below)
SELECT vbeln fkart vbtyp knumv fkdat bukrs gjahr kdgrp zterm netwr
kunrg kunag
bstnk_vf xblnr mwsbk rfbsk
INTO CORRESPONDING FIELDS OF TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
kunag IN zkunag AND
fkdat IN zfkdat AND
xblnr IN zxblnr AND
bstnk_vf IN zbstnkvf AND
vbtyp IN zvbtyp AND
<b>fksto NE 'X'</b> AND
bukrs IN zbukrs .
Instead delete the entries from the table after u fetch the data into i_vbrk.
2. Avoid using INTO CORRESPONDING FIELDS.
3. before using FOR ALL ENTRIES IN l_tab_temp
sort the internal table withrequired keys.
delete the duplicate entries with those fields.
4. this select APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
is in the DO-ENDDO. if possible move it out of the loop.
use WHILE-ENDWHILE instead of DO-ENDDO.
5. APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
avoid APPENDING clause. u can create temporary internal table and append the entries accordingly.
6. Avoid Move-corresponding.
7. you have used DELETE statement in Loops. try to avoid that.
hope this helps.
**reward if helpful
regards,
madhu
2007 Mar 22 7:31 AM
Hi,
Firstly thank u soo much for going through my coding.
1.The fksto field is removed out of select statement but the time taken for this select statement when checked in ST05 is not much differed from the previous one
2.The into corresponding fields is ok its not an issue any more.
3.There is no use of sorting the table t_tab_temp because it has no duplicate entries in the table because it has unique VBELN.
4.I did'nt got ur DO WHILE logic because the number of entries which the tabel i_vbrk has it loops and fills the table accordingly and deleting before the DO ENDDO i've tried is not possible in my scenario.
5.Appending clause i seriously tried it to remove form the query but this is adding the new entries into the old entries of my table and creating new temporary internal table needs to change so many logic's of my other queries which is really troublesome for me because its an production issue for me.
6.I've tried avoiding MOVE-CORRESPONING with just move its not displaying the output exaclty in its concern field in the Excel file.Cant compromise with this....
You said me to avoid using DO ENDDO LOOPS and asked me to replace with While endwhile can u give me coding corresponding to my logic so that i can avoid using the select statements inside this and could certainly improve the performance i feel because if i could get succeeded with this then i can replace this with almost 3 do enddo loops.Please try getting this and thank u once again......
2007 Mar 22 11:11 AM
Hi,
More over can u let me know which one is better option.I'm appending all the lines of i_vbrk to l_tab_temp instead of all that DO ENDDO loops and pushing all the values of i_vbrk to this table l_tab_temp.In QAS i_vbrk table after fetching has around 1.5 lakhs of entries.And its obvious that it will be more in PRD too so the above option instead of DO ENDDO i'm appending at a time to the above table.I think u must have got why am i appending corresponding fields to the table i_vbrp because of the above issue its gonna append the new values to the table after the old ones each time this probabaly is taking long time and this is the case too against the i_bsad and i_bsid tables.I would be of great help if somebody could suggest a solution out of this.
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |