Текущее время: Чт, июн 26 2025, 08:11

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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