SAP通用查询出错

使用finereport提供的通用查询,通过SQL在SAP查数据,返回结果为空。在SAP里调试好像是SQL执行

  SELECT (FIELDS) FROM (fromClauseString) INTO @<datarow> WHERE (whereClauseString).

有问题,有人碰到过类似的情况吗?

查询界面如图:

1608192446721450.png

查询代码没改过

FUNCTION EXTRACT_TABLE_DATA.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  TABLES
*"      FIELDS STRUCTURE  ZSQL_CLAUSE_ELEMENTS
*"      FROMCLAUSE STRUCTURE  ZSQL_CLAUSE_ELEMENTS
*"      WHERECLAUSE STRUCTURE  ZSQL_CLAUSE_ELEMENTS
*"      DATA STRUCTURE  ZTABLEROWS
*"----------------------------------------------------------------------
  TYPE-POOLS: abap.
  DATA:
        columnName TYPE SO_TEXT,
        fieldDataDescrRef  TYPE REF TO abap_componentdescr,
        numberFields TYPE i,
        fieldDescr TYPE abap_componentdescr,
        fieldname TYPE string,
        fieldDescrTab TYPE abap_component_tab,
        rowStructDescr TYPE REF TO cl_abap_structdescr,
        rowReference TYPE REF TO data,
        returnRowString TYPE string,
        dataFieldString TYPE string,
        dataline LIKE data,
        fromClauseRow TYPE ZSQL_CLAUSE_ELEMENTS,
        fromClauseString TYPE string,
        whereClauseRow TYPE ZSQL_CLAUSE_ELEMENTS,
        whereClauseString TYPE string,
        fieldsRow TYPE ZSQL_CLAUSE_ELEMENTS,
        FNAME(600) VALUE 'myfile'.

  FIELD-SYMBOLS:
          <datarow> TYPE ANY,
          <datafield> TYPE ANY.


* CREATE DataStructure with field names
* Datatypes are read from fieldnames of FIELDS input table
  DESCRIBE TABLE FIELDS LINES numberFields.
  LOOP AT FIELDS INTO fieldsRow.
    fieldname = SY-TABIX.
* names need to be unique and must start with a char
    CONCATENATE 'string' fieldname INTO fieldname.
    CONDENSE fieldname.
    fieldDescr-name = fieldname.
* for dictionary lookup we need to change columnnames from Open SQL
* to dictionary notation
    columnName = fieldsRow-TEXT.
    REPLACE FIRST OCCURRENCE OF SUBSTRING '~' IN columnName WITH '-' RESPECTING CASE.

    fieldDescr-type ?= cl_abap_typedescr=>describe_by_name( columnName ).
    APPEND fieldDescr TO fieldDescrTab.
  ENDLOOP.

  rowStructDescr = cl_abap_structdescr=>create( fieldDescrTab ).

* now we create the actual data structure in memory
  create data rowReference type HANDLE rowStructDescr.
* finally we assign it to the Field-symbol used by the select statement
  ASSIGN rowReference->* TO <datarow>.
* End Create DataStructure

* to simplify calls we concatenate from and whereclause into strings
* this way caller doesn't need to check word wrappings
  fromClauseString = ''.
  LOOP AT FROMCLAUSE INTO fromClauseRow.
    CONCATENATE fromClauseString fromClauseRow-TEXT INTO fromClauseString.
  ENDLOOP.

  whereClauseString = ''.
  LOOP AT WHERECLAUSE INTO whereClauseRow.
    CONCATENATE whereClauseString whereClauseRow-TEXT INTO whereClauseString.
  ENDLOOP.
*IF sy-uname = 'SIENIT01'.
* break-point.
*ENDIF.
* Now start actual select operation
  SELECT (FIELDS) FROM (fromClauseString) INTO @<datarow> WHERE (whereClauseString).
* we read all fields of the current row, cast it to string and
* concatenate it into a dataline with division chars.
    CLEAR: returnRowString.
    DO numberFields TIMES.
      ASSIGN component sy-index of structure <datarow> to <datafield>.
      dataFieldString = <datafield>.
      CONCATENATE returnRowString '^' datafieldstring INTO returnRowString.
    ENDDO.
    dataline = returnRowString.
* finally dataline is added to the return table.
    INSERT dataline INTO TABLE data.
  ENDSELECT.


open DATASET FNAME FOR APPENDING IN TEXT MODE ENCODING DEFAULT.

TRANSFER whereClauseString TO FNAME.


IF SY-SUBRC <> 0.
  WRITE: 'SY-SUBRC:', SY-SUBRC,
       / 'System Message:'.
ENDIF.
CLOSE DATASET FNAME.


ENDFUNCTION.


FineReport kkluoluo 发布于 2020-12-17 16:10
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
kkluoluoLv3见习互助
发布于2020-12-18 10:56

@<datarow> 改成 <datarow>

最佳回答
0
zsh331Lv8专家互助
发布于2020-12-17 17:02

楼主:这个sap查询界面,配置好信息后运行,日志反馈什么内容?

==========

Log 输出级别-https://help.fanruan.com/finereport/doc-view-991.html


  • kkluoluo kkluoluo(提问者) Log 看上去是正常的。 2020-12-17 17:34:29 正常:17:34:29 Service Thread INFO [standard] old usage is 0.4909468392058198 2020-12-17 17:34:29 正常:17:34:29 Service Thread INFO [standard] promotion is 1.19390960666492E-6,time Thu Dec 17 17:34:28 CST 2020 2020-12-17 17:34:29 正常:17:34:29 Service Thread INFO [standard] diff is 0,timespan 43129,OG MAX 1365 2020-12-17 17:34:29 正常:17:34:29 Service Thread INFO [standard] load score 0 after minorgc
    2020-12-17 17:36 
  • zsh331 zsh331 回复 kkluoluo(提问者) 没有反馈取数脚本嘛?
    2020-12-17 17:37 
  • 1关注人数
  • 334浏览人数
  • 最后回答于:2020-12-18 10:56
    请选择关闭问题的原因
    确定 取消
    返回顶部