Skip to Content
0
Former Member
Sep 07, 2016 at 09:07 AM

How to define attributes in methods given as Field Symbols dynamically casted

71 Views

Hi,

i have assigned a string to a field-symbol via a casting type (line 16/17) and then i am refering to one of the fields in the field-symbol (line 22/24).

Later I try to call a method with this field which is again assigned to a field-symbol (line 29).

What type do I have to declare in the definition of the called method for the attribute lv_to (line 44/45/46) ?

For ease of understanding see the source code:

FORM data_mapping  USING    p_wa_record TYPE t_record
                           p_l_spos TYPE i
                  CHANGING p_wa_record_data.

  DATA: l_new_data TYPE c LENGTH 750.


  FIELD-SYMBOLS :  <data> TYPE any.
  FIELD-SYMBOLS :  <l_target> TYPE any.

  CASE p_wa_record-sa.
    WHEN '01'.
* Tabelle ZMO_CON_VT01
      ASSIGN p_wa_record_data TO <data> CASTING TYPE zcon_vt01_s01_host.
      ASSIGN l_new_data TO <l_target> CASTING TYPE zcon_vt01_s01.
    WHEN '02'.
* Tabelle ZMO_CON_VT02
*      ...
  ENDCASE.

  LOOP AT lt_mapping ASSIGNING FIELD-SYMBOL(<lwa_map>) WHERE sa = p_wa_record-sa.
    ASSIGN COMPONENT <lwa_map>-from_field OF STRUCTURE<data>  TO FIELD-SYMBOL(<lv_from>).
    CHECK sy-subrc = 0.
    ASSIGN COMPONENT <lwa_map>-to_field OF STRUCTURE <l_target> TO FIELD-SYMBOL(<lv_to>).
    CHECK sy-subrc = 0.
    IF <lwa_map>-mapping_method IS INITIAL.
       <lv_to> = <lv_from>.
    ELSE.
      PERFORM ZMAPPINGS=>(<lwa_map>-mapping_method) USING <lv_from> p_wa_record CHANGING <lv_to>.
    ENDIF.
  ENDLOOP.
  p_wa_record_data = l_new_data.
ENDFORM.

*&---------------------------------------------------------------------*
*&       Class ZMAPPINGS
*&---------------------------------------------------------------------*
*       Mappings
*----------------------------------------------------------------------*
CLASS zmappings DEFINITION.

  PUBLIC SECTION.

    METHODS map_gv_sgber_sc IMPORTING lv_from TYPE string p_wa_record TYPE t_record CHANGING lv_to TYPE ?? .
    METHODS map_gv_sgbsta_sc IMPORTING lv_from TYPE string p_wa_record TYPE t_record CHANGING lv_to TYPE ??.
    METHODS map_vorsorge_sc IMPORTING lv_from TYPE string p_wa_record TYPE t_record CHANGING lv_to TYPE ??.

  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

Thank you!

BR Mike