2021 Feb 09 12:24 PM
Hi ABAPers!
I have the sequent request:
from an int table with two columns "KEY" and "VALUE" I have to create another one like this:
as is:
KEY |VALUE |
ID |0001 |
NAME |bob |
SURNAME|smith |
ID |0002 |
NAME |jack |
SURNAME|black |
to be:
ID |NAME |SURNAME |
0001 |bob |smith |
0002 |jack |black |
Can someone help me?
Thanks
Vil
2021 Feb 09 12:52 PM
Hello avilmercati
TYPES:
BEGIN OF source,
key TYPE string,
value TYPE string,
END OF source,
BEGIN OF target,
id TYPE string,
name TYPE string,
surname TYPE string,
END OF target.
DATA:
lv_field_count TYPE i,
ls_target TYPE target,
lt_target TYPE TABLE OF target.
FIELD-SYMBOLS:
<lv_field> TYPE any.
CLEAR ls_target.
LOOP AT lt_source REFERENCE INTO DATA(ld_source).
ASSIGN COMPONENT ld_source->key OF STRUCTURE ls_target TO <lv_field>.
IF sy-subrc <> 0.
EXIT.
ENDIF.
<lv_field> = ld_source->value.
lv_field_count = lv_field_count + 1.
IF lv_field_count = 3.
INSERT ls_target INTO TABLE lt_target.
CLEAR:
lv_field_count.
ls_target.
ENDIF.
ENDLOOP.Kind regards,
Mateusz
Hello avilmercati
TYPES:
BEGIN OF source,
key TYPE string,
value TYPE string,
END OF source,
BEGIN OF target,
id TYPE string,
name TYPE string,
surname TYPE string,
END OF target.
DATA:
lv_field_count TYPE i,
ls_target TYPE target,
lt_target TYPE TABLE OF target.
FIELD-SYMBOLS:
<lv_field> TYPE any.
CLEAR ls_target.
LOOP AT lt_source REFERENCE INTO DATA(ld_source).
ASSIGN COMPONENT ld_source->key OF STRUCTURE ls_target TO <lv_field>.
IF sy-subrc <> 0.
EXIT.
ENDIF.
<lv_field> = ld_source->value.
lv_field_count = lv_field_count + 1.
IF lv_field_count = 3.
INSERT ls_target INTO TABLE lt_target.
CLEAR:
lv_field_count.
ls_target.
ENDIF.
ENDLOOP.Kind regards,
Mateusz
2021 Feb 09 12:24 PM
Thank
you for visiting SAP Community to get answers to your questions. Since this is
your first question, I recommend that you familiarize yourself with our Q&A
Tutorial: https://developers.sap.com/tutorials/community-qa.html,
as it provides tips for preparing questions that draw responses from our
members.
Should
you wish, you can revise your question by selecting Actions, then Edit.
By adding a picture to your profile you encourage readers to
respond:https://www.youtube.com/watch?v=46bt1juWUUM
Many thanks!
2021 Feb 09 12:52 PM
Hello avilmercati
TYPES:
BEGIN OF source,
key TYPE string,
value TYPE string,
END OF source,
BEGIN OF target,
id TYPE string,
name TYPE string,
surname TYPE string,
END OF target.
DATA:
lv_field_count TYPE i,
ls_target TYPE target,
lt_target TYPE TABLE OF target.
FIELD-SYMBOLS:
<lv_field> TYPE any.
CLEAR ls_target.
LOOP AT lt_source REFERENCE INTO DATA(ld_source).
ASSIGN COMPONENT ld_source->key OF STRUCTURE ls_target TO <lv_field>.
IF sy-subrc <> 0.
EXIT.
ENDIF.
<lv_field> = ld_source->value.
lv_field_count = lv_field_count + 1.
IF lv_field_count = 3.
INSERT ls_target INTO TABLE lt_target.
CLEAR:
lv_field_count.
ls_target.
ENDIF.
ENDLOOP.Kind regards,
Mateusz
2021 Feb 09 5:35 PM
2021 Feb 09 1:25 PM
2021 Feb 09 1:25 PM
Please use formatting options (CODE button).
Example:
as is:
KEY |VALUE |
ID |0001 |
NAME |bob |
SURNAME|smith |
ID |0002 |
NAME |jack |
SURNAME|black |to be:
ID |NAME |SURNAME |
0001 |bob |smith |
0002 |jack |black |
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |