Creating and Using Variant in Select Options With Web Dynpro For ABAP Part1
Creating and Using Variant in Select Options With Web Dynpro For ABAP Part1
As part of my work, I created a Webdynpro for ABAP application having the selection screen for accepting the user input. My user demanded to get the basic variant functionality in W A application same as available in ABAP reports. I searched ! " for the available solution and found the solution suggested by Mr. Anantha Athuru #https$%%wiki.sdn.sap.com%wiki%&%bo'(A)*. But this solution involves creating a dummy ABAP report having the same selection screen as W A application and store variants over there. I thought there should be some better way. !o here I am. +his e&le application contains customer number and plant two select options on Main ,iew. +he main view also has two buttons. +he first button navigates to -!ave ,ariant view. and other button navigates to -/et ,ariants. view. +he solution can be described in following steps. 0. 1reate your application with select options. 2our component will have to have the component WD*+S","C-+OP-.O/S as 3used component3 in order to get select option functionality. 2ou may create attributes for the instance of 3select option handler class3 #.0+WD+S","C-+OP-.O/S* and range tables of customer and data selection data #type ref to data* in all views so they can be passed back and forth easily. 4. After entering the data in the selection screen, the user presses the 3!ave ,ariant3 button. +he action associated with button reads the select options to get the range tables first and fill the corresponding view attributes with them. +hen it navigates to 3!ave ,ariant3 view #passes the attribute with 5ire plug event handler method*. +he view let the user enter the input for variant name, description and /lobal indicator. 6. +he program prepares and stores the variant data in system table I" 7 #e1port to ###database*. 8sing table I" 7 places a restriction that the W A component name can.t be more than 49 characters to get the correct results, though you are free to create a new clustered table with same table fields as I" 7 # with more wide !:+5 field* or ,A:I to store variants. +he variants are stored as following in this e&le.
Area 2./D3-*",.D* is populated with -2W.# +he first 49 characters of user defined key #./D3-S*-0D* contains the W component name. +he last 4 characters are used to store the uni;ue variant se;uence number. +he first 0< characters of I" 7=P/MI contains the variant name, the 0> th character contains -%. if variant
is global variant and rest 4> characters will contain the variant description. +he field 8!?:A contains the name of the user who created the variant. +he program checks if there is no already e&isting variant this the same name. +he range tables for customer and plant are referencing to data. +hey are made dereference and store the data in range internal tables #... type range of @8"":, type range of W?:@!A because referenced data can.t be e&ported to database*.
+he both tables are e&ported to database to I <. +he retrieval process takes the following steps. "avigate to 3/et ,ariant3 view
:ead all the records from table I" 7 for area -2W. and key having a pattern of 49 characters of W component name. Bnly retain the records only that are either created by user or global.
/et the variant name from first 0< characters of I" 7=P/MI and description from 0C=<9 characters of same field.
!how the results in a table and let user choose one variant. Bnce the variant is chosen, import from database the range tables using the I and area from I" 7 record. Populate the referenced range tables #type ref to data* from customer and plant range table. "avigate to Main ,iew and set the range tables for select option. In ne&t blog, I will provide the code and detail of the !aving ,ariant functionality.