9i Forms performance - the final irony
For those who are interested, the performance problems some of our users are experiencing is down to insufficient RAM. According to Oracle Support, JInitiator requires at least 64MB spare, so our users on the 128MB machines are suffering almost constant swapping when they use the 9i Forms application.
In other words, the web-enabled version of the application makes greater demands on the client machine than the client/server version of the forms runtime. Our users are bemused to find they now have to upgrade their desktop machines in order to run a browser-based system. We're going to fine them fifty pence every time they say "but I thought this was thin-client", which will save us having to explain about how Java is such a memory hog.
Support suggested we might use the native JVM which requires less memory but that does rather undermine our sole reason for migrating to 9i Forms: being on a certified platform.
I think I chose our project motto well: Per ardua ad hice.
Cheers, APC
It's a variation on the RAF motto, Per ardua ad astra, "through hard work we reach the stars". My dog latin version means something like "through hard work we can get to where we are now".
See also the Red Queen in Alice through the Looking Glass.
Cheers, APC
Similar Messages
-
i am trying to complete a form but can't get to the final drop down question as it is not displayed because it falls below where my screen ends. i have tried changing the resolution but that doesn't work. any suggestions?
brilliant
google chrome works where safari doesn't on my macbook air. many thanks
i now have an embarrassing qu. have dowloaded spider solitaire (sad!) and i can't add cards at the bottom of a column for the same reason - the display cuts short. i have tried to extend it with the arrows in the bottom corners but it makes no difference. any ideas? -
Perform as pdf form with the ability to insert pictures
How to perform as pdf form. with the ability to insert pictures?
You want your users to be able to insert images into a PDF form? That is only possible if they're either using Acrobat, or if they're using the latest version of Reader (XI) and the image is in PDF format.
-
Oracle Forms Performance very slow on the internet
Hi ,
We have developed a form application with forms Developer 10g and deployed it on a ORACLE 10g AS. If the user runs our application over intranet there is no any network problem or not any performance decrease occurs. However if we deploy our application over WAN or internet, the startup time of the forms become Very Slow.
What we can use to make it faster , is there any other tools we have to learn like APEX or JDeveloper , what is the best solution , should we forget the Developer for ever and starting with other tools with fast performance on the internet , if so , what we have to learn , please help us , its common problem .
any help please ,Interesting thread....
You asked whether "Forms" is the right product for the job. Well, the answer to that question will depend entirely on exactly what functionality you need and your skill-set. One advantage of using Forms over other Oracle products is that, in my opinion, Forms allows you to create simple or complex applications very quickly, with limited development experience. The downside to using Forms however, is that it does use a fairly thick client making startup slower than other applications. Generally, Forms is not very well suited for Internet deployments although it can and has been done. If your goal is to use a product which is easy to work with and is appropriate for Internet deployment, you may want to consider Apex. The downside to Apex is that unlike Forms, Apex generates what I like to call static html pages. Meaning once a page is displayed for the end-user, the data on it remains the same until the user forces interaction with the server again, but in this case the entire page would be refreshed in order to realize the changes. In the case of Forms, any content displayed to the end-user can be change without completely refreshing their view. I like to refer to Forms as a living application because unlike Apex, it can easily respond to most user inputs and/or server side changes almost in real-time. If you want this "live" experience, Forms might be the way to go, although at the cost of some startup performance. Alternatively, Oracle ADF can also give you a similar live-like experience. However, ADF will require a broader skill-set (pl/sql, java, html, etc), whereas with Forms you could get away with only knowing pl/sql although java knowledge would be helpful.
The views expressed in this thread are my own and do not necessarily reflect the views of Oracle. -
Oracle Forms returns the first record in the database when performing query
Once in a while when we query for a record on a form, say by first name Tom, then it returns the first record in the database. Other times it return the Tom's record. It only happens once in a while and if you close the form and reopen it and requery for Tom, then it brings Tom's record.
Does anyone know the issue what could be happening. It just happens every now and then that it's hard to reproduce.
ORacle Forms 10GR2
ORacle Application Server 10.1.3
thanksthen it returns the first record in the databaseI'm not sure if i understand you correctly. Do you mean forms ignores the searc-condition you entered? I would check SYSTEM.LAST_QUERY at the moment this happens to check if the condition gets somehow lost.
-
Error message was displaying when comes back from the final output display
Hi Experts,
I have developed one program and it works fine. But when i press F3 or BACK button from the final display one Error wa coming in a pop-up saying "Selection criterion "Posting Date" contains several selection lines".
I cant understand where the problem was. Can any one suggest where would be the problem. I am sending the code.
REPORT zfir0011_o2c_tax_gl_summary.
TYPE-POOLS slis.
TABLES: faglflexa.
Types Declaration.
TYPES: BEGIN OF x_faglflexa,
ryear TYPE gjahr,
bukrs TYPE bukrs,
belnr TYPE belnr_d, "Document Number
poper TYPE poper, "Posting Period
budat TYPE budat, "Posting Date
buzei TYPE buzei, "Document line item
racct TYPE racct, "G/L Account no.
END OF x_faglflexa,
ty_t_faglflexa TYPE STANDARD TABLE OF x_faglflexa.
TYPES: BEGIN OF x_bset,
belnr TYPE belnr_d,
buzei TYPE buzei,
mwskz TYPE mwskz, "Tax code
hkont TYPE hkont,
shkzg TYPE shkzg, "Debit/Credit Indicator
txjcd TYPE txjcd, "Tax Jurisdiction
h2ste TYPE h2ste, "Tax Amount
h2bas TYPE h2bas_bses, "Tax Amount
END OF x_bset,
ty_t_bset TYPE STANDARD TABLE OF x_bset.
TYPES: BEGIN OF x_skat,
spras TYPE spras,
ktopl TYPE ktopl,
saknr TYPE saknr,
text TYPE txt20_skat,
END OF x_skat,
ty_t_skat TYPE STANDARD TABLE OF x_skat.
TYPES: BEGIN OF x_custom,
geo_state TYPE char2,
geo_county TYPE char3,
country TYPE char2,
description TYPE char40,
END OF x_custom,
ty_t_custom TYPE STANDARD TABLE OF x_custom.
TYPES: BEGIN OF x_budat,
sign TYPE char_01,
option TYPE char2,
low TYPE budat,
high TYPE budat,
END OF x_budat,
ty_t_budat TYPE STANDARD TABLE OF x_budat.
TYPES: BEGIN OF x_txjcd,
geo_state TYPE char2,
geo_county TYPE char3,
END OF x_txjcd,
ty_t_txjcd TYPE STANDARD TABLE OF x_txjcd.
TYPES: BEGIN OF x_inter,
ryear TYPE gjahr,
bukrs TYPE bukrs,
txjcd TYPE txjcd, "Tax Jurisdiction
racct TYPE racct, "G/L Account no.
h2ste TYPE h2ste, "Tax Amount
poper TYPE poper, "Posting Period
belnr TYPE belnr_d, "Document Number
shkzg TYPE shkzg, "Debit/Credit Indicator
END OF x_inter,
ty_t_inter TYPE STANDARD TABLE OF x_inter.
TYPES: BEGIN OF x_final,
txjcd TYPE bset-txjcd, "Tax Jurisdiction
state TYPE char40, "State
curr_bal TYPE bset-h2ste, "Current Balance
per_chng TYPE bset-h2ste, "Period Change
pri_bala TYPE bset-h2ste, "Prior Balance
END OF x_final,
ty_t_final TYPE STANDARD TABLE OF x_final.
Column positions to pass to field catalog
CONSTANTS : c_pos_1 TYPE sy-cucol VALUE '1', " position of the columns
c_pos_2 TYPE sy-cucol VALUE '2',
c_pos_3 TYPE sy-cucol VALUE '3',
c_pos_4 TYPE sy-cucol VALUE '4',
c_pos_5 TYPE sy-cucol VALUE '5'.
*Field names for Field Catalog
CONSTANTS : c_h TYPE c VALUE 'H', "Header
c_s TYPE c VALUE 'S', "Sub heading
c_slash TYPE c VALUE '/', "Slash
c_colon TYPE c VALUE ':', "Column
c_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',"#EC NEEDED "Top-of-page
c_top_of_page_split TYPE slis_formname VALUE 'TOP_OF_PAGE_SPLIT', "Top-of-page centered
c_txjcd TYPE slis_fieldname VALUE 'TXJCD', "Tax Jurisdiction
c_region TYPE slis_fieldname VALUE 'STATE', "State
c_currb TYPE slis_fieldname VALUE 'CURR_BAL', "Current Balance
c_perch TYPE slis_fieldname VALUE 'PER_CHNG', "Period Change
c_prbal TYPE slis_fieldname VALUE 'PRI_BALA'. "Prior Balance
CONSTANTS : c_table_name TYPE slis_tabname VALUE 'IT_FINAL', "For Field Catalog
c_spras TYPE spras VALUE 'E', "Language
c_buzei TYPE c VALUE '1', "Line item in BSET
c_one(2) TYPE c VALUE '01',
c_zp TYPE bset-mwskz VALUE 'ZP', "Sales Tax Code
c_zr TYPE bset-mwskz VALUE 'ZR'. "Sales Tax Code
Variables Declaration.
DATA : v_current_year TYPE i, "Current year
v_poper TYPE poper, "Posting period
v_saknr TYPE saknr, "Account no. "#EC NEEDED
v_ktopl TYPE ktopl, "Chart of Accounts
v_konts TYPE saknr, "G/L Account Number
v_bukrs TYPE bukrs, "Company Code
v_sum_val TYPE h2ste, "#EC NEEDED "Tax Amount
v_sum_val1 TYPE h2ste, "Tax Amount
v_sum_val2 TYPE h2ste, "Tax Amount
v_sum_debit TYPE h2ste,
v_sum_credit TYPE h2ste,
v_sum_debit1 TYPE h2ste,
v_sum_credit1 TYPE h2ste,
v_h2ste TYPE string, "#EC NEEDED
v_desc TYPE char40, "G/L Acct. Description
v_title TYPE char40. "Title
Internal Tables Declaration.
DATA : it_faglflexa TYPE ty_t_faglflexa, "Internal table for G/L Line Items.
it_bset TYPE ty_t_bset, "Internal table for Tax Data Document Segment.
it_skat TYPE ty_t_skat, "Internal table for Chart of Accounts: Desc.
it_custom TYPE ty_t_custom, "Custom table for storing STATE Description.
it_txjcd TYPE ty_t_txjcd, "For storing Tax Jurisdiction codes.
it_inter TYPE ty_t_inter. "Intermediate table for storing data & Performing Calculations.
DATA : it_final TYPE ty_t_final. "#EC NEEDED
*Fieldcatalogue Internal Table Declaration
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
it_alv_top_of_page TYPE slis_t_listheader,
wa_line TYPE slis_listheader.
*Field-symbols and Work Area Declarations
FIELD-SYMBOLS : <fs_faglflexa> TYPE x_faglflexa,
<fs_bset> TYPE x_bset.
DATA : wa_faglflexa TYPE x_faglflexa, "#EC NEEDED
wa_bset TYPE x_bset,
wa_skat TYPE x_skat,
wa_custom TYPE x_custom,
wa_txjcd TYPE x_txjcd,
wa_inter TYPE x_inter,
wa_final TYPE x_final. " #EC NEEDED
SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs TYPE faglflexa-rbukrs OBLIGATORY, " Company Code
p_gjahr TYPE faglflexa-gjahr OBLIGATORY. " Fiscal Year
SELECT-OPTIONS: s_budat FOR faglflexa-budat OBLIGATORY " Posting Date
NO-EXTENSION
NO INTERVALS.
PARAMETERS: p_racct TYPE faglflexa-racct OBLIGATORY. " G/L Accounts
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN VALIDATIONS.
*Company Code Validation.
AT SELECTION-SCREEN ON p_bukrs.
SELECT SINGLE bukrs INTO v_bukrs
FROM t001
WHERE bukrs = p_bukrs.
IF sy-subrc NE 0.
MESSAGE e071(zfinprjt).
ENDIF.
Fiscal Year Validation. It should not be more than Current.
AT SELECTION-SCREEN ON p_gjahr.
v_current_year = sy-datum+0(4).
IF p_gjahr > v_current_year.
MESSAGE e072(zfinprjt).
ENDIF.
*G/L Account Validation.
AT SELECTION-SCREEN ON p_racct.
SELECT SINGLE saknr INTO v_saknr
FROM skb1
WHERE saknr EQ p_racct
AND bukrs EQ p_bukrs.
IF sy-subrc EQ 0.
*Check the Chart of Accounts for that Company Code.
SELECT SINGLE ktopl FROM t001
INTO v_ktopl
WHERE bukrs = p_bukrs.
*Check that it is a Tax G/L Account for that Company Code and G/L Account.
SELECT SINGLE konts FROM t030k "#EC *
INTO v_konts
WHERE ktopl = v_ktopl
AND konts = v_saknr.
IF sy-subrc NE 0.
MESSAGE e073(zfinprjt).
ENDIF.
ELSE.
MESSAGE e073(zfinprjt).
ENDIF.
AT SELECTION-SCREEN ON s_budat.
DATA : v_year(4) TYPE c,
v_month(2) TYPE c,
v_date(2) TYPE c. "#EC NEEDED
*if date ne 01 converting date to '01'
READ TABLE s_budat.
IF s_budat-low+6(2) NE c_one.
v_year = s_budat-low.
v_month = s_budat-low+4(2).
v_date = s_budat-low+6(2).
s_budat-high = s_budat-low.
CLEAR s_budat-low.
CONCATENATE v_year c_one c_one INTO s_budat-low.
s_budat-sign = 'I'.
s_budat-option = 'BT'.
APPEND s_budat.
ENDIF.
START-OF-SELECTION.
PERFORM get_data USING p_bukrs "#EC *
p_gjahr "#EC *
s_budat[] "#EC *
p_racct CHANGING it_final. "#EC *
*Display report in ALV grid
IF it_final IS NOT INITIAL.
*Build Top of the page table.
PERFORM comment_build USING it_skat CHANGING it_alv_top_of_page.
*Build Field catalog table for ALV
PERFORM build_field_catalog CHANGING it_fieldcat.
*Display report
PERFORM display_alv USING it_final.
ELSE.
*No data found for the selection criteria/period.
MESSAGE i022(zfinprjt).
exit.
ENDIF.
*& Form GET_DATA
Retrieve data from Database tables
-->P_P_BUKRS text
-->P_P_GJAHR text
-->P_P_BUDAT text
-->P_P_RACCT text
<--P_IT_FINAL text
FORM get_data USING fp_bukrs TYPE bukrs "#EC *
fp_gjahr TYPE gjahr "#EC *
fp_budat TYPE ty_t_budat "#EC *
fp_racct TYPE racct "#EC *
CHANGING fp_it_final TYPE ty_t_final.
*selecting the Required data from FAGLFLEXA
SELECT ryear "Fiscal Year
rbukrs "Company Code
belnr "Document Number
poper "Posting Period
budat "Posting Date
buzei "Document line item
racct "G/L Account no.
INTO TABLE it_faglflexa
FROM faglflexa
WHERE rbukrs EQ p_bukrs "#EC *
AND gjahr EQ p_gjahr "#EC *
AND budat LE s_budat "#EC *
AND budat IN s_budat "#EC *
AND racct EQ p_racct. "#EC *
IF sy-subrc EQ 0.
SORT it_faglflexa.
ENDIF.
*selecting the Tax Jurisdiction, Tax amount from BSET
IF it_faglflexa IS NOT INITIAL.
SELECT belnr
buzei
mwskz
"hkont
shkzg "Debit/Credit Indicator
txjcd "Tax Jurisdicaiton
h2ste "Tax Amount
h2bas "Tax Amount1
INTO TABLE it_bset
FROM bset
FOR ALL ENTRIES IN it_faglflexa
WHERE belnr EQ it_faglflexa-belnr
AND gjahr EQ p_gjahr "it_faglflexa-ryear
AND buzei EQ c_buzei. "Line item
ENDIF.
IF sy-subrc EQ 0.
SORT it_bset BY txjcd ASCENDING.
SORT it_bset BY belnr ASCENDING.
ENDIF.
*Selecting the G/L Account Long Text from SKAT
IF it_faglflexa IS NOT INITIAL.
SELECT spras " Language key
ktopl " Chart of Accounts
saknr " G/L Account Number
txt20 " G/L Account Long Text
INTO TABLE it_skat
FROM skat
FOR ALL ENTRIES IN it_faglflexa
WHERE spras = c_spras
AND saknr = it_faglflexa-racct.
ENDIF.
IF sy-subrc EQ 0.
SORT it_skat.
ENDIF.
LOOP AT it_bset ASSIGNING <fs_bset>.
wa_txjcd-geo_state = <fs_bset>-txjcd+0(2).
wa_txjcd-geo_county = <fs_bset>-txjcd+2(3).
APPEND wa_txjcd TO it_txjcd.
CLEAR wa_txjcd.
ENDLOOP.
IF sy-subrc EQ 0.
SORT it_txjcd BY geo_state.
DELETE ADJACENT DUPLICATES FROM it_txjcd COMPARING geo_state geo_county.
ENDIF.
*Selecting the Description from Custom table
IF it_txjcd IS NOT INITIAL.
SELECT geo_state
geo_county
country
description
INTO TABLE it_custom
FROM ztfi_tgl_summary
FOR ALL ENTRIES IN it_txjcd
WHERE geo_state = it_txjcd-geo_state
AND geo_county = it_txjcd-geo_county.
ENDIF.
IF sy-subrc EQ 0.
SORT it_custom.
ENDIF.
LOOP AT it_faglflexa ASSIGNING <fs_faglflexa>.
MOVE-CORRESPONDING <fs_faglflexa> TO wa_inter. "#EC ENHOK
*Read Tax Jurisdiction and Tax Amount from BSET Table.
READ TABLE it_bset INTO wa_bset WITH KEY belnr = <fs_faglflexa>-belnr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_inter-shkzg = wa_bset-shkzg.
wa_inter-txjcd = wa_bset-txjcd.
ENDIF.
*If BSET-MWSKZ = ZP or ZR then pick H2BAS as Tax Amount.
IF wa_bset-mwskz = c_zp.
wa_inter-h2ste = wa_bset-h2bas.
ELSEIF wa_bset-mwskz = c_zr.
wa_inter-h2ste = wa_bset-h2bas.
ELSE.
wa_inter-h2ste = wa_bset-h2ste.
ENDIF.
*Check it is credit entry or debit entry ('H' or 'S').
IF wa_inter-shkzg EQ 'H'.
wa_inter-h2ste = wa_inter-h2ste * -1.
ENDIF.
APPEND wa_inter TO it_inter.
CLEAR: wa_inter, wa_bset.
ENDLOOP.
IF sy-subrc EQ 0.
SORT it_inter BY bukrs ryear txjcd ASCENDING.
DELETE it_inter WHERE txjcd EQ space.
DELETE ADJACENT DUPLICATES FROM it_inter COMPARING belnr.
ENDIF.
v_poper = s_budat-high+4(2).
LOOP AT it_inter INTO wa_inter.
*Read the Text maintained in the custom table based on the GEO_STATE = First two digits of TXJCD
*and GEO_COUNTY = Next three digits of TXJCD. If this is blank pick based on First two digits of TXJCD.
READ TABLE it_custom INTO wa_custom WITH KEY geo_state = wa_inter-txjcd+0(2)
geo_county = wa_inter-txjcd+2(3)
BINARY SEARCH.
IF sy-subrc NE 0.
READ TABLE it_custom INTO wa_custom WITH KEY geo_state = wa_bset-txjcd+0(2)
BINARY SEARCH.
ENDIF.
IF sy-subrc = 0.
wa_final-state = wa_custom-description.
ENDIF.
AT NEW txjcd.
CLEAR: v_sum_val, v_sum_val1, v_sum_val2.
ENDAT.
Period Change, if v_poper equal to present period(v_poper).
IF wa_inter-poper EQ v_poper.
IF wa_inter-shkzg EQ 'H'.
v_sum_debit = v_sum_debit + wa_inter-h2ste.
ELSE.
v_sum_credit = v_sum_credit + wa_inter-h2ste.
ENDIF.
Prior Balance, if v_poper is less than present period(v_poper).
ELSEIF wa_inter-poper LT v_poper.
IF wa_inter-shkzg EQ 'H'.
v_sum_debit1 = v_sum_debit1 + wa_inter-h2ste.
ELSE.
v_sum_credit1 = v_sum_credit1 + wa_inter-h2ste.
ENDIF.
ENDIF.
AT END OF txjcd.
wa_final-txjcd = wa_inter-txjcd.
IF sy-subrc EQ 0.
v_sum_val1 = v_sum_credit - v_sum_debit. "Temp Commented
ENDIF.
wa_final-per_chng = v_sum_val1. "Period change
IF sy-subrc EQ 0.
v_sum_val2 = v_sum_credit1 - v_sum_debit1. "Temp commented
ENDIF.
wa_final-pri_bala = v_sum_val2. "Prior Balance
wa_final-curr_bal = v_sum_val1 + v_sum_val2. "Current Balance
APPEND wa_final TO it_final. "#EC *
CLEAR: wa_inter,
wa_final,
v_sum_credit,
v_sum_credit1,
v_sum_debit,
v_sum_debit1.
ENDAT.
ENDLOOP.
ENDFORM. " GET_DATA
*& Form COMMENT_BUILD
ALV Top of Page
-->P_IT_SKAT text
<--P_IT_ALV_TOP_OF_PAGE text
FORM comment_build USING fp_it_skat TYPE ty_t_skat"#EC NEEDED
CHANGING fp_it_alv_top_of_page TYPE slis_t_listheader.
DATA: v_budat_low TYPE c LENGTH 10, "#EC NEEDED
v_budat_high TYPE c LENGTH 10, "#EC NEEDED
v_butxt TYPE butxt.
CLEAR wa_line.
*Report Title
CONCATENATE text-005 p_bukrs INTO v_title SEPARATED BY space.
wa_line-typ = c_h.
wa_line-key = ' '.
wa_line-info = v_title.
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
*Account Number
wa_line-typ = c_s.
wa_line-key = text-006.
wa_line-info = p_racct.
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
*G/L Account Description
READ TABLE it_skat INTO wa_skat WITH KEY ktopl = v_ktopl BINARY SEARCH."#EC *
IF sy-subrc EQ 0.
v_desc = wa_skat-text.
ENDIF.
wa_line-typ = c_s.
wa_line-key = text-007.
wa_line-info = v_desc.
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
*Fiscal Year from selection
IF NOT p_gjahr IS INITIAL.
wa_line-info = p_gjahr.
wa_line-typ = c_s.
wa_line-key = text-008. "Fiscal Year
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
ENDIF.
*Posting Date
CONCATENATE s_budat-high4(2) s_budat-high6(2) s_budat-high+0(4) INTO wa_line-info SEPARATED BY c_slash.
wa_line-typ = c_s.
wa_line-key = text-009. "Posting Date
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
*Company Code Description from selection
IF NOT p_bukrs IS INITIAL.
SELECT SINGLE butxt FROM t001
INTO v_butxt WHERE bukrs EQ p_bukrs.
IF sy-subrc EQ 0.
wa_line-info = v_butxt.
wa_line-typ = c_s.
wa_line-key = text-010. "Company Code Description
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
ENDIF.
ENDIF.
Printed Date
wa_line-typ = c_s.
wa_line-key = text-011. "Printed Date
CONCATENATE sy-datum+4(2)
sy-datum+6(2)
sy-datum(4) INTO wa_line-info SEPARATED BY c_slash. "todays date
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR: wa_line.
Printing Time
wa_line-typ = c_s.
wa_line-key = text-012. "Printing Time
wa_line-info = sy-uzeit.
CONCATENATE sy-uzeit(2)
sy-uzeit+2(2)
sy-uzeit+4(2) INTO wa_line-info SEPARATED BY c_colon. "current time
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR: wa_line.
ENDFORM. " COMMENT_BUILD
*& Form BUILD_FIELD_CATALOG
Fieldcatalogue
<--P_IT_FIELDCAT text
FORM build_field_catalog CHANGING fp_it_fieldcat TYPE slis_t_fieldcat_alv.
TAX JURISDICTION
wa_fieldcat-col_pos = c_pos_1.
wa_fieldcat-reptext_ddic = text-013. "TAX JURISDICTION
wa_fieldcat-fieldname = c_txjcd.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-outputlen = '15'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
STATE
wa_fieldcat-col_pos = c_pos_2.
wa_fieldcat-reptext_ddic = text-014. "STATE
wa_fieldcat-fieldname = c_region.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-outputlen = '40'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
CURRENT BALANCE
wa_fieldcat-col_pos = c_pos_3.
wa_fieldcat-reptext_ddic = text-015. "CURRENT BALANCE
wa_fieldcat-fieldname = c_currb.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-do_sum = 'X'.
wa_fieldcat-datatype = 'CURR'.
wa_fieldcat-outputlen = '17'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
PERIOD CHANGE
wa_fieldcat-col_pos = c_pos_4.
wa_fieldcat-reptext_ddic = text-016. "PERIOD CHANGE
wa_fieldcat-fieldname = c_perch.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-do_sum = 'X'.
wa_fieldcat-datatype = 'CURR'.
wa_fieldcat-outputlen = '17'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
PRIOR BALANCE
wa_fieldcat-col_pos = c_pos_5.
wa_fieldcat-reptext_ddic = text-017. "PRIOR BALANCE
wa_fieldcat-fieldname = c_prbal.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-do_sum = 'X'.
wa_fieldcat-datatype = 'CURR'.
wa_fieldcat-outputlen = '17'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
ENDFORM. " BUILD_FIELD_CATALOG
*& Form DISPLAY_ALV
ALV Grid Display
-->P_IT_FINAL text
FORM display_alv USING fp_it_final TYPE ty_t_final.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
i_callback_top_of_page = c_top_of_page
i_callback_html_top_of_page = c_top_of_page_split
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = it_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
i_save = 'A'
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = fp_it_final
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF sy-subrc EQ 0. "#EC *
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV
*& Form top_of_page_split
Top of page for displaying the Text in Center
FORM top_of_page_split USING fp_top TYPE REF TO cl_dd_document."#EC *
TYPES: BEGIN OF ty_text,
text TYPE sdydo_text_element,
END OF ty_text.
TYPES: BEGIN OF ty_text1, "AAAAAAAA
text1 TYPE sdydo_text_element,
END OF ty_text1.
DATA: v_tab TYPE sdydo_text_table,
v_area TYPE REF TO cl_dd_area,
v_text TYPE sdydo_text_element,
v_text1 TYPE sdydo_text_element, "#EC NEEDED
v_tab1 TYPE sdydo_text_table.
DATA: it_text TYPE TABLE OF ty_text,
wa_text TYPE ty_text,
it_text1 TYPE TABLE OF ty_text1,
wa_text1 TYPE ty_text1.
DATA: v_title TYPE string,
v_accts_desc TYPE string,
v_year TYPE string,
v_comp_code TYPE string,
v_desc TYPE char40,
v_budat TYPE char10,
v_budat1 TYPE char10,
v_butxt TYPE butxt,
v_time TYPE char10,
v_comma TYPE c VALUE ','.
CALL METHOD fp_top->initialize_document.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->vertical_split
EXPORTING
split_area = fp_top
split_width = '31%'
IMPORTING
right_area = v_area.
IF sy-subrc EQ 0. "#EC NEEDED
*MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*G/L Account Description
READ TABLE it_skat INTO wa_skat WITH KEY ktopl = v_ktopl BINARY SEARCH.
IF sy-subrc EQ 0.
v_desc = wa_skat-text.
ENDIF.
*Company code Description
IF NOT p_bukrs IS INITIAL.
SELECT SINGLE butxt FROM t001
INTO v_butxt WHERE bukrs EQ p_bukrs.
ENDIF.
CONCATENATE text-005 p_bukrs INTO v_title SEPARATED BY space.
wa_text1-text1 = v_title.
APPEND wa_text1 TO it_text1.
v_tab1 = it_text1.
CALL METHOD v_area->add_text
EXPORTING
text_table = v_tab1
fix_lines = 'X'
sap_fontsize = cl_dd_document=>large
sap_emphasis = cl_dd_document=>strong. "AAAAAA
CHECK sy-subrc EQ 0.
CONCATENATE text-006 p_racct v_comma text-007 v_desc INTO v_accts_desc SEPARATED BY space.
CONCATENATE s_budat-high4(2) s_budat-high6(2) s_budat-high+0(4) INTO v_budat SEPARATED BY c_slash.
CONCATENATE text-008 p_gjahr v_comma text-009 v_budat INTO v_year SEPARATED BY space.
CONCATENATE text-010 v_butxt INTO v_comp_code SEPARATED BY space.
wa_text-text = v_title.
APPEND wa_text TO it_text.
wa_text-text = v_accts_desc.
APPEND wa_text TO it_text.
wa_text-text = v_year.
APPEND wa_text TO it_text.
wa_text-text = v_comp_code.
APPEND wa_text TO it_text.
v_tab = it_text.
CALL METHOD v_area->add_text
EXPORTING
text_table = v_tab
fix_lines = 'X'
sap_fontsize = cl_dd_document=>medium
sap_emphasis = cl_dd_document=>medium.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->new_line.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->new_line.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->new_line.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->add_gap
EXPORTING
width = 0.
CHECK sy-subrc EQ 0.
CONCATENATE sy-datum4(2) sy-datum6(2) sy-datum+0(4) INTO v_budat1 SEPARATED BY c_slash.
CALL METHOD fp_top->add_text
EXPORTING
text = text-011
sap_emphasis = 'STRONG'.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->add_gap
EXPORTING
width = 1.
CHECK sy-subrc EQ 0.
v_text = v_budat1.
CALL METHOD fp_top->add_text
EXPORTING
text = v_text.
sap_style = 'KEY'.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->new_line.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->add_text
EXPORTING
text = text-012
sap_emphasis = 'STRONG'.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->add_gap
EXPORTING
width = 1.
CHECK sy-subrc EQ 0.
CONCATENATE sy-uzeit(2)
sy-uzeit+2(2)
sy-uzeit+4(2) INTO v_time SEPARATED BY c_colon. "current time
v_text = v_time.
CALL METHOD fp_top->add_text
EXPORTING
text = v_text.
sap_style = 'KEY'.
CHECK sy-subrc EQ 0.
ENDFORM. "top_of_page_split
Thanks in Advance.
Regards,
RamanaProblem is with ur selection screen definition for s_budat
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs TYPE faglflexa-rbukrs OBLIGATORY, " Company Code
p_gjahr TYPE faglflexa-gjahr OBLIGATORY. " Fiscal Year
SELECT-OPTIONS: s_budat FOR faglflexa-budat OBLIGATORY " Posting Date
NO-EXTENSION
NO INTERVALS.
PARAMETERS: p_racct TYPE faglflexa-racct OBLIGATORY. " G/L Accounts
SELECTION-SCREEN END OF BLOCK b1.
Here u r defining s_budat like parameter with NO-EXTENSION
NO INTERVALS. additions.
So that means it should contain only one record in it. As s_budat is nothing but a range table with headerline so this entry should be contained in the body as well as in the header.
But in AT SELECTION-SCREEN ON s_budat. u r again entering a 2nd record if date is not 01.
AT SELECTION-SCREEN ON s_budat.
DATA : v_year(4) TYPE c,
v_month(2) TYPE c,
v_date(2) TYPE c. "#EC NEEDED
*if date ne 01 converting date to '01'
READ TABLE s_budat.
IF s_budat-low+6(2) NE c_one. << Here u r checking the header not the body
v_year = s_budat-low.
v_month = s_budat-low+4(2).
v_date = s_budat-low+6(2).
s_budat-high = s_budat-low.
CLEAR s_budat-low.
CONCATENATE v_year c_one c_one INTO s_budat-low.
s_budat-sign = 'I'.
s_budat-option = 'BT'.
APPEND s_budat.
ENDIF.
Due to these 2 records it is giving u error. So to avoid the problem u should read the body of the table and then modify the record.
Read table s_budat index 1.
IF s_budat-low+6(2) NE c_one.* << Here u r checking the header not the body
v_year = s_budat-low.
v_month = s_budat-low+4(2).
v_date = s_budat-low+6(2).
s_budat-high = s_budat-low.
CLEAR s_budat-low.
CONCATENATE v_year c_one c_one INTO s_budat-low.
s_budat-sign = 'I'.
s_budat-option = 'BT'.
modify s_budat index sy-tabix.
Regards,
Joy. -
Getting the final internal table of a transaction VA05
Hi,
Can anyone help me in getting the final internal table of a transaction VA05 when called from a program. I need to use to this internal table for further processing.
Thanks in advance,
Vinay.Hi,
Not quite sure what you are after but the following may help.
For a start VA05 uses FM RV_SALES_DOCUMENT_VIEW_3 to select it's data. Your program could simply call this. However, if you are doing a CALL TRANSACTION from your program to VA05 and you want to get the results back then you could utilise some 'old style' userexits available in VA05.
Two choices here:
1. At the end of FM RV_SALES_DOCUMENT_VIEW_3 there is a form END_MODIFICATION or
2. When VA05 calls RV_SALES_DOCUMENT_VIEW_3 it performs a user sort MV75AFZ1(MV75AFZ1)
Both of these belong to package VMOD which means you can modify them by simply registering the object in OSS (these are 'old style' exits before SMOD/CMOD and are prevelant in SD)
From either of these you could EXPORT to memory for when control is returned back to your program.
Thanks,
Pete -
Returning multiple values from a called tabular form(performance issue)
I hope someone can help with this.
I have a form that calls another form to display a multiple column tabular list of values(needs to allow for user sorting so could not use a LOV).
The user selects one or more records from the list by using check boxes. In order to detect the records selected I loop through the block looking for boxes checked off and return those records to the calling form via a PL/SQL table.
The form displaying the tabular list loads quickly(about 5000 records in the base table). However when I select one or more values from the table and return back to the calling form, it takes a while(about 3-4 minutes) to return to the called form with the selected values.
I guess it is going through the block(all 5000 records) looking for boxes checked off and that is what is causing the noticeable pause.
Is this normal given the data volumes I have or are there any other perhaps better techniques or tricks I could use to improve performance. I am using Forms6i.
Sorry for being so long-winded and thanks in advance for any help.Try writing to your PL/SQL table when the user selects (or remove when deselect) by usuing a when-checkbox-changed trigger. This will eliminate the need for you top loop through a block with 5000 records and should improve your performance.
I am not aware of any performance issues with PL/SQL tables in forms, but if you still have slow performance try using a shared record-group instead. I have used these in the past for exactly the same thing and had no performance problems.
Hope this helps,
Candace Stover
Forms Product Management -
Hello,
I’ve finally managed to deploy my first guest cluster with a shared VHDX using a service template.
So, I now want to try and update my service template. However, whenever I try to do anything with it, in the services section, I receive the error:
Unable to perform the job because one or more of the selected objects are locked by another job. To find out which job is locking the object, in the jobs view, group by status, and find the running or cancelling job for the object. ID 2606
Well I tried that and there doesn’t seem to be a job locking the object. Both the cluster nodes appear to be up and running, and I can’t see a problem with it at all. I tried running the following query in SQL:
SELECT * FROM [VirtualManagerDB].[dbo].[tbl_VMM_Lock] where TaskID='Task_GUID'
but all this gives me is an error that says - conversion failed when converting from a character string to uniqueidentifier msg 8169, level 16, State 2, Line 1
I'm no SQL expert as you can probably tell, but I'd prefer not to deploy another service template in case this issue occurs again.
Can anyone help?No one else had this?
-
For some reason the Apple ID window in iTunes and App Store now seems to suddenly have a character number constraint which prevents me using my 29 character Apple ID. As a result I am unable to enter the final few characters of my Apple ID which I have had for many years. Does anyone know what has caused this?
You need to ask Apple for assistance with getting back into your old ID. To do this, click here and pick a method; if that page doesn't list one for your country or you're unable to resolve this issue through the Account Security team, fill out and submit this form.
(118441) -
How to get the final document number?
Hi,
How do I retrieve the document number of a document (e.g. delivery note) that is just added?
Currently, I use the following event listener:
[B1Listener(BoEventTypes.et_FORM_DATA_ADD, false)]
in which I retrieve the document number by reading out the text field on the form:
EditText text = (EditText)form.Items.Item("8").Specific;
string deliveryNoteNumber = text.Value;
This works perfect if only one person is adding documents. But if two persons are posting a document, they both see the same (temporary) document number in the form while entering the data. The latest person who finalizes his document, will get another number than the one that was displayed in the form (because the first person already used that number). So, how can I retrieve the number of a document that is just finalized?
Thank you very much for your help.
Regards,
Pieter VerhaegheYou can use the "ObjectKey" property of the BusinessObjectInfo object returned by the form_data_add.
Catcth the event with BeforeAction = false - after the add event has successfully happened. Then you will see the ObjectKey property of the BusinessObjectInfo object will have an XML string in it. Inside that XML you can find the DocEntry of the newly added document, you will just need to parse it properly! -
looking to edit the final frame which is the the "credits" section. I have already converted the trailer. Is it too late to correct some nserts in the credits?
Thanks to all.If by "converted" you mean that you've converted the trailer to a normal project using the menu option File>Convert to Project, then YES it is still possible to edit the Credits Title.
In the converted project, double-click on the blue Title bar that sits above the background clip. In the Viewer, double-click on the text you wish to change (or highlight text by dragging over it). Now you can replace the highlighted text by typing in the new text. You can also change fonts and font colours.
It's always good practice to duplicate the Trailer before converting it. To do this, while in Project Library view, click on the Trailer name in the Library then select File>Duplicate Project. A copy will appear in the Library with the same name as the Trailer, but with the number 1 appended. You can rename this copy as desired. Now, convert the duplicate to a standard project and continue with your editing as required. You now have the original Trailer in template form (which can be further edited), and can duplicate it again if required.
John
EDIT: Regarding my first sentence - just noticed that you did mention "converting it to a project" in you topic header. Sorry!
Message was edited by: John Cogdell -
Problem in filling the final internal table
Hi,
I am working on a code in which i have to fill up the final internal table which will store the values coming form different internal tables.Here's the code which i am trying to do but it is not giving the execat functionality.In this code ITOUTPUT is the final itab which is storing the values of all other internal tables.
Here's the code:-
loop at itab1.
select single maktx into v_item from makt where matnr = itab1-matnr.
ITOUTPUT-banfn = ITab1-banfn.
ITOUTPUT-badat = ITab1-badat.
ITOUTPUT-meins = ITab1-meins.
ITOUTPUT-menge = ITab1-menge.
ITOUTPUT-lfdat = ITab1-lfdat.
IF ITAB1-MEINS = 'KG'.
V_TOTREQ = V_TOTREQ + ITAB1-MENGE.
ELSEIF ITAB1-MEINS = 'TO'.
V_TOTREQ = V_TOTREQ + ( ITAB1-MENGE * 1000 ).
ELSEIF ITAB1-MEINS = 'G'.
V_TOTREQ = V_TOTREQ + ( ITAB1-MENGE / 1000 ).
ENDIF.
v_tpo = 0.
v_por = 0.
LOOP AT ITPO WHERE BANFN = ITAB1-BANFN AND bnfpo = ITAB1-bnfpo.
if v_por <> '0'.
write : / ' '.
endif.
ITOUTPUT-ebeln = ITPO-ebeln.
ITOUTPUT-aedat = ITPO-aedat.
ITOUTPUT-lifnr = ITPO-lifnr.
ITOUTPUT-menge = ITPO-menge.
ITOUTPUT-EINDT = ITPO-EINDT.
IF ITAB1-MEINS = 'KG'.
V_TOTPO = V_TOTPO + ITPO-MENGE.
ELSEIF ITPO-MEINS = 'TO'.
V_TOTPO = V_TOTPO + ( ITPO-MENGE * 1000 ).
ELSEIF ITPO-MEINS = 'G'.
V_TOTPO = V_TOTPO + ( ITPO-MENGE / 1000 ).
ENDIF.
v_tpo = v_tpo + itpo-menge.
v_tgr = 0.
v_por = 1.
v_grr = 0.
loop at itmrn where ebeln = itpo-ebeln and ebelp = itpo-ebelp.
if v_grr <> '0'.
write : / ' '.
endif.
select single budat from mkpf into v_grdate where MBLNR = itmrn-MBLNR.
write: 143 Itmrn-menge,v_grdate .
itoutput-PMENGE = itmrn-menge.
v_tgr = v_tgr + itmrn-menge.
v_grr = 1.
endloop.
p_po = itpo-menge - v_tgr.
write: 173 p_po.
ENDLOOP.
p_req = itab1-menge - v_tpo.
write : 195 p_req.
endloop.
loop at itoutput.
write:/ itoutput-banfn,12 itoutput-badat,24 v_item,50 itoutput-meins,53 itoutput-menge,itoutput-lfdat,
89 ITPO-ebeln,100 ITPO-aedat,111 ITPO-lifnr,(10) itpo-menge, ITPO-eindt.
MODIFY itoutput.
endloop.Hi,
Ok,i ha d checked my code by using your logic and giving the run time error ......
i had debugged my code (orignal onementioned in above thread with little modification) in which i am able to see that finaloutput (intrenal table) is getting filled properly and the problem arises when the cursor comes to the write statement ... it is repeating some of the values when output is displayed where as before displaying output this iternal table is having the correct data. i am using the following code :-
append itoutput.
ENDLOOP.
p_req = itab1-menge - v_tpo.
write : 195 p_req.
append itoutput. ,<--- added this
clear itoutput. <--- added this
endloop.
loop at itoutput.
write:/ itoutput-banfn,12 itoutput-badat,24 v_item,50 itoutput-meins,53 itoutput-menge,itoutput-lfdat,
89 ITPO-ebeln,100 ITPO-aedat,111 ITPO-lifnr,(10) itpo-menge, ITPO-eindt.
MODIFY itoutput. <------ not removed
endloop. -
When I print a document with Arabic script in In Design the characters appear in an inverted form, in the opposite direction, while the printer doesn't do this with other software such as Word
(The small field at the top of questions is to type just a title; the large field is to type your full question in, along with anything else that may help us help you.)
When you say "print", do you mean the text is correct in your InDesign file? If you export the document to a PDF, is it still correct? Final test: if you print the PDF to your printer (making sure you use the same driver and setting), is it wrong? Then it's your printer driver, trying to be smart when it should not. Locate a Settings dialog where you can switch off options such as this one. Were I a betting person, I'd tell you to look for something called "Auto-correct mirrored documents". -
We are busy Upgrading our DB from 10g (10.2.0.4) to 11g (11.1.0.7).
We are currently using Oracle Application Server (10.1.2.0.2) with Form and Reports connecting to our 10.2.0.4 DB.
The Application Server is not being upgraded as there are compatable with 11g.
However when we point these 10g FORMS to the 11g DB we have huge performance issues on specific queries generated by FORMS if Block Propoerty "ENFORCE COLUMN SECURITY"=Y.
The query that 11g strugles with - for example is:
SELECT obj.object_type, obj.object_name, obj.owner
INTO :b0, :b1, :b2
FROM
(SELECT o.object_type, o.object_name, o.owner
FROM all_objects o,
all_synonyms s
WHERE s.synonym_name = :b1
AND s.owner = :b2
AND s.table_owner = o.owner
AND s.table_name = o.object_name
) obj
WHERE obj.object_type IN ('TABLE', 'VIEW', 'SYNONYM');
This query executes for almost 60 seconds - to check the Users Privs to access an Object.
Question:
HAS ANYONE ELSE EXPERIENCED THIS DURING thier 11G upgrade???
I would love to hear from other people with a similar technology if - hoe they have resolved these as it is NOT CODE THAT WE have CUSTOM written, IT IS ORACLE generated code that is performing so terrible on 11g*.
All feedback welcome.
PS: Our solution is to DISABLE Column Security on all our Forms as we control access via our own Security module.
WPI just stumbled across the same problem...
Maybe you are looking for
-
How to use CVS with JDeveloper
Hi all! I'm starting a new project and I would like to know how to use CVS with JDeveloper. This is my first project where I will have two more people working with me and I don't know what the better approach is. Should I use CVS that come with JDeve
-
Calling Child record onto a Form Module
I am using 2 tables, Parents & Child, i.e 1 to many relations. Naturally the child table contains more than one record for the parent relationship. To make it clear one empno in parant table has more than one record in nominee tables. How I can call
-
Exception : Type does not exist
Hello, I have imported a model into my webdynpro (without any errors), binded it with the component controller and when i try to deploy my application, i get the following exception: com.sap.dictionary.runtime.DdException: Type de.cideon.models2.plma
-
What version of JDeveloper is certified for Windows 2008
What version of JDeveloper is certified for Windows 2008
-
Dear Community, in standard, MM only supports connection of one OCI catalog for use in transaction ME21N or ME51N. I have heard rumors that there is a "tweak" or "modification" that enables the use of multiple catalogs in MM too. Does anybody know mo