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

  • 相关阅读:
    【Qt】Qt之自定义界面(QMessageBox)【转】
    【WinForm】线程中向listview添加数据
    【Qt】Qt之自定义界面(窗体缩放-跨平台终极版)【转】
    【Qt】Qt之自定义界面(窗体缩放)【转】
    【Qt】Qt之自定义界面(添加自定义标题栏)【转】
    【Qt】Qt之自定义界面(实现无边框、可移动)【转】
    【Qt】QWidget、QDialog、QMainWindow的异同点【转】
    【Qt】QSettings读写注册表、配置文件【转】
    【Qt】QSettings介绍【转】
    【Qt】Qt之启动外部程序【转】
  • 原文地址:https://www.cnblogs.com/qlp1982/p/2322713.html
Copyright © 2011-2022 走看看