Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Change the code do daynamic way

Former Member
0 Likes
656

HI ,

since i using methods i can do perform,

can i do it it better way instead of using the same logic for 3 time ,

Thanks

Chris

lt_type_format = me->get_domain_value( ms_defultes ).

IF is_dev-date_format IS INITIAL.
    READ TABLE lt_type_format ASSIGNING <ls_type_format>
    WITH KEY domain_name = clconstants=>gc_date_type.
    is_de-date_format =   <ls_type_format>-format_value."Get date format
  ENDIF.

  IF is_de-time_format IS INITIAL.
    READ TABLE lt_type_format ASSIGNING <ls_type_format>
    WITH KEY domain_name = clconstants=>gc_time_type.
    is_de-time_format =   <ls_type_format>-format_value."Get time format
  ENDIF.

  IF is_de-num_format IS INITIAL.
    READ TABLE lt_type_format ASSIGNING <ls_type_format>
    WITH KEY domain_name = clconstants=>gc_dec_type.
    is_de-num_format  =   <ls_type_format>-format_value."Get dec notation
  ENDIF.

Edited by: Chris Teb on Oct 7, 2009 10:10 AM

1 ACCEPTED SOLUTION
Read only

naimesh_patel
Active Contributor
0 Likes
616

Yes you can.

Create your lt_type_format as the attribute of your class.

Create a method say GET_FORMAT

Signature:

Importing IV_TYPE TYPE CHAR30 (pass clconstants=>gc_date_type or clconstants=>gc_time_type)

Returning RV_FORMAT TYPE CHAR30 ( Recieve the value back)

Use the Read statement to read the table LT_TYPE_FORMAT and send back the values in RF_FORMAT

Like:


CLASS lcl_format DEFINITION.
  PUBLIC SECTION.
    METHODS:
      constructor,
      get_format
        IMPORTING
          iv_type TYPE char30
        RETURNING value(rv_format) TYPE char30.
  PRIVATE SECTION.
    TYPES: BEGIN OF ty_tab,
             format_type TYPE char30,
             format      TYPE char30,
           END   OF ty_tab.
    DATA: i_tab TYPE STANDARD TABLE OF ty_tab.
ENDCLASS.                    "lcl_format DEFINITION

START-OF-SELECTION.
  DATA: o_format TYPE REF TO lcl_format,
        lv_date_format TYPE char30,
        lv_time_format  TYPE char30.
  CREATE OBJECT o_format.
  lv_date_format = o_format->get_format( 'D' ).
  WRITE: / lv_date_format.
  lv_time_format = o_format->get_format( 'T' ).
  WRITE: / lv_time_format.

CLASS lcl_format IMPLEMENTATION.

  METHOD constructor.
    FIELD-SYMBOLS: <lfs_tab> LIKE LINE OF me->i_tab.
    APPEND INITIAL LINE TO me->i_tab ASSIGNING <lfs_tab>.
    <lfs_tab>-format_type = 'D'.
    <lfs_tab>-format = 'MM/DD/YYYY'.
    APPEND INITIAL LINE TO me->i_tab ASSIGNING <lfs_tab>.
    <lfs_tab>-format_type = 'T'.
    <lfs_tab>-format = 'HHMMSS'.
  ENDMETHOD.                    "constructor

  METHOD get_format.
    FIELD-SYMBOLS: <lfs_tab> LIKE LINE OF me->i_tab.
    DATA: lv_key TYPE string.
    READ TABLE me->i_tab ASSIGNING <lfs_tab>
      WITH KEY format_type = iv_type.
    IF sy-subrc = 0.
      rv_format = <lfs_tab>-format.
    ENDIF.
  ENDMETHOD.                    "get_format

ENDCLASS  .                    "lcl_format IMPLEMENTATION

Regards,

Naimesh Patel

HI ,

since i using methods i can do perform,

can i do it it better way instead of using the same logic for 3 time ,

Thanks

Chris

lt_type_format = me->get_domain_value( ms_defultes ).

IF is_dev-date_format IS INITIAL.
    READ TABLE lt_type_format ASSIGNING <ls_type_format>
    WITH KEY domain_name = clconstants=>gc_date_type.
    is_de-date_format =   <ls_type_format>-format_value."Get date format
  ENDIF.

  IF is_de-time_format IS INITIAL.
    READ TABLE lt_type_format ASSIGNING <ls_type_format>
    WITH KEY domain_name = clconstants=>gc_time_type.
    is_de-time_format =   <ls_type_format>-format_value."Get time format
  ENDIF.

  IF is_de-num_format IS INITIAL.
    READ TABLE lt_type_format ASSIGNING <ls_type_format>
    WITH KEY domain_name = clconstants=>gc_dec_type.
    is_de-num_format  =   <ls_type_format>-format_value."Get dec notation
  ENDIF.

Edited by: Chris Teb on Oct 7, 2009 10:10 AM

3 REPLIES 3
Read only

naimesh_patel
Active Contributor
0 Likes
617

Yes you can.

Create your lt_type_format as the attribute of your class.

Create a method say GET_FORMAT

Signature:

Importing IV_TYPE TYPE CHAR30 (pass clconstants=>gc_date_type or clconstants=>gc_time_type)

Returning RV_FORMAT TYPE CHAR30 ( Recieve the value back)

Use the Read statement to read the table LT_TYPE_FORMAT and send back the values in RF_FORMAT

Like:


CLASS lcl_format DEFINITION.
  PUBLIC SECTION.
    METHODS:
      constructor,
      get_format
        IMPORTING
          iv_type TYPE char30
        RETURNING value(rv_format) TYPE char30.
  PRIVATE SECTION.
    TYPES: BEGIN OF ty_tab,
             format_type TYPE char30,
             format      TYPE char30,
           END   OF ty_tab.
    DATA: i_tab TYPE STANDARD TABLE OF ty_tab.
ENDCLASS.                    "lcl_format DEFINITION

START-OF-SELECTION.
  DATA: o_format TYPE REF TO lcl_format,
        lv_date_format TYPE char30,
        lv_time_format  TYPE char30.
  CREATE OBJECT o_format.
  lv_date_format = o_format->get_format( 'D' ).
  WRITE: / lv_date_format.
  lv_time_format = o_format->get_format( 'T' ).
  WRITE: / lv_time_format.

CLASS lcl_format IMPLEMENTATION.

  METHOD constructor.
    FIELD-SYMBOLS: <lfs_tab> LIKE LINE OF me->i_tab.
    APPEND INITIAL LINE TO me->i_tab ASSIGNING <lfs_tab>.
    <lfs_tab>-format_type = 'D'.
    <lfs_tab>-format = 'MM/DD/YYYY'.
    APPEND INITIAL LINE TO me->i_tab ASSIGNING <lfs_tab>.
    <lfs_tab>-format_type = 'T'.
    <lfs_tab>-format = 'HHMMSS'.
  ENDMETHOD.                    "constructor

  METHOD get_format.
    FIELD-SYMBOLS: <lfs_tab> LIKE LINE OF me->i_tab.
    DATA: lv_key TYPE string.
    READ TABLE me->i_tab ASSIGNING <lfs_tab>
      WITH KEY format_type = iv_type.
    IF sy-subrc = 0.
      rv_format = <lfs_tab>-format.
    ENDIF.
  ENDMETHOD.                    "get_format

ENDCLASS  .                    "lcl_format IMPLEMENTATION

Regards,

Naimesh Patel

Read only

0 Likes
616

Hi

what is the purpose of APPEND INITIAL LINE TO ?

Regards

Chris

Read only

0 Likes
616

When you use the field-symbols instead of the work area, you need to use the APPEND INITIAL LINE.. ASSIGNING <FS> to assign that new line to your Field-Symbol.

Code with Work area


DATA: WA_TAB LIKE LINE OF ITAB.
WA_TAB-FIELD1 = 'TEST'.
APPEND WA_TAB TO ITAB.

And code with Field-symbols:


FIELD-SYMBOLS: <FS_TAB> LIKE LINE OF ITAB.
APPEND INITIAL LINE TO ITAB ASSIGNING <FS_TAB>.
<FS_TAB>-FIELD1 = 'TEST'.

Achieve the same end result, it appends a line to Internal table.

Regards,

Naimesh Patel