К основному контенту

Печать таблицы любой структуры

Самый яркий пример использования FIELD-SYMBOLS.


REPORT z_lx_test.
 
TYPES: BEGIN OF t_table1
  , field1 TYPE c
  , field2 TYPE i
  , END OF t_table1.
 
TYPES: BEGIN OF t_table2
  , field1 TYPE c
  , field2 TYPE i
  , field3 TYPE d
  , END OF t_table2.
 
DATA: t1 TYPE t_table1.
DATA: it1 TYPE TABLE OF t_table1.
 
DATA: t2 TYPE t_table2.
DATA: it2 TYPE TABLE OF t_table2.
 
FIELD-SYMBOLS: <it> TYPE t_table1.

REFRESH: it1, it2.
 
DO 5 TIMES.
  CLEAR t1.
  t1-field1 = 'X'.
  t1-field2 = sy-index.
  APPEND t1 TO it1.
ENDDO.
 
DO 8 TIMES.
  CLEAR t2.
  t2-field1 = 'X'.
  t2-field2 = sy-index.
  t2-field3 = sy-datum.
  APPEND t2 TO it2.
ENDDO.
 
PERFORM print TABLES it1.
ULINE.
 
PERFORM print TABLES it2.
 
ULINE.
WRITE: / 'OK'.
 
*&---------------------------------------------------------------------*
*&      Form  PRINT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_IT1  text
*----------------------------------------------------------------------*
FORM print  TABLES   p_it
  .
 
  DATA work_tab_ref TYPE REF TO data.
 
  FIELD-SYMBOLS: <work_tab> TYPE STANDARD TABLE.
 
*  скопируем структуру в символьную переменную
  CREATE DATA work_tab_ref LIKE p_it[].
  ASSIGN work_tab_ref->* TO <work_tab>.
 
  MOVE p_it[] TO <work_tab>.
 
  FIELD-SYMBOLS: <wa> TYPE ANY.
 
  LOOP AT <work_tab> ASSIGNING <wa>.
    FIELD-SYMBOLS: <fld> TYPE ANY.
    FIELD-SYMBOLS: <comp> TYPE ANY.
    DO.
      ASSIGN COMPONENT sy-index OF STRUCTURE <wa> TO <comp>.
      IF <comp> IS ASSIGNED.
        WRITE <comp>.
        UNASSIGN <comp>.
      ELSE.
        EXIT.
      ENDIF.
    ENDDO.
 
    write /.
  ENDLOOP.
 
 
ENDFORM.                    " PRINT

Комментарии

Популярные сообщения из этого блога

Прямые ссылки на файлы Google диска

В предыдущей статье я рассказал, как подключить свой JavaScript файл к блогу BLOGSPOT . Но для того, что бы их подключить нужны прямые ссылки на файл, а Google диск при предоставлении общего доступа к файлу выдает ссылку на предварительный просмотр, которая никак напрямую не ссылается на файл. Для Google диска прямая ссылка на файл - это ссылка на скачивание. Ниже описаны два способа создания ссылки на скачивание на примере файла prism.js.

События для ведения таблиц

Как и всегда, в пылу проекта внезапно родилась Z табличка. Главный нюанс был в том, что она должна была хранить пароли для авторизации на стороннем сервере. Естественно, никто не хотел хранить пароли в открытом виде, а двустороннее шифрование SAP не умеет без сторонних пакетов и надстроек. Далее, все как обычно - придумали алгоритм, сделали табличку. Дело осталось за малым - нужно шифровать пароли, которые вводит пользователь. Делать отдельную программу нет смысла, поскольку ее функционал мало чем будет отличаться от сгенерированного. Вот здесь на помощь приходят события! С их помощью можно, наверное, все. По крайней мере, я не нашел чего-либо, что нельзя сделать с данными через события.

OOP ALV GRID с HTML шапкой

В этой статье хочу постараться подробно описать и привести пример, как можно создать ALV отчет с таблицей на весь экран и с HTML шапкой вверху. Я не буду описывать начальный этап, где пишется селекционный экран или делается выборка данных. Будем считать, что основа у нас есть и нам нужно просто вывести данные. Главной изюминкой является то, что нужно вывести ALV GRID на экран без использования каких-либо дополнительных элементов на экране. Step-By-Step Шаг 1. Создание окна Создаем самое простое окно с номером 100. На него не нужно кидать никаких контейнеров. Оно нам нужно только для модулей PAI и PBO и вывода на него ALV GRID.