读取指定任意表的三个字段RFC

SAP有个标准读任意表任何字段的BADI,不过好像只能最多读64个字段。
 
 
FUNCTION zf_read_element1.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(S_TAB) TYPE  CHAR10
*"     VALUE(S_FIELD1) TYPE  CHAR10
*"     VALUE(S_FIELD2) TYPE  CHAR10
*"     VALUE(S_FIELD3) TYPE  CHAR10 OPTIONAL
*"  TABLES
*"      ITAB STRUCTURE  ZFIELD1
*"----------------------------------------------------------------------
*&DESCRIPTION  READ ELEMENT FROM  TABLE
*&CREATE BY    GOUCAIYUN
*&CREATE ON    2005.08.23
*  TABLES:t002.
  DATA: tableall(200) TYPE c.
  DATA:field(70) TYPE c.
  CONCATENATE s_field1 s_field2 s_field3 INTO field SEPARATED BY space.
  CONCATENATE 'M_PRCTN' 'T024D' 'T024F' 'T001L' 'T001W' 'T001'
  INTO tableall SEPARATED BY space.
  IF s_tab  = 'TSKDT'.
    SELECT DISTINCT (field)
    INTO (itab-field1,itab-field2)
    FROM (s_tab)
      WHERE spras = '1' AND
          tatyp = 'MWST'.
      APPEND itab.
      CLEAR itab.
    ENDSELECT.
  ELSEIF s_tab = 'T002T'.
    SELECT laiso sptxt
    INTO (itab-field1,itab-field2)
    FROM t002t
         JOIN t002
         ON t002t~sprsl = t002~spras
         WHERE t002t~spras = '1'.
      APPEND itab.
      CLEAR itab.
    ENDSELECT.
  ELSEIF s_tab = 'T024'.
    SELECT DISTINCT (field)
    INTO (itab-field1,itab-field2)
    FROM t024 WHERE ektel <> 'D' .
*    WHERE werks = '1000'.
      APPEND itab.
      CLEAR itab.
    ENDSELECT.
  ELSEIF s_tab = 'KNA1'.
    SELECT DISTINCT (field)
    INTO (itab-field1,itab-field2)
    FROM kna1 WHERE ktokd = 'TZ04'.
      APPEND itab.
      CLEAR itab.
    ENDSELECT.
  ELSEIF s_tab = 'TCURT'.
    SELECT DISTINCT (field)
    INTO (itab-field1,itab-field2)
    FROM tcurt
    WHERE waers NE 'CNY' AND spras = '1'.
      APPEND itab.
      CLEAR itab.
    ENDSELECT.
  ELSEIF s_tab = 'TZONT'.
    SELECT DISTINCT (field)
    INTO (itab-field1,itab-field2,itab-field3)
    FROM tzont
    WHERE spras = '1'.
      APPEND itab.
      CLEAR itab.
    ENDSELECT.
  ELSEIF  tableall CS s_tab.
    SELECT DISTINCT (field)
    INTO (itab-field1,itab-field2)
    FROM (s_tab).
      APPEND itab.
      CLEAR itab.
    ENDSELECT.
  ELSE.
    SELECT DISTINCT (field)
    INTO (itab-field1,itab-field2)
    FROM (s_tab)
    WHERE spras = '1'.
      APPEND itab.
      CLEAR itab.
    ENDSELECT.
  ENDIF.
ENDFUNCTION.
 
 
请使用浏览器的分享功能分享到微信等