由于某些问题,无法进行表提取

2020-09-10 13:48发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好,Gurus,我写了一个小代...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,Gurus,我写了一个小代码来提取数据。 这种设计使得即使SAP系统中不存在该表,程序也不应给出语法错误。 以下是代码

DATA:maxsize TYPE char10,s_cursor TYPE游标,
data:ls_dd02l类型dd02l,
ls_dd03m类型dd03m。
数据:ISTABLE_ANKB类型字符串。选择单个*从DD02L到ls_dd02l,其中TABNAME ='ANKB'和TABCLASS <>'VIEW'。 。
如果SY-SUBRC =0。
ISTABLE_ANKB ='是'。
ELSE。 ISTABLE_ANKB ='否'。
ENDIF。
如果ISTABLE_ANKB ='是'。
类型:TS_ANKB的开头,MANDT(3)类型C,
ANLKL(8)类型C,
AFAPL(4)类型C,
AFABE(2)类型C,< br> BDATU(8)类型D,ADATU(8)类型D,ERNAM(12)类型C,ERDAT(8)类型D,AENAM(12)类型C,< br> AEDAT(8)C型,
XSPEB(1)C型,
XLOEV(1)C型, FELEI(4)C型,KTOGR(8)C型,< br> XNEGA(1)C型,
XGWGK(1)C型,MINDJ(3)C型,MINDP(3)C型,MAXDJ(3)C型,< br> MAXDP(3)类型C,
INVSL(2)类型C,
AFASL(4)类型C,
NDJAR(3)类型C,
NDPER(3)类型C,< br> NAPRZ(7)C型,SAPRZ(7)C型,WBIND(5)C型,ALIND(5)C型,APROP(7)C型,< br> TS_ANKB的结尾。
数据:TS_ANKB的IT_ANKB类型标准表。
数据:WA_ANKB TYPE TS_ANKB。
data:LV_ANKB类型的字符串。
ENDIF。
使用KEY符号='I'选项='EQ'低='ANKB'读取表p_tables。
IF ck_pop <>'X'或sy-subrc <> 0.
IF ISTABLE_ANKB ='是 '。
数据:COLUMN_ANKB TYPE STRING。
DATA TABLE_ANKB TYPE STRING。
COLUMN_ANKB ='MANDT ANLKL AFAPL AFABE BDATU ADATU ERNAM ERDAT AENAM AEDAT XSPEB XLOEV FELEI KTOGR XNEGA XGWGK MINDJ MINDP MAXDJ MAXDP INVSL AFASL NDJAR NDPER NAPRZ SAPRZ WBIND ALIND APROP。
TABLE_ANKB ='ANKB'。
带有s_cursor FOR的打开光标FOR
从(TABLE_ANKB)选择(COLUMN_ANKB)
MANDT = S_pclien。
DO。
"对于每个'maxsize'记录数,按块获取数据
下一表CURSOR s_cursor
附表IT_ANKB
包大小maxsize。
如果sy-subrc <> 0.
关闭光标s_cursor。
退出
ENDIF。
ENDDO。
lv_file ='ANKB.ACTT'。
ls_table ='MANDT'。
DESCRIBE FIELD WA_ANKB -mandt TYPE LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'进入LS_TABLE。
CONCATENATE ls_table'| ^ |' 将'ANLKL'插入ls_table。
DESCRIBE字段WA_ANKB-anlkl类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'进入LS_TABLE。 |' 'AFAPL'到ls_table中。
DESCRIBE字段WA_ANKB-afapl类型LV_TYPE长度LV_LEN在BYTE模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE中。 |' 'AFABE'进入ls_table。
DESCRIBE字段WA_ANKB-afabe类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'进入LS_TABLE。
CONCATENATE ls_table'| ^ |' 'BDATU'到ls_table中。
DESCRIBE字段WA_ANKB-bdatu类型LV_TYPE LENGTH LV_LEN在字节模式中。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE中。 |' 'ADATU'到ls_table中。
DESCRIBE字段WA_ANKB-adatu类型LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table'| ^ |' 'ERNAM'进入ls_table。
DESCRIBE字段WA_ANKB-ernam类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'进入LS_TABLE。
CONCATENATE ls_table'| ^ |' 'ERDAT'进入ls_table。
DESCRIBE字段WA_ANKB-erdat类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'进入LS_TABLE。
CONCATENATE ls_table'| ^ |' 'AENAM'进入ls_table。
DESCRIBE字段WA_ANKB-aenam类型LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table'| ^ |' 'AEDAT'进入ls_table。
DESCRIBE字段WA_ANKB-aedat类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'进入LS_TABLE。 |' 'XSPEB'进入ls_table。
DESCRIBE字段WA_ANKB-xspeb类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table'| ^ |' 'XLOEV'进入ls_table。
DESCRIBE字段WA_ANKB-xloev类型LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'进入LS_TABLE。
CONCATENATE ls_table'| ^ |' 'FELEI'进入ls_table。
DESCRIBE字段WA_ANKB-felei类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table'| ^ |' 'KTOGR'进入ls_table。
DESCRIBE字段WA_ANKB-ktogr类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table'| ^ |' 'XNEGA'到ls_table中。
DESCRIBE字段WA_ANKB-xnega类型LV_TYPE LENGTH LV_LEN在字节模式中。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE中。 |' 'XGWGK'到ls_table。
DESCRIBE字段WA_ANKB-xgwgk类型LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table' |' 将'MINDJ'放入ls_table。
DESCRIBE字段WA_ANKB-mindj类型LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table'| ^ |' 'MINDP'进入ls_table。
DESCRIBE字段WA_ANKB-mindp类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。 |' 'MAXDJ'到ls_table中。
DESCRIBE字段WA_ANKB-maxdj类型LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE中。 |' 'MAXDP'到ls_table中。
DESCRIBE字段WA_ANKB-maxdp类型LV_TYPE长度LV_LEN在字节模式中。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE中。 |' 'INVSL'进入ls_table。
DESCRIBE字段WA_ANKB-invsl类型LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。 |' 'AFASL'到ls_table中。
DESCRIBE字段WA_ANKB-afasl类型LV_TYPE长度LV_LEN在BYTE模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE中。 |' 'NDJAR'进入ls_table。
DESCRIBE字段WA_ANKB-ndjar类型LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table'| ^ |' 'NDPER'进入ls_table。
DESCRIBE字段WA_ANKB-ndper类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table'| ^ |' " NAPRZ"到ls_table中。
DESCRIBE字段WA_ANKB-naprz类型LV_TYPE长度LV_LEN在BYTE模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'进入LS_TABLE。 |' 'SAPRZ'到ls_table中。
DESCRIBE字段WA_ANKB-saprz类型LV_TYPE长度LV_LEN在BYTE模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE中。 |' 'WBIND'进入ls_table。
DESCRIBE字段WA_ANKB-wbind类型LV_TYPE长度LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'到LS_TABLE。
CONCATENATE ls_table'| ^ |' 'ALIND'进入ls_table。
DESCRIBE字段WA_ANKB-alind类型LV_TYPE LENGTH LV_LEN在字节模式下。
CONCATENATE LS_TABLE'['LV_TYPE'('LV_LEN')]'进入LS_TABLE。
CONCATENATE ls_table'| ^ |' 'APROP'到ls_table中。
DESCRIBE字段WA_ANKB-aprop类型LV_TYPE LENGTH LV_LEN在字节模式中。将LS_TABLE'['LV_TYPE'('LV_LEN')]'插入LS_TABLE。lv_ANKB =行(IT_ANKB)。 br> IF SY-SUBRC = 0.使用lv_file ls_table执行conv_table_to_text表it_ANKB .FREE IT_ANKB。清除lt_table。<清除>清除ls_table。 ELSE。
将ls_table附加到lt_table。 > PERFORM download_gui表格lt_table使用lv_file。
CLEAR lt_table。
CLEAR ls_table。
ENDIF。
ENDIF。
ENDIF。


但是每当我运行该程序时,都会出现此错误
发生了一个异常,下面将对其进行详细说明。 捕获到分配给类'CX_SY_DYNAMIC_OSQL_SEMANTICS'的异常,因此导致运行时错误。 发生异常的原因是:当前的ABAP程序试图执行包含动态条目的Open SQL语句:
数据库字段AEDAT或聚合函数AEDAT的结果类型以及" IT_ANKB"的组件" AEDAT"是 不兼容。

我已经编写了用于数据下载的代码,但是以某种方式它从未到达过那里,并且在 FETCH NEXT CURSOR s_cursor






>