Concatenate überalle Felder eines Feld-Symbols

Getting started ... Alles für einen gelungenen Start.

Concatenate überalle Felder eines Feld-Symbols

Postby Lou2449 » Mon Feb 10, 2014 11:00 am

Hallo zusammen,
leider konnte ich durch die Suchfunktion nix in Erfahrung bringen und eröffne deswegen diesen Thread... :-))

Zu meiner Frage:
Ich habe meine Daten in einem/r Feld-Symbol/Struktur, die 160Felder beinhaltet.

Meine Frage hier an der Stelle wäre:
Gibt es eine Möglichkeit einen Concatenate für alle Felder der/des Struktur/Feldsymbols auf einmal zu machen und diese mit einem Separator zu versorgen? Also ohne das ich jedes Feld einzeln abtippe?

Sonst würde das ja so aussehen:
concatenate ls_struct-feld1 ls_struct-feld2 ls_struct-feld3 ls_struct-feld4 ls_struct-feld5 ... ls_struct-feld160 into feld separated by ';'

Kann ich das irgendwie umgehen?
Ich hoffe, dass ich das Problem verständlich beschrieben habe.

Vielen Dank und liebe Grüße... :-)
Lou2449
..
..
 
Posts: 36
Joined: Mon Sep 20, 2010 8:54 am

Re: Concatenate überalle Felder eines Feld-Symbols

Postby Tron » Mon Feb 10, 2014 12:50 pm

Moin.
Ich empfehle: assign component ...
Du kannst in einer schleife die Felder via Index adressieren (einem Feldsymbol zuweisen).
e.g.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.            assign component sy-index of structure t_struc to <fs_any>.
  2.            if sy-subrc <> 0.
  3.                exit.
  4.            endif.
  5.  
GeSHi ©


Schau Dir das Coding zu RFC_READ_TABLE an. Da werden Feldinhalte dynamisch separiert e.g. Semikolon.

Ein konkretes Beispiel.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *&---------------------------------------------------------------------*
  2. *& Report  ZTEST_ASSIGN_COMPONENT
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *&
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT ztest_assign_component.
  10. TYPES: BEGIN OF t_str,
  11.        txt TYPE string,
  12.        END OF t_str.
  13.  
  14. DATA ls_sflight TYPE sflight.
  15. DATA lt_sflight TYPE TABLE OF sflight.
  16. DATA outstr TYPE t_str.
  17. DATA tmp(255).
  18. DATA lt_str TYPE TABLE OF t_str.
  19.  
  20. FIELD-SYMBOLS <p> TYPE any.
  21.  
  22.  
  23. SELECT * FROM sflight INTO TABLE lt_sflight.
  24.  
  25. CLEAR outstr.
  26. LOOP AT lt_sflight INTO ls_sflight.
  27.  
  28.   DO.
  29.     ASSIGN COMPONENT sy-index OF STRUCTURE ls_sflight TO <p>.
  30.     IF sy-subrc <> 0.
  31.       SHIFT outstr-txt LEFT BY 1 PLACES.
  32.       APPEND outstr TO lt_str.
  33.       CLEAR outstr.
  34.       EXIT.
  35.     ELSE.
  36.       WRITE <p> TO tmp.
  37.       CONDENSE tmp NO-GAPS.
  38.       CONCATENATE outstr-txt tmp INTO outstr-txt SEPARATED BY '-'.
  39.     ENDIF.
  40.   ENDDO.
  41.  
  42.  
GeSHi ©


gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Concatenate überalle Felder eines Feld-Symbols

Postby Lou2449 » Thu Feb 13, 2014 9:13 am

Klasse!

Ich danke dir vielmals, es klappt! :-)

EDIT:
Wenn ich schonmal dabei bin:
Wie kriege ich diese verd*mmten Überschriften meiner Struktur in die Datei?
Hier fehlen einfach alle standard FuBas, so dass ich das auf dem Wege leider nicht machen kann. :(

Vielen Dank vorab schonmal. :-)
Lou2449
..
..
 
Posts: 36
Joined: Mon Sep 20, 2010 8:54 am

Re: Concatenate überalle Felder eines Feld-Symbols

Postby Tron » Fri Feb 14, 2014 1:24 pm

Hmm..
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *&---------------------------------------------------------------------*
  2. *& Report  ZTEST_ASSIGN_COMPONENT
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *&
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT ztest_assign_component.
  10. TYPES: BEGIN OF t_str,
  11.        txt TYPE string,
  12.        END OF t_str.
  13.  
  14. DATA ls_sflight TYPE sflight.
  15. DATA lt_sflight TYPE TABLE OF sflight.
  16. DATA outstr TYPE t_str.
  17. DATA tmp(255).
  18. DATA lt_str TYPE TABLE OF t_str.
  19.  
  20. FIELD-SYMBOLS <p> TYPE any.
  21.  
  22.  
  23. DATA: lr_des TYPE REF TO cl_abap_structdescr.
  24. DATA: hr_des TYPE REF TO cl_abap_typedescr.
  25. FIELD-SYMBOLS: <lt_components> TYPE abap_compdescr.
  26.  
  27.  
  28. SELECT * FROM sflight INTO TABLE lt_sflight.
  29.  
  30. CLEAR outstr.
  31. LOOP AT lt_sflight INTO ls_sflight.
  32.  
  33.   DO.
  34.     ASSIGN COMPONENT sy-index OF STRUCTURE ls_sflight TO <p>.
  35.     IF sy-subrc <> 0.
  36.       SHIFT outstr-txt LEFT BY 1 PLACES.
  37.       APPEND outstr TO lt_str.
  38.       CLEAR outstr.
  39.       EXIT.
  40.     ELSE.
  41.       WRITE <p> TO tmp.
  42.       CONDENSE tmp NO-GAPS.
  43.       CONCATENATE outstr-txt tmp INTO outstr-txt SEPARATED BY '-'.
  44.     ENDIF.
  45.   ENDDO.
  46.  
  47.  
  48.  
  49. ** For DDIC Tables
  50. *CALL METHOD cl_abap_typedescr=>describe_by_name
  51. *  EXPORTING
  52. *    p_name      = 'MARA'
  53. *  RECEIVING
  54. *    p_descr_ref = hr_des
  55. *  EXCEPTIONS
  56. *    OTHERS      = 2.
  57. *
  58. *IF NOT hr_des IS INITIAL.
  59. *  lr_des ?= hr_des.
  60. *  LOOP AT lr_des->components ASSIGNING <lt_components>.
  61. *
  62. ***>  Do something
  63. *
  64. *  ENDLOOP.
  65. *ENDIF.
  66.  
  67.  
  68. * For internal Tables
  69. CALL METHOD cl_abap_typedescr=>describe_by_data
  70.   EXPORTING
  71.     p_data      = ls_sflight
  72.   RECEIVING
  73.     p_descr_ref = hr_des.
  74.  
  75. IF NOT hr_des IS INITIAL.
  76.   lr_des ?= hr_des.
  77.   LOOP AT lr_des->components ASSIGNING <lt_components>.
  78.  
  79.  
  80. ***>  get Fieldname
  81.  
  82.     tmp = <lt_components>-name.
  83.     CONDENSE tmp NO-GAPS.
  84.     CONCATENATE outstr-txt tmp INTO outstr-txt SEPARATED BY '-'.
  85.  
  86.  
  87.   SHIFT outstr-txt LEFT BY 1 PLACES.
  88.   INSERT outstr INTO lt_str INDEX 1.
  89.  
GeSHi ©


in etwa so ... :wink:

lg Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm


Return to ABAP® für Anfänger

Who is online

Users browsing this forum: No registered users and 3 guests