Нота 1901393 + пересоздание всех RFC и MYSELF-соединений
четверг, 17 декабря 2015 г.
среда, 16 декабря 2015 г.
Мы хотим ALPHA в живой справочник!
se16 -> RSDCHABAS -> фильтруем инфообъекты
Выделяем строки, редактирование -> CONVEXIT = 'ALPHA', LOWERCASE = 'X' -> сохранить -> перенос записей
Делаем перенос содержимого данной таблицы.
Далее, формируем запрос с активацией нужного инфо-объекта и всеми трансформациями, в которые он включен (иначе в трансформациях не обновится код обработки ALPHA).
Переносим всё это дело и идём дальше, искать другие косяки.
Выделяем строки, редактирование -> CONVEXIT = 'ALPHA', LOWERCASE = 'X' -> сохранить -> перенос записей
Делаем перенос содержимого данной таблицы.
Далее, формируем запрос с активацией нужного инфо-объекта и всеми трансформациями, в которые он включен (иначе в трансформациях не обновится код обработки ALPHA).
Переносим всё это дело и идём дальше, искать другие косяки.
вторник, 15 декабря 2015 г.
Добавление записей переноса с удалением объектов
Допустим, перенесли объект в ошибочной версии, и необходимо его удалить в целевой системе, но при этом оставить в исходной.
На конкретном примере: изменили тип инфообъекта с CHA на KYF. При переносе падаем в дамп с ошибкой класса CL_RSD_KYF (т.к. в цели наш объект является признаком). Необходимо удалить объект как признак, перенести и добавить как показатель.
- Добавляем запись переноса с удалением:
- Блокируем инфообъект в запрос: “rsa1 → инфообъект → дополнительная информация → записать запрос на перенос” или “se10 → изменить запрос → вставить строку R3TR<tab>IOBJ<tab><iobjname>”
- Изменяем тип операции на удаление: se16 → E071 → TRKORR = <номер запроса>, OBJECT = ‘IOBJ’, OBJNAME = <имя объекта> → F8. Выделяем нужные строки, через /h переходим в режим редактирования и изменяем значение поля OBJFUNC = ‘D’.
- Открываем запрос в se10 – нужные объекты помечены на удаление при переносе
- 2. Чтобы перенос прошел успешно, необходимо, чтобы инфообъект переносился тем же типом, что и на целевой системе (иначе опять дамп). Для этого:
- Изменяем тип инфообъекта на признак: se16 → RSDIOBJ → IOBJNM = <имя инфообъекта>, OBJVERS = ‘A’ (переносится активная) → F8. Выделяем необходимые строки, открываем на редактирование, изменяем тип на CHA (в целевой системе инфообъект – «признак»). Сохранить.
- 3. Деблокируем наш запрос. Первое деблокирование происходит с ошибкой: «Инфо-объект ZTAREW является новым - сначала активируйте.» Повторно запускаем деблокирование, все проходит ок. Переносим на целевую систему. Перенос проходит с корректным типом инфообъекта, объект удаляется в цели.
- 4. Изменяем тип инфообъекта обратно на корректный (см. п. 2, тип KYF в данном случае).
пятница, 11 декабря 2015 г.
Нарезка xml-файла по нодам
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:saxon="http://icl.com/saxon"
extension-element-prefixes ="saxon"
exclude-result-prefixes ="xs"
version ="1.0">
<xsl:template match="*" >
<xsl:for-each select="/lcdata/*" >
<saxon:output href ="C:\Temp\LC_Splitted\{name(.)}.xml">
<lcdata>
<xsl:for-each select ="../@*">
<xsl:attribute name= "{name(.)}">
<xsl:value-of select= "."/>
</xsl:attribute>
</xsl:for-each>
<xsl:copy-of select ="current()"/>
</lcdata>
</saxon:output>
</xsl:for-each>
</xsl:template>
<xsl:stylesheet xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:saxon="http://icl.com/saxon"
extension-element-prefixes ="saxon"
exclude-result-prefixes ="xs"
version ="1.0">
<xsl:template match="*" >
<xsl:for-each select="/lcdata/*" >
<saxon:output href ="C:\Temp\LC_Splitted\{name(.)}.xml">
<lcdata>
<xsl:for-each select ="../@*">
<xsl:attribute name= "{name(.)}">
<xsl:value-of select= "."/>
</xsl:attribute>
</xsl:for-each>
<xsl:copy-of select ="current()"/>
</lcdata>
</saxon:output>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
вторник, 17 ноября 2015 г.
вторник, 3 ноября 2015 г.
Обработка даты
DATA:
l_date TYPE d,
l_tmp TYPE string.
l_tmp = source_fields-laeda .
CONDENSE l_tmp NO- GAPS.
IF strlen ( l_tmp ) >= 8.
l_date = substring( val = l_tmp off = 0 len = 8 ).
ENDIF .
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = l_date.
IF sy- subrc NE 0 .
l_date = '00000000'.
ENDIF .
l_date TYPE d,
l_tmp TYPE string.
l_tmp = source_fields-laeda .
CONDENSE l_tmp NO- GAPS.
IF strlen ( l_tmp ) >= 8.
l_date = substring( val = l_tmp off = 0 len = 8 ).
ENDIF .
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = l_date.
IF sy- subrc NE 0 .
l_date = '00000000'.
ENDIF .
result = l_date.
понедельник, 19 октября 2015 г.
The ASSERT condition was violated.
Мы уже знаем, что переносить структуру инфо-областей для цепочек нужно таблицей.
Хотели так же перенести структуру областей инфо-провайдеров, таблица - RSDAREA. Как оказалось - зря. Видимо, кто-то из коллег делал изменения в своей ветке инфо-области, в перенос эти изменения не включил... В итоге - дам при попытке зайти в RSA1->инфопровайдеры.
Пересобрали все инфо-области через связь с переносом.
Хотели так же перенести структуру областей инфо-провайдеров, таблица - RSDAREA. Как оказалось - зря. Видимо, кто-то из коллег делал изменения в своей ветке инфо-области, в перенос эти изменения не включил... В итоге - дам при попытке зайти в RSA1->инфопровайдеры.
Пересобрали все инфо-области через связь с переносом.
пятница, 16 октября 2015 г.
Сообщение об ошибке при загрузке трансформации
Код для сбора ошибки:
Включаем обработчик в dtp:
data :
l_error type abap_bool value abap_false ,
l_error_text like table of monitor_rec -msgv1 initial size 4,
l_error type abap_bool value abap_false ,
l_error_text like table of monitor_rec -msgv1 initial size 4,
l_error_str type string .
l_error_text = value # (
( |Не заполнен Материал : | )
( |BAL_ACC = { SOURCE_FIELDS - BAL_ACC }| )
).
monitor_rec = value #(
msgid = 'RSRMON'
msgty = 'E'
msgno = '000'
msgv1 = l_error_text[ 1 ]
msgv2 = l_error_text[ 2 ]
).
append monitor_rec to MONITOR .
* call function 'SOTR_SERV_TABLE_TO_STRING'
* importing
* text = l_error_str
* tables
* text_tab = l_error_text
* .
* write / l_error_str.
( |Не заполнен Материал : | )
( |BAL_ACC = { SOURCE_FIELDS - BAL_ACC }| )
).
monitor_rec = value #(
msgid = 'RSRMON'
msgty = 'E'
msgno = '000'
msgv1 = l_error_text[ 1 ]
msgv2 = l_error_text[ 2 ]
).
append monitor_rec to MONITOR .
* call function 'SOTR_SERV_TABLE_TO_STRING'
* importing
* text = l_error_str
* tables
* text_tab = l_error_text
* .
* write / l_error_str.
l_error = abap_true .
if l_error = abap_true .
"Обнаружены ошибки в данных.
raise exception type CX_RSROUT_SKIP_RECORD .
"Обнаружены ошибки в данных.
raise exception type CX_RSROUT_SKIP_RECORD .
endif .
Включаем обработчик в dtp:
вторник, 13 октября 2015 г.
Виртуальный показатель и BEx'ы
Всё хорошо и быстро настроили, но BEx начал капризничать:
Системная ошибка в программе CL_RSR_RRK0_QUERY_RT_FACTORY и FORM FILL_CEL_MEM-03
Оказывается, для десятичных чисел с расширенной точностью, BEx'у нужна нота:
https://websmp130.sap-ag.de/sap(bD1ydSZjPTAwMQ==)/bc/bsp/sno/ui_entry/entry.htm?param=69765F6D6F64653D3030312669765F7361706E6F7465735F6E756D6265723D3232323538303626
Системная ошибка в программе CL_RSR_RRK0_QUERY_RT_FACTORY и FORM FILL_CEL_MEM-03
Оказывается, для десятичных чисел с расширенной точностью, BEx'у нужна нота:
https://websmp130.sap-ag.de/sap(bD1ydSZjPTAwMQ==)/bc/bsp/sno/ui_entry/entry.htm?param=69765F6D6F64653D3030312669765F7361706E6F7465735F6E756D6265723D3232323538303626
четверг, 1 октября 2015 г.
Подсветка синтаксиса ABAP в Blogger
Наконец-то нашёл способ, как не терять подсветку синтаксиса - нужно копировать код через Evernote!
Правда теперь нужно весь блог отредактировать...
Правда теперь нужно весь блог отредактировать...
среда, 30 сентября 2015 г.
Сообщение в монитор загрузки
l_error_text = value #(
( |Не заполнен Материал: | )
( |BAL_ACC = { SOURCE_FIELDS-BAL_ACC }| )
).
monitor_rec = value #(
msgid = 'RSRMON'
msgty = 'E'
msgno = '000'
msgv1 = l_error_text[ 1 ]
msgv2 = l_error_text[ 2 ]
).
append monitor_rec to MONITOR.
или
DATA(l_error_text) = |Повторная загрузка. Calday = {
<fs_rez>-calday+6(2)
}.{
<fs_rez>-calday+4(2)
}.{
<fs_rez>-calday(4)
}|.
APPEND VALUE #(
msgid = 'RSRMON'
msgty = 'E'
msgno = '000'
msgv1 = l_error_text
) TO monitor.
*******
if l_error = abap_true.
"Обнаружены ошибки в данных.
raise exception type CX_RSROUT_SKIP_RECORD.
или
RAISE EXCEPTION TYPE cx_rsrout_abort.
endif.
( |Не заполнен Материал: | )
( |BAL_ACC = { SOURCE_FIELDS-BAL_ACC }| )
).
monitor_rec = value #(
msgid = 'RSRMON'
msgty = 'E'
msgno = '000'
msgv1 = l_error_text[ 1 ]
msgv2 = l_error_text[ 2 ]
).
append monitor_rec to MONITOR.
или
DATA(l_error_text) = |Повторная загрузка. Calday = {
<fs_rez>-calday+6(2)
}.{
<fs_rez>-calday+4(2)
}.{
<fs_rez>-calday(4)
}|.
APPEND VALUE #(
msgid = 'RSRMON'
msgty = 'E'
msgno = '000'
msgv1 = l_error_text
) TO monitor.
*******
if l_error = abap_true.
"Обнаружены ошибки в данных.
raise exception type CX_RSROUT_SKIP_RECORD.
или
RAISE EXCEPTION TYPE cx_rsrout_abort.
endif.
понедельник, 28 сентября 2015 г.
Разные длины полей для FOR ALL ENTRIES IN
Оказывается, ошибку про разные длины полей можно обойти так:
SELECT /bic/zref
/bic/zmateria
/bic/zunit
FROM /bic/azlcdocl00
INTO TABLE gt_unit
FOR ALL ENTRIES IN source_package
WHERE /bic/zref EQ source_package-/bic/snz
AND /bic/zmateria EQ source_package-/bic/snomen+0(18).
SELECT /bic/zref
/bic/zmateria
/bic/zunit
FROM /bic/azlcdocl00
INTO TABLE gt_unit
FOR ALL ENTRIES IN source_package
WHERE /bic/zref EQ source_package-/bic/snz
AND /bic/zmateria EQ source_package-/bic/snomen+0(18).
среда, 2 сентября 2015 г.
Как загрузить\выгрузить программу\ФМ\класс из системы (SAPLink)
Очень интересный способ переноса разработок между системами.
Как всегда, на всякий случай дублирую:
Skip to end of metadata
Go to start of metadata
Как всегда, на всякий случай дублирую:
- Added by Edward Herrmann, last edited by Gregor Wolf on Jul 23, 2015 (view change)
- show comment
Check out also this Document: Transfer Data between SAP Systems/developers without STMS (using SAPLink) by Niels De Greef.
Install
Known ABAP basis versions compatible with SAPlink include:
- 6.20
- 6.40(NetWeaver 2004)
- 7.0 (NetWeaver 2004s)
- 7.4
Initial
- Download the latest version of the SAPlink installer zip file from the SAPlink Project page which contains the following files:
- SAPlink_installer.txt - hopefully the last program you will ever have to copy and paste
- NUGG_SAPLINK.nugg - nugget containing necessary objects to install
- Extract contents of the SAPlink installer zip file
- Copy, paste, save, and activate the contents of the SAPlink_installer.txt file into a new program ZSAPLINK_INSTALLER onto the target SAP system
- Execute newly activated program ZSAPLINK_INSTALLER
- Use the extracted file NUGG_SAPLINK_INSTALL.nugg for the selection parameter "Installation Nugget"
WARNING: Using checkbox "Overwrite Originals", will overwrite any existing version of the SAPlink objects that were previously installed onto the system. Only use when reinstalling or installing a major release where a brand new install is required. Otherwise, follow the normal procedures for upgrade below. - Execute
- To avoid an error that the implementation of an abstract class does not exist please run the installation a second time.
- Newly installed objects need to be activated manually, as all objects are installed as local and inactive
- Run transaction code SE38
- On initial screen of SE38, enter program name ZSAPLINK into selection parameter "Program" and hit activate command to show worklist
- On worklist screen, select "Whole Worklist" button on bottom to show all inactive objects in your worklist IMPORTANT NOTE: You must click the button labeled "Whole Worklist" to show and select all SAPlink related objects. There are multiple objects that are imported during the initial install and must all be activated for SAPlink to run properly
- Select all newly installed SAPlink related objects (ZSAPLINK) and activate
- Once activation for all objects is complete, SAPlink can be executed via program ZSAPLINK
среда, 26 августа 2015 г.
Добавить пользовательскую формулу в редактор формул в трансформациях
Взято отсюда, но на всякий случай, продублирую:
4. Step-By-Step Procedure
The guide starts you off by creating a BAdi implementation. This implementation will generate a class which we will use to store our custom functions (implemented as methods) in. When the custom methods are written and activated, we can then reference them in our BAdi implementation. Once linked, we will have them available in the Process Type 'Decision' in Process chain maintenance.
For this example, we will use TVARVC table entry which will decide what process flow/steps executed in Process chain.
среда, 12 августа 2015 г.
Принципы разработки
Поступило предложение создать инфо-область Z_KOL_HOZ и все разработки вести в ней.
среда, 22 июля 2015 г.
XML-парсер
Пришла задача загружать данные из внешней системы, которая отдаёт XML файл.
В одном файле приходят сразу всё таблицы.
В BW есть встроенный инструмент, "Редактор трансформаций", транзакция STRANS, с ним и будем работать.
https://www.dropbox.com/s/oa1r6bc0xmffo0a/PROG%20%28XML%20from%20WEB-server%29.docx?dl=0
В одном файле приходят сразу всё таблицы.
В BW есть встроенный инструмент, "Редактор трансформаций", транзакция STRANS, с ним и будем работать.
https://www.dropbox.com/s/oa1r6bc0xmffo0a/PROG%20%28XML%20from%20WEB-server%29.docx?dl=0
После переноса цепочки, появляются "Неизвестные задания"
Вылечили такой программой:
report z_jobs_wo_variant.
data:
lt_jobs type table of tbtcp,
lt_valtab type table of rsparams.
field-symbols:
<lfs_job> like line of lt_jobs.
parameters: p_delete type abap_bool.
select
j~progname
, j~variant
, j~jobcount
, j~jobname
from tbtcp as j
join tbtco as js
on j~jobname = js~jobname
and j~jobcount = js~jobcount
and js~status = 'S'
into corresponding fields of table @lt_jobs
where progname = 'RSPROCESS'.
loop at lt_jobs
assigning <lfs_job>.
call function 'RS_VARIANT_CONTENTS'
exporting
report = <lfs_job>-progname
variant = <lfs_job>-variant
execute_direct = 'X'
tables
valutab = lt_valtab
exceptions
others = 1.
if sy-subrc <> 0.
write: / <lfs_job>-jobname, <lfs_job>-jobcount.
if p_delete = abap_true.
call function 'BP_JOB_DELETE'
exporting
jobcount = <lfs_job>-jobcount
jobname = <lfs_job>-jobname
exceptions
others = 1.
if sy-subrc <> 0.
write 'not deleted'.
else.
write 'successfully deleted'.
endif.
endif.
endif.
endloop.
report z_jobs_wo_variant.
data:
lt_jobs type table of tbtcp,
lt_valtab type table of rsparams.
field-symbols:
<lfs_job> like line of lt_jobs.
parameters: p_delete type abap_bool.
select
j~progname
, j~variant
, j~jobcount
, j~jobname
from tbtcp as j
join tbtco as js
on j~jobname = js~jobname
and j~jobcount = js~jobcount
and js~status = 'S'
into corresponding fields of table @lt_jobs
where progname = 'RSPROCESS'.
loop at lt_jobs
assigning <lfs_job>.
call function 'RS_VARIANT_CONTENTS'
exporting
report = <lfs_job>-progname
variant = <lfs_job>-variant
execute_direct = 'X'
tables
valutab = lt_valtab
exceptions
others = 1.
if sy-subrc <> 0.
write: / <lfs_job>-jobname, <lfs_job>-jobcount.
if p_delete = abap_true.
call function 'BP_JOB_DELETE'
exporting
jobcount = <lfs_job>-jobcount
jobname = <lfs_job>-jobname
exceptions
others = 1.
if sy-subrc <> 0.
write 'not deleted'.
else.
write 'successfully deleted'.
endif.
endif.
endif.
endloop.
NW 7.4 не работал стек ошибок DTP
Одна из переменных (Error_stack) не заполнялась, помогла нота 2037459
пятница, 3 июля 2015 г.
Если большая таблица партицирована
Если большая таблица партицирована.
Партиции закрыты для записи, только чтение.
Поэтому: 1) Табл.спейс надо открывать
2) При добавлении признака SAP заполняет его пробелом, это доло.
Партиции закрыты для записи, только чтение.
Поэтому: 1) Табл.спейс надо открывать
2) При добавлении признака SAP заполняет его пробелом, это доло.
---- Открываем партиции активной таблицы DSO для
изменения
alter
tablespace WAY_OSTATKI_2008 read write;
alter
tablespace WAY_OSTATKI_2009 read write;
alter
tablespace WAY_OSTATKI_2010 read write;
alter
tablespace WAY_OSTATKI_2011 read write;
alter
tablespace WAY_OSTATKI_2012 read write;
alter
tablespace WAY_OSTATKI_2013 read write;
alter
tablespace WAY_OSTATKI_2014 read write;
alter
tablespace WAY_OSTATKI_2015 read write;
alter
tablespace WAY_OSTATKI_2016 read write;
alter
tablespace WAY_OSTATKI_2017 read write;
alter
tablespace WAY_OSTATKI_2018 read write;
alter
tablespace WAY_OSTATKI_2019 read write;
---- Создаем копию активной таблицы и переносим индексы на
новую таблицу
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00" RENAME TO
"/BIC/ANORSTWAY00_SAV";
ALTER INDEX
SAPSR3."/BIC/ANORSTWAY00~0" RENAME TO
"/BIC/ANORSTWAY00~0_";
ALTER INDEX
SAPSR3."/BIC/ANORSTWAY0001" RENAME TO
"/BIC/ANORSTWAY0001_";
ALTER INDEX
SAPSR3."/BIC/ANORSTWAY0002" RENAME TO
"/BIC/ANORSTWAY0002_";
ALTER INDEX
SAPSR3."/BIC/ANORSTWAY0003" RENAME TO
"/BIC/ANORSTWAY0003_";
---- Запускаем транспорт в системе KH2
---- Добавляем поле NCPASOO во временную таблицу
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00_SAV" ADD "/BIC/NCNETTUR"
VARCHAR2(9) NULL ;
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00_SAV" MODIFY ("/BIC/NCNETTUR"
DEFAULT ' ' );
---- Добавляем поле NCPASOO во временную таблицу
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00_SAV" ADD "/BIC/NCSIMV102"
VARCHAR2(75) NULL ;
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00_SAV" MODIFY ("/BIC/NCSIMV102"
DEFAULT ' ' );
---- Добавляем поле NCPASOO во временную таблицу
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00_SAV" ADD "/BIC/NCREPAYM"
VARCHAR2(18) NULL ;
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00_SAV" MODIFY ("/BIC/NCREPAYM"
DEFAULT ' ' );
---- Добавляем поле NCPASOO во временную таблицу
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00_SAV" ADD "/BIC/NCDEDT"
VARCHAR2(18) NULL ;
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00_SAV" MODIFY ("/BIC/NCDEDT" DEFAULT
' ' );
---- Удаляем
активную таблицу DSO
drop table
SAPSR3."/BIC/ANORSTWAY00";
---- Переименовывем временную таблицу в активную таблицу DSO
+ индексы
ALTER TABLE
SAPSR3."/BIC/ANORSTWAY00_SAV" RENAME TO "/BIC/ANORSTWAY00";
ALTER INDEX
SAPSR3."/BIC/ANORSTWAY0001_" RENAME TO
"/BIC/ANORSTWAY0001";
ALTER INDEX
SAPSR3."/BIC/ANORSTWAY0002_" RENAME TO "/BIC/ANORSTWAY0002";
ALTER INDEX
SAPSR3."/BIC/ANORSTWAY0003_" RENAME TO
"/BIC/ANORSTWAY0003";
ALTER INDEX
SAPSR3."/BIC/ANORSTWAY00~0_" RENAME TO
"/BIC/ANORSTWAY00~0";
---- Копируем данные в активную таблицу DSO
select *
from SAPSR3."/BIC/ANORSTWAY00";
---- Закрываем партиции активной таблицы DSO на изменение
alter
tablespace WAY_OSTATKI_2008 read only;
alter
tablespace WAY_OSTATKI_2009 read only;
alter
tablespace WAY_OSTATKI_2010 read only;
alter
tablespace WAY_OSTATKI_2011 read only;
alter
tablespace WAY_OSTATKI_2012 read only;
alter
tablespace WAY_OSTATKI_2013 read only;
alter
tablespace WAY_OSTATKI_2014 read only;
alter
tablespace WAY_OSTATKI_2015 read only;
alter
tablespace WAY_OSTATKI_2016 read only;
alter
tablespace WAY_OSTATKI_2017 read only;
alter
tablespace WAY_OSTATKI_2018 read only;
alter
tablespace WAY_OSTATKI_2019 read only;
вторник, 9 июня 2015 г.
Хороший гайд по добавлению пользовательских функций к функциям редактора формул
Хороший гайд по добавлению пользовательских функций к функциям редактора формул.
http://scn.sap.com/docs/DOC-27399
http://scn.sap.com/docs/DOC-27399
среда, 3 июня 2015 г.
Как мы сделали дельту сами
Исходная система не выдаёт нормальную дельты.
Но в таблицах есть поле даты, показывающее, когда были сделаны изменения.Поехали.
понедельник, 1 июня 2015 г.
Поиск использования Основных данных в хранилищах
*&---------------------------------------------------------------------*
*& Report ZNN_MD_USAGE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT znn_md_usage.
TYPE-POOLS:
rsddv,
rsd.
TABLES:
dd02l.
DATA:
l_valtable TYPE dd02l-tabname,
l_obj_sid TYPE i,
l_iobjnm TYPE rsd_iobjnm,
lt_outl_sid TYPE rrsi_t_sid,
lt_outl_sid_used TYPE rsr_th_sid,
lt_ulist_sid TYPE rsddv_t_ulist_sid,
lt_ulist_dim TYPE rsddv_t_ulist_dim,
lt_ulist_mdata TYPE rsddv_t_ulist_mdata,
lt_ulist_atr TYPE rsddv_t_ulist_atr,
lt_ulist_atr_nav TYPE rsddv_t_ulist_atr,
lt_ulist_cmp TYPE rsddv_t_ulist_cmp,
lt_ulist_hie TYPE rsddv_t_ulist_hie,
lt_ulist_hie_node TYPE rsddv_t_ulist_hie_node,
lt_ulist_query TYPE rsddv_t_ulist_query,
lt_ulist_odso TYPE rsddv_t_ulist_odso,
gc_alv_table TYPE REF TO cl_salv_table,
gc_columns TYPE REF TO cl_salv_columns_table,
gc_colwork TYPE REF TO cl_salv_column_table,
tab_name TYPE lvc_title.
FIELD-SYMBOLS:
<so_val> TYPE rrrange,
<lt_ulist_dim> LIKE LINE OF lt_ulist_dim,
<lt_ulist_atr_nav> LIKE LINE OF lt_ulist_atr_nav,
<lt_ulist_odso> LIKE LINE OF lt_ulist_odso.
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS:
l_iobj TYPE rsdiobjv-iobjnm OBLIGATORY. " rsd_iobjnm.
SELECTION-SCREEN END OF BLOCK b1.
l_valtable = '/BIC/S' && l_iobj. " модный in-line
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS:
lt_val FOR (l_valtable) NO INTERVALS.
SELECTION-SCREEN END OF BLOCK b2.
*&---------------------------------------------------------------------*
*& Report ZNN_MD_USAGE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT znn_md_usage.
TYPE-POOLS:
rsddv,
rsd.
TABLES:
dd02l.
DATA:
l_valtable TYPE dd02l-tabname,
l_obj_sid TYPE i,
l_iobjnm TYPE rsd_iobjnm,
lt_outl_sid TYPE rrsi_t_sid,
lt_outl_sid_used TYPE rsr_th_sid,
lt_ulist_sid TYPE rsddv_t_ulist_sid,
lt_ulist_dim TYPE rsddv_t_ulist_dim,
lt_ulist_mdata TYPE rsddv_t_ulist_mdata,
lt_ulist_atr TYPE rsddv_t_ulist_atr,
lt_ulist_atr_nav TYPE rsddv_t_ulist_atr,
lt_ulist_cmp TYPE rsddv_t_ulist_cmp,
lt_ulist_hie TYPE rsddv_t_ulist_hie,
lt_ulist_hie_node TYPE rsddv_t_ulist_hie_node,
lt_ulist_query TYPE rsddv_t_ulist_query,
lt_ulist_odso TYPE rsddv_t_ulist_odso,
gc_alv_table TYPE REF TO cl_salv_table,
gc_columns TYPE REF TO cl_salv_columns_table,
gc_colwork TYPE REF TO cl_salv_column_table,
tab_name TYPE lvc_title.
FIELD-SYMBOLS:
<so_val> TYPE rrrange,
<lt_ulist_dim> LIKE LINE OF lt_ulist_dim,
<lt_ulist_atr_nav> LIKE LINE OF lt_ulist_atr_nav,
<lt_ulist_odso> LIKE LINE OF lt_ulist_odso.
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS:
l_iobj TYPE rsdiobjv-iobjnm OBLIGATORY. " rsd_iobjnm.
SELECTION-SCREEN END OF BLOCK b1.
l_valtable = '/BIC/S' && l_iobj. " модный in-line
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS:
lt_val FOR (l_valtable) NO INTERVALS.
SELECTION-SCREEN END OF BLOCK b2.
*&---------------------------------------------------------------------*
Подписаться на:
Сообщения (Atom)