Struktur besorgen

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Struktur besorgen

Beitrag von NLengner (ForumUser / 31 / 7 / 2 ) »
Hallo zusammen,

ich habe momentan ein Methode, in diese gebe ich eine Tabelle und eine Struktur.
Ich habe eine große Liste an aufgaben und eine davon ist es, den Parameter IP_STRUCTURE zu entfernen. Ich soll die Struktur in der Methode irgendwie besorgen. Dazu soll ich nicht mit den RTTS klassen zu arbeiten(?) zumindest nicht neu erstellen.

Kann mir jemand helfen bitte?
Hier das Coding:

Code: Alles auswählen.

  METHOD formate.
    FIELD-SYMBOLS: <infty>     TYPE ANY TABLE,
                   <structure> TYPE any.

    ASSIGN ip_data->* TO <infty>.
    ASSIGN ip_structure->* TO <structure>.

    DATA: lt_csv_tab  TYPE TABLE OF string,
          typedescr   TYPE REF TO cl_abap_typedescr,
          structdescr TYPE REF TO cl_abap_structdescr.

    CALL METHOD cl_abap_typedescr=>describe_by_data_ref
      EXPORTING
        p_data_ref           = ip_structure    " Referenz auf zu beschreibenes Datenobjekt
      RECEIVING
        p_descr_ref          = typedescr    " Referenz auf Beschreibungsobjekt
      EXCEPTIONS
        reference_is_initial = 1
        OTHERS               = 2.
    IF sy-subrc <> 0.
      RAISE EXCEPTION TYPE zcx_formate_error.
    ENDIF.

    structdescr ?= typedescr.

    lt_csv_tab = ip_uploaded_csv.

    LOOP AT lt_csv_tab REFERENCE INTO DATA(input).
      IF sy-tabix = 1.
        SPLIT input->* AT ';' INTO TABLE DATA(header).
        DATA(index_sprps) = line_index( header[ table_line = 'SPRPS' ] ).
        CHECK index_sprps IS NOT INITIAL.
      ELSE.
        SPLIT  input->* AT ';' INTO TABLE DATA(fields).

        IF fields[ index_sprps ] IS NOT INITIAL.
          CONTINUE.
        ENDIF.

        LOOP AT fields REFERENCE INTO DATA(field).
          ASSIGN COMPONENT header[ sy-tabix ] OF STRUCTURE <structure> TO FIELD-SYMBOL(<cell>).
          CASE structdescr->get_component_type( header[ sy-tabix ] )->type_kind.
            WHEN cl_abap_typedescr=>typekind_packed.
              TRANSLATE field->* USING ',.'.
            WHEN cl_abap_typedescr=>typekind_date.
              IF find_regex( ip_regex = '\d\d\.\d\d.\d\d\d\d' ip_text  = field->* ) = abap_true.
                <cell> = |{ field->*+6(4) }{ field->*+3(2) }{ field->*(2) }|.
              ELSEIF find_regex( ip_regex = '\d\d\d\d\-\d\d\-\d\d' ip_text  = field->* ) =  abap_true.
                REPLACE ALL OCCURRENCES OF '-' IN field->* WITH ''.
                <cell> = field->*.
              ENDIF.
            WHEN OTHERS.
              <cell> = field->*.
          ENDCASE.

        ENDLOOP.
        INSERT <structure> INTO TABLE <infty>.
        IF sy-subrc <> 0.
          RAISE EXCEPTION TYPE zcx_formate_error.
        ENDIF.
        CLEAR <structure>.
      ENDIF.

    ENDLOOP.
    SORT <infty> ASCENDING BY ('BEGDA') ('PERNR') ('SUBTY').
    ep_table = <infty>.
  ENDMETHOD.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Struktur besorgen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ist das eine Übungsaufgabe oder eine produktive Tätigkeit? Dein Coding sieht nach Letzterem aus, aber weshalb sollte man Dir dann verbieten, RTTS zu nutzen? Das halte ich hier für den Weg der Wahl.

Re: Struktur besorgen

Beitrag von NLengner (ForumUser / 31 / 7 / 2 ) »
Ist das eine Übungsaufgabe oder eine produktive Tätigkeit? Dein Coding sieht nach Letzterem aus, aber weshalb sollte man Dir dann verbieten, RTTS zu nutzen? Das halte ich hier für den Weg der Wahl.
Wie du schon erkannt hast, ist es für eine Produktive Tätigkeit.
Ich habe mich nochmal informiert und ich solle einfach nur den Import Parameter weg lassen und aus der mitgegeben Tabelle die Struktur holen.

Mir stellt sich nun die Frage. Wieso soll ich die Struktur in der statt vor der Methode die Struktur erstellen?
Die Struktur brauch ich außerhalb der Methode sowieso noch einmal.

Viele Grüße

Re: Struktur besorgen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Ist EP_TABLE , in die du ganz am Ende deine gesplitteten Daten einfügst vom richtigen Typ der in der Übergabestruktur IP_STRUCTURE benannt wird?
Wenn ja, dann:

Code: Alles auswählen.

APPEND INITIAL LINE TO ep_table ASSIGNING FIELD-SYMBOL(<ls_data>).
Und dann statt ASSIGN COMONENT header[ sy-tabix ] einfach ein ASSIGN COMPONENT sy-tabix
Damit kommt man dann auch ohne RTTI aus.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Struktur besorgen

Beitrag von NLengner (ForumUser / 31 / 7 / 2 ) »
black_adept hat geschrieben:
12.12.2019 16:06
Ist EP_TABLE , in die du ganz am Ende deine gesplitteten Daten einfügst vom richtigen Typ der in der Übergabestruktur IP_STRUCTURE benannt wird?
Wenn ja, dann:

Code: Alles auswählen.

APPEND INITIAL LINE TO ep_table ASSIGNING FIELD-SYMBOL(<ls_data>).
Und dann statt ASSIGN COMONENT header[ sy-tabix ] einfach ein ASSIGN COMPONENT sy-tabix
Damit kommt man dann auch ohne RTTI aus.
Verstehe ich das Richtig, dass du wissen möchtest welchen Typ EP_Table hat?
Ich habe ihm den TYP "ANY TABLE" gegeben.

Mein jetziger Lösungsweg wäre:

Code: Alles auswählen.

    DATA: s_ip_table  TYPE REF TO data.


    CREATE DATA s_ip_table LIKE LINE OF <infty>.
    ASSIGN s_ip_table->* TO <structure>.

Re: Struktur besorgen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Na - du wirfst doch eine CSV-Datei in eine Tabelle, oder?
Wenn die CSV-Datei der Struktur der Tabelle entspricht, kommst du doch ohne das ganze Brimborium aus indem du statt mit Feldnamen via Index auf die Felder der Zeile zugreifst.
Und die Zeile kannst du mittels LOOP AT ep_table ASSIGN zur Laufzeit auf die korrekte Zeilenstruktur setzen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

0
Antw.
700
Views
Daten für Smartforms besorgen
von vhoffe » 22.01.2007 10:44 • Verfasst in ABAP® Core
2
Antw.
1682
Views
Struktur als Kopie von vorhandener Struktur anlegen
von Marwin » 20.04.2005 15:29 • Verfasst in ABAP® Core
1
Antw.
254
Views
3
Antw.
1692
Views
Struktur
von swonny » 04.09.2008 17:16 • Verfasst in ABAP® für Anfänger
1
Antw.
1457
Views
PS Struktur
von SAP_ENTWICKLER » 23.11.2015 11:12 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140