Текущее время: Вс, июл 27 2025, 12:15

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Как считать поля типа
СообщениеДобавлено: Пн, фев 18 2013, 13:43 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
Добрго дня господа !

Необходимо произвести экспорт данных (txt)
Первая строка это шапка таблицы
Возможно ли считать название поле типа выходной таблицы ?
Code:

            BEGIN OF rcHead,
              ColumnName(100) TYPE C,
            END OF rcHead,
            tbHead LIKE STANDARD TABLE OF rcHead.

rcHead-ColumnName = 'Field1'.
APPEND rcHead TO tbHead.
rcHead-ColumnName = 'Field2'.
APPEND rcHead TO tbHead.
rcHead-ColumnName = 'Field3'.
APPEND rcHead TO tbHead.
CLEAR  rcHead.

CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
    FileName                = 'c:\rr12.txt'
    FileType                = 'DAT'
    Write_Field_Separator   = 'X'
  TABLES
    Data_Tab                = tbView
    FieldNames              = tbHead
  EXCEPTIONS
    File_Write_Error        = 1
    ..............
  OTHERS                    = 22.



Хочу tbHead - заполнить циклом, сославшись на структуру таблицы tbView


Заранее благодарен !


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Пн, фев 18 2013, 14:27 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
Не совсем понятно, что Вы планируете делать. Считать названия полей произвольной таблицы?
Если у Вас есть внутренняя таблица tbView, [технические] названия ее полей можно считать, например, так:
Code:
    DATA: ref_table TYPE REF TO cl_abap_tabledescr.
    DATA: ref_struct TYPE REF TO cl_abap_structdescr.
    ref_table ?= cl_abap_typedescr=>describe_by_data( tbView ).
    ref_struct ?= ref_table->get_table_line_type( ).
Таблица ref_struct->components в поле name будет содержать технические имена полей.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Пн, фев 18 2013, 15:22 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
LAT написал(а):
Считать названия полей произвольной таблицы?


Совершенно верно - мне необходмо при выводе текста - вывести имена полей

Спасибо получилось !
Code:
            rfTable  TYPE REF TO cl_abap_tabledescr,
            rfStruct TYPE REF TO cl_abap_structdescr,
            rcList   TYPE Abap_Compdescr,
            BEGIN OF rcHead,
              ColumnName(100) TYPE C,
            END OF rcHead,
            tbHead LIKE STANDARD TABLE OF rcHead.

rfTable  ?= cl_abap_typedescr=>describe_by_data( tbView ).
rfStruct ?= rfTable->get_table_line_type( ).
LOOP AT rfStruct->components into rcList.
  rcHead-ColumnName = rcList-Name.
  APPEND rcHead TO tbHead.
ENDLOOP.


А заполнить набор ЗАДАННЫХ полей командой можно ?
INSERT LINES OF rfStruct->components (Name Field1 .....) INTO TABLE tbHead.
Чтобы без цикла обойтись

Code:
LOOP AT rfStruct->components into rcList.
  rcHead-ColumnName = rcList-Name.
  APPEND rcHead TO tbHead.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Пн, фев 18 2013, 17:58 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
HOME_X написал(а):
А заполнить набор ЗАДАННЫХ полей командой можно ?
INSERT LINES OF rfStruct->components (Name Field1 .....) INTO TABLE tbHead.
Чтобы без цикла обойтись
Можно сделать какую-нибудь обертку (макрос/метод/подпрограмму(форму)/ФМ), внутри которой будет тот же цикл :).
ЗЫ. Чем Вам циклы то не угодили? :lol:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Пн, фев 18 2013, 22:32 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
LAT написал(а):
Чем Вам циклы то не угодили?


Много кода, признак плохого стиля и недостатка знаний!
Мысль надо выражать лаконично и ОПТИМАЛЬНО ......(ну это не всегда получаеться)

Спасибо за помошь !


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Вт, фев 19 2013, 00:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
HOME_X написал(а):
Много кода, признак плохого стиля и недостатка знаний!

Кто это вам сказал? :mrgreen:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Вт, фев 19 2013, 22:09 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
Удав написал(а):
Кто это вам сказал?


Если Вас на смущает тип пользователя "Начинающий"
считайте это моей цитатой.....

Вы же не переписываете системный функций, а пытаетесь интегрироваться с ними.
(даже если они не оптимальны, хотя и такое бывает....)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Ср, фев 20 2013, 00:28 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
HOME_X написал(а):
Если Вас на смущает тип пользователя "Начинающий"
считайте это моей цитатой.....

[off]Как раз смущает. Безапелляционные высказывания, не подтвержденные опытом, могут сформировать о Вас соответствующее мнение.[/off]

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Ср, фев 20 2013, 02:08 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
[quote="Удав]
Безапелляционные высказывания...
[/quote]

В смысле - Вы считате что МНОГО пользовательского кода это хорошо ?
Надо пытаться познать системы и дописывать только прикладные моменты

Например - когда надо прилепить третью таблицу, (хотя здесь не ясно, неужели
у ABAP такой слабый SQL - может надо глубже покопать ?)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Ср, фев 20 2013, 07:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
HOME_X написал(а):
В смысле - Вы считате что МНОГО пользовательского кода это хорошо ?
Надо пытаться познать системы и дописывать только прикладные моменты

Я считаю, что сначала нужно изучить базовые конструкции языка, а потом делать выводы ;)
Учитывая то, что все прикладные программы в SAP написаны на языке ABAP, то знание самого языка значительно увеличивает шансы "познания системы".
Кроме того, стандартный код SAP не всегда работает хорошо - посмотрите на количество нот. :roll:

HOME_X написал(а):
Например - когда надо прилепить третью таблицу, (хотя здесь не ясно, неужели
у ABAP такой слабый SQL - может надо глубже покопать ?)

Зачем Вам нужен был left join?
С помощью обычного join можно соединить хоть 10 таблиц, хотя практическая выгода от такого соединения априори сомнительна.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Ср, фев 20 2013, 19:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
HOME_X написал(а):
...(хотя здесь не ясно, неужели
у ABAP такой слабый SQL - может надо глубже покопать ?)

SAP реализует некий Open SQL, вероятно по нескольким причинам:
- совместимость разных СУБД;
- интеграция со словарем, навигация по нему, индексация...;
- кластерные таблицы, таблицы пула (собственный обработчик SQL);
- собственные конструкции (for all entries...);
- предварительная обработка запроса (пред-оптимизация, буферизация...);
- и т.д.

В общем куча механизмов, которые надо поддерживать, любое изменение чревато лишними работами. Плюс общая нерасторопность САП в этих вопросах, типа "итак работает". :)

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как считать поля типа
СообщениеДобавлено: Ср, фев 20 2013, 21:01 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
Хорошему проекту хороший абапер не нужен.
Хорошему абаперу хороший проект неинтересен.
Мы обречены!

Слишком мало поработал чтобы делать выводы - но похоже Вы правы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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