01 April 2014

Get Structure or Table fields with data

This example allow you to get all field and data from structure or table



*&---------------------------------------------------------------------*
*& Report  ZTEST_Z_GET_STRUCTURE_FLD_NAME
*&
*&---------------------------------------------------------------------*
REPORT  z_get_structure_fld_name.
**
PARAMETERSdbtab        TYPE tabname DEFAULT 'SPFLI',
            rows         TYPE DEFAULT 1.
**
DATAls_struct          TYPE zre_cont_vals" rsbasidoc .
DATAlr_structdescr     TYPE REF TO cl_abap_structdescr,
           lr_datadescr       TYPE REF TO cl_abap_datadescr,
           lr_datadescr_incl  TYPE REF TO cl_abap_datadescr,
           lt_components      TYPE abap_component_tab,
           ls_components      TYPE LINE OF abap_component_tab,
           lt_components_incl TYPE abap_component_tab,
           ls_components_incl TYPE LINE OF abap_component_tab.
DATAlo_dynamic_table                TYPE REF TO data.
FIELD-SYMBOLS<lt_table_structure>   TYPE table,
               <ls_table_structure>   TYPE any.
DATA dref TYPE REF TO data.

FIELD-SYMBOLS<table> TYPE ANY TABLE,
                               <wa>    TYPE any,
                               <comp>  TYPE any.

*----------------------------------------------------------------------*
*       CLASS demo DEFINITION
*----------------------------------------------------------------------*
CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
ENDCLASS.                    "demo DEFINITION
*----------------------------------------------------------------------*
*       CLASS demo IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS demo IMPLEMENTATION.
  METHOD main.


    TRY.
        CREATE DATA dref TYPE STANDARD TABLE OF (dbtab)
                              WITH NON-UNIQUE DEFAULT KEY.
        ASSIGN dref->TO <table>.
        SELECT FROM (dbtabUP TO rows ROWS
        INTO TABLE <table>.

        LOOP AT <table> ASSIGNING <wa>.
          EXIT.
        ENDLOOP.

       CATCH cx_sy_create_data_error.
        WRITE 'Error in data creation'.
    ENDTRY.
  ENDMETHOD.                    "main
ENDCLASS.                    "demo IMPLEMENTATION

START-OF-SELECTION.
  demo=>main).


  lr_structdescr ?= cl_abap_structdescr=>describe_by_data<wa> ).
  lt_components lr_structdescr->get_components).
  LOOP AT lt_components INTO ls_components.
    lr_datadescr ls_components-type.
    IF ls_components-as_include space.
      WRITE:/ ls_components-namelr_datadescr->type_kindlr_datadescr->length.
    ELSE.  

" IF include or append structure, you need to get that structures components now.
      lr_structdescr ?= ls_components-type.
      lt_components_incl lr_structdescr->get_components).
      LOOP AT lt_components_incl INTO ls_components_incl.
        lr_datadescr_incl ls_components_incl-type.
        WRITE:/ ls_components_incl-namelr_datadescr_incl->type_kind,                              

lr_datadescr_incl->length.
      ENDLOOP.

    ENDIF.
  ENDLOOP.






No comments:

Post a Comment