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

  • 相关阅读:
    @RequestParam注解使用:Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.
    cglib动态代理导致注解丢失问题及如何修改注解允许被继承
    springboot Autowired BeanNotOfRequiredTypeException
    git根据用户过滤提交记录
    不同包下,相同数据结构的两个类进行转换
    How to use Jackson to deserialise an array of objects
    jooq实践
    java如何寻找main函数对应的类
    Python--matplotlib
    Python 和 Scikit-Learn
  • 原文地址:https://www.cnblogs.com/qlp1982/p/2322713.html
Copyright © 2011-2022 走看看