Field Symbols when used as Work area for the Internal Table:
*&---------------------------------------------------------------------* *& Report ZDEMO *& *&---------------------------------------------------------------------* *& Field Symbols Example *& *&---------------------------------------------------------------------* REPORT zdemo. INITIALIZATION. TYPES: BEGIN OF line, col1 TYPE c, col2 TYPE c, END OF line. DATA: gt_tab TYPE TABLE OF line, gv_key TYPE char4 VALUE 'COL1', gv_data_ref TYPE REF TO data . FIELD-SYMBOLS: <fs_gt_tab> TYPE ANY TABLE, <fs_gs_tab> LIKE LINE OF gt_tab . START-OF-SELECTION. CREATE DATA gv_data_ref LIKE LINE OF gt_tab. ASSIGN gv_data_ref->* TO <fs_gs_tab>. ASSIGN gt_tab TO <fs_gt_tab>. <fs_gs_tab>-col1 = 'A'. <fs_gs_tab>-col2 = '1'. APPEND <fs_gs_tab> TO gt_tab. <fs_gs_tab>-col1 = 'B'. <fs_gs_tab>-col2 = '2'. APPEND <fs_gs_tab> TO gt_tab. READ TABLE <fs_gt_tab> WITH KEY ('COL1') = 'A' ASSIGNING <fs_gs_tab>. WRITE: / 'Before: ', <fs_gs_tab>-col2. <fs_gs_tab>-col2 = 'I'. WRITE: / 'After: ', <fs_gs_tab>-col2.
NOTE: The parenthesis '( )' means that the value will be determined in the run time.
Example 2: Display table data according to the name given by the user
*"DISPLAY TABLE DATA ACCORDING TO THE TABLE NAME GIVEN BY USER * SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME. PARAMETERS: p_tab TYPE tabname OBLIGATORY. PARAMETERS: p_no TYPE i. SELECTION-SCREEN: END OF BLOCK b1. AT SELECTION-SCREEN. SELECT COUNT(*) FROM dd03l WHERE tabname = p_tab. IF sy-subrc NE 0. MESSAGE 'Invalid Table Name' TYPE 'E'. ENDIF. START-OF-SELECTION. DATA: lv_dref TYPE REF TO data. FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, <fs_tmp> TYPE any . CREATE DATA lv_dref TYPE TABLE OF (p_tab). ASSIGN lv_dref->* TO <fs_tab>. SELECT * FROM (p_tab) INTO TABLE <fs_tab> UP TO p_no ROWS. DATA: lt_fcat TYPE slis_t_fieldcat_alv, ls_fcat TYPE slis_fieldcat_alv, ls_layout TYPE slis_layout_alv. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_structure_name = p_tab CHANGING ct_fieldcat = lt_fcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = ls_layout it_fieldcat = lt_fcat TABLES t_outtab = <fs_tab> EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF.
No comments:
Post a Comment