zoukankan      html  css  js  c++  java
  • SAP 创建动态内表

    REPORT  zg_dynamic_ex LINE-SIZE 300.
    TYPE-POOLS:   abap.
    FIELD-SYMBOLS:<dyn_table> TYPE STANDARD TABLE,
                  <dyn_wa>,
                  <dyn_field>.
    DATA: dy_table TYPE REF TO data,
          dy_line  TYPE REF TO data,
          xfc      TYPE        lvc_s_fcat,
          ifc      TYPE        lvc_t_fcat.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
    PARAMETERS: p_table(30)  TYPE c DEFAULT 'T001'.
    SELECTION-SCREEN END OF BLOCK b1.
    START-OF-SELECTION.
      PERFORM get_structure.
      PERFORM create_dynamic_itab.
      PERFORM get_data.
      PERFORM write_out.
    *&--------------------------------------------------------------------*
    *&      Form  get_structure
    *&--------------------------------------------------------------------*
    *       text
    *---------------------------------------------------------------------*
    FORM get_structure.
      DATA: idetails      TYPE        abap_compdescr_tab,
            xdetails      TYPE        abap_compdescr.
      DATA: ref_table_des TYPE REF TO cl_abap_structdescr.
      ref_table_des ?=
       cl_abap_typedescr=>describe_by_name( p_table ).

      idetails[] = ref_table_des->components[].
      LOOP AT idetails INTO xdetails.
        CLEAR xfc.
        xfc-fieldname = xdetails-name.
        xfc-datatype  = xdetails-type_kind.
        xfc-inttype   = xdetails-type_kind.
        xfc-intlen    = xdetails-length.
        xfc-decimals  = xdetails-decimals.
        APPEND xfc TO ifc.
      ENDLOOP.
    ENDFORM.                    "get_structure
    *&--------------------------------------------------------------------*
    *&      Form  create_dynamic_itab
    *&--------------------------------------------------------------------*
    *       text
    *---------------------------------------------------------------------*
    FORM create_dynamic_itab.
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = ifc
        IMPORTING
          ep_table        = dy_table.
      ASSIGN dy_table->* TO <dyn_table>.
      CREATE DATA dy_line LIKE LINE OF <dyn_table>.
      ASSIGN dy_line->* TO <dyn_wa>.
    ENDFORM.                    "create_dynamic_itab
    *&--------------------------------------------------------------------*
    *&      Form  get_data
    *&--------------------------------------------------------------------*
    *       text
    *---------------------------------------------------------------------*
    FORM get_data.
      SELECT * INTO TABLE <dyn_table> FROM (p_table).
    ENDFORM.                    "get_data
    *&--------------------------------------------------------------------*
    *&      Form  write_out
    *&--------------------------------------------------------------------*
    *       text
    *---------------------------------------------------------------------*
    FORM write_out.
      LOOP AT <dyn_table> INTO <dyn_wa>.
        DO.
          ASSIGN COMPONENT sy-index OF STRUCTURE <dyn_wa> TO <dyn_field>.
          IF sy-subrc <> 0.
            EXIT.
          ENDIF.
          IF sy-index = 1.
            WRITE:/ <dyn_field>.
          ELSE.
            WRITE: <dyn_field>.
          ENDIF.
        ENDDO.
      ENDLOOP.
    ENDFORM.                    "write_out

  • 相关阅读:
    除adsense外适合英文站的国外广告联盟(4/12/2011更新)
    盛大云和阿里云之云主机初体验
    【行文格式】
    在线PDF阅读&编辑网站一览
    做销售不得不看的20部电影
    VS中的Code Snippet来提高开发效率
    10个免费的javascript富文本编辑器(jQuery and nonjQuery)
    【操作命令】
    SQLServer常见查询问题
    代码検索
  • 原文地址:https://www.cnblogs.com/qlp1982/p/2322713.html
Copyright © 2011-2022 走看看