‎2022 Sep 14 9:56 AM
How can I split this string matnr='RM235',mtart='RAME',ernam='ROE' in an internal table of type key, values??
I tried with the following code but it only works with just one field like matnr='RM235'. When I specify more fields separated by comma, it does not work anymore.
DO.
TRY.
DATA(lv_segment_field) = segment( val = iv_param index = sy-index sep = ',' ). "index = sy-index
DATA(lv_value_where) = segment( val = iv_param index = 1 sep = iv_separator ).
APPEND VALUE #( field_name = to_upper( lv_segment_field ) ) TO zaml_dynamic_table_api=>gt_segments_fields.
LOOP AT zaml_dynamic_table_api=>gt_segments_fields INTO DATA(ls_segments).
*TRUE IF SPECIFIED ONE FIELD /SPFLI/CARRID='SQ'
IF ls_segments-field_name CA '='.
DATA(lv_segment_field_where_field) = segment( val = iv_param index = sy-index sep = '=' ).
DATA(lv_segment_field_where_val) = segment( val = iv_param index = sy-index + 1 sep = '=' ).
APPEND VALUE #( field_name = to_upper( lv_segment_field_where_field ) value = lv_segment_field_where_val )
TO zaml_dynamic_table_api=>gt_segments_where.
ENDIF.
ENDLOOP.
CATCH cx_sy_strg_par_val.
EXIT.
ENDTRY.
ENDDO.
‎2022 Sep 14 10:34 AM
‎2022 Sep 14 3:13 PM
TYPES: BEGIN OF t_key_value,
key TYPE string,
value TYPE string,
END OF t_key_value.
TYPES tt_key_value TYPE TABLE OF t_key_value WITH EMPTY KEY.
DATA(s) = |matnr='RM235',mtart='RAME',ernam='ROE'|.
SPLIT s AT ',' INTO TABLE DATA(lt_params).
DATA(lt_key_value) = VALUE tt_key_value( FOR <p> IN lt_params
( key = substring_before( val = <p> sub = '=' )
value = condense( val = substring_after( val = <p> sub = '=' ) del = |'| ) ) ).
cl_demo_output=>display( lt_key_value ).Result:
KEY VALUE
matnr RM235
mtart RAME
ernam ROE