ABAP内置函数 RFC_READ_TABLE
ABAP内置函数 RFC_READ_TABLE
主要功能:输入参数(表名),将得到的数据放入一个内表后返回。
参数介绍:
IMP
QUERY_TABLE:读取的表名(必输项)
DELIMITER:字段之间的分隔符(当选择多个字段时)
NO_DA
ROWCOUNT:输出的第一条数据的行号(从0开始)
ROWCOUNT:从ROWCOUNT开始,一共输出的数据行数(0代表所有数据)
TABLE:
OPTIONS:表查询条件,比如对BSIS表来说,可以写成BELNR = '14700000123',留空 代表所有数据。
FIELDS:输出的表字段,留空代表输出所有字段。
DA
举例说明:
************************************************************
* 程序代号:ZFIPZDTTODX *
* 程序名称:顶通凭证导入顶新 *
* 程序目的:将在顶通系统中产生的凭证导入到顶新系统 *
* *
* 设计人员:*** *
* 设计时间:2010/10/13 *
* *
* 修改记录 *
*-----------------------------------------------------------*
* 序号 修改时间 修改人 修改说明 *
*------------------------------------------------------------*
* 001 *
* *
* *
**************************************************************
REPORT ZFIPZDTTODX LINE-SIZE 160 NO STANDARD PAGE HEADING
MESSAGE-ID ZF.
INCLUDE ZBDCRECXFIRFC1.
TABLES: BSIS,BSAS,T001,ZFIRFCKOSTL,ZFIRFCSAKNR.
DA
DA
BUKRS(4),"bsis-bukrs,公司代码
HKONT(10),"bsis-hkont,总账科目
GJAHR(4),"会计年度
BELNR(10),"BSIS-BELNR 凭证编号
BUZEI(3),"BSIS-BUZEI,行项目
BUDAT(8),"BUDAT,凭证过账日期
BLDAT(8),"BLDAT,凭证日期
WAERS(5),"货币码
BLART(2),"凭证类型
MONAT(2),"记账期间
BSCHL(2),"记账码
SHKZG(1),"借贷标识
GSBER(4),"业务范围
DMBTR(13),"按本位币计的金额
WRBTR(13),"凭证货币金额
SGTXT(50),"项目文本
KOSTL(10),"成本中心
VALUT(8),"起息日
PSWSL(5),"更新总分类帐交易数字货币
VBUND(6),"贸易伙伴的公司标识
END OF ITAB1.
DA
DA
DA
DA
DATE_BEGIN LIKE SY-DATUM,
DATE_END LIKE SY-DATUM.
DA
ZENDDATE(8) TYPE C,
ZYEAR(4) TYPE C,
ZMONTH1(2) TYPE C,
ZMONTH2(2) TYPE C VALUE SPACE,
ZQIJIAN(20) TYPE C,
ZCNAME(20) TYPE C. "自己公司代码(5个)
DA
DA
DA
DA
*DEBUG
DA
FIELDNAME LIKE RFC_DB_FLD-FIELDNAME,
END OF NAMETAB1.
****** 选择屏幕定义 ******
SELECTION-SCREEN:BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001.
PARAMETERS: ZBUKRS LIKE T001-BUKRS OBLIGATORY MEMORY ID BUK."公司代码
PARAMETERS: ZGJAHR LIKE BSIK-GJAHR OBLIGATORY DEFAULT SY-DATUM."年度
SELECT-OPTIONS: ZMONAT FOR BSIS-MONAT OBLIGATORY DEFAULT SY-DATUM+4(2). "会计期间
* IXSMS AS CHECKBOX DEFAULT 'X'. "显示模式
SELECTION-SCREEN:END OF BLOCK BL1.
***********************************************************
*-----------------------权限检查----------------------------*
AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT 'G_REPO_LOC' ID 'BUKRS' FIELD ZBUKRS.
IF SY-SUBRC <> 0.
MESSAGE E012 WITH '您没有该公司的授权!'.
STOP.
ENDIF.
*---------------------------------------------------------*
INCLUDE ZFIICHEK. "计算月初,月末日期
START-OF-SELECTION.
ZYEAR = ZGJAHR.
ZMONTH1 = ZMONAT-LOW .
ZMONTH2 = ZMONAT-HIGH .
SELECT SINGLE * FROM T001 WHERE BUKRS = ZBUKRS.
IF SY-SUBRC = 0.
ZCNAME = T001-BUTXT.
ELSE.
"MESSAGE E012 WITH '请输入正确的公司代码!'.
ENDIF.
*--------------------OPTIONS(WHERE)----------------------*
IT_SEL_TAB = '( BUKRS = '''.
IT_SEL_TAB+11(3) = ZBUKRS.
IT_SEL_TAB+14(1) = ''''.
IT_SEL_TAB+15(14) = ' AND GJAHR = '''.
IT_SEL_TAB+29(4) = ZGJAHR.
IT_SEL_TAB+33(1) = ''''.
IT_SEL_TAB+34(20) = ' AND MONAT BETWEEN '''.
IT_SEL_TAB+54(2) = ZMONTH1.
IT_SEL_TAB+56(1) = ''''.
IT_SEL_TAB+57(6) = ' AND '''.
IT_SEL_TAB+63(2) = ZMONTH2.
IT_SEL_TAB+65(1) = ''''.
IT_SEL_TAB+66(2) = ' )'.
APPEND IT_SEL_TAB.
*---------------------想取哪些字段--------------------------*
NAMETAB1-FIELDNAME = 'BUKRS'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'HKONT'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'GJAHR'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'BELNR'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'BUZEI'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'BUDAT'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'BLDAT'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'WAERS'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'BLART'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'MONAT'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'BSCHL'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'SHKZG'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'GSBER'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'DMBTR'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'WRBTR'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'SGTXT'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'KOSTL'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'VALUT'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'PSWSL'.
APPEND NAMETAB1.
NAMETAB1-FIELDNAME = 'VBUND'.
APPEND NAMETAB1.
REFRESH ITAB.
REFRESH ITAB1.
*----------------获取TRB中的 BSIS--------------------------*
CALL FUNCTION 'RFC_READ_TABLE'
DESTINATION 'TRB' "跨服务器(另一服务器的R3系统的名称)
EXPORTING
QUERY_TABLE = 'BSIS'
TABLES
OPTIONS = IT_SEL_TAB
FIELDS = NAMETAB1
DA
EXCEPTIONS
TABLE_NOT_AVAILABLE = 1
TABLE_WITHOUT_DA
OPTION_NOT_VALID = 3
FIELD_NOT_VALID = 4
NOT_AUTHORIZED = 5
DA
OTHERS = 7.
IF SY-SUBRC <> 0.
CASE SY-SUBRC.
WHEN 1.
MESSAGE 'RFC Error : Internal Error' TYPE 'E' .
WHEN 2.
MESSAGE 'RFC Error : No fields in table' TYPE 'E' .
WHEN 3.
MESSAGE 'RFC Error : Table is not active' TYPE 'E' .
WHEN 4.
MESSAGE 'RFC Error : No authorization' TYPE 'E' .
WHEN OTHERS.
MESSAGE 'RFC Error : No records selected' TYPE 'E' .
ENDCASE.
ENDIF.
APPEND LINES OF ITAB1 TO ITAB.
CLEAR ITAB1.
REFRESH ITAB1.
*-----------------获取TRB中的 BSAS--------------------------*
CALL FUNCTION 'RFC_READ_TABLE'
DESTINATION 'TRB'
EXPORTING
QUERY_TABLE = 'BSAS'
TABLES
OPTIONS = IT_SEL_TAB
FIELDS = NAMETAB1
DA
EXCEPTIONS
TABLE_NOT_AVAILABLE = 1
TABLE_WITHOUT_DA
OPTION_NOT_VALID = 3
FIELD_NOT_VALID = 4
NOT_AUTHORIZED = 5
DA
OTHERS = 7.
IF SY-SUBRC <> 0.
CASE SY-SUBRC.
WHEN 1.
MESSAGE 'RFC Error : Internal Error' TYPE 'E' .
WHEN 2.
MESSAGE 'RFC Error : No fields in table' TYPE 'E' .
WHEN 3.
MESSAGE 'RFC Error : Table is not active' TYPE 'E' .

浙公网安备 33010602011771号