Kniff gesucht - BSIK/BSID/... type c

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Kniff gesucht - BSIK/BSID/... type c

Beitrag von ralf.wenzel (Top Expert / 3931 / 200 / 281 ) »
Moin,

ich brauche Strukturen analog zu BSIK, BSID, BSAK, BSAD - aber alles bitte in char-Feldern.

Natürlich weiß ich, wie man sowas anlegt - ich weiß auch, wie man mit Excel so ellenlange data-Blöcke beschleunigt bauen könnte. Kennt jemand vielleicht Strukturen, die das schon liefern? 1:1-"Kopien" dieser Tabellenstrukturen, aber halt mit Char-Feldern?


Gruß und danke

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Kniff gesucht - BSIK/BSID/... type c

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
ralf.wenzel hat geschrieben: Natürlich weiß ich, wie man sowas anlegt - ich weiß auch, wie man mit Excel so ellenlange data-Blöcke beschleunigt bauen könnte. Kennt jemand vielleicht Strukturen, die das schon liefern? 1:1-"Kopien" dieser Tabellenstrukturen, aber halt mit Char-Feldern?
praktikanten machen sich dafür immer gut :D
<:: XING-Gruppe Tricktresor::>

Re: Kniff gesucht - BSIK/BSID/... type c

Beitrag von ralf.wenzel (Top Expert / 3931 / 200 / 281 ) »
LOL da mach ich das lieber in Excel - dauert für alle vier Tabellen zusammen fünf Minuten. Sieht halt nicht elegant aus....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Kniff gesucht - BSIK/BSID/... type c

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
ralf.wenzel hat geschrieben:Sieht halt nicht elegant aus....
Mir ist immer noch nicht ganz klar was genau du suchst: Sollen die Strukturen im DDIC angelegt werden oder brauchst du einen "Quelltextgenerator" für die TYPES/DATA-Anweisung, oder ...? Welche Ausgabelänge sollen die C-Felder haben interne/externe?


Die nötigen Daten bekommt man über den DB-View DD03M raus, dann ist ein Generator schnell geschrieben:

Code: Alles auswählen.

REPORT  ztest.

DATA: gt_data TYPE TABLE OF dd03m.
FIELD-SYMBOLS: <gs_data> TYPE dd03m.

PARAMETERS: p_tab TYPE dd03m-tabname.
PARAMETERS: rb_int RADIOBUTTON GROUP rb1,
            rb_ext RADIOBUTTON GROUP rb1.

START-OF-SELECTION.

  SELECT *
    FROM dd03m
    INTO TABLE gt_data
    WHERE tabname = p_tab
      AND ddlanguage = sy-langu
    ORDER BY position.


  LOOP AT gt_data ASSIGNING <gs_data>.
    AT FIRST.
      WRITE: / 'TYPES: BEGIN OF TYS_' NO-GAP, p_tab NO-GAP, ','.
    ENDAT.
    CASE 'X'.
      WHEN rb_ext.
        WRITE: / ' ', <gs_data>-fieldname, 'TYPE c LENGTH', <gs_data>-outputlen NO-GAP NO-ZERO, ','.
      WHEN rb_int.
        WRITE: / ' ', <gs_data>-fieldname, 'TYPE c LENGTH', <gs_data>-leng NO-GAP NO-ZERO, ','.
    ENDCASE.
    AT LAST.
      WRITE: / 'TYPES: END OF TYS_', p_tab NO-GAP, '.'.
    ENDAT.
  ENDLOOP.
Sinnvoll wäre doch eigentlich ein Auslesen zur Laufzeit und dann erzeugen eines dynamischen Datentypes, damit man Feldänderungen der DB-Tabs im Programm nicht manuell nach pflegen muss:

Code: Alles auswählen.

REPORT  ztest.

DATA: gt_data TYPE TABLE OF dd03m.
FIELD-SYMBOLS: <gs_data> TYPE dd03m.

  DATA:
   gr_table_handle TYPE REF TO data,
   go_tabledescr   TYPE REF TO cl_abap_tabledescr,

   gr_struct_handle TYPE REF TO data,
   go_strucdescr    TYPE REF TO cl_abap_structdescr,

   gs_component TYPE abap_componentdescr,
   gt_component TYPE abap_component_tab,

   gv_length TYPE i.

  FIELD-SYMBOLS:
   <dyn_struct> TYPE ANY,
   <dyn_tab>    TYPE ANY TABLE.


PARAMETERS: p_tab TYPE dd03m-tabname.
PARAMETERS: rb_int RADIOBUTTON GROUP rb1,
            rb_ext RADIOBUTTON GROUP rb1.

START-OF-SELECTION.

  SELECT *
    FROM dd03m
    INTO TABLE gt_data
    WHERE tabname = p_tab
      AND ddlanguage = sy-langu
    ORDER BY position.

* Struckturbeschreibung aufbauen
  LOOP AT gt_data ASSIGNING <gs_data>.
    gs_component-name = <gs_data>-fieldname.
    CASE 'X'.
      WHEN rb_int.
        gv_length = <gs_data>-leng.
      WHEN rb_ext.
        gv_length = <gs_data>-outputlen.
    ENDCASE.

    gs_component-type = cl_abap_elemdescr=>get_c( p_length = gv_length ).
    APPEND gs_component TO gt_component.
  ENDLOOP.

* Structur Handle für Create Data
  go_strucdescr = cl_abap_structdescr=>create( gt_component ).

* Tabellen Handle für Create Data
  go_tabledescr ?= cl_abap_tabledescr=>create( p_line_type = go_strucdescr ).

* Structur erzeugen und dereferenzieren
  CREATE DATA gr_struct_handle TYPE HANDLE go_strucdescr.
  ASSIGN gr_struct_handle->* TO <dyn_struct>.

* Tabelle erzeugen und dereferenzieren
  CREATE DATA gr_table_handle TYPE HANDLE go_tabledescr.
  ASSIGN gr_table_handle->* TO <dyn_tab>.

* <dyn_tab> und <dyn_struct> stehen dann für die weitere Bearebitung zur Verfügung....
Gruß Hendrik

Re: Kniff gesucht - BSIK/BSID/... type c

Beitrag von ralf.wenzel (Top Expert / 3931 / 200 / 281 ) »
Ich hab mir zwar schon mit Excel beholfen, aber ich probiere das mal aus, wobei ich eher Typen als Tabellen bauen würde.

Hintergrund: Ich soll Daten aus den Sekundärtabellen BSIK/BSAK/BSID/BSAD in ein Flatfile schreiben - demzufolge brauche ich ALLE Felder in Character-Form. Außerdem muss ich die Beträge mit voranstehendem Vorzeichen, ohne Punkte und mit Dezimalkomma ausgeben.

Beholfen habe ich mir mit Excel: DD03L für die jeweilige Tabelle (sortiert nach Reihenfolge) nach Excel und alles außer Name, Länge und Nachkommastellen wegwerfen, dazwischen eine Spalte für "TYPE c LENGHT", eine für die Summe aus Länge und Nachkommastellen und eine für ein Komma.

Das kann man dann per Zwischenablage zwischen BEGIN OF und END OF kopieren.

Die Feldzuweisung mache ich mit zwei ASSIGN COMPONENT und WRITE TO, wobei ich bei Betragsfeldern noch die Punkte wegwerfe und per SHIFT RIGHT CIRCULAR das Vorzeichen davorsetze (an den Feldtyp P komme ich per Klasse ran, den Namen kann ich mir nicht merken).

Ich habe mir halt die Frage gestellt, ob man die Typdeklaration nicht mit viel weniger Coding hinbekommt....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

0
Antw.
873
Views
gesucht: True Type Font Arial
von kpas » 06.12.2005 15:22 • Verfasst in Basis
4
Antw.
5023
Views
BSIK - nähere Beschreibung
von Blueshape » 10.01.2005 17:15 • Verfasst in Financials
0
Antw.
1005
Views
8
Antw.
20017
Views
BSAK, BSIK, BSAS, BSIS, BSEG
von robin1at » 03.05.2006 15:14 • Verfasst in Financials
4
Antw.
643
Views
Type aus Type ermitteln
von akosch » 13.02.2023 14:03 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Bedarfszusammenfassung "Einzelbedarfe"
vor einer Stunde von harri 2 / 1143
Trennen Strasse und Hausnummer
vor 3 Stunden von ralf.wenzel 21 / 11266
Dialog-Container mit Toolbar/Status
Gestern von black_adept gelöst 27 / 4364

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

Bedarfszusammenfassung "Einzelbedarfe"
vor einer Stunde von harri 2 / 1143
Trennen Strasse und Hausnummer
vor 3 Stunden von ralf.wenzel 21 / 11266
Dialog-Container mit Toolbar/Status
Gestern von black_adept gelöst 27 / 4364

Unbeantwortete Forenbeiträge

IT0024 Qualifikationen CP-ID
Gestern von ArjenR 1 / 239
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 3166
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9758