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号
浙公网安备 33010602011771号