SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Как динамически передать дату в запрос?



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Stenat
Участник
Участник



Joined: 26 Feb 2009
Posts: 2

PostPosted: Mon Apr 05, 2010 10:23 am    Post subject: Как динамически передать дату в запрос? Reply with quote

Сдаюсь! Программирвоала до abap'a на Delphi под SQL Server и Oracle. Знаю T-SQL и PL/SQL, но в abap (как уже поняла) свой SQL, пока сложно поддающийся дрессировке с моей стороны. Помогите, пожалуйста, решить проблему.

Строю динамический запрос. Строка where формируется динамически.
В идеале вопроса 2:

1. Как динамически передать дату в запрос?
2. Почему не получается соединить таблицы с помощью left join? Только join...

И так:
Требуется в строку where подставить уже заранее определенное значение даты. Подставляю и получаю динамическую ошибку: поле "20100301" не найдено ни в одной из таблиц БД ... и т.д.

Как быть?

Code:
 DATA: l_SQLStr(256) TYPE C,
        tbl_SQLWhere LIKE TABLE OF l_SQLStr.

...

Текст запроса до отладки:
Code:
  select *
  into corresponding fields of gs_data_tmp
  from zdf_card_018004
       join /dfs/apprdata
         on  /dfs/apprdata~dokar = zdf_card_018004~dokar
         and /dfs/apprdata~doknr = zdf_card_018004~doknr
         and /dfs/apprdata~dokvr = zdf_card_018004~dokvr
         and /dfs/apprdata~doktl = zdf_card_018004~doktl
         and /dfs/apprdata~aprrole = '9'
  where (tbl_SQLWhere).


При отладке получаю значение tbl_SQLWhere:
1. zdf_card_018004~regdate in so_per and zdf_card_018004~delete_flag <> 'X'
2. and ( ( /dfs/apprdata~proc_date is NULL ) or ( /dfs/apprdata~proc_date is not NULL and 20100301 < /dfs/apprdata~proc_date ) )
3. and /dfs/apprdata~aprst in ('J','I','P')
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Apr 05, 2010 11:05 am    Post subject: Reply with quote

1.Для отладки избавьтесь от динамического Where:
Code:

  select *
  into corresponding fields of gs_data_tmp
  from zdf_card_018004
       join /dfs/apprdata
         on  /dfs/apprdata~dokar = zdf_card_018004~dokar
         and /dfs/apprdata~doknr = zdf_card_018004~doknr
         and /dfs/apprdata~dokvr = zdf_card_018004~dokvr
         and /dfs/apprdata~doktl = zdf_card_018004~doktl
         and /dfs/apprdata~aprrole = '9'
  where zdf_card_018004~regdate in so_per
    and zdf_card_018004~delete_flag <> 'X'
    and ( ( /dfs/apprdata~proc_date is NULL )
     or ( /dfs/apprdata~proc_date is not NULL
    and /dfs/apprdata~proc_date > '20100301' ) )
    and /dfs/apprdata~aprst in ('J','I','P')

Если в транзакции SE12 для поля proc_date таблицы /dfs/apprdata в 3-й колонке (нач. значения) стоит галочка, то IS NULL и IS NOT NULL не нужны.
Code:

  ( /dfs/apprdata~proc_date = SPACE )
     or ( /dfs/apprdata~proc_date > '20100301' )

Более того, это условие можно указать с помощью RANGE:
Code:
RANGES: r_proc_date FOR /dfs/apprdata-proc_date .
START-OF-SELECTION.
CLEAR r_proc_date.
r_proc_date-sign = 'I'.
r_proc_date-option = 'EQ'.
APPEND r_proc_date.
r_proc_date-option = 'GT'.
r_proc_date-low = '20100301'.
APPEND r_proc_date.
...
  AND /dfs/apprdata~proc_date IN r_proc_date
...


2.Для left join в условии соединения должны быть указаны только операторы равенства.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Stenat
Участник
Участник



Joined: 26 Feb 2009
Posts: 2

PostPosted: Mon Apr 05, 2010 12:37 pm    Post subject: Reply with quote

Спасибо за помощь, с места сдвинулась.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Apr 05, 2010 1:56 pm    Post subject: Reply with quote

Есть замечательный сайт - help.sap.com Wink
_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.