Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: Igor Garanichev от Май 07, 2010, 08:31:54 am
-
Доброе время суток.
Еcть программа, довольно старая. Генерировалась по sap query. В имени этой программы вроде и виден тот созданный запрос в sq01. Вроде и получается выйти на инфо-набор. Но при генерации получается программа немного с другим именем. И содержимое запроса отличается. Имя прежней программы aqcsxxxxxx=====yyyyy== - где xxxxxx - имя группы пользователей, а yyyyy - имя запроса, А новой - aqzzxxxxxx=====yyyyy==. Что означает aqsc и aqzz, непонятно, или это случайным образом формируется или программы с aqcs* - генерируются каким-то другим инструментом.
Прошу помочь разобраться с этой ситуацией.
-
Ну типа для группы функций кажется вот эта ФМ формирует имя программы для SAP Query, в общем там по немецки, но если очень надо можно расшифровать все...
function rsbq_report_name.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(USERGROUP)
*" VALUE(QUERY)
*" EXPORTING
*" VALUE(REPORTNAME)
*"----------------------------------------------------------------------
* Namenskonventionen
*
* AQbbxxqq: bb - Benutzergruppe
* qq - Query
* xx - 00..99 Mandant 000 bis 099 im Standardbereich
* A0..YZ Mandant 100 bis 999 im Standardbereich
* ZZ im globalen Standardbereich
data: report(8),
mand type i,
q type i,
r type i.
field-symbols <fc>.
report = 'AQ'. " fester Anfang
report+2(2) = usergroup. " Benutzergruppe
report+6(2) = query. " Query
mand = sy-mandt.
if mand < 100. " Mandanten bis 99 so belassen
unpack mand to report+4(2).
else.
mand = mand - 100. " normieren
q = 10 + ( mand div 36 ). " 1. Stelle
r = mand mod 36. " 2. Stelle
assign ziffbuch+q(1) to <fc>.
report+4(1) = <fc>.
assign ziffbuch+r(1) to <fc>.
report+5(1) = <fc>.
endif.
reportname = report.
endfunction.
-
Ну если еще дожать то aqzz - это имя группы функций которая типа генерит программу для Query, с версии 4.6 именно групп функций aqzz отмечена как устаревшая. Новая функция которая генерирует имя для Query:
FUNCTION RSAQ_REPORT_NAME.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(WORKSPACE) LIKE AQADEF-WSID
*" VALUE(USERGROUP) LIKE AQADEF-BGNAME
*" VALUE(QUERY) LIKE AQADEF-QUNAME
*" EXPORTING
*" VALUE(REPORTNAME) LIKE AQADEF-PGNAME
*"----------------------------------------------------------------------
* Namenskonventionen
*
* AQwwbbbbbbbbbbbbqqqqqqqqqqqqqq:
*
* ww - 00..99 Mandant 000 bis 099 im Standardbereich
* A0..YZ Mandant 100 bis 999 im Standardbereich
* ZZ im globalen Standardbereich
* bbbbbbbbbbbb - Benutzergruppe
* qqqqqqqqqqqqqq - Query
*
* in den ersten 30 Stellen werden Leerzeichen durch = ersetzt
DATA: REP TYPE PGNAMS,
MAND TYPE I,
Q TYPE I,
R TYPE I.
FIELD-SYMBOLS <FC>.
REP = 'AQ'. " fester Anfang
REP+4(12) = USERGROUP. " Benutzergruppe
REP+16(14) = QUERY. " Query
IF WORKSPACE = WS_STANDARD. " Standardbereich
MAND = SY-MANDT.
IF MAND < 100. " Mandanten bis 99 so belassen
UNPACK MAND TO REP+2(2).
ELSE.
MAND = MAND - 100. " normieren
Q = 10 + ( MAND DIV 36 ). " 1. Stelle
R = MAND MOD 36. " 2. Stelle
ASSIGN ZIFFBUCH+Q(1) TO <FC>.
REP+2(1) = <FC>.
ASSIGN ZIFFBUCH+R(1) TO <FC>.
REP+3(1) = <FC>.
ENDIF.
ELSE. " globale Bereiche
REP+2(2) = 'ZZ'.
ENDIF.
TRANSLATE REP USING ' ='.
REPORTNAME = REP.
ENDFUNCTION.
PS: Кстати функция RSBQ_DECODE_REPORT_NAME для старой версии и RSAQ_DECODE_REPORT_NAME для новой, вроде как декодирует имя программы назад на составляющие.
В общем похоже это просто имя для программы и на суть инфо-набора оно не влияет, т.е. просто будут разные имена программ, хотя возможно, что если покопать не имя, а то как создается программа, то будут отличия для старой и новой версий системы. Копать надо от класса разработок SQUE, там собраны группы функций и всех программ для работы с SAP Query.
-
RSAQ_DECODE_REPORT_NAME этот модуль помог. Удалось узнать что имя программы - для новой версии, и мандант 200. Но, к сожалению исходный запрос всё же не тот. Да и защищен пользователем, создавшим его. Получается, все запросы в SQ01 защищаются от изменений других пользователей?