将excel文件中的检索值显示为ALV



大家好,

有这个东西,我一直试图在abap练习,这是通过检索值从excel文件到一个内部表在ALV列数据的显示。我一直在试图调试我的程序相当一段时间了,我似乎无法解决错误,它一直在说这是"字段符号尚未分配",请指导我。我已经做了一些关于如何解决这个短转储错误的研究,但大多数其他问题张贴在网上是从一些列字段的特定表中选择的。我只是在想,也许我的情况和别人有点不同。

从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.

任何提示,技巧和建议在我的程序将高度寻求。

您使用的类型没有在数据字典中定义。这需要在创建ALV字段cat时使用不同的方法。试试这个:

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'.

我不是ABAP专家,但我注意到你发布的代码中的两件事:

  • 你说错误是"字段符号尚未分配",但你的代码中没有字段符号。也许它在您调用的某个函数模块中使用。如果是这样,请尝试发布错误弹出的代码;
  • 你使用gt_tab[],如果我没记错的话,这是访问带有标题行的内部表体的方式。在您的代码中,gt_tab不是带有标题行的内部表,但您使用它来存储带有函数'TEXT_CONVERT_XLS_TO_SAP';
  • 的内部表。

尝试将生成错误的代码贴出。

问候,Sergiu

相关内容

  • 没有找到相关文章

最新更新