Как писать структуры в ABAP? - PullRequest
3 голосов
/ 29 июля 2011

Как я могу показать значение внутри структуры? см. ниже пример:

DATA: BEGIN OF line,
        col1 TYPE i,
        col2 TYPE i,
      END OF line.

DATA: itab LIKE TABLE OF line,
      jtab LIKE TABLE OF line.

DO 3 TIMES.
  line-col1 = sy-index.
  line-col2 = sy-index ** 2.
  APPEND line TO itab.
ENDDO.

MOVE itab TO jtab.

line-col1 = 10. line-col2 = 20.
APPEND line TO itab.


IF itab GT jtab.
  WRITE / 'ITAB GT JTAB'.
ENDIF.

Написать: itab, jtab.

потому что я хочу знать, почему итаб больше, чем jtab?

Ответы [ 4 ]

3 голосов
/ 31 июля 2011

Если вы хотите видеть содержимое поля исключительно для целей отладки, вы также можете просто поставить точку останова в своем коде и посмотреть содержимое в отладчике.

Просто не оставляйте точку остановав продуктивном коде!

break-point. 
"or use break yourusername  <= this use is safer

РЕДАКТИРОВАТЬ: Вы также можете просто использовать точку останова сеанса, которая не требует, чтобы вы изменили код (и будет применяться только для вашего пользователя в течение сеанса):

В системе, в которой вы запускаете программу:

  • Откройте программу
  • Выберите нужную строкупрограмма для остановки на
  • Нажмите кнопку «Точка останова» сеанса

    enter image description here

Рядом с иконкой точки остановалиния (вы также можете просто щелкнуть в том месте, где появился значок, чтобы установить / удалить точку останова).

enter image description here

2 голосов
/ 02 августа 2011

ITAB больше, чем JTAB, потому что он содержит больше строк; ITAB имеет 4 строки, а JTAB - 3 строки.

Когда дело доходит до внутренних таблиц, оператор GT сначала смотрит на количество строк в таблицах. Более подробную информацию об операторах сравнения (для внутренних таблиц) можно найти по адресу http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3841358411d1829f0000e829fbfe/content.htm. [Я вижу, что ваш пример также взят с этой страницы справки.]

2 голосов
/ 29 июля 2011

Вы можете использовать функциональный модуль REUSE_ALV_GRID_DISPLAY.

Например:

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  TABLES
    t_outtab = itab.
2 голосов
/ 29 июля 2011

Я предполагаю, что это всего лишь быстрый пример, и вы не хотите использовать (части) это в продуктивной среде - поэтому я игнорирую другие потенциальные проблемы, которые существуют в вашем коде.

Что касается вашего вопроса, вам нужно перебрать свой itab для доступа к его значениям. Затем вы можете получить доступ к значению, например, так:

DATA: ls_current_line LIKE line.
" ...
LOOP AT itab INTO ls_current_line.
  WRITE / ls_current_line-col1.
ENDLOOP.
...