‎2006 Sep 19 4:02 PM
Hi to all!!
I have the following problem:
I got a paraneters statement where the user is to choose the month of the year,once i have the month, i need to make a query on a database(select field_name) of a field whose name deppend on the month that the user chose before, is it possible?
What I need? I think i can do it using field simbols but I've never worked with field simbols and I have no time to learn it now.
Thanks everybody
‎2006 Sep 19 4:32 PM
Hi,
Use syntax :
SELECT (field) FROM ...
Best regards,
Guillaume
PS: You've got the same for the name of the table, the WHERE condition, etc...
‎2006 Sep 19 4:34 PM
You can do a dynamic where condition, highlight the <b>where</b> and hit F1, you will find an example.
Never mind, I thought you wanted a dynamic where check the one posted earlier.
hith
Sunil Achyut
Message was edited by: Sunil Achyut
‎2006 Sep 19 5:18 PM
PARAMETERS : TABLE(8),
NROFJOB(2) TYPE N DEFAULT 2.
DATA: JUNK(4096),
DOCLOW(4096),
RECS(8) TYPE P VALUE 0,
MAXDOC(8) TYPE P VALUE 0.
SELECT * FROM (TABLE)
INTO JUNK
WHERE MANDT EQ SY-MANDT
ORDER BY PRIMARY KEY.
RECS = RECS + 1.
IF DOCLOW = SPACE.
DOCLOW = JUNK.
ENDIF.please award points if found helpful
‎2006 Sep 19 5:18 PM
Hi,,
tables: mara.
data: begin of t_fieldname occurs 0,
fieldname type dd03l-fieldname,
end of t_fieldname.
t_fieldname-fieldname = 'MATNR'.
append t_fieldname.
SELECT single (T_fieldname)
into corresponding fields of mara
from mara
where matnr = 'adfsf'.
write: / sy-subrc.
Thanks,
Naren
‎2006 Sep 19 5:48 PM
Hi,
<b>Below code is the Simple one:</b>
<b>DATA: DYN_FIELD(15)
SELECT single (DYN_FIELD)
into corresponding fields of <IT_TABLE>
from <TABLE> where XXX = YYY.</b>
-
****************----
This is the complex program, have a look at it ...
REPORT zdany_dynamic_select.
* We use some parameters to dynamically control the select, this is not very
* clever but this is just a test program !!
PARAMETER : p_tabnam TYPE tabname DEFAULT 'SFLIGHT',
p_selfl1 TYPE edpline DEFAULT 'CARRID',
p_selfl2 TYPE edpline DEFAULT 'CONNID',
p_selfl3 TYPE edpline DEFAULT 'FLDATE',
p_selfl4 TYPE edpline DEFAULT 'PRICE',
p_selfl5 TYPE edpline DEFAULT 'CURRENCY',
p_where1 TYPE edpline DEFAULT 'PRICE > 300',
p_where2 TYPE edpline DEFAULT 'AND CURRENCY = ''EUR'''.
FIELD-SYMBOLS : <lt_outtab> TYPE ANY TABLE,
<ls_outtab> TYPE ANY,
<l_fld> TYPE ANY.
DATA: lt_where TYPE TABLE OF edpline,
lt_sel_list TYPE TABLE OF edpline,
lt_group TYPE TABLE OF edpline,
l_having TYPE string,
l_wa_name TYPE string,
l_sel_list TYPE edpline,
dref TYPE REF TO data,
itab_type TYPE REF TO cl_abap_tabledescr,
struct_type TYPE REF TO cl_abap_structdescr,
elem_type TYPE REF TO cl_abap_elemdescr,
comp_tab TYPE cl_abap_structdescr=>component_table,
comp_fld TYPE cl_abap_structdescr=>component.
TYPES: f_count TYPE i.
* Creation of the output table including a non standard field, f_count
* see ABAP FAQ #14 for more information on this topic
struct_type ?= cl_abap_typedescr=>describe_by_name( p_tabnam ).
elem_type ?= cl_abap_elemdescr=>describe_by_name( 'F_COUNT' ).
comp_tab = struct_type->get_components( ).
* We remove the unnecessary fields
LOOP AT comp_tab INTO comp_fld.
IF comp_fld-name <> p_selfl1 AND
comp_fld-name <> p_selfl2 AND
comp_fld-name <> p_selfl3 AND
comp_fld-name <> p_selfl4 AND
comp_fld-name <> p_selfl5.
DELETE TABLE comp_tab WITH TABLE KEY name = comp_fld-name.
ENDIF.
ENDLOOP.
comp_fld-name = 'F_COUNT'.
comp_fld-type = elem_type.
APPEND comp_fld TO comp_tab.
struct_type = cl_abap_structdescr=>create( comp_tab ).
itab_type = cl_abap_tabledescr=>create( struct_type ).
l_wa_name = 'l_WA'.
CREATE DATA dref TYPE HANDLE itab_type.
ASSIGN dref->* TO <lt_outtab>.
CREATE DATA dref TYPE HANDLE struct_type.
ASSIGN dref->* TO <ls_outtab>.
* Creation of the selection fields and the "group by" clause
APPEND p_selfl1 TO lt_sel_list.
APPEND p_selfl1 TO lt_group.
APPEND p_selfl2 TO lt_sel_list.
APPEND p_selfl2 TO lt_group.
APPEND p_selfl3 TO lt_sel_list.
APPEND p_selfl3 TO lt_group.
APPEND p_selfl4 TO lt_sel_list.
APPEND p_selfl4 TO lt_group.
APPEND p_selfl5 TO lt_sel_list.
APPEND p_selfl5 TO lt_group.
APPEND 'COUNT(*) AS F_COUNT' TO lt_sel_list.
* creation of the "where" clause
APPEND p_where1 TO lt_where.
APPEND p_where2 TO lt_where.
* Creation of the "having" clause
l_having = 'count(*) >= 1'.
* THE dynamic select
SELECT (lt_sel_list)
FROM (p_tabnam)
INTO CORRESPONDING FIELDS OF TABLE <lt_outtab>
WHERE (lt_where)
GROUP BY (lt_group)
HAVING (l_having)
ORDER BY (lt_group).
* display of the results
LOOP AT <lt_outtab> ASSIGNING <ls_outtab>.
LOOP AT comp_tab INTO comp_fld.
ASSIGN COMPONENT comp_fld-name OF STRUCTURE <ls_outtab> TO <l_fld>.
WRITE: <l_fld>.
ENDLOOP.
SKIP.
ENDLOOP.Have a look at the link, this link will have lot of examples :-
http://www.susanto.id.au/papers/DynOpenSQL.asp
Regards
Sudheer
‎2006 Sep 19 6:16 PM
try this..
parameters : p_field like dd03l-fieldname.
select ( p_field ) from ztable into v_var.