среда, 29 апреля 2015 г.

На новой системе провести инсталляцию объектов технического содержимого

t-Code: RSTCO_ADMIN



Попробуйте запустить программу по починке счетчиков объектов, если проблема в счетчиках  он ее устранит - RSD_CLIENT_COPY_REPAIR_NUMBER.



RSD5 - чиним инфо-объекты.

Нам пришлось на новом продуктиве запустить через эту транзакцию поднятие объекта 0IOBJNM, (система должна быть открыта):


п.с.: запускали активацию объекта дважды, так как с первого раза не создаётся диапазон номеров.



Список объектов, которые пришлось нам поднимать:
0ACTUALDATA @5B@ @81@ X Актуальность данных
0ACTUALDATV @5B@ @81@ X Актуальность данных
0ALEAFNODCH @5B@ @81@ X Поведение просмотра для созданных листов изменяемо
0ALEAFNODSP @5B@ @81@ X Не просматривать листы для внутр. узлов в запросе
0ARCHDOBJID @5B@ @81@ X Объект данных в запросе архивации
0ARCHDPAKID @5B@ @81@ X Пакет данных в запросе архивации
0ARCHRECNO @5B@ @81@ X Номер записи данныз в пакете данных архивации
0ARCHREQUID @5B@ @81@ X Запрос на архивацию
0CHILDID @5B@ @81@ X Ид. первого дочернего узла
0CHNGID @5B@ @81@ Выполнение изменений: ид.
0DATAPAKID @5B@ @81@ X Пакет данных
0HIENM @5B@ @81@ X Имя иерархии
0HIER_HIEID @5B@ @81@ X Внутренний идентификатор иерархии
0HIER_NODE @5B@ @81@ X Узел иерархии
0HIER_VERS @5B@ @81@ X Версия иерархии
0INTVAL @5B@ @81@ X Индикатор: является ли узел интервалом
0IOBJNM @5B@ @81@ X Инфо-объект
0LEAFFROM @5B@ @81@ X С-значение узла интервала
0LEAFTO @5B@ @81@ X По-значение узла интервала
0LINK @5B@ @81@ X Индикатор ссылки для узла ссылки
0NEARLINE @5B@ @81@ X NearLine-носитель
0NEXTID @5B@ @81@ X Ид. следующего соседнего узла с тем же самым родител. узлом
0NODECHAVL @5B@ @81@ X Значение признака узла иерархии
0NODEID @5B@ @81@ X Технический ид. узла в иерархии
0NODEPOSIT @5B@ @81@ X Позиция узлов по отношению к соответствующим листьям
0NORESTNODE @5B@ @81@ X Подавление неприсвоенных узлов
0PARENTID @5B@ @81@ X Технический ид. родительского узла
0RECORD @5B@ @81@ X Номер записи данных
0RECORDMODE @5B@ @81@ X BW: дельта-метод: режим обновления
0RECORDTP @5B@ @81@ Тип записи
0REQUEST @5B@ @81@ X GUID запроса
0REQUID @5B@ @81@ ИдЗапроса
0REQ_CDATE @5B@ @81@ X Date Request was Created
0REQ_LDATE @5B@ @81@ X Date Request was Loaded
0SIGNCH @5B@ @81@ X Смена знака +/-
0STARTLEVEL @5B@ @81@ X Начальный уровень развертки при просмотре запроса
0TCTVINTV @5B@ @81@ X Интервал действия
0TLEVEL @5B@ @81@ X Уровень узла иерархии

Как быстро вывести что-либо на экран

cl_demo_output=>displaysy-dbcnt ).
cl_demo_output=>display( table_name ).

вторник, 28 апреля 2015 г.

Field catalog for internal table in ALV

Шикарно:



FORM create_fieldcatalog
      
USING     pt_table     TYPE ANY TABLE
       
CHANGING  pt_fieldcat  TYPE lvc_t_fcat.

  
DATA:
        lr_tabdescr 
TYPE REF TO cl_abap_structdescr,
        lr_data     
TYPE REF TO data,
        lt_dfies    
TYPE ddfields,
        ls_dfies    
TYPE dfies,
        ls_fieldcat 
TYPE lvc_s_fcat.
*-----------------------------------------------------------------------
  
CLEAR pt_fieldcat.

  
CREATE DATA lr_data LIKE LINE OF pt_table.

  lr_tabdescr ?= cl_abap_structdescr
=>describe_by_data_reflr_data ).

  lt_dfies 
cl_salv_data_descr=>read_structdescrlr_tabdescr ).

  
LOOP AT lt_dfies INTO ls_dfies.

    
CLEAR ls_fieldcat.

    
MOVE-CORRESPONDING ls_dfies TO ls_fieldcat.

    
APPEND ls_fieldcat TO pt_fieldcat.

  
ENDLOOP.
ENDFORM.

Вывод таблицы через ALV

Набивший оскомину пример:

DATA:

  g_container        
TYPE scrfname VALUE 'GRID_CONT_1000_01',
  grid               
TYPE REF TO cl_gui_alv_grid,
  g_custom_container 
TYPE REF TO cl_gui_custom_container,

INITIALIZATION.
  SELECT *
    FROM /bic/azloc_map00
    INTO TABLE @DATA(itable)  “BW 7.4, когда лень объявлять таблицу
    UP TO 10 ROWS.
START-OF-SELECTION.
  
CALL SCREEN 1000.     “Контейнер


MODULE status_1000 OUTPUT.
  
SET PF-STATUS 'ZNN_MENU'.
  
SET TITLEBAR 'ZNN_TBAR'.

  
IF g_custom_container IS INITIAL.
    
CREATE OBJECT g_custom_container
      
EXPORTING
        container_name 
g_container.
    
CREATE OBJECT grid
      
EXPORTING
        i_parent 
g_custom_container.

    
CALL METHOD grid->set_table_for_first_display

      
CHANGING
        it_outtab        
itable.

  
ENDIF.
ENDMODULE.


п.с. если внутреннюю таблицу определяем копией внешней, то для метода  cl_gui_alv_grid ->set_table_for_first_display можно не указывать структуру полей. В противном случае - она обязательна.


А вот так быстрее - http://sapforum.biz/index.php?topic=1401.0
На всякий случай, основное:
CL_SALV_TABLE – Класс для быстрого вывода данных в формате AVL-таблицы. В принципе можно конечно все это сделать, используя или функцию REUSE_ALV_LIST_DISPLAY или как вариант использовать базовый класс для вывода таблицы CL_GUI_ALV_GRID. Однако и в том и в другом случае нужно выполнить определенный объем предварительной работы по подготовке каталога данных описывающих поля выводимой таблицы и т.д. Конечно, есть функциональные модули, которые позволяют это ускорить, например, такой как LVC_FIELDCATALOG_MERGE. Однако SAP позаботился о том, чтобы и тут можно было все сделать намного проще, реализовав упрощение вывода ALV-таблиц через класс CL_SALV_TABLE.

В общем виде для вывода любой таблицы данных, а что самое хорошее, это то что можно для отображения использовать не только таблицы, объявленные в словаре данных, но и объявленные внутри своих программ локальные внутренние таблицы, нужно написать буквально несколько строк кода (примеры будут базироваться на таблице MKPF – Заголовки документов движения материала, единственное что возмжно ограничьте выборку документов хотя бы годом, а то в реальной системе может ну очень долго висеть, все таки в IDES документов значительно меньше будет):  
Код: You are not allowed to view links. Register or Login
* Объявляем внутреннюю таблицу, со своими полями + поля из таблицы MKPF
DATA: BEGIN OF gt_mkpf OCCURS 10,
      sel(1) TYPE c.
        INCLUDE STRUCTURE mkpf.
DATA: my_field(5) TYPE c,
      END OF gt_mkpf.
* Объявляем объект типа cl_salv_table, который выведет наши данные в виде ALV
DATA: gc_alv_table TYPE REF TO cl_salv_table.

START-OF-SELECTION.
* Выбираем данные из MKPF
  SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_mkpf FROM mkpf.

* Статический метод класса для создания объекта и связывания с нашей таблицей
  cl_salv_table=>factory( IMPORTING r_salv_table = gc_alv_table
                          CHANGING t_table = gt_mkpf[] ).
* Вывести ALV-таблицу на экран
  gc_alv_table->display( ).

пятница, 17 апреля 2015 г.

Удобная программа для загрузки\выгрузки файлов на сервер (нужны полные права на папку)

Правда, пока файлы загружать\выгружать можно лишь по одному:

Как добавить в поле ввода значение по-умолчанию через вычисляемую переменную?

DATA      : path_name LIKE sapb-sappfad .
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text- 002.
*"  Каталог на сервере
PARAMETERS p_path2 LIKE sapb-sappfad OBLIGATORY DEFAULT path_name.
*"  Имя файла на сервере
PARAMETERS p_path  LIKE sapb-sappfad OBLIGATORY DEFAULT '*.*'.
SELECTION-SCREEN END OF BLOCK b2.


INITIALIZATION.
*  break-point id break.
 
SELECT SINGLE low
   
FROM tvarvc
   
INTO path_name
  
WHERE name EQ 'ZSV_INFOPACKAGE_FILE_PATH'.

  p_path2 = path_name.

Как добавить пользовательские кнопки в стандартный PF-status

В общем, в статье всё сказано - есть 5 скрытых кнопок, на которые мы можем назначит свои действия.

Пример кода:

report znn_upload.
*-----------------------------------------------------------------------
type-poolsicon.
tables    sscrfields.
data      functxt type smp_dyntxt.

data      path_name like sapb-sappfad.
*-----------------------------------------------------------------------
selection-screen function key 1.

initialization.
  functxt-icon_id   icon_protocol.
  functxt-quickinfo 'AL11'.
  functxt-icon_text 'AL11'.
  sscrfields-functxt_01 functxt.

*-----------------------------------------------------------------------
at selection-screen.
*    BREAK-POINT id break.
  case sy-ucomm.
    when 'FC01'.
      submit rswatch0 and return"AL11
  endcase.
*-----------------------------------------------------------------------