Текущее время: Вт, июл 29 2025, 16:15

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 05 2005, 15:24 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, мар 16 2005, 09:37
Сообщения: 42
Откуда: Москва
Вот пример из курса ВС402. Отображает содержимое любой прозрачной таблицы с названиями столбцов:
Code:
PARAMETERS:
    pa_dbtab TYPE dd02l-tabname DEFAULT 'USR21'.
DATA:
    d_ref     TYPE REF TO data,
    descr_ref TYPE REF TO cl_abap_structdescr,
    wa_comp   TYPE abap_compdescr,
    pos TYPE i.
FIELD-SYMBOLS:
    <fs_wa>   TYPE ANY,
    <fs_comp> TYPE ANY.

START-OF-SELECTION.
  NEW-PAGE LINE-SIZE 1000.
  CREATE DATA d_ref TYPE (pa_dbtab).
  ASSIGN d_ref->* TO <fs_wa>.
  descr_ref ?= cl_abap_typedescr=>describe_by_data( <fs_wa> ).
  SELECT * FROM (pa_dbtab) INTO <fs_wa>.
    DO.
      ASSIGN COMPONENT sy-index OF STRUCTURE <fs_wa> TO <fs_comp>.
      IF sy-subrc NE 0.
        SKIP.
        EXIT.
      ENDIF.
      pos = sy-index * 15.
      WRITE AT pos(20) <fs_comp>.
    ENDDO.
  ENDSELECT.

TOP-OF-PAGE.
  LOOP AT descr_ref->components INTO wa_comp.
    pos = sy-tabix * 15.
    WRITE AT pos(20) wa_comp-name.
  ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: re
СообщениеДобавлено: Чт, дек 01 2005, 17:15 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
построение lvc_t_fcat по локаьлн.структуре/внутр.таблице
beware of bugs Изображение

Code:
type-pools:
  abap,
  slis,
  sydes.

tables:
  dd03l.


form
dd_structdescr_any

using
  p_any
changing
  p_descr type ref to cl_abap_structdescr.
.
  data:
    tab_descr type ref to cl_abap_tabledescr.

  data t.
  describe field p_any type t.
  if t eq 'h'.
    tab_descr ?= cl_abap_tabledescr=>describe_by_data( p_any ).
    p_descr ?= tab_descr->get_table_line_type( ).
  else.
    p_descr ?= cl_abap_elemdescr=>describe_by_data( p_any ).
  endif.

endform.



form
dd_lvc_fcat
  using
    value(i_struc)
  changing
    o_fcat type lvc_t_fcat
.


  data lcat type lvc_s_fcat.

  data:
    ls_details type abap_compdescr,
    lt_details type abap_compdescr_tab,
    ref_descr type ref to cl_abap_structdescr.

  perform
    dd_structdescr_any
  using
    i_struc
  changing
    ref_descr.

  lt_details[] = ref_descr->components[].


"  data ddfields type DDFIELDS.
"  ddfields = ref_descr->get_ddic_field_list( ).


  loop at lt_details into ls_details.
    clear lcat.
    lcat-row_pos = 0.
    lcat-col_pos = sy-tabix.
    lcat-fieldname = ls_details-name.
    lcat-scrtext_s = lcat-scrtext_m = lcat-scrtext_l = ls_details-name.
    lcat-inttype = ls_details-type_kind.
    lcat-intlen = ls_details-length.
"    lcat-dd_outlen = .
    lcat-decimals = ls_details-decimals.
    lcat-decimals_o = ls_details-decimals.
    if    lcat-inttype eq 'P'
*      and lcat-intlen eq 7
      and lcat-decimals eq 2.
      lcat-intlen = 15.
      lcat-datatype = 'CURR'.
    endif.
"    lcat-ref_field = .
"    lcat-ref_table = .
"    lcat- = .


    data desc type sydes_desc.
    data nameinfo type sydes_nameinfo.
    data typeinfo type sydes_typeinfo.
    data ddrec like dd04t.

    field-symbols <c>.
    assign component sy-tabix of structure i_struc to <c>.
    if sy-subrc eq 0.
      describe field <c> into desc.

      read table desc-types index 1 into typeinfo.

      " Ищем второй элемент ,в нем имя
      data iname type i.
      loop at desc-names into nameinfo
        where continue eq ''.
        iname = sy-tabix + 1.
        exit.
      endloop.
      read table desc-names index iname into nameinfo.

      data %tmp(64).
      %tmp = nameinfo-name.
      sy-subrc = 0.
      sy-lilli = iname + 1.
      while nameinfo-continue ne '' and sy-subrc eq 0.
        clear nameinfo-name.
        read table desc-names index sy-lilli into nameinfo.
        concatenate %tmp nameinfo-name into %tmp.
        add 1 to sy-lilli.
      endwhile.

      " ??
      if nameinfo-name eq sy-repid and typeinfo-type eq 'D'.
        nameinfo-name = 'DATUM'.  " обычн дата
      endif.
      clear ddrec.


      if %tmp cs '-'.  " get data element

        split %tmp at '-' into
          sy-lisel(30) sy-lisel+30(30) sy-lisel+60(30) sy-lisel+90(30).
        assert sy-lisel+60(30) is initial.

        select single * "
          from dd03l
          where tabname eq sy-lisel(30)
            and fieldname eq sy-lisel+30(30).

        if sy-subrc eq 0.
          %tmp = dd03l-rollname.
          " Не работает Суммирование при ссылке на валюту
*          if lcat-datatype ne 'CURR'.
            lcat-ref_table = dd03l-tabname. "reftable.
            lcat-ref_field = dd03l-fieldname. "reffield.
*          endif.

          lcat-checktable = dd03l-checktable.
        endif.
      endif.

      if %tmp cs '==' or %tmp eq sy-repid.
        %tmp = ls_details-name.
      endif.

      select single * into ddrec   " data element text
        from dd04t
        where rollname eq %tmp
          and ddlanguage eq sy-langu.

      if sy-subrc eq 0.
        move-corresponding ddrec to lcat.  " save texts
*        if lcat-coltext is initial. " do not use, if scrtext_* variable length required
*          lcat-coltext = lcat-reptext = lcat-scrtext_l.
*        endif.
      endif.

    endif.

    append lcat to o_fcat.

  endloop.

endform.
" dd_lvc_t_fcat


Изображение


Последний раз редактировалось trop Пт, авг 04 2006, 11:28, всего редактировалось 3 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 19 2006, 17:59 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Bit написал:
P.S.: Забыл спросить, самый простой способ скрытия полей в АЛВ - это установить необходимым столбцам NO_OUT в 'X'?
Самый простой способ - это не добавлять описание этих полей в каталог полей. Потому что в случае с ноу-аутом пользователь может зайти в настройку формата и добавить это поле. Конечно, можно этот ф.код указать в списке исключенных, чтобы не было возможности менять формат...
А GET_COMPONENT_LIST работает, насколько мне известно, только для глобально объявленных таблиц/структур. Кстати, я обсуждал как раз подобную тему здесь, вариант с CL_ABAP_TYPEDESCR очень даже хорош! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл по столбцам
СообщениеДобавлено: Чт, окт 27 2011, 13:32 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 27 2011, 09:29
Сообщения: 17
Спасибо все получилось : :D


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Чт, окт 27 2011, 14:31 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
RoadRunner написал:
Самый простой способ - это не добавлять описание этих полей в каталог полей. Потому что в случае с ноу-аутом пользователь может зайти в настройку формата и добавить это поле.
Есть ещё TECH(Техническое) - отлично прячет поля любого вида и типа.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB