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 / 3924 / 200 / 280 ) »
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 / 3924 / 200 / 280 ) »
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 / 3924 / 200 / 280 ) »
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.
872
Views
gesucht: True Type Font Arial
von kpas » 06.12.2005 15:22 • Verfasst in Basis
4
Antw.
5021
Views
BSIK - nähere Beschreibung
von Blueshape » 10.01.2005 17:15 • Verfasst in Financials
0
Antw.
1004
Views
8
Antw.
19999
Views
BSAK, BSIK, BSAS, BSIS, BSEG
von robin1at » 03.05.2006 15:14 • Verfasst in Financials
4
Antw.
622
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

Eclipse - warum/wann verwendet ihr es [nicht]
vor einer Stunde von ewx 17 / 1035
Dialog-Container mit Toolbar/Status
vor 6 Stunden von DeathAndPain gelöst 20 / 2496
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1635

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

Eclipse - warum/wann verwendet ihr es [nicht]
vor einer Stunde von ewx 17 / 1035
Dialog-Container mit Toolbar/Status
vor 6 Stunden von DeathAndPain gelöst 20 / 2496
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1635

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 699
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2329
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8911