RFC_READ_TABLE 详细用法
来源:互联网 发布:分销商城源码 编辑:程序博客网 时间:2024/06/06 17:20
*&---------------------------------------------------------------------*
*& Report ZCME_COPY_DATA
*&
*&---------------------------------------------------------------------*
*& 有一些缺陷,大数据时,表的字段长度大于 512 时的解决方法
*&第一次取结构,不管是什么数据类型的。反正你读出结构,创建动态内表。
*&然后你得到结构之后(内表). loop 这张内表, 累加它的字段长度,
*&小于等于 512 时再执行一次这个function 取数据(带关键字段,执行完了,
*&按照关键字段来合并数据),反复这样的操作。 需要写一个大方法
*&---------------------------------------------------------------------*
REPORT ZCME_COPY_DATA_D.
TABLES RSRD1.
SELECT-OPTIONS S_TAB FOR RSRD1-TBMA_VAL OBLIGATORY.
PARAMETERS P_DES TYPE RSEDR-SYSID.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_DES.
PERFORM SEARCH_HELP.
START-OF-SELECTION.
PERFORM GET_TABLE_NAME.
*&---------------------------------------------------------------------*
*& Form GET_TABLE_NAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_TABLE_NAME .
DATA LT_DD02L TYPE STANDARD TABLE OF DD02L.
DATA LS_DD02L TYPE DD02L.
DATA LT_RFC_DB_OPT TYPE STANDARD TABLE OF RFC_DB_OPT.
DATA LT_RFC_DB_FLD TYPE STANDARD TABLE OF RFC_DB_FLD.
DATA LT_TAB512 TYPE STANDARD TABLE OF TAB512.
DATA LS_TAB512 TYPE TAB512.
DATA DY_TABLE TYPE REF TO DATA.
DATA DY_LINE TYPE REF TO DATA.
DATA IFC TYPE LVC_T_FCAT.
DATA REF_TABLE_DES TYPE REF TO CL_ABAP_TYPEDESCR.
FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,
<DYN_WA>.
SELECT * INTO TABLE LT_DD02L
FROM DD02L
WHERE TABNAME IN S_TAB
AND AS4LOCAL = 'A'
AND TABNAME LIKE 'ZCME_%'.
LOOP AT LT_DD02L INTO LS_DD02L.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'.
REFRESH: LT_TAB512,LT_RFC_DB_FLD,LT_RFC_DB_OPT.
CALL FUNCTION 'RFC_READ_TABLE'
DESTINATION P_DES
EXPORTING
QUERY_TABLE = LS_DD02L-TABNAME
TABLES
OPTIONS = LT_RFC_DB_OPT
FIELDS = LT_RFC_DB_FLD
DATA = LT_TAB512
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.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE DATA DY_TABLE TYPE TABLE OF (LS_DD02L-TABNAME).
ASSIGN DY_TABLE->* TO <DYN_TABLE>.
CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>.
ASSIGN DY_LINE->* TO <DYN_WA>.
LOOP AT LT_TAB512 INTO LS_TAB512.
ASSIGN LS_TAB512-WA TO <DYN_WA>.
*casting type (ls_dd02l-tabname).
APPEND <DYN_WA> TO <DYN_TABLE>.
ENDLOOP.
LOOP AT LT_TAB512 INTO LS_TAB512.
ASSIGN LS_TAB512-WA TO <DYN_WA>.
* casting type (ls_dd02l-tabname).
MODIFY (LS_DD02L-TABNAME) FROM <DYN_WA> .
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDLOOP.
* check <dyn_table> is not initial.
* delete from (ls_dd02l-tabname).
* insert (ls_dd02l-tabname) from table <dyn_table>.
* if sy-subrc = 0.
* commit work.
* endif.
WRITE AT: / LS_DD02L-TABNAME.
ENDLOOP.
ENDFORM. " GET_TABLE_NAME
*&---------------------------------------------------------------------*
*& Form SEARCH_HELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SEARCH_HELP .
DATA: RFCDEST TYPE RFCDES-RFCDEST.
RFCDEST = P_DES.
CALL FUNCTION 'SCT2_GET_RFC_DESTINATION_F4'
EXPORTING
IV_RFC_DEST_TYPE = '3'
IV_POPUP_START_X = 5
IV_POPUP_START_Y = 5
CHANGING
CV_RFC_DEST = RFCDEST
EXCEPTIONS
RFC_DEST_NOT_FOUND = 1
CANCEL_BUTTON_PRESSED = 2
OTHERS = 3.
P_DES = RFCDEST.
ENDFORM. " SEARCH_HELP
- RFC_READ_TABLE 详细用法
- sap 系统之间读取数据- rfc_read_table
- C#调用SAP函数之RFC_READ_TABLE
- adodb Stream 详细用法
- WebClient的详细用法
- chmod 命令详细用法
- DEBUG用法详细说明
- Tar的详细用法
- systemparametersinfo详细用法
- sprintf 详细用法
- sprintf 的详细用法
- tar详细用法
- AxWindowsMediaPlayer的详细用法
- adodb.Stream 详细用法
- [转]tcpdump详细用法
- GDB的详细用法
- make的详细用法
- CheckBoxList详细用法
- Linux下minicom创建和设置
- 让PHP开发者事半功倍的十大技巧
- Linux文件查找命令find,xargs详述
- http://acm.pku.edu.cn/JudgeOnline/problem?id=2891 欧几里德线性同余方程
- setTimeout,setInterval的使用及区别
- RFC_READ_TABLE 详细用法
- Halcon学习之计数
- Configure RMAN Parameters
- 项目日志(一) toad 的使用
- MIPS体系结构(1)
- 新版中日交流标准日本语初级第七课之应用课文
- Linux内核书籍点评
- English Time 9
- QListView和QListWidget