动态调用系统表到动态内表

来源:互联网 发布:蹭饭地图制作软件 编辑:程序博客网 时间:2024/05/17 20:30

 

记得画屏幕哦!

TYPES BEGIN OF t_fname"To hold the field names
  fld LIKE dd03l-fieldname,
  END OF t_fname.

TYPESBEGIN OF t_dd03l,
tabname LIKE dd03l-tabname"Table Name
fieldname LIKE dd03l-fieldname,"Field
keyflag LIKE dd03l-keyflag"Key
rollname LIKE dd03l-rollname"Roll
position LIKE dd03l-position"
ddtext(30)"Description
END OF t_dd03l,
BEGIN OF t_fields.
        INCLUDE STRUCTURE dd03l.
TYPESEND OF t_fields.

DATAd_ref TYPE REF TO data ,
      it_fields TYPE TABLE OF t_fields,
      wa_fields LIKE LINE OF it_fields,
      it_cat TYPE TABLE OF lvc_s_fcat,
      wa_cat LIKE LINE OF it_cat ,
*      it_cat TYPE TABLE OF lvc_s_fcat,
      it_fname TYPE TABLE OF t_fname,
      wa_fname LIKE LINE OF it_fname.

DATA gt_grid TYPE REF TO cl_gui_alv_grid,
    gt_cust TYPE REF TO cl_gui_custom_container,
    cust TYPE scrfname VALUE 'CC_OUTPUT'..

DATAlv_where TYPE string,
      lv_cnt TYPE i.

 DATA:OK_CODE LIKE SY-UCOMM.

PARAMETERS p_tab LIKE dd03l-tabname OBLIGATORY.
FIELD-SYMBOLS <f_fs> TYPE table"FieldSymbol for holding fields


START-OF-SELECTION.

  SELECT *  FROM dd03l
     INTO TABLE it_fields
     WHERE tabname p_tab.
  SORT it_fields BY position.
**--Delete the fields starting with .INCLU
  DELETE it_fields WHERE fieldname CP '.INCLU*'.


  LOOP AT it_fields INTO wa_fields TO 150.
    lv_cnt lv_cnt + 1.
    wa_cat-tabname p_tab.
    wa_cat-fieldname wa_fields-fieldname.
    wa_cat-col_pos lv_cnt.
    wa_cat-inttype wa_fields-inttype.
    wa_cat-datatype wa_fields-datatype.
    wa_cat-intlen wa_fields-intlen.
    wa_cat-seltext wa_fields-fieldname.
    wa_cat-decimals wa_fields-decimals.
    wa_cat-ref_field wa_fields-fieldname.
    wa_cat-ref_table p_tab.
    APPEND wa_cat TO it_cat.
    CLEAR wa_cat.
    wa_fname-fld wa_fields-fieldname.
    APPEND wa_fname TO it_fname.
    CLEAR wa_fname.
  ENDLOOP.

**--Create a dynamic internal table with the 150 fields
  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog it_cat
    IMPORTING
      ep_table        d_ref.
  ASSIGN d_ref->TO <f_fs>.



  SELECT (it_fname)
    FROM (p_tab)
    INTO CORRESPONDING FIELDS OF TABLE <f_fs> .


call screen 100.

**--Display the data in the grid control


*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '100'.
*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  DISPLAY_DATA  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE DISPLAY_DATA OUTPUT.
  IF gt_cust IS INITIAL.
    CREATE OBJECT gt_cust
      EXPORTING
        container_name cust.
    CREATE OBJECT gt_grid
      EXPORTING
        i_parent gt_cust.
    CALL METHOD gt_grid->set_table_for_first_display
      EXPORTING
        i_buffer_active               'X'
        i_bypassing_buffer            ' '
      CHANGING
        it_outtab                     <f_fs>
        it_fieldcatalog               it_cat
      EXCEPTIONS
        invalid_parameter_combination 1
        program_error                 2
        too_many_lines                3
        OTHERS                        4.
    IF sy-subrc <> 0.
    ENDIF.
  ENDIF.

ENDMODULE.                 " DISPLAY_DATA  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.

  CASE sy-ucomm.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN OTHERS.
  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

0 0
原创粉丝点击