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

Маски в SAP (языки ABAP и OpenSQL, транзакция SE38 и др.)



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  

Я прочитал пост и считаю его...
бесполезным
33%
 33%  [ 2 ]
отчасти полезным
33%
 33%  [ 2 ]
полезным
0%
 0%  [ 0 ]
нуждающимся в спойлерах (скрыть куски текста)
33%
 33%  [ 2 ]
Total Votes : 6

Author Message
Тимур Гудков
Участник
Участник



Joined: 30 Jun 2014
Posts: 4
Location: Санкт-Петербург

PostPosted: Thu Jul 03, 2014 10:34 am    Post subject: Маски в SAP (языки ABAP и OpenSQL, транзакция SE38 и др.) Reply with quote

Маски в SAP (языки ABAP и OpenSQL, транзакция SE38 и др.)
В масках используется символ «*», а есть ещё «+» и другие (языки ABAP и OpenSQL)
Чтобы из внутренней таблицы выбрать все записи, у которых в некотором поле стоит значение, начинающееся с буквы M и состоящее ровно из 4 символов, можно использовать оператор сравнения like 'M+++'. Т.е. для обозначения одного любого символа в языке ABAP используется маскирующий символ '+'. Для обозначения же любого количества любых символов — '*'.
Для выборок из таблиц базы данных используются соответственно маскирующие символы '_' и '%', в соответствии с языком Open SQL. Показывающая это программа с листингом ниже.
Code:
*---------------------------------------------------------------------*
* Report  ZMASK
*---------------------------------------------------------------------*
*  ------------------------T------------------T----------T------¬
*  ¦ Что?                  ¦ Файловая система ¦ Open SQL ¦ ABAP ¦
*  +-----------------------+------------------+----------+------+
*  ¦ Любое кол-во символов ¦        *         ¦     %    ¦   *  ¦
*  ¦ Один любой символ     ¦        ?         ¦     _    ¦   +  ¦
*  L-----------------------+------------------+----------+-------
* Смотри документацию к оператору like в выражении Select ... where A like B.
* Цитата:
* «The use of the wildcard characters "_" and "%" corresponds to the standard
* of SQL. In the rest of ABAP, the wildcard characters "+" and "*" are used in
* similar logical expressions, in particular when selection tables are used».
*---------------------------------------------------------------------*

Report  ZMASK.

Parameters: p_mask1 type dd02l-tabname default 'MAR_',
            p_mask2 type dd02l-tabname default 'MAR*',
            p_mask3 type dd02l-tabname default 'M+++'.
Types:
  begin of ty_s_data,
    tabname type dd02l-tabname,
  end of ty_s_data,
  ty_t_data type standard table of ty_s_data.
Data: gs_data type ty_s_data, gt_data type ty_t_data.
Select tabname from dd02l into corresponding fields of table gt_data
  where tabname like p_mask1.
Write / 'Все таблицы MAR* (максимум — от MAR1 до MARVCD):'.
New-line.
Loop at gt_data into gs_data where tabname cp p_mask2.
  Write gs_data.
  Add 1 to sy-index.
Endloop.
Write: / 'Итого таких таблиц —', sy-index, 'шт.'.
Clear sy-index.
Write / 'Только те таблицы M*, у которых в названии 4 символа, не больше:'.
New-line.
Loop at gt_data into gs_data where tabname cp p_mask3.
  Write gs_data.
  Add 1 to sy-index.
Endloop.
Write: / 'Итого таких таблиц —', sy-index, 'шт.'.


Для параметров | MAR_ | MAR* | M+++ | результат такой:
Code:
Все таблицы MAR* (максимум — от MAR1 до MARVCD):
MAR1                           MARA                           MARC
MARD                           MARE                           MARI
MARM                           MARU                           MARV
Итого таких таблиц —          9  шт.
Только те таблицы M*, у которых в названии 4 символа, не больше:
MAR1                           MARA                           MARC
MARD                           MARE                           MARI
MARM                           MARU                           MARV
Итого таких таблиц —          9  шт.[/quote]

Для параметров | MAR% | MAR* | M+++ | же результат такой:[quote]Все таблицы MAR* (максимум — от MAR1 до MARVCD):
MAR1                           MARA                           MARA1
MARAEXT                        MARAP                          MARASUBSCR
MARAV                          MARA_B                         MARA_C
MARA_MATNR                     MARA_TMP                       MARA_UEB
MARA_VRKME                     MARC                           MARCE
MARCH                          MARCHO1                        MARCO1
MARCP                          MARCU                          MARCV
MARCW                          MARC_DISP                      MARC_NFMAT
MARC_TMP                       MARC_UEB                       MARC_VRBMT
MARC_WERK                      MARD                           MARDE
MARDH                          MARDHO1                        MARDO1
MARDP                          MARDU                          MARD_EXT
MARD_F4HELP                    MARD_KEY                       MARD_LGORT
MARD_TMP                       MARD_UEB                       MARE
MAREC                          MARI                           MARKDOWN
MARKVINTF                      MARM                           MARM_TMP
MARM_UEB                       MARTSTATUS                     MART_RANGE
MARU                           MARV                           MARVCD
Итого таких таблиц —         54  шт.
Только те таблицы M*, у которых в названии 4 символа, не больше:
MAR1                           MARA                           MARC
MARD                           MARE                           MARI
MARM                           MARU                           MARV
Итого таких таблиц —          9  шт.


Чем это полезно (транзакция SE38 и др.)?
При поиске чего-нибудь по названию можно ставить «+» вместо «*», получая более точные результаты.
Например, так в транзакции SE38 можно найти все программы, начинающиеся на «BC» и заканчивающиеся на «GRID_xx», где «xx» — это ровно два символа.



! Маска «+» при поиске программы в SE38.PNG
 Description:
Маска «+» при поиске программы в SE38 (по клавише F4 с первого экрана)
 Filesize:  67.1 KB
 Viewed:  16892 Time(s)

! Маска «+» при поиске программы в SE38.PNG



zmask.txt
 Description:
Исходный код программы ZMASK

Download
 Filename:  zmask.txt
 Filesize:  1.89 KB
 Downloaded:  1517 Time(s)



Last edited by Тимур Гудков on Fri Jul 04, 2014 10:15 am; edited 2 times in total
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


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

PostPosted: Fri Jul 04, 2014 1:21 am    Post subject: Reply with quote

Вы во всех форумах этот опрос проводить будете? Confused
_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Тимур Гудков
Участник
Участник



Joined: 30 Jun 2014
Posts: 4
Location: Санкт-Петербург

PostPosted: Fri Jul 04, 2014 9:43 am    Post subject: Опросы Reply with quote

Если вы про вопрос о спойлерах и если кратко — то да, во всех.

Я провожу опрос для обратной связи с читателями (вижу, например, что тема о масках почти бесполезна). Вопрос о спойлерах ставлю для того, чтобы понять, нужны они или народу всё равно. Были бы спойлеры реализованы, вопроса бы не было, тихо-мирно поставил бы их и радовался. А так собираю мнение, чтобы при выявленной необходимости посетителей сайта в них обратить внимание администрации сайта на этот недостающий функционал.

Может, вы сообщите позицию администрации по спойлерам?

Я пока собираюсь ставить вопрос "нужны спойлеры" в каждом посте, где они бы смотрелись — там, где есть большие куски кода. Считаю такие посты полезными для индексирования поисковиками: вот раньше я не мог найти описание формата TDEDIF в интернете, а сейчас могу.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


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

PostPosted: Mon Jul 07, 2014 1:21 pm    Post subject: Re: Опросы Reply with quote

Тимур Гудков wrote:
Может, вы сообщите позицию администрации по спойлерам?

Позицию администрации сообщить не могу, т.к. не отношусь к ней Rolling Eyes
Про спойлеры - лично я стараюсь не выкладывать простыни кода.
Общее направление и ссылки - это безусловно полезно. Приводить целиком весь код интересно только для новичков.
Если хотите выкладывать код - для этого можете использовать жж или другие соцсети.

_________________
С уважением,
Удав.
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.