среда, 22 июля 2015 г.

XML-парсер

Пришла задача загружать данные из внешней системы, которая отдаёт XML файл.
В одном файле приходят сразу всё таблицы.

В 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.

parametersp_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 заполняет его пробелом, это доло.





----  Открываем партиции активной таблицы 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;