2008 Jan 03 11:37 AM
hi experts,
My object is an ALV interactive report which also involves 2 batch session and 2 call transaction method .program includes 10 secondary lists. Problem is the performance issue. its very slow while testing. please give tips to improve the performance. select statements are everything fine i took according to the db table which i am using. when i did runtime analysis
abap- 66.1%( red colour)
database --- 29.0%( red colour)
R/3---- 4.9%( green colour)
call u plz suggest whether the performance of the program is good. plz suggest me.
Thanks and Regards,
Ramya
2008 Jan 03 1:07 PM
hi
Abap is 66% means you need to write your code more accurate.
Do SQL trace and check whether any select statements are taking much time.
If select statements are taking more time then need to cross checks the select statements in program. If require (select data from more tables), user for all entries statement or inner join. Use all key fields in select statement.
If select statements are fine in SQL trace, then check rest of the code in you program. If you are using read statement then use binary search for that. Before reading sort those internal tables. Avoid nested loops. Avoid function modules inside the loop. Avoid select statements inside the loop. Avoid MOVE CORRESPONDING in select statement.
Still it is taking more time just past your code. We can check it.
Reward if it is useful.
Thanks.
Siva kumar
2008 Jan 03 1:30 PM
hi siva kumar ,
this is my code
tables: zupi5a,
zfi_restatmt,
zfirestate_log,
t001a,
bgr00, " BTCI Structure.
bbkpf, " Accounting Header.
bbseg, " Acounting Item
bbtax. " Document Taxes (Batch Input Structure).
type-pools slis.
types: begin of ty_data1,
ryear like zupi5a-ryear, "Fiscal year
rbukrs like zupi5a-rbukrs, "Company code
racct like zupi5a-racct, "Account number
rzzps_posid like zupi5a-rzzps_posid, "WBS element
rzzmtit like zupi5a-rzzmtit, "MPM title
rzzmfor like zupi5a-rzzmfor, "MPM format
rzzmatnr like zupi5a-rzzmatnr, "Material number
rzzcou like zupi5a-rzzcou, "Country
rzzfow like zupi5a-rzzfow, "Financial owner
rzzoow like zupi5a-rzzoow, "Operational owner
rzzcon like zupi5a-rzzcon, "Licensee Contract
rzzloc like zupi5a-rzzloc, "Licensor Contract
kostl like zupi5a-kostl, "Cost center
zzfam like zupi5a-zzfam, "Fame Number
zzfor like zupi5a-zzfor, "Format
zzprd like zupi5a-zzprd, "Product Line
zzwin like zupi5a-zzwin, "Window group
zzwig like zupi5a-zzwig, "Window
rtcur like zupi5a-rtcur, "Currency Key
TSL like zupi5a-TSL,
HSL like zupi5a-hSL,
KSL like zupi5a-KSL,
MSL like zupi5a-MSL,
end of ty_data1.
types: begin of ty_data2,
ryear like zupi5a-ryear, "Fiscal year
rbukrs like zupi5a-rbukrs, "Company code
racct like zupi5a-racct, "Account number
rzzps_posid like zupi5a-rzzps_posid, "WBS element
end of ty_data2.
types: begin of ty_final,
ryear like zupi5a-ryear, "Fiscal year
rbukrs like zupi5a-rbukrs, "Company code
racct like zupi5a-racct, "Account number
rzzps_posid like zupi5a-rzzps_posid, "WBS element
rzzmtit like zupi5a-rzzmtit, "MPM title
rzzmfor like zupi5a-rzzmfor, "MPM format
rzzmatnr like zupi5a-rzzmatnr, "Material number
rzzcou like zupi5a-rzzcou, "Country
rzzfow like zupi5a-rzzfow, "Financial owner
rzzoow like zupi5a-rzzoow, "Operational owner
rzzcon like zupi5a-rzzcon, "Licensee Contract
rzzloc like zupi5a-rzzloc, "Licensor Contract
kostl like zupi5a-kostl, "Cost center
rtcur like zupi5a-rtcur, "Currency Key
zzfam like zupi5a-zzfam, "Fame Number
zzfor like zupi5a-zzfor, "Format
zzprd like zupi5a-zzprd, "Product Line
zzwin like zupi5a-zzwin, "Window group
zzwig like zupi5a-zzwig, "Window
tsl like zupi5a-tsl, "Amount Transaction currency
hsl like zupi5a-hsl, "Amount Co. code currency
ksl like zupi5a-ksl, "Amount Group currency
msl like zupi5a-msl, "Quantity
end of ty_final.
types: begin of ty_final1,
ryear like zupi5a-ryear, "Fiscal year
rbukrs like zupi5a-rbukrs, "Company code
racct like zupi5a-racct, "Account number
rzzps_posid like zupi5a-rzzps_posid, "WBS element
end of ty_final1.
types: begin of ty_fidoc,
ryear like zupi5a-ryear, "Fiscal year
rbukrs like zupi5a-rbukrs, "Company code
racct like zupi5a-racct, "Account number
rzzps_posid like zupi5a-rzzps_posid, "WBS element
bschl like bseg-bschl, "Posting key
wrbtr like bseg-wrbtr,
dmbe2 like bseg-dmbe2,
kostl like zupi5a-kostl, "Cost center
rtcur like zupi5a-rtcur, "Currency Key
tsl like zupi5a-tsl, "Amount Transaction currency
hsl like zupi5a-hsl, "Amount Co. code currency
ksl like zupi5a-ksl, "Amount Group currency
msl like zupi5a-msl, "Quantity
end of ty_fidoc.
*----
*
Data
*----
*
data:
i_data type standard table of ty_data,
i_data type standard table of ty_data1,
i_final type standard table of ty_final,
i_final2 type standard table of ty_final,
i_data2 type standard table of ty_data2, **JAGANV
i_data2 type standard table of ty_data1, "**JAGANV
i_final1 type standard table of ty_final1.
data:
wa_data type ty_data1,
wa_final type ty_final,
wa_final2 type ty_final,
wa_data2 type ty_data2,
wa_final1 type ty_final1.
Data : v_lines type i.
data : t_data like zfirestate_log occurs 0 with header line.
************************************************************************
Declaration of Structures *
************************************************************************
DATA:
*-- Structure for Field Catalog
fs_fldcat TYPE slis_fieldcat_alv,
*-- Structure for Events
fs_events TYPE slis_alv_event,
*-- Structure for Headings
fs_comments TYPE slis_listheader.
*********************************************************************
ALV
*********************************************************************
DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
i_fieldcat1 TYPE slis_t_fieldcat_alv,
i_fieldcat2 TYPE slis_t_fieldcat_alv,
i_events TYPE slis_t_event.
DATA: i_top_of_page TYPE slis_t_listheader,
i_top_of_page2 TYPE slis_t_listheader,
i_top_of_page3 TYPE slis_t_listheader,
i_top_of_page4 TYPE slis_t_listheader,
i_top_of_page5 TYPE slis_t_listheader,
i_top_of_page6 TYPE slis_t_listheader,
i_top_of_page7 TYPE slis_t_listheader,
i_top_of_page8 TYPE slis_t_listheader,
i_top_of_page9 TYPE slis_t_listheader,
i_top_of_page10 TYPE slis_t_listheader,
i_top_of_page11 TYPE slis_t_listheader.
DATA: wa_fieldcat TYPE slis_fieldcat_alv,
wa_fieldcat2 TYPE slis_fieldcat_alv.
DATA:
lf_sp_group TYPE slis_t_sp_group_alv, "Gruppentabelle
l_default(1) TYPE c,
l_exit(1) TYPE c, "Importpara. für F4 FB
l_variant LIKE disvariant,"Variant_init.
l_status TYPE slis_formname VALUE 'STANDARD',
l_user_command TYPE slis_formname VALUE 'USER_COMMAND'.
*----
*
Counters
*----
*
data: v_doc_count type i,
v_wtgbtr like coep-wtgbtr,
v_wkgbtr like coep-wkgbtr,
v_wogbtr like coep-wogbtr.
DATA: V_PARAMVALUE LIKE ZWFM_CONTROL_TAB-PARAMVALUE.
*data: v_rtcur like t001-waers.
*----
*
Constants
*----
*
constants: wa_c_formname_top_of_page TYPE slis_formname
VALUE 'TOP_OF_PAGE',
wa_c_formname_top_of_page2 TYPE slis_formname
VALUE 'TOP_OF_PAGE2',
wa_c_formname_top_of_page3 TYPE slis_formname
VALUE 'TOP_OF_PAGE3',
wa_c_formname_top_of_page4 TYPE slis_formname
VALUE 'TOP_OF_PAGE4',
wa_c_formname_top_of_page5 TYPE slis_formname
VALUE 'TOP_OF_PAGE5',
wa_c_formname_top_of_page6 TYPE slis_formname
VALUE 'TOP_OF_PAGE6',
wa_c_formname_top_of_page7 TYPE slis_formname
VALUE 'TOP_OF_PAGE7',
wa_c_formname_top_of_page8 TYPE slis_formname
VALUE 'TOP_OF_PAGE8',
wa_c_formname_top_of_page9 TYPE slis_formname
VALUE 'TOP_OF_PAGE9',
wa_c_formname_top_of_page10 TYPE slis_formname
VALUE 'TOP_OF_PAGE10',
wa_c_formname_top_of_page11 TYPE slis_formname
VALUE 'TOP_OF_PAGE11',
c_x value 'X',
c_40(2) type c value '40',
c_50(2) type c value '50',
c_s type c value 'S',
c_h type c value 'H',
c_onli(4) type c value 'ONLI',
c_obj_type like bkpf-awtyp value 'IBKPF'.
CONSTANTS : lit_ucomm TYPE slis_formname VALUE 'F1000_USERCOMMAND',
" Form name
lit_val(1) TYPE c VALUE '0', " Variable to store zero
lit_tabname TYPE slis_tabname VALUE 'I_FINAL',
" Output Int. Table Name
lit_left(1) TYPE c VALUE 'L', " Left Justification
lit_centre(1) TYPE c VALUE 'C', " Centered
lit_right(1) TYPE c VALUE 'R', " Right Justification
lit_key(1) TYPE c VALUE 'X', " to assign as Key field
lit_typ_h(1) TYPE c VALUE 'H', " Heading line with Bold
lit_typ_s(1) TYPE c VALUE 'S', " Heading line w/o Bold
lit_x(1) TYPE c VALUE 'X', " Flag
LIT_TABNAME1 TYPE SLIS_TABNAME VALUE 'I_ERR'.
CONSTANTS: c_i VALUE 'I',
c_z VALUE 'Z',
c_y VALUE 'Y',
c_fb01(4) VALUE 'FB01',
c_fbs1(4) VALUE 'FBS1',
c_nodata VALUE '/',
c_amph VALUE '&',
c_plus VALUE '+',
c_comma VALUE ',',
c_period VALUE '.',
c_hyphen VALUE '-',
c_gl VALUE 'G',
c_customer VALUE 'C',
c_vendor VALUE 'V',
c_mask(9) VALUE ',.,..' ,
c_zero VALUE '0'.
*CONSTANTS: c_40(2) TYPE n VALUE '40',
c_50(2) TYPE n VALUE '50'.
DATA : ws_flag(1) TYPE c, " Flag
ws_found(1) TYPE c VALUE 'X', " Flag
ws_fieldcat TYPE slis_fieldcat_alv," Work area for fld. catagory
ws_comments TYPE slis_listheader, " Work area for List Heading
ws_tabix LIKE sy-tabix, " Table Index
ws_ind(1) TYPE c, " Flag
ws_trg(1) TYPE c, " Flag
ws_repid LIKE sy-repid, " Program Name
ws_name LIKE trdir-name. " Program Name
DATA : w_num(3) TYPE n,
w_wrbtr LIKE bseg-wrbtr,
w_wrbtr type p DECIMALS 2,
w_wrbtr2 LIKE bseg-wrbtr,
w1_dmbe2 like bseg-dmbe2,
w2_dmbe2 like bseg-dmbe2,
w_total_credit LIKE bseg-wrbtr,
w_total_debit LIKE bseg-wrbtr,
w_first(1) TYPE c,
p_var1(3) type c,
p_var2(3) type c,
p_var3(3) type c,
s_var1(3) type c,
s_var2(3) type c,
s_var3(3) type c,
s_var4(3) type c,
s_var5(3) type c,
t_var1(3) type c,
t_var2(3) type c,
t_var3(3) type c.
*&----
-
*Fields Symbols
*&----
-
FIELD-SYMBOLS : .
*----
*
*macros
*----
*
*macro for fieldcatalog
define add_field.
wa_fieldcat-fieldname = &1.
wa_fieldcat-col_pos = &2.
wa_fieldcat-ddictxt = &3.
wa_fieldcat-seltext_l = &3.
wa_fieldcat-seltext_m = &3.
wa_fieldcat-seltext_s = &3.
wa_fieldcat-reptext_ddic = &3.
wa_fieldcat-ddictxt = 'M'.
wa_fieldcat-ref_fieldname = &4.
wa_fieldcat-ref_tabname = &5.
wa_fieldcat-cfieldname = &6.
wa_fieldcat-ctabname = &7.
append wa_fieldcat to i_fieldcat.
add 1 to &2.
end-of-definition.
define add_field2.
wa_fieldcat2-fieldname = &1.
wa_fieldcat2-col_pos = &2.
wa_fieldcat2-ddictxt = &3.
wa_fieldcat2-seltext_l = &3.
wa_fieldcat2-seltext_m = &3.
wa_fieldcat2-seltext_s = &3.
wa_fieldcat2-reptext_ddic = &3.
wa_fieldcat2-ddictxt = 'M'.
wa_fieldcat2-ref_fieldname = &4.
wa_fieldcat2-ref_tabname = &5.
wa_fieldcat2-cfieldname = &6.
wa_fieldcat2-ctabname = &7.
append wa_fieldcat2 to i_fieldcat2.
add 1 to &2.
end-of-definition.
*----
*
Selection screen
*----
*
selection-screen begin of block one with frame title text-001.
parameters:
p_rldnr like zupi5a-rldnr obligatory default 'Z5', "Ledger
p_rrcty like zupi5a-rrcty obligatory default '0', "Record type
p_rvers like zupi5a-rvers obligatory default '001', "Version
p_ryear like zupi5a-ryear obligatory. "Fiscal year
select-options:
s_rpmax for zupi5a-poper obligatory no-extension. "Period
parameters:
p_rbukrs like zupi5a-rbukrs obligatory. "Company code
p_rtcur like zupi5a-rtcur no-display. "Currency Key
select-options:
s_racct for zupi5a-racct obligatory no-extension, "Account number
s_rbusa for zupi5a-rbusa, "Business area
s_rzzps for zupi5a-rzzps_posid obligatory no intervals, "WBS Element
s_rzmtit for zupi5a-rzzmtit, "MPM title
s_rzmfor for zupi5a-rzzmfor, "MPM format
s_zmatnr for zupi5a-rzzmatnr, "Material number
s_rzzcou for zupi5a-rzzcou, "Country
s_rkunnr for zupi5a-rzzkunnr, "Customer number
s_rzzfow for zupi5a-rzzfow, "Financial owner
s_rzzoow for zupi5a-rzzoow, "Operational owner
s_rzzcon for zupi5a-rzzcon, "Licence contract
s_raufnr for zupi5a-rzzaufnr, "Order number
s_rzzloc for zupi5a-rzzloc, "Licensor contract
s_blart for zupi5a-blart, "Document type
s_zzrrc for zupi5a-zzrrc, "Return reason code
s_zztsc for zupi5a-zztsc, "Type of sales/Sales channel
s_zzfam for zupi5a-zzfam, "Fame number
s_zzfor for zupi5a-zzfor, "Format
s_zzgen for zupi5a-zzgen, "Movie Genre
s_zzprd for zupi5a-zzprd, "Product Line
s_zzfmt for zupi5a-zzfmt, "Price point
s_zzwin for zupi5a-zzwin, "Window group
s_zzwig for zupi5a-zzwig, "Window
s_kostl for zupi5a-kostl. "Cost center
selection-screen end of block one.
*SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE text-t01.
*PARAMETERS:
*SELECTION-SCREEN END OF BLOCK 2.
selection-screen begin of block three with frame title text-t02.
parameters:
p_blart like bkpf-blart , "Doc Type
p_bldat type bkpf-bldat obligatory,
p_budat type bkpf-budat obligatory,
p_monat type bkpf-monat obligatory,
p_gjahr type bkpf-gjahr obligatory,
p_batch LIKE bgr00-group OBLIGATORY,
p_mode LIKE rfpdo-rfbifunct DEFAULT 'B' no-display,
p_filout LIKE rlgrap-filename DEFAULT '/PELINT/fipost' no-display,
p_max(3) TYPE n DEFAULT '900' no-display.
selection-screen end of block three.
*&----
-
INITIALIZATION
*&----
-
INITIALIZATION.
CONCATENATE c_z sy-uname INTO p_batch.
perform set_defaults_parms.
perform set_defaults_curr.
at selection-screen output.
perform set_screen_attributes.
at selection-screen on s_racct.
perform check_racct.
at selection-screen on s_rzzps.
perform check_rzzps.
at selection-screen.
select from_period to_period from_acct
to_acct ryear rbukrs rzzps_posid
from zfirestate_log
into corresponding fields of table t_data
where ryear eq p_ryear
and rbukrs eq p_rbukrs.
and rzzps_posid in s_rzzps.
clear : s_var1,
s_var2,
s_var3,
s_var4,
s_var5.
clear : p_var1,
p_var2,
p_var3,
t_var1,
t_var2,
t_var3.
if not t_data[] is initial.
loop at t_data.
IF p_ryear eq t_data-ryear.
move 'YES' to s_var1.
else.
move 'NO' to s_var1.
ENDIF.
loop at s_rpmax.
if s_rpmax-low LE t_data-from_period.
Move 'YES' to p_var1.
else.
move 'NO' to P_Var1.
endif.
if s_rpmax-low LE t_data-to_period.
Move 'YES' to p_var2.
else.
move 'NO' to P_Var2.
endif.
if s_rpmax-high LT t_data-from_period.
Move 'YES' to p_var3.
else.
move 'NO' to P_Var3.
endif.
if p_var1 ne p_var2
or p_var2 ne p_var3
or p_var1 ne p_var3.
move 'YES' to s_var2.
else.
move 'NO' to s_var2.
endif.
endloop.
IF p_rbukrs eq t_data-rbukrs.
move 'YES' to s_var3.
else.
move 'NO' to s_var3.
ENDIF.
loop at s_racct.
if s_racct-low LE t_data-from_acct.
Move 'YES' to t_var1.
else.
move 'NO' to t_Var1.
endif.
if s_racct-low LE t_data-to_acct.
Move 'YES' to t_var2.
else.
move 'NO' to t_Var2.
endif.
if s_racct-high LT t_data-from_acct.
Move 'YES' to t_var3.
else.
move 'NO' to t_Var3.
endif.
if t_var1 ne t_var2
or t_var2 ne t_var3
or t_var1 ne t_var3.
move 'YES' to s_var4.
else.
move 'NO' to s_var4.
endif.
endloop.
loop at s_rzzps.
IF s_rzzps-low eq t_data-rzzps_posid.
move 'YES' to s_var5.
else.
move 'NO' to s_var5.
ENDIF.
endloop.
if s_var1 eq 'YES'
and s_var2 eq 'YES'
and s_var3 eq 'YES'
and s_var4 eq 'YES'
and s_var5 eq 'YES'.
or s_var1 eq s_var4
or s_var1 eq s_var5
or s_var2 eq s_var4
or s_var2 eq s_var5
or s_var3 eq s_var5.
message e007.
endif.
endloop.
endif.
*----
*
Start of selection
*----
*
start-of-selection.
*Select the data from UPI5T table based on the selection screen
perform get_data.
perform get_data1.
perform ckeck_data.
*Populate the final internal table
perform populate_final_table.
perform populate_final1_table.
end-of-selection.
if not i_final[] is initial.
*build field catalog
perform build_catalog.
perform build_header_comment using i_top_of_page[] 1.
perform alv_eventtab_build USING i_events
wa_c_formname_top_of_page.
perform alv_gui_status using i_events.
perform alv_call_back using i_events.
perform show_output.
else.
MESSAGE I001. "NO DATA FOUND FOR THE SELECTION
STOP.
endif.
*&----
*
*& Form check_racct
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM check_racct.
if s_racct-low LT 40000000 or s_racct-low GT 79999999
or s_racct-high GT 79999999.
message e000.
endif.
ENDFORM. " check_racct
*&----
*
*& Form get_data
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM get_data.
Select the data from zupi5a table based on the selection screen
select ryear rbukrs racct rzzps_posid rzzmtit
rzzmfor rzzmatnr rzzcou rzzfow rzzoow rzzcon
rzzloc kostl
zzfam zzfor zzprd zzwin zzwig
rtcur
tsl01 tsl02
tsl03 tsl04 tsl05 tsl06 tsl07 tsl08 tsl09 tsl10 tsl11
tsl12 tsl13 tsl14 tsl15 tsl16
hsl01 hsl02 hsl03 hsl04
hsl05 hsl06 hsl07 hsl08 hsl09 hsl10 hsl11 hsl12 hsl13
hsl14 hsl15 hsl16
ksl01 ksl02 ksl03 ksl04 ksl05 ksl06
ksl07 ksl08 ksl09 ksl10 ksl11 ksl12 ksl13 ksl14 ksl15
ksl16 msl01 msl02 msl03 msl04 msl05 msl06 msl07 msl08
msl09 msl10 msl11 msl12 msl13 msl14 msl15 msl16
from zupi5a
into table i_data
where rldnr = p_rldnr
and rrcty = p_rrcty
and rvers = p_rvers
and ryear = p_ryear
and rtcur = p_rtcur
and rpmax in s_rpmax
and POPER in s_rpmax
and rbukrs = p_rbukrs
and racct in s_racct
and rbusa in s_rbusa
and rzzps_posid in s_rzzps
and rzzmtit in s_rzmtit
and rzzmfor in s_rzmfor
and rzzmatnr in s_zmatnr
and rzzcou in s_rzzcou
and rzzkunnr in s_rkunnr
and rzzfow in s_rzzfow
and rzzoow in s_rzzoow
and rzzcon in s_rzzcon
and rzzaufnr in s_raufnr
and rzzcon in s_rzzloc
and blart in s_blart
and zzrrc in s_zzrrc
and zztsc in s_zztsc
and zzfam in s_zzfam
and zzfor in s_zzfor
and zzgen in s_zzgen
and zzprd in s_zzprd
and zzfmt in s_zzfmt
and zzwin in s_zzwin
and zzwig in s_zzwig
and kostl in s_kostl.
select ryear rbukrs racct rzzps_posid rzzmtit
rzzmfor rzzmatnr rzzcou rzzfow rzzoow rzzcon
rzzloc kostl
zzfam zzfor zzprd zzwin zzwig
rtcur
TSL HSL KSL MSL
from zupi5a
into table i_data bypassing buffer
where rldnr = p_rldnr
and rrcty = p_rrcty
and rvers = p_rvers
and ryear = p_ryear
and rtcur = p_rtcur
and rpmax in s_rpmax
and POPER in s_rpmax
and rbukrs = p_rbukrs
and racct in s_racct
and rbusa in s_rbusa
and rzzps_posid in s_rzzps
and rzzmtit in s_rzmtit
and rzzmfor in s_rzmfor
and rzzmatnr in s_zmatnr
and rzzcou in s_rzzcou
and rzzkunnr in s_rkunnr
and rzzfow in s_rzzfow
and rzzoow in s_rzzoow
and rzzcon in s_rzzcon
and rzzaufnr in s_raufnr
and rzzcon in s_rzzloc
and blart in s_blart
and zzrrc in s_zzrrc
and zztsc in s_zztsc
and zzfam in s_zzfam
and zzfor in s_zzfor
and zzgen in s_zzgen
and zzprd in s_zzprd
and zzfmt in s_zzfmt
and zzwin in s_zzwin
and zzwig in s_zzwig
and kostl in s_kostl.
if sy-subrc NE 0.
message i001.
endif.
ENDFORM. " get_data
*&----
*
*& Form populate_final_table
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM populate_final_table.
loop at i_data into wa_data.
wa_final-ryear = wa_data-ryear.
wa_final-rbukrs = wa_data-rbukrs.
wa_final-racct = wa_data-racct.
wa_final-rzzps_posid = wa_data-rzzps_posid.
wa_final-rzzmtit = wa_data-rzzmtit.
wa_final-rzzmfor = wa_data-rzzmfor.
wa_final-rzzmatnr = wa_data-rzzmatnr.
wa_final-rzzcou = wa_data-rzzcou.
wa_final-rzzfow = wa_data-rzzfow.
wa_final-rzzoow = wa_data-rzzoow.
wa_final-rzzcon = wa_data-rzzcon.
wa_final-rzzloc = wa_data-rzzloc.
wa_final-kostl = wa_data-kostl.
wa_final-zzfam = wa_data-zzfam.
wa_final-zzfor = wa_data-zzfor.
wa_final-zzprd = wa_data-zzprd.
wa_final-zzwin = wa_data-zzwin.
wa_final-zzwig = wa_data-zzwig.
wa_final-rtcur = wa_data-rtcur.
wa_final-tsl = wa_data-tsl01 + wa_data-tsl02 + wa_data-tsl03
*+
wa_data-tsl04 + wa_data-tsl05 + wa_data-tsl06
*+
wa_data-tsl07 + wa_data-tsl08 + wa_data-tsl09
*+
wa_data-tsl10 + wa_data-tsl11 + wa_data-tsl12
*+
wa_data-tsl13 + wa_data-tsl14 + wa_data-tsl15
*+
wa_data-tsl16.
wa_final-hsl = wa_data-hsl01 + wa_data-hsl02 + wa_data-hsl03
*+
wa_data-hsl04 + wa_data-hsl05 + wa_data-hsl06
*+
wa_data-hsl07 + wa_data-hsl08 + wa_data-hsl09
*+
wa_data-hsl10 + wa_data-hsl11 + wa_data-hsl12
*+
wa_data-hsl13 + wa_data-hsl14 + wa_data-hsl15
*+
wa_data-hsl16.
*
wa_final-ksl = wa_data-ksl01 + wa_data-ksl02 + wa_data-ksl03
*+
wa_data-ksl04 + wa_data-ksl05 + wa_data-ksl06
*+
wa_data-ksl07 + wa_data-ksl08 + wa_data-ksl09
*+
wa_data-ksl10 + wa_data-ksl11 + wa_data-ksl12
*+
wa_data-ksl13 + wa_data-ksl14 + wa_data-ksl15
*+
wa_data-ksl16.
*
wa_final-msl = wa_data-msl01 + wa_data-msl02 + wa_data-msl03
*+
wa_data-msl04 + wa_data-msl05 + wa_data-msl06
*+
wa_data-msl07 + wa_data-msl08 + wa_data-msl09
*+
wa_data-msl10 + wa_data-msl11 + wa_data-msl12
*+
wa_data-msl13 + wa_data-msl14 + wa_data-msl15
*+
wa_data-msl16.
wa_final-tsl = wa_data-tsl.
wa_final-hsl = wa_data-hsl.
wa_final-ksl = wa_data-ksl.
wa_final-mSL = wa_data-mSL.
append wa_final to i_final.
clear : wa_final-ryear,
wa_final-rbukrs, wa_final-racct,
wa_final-rzzps_posid, wa_final-rzzmtit, wa_final-rzzmfor,
wa_final-rzzmatnr, wa_final-rzzcou,
wa_final-rzzfow, wa_final-rzzoow, wa_final-rzzcon,
wa_final-rzzloc,
wa_final-kostl,
wa_final-zzfam,
wa_final-zzfor,
wa_final-zzprd, wa_final-zzwin,
wa_final-zzwig,
wa_final-rtcur,
wa_final-tsl,
wa_final-hsl, wa_final-ksl, wa_final-msl.
endloop.
ENDFORM. " populate_final_table
*&----
*
*& Form build_catalog
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM build_catalog.
data: l_pos type i.
l_pos = 1.
add_field 'RYEAR' l_pos 'Fiscal Year'(002) 'RYEAR' 'zupi5a' '' ''.
add_field 'RBUKRS' l_pos 'Company Code'(003) 'RBUKRS' 'zupi5a' '' ''.
add_field 'RACCT' l_pos 'Account Number'(004) 'RACCT' 'zupi5a' '' ''.
add_field 'RZZPS_POSID' l_pos 'WBS Element'(005) 'RZZPS_POSID'
'ZUPI5T' '' ''.
add_field 'RZZMTIT' l_pos 'MPM title'(006) 'RZZMTIT' 'zupi5a' '' ''.
add_field 'RZZMFOR' l_pos 'MPM Format'(007) 'RZZMFOR' 'zupi5a' '' ''.
add_field 'RZZMATNR' l_pos 'Material'(008) 'RZZMATNR' 'zupi5a' '' ''.
add_field 'RZZCOU' l_pos 'Country'(009) 'RZZCOU' 'zupi5a' '' ''.
add_field 'RZZFOW' l_pos 'Financial owner'(010) 'RZZFOW' 'zupi5a' ''
''.
add_field 'RZZOOW' l_pos 'Operational owner'(011) 'RZZOOW' 'zupi5a' ''
''.
add_field 'RZZCON' l_pos 'Licensee Contract'(012) 'RZZCON' 'zupi5a' ''
''.
add_field 'RZZLOC' l_pos 'Licensor Contract'(013) 'RZZLOC' 'zupi5a' ''
''.
add_field 'KOSTL' l_pos 'Cost Center'(014) 'KOSTL' 'zupi5a' '' ''.
add_field 'ZZFAM' l_pos 'Fame Number'(015) 'ZZFAM' 'zupi5a' '' ''.
add_field 'ZZFOR' l_pos 'Format'(016) 'ZZFOR' 'zupi5a' '' ''.
add_field 'ZZPRD' l_pos 'Product Line'(017) 'ZZPRD' 'zupi5a' '' ''.
add_field 'ZZWIN' l_pos 'Window Group'(018) 'ZZWIN' 'zupi5a' '' ''.
add_field 'ZZWIG' l_pos 'Window'(019) 'ZZWIG' 'zupi5a' '' ''.
add_field 'RTCUR' l_pos 'Currency'(020) 'RTCUR' 'zupi5a' '' ''.
add_field 'TSL' l_pos 'Amt. Transactn curr.'(021) '' '' '' ''.
add_field 'HSL' l_pos 'Amt. Co. Cd. currency'(022) '' '' '' ''.
add_field 'KSL' l_pos 'Amt. Group currency'(023) '' '' '' ''.
add_field 'MSL' l_pos 'Quantity'(024) '' '' '' ''.
ENDFORM. " build_catalog
*&----
*
*& Form show_output
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM show_output.
DATA: ws_repid LIKE sy-repid.
DATA: ws_filter TYPE slis_t_filter_alv.
ws_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = ws_repid
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_save = 'X'
it_fieldcat = i_fieldcat[]
it_events = i_events[]
TABLES
t_outtab = i_final.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " show_output
*----
*
FORM TOP_OF_PAGE *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page[].
ENDFORM. " TOP_OF_PAGE
*&----
*
*& Form alv_gui_status
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status USING P_I_EVENTS type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status
*&----
*
*& Form PF_STATUS_SET
*&----
*
text
*----
*
form pf_status_set using t_extab.
set pf-status 'ZFI_RESTMT'.
endform. " PF_STATUS_SET
*&----
*
*& Form alv_call_back
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back USING P_I_EVENTS type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back
*&----
*
*& Form USER_COMMAND
*&----
*
text
*----
*
form user_command using ucomm like sy-ucomm
selfield type slis_selfield.
case ucomm.
when 'SUMZ'.
perform summarize_final_table.
endcase.
endform. " USER_COMMAND
*&----
*
*& Form SUMMARIZE_AND_PRODUCE_FINAL_TA
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM summarize_final_table.
Copy the final table to another internal table and summarize.
*i_final2[] = i_final[].
sort i_final by rzzps_posid.
clear wa_final.
clear i_final2[].
loop at i_final into wa_final.
collect wa_final into i_final2.
clear wa_final.
endloop.
if not i_final2[] is initial.
perform build_header_comment using i_top_of_page2[] 2.
perform alv_eventtab_build USING i_events
wa_c_formname_top_of_page2 .
perform alv_gui_status1 using i_events.
perform alv_call_back1 using i_events.
perform show_output_rep.
else.
MESSAGE I001. "NO DATA FOUND FOR THE SELECTION
STOP.
endif.
ENDFORM. " summarize_final_table
*&----
*
*& Form show_output_rep
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM show_output_rep.
DATA: ws_repid LIKE sy-repid.
DATA: ws_filter TYPE slis_t_filter_alv.
ws_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = ws_repid
I_STRUCTURE_NAME = itab4
i_callback_pf_status_set = 'ZSS_CO' "STANDASPL
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE2'
*
i_callback_user_command = 'USER_COMMAND'
i_save = 'X'
it_fieldcat = i_fieldcat[]
it_events = i_events[]
TABLES
t_outtab = i_final2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " show_output_rep
*&----
*
*& Form alv_gui_status1
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status1 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET1' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status1
*&----
*
*& Form PF_STATUS_SET1
*&----
*
text
*----
*
form pf_status_set1 using t_extab.
set pf-status 'ZFI_RESTMT1'.
endform. " PF_STATUS_SET1
*&----
*
*& Form alv_call_back1
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back1 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND1' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back1
*&----
*
*& Form USER_COMMAND
*&----
*
text
*----
*
form user_command1 using ucomm like sy-ucomm
selfield type slis_selfield.
case ucomm.
when 'LOCK'.
export i_final2 to memory id 'table'.
export p_rbukrs to memory id 'BUKRSID'.
submit zfi_lock_wbs_elements and return.
commit work.
message i002.
if not i_final2[] is initial.
perform build_header_comment using i_top_of_page3[] 3.
perform alv_eventtab_build USING i_events
wa_c_formname_top_of_page3 .
perform alv_gui_status2 using i_events.
perform alv_call_back2 using i_events.
perform show_output_rep3.
else.
MESSAGE I001. "NO DATA FOUND FOR THE SELECTION
STOP.
endif.
endcase.
endform. " USER_COMMAND1
*&----
*
*& Form simulate_and_display_fi_entry
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM simulate_and_display_fi_entry.
data: i_final3 type standard table of ty_fidoc,
v_final2 type ty_final.
data: v_account like zfi_acct_assign-hkont.
data: wa_final3 type ty_fidoc.
data: v_balance_t like zupi5a-tsl,
v_balance_c like zupi5a-hsl,
v_balance_g like zupi5a-ksl.
data: v_rtcur like zupi5a-rtcur.
data: v_cnt type i value 0,
v_cnt1 type i value 0,
n type i.
clear: wa_final3,
v_balance_t,
v_balance_c,
v_balance_g.
sort i_final2 by rtcur.
describe table i_final2 lines n.
delete i_final2 where hsl = 0.
delete i_final2 where hsl < 0 and ksl > '-0.01'.
delete i_final2 where hsl > '-0.01' and ksl < '0.01'.
loop at i_final2 into wa_final2.
v_cnt = sy-tabix + 1.
v_cnt1 = v_cnt1 + 1.
clear wa_final3.
clear v_final2.
v_final2 = wa_final2.
wa_final3-ryear = wa_final2-ryear.
wa_final3-rbukrs = wa_final2-rbukrs.
wa_final3-racct = wa_final2-racct.
wa_final3-rzzps_posid = wa_final2-rzzps_posid.
wa_final3-kostl = wa_final2-kostl.
wa_final3-rtcur = wa_final2-rtcur.
wa_final3-tsl = ( wa_final2-tsl ) * -1. "changes
wa_final3-hsl = ( wa_final2-hsl ) * -1.
wa_final3-ksl = ( wa_final2-ksl ) * -1.
wa_final3-msl = ( wa_final2-msl ) * -1. "changes
if ( wa_final2-tsl GT 0 ). "changes
if ( wa_final3-tsl GT 0 ).
wa_final3-bschl = '40'.
else.
wa_final3-bschl = '50'.
endif.
v_balance_t = v_balance_t + wa_final3-tsl. "changes
v_balance_c = v_balance_c + wa_final3-hsl.
v_balance_g = v_balance_g + wa_final3-ksl. "changes
append wa_final3 to i_final3.
endloop.
wa_final3-ryear = wa_final2-ryear.
wa_final3-rbukrs = wa_final2-rbukrs.
To read the GL account from the ZFI_ACCT_ASSIGN table for the
balancing entry
SELECT single hkont
INTO v_account
FROM zfi_acct_assign
WHERE bukrs EQ p_rbukrs.
if sy-subrc EQ 0.
wa_final3-racct = v_account.
endif.
clear wa_final3-rzzps_posid.
clear wa_final3-kostl.
clear wa_final3-msl.
To balance the FI entry add the balancing entry.
if ( v_balance_t GT 0 ).
v_balance_t = ( v_balance_t * -1 ).
v_balance_c = ( v_balance_c * -1 ).
v_balance_g = ( v_balance_g * -1 ).
wa_final3-tsl = v_balance_t.
wa_final3-hsl = v_balance_c.
wa_final3-ksl = v_balance_g.
wa_final3-bschl = '50'.
else.
v_balance_t = ( v_balance_t * -1 ).
v_balance_c = ( v_balance_c * -1 ).
v_balance_g = ( v_balance_g * -1 ).
wa_final3-tsl = v_balance_t.
wa_final3-hsl = v_balance_c.
wa_final3-ksl = v_balance_g.
wa_final3-bschl = '40'.
endif.
wa_final3-rtcur = wa_final2-rtcur.
append wa_final3 to i_final3.
clear wa_final3.
if not i_final3[] is initial.
perform build_catalog2.
perform build_header_comment using i_top_of_page6[] 6.
perform alv_eventtab_build USING i_events wa_c_formname_top_of_page6.
export i_final3 to memory id 'table1'.
perform alv_gui_status5 using i_events.
perform alv_call_back5 using i_events.
perform show_output_fidoc.
endif.
ENDFORM. " simulate_and_display_fi_entry
*&----
*
*& Form build_catalog2
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM build_catalog2.
data: l_pos type i.
clear i_fieldcat2.
l_pos = 1.
add_field2 'RYEAR' l_pos 'Fiscal Year'(002) 'RYEAR' 'zupi5a' '' ''.
add_field2 'RBUKRS' l_pos 'Company Code'(003) 'RBUKRS' 'zupi5a' '' ''.
add_field2 'RACCT' l_pos 'Account Number'(004) 'RACCT' 'zupi5a' '' ''.
add_field2 'RZZPS_POSID' l_pos 'WBS Element'(005) 'RZZPS_POSID'
'zupi5a' '' ''.
add_field2 'KOSTL' l_pos 'Cost Center'(027) 'KOSTL' 'zupi5a' '' ''.
add_field2 'RTCUR' l_pos 'Currency'(020) 'RTCUR' 'zupi5a' '' ''.
add_field2 'TSL' l_pos 'Amt. Transactn curr.'(021) '' '' '' ''.
add_field2 'HSL' l_pos 'Amt. Co. Cd. currency'(022) '' '' '' ''.
add_field2 'KSL' l_pos 'Amt. Group currency'(023) '' '' '' ''.
add_field2 'BSCHL' l_pos 'Posting Key'(025) 'BSCHL' 'BSEG' '' ''.
add_field2 'MSL' l_pos 'Quantity'(026) '' '' '' ''.
ENDFORM. " build_catalog2
*&----
*
*& Form show_output_fidoc
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM show_output_fidoc.
types: begin of ty_fidoc,
ryear like zupi5a-ryear, "Fiscal year
rbukrs like zupi5a-rbukrs, "Company code
racct like zupi5a-racct, "Account number
rzzps_posid like zupi5a-rzzps_posid, "WBS element
bschl like bseg-bschl, "Posting key
wrbtr like bseg-wrbtr,
dmbe2 like bseg-dmbe2,
rzzmtit like zupi5a-rzzmtit, "MPM title
rzzmfor like zupi5a-rzzmfor, "MPM format
rzzmatnr like zupi5a-rzzmatnr, "Material number
rzzcou like zupi5a-rzzcou, "Country
rzzfow like zupi5a-rzzfow, "Financial owner
rzzoow like zupi5a-rzzoow, "Operational owner
rzzcon like zupi5a-rzzcon, "Licensee Contract
rzzloc like zupi5a-rzzloc, "Licensor Contract
kostl like zupi5a-kostl, "Cost center
zzfam like zupi5a-zzfam, "Fame Number
zzfor like zupi5a-zzfor, "Format
zzprd like zupi5a-zzprd, "Product Line
zzwin like zupi5a-zzwin, "Window group
zzwig like zupi5a-zzwig, "Window
kostl like zupi5a-kostl, "Cost center
rtcur like zupi5a-rtcur, "Currency Key
tsl like zupi5a-tsl, "Amount Transaction currency
hsl like zupi5a-hsl, "Amount Co. code currency
ksl like zupi5a-ksl, "Amount Group currency
msl like zupi5a-msl, "Quantity
end of ty_fidoc.
DATA: ws_repid LIKE sy-repid.
DATA: ws_filter TYPE slis_t_filter_alv.
data: j_final3 type standard table of ty_fidoc.
ws_repid = sy-repid.
import i_final3 to j_final3 from memory id 'table1'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = ws_repid
i_callback_user_command = 'USER_COMMAND'
i_save = 'X'
it_fieldcat = i_fieldcat2[]
it_events = i_events[]
TABLES
t_outtab = j_final3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " show_output_fidoc
*&----
*
*& Form alv_gui_status2
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status2 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET2' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status2
*&----
*
*& Form PF_STATUS_SET2
*&----
*
text
*----
*
form pf_status_set2 using t_extab.
set pf-status 'ZFI_RESTMT2'.
endform. " PF_STATUS_SET2
*&----
*
*& Form alv_call_back2
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back2 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND2' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back2
*&----
*
*& Form USER_COMMAND2
*&----
*
text
*----
*
form user_command2 using ucomm like sy-ucomm
selfield type slis_selfield.
data: j_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
case ucomm.
when 'CZFI'.
export i_final2 to memory id 'table'.
submit zfi_lock_wbs_elements and return.
commit work.
import i_final3 to j_final3 from memory id 'table1'.
submit z_change_fi_sl and return.
commit work.
CALL FUNCTION 'COPF_CALL_TRANSACTION'
EXPORTING
TCODE = 'SM30'
NEW_SESSION = 'X'.
when 'SKIP'.
perform display_secondary_list_3.
if not i_final2[] is initial.
perform build_header_comment using i_top_of_page4[] 4.
perform alv_eventtab_build USING i_events
wa_c_formname_top_of_page4 .
perform alv_gui_status3 using i_events.
perform alv_call_back3 using i_events.
perform show_output_rep3.
else.
MESSAGE I001. "NO DATA FOUND FOR THE SELECTION
STOP.
endif.
endcase.
endform. " USER_COMMAND2
*&----
*
*& Form build_header_comment
*&----
*
text
*----
*
-->P_I_TOP_OF_PAGE[] text
*----
*
FORM build_header_comment USING p_i_top_of_page TYPE
slis_t_listheader n.
DATA: ws_line TYPE slis_listheader.
case n.
when 1.
clear ws_line.
ws_line-typ = 'H'.
ws_line-key = 'REPORT NAME'.
ws_line-info = 'STEPS TO EXECUTE'.
APPEND ws_line to p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 1 :'.
ws_line-info = 'SUMMARIZE'.
APPEND ws_line to p_i_top_of_page.
when 2.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 2 :'.
ws_line-info = 'LOCK WBS'.
APPEND ws_line to p_i_top_of_page.
when 3.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 3 :'.
ws_line-info = 'CHANGE WBS ELEMENTS IN ZFI_SL'.
APPEND ws_line to p_i_top_of_page.
when 4.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 4 :'.
ws_line-info = 'CHANGE PROFIT CENTER'.
APPEND ws_line to p_i_top_of_page.
when 5.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 5 :'.
ws_line-info = 'SIMULATE FI ENTRY'.
APPEND ws_line to p_i_top_of_page.
when 6.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 6 :'.
ws_line-info = 'FI ENTRY PART 1 CREATE BATCH SESSION'.
APPEND ws_line to p_i_top_of_page.
when 7.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 7 :'.
ws_line-info = 'RESTORE ZFI_SL TABLE'.
APPEND ws_line to p_i_top_of_page.
when 8.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 8 :'.
ws_line-info = 'RESTORE PROFIT CENTER'.
APPEND ws_line to p_i_top_of_page.
when 9.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 9 :'.
ws_line-info = 'SIMULATE FI ENTRY - PART 2'.
APPEND ws_line to p_i_top_of_page.
when 10.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'Step 10 :'.
ws_line-info = 'FI ENTRY - PART 2 CREATE BATCH SESSION'.
APPEND ws_line to p_i_top_of_page.
when 11.
clear p_i_top_of_page.
clear ws_line.
ws_line-typ = 'S'.
ws_line-key = 'STEP 11 :'.
ws_line-info = 'UNLOCK WBS ELEMENTS'.
APPEND ws_line to p_i_top_of_page.
endcase.
ENDFORM. " build_header_comment
*----
*
FORM TOP_OF_PAGE2 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE2.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page2[].
ENDFORM. " TOP_OF_PAGE2
*&----
*
*& Form alv_eventtab_build
*&----
*
text
*----
*
-->P_I_EVENTS text
-->P_WA_C_FORMNAME_TOP_OF_PAGE text
*----
*
FORM alv_eventtab_build USING p_i_events TYPE slis_t_event
p_wa_c_formname_top_of_page.
data: ls_event type slis_alv_event, idx like sy-tabix.
call function 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_i_events.
read table p_i_events with key name = slis_ev_top_of_page
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move p_wa_c_formname_top_of_page to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_eventtab_build
*----
*
FORM TOP_OF_PAGE2 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE3.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page3[].
ENDFORM. " TOP_OF_PAGE3
*&----
*
*& Form show_output_rep3
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM show_output_rep3.
DATA: ws_repid LIKE sy-repid.
DATA: ws_filter TYPE slis_t_filter_alv.
ws_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = ws_repid
I_STRUCTURE_NAME = itab4
i_callback_pf_status_set = 'ZSS_CO' "STANDASPL
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE3'
*
i_callback_user_command = 'USER_COMMAND'
i_save = 'X'
it_fieldcat = i_fieldcat[]
it_events = i_events[]
TABLES
t_outtab = i_final2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " show_output_rep3
*&----
*
*& Form alv_gui_status3
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status3 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET3' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status3
*&----
*
*& Form PF_STATUS_SET3
*&----
*
text
*----
*
form pf_status_set3 using t_extab.
set pf-status 'ZFI_RESTMT3'.
endform. " PF_STATUS_SET3
*&----
*
*& Form alv_call_back3
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back3 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND3' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back3
*&----
*
*& Form USER_COMMAND3
*&----
*
text
*----
*
form user_command3 using ucomm like sy-ucomm
selfield type slis_selfield.
data: j_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
case ucomm.
when 'CPCV'.
CALL FUNCTION 'COPF_CALL_TRANSACTION'
EXPORTING
TCODE = 'CJ12'
NEW_SESSION = 'X'.
when 'SKIP'.
perform display_secondary_list_4.
endcase.
endform. " USER_COMMAND3
*----
*
FORM TOP_OF_PAGE4 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE4.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page4[].
ENDFORM. " TOP_OF_PAGE4
*&----
*
*& Form show_output_rep4
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM show_output_rep4.
DATA: ws_repid LIKE sy-repid.
DATA: ws_filter TYPE slis_t_filter_alv.
ws_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = ws_repid
I_STRUCTURE_NAME = itab4
i_callback_pf_status_set = 'ZSS_CO' "STANDASPL
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE4'
*
i_callback_user_command = 'USER_COMMAND'
i_save = 'X'
it_fieldcat = i_fieldcat[]
it_events = i_events[]
TABLES
t_outtab = i_final2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " show_output_rep4
*&----
*
*& Form display_secondary_list_3
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM display_secondary_list_3.
if not i_final2[] is initial.
perform build_header_comment using i_top_of_page4[] 4.
perform alv_eventtab_build USING i_events
wa_c_formname_top_of_page4 .
perform alv_gui_status3 using i_events.
perform alv_call_back3 using i_events.
perform show_output_rep3.
else.
MESSAGE I001. "NO DATA FOUND FOR THE SELECTION
STOP.
endif.
ENDFORM. " display_secondary_list_3
*----
*
FORM TOP_OF_PAGE5 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE5.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page5[].
ENDFORM. " TOP_OF_PAGE5
*&----
*
*& Form alv_gui_status4
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status4 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET4' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status4
*&----
*
*& Form PF_STATUS_SET4
*&----
*
text
*----
*
form pf_status_set4 using t_extab.
set pf-status 'ZFI_RESTMT4'.
endform. " PF_STATUS_SET4
*&----
*
*& Form alv_call_back4
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back4 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND4' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back4
*&----
*
*& Form USER_COMMAND4
*&----
*
text
*----
*
form user_command4 using ucomm like sy-ucomm
selfield type slis_selfield.
data: j_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
case ucomm.
when 'SIMU'.
perform simulate_and_display_fi_entry.
message i605.
endcase.
endform. " USER_COMMAND4
*&----
*
*& Form show_output_rep5
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM show_output_rep5.
DATA: ws_repid LIKE sy-repid.
DATA: ws_filter TYPE slis_t_filter_alv.
ws_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = ws_repid
I_STRUCTURE_NAME = itab4
i_callback_pf_status_set = 'ZSS_CO' "STANDASPL
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE5'
*
i_callback_user_command = 'USER_COMMAND'
i_save = 'X'
it_fieldcat = i_fieldcat[]
it_events = i_events[]
TABLES
t_outtab = i_final2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " show_output_rep5
*&----
*
*& Form display_secondary_list_4
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM display_secondary_list_4.
if not i_final2[] is initial.
perform build_header_comment using i_top_of_page5[] 5.
perform alv_eventtab_build USING i_events
wa_c_formname_top_of_page5 .
perform alv_gui_status4 using i_events.
perform alv_call_back4 using i_events.
perform show_output_rep5.
else.
MESSAGE I001. "NO DATA FOUND FOR THE SELECTION
STOP.
endif.
ENDFORM. " display_secondary_list_4
*&----
*
*& Form alv_gui_status5
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status5 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET5' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status5
*&----
*
*& Form PF_STATUS_SET5
*&----
*
text
*----
*
form pf_status_set5 using t_extab.
set pf-status 'ZFI_RESTMT5'.
endform. " PF_STATUS_SET5
*&----
*
*& Form alv_call_back5
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back5 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND5' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back5
*&----
*
*& Form USER_COMMAND5
*&----
*
text
*----
*
form user_command5 using ucomm like sy-ucomm
selfield type slis_selfield.
data: k_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
data: v_range(2),
v_NewBatch(10) type c.
CONSTANTS : c_range_obj(10) value 'ZFIRESTATE'.
.
case ucomm.
when 'CRBS'. "Create a Session to be processed Via
"SM35
Create a new batch ID every time the program is called.
SELECT SINGLE nrnr
INTO v_range
FROM zfi_bukrs_range
WHERE bukrs = p_rbukrs.
if sy-subrc EQ 0.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = v_range
object = c_range_obj
IMPORTING
number = v_NewBatch
EXCEPTIONS
INTERVAL_NOT_FOUND = 1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND = 3
QUANTITY_IS_0 = 4
QUANTITY_IS_NOT_1 = 5
INTERVAL_OVERFLOW = 6
BUFFER_OVERFLOW = 7
OTHERS = 8.
endif.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
condense v_NewBatch.
ENDIF.
EXPORT v_NewBatch TO MEMORY ID 'bid'.
Populate the entries into Zfi_restatmt table.
loop at i_final2 into wa_final2.
perform update_ref_table.
endloop.
commit work.
Populate the entries into zfirestate_log.
loop at i_final1 into wa_final1.
perform update_ref_table1.
endloop.
commit work.
*
import i_final3 to k_final3 from memory id 'table1'.
Delete all the entries whose transaction currency is 0.00
delete k_final3 where tsl EQ 0.
perform create_session using k_final3.
message i010.
if not k_final3[] is initial.
perform build_catalog2.
perform build_header_comment using i_top_of_page7[] 7.
perform alv_eventtab_build
USING i_events wa_c_formname_top_of_page7.
export k_final3 to memory id 'table2'.
perform alv_gui_status6 using i_events.
perform alv_call_back6 using i_events.
perform show_output_fidoc1.
endif.
message i605.
endcase.
endform. " USER_COMMAND5
*----
*
FORM TOP_OF_PAGE2 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE6.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page6[].
ENDFORM. " TOP_OF_PAGE6
*&----
*
*& Form create_session
*&----
*
text
*----
*
-->P_I_FINAL3 text
*----
*
FORM create_session USING P_I_FINAL3.
data : l_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
data : flag type c,
flag1 type c,
v_NewBatch(12) type c.
l_final3 = p_i_final3.
Amounts converted to positive values since BDC accepts only positive
values
loop at l_final3 into wa_final3.
clear flag.
IF ( wa_final3-tsl LT 0 ).
wa_final3-tsl = wa_final3-tsl * -1.
flag = 'X'.
ENDIF.
IF ( wa_final3-hsl LT 0 ).
wa_final3-hsl = wa_final3-hsl * -1.
flag = 'X'.
ENDIF.
IF ( wa_final3-ksl LT 0 ).
wa_final3-ksl = wa_final3-ksl * -1.
flag = 'X'.
ENDIF.
IF ( wa_final3-msl LT 0 ).
wa_final3-msl = wa_final3-msl * -1.
flag = 'X'.
ENDIF.
IF flag EQ 'X'.
MODIFY TABLE l_final3 from wa_final3
TRANSPORTING tsl hsl ksl msl.
MODIFY l_final3 from wa_final3 index sy-tabix
TRANSPORTING tsl hsl ksl msl.
ENDIF.
endloop.
Open the temp file to be used by BTCI
perform open_fileout.
PERFORM f_fill_bgr00.
read table l_final3 into wa_final3 index 1.
if sy-subrc EQ 0.
PERFORM f_fill_bbkpf using wa_final3.
endif.
PERFORM f_fill_bbseg using l_final3.
CLOSE DATASET p_filout.
clear flag1.
*
PERFORM check_if_batch_processed changing flag1.
*
IMPORT v_NewBatch FROM MEMORY ID 'bid'.
if flag1 = 'X'.
message E006 with v_NewBatch.
else.
PERFORM f_btci.
endif.
ENDFORM. " create_session
*&----
*
*& Form f_fill_bgr00
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM f_fill_bgr00.
*TABLE 1:BGR00
*Fill BGROO
bgr00-stype = c_zero.
bgr00-group = p_batch.
bgr00-mandt = sy-mandt.
bgr00-usnam = sy-uname.
bgr00-start = space.
bgr00-xkeep = c_x.
bgr00-nodata = c_nodata.
TRANSFER bgr00 TO p_filout.
ENDFORM. " f_fill_bgr00
*&----
*
*& Form open_fileout
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM open_fileout.
open the temporary file to be used by RFBIBL00.
open dataset p_filout for output in text mode.
ENDFORM. " open_fileout
*&----
*
*& Form f_fill_bbkpf
*&----
*
text
*----
*
-->P_WA_FINAL3 text
*----
*
FORM f_fill_bbkpf USING P_WA_FINAL3 type ty_fidoc.
data: v_date(8) type c,
v_NewBatch(12) type c,
v_BatchId(12) type c,
v_BatchId1(12) type c.
CLEAR w_first.
data p_rtcur type waers.
statics n type n value 0.
*
n = n + 1.
statics n type n.
if sy-pfkey+10(1) = 5.
n = 1.
elseif sy-pfkey+10(1) = 9.
n = 2.
endif.
n = 2 * n - 1.
GET PARAMETER ID 'bid' FIELD v_NewBatch.
IMPORT v_NewBatch FROM MEMORY ID 'bid'.
concatenate n v_NewBatch into v_NewBatch.
move v_NewBatch to v_BatchId.
move v_NewBatch to v_BatchId1."for function module
SET PARAMETER ID 'bid1' FIELD v_BatchId1. "for function module
EXPORT v_BatchId to MEMORY ID 'newbid'.
*Initialise header structure BKPF with NODATA /
PERFORM initialization USING bbkpf.
bbkpf-stype = 1.
bbkpf-tcode = c_fb01.
perform reformat_date using p_bldat
changing v_date.
MOVE v_date TO bbkpf-bldat.
MOVE p_blart TO bbkpf-blart.
MOVE p_wa_final3-rbukrs TO bbkpf-bukrs.
clear v_date.
perform reformat_date using p_budat
changing v_date.
MOVE v_date TO bbkpf-budat.
if not bbkpf-bukrs is initial.
select single waers
from t001 into p_rtcur
where bukrs eq bbkpf-bukrs.
if not p_rtcur is initial.
MOVE p_rtcur TO bbkpf-waers.
endif.
endif.
MOVE p_wa_final3-rtcur TO bbkpf-waers.
MOVE 'Short text' TO bbkpf-bktxt.
MOVE v_NewBatch TO bbkpf-bktxt.
MOVE p_monat TO bbkpf-monat.
if v_NewBatch(1) eq '1'.
move'1' to bbkpf-xblnr.
else.
move '2' to bbkpf-xblnr.
endif.
TRANSFER bbkpf TO p_filout.
ENDFORM. " f_fill_bbkpf
*&----
*
*& Form initialization
*&----
*
text
*----
*
-->P_BBKPF text
*----
*
FORM initialization USING P_BBKPF.
DATA: l_champs TYPE i.
MOVE 0 TO l_champs.
DO.
ADD 1 TO l_champs.
ASSIGN COMPONENT l_champs OF STRUCTURE p_bbkpf TO .
ENDDO.
ENDFORM. " initialization
*&----
*
*& Form set_defaults_parms
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM set_defaults_parms.
select single paramvalue into v_paramvalue from zwfm_control_tab
where progid = sy-repid
and proginst = '001'
and paramname = 'BLART'
and paraminst = '001'
and active = 'X'.
if sy-subrc = 0.
p_blart = v_paramvalue.
endif.
clear v_paramvalue.
ENDFORM. " set_defaults_parms
*&----
*
*& Form set_screen_attributes
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM set_screen_attributes.
loop at screen.
case screen-name.
when 'P_RLDNR'.
screen-input = 0.
when 'P_RRCTY'.
screen-input = 0.
when 'P_RVERS'.
screen-input = 0.
when 'P_BLART'.
screen-input = 0.
endcase.
modify screen.
endloop.
ENDFORM. " set_screen_attributes
*&----
*
*& Form f_fill_bbseg
*&----
*
text
*----
*
-->P_L_FINAL3 text
*----
*
FORM f_fill_bbseg USING P_L_FINAL3.
DATA: wa_bbseg type ty_fidoc,
m_final3 type standard table of ty_fidoc.
data: v_rtcur like t001-waers.
m_final3 = p_l_final3.
select single waers
into v_rtcur from t001
where bukrs = p_rbukrs.
LOOP AT m_final3 into wa_bbseg.
*Initialise item structure BBSEG with NODATA /
PERFORM initialization USING bbseg.
bbseg-stype = '2'.
bbseg-tbnam = 'BBSEG'.
bbseg-newbs = wa_bbseg-bschl.
bbseg-newko = wa_bbseg-racct.
IF wa_bbseg-hsl NE space.
WRITE wa_bbseg-hsl to bbseg-wrbtr CURRENCY wa_bbseg-rtcur.
ENDIF.
IF wa_bbseg-ksl NE space.
WRITE wa_bbseg-ksl to bbseg-dmbe2 CURRENCY 'USD'.
ENDIF.
IF wa_bbseg-ksl NE space and v_rtcur NE 'USD'.
WRITE wa_bbseg-ksl to bbseg-dmbe2 CURRENCY 'USD'.
ENDIF.
IF wa_bbseg-kostl NE space.
MOVE wa_bbseg-kostl TO bbseg-kostl.
ENDIF.
SET PARAMETER ID 'CURID' FIELD wa_bbseg-rtcur.
MOVE 'test' TO bbseg-sgtxt.
IF wa_bbseg-rzzps_posid NE space.
MOVE wa_bbseg-rzzps_posid TO bbseg-projk.
ENDIF.
MOVE wa_bbseg-msl TO bbseg-menge.
MOVE 'EA' TO bbseg-meins.
TRANSFER bbseg TO p_filout.
w_num = w_num + 1.
IF wa_bbseg-bschl EQ c_40.
w_wrbtr = w_wrbtr .
w_wrbtr = w_wrbtr + wa_bbseg-bschl.
w_wrbtr = w_wrbtr + wa_bbseg-hsl.
w1_dmbe2 = w1_dmbe2 + wa_bbseg-ksl.
ELSEIF wa_bbseg-bschl EQ c_50.
w_wrbtr = w_wrbtr - wa_bbseg-bschl.
w_wrbtr = w_wrbtr - wa_bbseg-hsl.
w1_dmbe2 = w1_dmbe2 - wa_bbseg-ksl.
ENDIF.
IF wa_bbseg-bschl EQ c_40.
w1_dmbe2 = w1_dmbe2 + wa_bbseg-dmbe2.
ELSE.
w1_dmbe2 = w1_dmbe2 - wa_bbseg-dmbe2.
ENDIF.
**
w1_dmbe2 = wa_bbseg-dmbe2.
ELSE.
w1_dmbe2 = -1 * wa_bbseg-dmbe2.
ENDIF.
IF w_num > p_max.
PERFORM f_end_bal_entry.
PERFORM f_fill_bbkpf using wa_bbseg.
PERFORM f_start_bal_entry.
MOVE 'X' TO w_first.
w_num = 0.
ENDIF.
ENDLOOP.
ENDFORM. " f_fill_bbseg
*&----
*
*& Form f_decimals
*&----
*
text
*----
*
-->P_WA_BBSEG_MSL text
*----
*
FORM f_decimals CHANGING P_WA_BBSEG_MSL.
ENDFORM. " f_decimals
*&----
*
*& Form f_end_bal_entry
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM f_end_bal_entry.
DATA: v_currkey type ty_fidoc-rtcur,
v_offsetacct like zfi_offset_acct-offacct.
data: v_rtcur like t001-waers.
select single waers
into v_rtcur from t001
where bukrs = p_rbukrs.
PERFORM initialization USING bbseg.
bbseg-stype = '2'.
bbseg-tbnam = 'BBSEG'.
IF w_wrbtr > 0.
bbseg-newbs = c_50.
ELSE.
bbseg-newbs = c_40.
ENDIF.
IF w_wrbtr < 0.
w_wrbtr2 = w_wrbtr * -1.
w2_dmbe2 = w1_dmbe2 * -1.
ELSE.
w_wrbtr2 = w_wrbtr.
w2_dmbe2 = w1_dmbe2.
ENDIF.
IF w1_dmbe2 > 0.
bbseg-newbs = c_50.
ELSE.
bbseg-newbs = c_40.
ENDIF.
*
IF w1_dmbe2 < 0.
w2_dmbe2 = w1_dmbe2 * -1.
ELSE.
w2_dmbe2 = w1_dmbe2.
ENDIF.
GET PARAMETER ID 'CURID' FIELD v_currkey.
WRITE w_wrbtr2 TO bbseg-wrbtr CURRENCY v_currkey.
IF w2_dmbe2 NE space and v_rtcur NE 'USD'.
WRITE w2_dmbe2 TO bbseg-dmbe2 CURRENCY 'USD'.
endif.
SELECT single offacct
INTO v_offsetacct
FROM zfi_offset_acct
WHERE bukrs EQ p_rbukrs.
bbseg-newko = v_offsetacct.
bbseg-sgtxt = 'OFFSET LINE'.
TRANSFER bbseg TO p_filout.
ENDFORM. " f_end_bal_entry
*&----
*
*& Form f_start_bal_entry
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM f_start_bal_entry.
DATA: v_currkey type ty_fidoc-rtcur,
v_offsetacct like zfi_offset_acct-offacct.
data: v_rtcur like t001-waers.
select single waers
into v_rtcur from t001
where bukrs = p_rbukrs.
PERFORM initialization USING bbseg.
bbseg-stype = '2'.
bbseg-tbnam = 'BBSEG'.
IF w_wrbtr > 0.
bbseg-newbs = c_40.
ELSE.
bbseg-newbs = c_50.
ENDIF.
IF w_wrbtr < 0.
w_wrbtr2 = w_wrbtr * -1.
w2_dmbe2 = w1_dmbe2 * -1.
ELSE.
w_wrbtr2 = w_wrbtr.
ENDIF.
IF w1_dmbe2 > 0.
bbseg-newbs = c_40.
ELSE.
bbseg-newbs = c_50.
ENDIF.
*
IF w1_dmbe2 < 0.
w2_dmbe2 = w1_dmbe2 * -1.
ELSE.
w2_dmbe2 = w1_dmbe2.
ENDIF.
GET PARAMETER ID 'CURID' FIELD v_currkey.
WRITE w_wrbtr2 TO bbseg-wrbtr CURRENCY v_currkey.
IF w2_dmbe2 NE space and v_rtcur NE 'USD'.
WRITE w2_dmbe2 TO bbseg-dmbe2 CURRENCY 'USD'.
endif.
SELECT single offacct
INTO v_offsetacct
FROM zfi_offset_acct
WHERE bukrs EQ p_rbukrs.
bbseg-newko = v_offsetacct.
bbseg-sgtxt = 'OFFSET LINE'.
TRANSFER bbseg TO p_filout.
ENDFORM. " f_start_bal_entry
*&----
*
*& Form f_btci
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM f_btci.
*submit SAP BDC create program for execution via SM35
SUBMIT rfbibl00 AND RETURN USER sy-uname
WITH ds_name EQ p_filout
WITH fl_check EQ ' '
WITH startdate EQ sy-datum
WITH callmode EQ p_mode
WITH max_comm EQ '1000'
WITH pa_xprot EQ c_x
WITH xinf EQ c_x.
WITH xlog = c_x.
ENDFORM. " f_btci
*&----
*
*& Form reformat_date
*&----
*
text
*----
*
<--P_P_BLDAT text
*----
*
FORM reformat_date USING P_DAT
CHANGING v_dat.
DATA : l_date(8) type c.
*yyyymmdd
CONCATENATE p_dat6(2) p_dat4(2) p_dat(4) into
l_date.
CONDENSE l_date NO-GAPS.
MOVE l_date TO v_dat.
ENDFORM. " reformat_date
*&----
*
*& Form display_secondary_list_5
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM display_secondary_list_5.
ENDFORM. " display_secondary_list_5
*&----
*
*& Form alv_gui_status6
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status6 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET6' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status6
*&----
*
*& Form PF_STATUS_SET5
*&----
*
text
*----
*
form pf_status_set6 using t_extab.
set pf-status 'ZFI_RESTMT6'.
endform. " PF_STATUS_SET6
*&----
*
*& Form alv_call_back6
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back6 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND6' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back6
*&----
*
*& Form USER_COMMAND6
*&----
*
text
*----
*
form user_command6 using ucomm like sy-ucomm
selfield type slis_selfield.
data: k_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
data: v_NewBatch(12) type c,
flag1 type c.
case ucomm.
when 'RZFI'. "Restore ZFI_SL table
clear flag1.
PERFORM check_if_batch_processed changing flag1.
IMPORT v_NewBatch FROM MEMORY ID 'bid'.
if flag1 = 'X'.
message E006 with v_NewBatch.
else.
CALL FUNCTION 'COPF_CALL_TRANSACTION'
EXPORTING
TCODE = 'SM30'
NEW_SESSION = 'X'.
message i605.
endif.
when 'SKIP'.
clear flag1.
PERFORM check_if_batch_processed changing flag1.
IMPORT v_NewBatch FROM MEMORY ID 'bid'.
if flag1 = 'X'.
message E006 with v_NewBatch.
else.
perform display_secondary_list_7.
endif.
endcase.
endform. " USER_COMMAND6
*----
*
FORM TOP_OF_PAGE7 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE7.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page7[].
ENDFORM. " TOP_OF_PAGE7
*&----
*
*& Form show_output_fidoc1
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM show_output_fidoc1.
DATA: ws_repid LIKE sy-repid.
DATA: ws_filter TYPE slis_t_filter_alv.
data: j_final3 type standard table of ty_fidoc.
ws_repid = sy-repid.
import k_final3 to j_final3 from memory id 'table2'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = ws_repid
i_callback_user_command = 'USER_COMMAND'
i_save = 'X'
it_fieldcat = i_fieldcat2[]
it_events = i_events[]
TABLES
t_outtab = j_final3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " show_output_fidoc1
*&----
*
*& Form display_secondary_list_7
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM display_secondary_list_7.
data: m_final3 type standard table of ty_fidoc.
import k_final3 to m_final3 from memory id 'table2'.
if not m_final3[] is initial.
perform build_header_comment using i_top_of_page8[] 8.
perform alv_eventtab_build USING i_events
wa_c_formname_top_of_page8 .
perform alv_gui_status7 using i_events.
perform alv_call_back7 using i_events.
perform show_output_fidoc2.
else.
MESSAGE I001. "NO DATA FOUND FOR THE SELECTION
STOP.
endif.
ENDFORM. " display_secondary_list_7
*&----
*
*& Form alv_gui_status7
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status7 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET7' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status7
*&----
*
*& Form PF_STATUS_SET7
*&----
*
text
*----
*
form pf_status_set7 using t_extab.
set pf-status 'ZFI_RESTMT7'.
endform. " PF_STATUS_SET7
*&----
*
*& Form alv_call_back7
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back7 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND7' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back7
*&----
*
*& Form USER_COMMAND7
*&----
*
text
*----
*
form user_command7 using ucomm like sy-ucomm
selfield type slis_selfield.
data: k_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
case ucomm.
when 'RPCV'. "Restore profit center value
CALL FUNCTION 'COPF_CALL_TRANSACTION'
EXPORTING
TCODE = 'CJ12'
NEW_SESSION = 'X'.
message i605.
when 'SKIP'.
perform display_secondary_list_8.
endcase.
endform. " USER_COMMAND6
*----
*
FORM TOP_OF_PAGE8 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE8.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page8[].
ENDFORM. " TOP_OF_PAGE8
*&----
*
*& Form show_output_fidoc2
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM show_output_fidoc2.
DATA: ws_repid LIKE sy-repid.
DATA: ws_filter TYPE slis_t_filter_alv.
data: j_final3 type standard table of ty_fidoc.
ws_repid = sy-repid.
import k_final3 to j_final3 from memory id 'table2'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = ws_repid
i_callback_user_command = 'USER_COMMAND'
i_save = 'X'
it_fieldcat = i_fieldcat2[]
it_events = i_events[]
TABLES
t_outtab = j_final3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " show_output_fidoc2
*&----
*
*& Form display_secondary_list_8
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM display_secondary_list_8.
data: n_final3 type standard table of ty_fidoc.
import k_final3 to n_final3 from memory id 'table2'.
if not n_final3[] is initial.
perform build_header_comment using i_top_of_page9[] 9.
perform alv_eventtab_build USING i_events
wa_c_formname_top_of_page9 .
perform alv_gui_status8 using i_events.
perform alv_call_back8 using i_events.
perform show_output_fidoc2.
else.
MESSAGE I001. "NO DATA FOUND FOR THE SELECTION
STOP.
endif.
ENDFORM. " display_secondary_list_8
*&----
*
*& Form alv_gui_status8
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status8 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET8' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status8
*&----
*
*& Form PF_STATUS_SET8
*&----
*
text
*----
*
form pf_status_set8 using t_extab.
set pf-status 'ZFI_RESTMT8'.
endform. " PF_STATUS_SET8
*&----
*
*& Form alv_call_back8
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back8 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND8' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back8
*&----
*
*& Form USER_COMMAND8
*&----
*
text
*----
*
form user_command8 using ucomm like sy-ucomm
selfield type slis_selfield.
data: k_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
case ucomm.
when 'RSFI'. "Simulate FI entry - part 2
perform simulate_and_display_fi_entry2.
message i605.
endcase.
endform. " USER_COMMAND8
*----
*
FORM TOP_OF_PAGE9 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE9.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page9[].
ENDFORM. " TOP_OF_PAGE9
*&----
*
*& Form simulate_and_display_fi_entry2
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM simulate_and_display_fi_entry2.
data: o_final3 type standard table of ty_fidoc,
p_final3 type standard table of ty_fidoc.
data: wa_final3 type ty_fidoc,
wa1_final3 type ty_fidoc.
import k_final3 to o_final3 from memory id 'table2'.
loop at o_final3 into wa_final3.
clear wa1_final3.
wa1_final3-ryear = wa_final3-ryear.
wa1_final3-rbukrs = wa_final3-rbukrs.
wa1_final3-racct = wa_final3-racct.
wa1_final3-rzzps_posid = wa_final3-rzzps_posid.
wa1_final3-kostl = wa_final3-kostl.
wa1_final3-rtcur = wa_final3-rtcur.
wa1_final3-tsl = ( wa_final3-tsl ) * -1.
wa1_final3-hsl = ( wa_final3-hsl ) * -1.
wa1_final3-ksl = ( wa_final3-ksl ) * -1.
wa1_final3-msl = ( wa_final3-msl ) * -1.
IF ( wa_final3-bschl EQ '40' ).
wa1_final3-bschl = '50'.
ELSEIF ( wa_final3-bschl EQ '50' ).
wa1_final3-bschl = '40'.
ENDIF.
append wa1_final3 to p_final3.
endloop.
if not p_final3[] is initial.
perform build_catalog2.
perform build_header_comment using i_top_of_page10[] 10.
perform alv_eventtab_build USING i_events wa_c_formname_top_of_page10.
export p_final3 to memory id 'table3'.
perform alv_gui_status9 using i_events.
perform alv_call_back9 using i_events.
perform show_output_fidoc3.
endif.
ENDFORM. " simulate_and_display_fi_entry2
*&----
*
*& Form alv_gui_status9
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status9 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET9' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status9
*&----
*
*& Form PF_STATUS_SET8
*&----
*
text
*----
*
form pf_status_set9 using t_extab.
set pf-status 'ZFI_RESTMT9'.
endform. " PF_STATUS_SET8
*&----
*
*& Form alv_call_back9
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back9 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND9' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back9
*&----
*
*& Form USER_COMMAND9
*&----
*
text
*----
*
form user_command9 using ucomm like sy-ucomm
selfield type slis_selfield.
data: r_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
case ucomm.
when 'CRBS2'. "Create Batch session - part 2
import p_final3 to r_final3 from memory id 'table3'.
clear w_num.
perform create_session using r_final3.
message i010.
if not r_final3[] is initial.
perform build_catalog2.
perform build_header_comment using i_top_of_page11[] 11.
perform alv_eventtab_build
USING i_events wa_c_formname_top_of_page11.
export r_final3 to memory id 'table4'.
perform alv_gui_status10 using i_events.
perform alv_call_back10 using i_events.
perform show_output_fidoc3.
endif.
endcase.
endform. " USER_COMMAND8
*----
*
FORM TOP_OF_PAGE10 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE10.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page10[].
ENDFORM. " TOP_OF_PAGE10
*&----
*
*& Form show_output_fidoc3
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM show_output_fidoc3.
DATA: ws_repid LIKE sy-repid.
DATA: ws_filter TYPE slis_t_filter_alv.
data: q_final3 type standard table of ty_fidoc.
ws_repid = sy-repid.
import p_final3 to q_final3 from memory id 'table3'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = ws_repid
i_callback_user_command = 'USER_COMMAND'
i_save = 'X'
it_fieldcat = i_fieldcat2[]
it_events = i_events[]
TABLES
t_outtab = q_final3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " show_output_fidoc3
*&----
*
*& Form alv_gui_status10
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_gui_status10 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'PF_STATUS_SET'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'PF_STATUS_SET10' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_gui_status10
*&----
*
*& Form PF_STATUS_SET10
*&----
*
text
*----
*
form pf_status_set10 using t_extab.
set pf-status 'ZFI_RESTMT10'.
endform. " PF_STATUS_SET10
*&----
*
*& Form alv_call_back10
*&----
*
text
*----
*
-->P_I_EVENTS text
*----
*
FORM alv_call_back10 USING p_i_events type slis_t_event.
data: ls_event type slis_alv_event,
idx like sy-tabix.
read table p_i_events with key name = 'USER_COMMAND'
into ls_event.
idx = sy-tabix.
if sy-subrc = 0.
move 'USER_COMMAND10' to ls_event-form.
modify p_i_events from ls_event index idx transporting form.
endif.
ENDFORM. " alv_call_back10
*&----
*
*& Form USER_COMMAND10
*&----
*
text
*----
*
form user_command10 using ucomm like sy-ucomm
selfield type slis_selfield.
data: k_final3 type standard table of ty_fidoc,
wa_final3 type ty_fidoc.
data: v_NewBatch(12) type c,
flag2 type c.
case ucomm.
when 'UWBS'. "Unlock WBS elements
clear flag2.
perform check_if_batch2_processed changing flag2.
IMPORT v_NewBatch FROM MEMORY ID 'bid'.
if flag2 = 'X'.
message E012 with v_NewBatch.
else.
submit zfi_unlock_wbs_elements and return.
commit work.
message i003.
message a004.
endif.
endcase.
endform. " USER_COMMAND6
*----
*
FORM TOP_OF_PAGE11 *
*----
*
........ *
*----
*
FORM TOP_OF_PAGE11.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'BACKGROUND'
IT_LIST_COMMENTARY = i_top_of_page11[].
ENDFORM. " TOP_OF_PAGE11
*&----
*
*& Form update_ref_table
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM update_ref_table.
DATA: v_NewBatch(10) type c.
STATICS v_cnt(5) type n.
clear zfi_restatmt.
GET PARAMETER ID 'bid' FIELD v_NewBatch.
IMPORT v_NewBatch FROM MEMORY ID 'bid'.
collect wa_final into i_final.
v_cnt = v_cnt + 1.
move wa_final2-ryear to zfi_restatmt-ryear.
move v_cnt to zfi_restatmt-cnt.
move wa_final2-rbukrs to zfi_restatmt-rbukrs.
move wa_final-racct to zfi_restatmt-racct.
move wa_final2-rzzps_posid to zfi_restatmt-rzzps_posid.
move wa_final2-rzzmtit to zfi_restatmt-rzzmtit.
move wa_final2-rzzmfor to zfi_restatmt-rzzmfor.
move wa_final2-rzzmatnr to zfi_restatmt-rzzmatnr.
move wa_final2-rzzcou to zfi_restatmt-rzzcou.
move wa_final2-rzzfow to zfi_restatmt-rzzfow.
move wa_final2-rzzoow to zfi_restatmt-rzzoow.
move wa_final2-rzzcon to zfi_restatmt-rzzcon.
move wa_final2-rzzloc to zfi_restatmt-rzzloc.
move wa_final2-kostl to zfi_restatmt-kostl.
move wa_final2-zzfam to zfi_restatmt-zzfam.
move wa_final2-zzfor to zfi_restatmt-zzfor.
move wa_final2-zzprd to zfi_restatmt-zzprd.
move wa_final2-zzwin to zfi_restatmt-zzwin.
move wa_final2-zzwig to zfi_restatmt-zzwig.
move wa_final2-rtcur to zfi_restatmt-rtcur.
*move i_final-runit to zfi_restatmt-runit.
move wa_final2-tsl to zfi_restatmt-tsl.
move wa_final2-hsl to zfi_restatmt-hsl.
move wa_final2-ksl to zfi_restatmt-ksl.
move wa_final2-msl to zfi_restatmt-msl.
move v_NewBatch to zfi_restatmt-batchid.
move s_rpmax-low to zfi_restatmt-from_period.
move s_rpmax-high to zfi_restatmt-to_period.
move s_racct-low to zfi_restatmt-from_acct.
move s_racct-high to zfi_restatmt-to_acct.
insert zfi_restatmt.
clear wa_final2.
ENDFORM. " update_ref_table
**&----
-
**
**& Form check_if_batch_processed
**&----
-
**
text
**----
-
**
--> p1 text
<-- p2 text
**----
-
**
*FORM check_if_batch_processed.
*
*DATA: v_BatchId(12) type c,
t_BatchId1(10) type c,
t_BatchId2(10) type c.
*
*
IMPORT v_BatchId FROM MEMORY ID 'newbid'.
*
IF v_BatchId(1) EQ '1'.
continue.
ELSE.
t_BatchId1 = v_BatchId+1(10).
*
select single batchid into t_BatchId2
from zbatch_log
where batchid EQ t_BatchId1.
*
if sy-subrc EQ 0.
continue.
else.
*
endif.
*
ENDIF.
*
*ENDFORM. " check_if_batch_processed
*&----
-
*
*& Form check_if_batch_processed
*&----
-
*
text
*----
-
*
<--P_FLAG text
*----
-
FORM check_if_batch_processed CHANGING P_FLAG.
DATA: v_BatchId(12) type c,
t_BatchId1(12) type c,
t_BatchId2(12) type c.
IMPORT v_BatchId FROM MEMORY ID 'newbid'.
IF v_BatchId(1) EQ '1'.
exit.
ELSE.
t_BatchId1 = v_BatchId+1(10).
select single batchid into t_BatchId2
from zbatch_log
where batchid EQ t_BatchId1.
if sy-subrc EQ 0.
exit.
else.
p_flag = 'X'.
endif.
ENDIF.
ENDFORM. " check_if_batch_processed
**&----
-
**
**& Form set_defaults_curr
**&----
-
**
text
**----
-
**
--> p1 text
<-- p2 text
**----
-
*
*FORM set_defaults_curr.
*
**data: v_rtcur like t001-waers.
*
*select single waers into v_rtcur from t001 where bukrs = p_rbukrs.
*
if sy-subrc = 0.
p_rtcur = v_rtcur.
endif.
*
*clear p_rtcur.
*
*ENDFORM. " set_defaults_curr
*&----
*
*& Form update_ref_table1
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM update_ref_table1.
DATA: v_NewBatch(10) type c.
STATICS v_cnt(5) type n.
clear zfirestate_log.
GET PARAMETER ID 'bid' FIELD v_NewBatch.
IMPORT v_NewBatch FROM MEMORY ID 'bid'.
v_cnt = v_cnt + 1.
move v_cnt to zfirestate_log-cnt.
move wa_final1-ryear to zfirestate_log-ryear.
move wa_final1-rbukrs to zfirestate_log-rbukrs.
move wa_final1-rzzps_posid to zfirestate_log-rzzps_posid.
move v_NewBatch to zfirestate_log-batchid.
move s_rpmax-low to zfirestate_log-from_period.
move s_rpmax-high to zfirestate_log-to_period.
move s_racct-low to zfirestate_log-from_acct.
move s_racct-high to zfirestate_log-to_acct.
insert zfirestate_log.
clear wa_final1.
ENDFORM. " update_ref_table1
*&----
*
*& Form populate_final1_table
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM populate_final1_table.
DELETE ADJACENT DUPLICATES FROM i_final1 COMPARING ALL FIELDS.
loop at i_data2 into wa_data2.
wa_final1-ryear = wa_data2-ryear.
wa_final1-rbukrs = wa_data2-rbukrs.
wa_final1-racct = wa_data2-racct.
wa_final1-rzzps_posid = wa_data2-rzzps_posid.
append wa_final1 to i_final1.
clear : wa_final1-ryear,
wa_final1-rbukrs,
wa_final-racct,
wa_final1-rzzps_posid.
endloop.
ENDFORM. " populate_final1_table
*&----
*
*& Form get_data1
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM get_data1.
********JAGANV
*select ryear rbukrs racct rzzps_posid
from zupi5a
into table i_data2
where ryear = p_ryear
and POPER in s_rpmax
and rbukrs = p_rbukrs
and racct in s_racct
and rzzps_posid in s_rzzps.
i_data2[] = i_data[].
********JAGANV
sort i_data2 by rzzps_posid.
delete adjacent duplicates from i_data2 comparing rzzps_posid.
ENDFORM. " get_data1
*&----
*
*& Form check_if_batch2_processed
*&----
*
text
*----
*
<--P_FLAG2 text
*----
*
FORM check_if_batch2_processed CHANGING P_FLAG2.
DATA: v_BatchId(12) type c,
t1_BatchId1(12) type c,
t1_BatchId2(12) type c.
IMPORT v_BatchId FROM MEMORY ID 'newbid'.
IF v_BatchId(1) EQ '2'.
exit.
ELSE.
t1_BatchId1 = v_BatchId+1(10).
select single batchid1 into t1_BatchId2
from zbatch_log1
where batchid1 EQ t1_BatchId1.
if sy-subrc EQ 0.
exit.
else.
p_flag2 = 'X'.
endif.
ENDIF.
ENDFORM. " check_if_batch2_processed
*&----
-
*
*& Form check_rzzps
*&----
-
*
text
*----
-
*
--> p1 text
<-- p2 text
*----
-
*
FORM check_rzzps.
data v_usr00 like PRPS-USR00.
loop at s_rzzps.
If not s_rzzps-low is initial.
if s_rzzps-low+0(1) = 'T'.
Elseif s_rzzps-low+0(1) = 'C'.
Select single usr00 into v_usr00
from PRPS where POSID = s_rzzps-low.
if v_usr00 is initial." and sy-subrc NE 0.
MESSAGE e013 .
endif.
endif.
*endif.
endloop.
ENDFORM. " check_rzzps