将字段符号分配给内部 Table

Assigning Field Symbols to Internal Table

我正在尝试将 Excel 文件上传到 ABAP 中的内部 table。我正在使用函数 GUI_UPLOAD,然后是 SCMS_BINARY_TO_XSTRING。最后我有字段符号 <gt_data> 和来自 Excel 文件的数据。

DATA(lo_data_ref) = lo_excel_ref->if_fdt_doc_spreadsheet~get_itab_from_worksheet(
                                             lv_woksheetname ).
*-- Excel work sheet data in dyanmic internal table
    ASSIGN lo_data_ref->* TO <gt_data>.
A [CString] B [CString]
data1 data11
data2 data22
data3 data33

如何将 <gt_data> 迭代到内部 table?我会像下面那样尝试,但我收到了转储。

 TYPES: BEGIN OF lty_test,
           A  TYPE string,
           B TYPE string,
         END OF lty_test.

  DATA: lt_test_table    TYPE STANDARD TABLE OF lty_test.

试试这个:

    file = 'C:\xyz.XLS'.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = file
      i_begin_col             = '1'
      i_begin_row             = '1'
      i_end_col               = '5'
      i_end_row               = '6000'
    TABLES
      intern                  = xcel
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.

LOOP AT xcel.
  " xcel is an internal table and has field xcel-value
ENDLOOP.

据我了解,您想使用此代码读取 excel 行。

LOOP AT <gt_data> ASSIGNING FIELD-SYMBOL(<ls_data>).
ENDLOOP.

我不确定 的结构,但我认为您可以通过索引阅读它以了解主要思想。

你能像下面这样试试吗?

CHECK <gt_data> IS ASSIGNED.
"It's column count for excel file. It can be found dynamically.
DATA(lv_column_count) = 10.
"Loop for rows.
LOOP AT <gt_data> ASSIGNING FIELD-SYMBOL(<ls_data>).
  "Loop for columns
  DO lv_column_count.
   ASSIGN COMPONENT sy-index OF <ls_dat> TO FIELD-SYMBOL(<lfs_value>).
  ENDDO.
ENDLOOP.