Alternative to select-options..
Hi All,
I am using select-option for a char field having length 50 char.
But as per the std it takes only 45 chars.
But I want all the 50 char. Is there any alternative to select-option other than
parameter?
Thanx.
USL
HI
use ranges for this....
for syntax see this
Here both SELECT-OPTIONS & RANGES works for the same purpose. They both are used for the range selection from selection screen. The main diff. between them is, while we use SELECT-OPTIONS system implicitly creates the select options internal table which contains the fields of SIGN,OPTION,LOW & HIGH. But in case of RANGES, this internal table should be defined explicitly.
Eg. to SELECT-OPTIONS :
REPORT YARSELECT.
TABLES YTXLFA1.
SELECT-OPTIONS : VENDOR FOR YTXLFA1-LIFNR.
INITIALIZATION.
VENDOR-LOW = 1000. " It specifies the range starting value.
VENDOR-HIGH = 2000. " It specifies the range ending value.
VENDOR-OPTION = 'BT'. " specifies ranges value is in between.
VENDOR-SIGN = 'I'. "specifies both inclussive.
APPEND VENDOR.
SELECT LIFNR LAND1 NAME1 FROM LFA1 INTO TABLE ITAB
WHERE LIFNR IN VENDOR.
Eg. to RANGES:
REPORT YARRANGE.
TABLES YTXLFA1.
RANGES: VENDOR FOR YTXFLA1-LIFNR.
SELECT LIFNR LAND1 NAME1 FROM LFA1 INTO TABLE ITAB
WHERE LIFNR IN VENDOR.
Here with RANGES user has to design an internal table with fields -
SIGN,OPTION,LOW and HIGH EXPLICITLY.
>
Example:
select-options: bukrs for zstock-bukrs.
Should the user fill in 'ABFI' in BUKRS on the selection screen, BUKRS will look like this:
IEQABFI
This is because BUKRS is set as a table as follows:
begin of bukrs occurs 0,
SIGN(1) type c,
OPTION(2) type c,
LOW like bukrs,
HIGH like bukrs,
end of bukrs.
Now, when you create the following range, it will have the exact same fields set inside its table:
Ranges: bukrs for zstock-bukrs.
The difference is, because ranges doesn't show on the selection screen, you will have to fill it yourself, meaning you will have to fill bukrs-sign, bukrs-option, bukrs-low & bukrs-high all manually.
Some tips:
Sign is always I (for Include) or E (for Exclude)
Option can be a whole range, which includes:
EQ (Equal)
BT (Between))
CP (Contain Pattern)
So let's say you want to have the range check for all company codes not starting with AB, you will set your code as follow:
ranges: bukrs for zstock-bukrs.
bukrs-sign = 'E'. "Exclude
bukrs-option = 'CP'. "Pattern
bukrs-low = 'AB*'. "Low Value
bukrs-high = ''. "High Value
append bukrs.
Always remember to APPEND your range when you fill it, as the WHERE clause checks against the lines of the range table, not against the header line.
Hope this explains it well enough.
>
What does SIGN "I" & "E" mean?
The "I" stands for Include, and the "E" for Exclude.
The easiest way to learn how the range selections work is, create the following dummy program:
report dummy.
tables: mara.
select-options: matnr for mara-matnr.
start-of-selection.
loop at matnr.
write: / matnr-sign,
matnr-option,
matnr-low,
matnr-high.
endloop.
Run this program, and fill in a lot of junk into MATNR. Fill in some includes, some excludes, some ranges, etc., and you will soon realise how the system builds ranges (select-options). Once you know that, you can fill your own ranges quickly and efficiently.
reward if helpful
vivekanand
Similar Messages
-
Alternative for field exit on select-option
Good afternoon,
I know that field exit doesn't work for select-option (SAP Note 29377, point 11) but i want to know if it exists an alternative (I use SAP 4.6, and an update to ECC6 is expected next month).
The field exit would be the best option because we must add exit in many transaction (approximately 100) in little time.
Thanks for your answers,
Best regards,
Anne.Hi
A) Are there any way for debbuging field exit?
The trick to debug the field-exit is to download the data to a file on application server;
B) How run the field exits on field no editable?
It can't do it, because a field-exit is triggered as soon as a value of the field is changed.
D) Is used the field exit on version >= 4.6C
SAP doesn't support the field-exit from realese 4.7: the field-exit still works on the realese 4.7 and, I suppose, 5 and 6.00: but it doesn't work for enjoy transactions.
Anyway I believe it's better to replace the field-exit with a new solution from realese 4.7
Max -
Alternative for "check select-options" for select query.
hi all,
my report is using a "GET" syntax, followed by "check select-options".
My senior told me to replace the Get syntax with select query.
Now, my program also has dynamic selection screen.
the dynamic selection screen almost has all the fields of database table.
so, what is the way to replace this check select-options while applying select query?
can you tell me how dynamic selection screen fields are populated? are they stored in some internal table?
thanks for help.HI
Here is some points about LDB.
Logical databases are special ABAP programs that retrieve data and make it available to application programs. The most common use of logical databases is still to read data from database tables by linking them to executable ABAP programs.
However, from Release 4.5A, it has also been possible to call logical databases using the function module LDB_PROCESS. This allows you to call several logical databases from any ABAP program, nested in any way. It is also possible to call a logical database more than once in a program, if it has been programmed to allow this. This is particularly useful for programs with type 1.
Logical databases contain Open SQL statements that read data from the database. You do not therefore need to use SQL in your own programs. The logical database reads the program, stores them in the program if necessary, and then passes them line by line to the application program or the function module LDB_PROCESS using an interface work area
For further on LDB's refer to this link.
[http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9b5e35c111d1829f0000e829fbfe/content.htm]
Hope this will help.
Reward if helpful.
Sumit Agarwal -
"WHERE field IN select-options" alternative
I currently have a report that uses
SELECT-OPTIONS so_num FOR qmih-qmnum.
SELECT * FROM qmih INTO TABLE t_qmih
WHERE qmnum IN so_num.
Now, this works fine unless the user selects a large number of individual items in the select options, e.g. 7,000 individual qmnums, in which case I get an ABAP error.
The dump contains the following helpful information:
How to correct the error
The SAP Open SQL statement must be divided into several smaller units.
If the problem occurred due to the use of an excessively large table
in an IN itab construct, you can use the addition FOR ALL ENTRIES
instead.
When you use this addition, the statement is split into smaller units
according to the restrictions of the database system used.
You may able to find an interim solution to the problem
in the SAP note system. If you have access to the note system yourself,
use the following search criteria:
Could anyone give me an idea of how I could fix this?Hi Chandrasekhar,
very interesting statement but not necessarily correct.
Select-options declares a range-type internal table with header line. The number of table rows is limited by the system memory storage available.
Oracle database has a fixed limit of 32KB for the length of the select statement. The open SQL database interface will resolve the range table resulting in the right number of comparison expressions.
If the user puts too many values into select-options, he will probably copy single values which are represented by SIGN = 'I' and OPTION = 'EQ'.
Try this (example):
select-options:
s_matnr for mara-matnr.
data:
lt_value like hashed table of s_matnr-low with unique key table_line. "avoid duplicates
fiels-symbols:
<any> type any,
<value> type any.
loop at s_matnr assigning <any>
where sign = 'I' and option = 'EQ'.
assign component 'LOW' of structure <any> to <field>.
insert <field> into table t_value.
delete s_matnr.
endloop.
select ...
into table ...
from ...
for all entries in lt_value
where matnr = lt_value-table_line.
if lines( s_matnr ) > 0.
select ...
appending table ...
from ...
where matnr in s_matnr.
endif.
Now you've got them all.
Regards,
Clemens -
DYNP_VALUES_READ Limitations for multiple lines select options
Hi all !
First post here, but a tough one I think. Here is my inquiry :
I have worked on an specific abap function used in many long abap list reports. Theses reports are launched in background processing. The aim of this routine is to stop the report execution if a background job with the same selection parameters is already launched for the current user (to Prevent useless several launch of a time-expensive program).
Because this routine is dynamic, I read the selection screen of the current report with the function 'DYNP_VALUES_READ'. And I compare the result with the variant of the backgroung job (read with function 'RS_VARIANT_CONTENTS').
The real problem is that function "DYNP_VALUES_READ" only extract the first line of select-options. I found an alternative solution to extract the select options values (a dynamic assign with field symbols), but external conversions (for WBS elements for example ) are lost, so the comparison detects differences between the background job's variant values and the current selection screen values.
Does anybody know a way to get entire select options values from a selection screen just as they are displayed on screen ?
Thanks for reading my message
Message was edited by: Thomas BRICOUTThomas,
Perhaps the following code will help you. A function module in the code captures everything on the selection screen into an internal table. It doesn't actually capture the information the way you want it, but I believe you will be able to work with it to achieve your desired result. If it doesn't meet your needs, it is still useful for printing selection screen fields and their values.
Bruce
report zybttes2.
tables: zf137, " 137 General Ledger Document Details Table
zf137a. " 137 General Ledger Document Details Table, Archive
selection-screen begin of block b1 with frame title text-004." BCT003
parameters: p_zf137 radiobutton group xxx, " BCT003
p_zf137a radiobutton group xxx. " BCT003
selection-screen end of block b1. " BCT003
selection-screen begin of block parameter with frame title text-001.
selection-screen skip 1.
select-options: s_date for zf137-zzpostdat.
selection-screen skip 1.
selection-screen begin of line.
selection-screen comment 3(6) text-002.
selection-screen end of line.
selection-screen skip 1.
select-options: s_loan for zf137-zzloan.
selection-screen skip 1.
selection-screen begin of line.
selection-screen comment 3(6) text-003.
selection-screen end of line.
selection-screen skip 1.
select-options: s_ccentr for zf137-zzcostctr.
selection-screen skip 1.
selection-screen end of block parameter.
data: ww(3) type n.
data: zz(3) type c.
data: c1(1) type c value '0'.
do 2 times.
ww = ww + 1.
zz = ww. shift zz left deleting leading c1.
write: / zz.
enddo.
Capture and then print the selection screen fields and their values
data: begin of i_info occurs 20,
flag,
olength type x,
line like raldb-infoline,
end of i_info.
call function 'PRINT_SELECTIONS'
exporting
mode = 'TABLE'
rname = sy-cprog
rvariante = sy-slset
tables
infotab = i_info.
loop at i_info.
write: / i_info-line.
endloop.
write: / 'end'. -
Hi All,
I am trying to create select-option for selection screen for extraction of criteria data into application server. Can I create selection-screen through "ABAP Routine" in APD?
If not, so how we can create selection-screen for the same?
Regards
AnukulHi,
One way I can think of is.
a.Create a table (or use TVARVC) which can store all selection options required by the User.
b.Create an ABAP report, which lets users enter the parameters and fill this table.
c.When you trigger the APD, an User Exit will read the table and fill the variable values based on User's Selection,
d.The output file will contain data required by the Users.
Alternatively, you can also considering triggering the APD in the same ABAP.
Regards,
Advait -
Hi,
I want to add one data dictionary field as select option in a global class. I am trying to declare as table type. But i missed out something and it is not working. Could anybody help me out in this.
Regards,
Krishna.Hello Krishna
You may have a look at table type RSELOPTION (line type RSDSSELOPT).
Alternatively, you can use a trick to "import" select-options for a selection screen into your class:
How to pass a select-options to a class method
Passing select-options value in method
Regards
Uwe -
Hello Friends,
I am might be on my way to buy Thomas book ( advance BSP programming along with CD ) where I want to see how select-options works in BSP
Just intrested to know, if any one has already tried this and what was the experience ?
Or mean-while is there any alternative avaiable to do the same ?
Regards,Hi,
This book is ver good, and will give you very good understanding of the subject...
But to get more examples like the one you mentioned for select options, it will be good if you go through the sample BSP Applications...
Few links are as follows:
1) <a href="http://help.sap.com/saphelp_nw04/helpdata/en/c8/101c3a1cf1c54be10000000a114084/frameset.htm">BSP Tutorials</a>
2) <a href="http://help.sap.com/saphelp_nw04/helpdata/en/e9/bb153aab4a0c0ee10000000a114084/frameset.htm">Also refer to BSP Help -- Main Page</a>
Also check out the Sample Applications starting with <b>SBSP_*</b>
This should help you...
<b><i>Do reward each useful answer..!</i></b>
Thanks,
Tatvagna. -
Issue In Providing 255 Charcters From The Selection Screen Select-Option
Dear Guru,
I am searching for table field with having length = 255 character.
which i want to use in select-option for proving data from the selection screen.
I have found the table myhlp and it associated field allvals which is having length = 255.
I am using it as below in my selection screen for the value to be provided 255 character long.
SELECTION-SCREEN : BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
SELECT-OPTIONS : s_mlbody FOR myhlp-allvals NO INTERVALS.
SELECTION-SCREEN : END OF BLOCK b3.
Now when i am going for the multiple selection option --> It is providing me the Multiple selection popup and giving me the provision of provide multiple line .
But the issue is that --> For a particular single value line in the popup i am able to enter only 45 charcters not 255 character.
But i need to put 255 charcter for particular line in a single value..
Please give me some guideline how resolve this or any other alternative way of reading the 255 charcter from the selection screen
Thanks & regards
Saifur RahamanHi,
As said by A@s selction screen with table control will be a good option.
design a custom screen with SUBSCREEN as screeen attribute using tcode se51.
For table control sample - go through Tcode ABAPDOCU - abap user dialogs-screens-complex screen- table control
Try Following,
REPORT Zsample .
controls: tc type tableview using screen 200.
parameters: p_user type myhlp-username.
data: begin of itab occurs 50,
field1(255) type c,
end of itab.
data: i_out type standard table of myhlp.
SELECTION-SCREEN BEGIN OF TABBED BLOCK MAX FOR 22 LINES.
SELECTION-SCREEN TAB (25) TABS1 USER-COMMAND UCOMM1
DEFAULT SCREEN 200.
SELECTION-SCREEN END OF BLOCK MAX.
start-of-selection.
select * from myhlp into table i_out for all entries in itab
where username eq p_user
and allvals = itab-field1.
MODULE READ_ITAB INPUT.
insert itab index tc-current_line.
ENDMODULE. " READ_ITAB INPUT -
Web Dynpro ABAP - Select Option and ALV Component Usage
Hi,
I'm new in ABAP Web Dynpro and i was trying to follow the SDN tutorial
Web Dynpro ABAP - Select Option and ALV Component Usage
In this video, we create a new Web Dynpro ABAP component that uses both Select Options and ALV. Developers can learn the basic mechanisms for working with both of these reusable components.
Following the link: https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/media/uuid/39c54fe7-0b01-0010-0eb6-d63ac2bdd637
I implemented and generated the web dynpro with success but when i execute a test i get a dump on select-option definition.
Note
The following error text was processed in the system ECD : Exception condition "TYPE_NOT_FOUND" raised.
The error occurred on the application server ITAWSECCS01D_ECD_00 and in the work process 0 .
The termination type was: RABAX_STATE
The ABAP call stack was:
Method: DESCRIBE_BY_NAME of program CL_ABAP_TYPEDESCR=============CP
I went in debug and the piece of code dumping is:
lt_range_table =
wd_this->m_handler->create_range_table( i_typename = 'S_PROJ' ).
Is there someone who can help me?
Thanks in advance,
Stefano.Hi,
I'm new in ABAP Web Dynpro and i was trying to follow the SDN tutorial
Web Dynpro ABAP - Select Option and ALV Component Usage
In this video, we create a new Web Dynpro ABAP component that uses both Select Options and ALV. Developers can learn the basic mechanisms for working with both of these reusable components.
Following the link: https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/media/uuid/39c54fe7-0b01-0010-0eb6-d63ac2bdd637
I implemented and generated the web dynpro with success but when i execute a test i get
an error as
Note
The following error text was processed in the system EI6 : Exception condition "TYPE_NOT_FOUND" raised.
The error occurred on the application server EC6IDES_EI6_01 and in the work process 0 .
The termination type was: RABAX_STATE
The ABAP call stack was:
Method: DESCRIBE_BY_NAME of program CL_ABAP_TYPEDESCR=============CP
I have created a table zmy_table and trying to make USERID field as a select-options.I've written the code as shown below .
data: itab type standard table of zmy_table,
wa type zmy_table.
data:
node_employee type ref to if_wd_context_node,
elem_employee type ref to if_wd_context_element,
stru_employee type wd_this->element_employee ,
item_userid like stru_employee-userid.
navigate from <CONTEXT> to <EMPLOYEE> via lead selection
node_employee = wd_context->get_child_node( name = wd_this->wdctx_employee ).
@TODO handle not set lead selection
if ( node_employee is initial ).
endif.
get element via lead selection
elem_employee = node_employee->get_element( ).
@TODO handle not set lead selection
if ( elem_employee is initial ).
endif.
alternative access via index
Elem_Employee = Node_Employee->get_Element( Index = 1 ).
@TODO handle non existant child
if ( Elem_Employee is initial ).
endif.
get single attribute
elem_employee->get_attribute(
exporting
name = `USERID`
importing
value = item_userid ).
select *
from zmy_table
into table itab
where userid = item_userid.
node_employee = wd_context->get_child_node( 'EMPLOYEE' ).
node_employee->bind_elements( itab ).
Is there someone who can help me and can tell am i doing wrong?
Thanks in advance,
Dheeraj -
Hi Experts,
I am having a following code where i kept no intervals but there is
extension part inside it u have ranges is it possible to deactivate that ranges option in the extension part so that u can have only single values .
select-option:s_bukrs for t001-bukrs no intervals.
Thanks&Regards
Bhaskar Rao.MHi Bhaskar,
Use the following definition:
SELECT-OPTIONS s_bukrs for t001-bukrs NO INTERVALS NO-EXTENSION.
Alternately u can define S_BUKRS as a parameter since the above clause will permit only 1 value.
Regards
Chetan
PS:Reward points if this helps. -
Select-option + ALV on the same screen
hi,
how can we can get Select-option + ALV on the same screen.
Thanks,
Gauravhi gaurav,
Use the following code...It works...
TABLES: vbrk.
*CONSTANTS
CONSTANTS :
c_x(1) TYPE c VALUE 'X',
c_zxto TYPE vbak-auart VALUE 'ZXTO',
c_e TYPE spras VALUE 'E',
c_000000 TYPE posnr VALUE '000000',
c_ship_to TYPE parvw VALUE 'WE'. "Ship To Party
Table Types
TYPES: BEGIN OF ty_vbrk_vbrp,
vbeln TYPE vbrk-vbeln, "Billing doc
posnr TYPE vbrp-posnr, "Billing item
aubel TYPE vbrp-aubel, "Sales order
waerk TYPE vbrk-waerk, "Doc currency
mvgr1 TYPE vbrp-mvgr1, "Material group 1
mvgr3 TYPE vbrp-mvgr3, "Material group 3
mvgr4 TYPE vbrp-mvgr4, "Material group 4
matnr TYPE vbrp-matnr, "Material no
ntgew TYPE vbrp-ntgew, "Net wt
gewei TYPE vbrp-gewei, "Wt unit
kzwi1 TYPE vbrp-kzwi1, "Subtotal 1
kursk TYPE vbrp-kursk, "Exchange rate
END OF ty_vbrk_vbrp.
TYPES: BEGIN OF ty_data,
land1 TYPE vbpa-land1,
landx TYPE t005t-landx,
mvgr3 TYPE vbrp-mvgr3,
mvgr4 TYPE vbrp-mvgr4,
bezei3 TYPE tvm3t-bezei,
bezei4 TYPE tvm4t-bezei,
ntgew_tea_bag TYPE vbrp-ntgew,
ntgew_pkt_tea TYPE vbrp-ntgew,
ntgew_bulk_tea TYPE vbrp-ntgew,
kzwi1_tea_bag TYPE vbrp-kzwi1, "Subtotal 1 Tea Bag
kzwi1_pkt_tea TYPE vbrp-kzwi1, "Subtotal 1 Pkt Tea
kzwi1_bulk_tea TYPE vbrp-kzwi1, "Subtotal 1 Bulk Tea
ntgew_tot TYPE vbrp-ntgew,
kzwi1_tot TYPE vbrp-kzwi1,
line_color(4) TYPE c, "For line color
END OF ty_data.
TYPES: BEGIN OF ty_vbpa,
vbeln TYPE vbpa-vbeln,
land1 TYPE vbpa-land1,
END OF ty_vbpa.
TYPES: BEGIN OF ty_t005t,
land1 TYPE t005t-land1,
landx TYPE t005t-landx,
END OF ty_t005t.
TYPES: BEGIN OF ty_tvm3t,
mvgr3 TYPE tvm3-mvgr3,
bezei TYPE tvm3t-bezei,
END OF ty_tvm3t.
TYPES: BEGIN OF ty_tvm4t,
mvgr4 TYPE tvm4-mvgr4,
bezei TYPE tvm4t-bezei,
END OF ty_tvm4t.
DATA: it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp,
wa_vbrk_vbrp TYPE ty_vbrk_vbrp,
it_vbpa TYPE STANDARD TABLE OF ty_vbpa,
wa_vbpa TYPE ty_vbpa,
it_data TYPE STANDARD TABLE OF ty_data,
wa_data TYPE ty_data,
it_t005t TYPE STANDARD TABLE OF ty_t005t,
wa_t005t TYPE ty_t005t,
it_tvm3t TYPE STANDARD TABLE OF ty_tvm3t,
wa_tvm3t TYPE ty_tvm3t,
it_tvm4t TYPE STANDARD TABLE OF ty_tvm4t,
wa_tvm4t TYPE ty_tvm4t.
Global data for grand total
DATA:
w_tot_ntgew_tea_bag TYPE vbrp-ntgew,
w_tot_ntgew_pkt_tea TYPE vbrp-ntgew,
w_tot_ntgew_bulk_tea TYPE vbrp-ntgew,
w_tot_ntgew_tot TYPE vbrp-ntgew,
w_tot_kzwi1_tea_bag TYPE vbrp-kzwi1,
w_tot_kzwi1_pkt_tea TYPE vbrp-kzwi1,
w_tot_kzwi1_bulk_tea TYPE vbrp-kzwi1,
w_tot_kzwi1_tot TYPE vbrp-kzwi1.
Global data definitions for ALV
DATA :
ALV Grid container
w_alv_container TYPE REF TO cl_gui_custom_container,
ALV Grid
w_alv_grid TYPE REF TO cl_gui_alv_grid,
w_layo TYPE lvc_s_layo, "For layout
wt_fieldcat TYPE lvc_t_fcat, "For field catalog
okcode TYPE okcode, "OK Code
w_to(2) TYPE c,
w_title TYPE string.
---- START OF SELECTION SCREEN -
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
Billing Date
SELECT-OPTIONS: s_fkdat FOR vbrk-fkdat MEMORY ID vf OBLIGATORY no intervals.
SELECTION-SCREEN:SKIP 1.
SELECTION-SCREEN: END OF BLOCK b1.
---- END OF SELECTION SCREEN -
---- EVENT START-OF-SELECTION -
START-OF-SELECTION.
Get billing data from Delivery header(VBRK) and item (VBRP)
PERFORM get_billing_data.
Get ship-to country
PERFORM get_ship_to_data.
Get material group description 3
PERFORM get_material_group_3.
Get material group description 4
PERFORM get_material_group_4.
Form the ALV Grid title
PERFORM form_title.
Process data
PERFORM process_data.
Populate text descriptions
PERFORM populate_description.
---- EVENT END-OF-SELECTION -
END-OF-SELECTION.
Set the text to when date high is there
IF NOT s_fkdat-high IS INITIAL.
w_to = 'to'(c16).
ENDIF.
Call the scren 9000 for ALV Display
CALL SCREEN 9000.
*& Form get_billing_data
Get billing data from Delivery header(VBRK) and item (VBRP)
& store in internal table it_vbrk_vbrp
FORM get_billing_data .
REFRESH: it_vbrk_vbrp.
Select Billing data by joining VBRK & VBRP and store in it_vbrk_vbrp
SELECT a~vbeln
b~posnr
b~aubel
a~waerk
b~mvgr1
b~mvgr3
b~mvgr4
b~matnr
b~ntgew
b~gewei
b~kzwi1
b~kursk
FROM vbrk AS a INNER JOIN vbrp AS b
ON avbeln = bvbeln
INTO TABLE it_vbrk_vbrp
WHERE a~fkdat IN s_fkdat
Consider only non-deleted document
AND fksto = space
Billing doc type should be ZXTB
AND fkart = 'ZXTB'
AND pstyv = c_zxto.
*IF sy-subrc <> 0.
*MESSAGE i999(zttl) WITH 'No data is there'(m06).
*LEAVE LIST-PROCESSING.
*ENDIF.
ENDFORM. " get_billing_data
*& Form get_ship_to_data
Get Ship-To party data
FORM get_ship_to_data .
DATA: l_it_vbpa TYPE STANDARD TABLE OF ty_vbpa.
REFRESH: it_vbpa, it_t005t.
IF NOT it_vbrk_vbrp[] IS INITIAL.
SELECT vbeln
land1
FROM vbpa
INTO TABLE it_vbpa
FOR ALL ENTRIES IN it_vbrk_vbrp
WHERE vbeln = it_vbrk_vbrp-aubel
AND posnr = c_000000
AND parvw = c_ship_to.
IF sy-subrc <> 0.
MESSAGE i999(zttl) WITH 'Exporter country not maintained'(m02).
LEAVE LIST-PROCESSING.
ELSE.
SORT it_vbpa BY vbeln.
Create an unique and sorted driver table
l_it_vbpa[] = it_vbpa[].
SORT l_it_vbpa BY land1.
DELETE ADJACENT DUPLICATES FROM l_it_vbpa COMPARING land1.
IF NOT l_it_vbpa[] IS INITIAL.
Get the country description from T005t table
SELECT land1
landx
FROM t005t
INTO TABLE it_t005t
FOR ALL ENTRIES IN l_it_vbpa
WHERE spras = c_e
AND land1 = l_it_vbpa-land1.
IF sy-subrc = 0.
SORT it_t005t BY land1.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " get_ship_to_data
*& Form get_material_group_3
Get material group 3
FORM get_material_group_3 .
DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.
REFRESH: it_tvm3t.
Create an unique and sorted driver table
l_it_vbrk_vbrp[] = it_vbrk_vbrp[].
SORT l_it_vbrk_vbrp BY mvgr3.
DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr3.
IF NOT l_it_vbrk_vbrp[] IS INITIAL.
SELECT mvgr3
bezei
FROM tvm3t
INTO TABLE it_tvm3t
FOR ALL ENTRIES IN l_it_vbrk_vbrp
WHERE mvgr3 = l_it_vbrk_vbrp-mvgr3.
IF sy-subrc = 0.
SORT it_tvm3t BY mvgr3.
ENDIF.
ENDIF.
ENDFORM. " get_material_group_3
*& Form get_material_group_4
Get material group 4
FORM get_material_group_4 .
DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.
REFRESH: it_tvm4t.
Create an unique and sorted driver table
l_it_vbrk_vbrp[] = it_vbrk_vbrp[].
SORT l_it_vbrk_vbrp BY mvgr4.
DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr4.
IF NOT l_it_vbrk_vbrp[] IS INITIAL.
SELECT mvgr4
bezei
FROM tvm4t
INTO TABLE it_tvm4t
FOR ALL ENTRIES IN l_it_vbrk_vbrp
WHERE mvgr4 = l_it_vbrk_vbrp-mvgr4.
IF sy-subrc = 0.
SORT it_tvm4t BY mvgr4.
ENDIF.
ENDIF.
ENDFORM. " get_material_group_4
*& Form process_data
Process the data and do summation and populate final display table
FORM process_data .
LOOP AT it_vbrk_vbrp INTO wa_vbrk_vbrp.
CLEAR: wa_data, wa_vbpa.
READ TABLE it_vbpa INTO wa_vbpa WITH KEY
vbeln = wa_vbrk_vbrp-aubel
BINARY SEARCH.
IF sy-subrc = 0.
wa_data-land1 = wa_vbpa-land1.
ENDIF.
wa_data-mvgr3 = wa_vbrk_vbrp-mvgr3.
wa_data-mvgr4 = wa_vbrk_vbrp-mvgr4.
Do an unit conversion of the quamtity
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
input = wa_vbrk_vbrp-ntgew
NO_TYPE_CHECK = 'X'
ROUND_SIGN = ' '
unit_in = wa_vbrk_vbrp-gewei
unit_out = 'TO' "Metric tonn
IMPORTING
output = wa_vbrk_vbrp-ntgew
EXCEPTIONS
conversion_not_found = 1
division_by_zero = 2
input_invalid = 3
output_invalid = 4
overflow = 5
type_invalid = 6
units_missing = 7
unit_in_not_found = 8
unit_out_not_found = 9
OTHERS = 10.
IF sy-subrc <> 0.
wa_vbrk_vbrp-ntgew = wa_vbrk_vbrp-ntgew.
ENDIF.
Convert the currency from Customer currency to local
currency by multiplying with kursk
wa_vbrk_vbrp-kzwi1 = wa_vbrk_vbrp-kzwi1 * wa_vbrk_vbrp-kursk.
Convert the amount to Lacks by dividing with 100000
wa_vbrk_vbrp-kzwi1 = wa_vbrk_vbrp-kzwi1 / 100000. "DV1K905028
When MVGR1 is between A to F use the amount as TEA_BAG
IF wa_vbrk_vbrp-mvgr1 BETWEEN 'A' AND 'F'.
wa_data-ntgew_tea_bag = wa_vbrk_vbrp-ntgew.
wa_data-kzwi1_tea_bag = wa_vbrk_vbrp-kzwi1.
ENDIF.
When MVGR1 is between G to L use the amount as TEA_BAG
IF wa_vbrk_vbrp-mvgr1 BETWEEN 'G' AND 'L'.
wa_data-ntgew_pkt_tea = wa_vbrk_vbrp-ntgew.
wa_data-kzwi1_pkt_tea = wa_vbrk_vbrp-kzwi1.
ENDIF.
When MVGR1 is between G to L use the amount as TEA_BAG
IF wa_vbrk_vbrp-mvgr1 = 'M'.
wa_data-ntgew_bulk_tea = wa_vbrk_vbrp-ntgew.
wa_data-kzwi1_bulk_tea = wa_vbrk_vbrp-kzwi1.
ENDIF.
COLLECT wa_data INTO it_data.
ENDLOOP.
ENDFORM. " process_data
*& Form populate_description
Populate the description fields
FORM populate_description .
LOOP AT it_data INTO wa_data.
CLEAR: wa_t005t.
READ TABLE it_t005t INTO wa_t005t WITH KEY land1 = wa_data-land1
BINARY SEARCH.
IF sy-subrc = 0.
wa_data-landx = wa_t005t-landx.
ENDIF.
Read description of Material group 3
CLEAR wa_tvm3t.
READ TABLE it_tvm3t INTO wa_tvm3t WITH KEY
mvgr3 = wa_data-mvgr3
BINARY SEARCH.
IF sy-subrc = 0.
wa_data-bezei3 = wa_tvm3t-bezei.
ENDIF.
Read description of Material group 4
CLEAR wa_tvm4t.
READ TABLE it_tvm4t INTO wa_tvm4t WITH KEY
mvgr4 = wa_data-mvgr4
BINARY SEARCH.
IF sy-subrc = 0.
wa_data-bezei4 = wa_tvm4t-bezei.
ENDIF.
Get the grand totals
wa_data-ntgew_tot = wa_data-ntgew_tea_bag
+ wa_data-ntgew_pkt_tea
+ wa_data-ntgew_bulk_tea.
wa_data-kzwi1_tot = wa_data-kzwi1_tea_bag
+ wa_data-kzwi1_pkt_tea
+ wa_data-kzwi1_bulk_tea.
MODIFY it_data FROM wa_data TRANSPORTING landx
bezei3
bezei4
ntgew_tot
kzwi1_tot.
Summattion of grand totals
w_tot_ntgew_tea_bag = w_tot_ntgew_tea_bag + wa_data-ntgew_tea_bag.
w_tot_ntgew_pkt_tea = w_tot_ntgew_pkt_tea + wa_data-ntgew_pkt_tea.
w_tot_ntgew_bulk_tea = w_tot_ntgew_bulk_tea + wa_data-ntgew_bulk_tea.
w_tot_ntgew_tot = w_tot_ntgew_tot + wa_data-ntgew_tot.
w_tot_kzwi1_tea_bag = w_tot_kzwi1_tea_bag + wa_data-kzwi1_tea_bag.
w_tot_kzwi1_pkt_tea = w_tot_kzwi1_pkt_tea + wa_data-kzwi1_pkt_tea.
w_tot_kzwi1_bulk_tea = w_tot_kzwi1_bulk_tea + wa_data-kzwi1_bulk_tea.
w_tot_kzwi1_tot = w_tot_kzwi1_tot + wa_data-kzwi1_tot.
ENDLOOP.
Append a grand Total row at the end
CLEAR wa_data.
wa_data-landx = 'Grand Total:'.
wa_data-ntgew_tea_bag = w_tot_ntgew_tea_bag.
wa_data-ntgew_pkt_tea = w_tot_ntgew_pkt_tea.
wa_data-ntgew_bulk_tea = w_tot_ntgew_bulk_tea.
wa_data-ntgew_tot = w_tot_ntgew_tot.
wa_data-kzwi1_tea_bag = w_tot_kzwi1_tea_bag.
wa_data-kzwi1_pkt_tea = w_tot_kzwi1_pkt_tea.
wa_data-kzwi1_bulk_tea = w_tot_kzwi1_bulk_tea.
wa_data-kzwi1_tot = w_tot_kzwi1_tot.
wa_data-line_color = 'C310'.
APPEND wa_data TO it_data.
ENDFORM. " populate_description
*& Module STATUS_9000 OUTPUT
Initialise PF-STATUS and title
MODULE status_9000 OUTPUT.
SET PF-STATUS 'MAIN9000'.
SET TITLEBAR 'TITLE_9000'.
ENDMODULE. " STATUS_9000 OUTPUT
*& Module initialize_9000 OUTPUT
text
MODULE initialize_9000 OUTPUT.
Call the ALV grid to display data
SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE text-001.
Billing Date
SELECT-OPTIONS: s_fkdat1 FOR vbrk-fkdat MEMORY ID vf OBLIGATORY NO-EXTENSION.
SELECTION-SCREEN:SKIP 1.
SELECTION-SCREEN: END OF BLOCK B2.
PERFORM display_alv_grid.
ENDMODULE. " initialize_9000 OUTPUT
*& Module USER_COMMAND_9000 INPUT
Module to handle User Command
MODULE user_command_9000 INPUT.
CASE okcode.
WHEN 'BACK'.
SET SCREEN 0.
CLEAR okcode.
LEAVE SCREEN.
WHEN 'CANCEL'.
SET SCREEN 0.
CLEAR okcode.
LEAVE SCREEN.
WHEN 'EXIT'.
CLEAR okcode.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
*& Form display_alv_grid
Display the data in ALV Grid
FORM display_alv_grid .
IF w_alv_container IS INITIAL.
Create the alv container object
CREATE OBJECT w_alv_container
EXPORTING
container_name = 'ALV_GRID'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).
ENDIF.
Create the ALV grid object. The parent is the ALV container
CREATE OBJECT w_alv_grid
EXPORTING
i_parent = w_alv_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).
ENDIF.
This subrotine creates the field catalog and
store in internal table lt_fieldcat
PERFORM prepare_fieldcat CHANGING wt_fieldcat.
Layout design
w_layo-no_toolbar = ''.
Not to allow totaling feature
w_layo-no_totline = c_x.
Report title
w_layo-grid_title = text-004.
w_layo-grid_title = w_title.
w_layo-zebra = c_x. "Alternating line color (striped)
w_layo-cwidth_opt = c_x. "Optimize column width
w_layo-sel_mode = 'A'. "Selection Mode
Name of the color field
w_layo-info_fname = 'LINE_COLOR'."For row color
Call the method to display the data in ALV grid
CALL METHOD w_alv_grid->set_table_for_first_display
EXPORTING
i_save = 'A'
is_layout = w_layo
CHANGING
it_outtab = it_data[]
it_fieldcatalog = wt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE e999(zttl) WITH text-t04.
ENDIF.
ELSE.
If the container & grid object is alreadt there reuse them
CALL METHOD w_alv_grid->refresh_table_display
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE e999(zttl) WITH text-t04.
ENDIF.
ENDIF.
IF okcode = 'CANCEL'.
EXIT.
ENDIF.
ENDFORM. " display_alv_grid
*& Form prepare_fieldcat
Prepare the list of fields to be displayed *
<--P_WT_FIELDCAT text
FORM prepare_fieldcat CHANGING pt_fieldcat TYPE lvc_t_fcat.
DATA : lx_fcat TYPE lvc_s_fcat.
REFRESH: pt_fieldcat.
**List of fields to be displayed should be added in pt_fieldcat
Customer PO no
CLEAR lx_fcat.
lx_fcat-fieldname = 'LANDX'.
lx_fcat-ref_field = 'T005T'.
lx_fcat-ref_table = 'T005T'.
lx_fcat-coltext = 'Market Name'(c01).
lx_fcat-seltext = text-c01.
APPEND lx_fcat TO pt_fieldcat.
Flavour type
CLEAR lx_fcat.
lx_fcat-fieldname = 'BEZEI3'.
lx_fcat-ref_field = 'BEZEI'.
lx_fcat-ref_table = 'TVM3'.
lx_fcat-coltext = 'Flavour Type'(c02).
lx_fcat-seltext = text-c02.
APPEND lx_fcat TO pt_fieldcat.
Tea type
CLEAR lx_fcat.
lx_fcat-fieldname = 'BEZEI4'.
lx_fcat-ref_field = 'BEZEI4'.
lx_fcat-ref_table = 'TVM4'.
lx_fcat-coltext = 'Tea Type.'(c03).
lx_fcat-seltext = text-c03.
APPEND lx_fcat TO pt_fieldcat.
Tea Bag Quantity in KG
CLEAR lx_fcat.
lx_fcat-fieldname = 'NTGEW_TEA_BAG'.
lx_fcat-ref_field = 'NTGEW'.
lx_fcat-ref_table = 'VBRP'.
lx_fcat-coltext = 'Tea Bag(MT)'(c04).
lx_fcat-seltext = text-c04.
APPEND lx_fcat TO pt_fieldcat.
PKT Tea Quantity in KG
CLEAR lx_fcat.
lx_fcat-fieldname = 'NTGEW_PKT_TEA'.
lx_fcat-ref_field = 'NTGEW'.
lx_fcat-ref_table = 'VBRP'.
lx_fcat-coltext = 'PKT Tea(MT)'(c05).
lx_fcat-seltext = text-c05.
APPEND lx_fcat TO pt_fieldcat.
Bulk Tea Quantity in MT
CLEAR lx_fcat.
lx_fcat-fieldname = 'NTGEW_BULK_TEA'.
lx_fcat-ref_field = 'NTGEW'.
lx_fcat-ref_table = 'VBRP'.
lx_fcat-coltext = 'Bulk Tea(MT)'(c06).
lx_fcat-seltext = text-c06.
APPEND lx_fcat TO pt_fieldcat.
Total Quantity in MT
CLEAR lx_fcat.
lx_fcat-fieldname = 'NTGEW_TOT'.
lx_fcat-ref_field = 'NTGEW'.
lx_fcat-ref_table = 'VBRP'.
lx_fcat-coltext = 'Total(MT)'(c07).
lx_fcat-seltext = text-c07.
APPEND lx_fcat TO pt_fieldcat.
Tea Bag Quantity in KG
CLEAR lx_fcat.
lx_fcat-fieldname = 'KZWI1_TEA_BAG'.
lx_fcat-ref_field = 'KZWI1'.
lx_fcat-ref_table = 'VBRP'.
lx_fcat-coltext = 'Tea Bag(FOB-Lacs)'(c08).
lx_fcat-seltext = text-c08.
APPEND lx_fcat TO pt_fieldcat.
PKT Tea Price in Lakh
CLEAR lx_fcat.
lx_fcat-fieldname = 'KZWI1_PKT_TEA'.
lx_fcat-ref_field = 'KZWI1'.
lx_fcat-ref_table = 'VBRP'.
lx_fcat-coltext = 'PKT Tea(FOB-Lacs)'(c09).
lx_fcat-seltext = text-c09.
APPEND lx_fcat TO pt_fieldcat.
PKT Tea Quantity in KG
CLEAR lx_fcat.
lx_fcat-fieldname = 'KZWI1_BULK_TEA'.
lx_fcat-ref_field = 'KZWI1'.
lx_fcat-ref_table = 'VBRP'.
lx_fcat-coltext = 'Bulk Tea(FOB-Lacs)'(c10).
lx_fcat-seltext = text-c10.
APPEND lx_fcat TO pt_fieldcat.
Total amount
CLEAR lx_fcat.
lx_fcat-fieldname = 'KZWI1_TOT'.
lx_fcat-ref_field = 'KZWI1'.
lx_fcat-ref_table = 'VBRP'.
lx_fcat-coltext = 'Total(FOB-Lacs)'(c11).
lx_fcat-seltext = text-c11.
APPEND lx_fcat TO pt_fieldcat.
ENDFORM. " prepare_fieldcat
*& Form form_title
Form the ALV Title
FORM form_title .
DATA: l_date(10) TYPE c.
CONCATENATE s_fkdat-low6(2) s_fkdat-low4(2) s_fkdat-low(4)
INTO l_date SEPARATED BY '/'.
CONCATENATE 'TTD - Statement of Export' '-From' l_date INTO
w_title SEPARATED BY space.
CLEAR l_date.
IF NOT s_fkdat-high IS INITIAL.
CONCATENATE s_fkdat-high6(2) s_fkdat-high4(2) s_fkdat-high(4)
INTO l_date SEPARATED BY '/'.
CONCATENATE w_title 'to' l_date INTO w_title SEPARATED BY space.
ENDIF.
ENDFORM. " form_title -
Hi,
I have nearly 10 selection screen items. Based on these values, i'm dispalying the relevant data as per the selection.
I know the current framework doesnot provide the Variant save/retriev mechanism of teh select options.
I have 3 buttons, save, delete, show variant.
How can we acheieve the same variants ourselves.
Please share your views/workarounds on the ways of acheiving it.
I donot really know the FM we use for general variant are of any help here..
Thomas: Any workarounds.
Regards,
Lekha.I am messing around with POWL as an alternative to ALVs. So question is:
User creates a new query, and saves it (sort of like a variant). How can the user now Delete an obsolete query???
Thanks,
- Tim
Edited by: Tim Hughes on Feb 10, 2010 9:19 PM -
Report help for multiple Date Select options
Hi Friends,
For a particular year wise report, the client wants 12 date select-options which are changeable and informal every year .The report will also be displayed as per the given date selection period wise. Please help me how to fetch the datas from the table as per the given selection period. Currently the report have one date select-option where the user gives selection range as 1.04 to 31.03. It's related to EB power consumption report and hence the new requirement on date selection which are informal and not a fixed date of every year.
Ex:Selection-Screen
Period 1 : 08.04.2008 to 12.05.2008
Period 2: 12.05.2008 to 20.06.2008
Period 3: 21.06.2008 to 28.07.2008
Period 4: 29.07.2008 to 15.08.2008
Period 5: 15.08.2008 to 21.09.2008
Period 6 : 21.09.2008 to 14.10.2008
The data will derive as per the above selection ranges.......
Please advise with example.
thanks & regards
Sankar.>
sankar babu wrote:
> Ex:Selection-Screen
> Period 1 : 08.04.2008 to 12.05.2008
> Period 2: 12.05.2008 to 20.06.2008
> Period 3: 21.06.2008 to 28.07.2008
> Period 4: 29.07.2008 to 15.08.2008
> Period 5: 15.08.2008 to 21.09.2008
> Period 6 : 21.09.2008 to 14.10.2008
Hi,
In this case just derive all records matching dates between 08.04.2008 (low in first select-options) and 14.10.2008(high in last select-options.
Also my advice is to use a single select-options and prompt the user to give the dates as ranges in the multiple entries dialog which can be opened by clicking the button on the right side of the select-options.
Regards
Karthik D -
How To... Change the Data Type for a SELECT-OPTIONS at run time.
Hello,
I am trying to restrict the values available for entry into a SELECT-OPTIONS at run time depending on user input.
The logic is as follows. The user has two input fields. A PARAMETER field which has the type RSDIOBJNM and allows them to choose an InfoObject. And the user has a SELECT-OPTIONS field to allow them to select the Characteristic values for that InfoObject.
I would like the following example to be possible:
The user enters 0MATERIAL into the PARAMETER. When the user clicks on the SELECT-OPTIONS control code will derive a list of possible options the user can enter in the SELECT-OPTIONS. In this case only values found in the master data or at least no values greater than 18 characters.
I have looked at the following function module SELECT_OPTIONS_RESTRICT and this do not appear to be helpful as they only restrict on the signs allowed for the values (unless I misunderstand, it is a complex function module!).
The code I have so far is (thus the user enters a InfoObject into p_char1 and the select options so_char1 should only accept active values of that InfoObject):
declaration of variables for user interface
DATA c_char(32) TYPE c.
declaration of count variable
DATA i_count TYPE i.
declaration of user interface
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
PARAMETERS: p_ipack TYPE RSLOGDPID.
SELECTION-SCREEN END OF BLOCK a1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
PARAMETERS: p_char1 TYPE RSDIOBJNM.
SELECT-OPTIONS: so_char1 for c_char NO INTERVALS.
PARAMETERS: p_char2 TYPE RSDIOBJNM.
SELECT-OPTIONS: so_char2 for c_char NO INTERVALS.
PARAMETERS: p_char3 TYPE RSDIOBJNM.
SELECT-OPTIONS: so_char3 for c_char NO INTERVALS.
SELECTION-SCREEN END OF BLOCK b1.
Is what I am trying to do possible???
Thanks for any help. Ross.You really want to restrict possible values of a select-option based on another field, not change the length of type of the select-option field, right?
Here is what you do: Code a custom F4 value help for the select-option at event AT SELECTION-SCREEN ON VALUE REQUEST FOR.. The first thing you do here is read the value of the parameter field (p_ipack in your example). You can use function module DYNP_VALUES_READ. Based on this value, you can propose values for the select-option fields. Note that the use can still enter whatever s(he) wishes in to the select-option field without pressing F4. In this case, you will have to code some input validations taking into account the value in the p_ipack field.
Maybe you are looking for
-
My Zoom in Gesture Doesn't Work on Safari How can i make it work?
I just bought a mac book pro 2011 and i know that the zoom in gesture used to work on safari at first but it doesnt anymore how can i make it work again?
-
0xc004e003 error while activating Win 7 Pro on Portege R930-17L
Toshiba Portege R930-17L S/N: 5D016093H (If I search on Toshiba after SN I only find it in Toshiba - Ukraine) Bought from "Sigmanet" online shop in Romania. It has a sticker on the back side w/ Windows 8 Pro (small sticker without product key). It ar
-
i have a credit of 15.08 and want to purchase songs totaling 14.97 but keeps says insufficient funds... how is that??
-
Generic interface in abstract super class
hello java folks! i have a weird problem with a generics implementation of an interface which is implemented in an abstract class. if i extend from this abstract class and try to override the method i get this compiler error: cannot directly invoke a
-
hi all, just went thru the rules and regulation posted by juan...nice.. my query 1)in sap landscape what is the number of clients we should be having in DEV QAS and PRD system. a)as i am able to understand