Dynamic fields and conditions
Hi!
I have created a tabular form with:
1. Fields that users can use to filter the table
2. Filter button to filter the data
3. Fields where they select the column name, input the value for update
4. Update button that updates the filtered data in a dynamic PL\SQL
I have a set SQL query on the report that always checks all the values, so I need to have nvl function in case users don't fill all the fields.
Problem with this is that the query lasts very long.
Another problem is, that since I have max 3 columns for update; in case they don't fill those columns, update doesn't work.
Is it possible to maybe create fields in a dynamic way like it is default on a report?
And does anyone know how I could solve the problem with the update in case users select just one column name and fill just one value for update?
Regards,
Ivan
It is possible to dynamically generate PL/SQL. Your problem is, you need to generate the entire program. So, if you are manipulating PL/SQL tables in your dynamic SQL you need to declare those tables and populate them in the dynamic code. Although, I suppose you could pass PL/SQL tables as parameters to EXECUTE IMMEDIATE, I've never tried. Either way, I foresee a gnarly piece of code coming up. I'm glad I don't have to maintain it.
In the following example I shall ignore all considerations of PL/SQL tables, etc. In other words, it won't work but it will give you the idea.
plsql_stmt := 'DECLARE l1 number; l2 number; l3 number; l4 number; BEGIN '
plsql_stmt := plsql_stmt||' l1 := :1; l2 := :2; l3 := :3;';
FOR lrec IN ( SELECT rownum AS r, field_1, field_2, math_op, do_something FROM rules )
LOOP
IF lrec.r != 1
THEN
plsql_stmt := plsql_stmt||'ELSIF ';
ELSE
plsql_stmt := plsql_stmt||'IF ';
END IF;
plsql_stmt := plsql_stmt||lrec.field_1||' '||lrec.math_op||' '||lrec.field_2;
plsql_stmt := plsql_stmt||' THEN '||lrec.do_something||' ;';
END LOOP;
plsql_stmt := plsql_stmt||' END IF; :4 := l4; END;';
EXECUTE IMMEDIATE plsql_stmt USING ln_abc, ln_def, ln_ghi, ln_result;
...Good luck, APC
Similar Messages
-
Dynamic tables and conditional page break
I have inserted a table in my form and have included an Add New Row button to insert additonal rows. I want a maximum of 16 rows added with a subtotal field. I want the table, then to automatically go to a new page with a subtotal field. At the end of all pages I want to include a total field. The table goes to the next page after a number of rows are entered, but there is not a break; the original form continues. How do conditionally break the page and have a (new) table display in the second page?
Thanks for your help.Hi Paul,
Thanks for working with me on this. I have sent a copy to the gmail.com address. I'm new to LiveCycle, so please forgive me.
Date: Thu, 29 Jul 2010 09:18:53 -0600
From: [email protected]
To: [email protected]
Subject: dynamic tables and conditional page break
You can accomplish that with a single table and some creative script. I suggest that you get the table worked out and working correctly then we can add in the page totals and final total afterwards. Once the table is ready email the form to mailto:[email protected] and I will put together a sample for you that shows what to do. Please include a description of what you want to do with the email as the mail message and this forum are not tied together. Also if you have a data file that fills out the table that would be useful as well.
Paul
> -
Hi Folks,
I have to prepare some PDFs using indesign that will be used for Invoices. Our developers want to be able to add the logo and certain fields dynamically. I wanted to find out is there anything special i need to know to do to make the fields and logo updateable dynamically in the output PDF. What is this topic even under? Would it be a scripting thing? I tried Googling around to find answers but had no luck.
Just to give you an example of what I mean by dynamic fields.... i might have a field title "Surname" with text box alongside. My developers should be able to insert the correct surname into that text box when displaying the PDF
Thanks for your help community!is the PDF generated in indesign going be used as a graphic for the Management Information System (MIS) to put data over the top of, or are "the developers" attempting to use indesign as a database query tool?
indesign's data merge has limited capabilities and using it as a "back end" to generate invoices is something that IMHO is beyond its scope.
can the OP please give more information so that a more properly formed answer can be given? -
How to Test the individualmapping field and conditions...
Hi Frnds,
I done mapping from source to destination as per tech spec in my scenario based on some conditions
i used node functions also..
But my question is how to test the every mapping filed , condition is correct or not, what i used node function working properly or not...
Regards,
RajHi
If you want to check mapping for individual mapping then in design go to test tab and put your data there and then come again on Design tab and click on any target field fro which you want to check mapping then right click on target field in mpping area and click on Display queue and check whether it is expected output for that particular field mapping.
Regards
Sami
Reward points if useful. -
Is there a way to use a date field and conditionally change its LABEL?
Hi I have 2 date select lists and desire to change the label text at runtime.
If I use it for one query it would be Order Date, another it would be Start Date.
?? BillCVikas,
...a page template is a special case since everything is finally rendered on a page.Don't know what you mean.
references in page templates probably get evaluated first...References in page templates get replaced with their session state values when the portion of the page template containing the references is rendered, e.g., before the box, inside the box, after the box, in the footer..., and within each section each item reference is replaced "when it is encountered" with the current value of the item from session state.
There is a Before Footer computation that sets that item to the current timestamp.I see an "After Regions" computation. On your page, the form item is rendered using the current (from the previous page request) value of the item in session state. Then your compuation sets a new value. Then the remaining sections of the page template (after the regions) are rendered and you see the newly computed value in the footer section of the template.
Is there a way to pass in the current form item name to the shortcut so that I can have a generic shortcut that returns a different value for the label depending on which item it is being invoked from?Starting in XE and now in 2.2, you can use the strings #CURRENT_FORM_ELEMENT#, #CURRENT_ITEM_ID#, and #CURRENT_ITEM_NAME# in shortcuts. This makes PL/SQL Function shortcuts such as the following possible: if '#CURRENT_ITEM_NAME#' = 'P2_ENAME' then
return ('employee name');
elsif '#CURRENT_ITEM_NAME#' = 'P2_JOB' then
return ('job');
else
return ('foo');
end if; Scott -
Read Data from the dynamic Field Symbol with key ?
Dear All,
I've 2 dynamic internal tables in the form of field symbols.
Now,I want to loop the item field symbol, read the header field symbol content and then move the corresponding into a final field symbol.
How to read the field symbol with key ?
When I'm trying to give the key clause in the paranthesis it's giving a syntax error.
Any clues ?
FYI .....
* Get the Dynamic Field and Value for the Date/Year and convert it into Year value
LOOP AT <fs_t_son> ASSIGNING <wa_son>.
ASSIGN COMPONENT gwa_znrows_def-fieldname OF STRUCTURE <wa_son> TO <fs_year>.
IF sy-subrc = 0.
CLEAR gv_string.
MOVE <fs_year> TO gv_string.
CLEAR gv_year.
gv_year = gv_string.
<fs_year> = gv_year.
ELSE.
* When the Date/year Field is not in the Table then -->
* Get the Dynamic Field and Value
ASSIGN COMPONENT gwa_znrows_def-kfldname OF STRUCTURE <wa_rson> TO <fs_value>.
* Populate field for Dynamic Where condition
CLEAR gv_value.
CONCATENATE '''' <fs_value> '''' INTO gv_value.
CONCATENATE gwa_znrows_def-kfldname '=' gv_value INTO gt_where SEPARATED BY space.
APPEND gt_where.
CLEAR gt_where.
READ TABLE <fs_t_rson> ASSIGNING <wa_rson> ( gt_where ). "Key clause
ENDIF. " if sy-subrc = 0. "Assign
ENDLOOP.
Thanks & regards,
Deepu.KTYPES: BEGIN OF line,
col1 TYPE c,
col2 TYPE c,
END OF line.
DATA: wa TYPE line,
itab TYPE HASHED TABLE OF line WITH UNIQUE KEY col1,
key(4) TYPE c VALUE 'COL1'.
FIELD-SYMBOLS <fs> TYPE ANY TABLE.
ASSIGN itab TO <fs>.
READ TABLE <fs> WITH TABLE KEY (key) = 'X' INTO wa.
The internal table itab is assigned to the generic field symbol <fs>, after which it is possible to address the table key of the field symbol dynamically. However, the static address
READ TABLE <fs> WITH TABLE KEY col1 = 'X' INTO wa.
is not possible syntactically, since the field symbol does not adopt the key of table itab until runtime. In the program, the type specification ANY TABLE only indicates that <fs> is a table. If the type had been ANY (or no type had been specified at all), even the specific internal table statement READ TABLE <fs> would not have been possible from a syntax point of view. -
Dynamic field value in Sales order item table control
Hi
I need to find the VBAP-VKAUS (Usage indicator) field value in run time of the creation of sale order ...these values stored in the table TVLV.
when i debug the program SAPMV45A in the screen 4900 this VBAP-VKAUS value gets empty in structure VBAP even though i can see other values like MATNR etc...
this field is configurable (dynamic) field and not appear for all the ordertypes.
i need to pass this VBAP-VKAUS value to KOMPD-VKAUS
Thru user-exit..so please let me know if somebody knows how to find this VBAP-VKAUS value.
Thanks in advance
Madihi,
Plz Check the struc KOMP/KOMK. Let me know, if this helped.
Rgds,
Raghu. -
Creating Condition Table.. Key fields and line items
dear all
I am creating a Condition table and have 6 fields, I want to make 5 of them as key fields and also header line fields.
I want my 6th field as line item field but I am unable to do that. My last key field is also shoiwing in line item.
Please help.
Thank you.
Madhu.Hi,
Check this thread
Re: VK11
Regards,
Chandra -
Chart report Condition fields and Data fields
Hi all,
i have tried chart report by adding two condion fields and one data field, the report is more meaning full in this scenario. the first condition field is taken as x-axis, the 2nd condition fields is taken as legend.
while adding more condition fields and data fields, i feel its not showing meaningfull data.
can anyone explain how the condition fields and data fileds are manipulated by crystal report.
i am using CR XI R2 Server.
Thanks
Padmanaban Vi am using Crystal Report XI R2 RAS Embedded in my server.
as we can add any number condition fields programatically using the method
ConditionField.Add(FieldObj), i would like to know how these fields are manipulated internally by the RAS server.
that means, what is the significance of condition fieldobject 1, condition fieldobject 2,condition fieldobject 3 etc...
if i add more than two condition fields , RAS Chart Report always returns 0 as legend value for all legends.
Thanks in advance
Regards,
Padmanaban V
Edited by: Padmanaban Viswanathan on Dec 22, 2008 9:53 AM -
Key fields and non-key field of condition table
Hello Gurus,
what is key fields and non-key field of condition table?
thanks very much!Key field
Each condition table contains keys that can be used for creating dependent condition records.
for example let take condition type PR00.
PR00 uses access sequence PR02 .
Access sequence PR02 has following tables associated with it namely 304, 305 & 306
When you create a conditon record for PR00 with transaction VK11 or VK31, you have a button 'key combination' which is nothing but fields associated with tables 304, 305 & 306.
In brief, Condition records are always created using specific keys. Condition tables are used to define the structure of the keys of a condition record.
Non key field
For example take condition table 144 - sales deal basic data.
Table 144 is associated with access sequence PBUD.
If you check the fields associated with this table (click technical view button), there are three fields at bottom which do not have 'key' check mark -KDATU, PLTYP, KSTAF
So, when you create a condition record for PBUD, system does not propose these 3 fields in 'key combination' and hence are non key fields.
Please reward points for good answers as this would help increase the total donation that SAP will make to the United Nations World Food Programme. -
How do I add a time field to a dynamic list and form?
I'm trying to create an update form that logs when an action was taken. Among the fields are one for the date and one for the time, but I've not been able to get the time field to display or enter data correctly.
I've set the time format in the ADDT preferences (database date and time format is yyyy-mm-dd and HH:mm:ss and screen format is dd/mm/yyyy and HH:mm). When I create the list or the form using the wizard, there is no option to display the field as a time.
In step 3 of 4 in the Dynamic List Wizard, the 'Display as' options are: text, numeric, double and date. Choosing date for the time field gives me a display as though it was a date (I get '00/00/0000'). I have the same problem with generating a Dynamic Form in that there is no option to display a time, only a date.
Am I able to do this using the wizard, or is there another way that I'm, missing? Thanks for any help.If those date/time fields are only needed for logging purposes then follow Günter's instructions.
If you need to be able to edit those two fields and have their values displayed properly then there are several steps you should take.
First open the page that uses the Dynamic List behavior and make sure that all date and time fields are configured to display as dates. Then open the page with the dynamic form and click on "Manage Dynamic Form Wizard" in the Developer Toolbox. Configure your date and time fields to submit as dates. Then go to the Server Behaviors panel and double click on "Validate Form". You should now have 3 date/time options available under Validation Format: Date, Datetime, and Time. Configure each field as needed.
This will ensure that date and time fields are saved in the proper format so that when you view their values they will be displayed properly, that is dates will be displayed as dates and times as times.
There are also several additional server formats available that are accessible through the Bindings panel that you might want to experiment with. -
ALV display using dynamic field catalog and dynamic internal table
hi ,
please guide me for ALV display using dynamic field catalog and dynamic internal table.
Thank you.Hi Rahul,
maybe thread dynamic program for alv is helpful for you. More information about the [SAP List Viewer (ALV)|http://help.sap.com/saphelp_nw70/helpdata/EN/5e/88d440e14f8431e10000000a1550b0/frameset.htm]. Also have a look into the example programs SALV_DEMO_TABLE*.
Regards Rudi -
Hallo colleagues,
I have to create a dynamic structure and show it within an ALV.
Therefore I have created my stuctrure like this:
MOVE 'COMP1' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'COMP2' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_i( ).
INSERT gw_component INTO TABLE gt_components.
get structure descriptor -> GR_STRUCTDESCR
gr_structdescr ?= cl_abap_structdescr=>create( gt_components ).
create work area of structure GR_STRUCTDESCR -> GR_WA
CREATE DATA gr_wa TYPE HANDLE gr_structdescr.
ASSIGN gr_wa->* TO <gw_wa>.
So now I have my dynamic structure, but how i can create a field catalog, which fit into the function module 'REUSE_ALV_FIELDCATALOG_MERGE' and 'REUSE_ALV_LIST_DISPLAY'?
Any help?
Thanks in advance
IrianHi,
REPORT zmtable LINE-SIZE 255
LINE-COUNT 65.
Program written by Vijay Chaitanya Raju
Maintain Table dynamicly (Table name is entered on Selection Screen)
Very powerfull program. Please maintain authorisation access and
restrict maintenance to Z-tables
Version 6.20 and up
(can be used in 4.6C with some modifications to block try - endtry
and classes)
Enhanced functionality with dynamic selection screen
TABLES: sscrfields. "Fields on selection screens
TYPE-POOLS rsds.
DATA ds_clauses TYPE rsds_where.
DATA: BEGIN OF ifield OCCURS 0,
fieldname LIKE dd03l-fieldname,
position LIKE dd03l-position,
keyflag LIKE dd03l-keyflag,
datatype LIKE dd03l-datatype.
DATA: END OF ifield.
DATA: sl_step LIKE sy-tabix,
ss_step LIKE sy-subrc,
ss_act(1) TYPE c,
sl_lines LIKE sy-tfill,
sl_status LIKE sy-subrc,
sl_subrc LIKE sy-subrc,
sl_update(1) TYPE c,
sl_mandt(1) TYPE c,
len(6) TYPE n,
f_value(255) TYPE c,
sl_datum LIKE sy-datum,
sl_uzeit LIKE sy-uzeit,
price1(15) TYPE c,
price2(15) TYPE c,
mess(60) TYPE c,
d_stat LIKE sy-subrc,
m_stat LIKE sy-subrc,
slchar(6) TYPE c.
DATA: ref_ptr TYPE REF TO cx_root. "Root class more common
DATA: text TYPE string.
DATA: sl_index LIKE sy-tabix.
DATA: zauth LIKE dd02l-tabname.
DATA: num TYPE i,
max_len TYPE i,
check_len TYPE i,
sl_sel(1) TYPE c.
TYPE-POOLS: icon.
SELECTION-SCREEN.
SELECTION-SCREEN BEGIN OF LINE.
text-012 - 'Table Name'
SELECTION-SCREEN COMMENT 1(25) text-012.
PARAMETERS: tabname LIKE dd02l-tabname DEFAULT 'ZSCARE'.
text-003 - 'Selection'
SELECTION-SCREEN PUSHBUTTON 75(9) text-003 USER-COMMAND sta1.
SELECTION-SCREEN END OF LINE.
numrows(text) - 'Max Number of ROWS'
PARAMETERS: numrows LIKE sy-subrc DEFAULT '100'.
At Selection-Screen *
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'STA1'.
CLEAR sl_sel.
CALL FUNCTION 'ZSTAN_SELECTIONS'
EXPORTING
tabname = tabname
IMPORTING
ds_clauses = ds_clauses
EXCEPTIONS
table_not_valid = 1
other_error = 2
OTHERS = 3.
IF sy-subrc = 0.
sl_sel = 'X'.
ENDIF.
ENDCASE.
*At Selection-Screen Output *
AT SELECTION-SCREEN OUTPUT.
SELECT SINGLE tabname
INTO tabname
FROM dd02l
WHERE tabname = tabname
AND as4local = 'A'
AND ( tabclass = 'TRANSP' OR tabclass = 'POOL'
OR tabclass = 'CLUSTER' ).
IF sy-subrc <> 0.
MESSAGE 'Table is not valid' TYPE 'S'.
RETURN.
ENDIF.
START-OF-SELECTION.
START-OF-SELECTION.
DEFINE: acheck.
zauth = 'ZTABAUTH'.
select single statu
into sl_update
from (zauth)
where tabname = tabname
and bname = sy-uname.
if sy-subrc <> 0.
message 'You are not authorized to view this table' type 'S'.
return.
endif.
END-OF-DEFINITION.
SELECT SINGLE tabname
INTO tabname
FROM dd02l
WHERE tabname = tabname
AND as4local = 'A'
AND ( tabclass = 'TRANSP' OR tabclass = 'POOL'
OR tabclass = 'CLUSTER' ).
IF sy-subrc <> 0.
MESSAGE 'Table is not valid' TYPE 'S'.
RETURN.
ENDIF.
DATA: ptr_itab TYPE REF TO data.
FIELD-SYMBOLS: <fs_itab> TYPE STANDARD TABLE. "ANY TABLE.
CREATE DATA ptr_itab TYPE STANDARD TABLE OF (tabname).
ASSIGN ptr_itab->* TO <fs_itab>.
For DELETION
DATA: ptr_itd TYPE REF TO data.
FIELD-SYMBOLS: <fs_itd> TYPE STANDARD TABLE.
CREATE DATA ptr_itd TYPE STANDARD TABLE OF (tabname).
ASSIGN ptr_itd->* TO <fs_itd>.
For MODIFICATION
DATA: ptr_itm TYPE REF TO data.
FIELD-SYMBOLS: <fs_itm> TYPE STANDARD TABLE.
CREATE DATA ptr_itm TYPE STANDARD TABLE OF (tabname).
ASSIGN ptr_itm->* TO <fs_itm>.
DATA: ptr_wtab TYPE REF TO data.
FIELD-SYMBOLS: <fs_wtab> TYPE ANY.
CREATE DATA ptr_wtab TYPE (tabname).
ASSIGN ptr_wtab->* TO <fs_wtab>.
DATA: itabname(15) TYPE c.
itabname = '<fs_wtab>'.
Standard list status with 'SAVE' button
SET PF-STATUS 'STLI'.
CLEAR sl_update.
Maintain authorisation access in table ZTABAUTH
Key fields: tabname - Table name
bname = sy-uname - User name
statu = 'X' - maintain
' ' - view
Check authorisation access
acheck.
SELECT fieldname position keyflag datatype
INTO TABLE ifield
FROM dd03l
WHERE tabname = tabname
AND fieldname NOT LIKE '.INCLU%'
ORDER BY position.
FIELD-SYMBOLS: <f1> TYPE ANY.
DATA: tab_field(60) TYPE c,
sline LIKE sy-lisel.
DATA: field_attr LIKE dfies.
DATA: BEGIN OF tfield_attr OCCURS 0.
INCLUDE STRUCTURE field_attr.
DATA: END OF tfield_attr.
LOOP AT ifield.
CALL FUNCTION 'G_FIELD_READ'
EXPORTING
table = tabname
fieldname = ifield-fieldname
text_flag = 'X'
IMPORTING
field_attr = field_attr.
tfield_attr = field_attr.
APPEND tfield_attr.
ENDLOOP.
IF sl_sel = 'X'.
SELECT *
FROM (tabname)
INTO TABLE <fs_itab> UP TO numrows ROWS
WHERE (ds_clauses-where_tab).
ELSE.
SELECT *
FROM (tabname)
INTO TABLE <fs_itab> UP TO numrows ROWS.
ENDIF.
DESCRIBE TABLE <fs_itab> LINES sl_lines.
Show two extra lines to allow addition up to 2 new lines
IF sl_update = 'X'.
DO 2 TIMES.
APPEND INITIAL LINE TO <fs_itab>.
ENDDO.
ENDIF.
DATA: info(22) VALUE 'D - Delete, M - Modify'.
WRITE: / icon_information AS ICON QUICKINFO info.
WRITE ' '.
CLEAR check_len.
LOOP AT tfield_attr.
IF tfield_attr-datatype = 'CLNT'.
CONTINUE.
ENDIF.
len = tfield_attr-outputlen.
IF tfield_attr-keyflag = 'X'.
check_len = check_len + len + 1.
ENDIF.
IF tfield_attr-scrtext_m IS NOT INITIAL.
WRITE: AT (len) tfield_attr-scrtext_m COLOR 1.
ELSE.
WRITE: AT (len) tfield_attr-fieldtext COLOR 1.
ENDIF.
ENDLOOP.
CLEAR ss_step.
CLEAR ss_act.
LOOP AT <fs_itab> INTO <fs_wtab>.
IF sy-tabix LE sl_lines.
ss_step = 1.
ELSE.
CLEAR ss_step.
ENDIF.
In field SS_STEP put D - to delete record
M - to modify/add new record
IF sl_update = 'X'.
WRITE:/ icon_change AS ICON.
IF ss_step = 1.
WRITE: ss_act INPUT ON.
ELSE.
ss_act = 'M'.
WRITE: ss_act.
CLEAR ss_act.
ENDIF.
ELSE.
WRITE:/ icon_display AS ICON.
WRITE: ss_act COLOR 2.
ENDIF.
LOOP AT ifield.
Maintain client dependant tables in the same client
IF ifield-datatype = 'CLNT'.
sl_mandt = 'X'.
CONTINUE.
ENDIF.
CONCATENATE itabname '-' ifield-fieldname INTO tab_field.
ASSIGN (tab_field) TO <f1>.
IF sl_update = 'X'.
IF ifield-keyflag = 'X' AND ss_step IS NOT INITIAL.
WRITE: <f1> COLOR 4.
ELSE.
WRITE: <f1> INPUT ON.
ENDIF.
ELSE.
IF ifield-keyflag = 'X' AND ss_step IS NOT INITIAL.
WRITE: <f1> COLOR 4.
ELSE.
WRITE: <f1> COLOR 2.
ENDIF.
ENDIF.
UNASSIGN <f1>.
ENDLOOP.
ENDLOOP.
END-OF-SELECTION.
END-OF-SELECTION.
AT USER-COMMAND.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'SAVE'.
IF sl_update = 'X'.
CLEAR: sl_step,
sl_status,
sl_subrc,
<fs_wtab>,
d_stat,
m_stat,
max_len.
REFRESH <fs_itd>.
REFRESH <fs_itm>.
DO.
IF sl_status <> 0.
EXIT.
ENDIF.
ADD 1 TO sl_step.
IF sl_subrc <> 0.
EXIT.
ENDIF.
CLEAR ss_step.
CLEAR ss_act.
READ LINE sl_step
FIELD VALUE ss_act INTO f_value.
sl_subrc = sy-subrc.
IF f_value(1) EQ 'D' OR f_value(1) = 'd'.
ss_step = 1. "Delete
ELSEIF f_value(1) EQ 'M' OR f_value(1) = 'm'.
ss_step = 2. "Modify
ELSE.
CLEAR ss_step.
ENDIF.
CHECK sy-lisel(3) = '0Z '.
IF ss_step GT 0.
CLEAR sline.
sline = sy-lisel+5(250).
max_len = 250.
CHECK sline(check_len) <> ' '.
LOOP AT tfield_attr.
CONCATENATE itabname '-' tfield_attr-fieldname
INTO tab_field.
ASSIGN (tab_field) TO <f1>.
IF tfield_attr-fieldname = 'MANDT'.
<f1> = sy-mandt.
ELSE.
CLEAR f_value.
IF max_len LT tfield_attr-outputlen.
max_len = 255.
ADD 1 TO sl_step.
READ LINE sl_step.
sline = sy-lisel.
ENDIF.
f_value = sline(tfield_attr-outputlen).
max_len = max_len - tfield_attr-outputlen - 1.
IF tfield_attr-inttype = 'D'.
IF f_value CO ' 0./-'.
CLEAR sl_datum.
<f1> = sl_datum.
ELSE.
CALL FUNCTION 'CONVERT_DATE_INPUT'
EXPORTING
input = f_value
plausibility_check = 'X'
IMPORTING
output = sl_datum
EXCEPTIONS
plausibility_check_failed = 1
wrong_format_in_input = 2
OTHERS = 3.
IF sy-subrc = 0.
<f1> = sl_datum.
ELSE.
text = 'Invalid Date'.
sl_status = 1.
EXIT.
ENDIF.
ENDIF.
ELSEIF tfield_attr-inttype = 'T'.
IF f_value CO ' 0:'.
CLEAR sl_uzeit.
<f1> = sl_uzeit.
ELSE.
CALL FUNCTION 'CONVERT_TIME_INPUT'
EXPORTING
input = f_value
plausibility_check = 'X'
IMPORTING
output = sl_uzeit
EXCEPTIONS
plausibility_check_failed = 1
wrong_format_in_input = 2
OTHERS = 3.
IF sy-subrc = 0.
<f1> = sl_uzeit.
ELSE.
text = 'Invalid Time'.
sl_status = 1.
EXIT.
ENDIF.
ENDIF.
ELSEIF tfield_attr-inttype = 'C'.
TRANSLATE f_value TO UPPER CASE.
<f1> = f_value.
ELSE.
TRANSLATE f_value USING ', '.
CONDENSE f_value NO-GAPS.
TRY.
<f1> = f_value.
CATCH cx_root INTO ref_ptr.
text = ref_ptr->get_text( ).
sl_status = 1.
EXIT.
ENDTRY.
ENDIF.
SHIFT sline BY tfield_attr-outputlen PLACES.
SHIFT sline LEFT.
ENDIF.
UNASSIGN <f1>.
ENDLOOP.
IF sl_status = 0.
CASE ss_step.
WHEN 1. "Delete
ADD 1 TO d_stat.
APPEND <fs_wtab> TO <fs_itd>.
WHEN 2. "Modify
ADD 1 TO m_stat.
APPEND <fs_wtab> TO <fs_itm>.
ENDCASE.
ENDIF.
ENDIF.
ENDDO.
IF sl_status = 0.
IF d_stat IS NOT INITIAL.
slchar = d_stat.
CONCATENATE 'Deleted -' slchar 'record.' INTO text
SEPARATED BY space.
DELETE (tabname) FROM TABLE <fs_itd>.
ENDIF.
IF m_stat IS NOT INITIAL.
slchar = m_stat.
CONCATENATE text 'Modified -' slchar 'record.' INTO text
SEPARATED BY space.
MODIFY (tabname) FROM TABLE <fs_itm>.
ENDIF.
IF d_stat IS INITIAL AND m_stat IS INITIAL.
MESSAGE 'No changes were done' TYPE 'S'.
ELSE.
MESSAGE text TYPE 'S'.
ENDIF.
LEAVE.
ELSE.
MESSAGE text TYPE 'I'.
EXIT.
ENDIF.
ELSE.
LEAVE.
ENDIF.
ENDCASE.
*--END--
Below is Function for a Dynamic Selection Screen
FUNCTION zstan_selections.
""Local interface:
*" IMPORTING
*" VALUE(TABNAME) LIKE DD02L-TABNAME DEFAULT 'ZSCARE'
*" EXPORTING
*" VALUE(DS_CLAUSES) TYPE RSDS_WHERE
*" EXCEPTIONS
*" TABLE_NOT_VALID
*" OTHER_ERROR
DATA texpr TYPE rsds_texpr.
DATA twhere TYPE rsds_twhere.
DATA trange TYPE rsds_trange.
DATA BEGIN OF qcat. "Selections View for
INCLUDE STRUCTURE rsdsqcat. "Free Selectoptions
DATA END OF qcat.
DATA BEGIN OF tabs OCCURS 10.
INCLUDE STRUCTURE rsdstabs.
DATA END OF tabs.
DATA BEGIN OF fields OCCURS 10.
INCLUDE STRUCTURE rsdsfields.
DATA END OF fields.
DATA BEGIN OF efields OCCURS 10.
INCLUDE STRUCTURE rsdsfields.
DATA END OF efields.
DATA selid LIKE rsdynsel-selid.
DATA actnum LIKE sy-tfill.
DATA title LIKE sy-title VALUE 'Selection Screen'.
DATA: maxnum LIKE sy-subrc VALUE '69'.
CLEAR tabs.
tabs-prim_tab = tabname.
COLLECT tabs.
DATA: position LIKE dd03l-position.
DATA: keyflag LIKE dd03l-keyflag.
CLEAR fields.
fields-tablename = tabname.
fields-sign = 'I'.
DATA: step LIKE sy-subrc.
SELECT fieldname keyflag position
INTO (fields-fieldname, keyflag, position)
FROM dd03l
WHERE tabname = tabname
AND fieldname NOT LIKE '.INCLU%'
AND datatype NE 'CLNT'
ORDER BY position.
ADD 1 TO step.
CHECK step LE maxnum.
IF keyflag <> 'X'.
efields = fields.
APPEND efields.
ENDIF.
APPEND fields.
ENDSELECT.
IF sy-subrc <> 0.
RAISE table_not_valid.
ENDIF.
CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
expressions = texpr
kind = 'F'
IMPORTING
selection_id = selid
expressions = texpr
where_clauses = twhere
field_ranges = trange
number_of_active_fields = actnum
TABLES
tables_tab = tabs
fields_tab = fields
fields_not_selected = efields
EXCEPTIONS
fields_incomplete = 01
fields_no_join = 02
field_not_found = 03
no_tables = 04
table_not_found = 05
expression_not_supported = 06
incorrect_expression = 07
illegal_kind = 08
area_not_found = 09
inconsistent_area = 10
kind_f_no_fields_left = 11
kind_f_no_fields = 12
too_many_fields = 13.
IF sy-subrc = 0.
CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
selection_id = selid
title = title
IMPORTING
where_clauses = twhere
expressions = texpr
field_ranges = trange
number_of_active_fields = actnum
TABLES
fields_tab = fields
EXCEPTIONS
internal_error = 01
no_action = 02
no_fields_selected = 03
no_tables_selected = 04
selid_not_found = 05.
IF sy-subrc = 0.
CLEAR ds_clauses.
MOVE tabname TO ds_clauses-tablename.
READ TABLE twhere WITH KEY ds_clauses-tablename INTO ds_clauses.
IF sy-subrc <> 0.
RAISE other_error.
ENDIF.
ELSE.
RAISE other_error.
ENDIF.
ELSE.
RAISE other_error.
ENDIF.
ENDFUNCTION.
Regards,
Shiva -
Comparing dynamic fields of objects using equals and hashCode methods
To compare the different objects of the same class with their contents like jobTitleId, classificationId, deptId & classificationId was to be done and do some manipulations later using Set and Map. I was able to do that by simply overriding the equals and hashCode methods of Object class and was able to fetch the information (like in the following Map).
Map<LocationData, List<LocationData>>
The following is the class I used (its been shown to you so that it can be referred for my problem statement):
LocationData class
package com.astreait.bulkloader;
public class LocationData {
String locId, deptId, jobTitleId, classificationId;
@Override
public boolean equals(Object obj) {
LocationData ld = (LocationData)obj;
return this.deptId.equals(ld.deptId) && this.jobTitleId.equals(ld.jobTitleId) && this.classificationId.equals(ld.classificationId) &&
this.locId.equals(ld.locId);
@Override
public int hashCode() {
return deptId.hashCode() + jobTitleId.hashCode() + classificationId.hashCode() +locId.hashCode();
Problem:
I'm already known to which all fields of this object I need to make the comparison.
i.e I'm bound to use the variables named classificationId, deptId, jobTitleId & locId etc.
Need:
I need to customize this logic such that the fields Names (classificationId, deptId, jobTitleId & locId etc) can be pulled dynamically along with their values. So, as far as my understanding I made use of 2 classes (TableClass and ColWithData) such that the List of ColWithData is there in TableClass object.
I'm thinking what if I override the same two methods `equals() & hashCode();`
such that the same can be achieved.
TableClass class #1
class TableClass{
List<ColWithData> cwdList;
@Override
public boolean equals(Object obj) {
boolean returnVal = false;
// I need to have the logic to be defined such that
// all of the dynamic fields can be compared
return returnVal;
@Override
public int hashCode() {
int returnVal = 0;
// I need to have the logic to be defined such that
// all of the dynamic fields can be found for their individual hashCodes
return returnVal;
ColWithData class #2
class ColWithData{
String col; // here the jobTitleId, classificationId, deptId, locId or any other more fields info can come.
String data; // The corresponding data or value for each jobTitleId, classificationId, deptId, locId or any other more fields.
Please let me know if I'm proceeding in the right direction or I should make some any other approach. If it is ok to use the current approach then what should be performed in the equals and hashCode methods?
Finally I need to make the map as: (Its not the concern how I will make, but can be considered as my desired result from this logic)
Map<TableClass, List<TableClass>> finalMap;Hello,
What is the relation with the Oracle Forms tool ?
Francois -
How to hide a form view field dynamically based on condition?
Actually I have two dropdowns. First dropdown has two entries( Yes and No). If I select YES in the first dropdown then second dropdown will get hide as well as if I select NO in first dropdown then the second dropdown will be show as mandatory(*) and populate with some entries.
Kindly help me out with the code.
Regards
Munna.Hi Munna,
You can control the dynamic field hiding by using the form iterator class.
Please follow the below step to hide the field,
First create custom class with interface IF_CHTMLB_FORM_ITERATOR, then add the code in RENDER_CELL_START and constructor methods.
You need to add the below code in your .htm page
lr_form_iterator type ref to "new class name.
create object lr_form_iterator
exporting iv_context_node = BTCUSTOMERH iv_opport_h = BTOPPORTH.( these are context nodes you need to pass which are having your fields, so that you can access the fields inside the render_cell_start method)
cl_chtmlb_config=>set_iterator( lr_form_iterator ).
You need to write the code in Render_cell_start method of the new class. You need to access the context nodes to the new class and then use them to get the field1 value. If the field1 value is YES you can set empty instance to the EV_REPLACEMENT_BEE for the field2.
lv_current = gv_context_node->collection_wrapper->get_current( ). " you can set the gv_context_node in constructure method.
IF lv_current IS BOUND.
lv_current->get_property_as_value(
EXPORTING
iv_attr_name = 'Field1'
IMPORTING
ev_result = lv_trailclass ).
ENDIF.
data: lv_bee TYPE REF TO cl_bsp_bee_table.
if field1 = YES.
Case iv_bidnding_string
when 'Field2'.
create object lv_bee.
EV_REPLACEMENT_BEE = lv_bee.
endcase.
You can use the below link for more details
Change Property of the Label and Input field in UI for Form View - Part 2
For the second issue, you can achieve it by modifying the get p and Get V method of the second attribute.
let me know if you need more clarification on this.
Best Regards,
kasi.
Maybe you are looking for
-
BT Home Hub connection issue on XBOX 360
I have just upgraded from a BT Home Hub 3, to the BT Home Hub 4, before the upgrade I ran Sky TV wired, and 3PCs wifi, my Ipad and my Iphone. I also ran my XBOX 360 wifi, and a PS3 wifi, all worked no problem. Now I am on BT Home Hub 4, all my connec
-
How do you stop the welcome to firefox 4 screen from coming up every time I open firefox? I get two tabs, one the welcome window, then my home page. How do you stop the bloody welcome screen?
-
Reinstalling OSX on new hard drive without reinstalling other programs?
Hi, I've been having numerous problems with Logic Pro for a while, especially with core audio overload messages with more than a few tracks of VSL (large samples). I was advised to run Onyx, which told me my main system drive needed repair. I ran Dis
-
Error while crawling web repository
Hi Experts, System in use - EP 2004s We have a web server which has number of documents on that server. I have created a web repository for this web server . Repository is working fine , but while crawling it has indexed about 20000 documents and gi
-
Getting Personal Information to display on screen during "Standby"
I've just been given a new Blackberry Curve 8900 in exchange for the one that broke with the trackball fault mentioned here a couple of weeks ago. They couldn't repair it in the time-frame allocated so they sent me a new one. It's very nice but the