Отображение полученного значения в файле Excel в ALV - PullRequest
3 голосов
/ 25 сентября 2011

Добрый день всем,

Есть кое-что, что я пытался применить в abap, и это отображение данных столбца в ALV путем извлечения значений из файла Excel во внутреннюю таблицу. Я уже довольно давно пытаюсь отладить свою программу и, похоже, не могу устранить ошибку, которую она заявляет: «Символ поля еще не назначен», пожалуйста, сообщите мне. Я уже провел некоторое исследование о том, как решить эту короткую ошибку дампа, но большинство других проблем, опубликованных в сети, выбрано из некоторой определенной таблицы с полями столбцов. Мне просто интересно, что, возможно, мой случай немного отличается от других.

Функция, которая извлекала значения из Excel, работает правильно, и у меня нет проблем с их отображением. Ниже приведен код, который я построил.

TYPE-POOLS: truxs,
        slis.

TYPES: BEGIN OF t_itab,
      col1 TYPE char20,
      col2 TYPE char20,
      col3 TYPE char20,
      col4 TYPE char20,
      col5 TYPE char20,
   END OF t_itab,
   t_it_itab type STANDARD TABLE OF t_itab.

Data: gt_tab TYPE t_it_itab,
  wa_tab TYPE t_itab,
  g_numrows TYPE i.

PARAMETERS: p_fname TYPE c LENGTH 50.

INITIALIZATION.

AT SELECTION-SCREEN OUTPUT.

AT SELECTION-SCREEN.
AT SELECTION-SCREEN on VALUE-REQUEST FOR p_fname.
DATA: l_filename LIKE  IBIPPARMS-PATH.
CALL FUNCTION 'F4_FILENAME'
 EXPORTING
   PROGRAM_NAME        = SYST-CPROG
   DYNPRO_NUMBER       = '1000'
 IMPORTING
   FILE_NAME           = l_filename
        .
p_fname = l_filename.

START-OF-SELECTION.

DATA: lc_fname TYPE RLGRAP-FILENAME,
  lt_tab TYPE TRUXS_T_TEXT_DATA.

  lc_fname = p_fname.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
  EXPORTING
    I_TAB_RAW_DATA             = lt_tab
    I_FILENAME                 = lc_fname
  TABLES
    I_TAB_CONVERTED_DATA       = gt_tab
  EXCEPTIONS
    CONVERSION_FAILED          = 1
  OTHERS                       = 2
      .
IF SY-SUBRC <> 0.
  WRITE 'Error'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

" Delete First Row / HEADER
DELETE gt_tab INDEX 1.

IF gt_tab[] is INITIAL.
  MESSAGE 'No Record(s) found' TYPE 'I'.
  EXIT.
ELSE.
  PERFORM DisplayALv.
ENDIF.

FORM DISPLAYALV.
 DATA: l_it_fcat type SLIS_T_FIELDCAT_ALV,
       l_wa_fcat TYPE SLIS_FIELDCAT_ALV.

 l_wa_fcat-fieldname = 'col1'.
 l_wa_fcat-ref_tabname = 'gt_tab'.
 l_wa_fcat-reptext_ddic = 'Column 1'.
 l_wa_fcat-outputlen = '30'.
 APPEND l_wa_fcat TO l_it_fcat.
 CLEAR l_wa_fcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    I_CALLBACK_PROGRAM       = sy-repid
    IT_FIELDCAT              = l_it_fcat
    I_DEFAULT          = 'X'
    I_SAVE             = 'A'
  TABLES
    T_OUTTAB           = gt_tab[].

IF SY-SUBRC <> 0.
  WRITE: 'SY-SUBRC: ', SY-SUBRC .
ENDIF.

ENDFORM.

Любые советы, хитрости и советы в моей программе будут востребованы. Заранее спасибо

Ответы [ 2 ]

7 голосов
/ 25 сентября 2011

Вы используете тип, который не определен в словаре данных. Это требует другого подхода при создании ALV fieldcat. Попробуйте это:

l_wa_fcat-fieldname = 'COL1'.
l_wa_fcat-inttype = 'C'.
l_wa_fcat-outputlen = '30'.
l_wa_fcat-text_fieldname = 'Column 1'.
l_wa_fcat-seltext_s = 'Column 1'.

Также убедитесь, что вы вводите значение поля с заглавными буквами.

1 голос
/ 25 сентября 2011

Я не эксперт по ABAP, но я заметил две вещи в опубликованном вами коде:

  • вы сказали, что ошибка "Символ поля еще не назначен", но у вас нет символа поля вваш код.Возможно, он используется внутри одного из функциональных модулей, которые вы вызываете.Если это так, попробуйте опубликовать код, где появляется ошибка:
  • вы используете gt_tab [], который, если я хорошо помню, является способом доступа к телу внутренней таблицы со строкой заголовка.В вашем коде gt_tab не является внутренней таблицей со строкой заголовка, но вы используете ее для хранения таблицы с функцией 'TEXT_CONVERT_XLS_TO_SAP';

Попробуйте опубликовать код, в котором генерируется ошибка.

С уважением, Сергей

...