Witam
czy można dynamicznie zbudować zapytanie select?
Chodzi o zestaw pól w instrukcji.
Np lista pól podawana jest jako tabelka.
Z góry dzięki
K
Dynamiczna lista pól w instrukcji SELECT
-
- Posty: 2
- Rejestracja: pn kwie 30, 2007 12:01 pm
-
- Posty: 4
- Rejestracja: pn kwie 30, 2007 11:58 am
-
- Posty: 2
- Rejestracja: pn kwie 30, 2007 12:01 pm
-
- Posty: 4
- Rejestracja: pn kwie 30, 2007 11:58 am
-
- Posty: 99
- Rejestracja: sob kwie 28, 2007 8:34 am
- Been thanked: 1 time
Hej
napisałem kiedyś taki programik który pobiera listę pól tabeli.
Myślę ,że powinien on zastąpić w tych kodach moment podstawiania
pól do dynamicznej listy
report zabaper .
* Data
type-pools: abap.
data : it_field type abap_compdescr_tab,
wa_field type abap_compdescr,
ref_field type ref to cl_abap_structdescr.
* Selection screen
parameters: pa_tabn type DD02D-DBTABNAME .
START-OF-SELECTION.
ref_field ?= cl_abap_typedescr=>describe_by_name( pa_tabn ).
it_field[] = ref_field->components[].
* display data
loop at it_field into wa_field.
write:/ wa_field-name.
endloop.
pozdrawiam
abaper
napisałem kiedyś taki programik który pobiera listę pól tabeli.
Myślę ,że powinien on zastąpić w tych kodach moment podstawiania
pól do dynamicznej listy
report zabaper .
* Data
type-pools: abap.
data : it_field type abap_compdescr_tab,
wa_field type abap_compdescr,
ref_field type ref to cl_abap_structdescr.
* Selection screen
parameters: pa_tabn type DD02D-DBTABNAME .
START-OF-SELECTION.
ref_field ?= cl_abap_typedescr=>describe_by_name( pa_tabn ).
it_field[] = ref_field->components[].
* display data
loop at it_field into wa_field.
write:/ wa_field-name.
endloop.
pozdrawiam
abaper
-
- Posty: 99
- Rejestracja: sob kwie 28, 2007 8:34 am
- Been thanked: 1 time
Hej
kolejna wariacja "dynamiki"
program to coś ala Twoje własne se16
może się przydać
REPORT zabaper2 .
DATA: d_ref TYPE REF TO data,
d_ref2 TYPE REF TO data ,
i_alv_cat TYPE TABLE OF lvc_s_fcat,
ls_alv_cat LIKE LINE OF i_alv_cat.
PARAMETERS: pa_tabn TYPE dcobjdef-name OBLIGATORY .
DATA: BEGIN OF itab OCCURS 0.
INCLUDE STRUCTURE dntab.
DATA: END OF itab.
FIELD-SYMBOLS : <f_fs> TYPE table,
<f_fs1> TYPE table,
<f_fs2> TYPE ANY,
<f_fs3> TYPE table.
REFRESH itab.
CALL FUNCTION 'NAMETAB_GET'
EXPORTING
langu = sy-langu
tabname = pa_tabn
TABLES
nametab = itab
EXCEPTIONS
no_texts_found = 1.
LOOP AT itab .
ls_alv_cat-fieldname = itab-fieldname.
ls_alv_cat-ref_table = pa_tabn.
ls_alv_cat-ref_field = itab-fieldname.
APPEND ls_alv_cat TO i_alv_cat.
ENDLOOP.
* internal table build
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = i_alv_cat
IMPORTING
ep_table = d_ref.
ASSIGN d_ref->* TO <f_fs>.
SELECT * FROM (pa_tabn) INTO CORRESPONDING FIELDS OF TABLE <f_fs>.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = pa_tabn
TABLES
t_outtab = <f_fs>
EXCEPTIONS
program_error = 1
OTHERS = 2.
kolejna wariacja "dynamiki"
program to coś ala Twoje własne se16
może się przydać
REPORT zabaper2 .
DATA: d_ref TYPE REF TO data,
d_ref2 TYPE REF TO data ,
i_alv_cat TYPE TABLE OF lvc_s_fcat,
ls_alv_cat LIKE LINE OF i_alv_cat.
PARAMETERS: pa_tabn TYPE dcobjdef-name OBLIGATORY .
DATA: BEGIN OF itab OCCURS 0.
INCLUDE STRUCTURE dntab.
DATA: END OF itab.
FIELD-SYMBOLS : <f_fs> TYPE table,
<f_fs1> TYPE table,
<f_fs2> TYPE ANY,
<f_fs3> TYPE table.
REFRESH itab.
CALL FUNCTION 'NAMETAB_GET'
EXPORTING
langu = sy-langu
tabname = pa_tabn
TABLES
nametab = itab
EXCEPTIONS
no_texts_found = 1.
LOOP AT itab .
ls_alv_cat-fieldname = itab-fieldname.
ls_alv_cat-ref_table = pa_tabn.
ls_alv_cat-ref_field = itab-fieldname.
APPEND ls_alv_cat TO i_alv_cat.
ENDLOOP.
* internal table build
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = i_alv_cat
IMPORTING
ep_table = d_ref.
ASSIGN d_ref->* TO <f_fs>.
SELECT * FROM (pa_tabn) INTO CORRESPONDING FIELDS OF TABLE <f_fs>.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = pa_tabn
TABLES
t_outtab = <f_fs>
EXCEPTIONS
program_error = 1
OTHERS = 2.