下面是工作中发现的一个RFC可以远程读取R3 TABLE 数据基本使用方法,在使用过程中发现部分数据库表无法读取,但这个可以做为处理问题的一种方法供参考:
/*.............
parameters: p_client like rfcdes-RFCDEST.
data: l_OPTIONS like RFC_DB_OPT occurs 0 with header line. /*可以下SQL查询条件筛选数据纪录;
data: l_FIELDS like RFC_DB_FLD occurs 0 with header line. /*返回数据表的字段长度信息;
data: l_data like TAB512 occurs 0 with header line. /*返回查询数据信息,可以参考l_FIELDS返回值读取想要的字段数据;
clear: l_options,l_fields,l_data,it_psa.
clear: l_options[],l_fields[],l_data[].
concatenate 'BUDAT =' pl_date into l_options-TEXT SEPARATED BY space.
append l_options.
CALL FUNCTION 'RFC_READ_TABLE' destination p_client
EXPORTING
query_table = 'MKPF'
tables
OPTIONS = l_options
fields = l_fields
data = l_data
EXCEPTIONS
TABLE_NOT_AVAILABLE = 1
TABLE_WITHOUT_DATA = 2
OPTION_NOT_VALID = 3
FIELD_NOT_VALID = 4
NOT_AUTHORIZED = 5
DATA_BUFFER_EXCEEDED = 6
OTHERS = 7.
if sy-subrc <> 0.
if sy-subrc = 1. write:/ 'TABLE_NOT_AVAILABLE'.
elseif sy-subrc = 2. write:/ 'TABLE_WITHOUT_DATA'.
elseif sy-subrc = 3. write:/ 'OPTION_NOT_VALID'.
elseif sy-subrc = 4. write:/ 'FIELD_NOT_VALID'.
elseif sy-subrc = 5. write:/ 'NOT_AUTHORIZED'.
elseif sy-subrc = 6. write:/ 'DATA_BUFFER_EXCEEDED'.
elseif sy-subrc = 7. write:/ 'OTHERS'.
endif.
exit.
endif.
loop at l_data.
itab-mblnr = l_data-WA+3(10).
itab-budat = l_data-WA+31(8).
itab-CPUDT = l_data-WA+39(8).
append itab.
endloop.
/*.............
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9381143/viewspace-592709/ ,如需转载,请注明出处,否则将追究法律责任。