char in num, und/oder int umwandeln

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
33 Beiträge • Seite 1 von 3 (current) Nächste
33 Beiträge Seite 1 von 3 (current) Nächste

char in num, und/oder int umwandeln

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,

Ich lasse in einem ALV Klassifizierungen zu Objekten ausgeben.
In meiner von mir angelegten Struktur ZRPMM_EQUIPMENT_INSPECTION_3 sind alle Felder nun als CHAR angegeben (siehe screenshot).

Nun möchte ich diese Zeilen aus d. Fkt.baustein CLME_FEATURE_ATTR_OF_CLASS_ALL (die bei mir in Spalten ausgegeben werden - siehe screenshot) , bzw. die Einträge des Fkt.bausteins , die in einem anderen Datentyp als CHAR im Fkt.baustein angeführt sind in meinem Code in den dementsprechenden Datentypen (num, int, etc. ...) umwandeln!!
Wie kann man das machen???

Bin da doch dementsprechender Anfänger und bräuchte da bitte mal Hilfe!
Danke!

lg

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


Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hello,
Nochmals ein screenshot , um mein Problem besser darzustellen.
Wie vorhin beschrieben, ich möchte in meinem Code die in meiner Struktur angegebenen CHAR's in die jeweiligen Datentypen umwandeln.

.. im debug schau' ich mal , wie ich das am besten programmieren könnte...

Hätte jemand eine Idee?

Danke!
lg

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Kann man das mit translate machen?
Macht das Sinn?

lg

"vorgaukeln"

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hello nochmals,

.. o.k., die Frage lautet, ob das überhaupt möglich ist, so wie ich mir das vorstelle!??!!
--> Im Prinzip "schummel" ich dem it_fieldcat vor, dass z.B. der erste Spalteneintrag aus d. CLME_FEATURE_ATTR_OF_CLASS_ALL ein NUM (oder DEC oder INT, etc. ...) ist und kein CHAR ist, so wie in meiner Struktur angegeben.

Ist das überhaupt möglich, das zu programmieren?

Danke!
lg

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
du brauchst doch nur dein Feld in der Struktur so definieren, wie du es haben willst und machst dann deine Zuweisung.
Wenn du es komplett dynamisch haben möchtest, weil in verschiedenen Klassen verschiedene Merkmale sind, dann musst du dir einen Struktur/ interne Tabelle mittels CREATE DATA anhand deiner Feldinformationen, die dir vorliegen, bauen.

Wenn deine Feldwerte aus der Klassifizierung im internen Format vorliegen, brauchst du nur eine Zuweisung FELD = FELDWERT machen. Sollten dieFeldwerte im externen Format vorliegen (1.234,56 oder 23.09.2003) dann musst du eben noch "umrechnen".
Gruß, Enno

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,
Danke für die Antwort!

Ja, genau das ist ja das Problem (".. du brauchst doch nur dein Feld in der Struktur so definieren, wie du es haben willst und machst dann deine Zuweisung... ") -> Ich kann KEINE Änderung in meiner Struktur (ZRPMM_EQUIPMENT_INSPECTION_3) machen (die Datentypen sollen alle CHAR bleiben (pysisch) , da ich ja nie weiß welcher Datentyp "g'rad daherkommt" !) , d.h. ich muss dem fieldcat (aus dem ALV) nur was "vorschummeln"!! Ich ändere aber die CHAR's in meiner Struktur nicht wirklich!
Ich muss den it_fieldcat zur Laufzeit vorschummeln, dass z.B. gerade ein numc-Feld in die Struktur geschrieben wird, etc. ...

Wie mache ich das am besten und schnellsten?
Umrechnen muss ich ja nicht, da ich ja pysisch nix ändere! Oder?
Und wenn ja, wie rechne ich dann um?

Bez. der Zuweisung FELD = FELDWERT , meinst du da jetzt das FELD aus meiner Struktur (ZRPMM_EQUIPMENT_INSPECTION_3) = dem FELDWERT meines it_fieldcat ?

Könntest du deine Antwort bitte etwas genauer angeben?
... :oops: so wie für einen Anfänger ? ..

thx,
lG

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
BabsiCSC hat geschrieben:Hallo,
Danke für die Antwort!
NAchdem du dich da dreimal im Kreis gedreht hast, konnte ich das nicht mehr mit ansehen... :D
BabsiCSC hat geschrieben:Ich kann KEINE Änderung in meiner Struktur (ZRPMM_EQUIPMENT_INSPECTION_3) machen (die Datentypen sollen alle CHAR bleiben (pysisch) , da ich ja nie weiß welcher Datentyp "g'rad daherkommt" !) , d.h. ich muss dem fieldcat (aus dem ALV) nur was "vorschummeln"!!
Dann MUSSTdu eine andere Struktur nehmen. So, wie du das willst, kannst du nicht schummeln. Wenn dein Tabellenfeld vom Typ CHAR ist, dann musst du auch den Feldkatalog so aufbauen.
Du kannst aber den Feldkatalog anhand deiner Merkmalsdefinition aufbauen und daraus dann eine Struktur/ Tabelle erzeugen:
http://tricktresor.de/content/index.php ... 20&aID=426
Leider nicht, bei Releases <= 4.6...
Warum möchtest du denn überhaupt den "richtigen" feldtypen haben? Du musst das eigentlich nur machen, wenn du über die Spalten mit numerischen Werten summieren möchtest.
Andernfalls reicht vielleicht eine rechtsbündige Ausgabe für num-Felder...?

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,

" NAchdem du dich da dreimal im Kreis gedreht hast, konnte ich das nicht mehr mit ansehen... " -> :D o.k., `Verzweiflungstaten´ eines Anfängers ;-)

o.k., d.h. dann brauche ich noch eine zusätzliche Struktur dafür.
Gut.
- zumindest weiß ich jetzt, dass das so mit meiner bisherigen Struktur nicht möglich ist.

o.k., den Grund weshalb ich das überhaupt so haben möchte, den hab' ich noch nicht erwähnt - stimmt.
-> Aber du hast es schon richtig vermutet, genau das ist es, ich möchte das deshalb machen, da ich über Spalten mit numerischen Werten summieren möchte. Das ist der Grund.

Aber ich werd' jetzt mal deinen Tipp so ausprobieren, den Feldkatalog anhand meiner Merkmalsdefinition aufbauen und daraus dann eine Struktur erzeugen.
...

thx,
lg

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hey,
... da gäbe es noch ein "Problem" - ich hab's bis jetzt noch gar nicht OO gemacht ;-) ... Aber ich versuch's trotzdem mal so, wie du es mir vorgeschlagen hast.

thx,
lg

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
oje, du hast's noch gar nicht gemacht... :shock:
Denn gibt's nur eins:
OO zu und durch... :lol:

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
oje :-( und ich befürchte, dass das gar nicht ohne OO geht, gell? :-( ..

lg ein verzweifelter "Frischling"

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Das kommt drauf an. Wenn du es wirklich ganz toll machen willst, kommst du um ein bischen OO nicht herum. Wobei das eigentlich nicht viel ist. Denn ob du eine Methode oder einen Funktionsbaustein aufrufst ist eigentlich dasselbe.

Wenn deine Merkmale immer gleich sind, kannst du ja eine feste Struktur definieren.

Ansonsten kannst du immer noch eine generische Struktur verwenden, in der du z.B. 20 CHAR-Felder hast, 20 DEC-Felder, 20 INT-Felder und dann je nach Datentyp die Zuweisung machst. Die Felder, die du dann nicht brauchst, kannst du ja über den Feldkatalog ausblenden.

Gruß,
Enno.

PS: Als "Frischling" musst du im ALV immer das Zebramuster einschalten... :lol: 8)

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hello,
O.K., gut. .. dann werd' ich mich da mal einarbeiten. ...

thx für deine Hilfe!

lg

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo nochmals,

Ich bräuchte da bitte kurz nochmals Hilfe diesbezüglich ...
Und zwar hab' ich versucht das Ganze ein bischen zu `dynamisieren´ - mein bisheriger Code sieht so aus:

Code: Alles auswählen.


TYPES: BEGIN OF ty_equi.
        INCLUDE STRUCTURE v_equi.
TYPES: class TYPE klasse_d,
       END OF ty_equi.

DATA:
  it_data       TYPE TABLE OF zrpmm_equipment_inspection_3,
  wa_data       LIKE LINE OF it_data,
  it_class      TYPE TABLE OF sclass,
  it_objectdata TYPE TABLE OF clobjdat,
  it_equi       TYPE TABLE OF ty_equi,
  wa_equi       LIKE LINE OF it_equi,
  lv_variant    TYPE disvariant,
  l_object      TYPE ausp-objek,
  lv_index      TYPE sy-tabix,

  ls_objectdata TYPE clobjdat,
  ls_data       TYPE zrpmm_equipment_inspection_3,

  it_tfeatures  TYPE TABLE OF klvmera,
  ls_tfeatures  TYPE klvmera,

  r_dyn_table    TYPE REF TO data,
  r_wa_dyn_table TYPE REF TO data,
  r_dock_ctnr    TYPE REF TO cl_gui_docking_container,
  r_alv_grid     TYPE REF TO cl_gui_alv_grid,

*Feldkatalog definieren
*  it_fieldcat     TYPE slis_t_fieldcat_alv,
*  lw_fieldcat     TYPE slis_fieldcat_alv,
  it_fieldcat TYPE lvc_t_fcat,
  wa_fieldcat LIKE LINE OF it_fieldcat,

  ls_layout    TYPE slis_layout_alv,
  wa_is_layout TYPE lvc_s_layo.

DATA: it_ziappliclass TYPE TABLE OF ziappliclass,
      lw_ziappliclass TYPE ziappliclass,
      wa_ziappliclass LIKE LINE OF it_ziappliclass,

      lv_tabix   TYPE sy-tabix.

DATA: lv_suffix(2)  TYPE n,
      l_equnr       TYPE equnr,
      lv_auskz      TYPE c,
      lv_field2(30) TYPE c,
      lv_flag2(30)  TYPE c,
      lv_flag(30)   TYPE c,
      zaehler       TYPE i.

DATA: lv_field(30) TYPE c,
      counter(2) TYPE n.

FIELD-SYMBOLS:
  <t_dyn_table>  TYPE STANDARD TABLE,
  <wa_dyn_table> TYPE ANY,
  <w_field>      TYPE ANY,
  <l_field>      TYPE atwrt.

*Selektionsschirm
SELECTION-SCREEN BEGIN OF BLOCK selection WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_revnr FOR zpmm_t352r_iflot-revnr.
*                s_class2 FOR klfb-class DEFAULT 'AREE'.
PARAMETERS: s_class2 LIKE klfb-class DEFAULT 'AREE'.
*Checkbox zum Auswählen bereits abgeschlossener Revisionen
PARAMETERS: p_closer AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK selection.


START-OF-SELECTION.


  SELECT * FROM zpmm_t352r_iflot
    WHERE revnr IN s_revnr.

*    CLEAR wa_data.


    SELECT SINGLE * FROM t352r
      WHERE revnr EQ zpmm_t352r_iflot-revnr
        AND ( revab EQ p_closer
         OR revab EQ '' ).

    CHECK sy-subrc = 0.


    CALL FUNCTION 'INSTALLED_EQMTS_ON_LOCATION'
      EXPORTING
        iflo_number = zpmm_t352r_iflot-tplnr
      TABLES
        equi_table  = it_equi.


    LOOP AT it_equi INTO wa_equi.

      SELECT SINGLE * FROM ziappliclass
           INTO CORRESPONDING FIELDS OF lw_ziappliclass
            WHERE objek = wa_equi-equnr
              AND class = s_class2.

      IF sy-subrc <> 0.
        DELETE it_equi INDEX sy-tabix.
      ELSE.
        wa_equi-class = lw_ziappliclass-class.

        MODIFY it_equi FROM wa_equi INDEX sy-tabix.
      ENDIF.

    ENDLOOP.


    LOOP AT it_equi INTO wa_equi.


*      MOVE-CORRESPONDING t352r TO wa_data.
*
*
*      wa_data-revnr  = zpmm_t352r_iflot-revnr.
*      wa_data-revtx  = t352r-revtx.
*      wa_data-equnr  = wa_equi-equnr.
*      wa_data-class  = lw_ziappliclass-class.
*
*      wa_data-counter = 1.


*Feldkatalog aufbauen
      wa_fieldcat-fieldname = 'COUNTER'.
      wa_fieldcat-inttype   = 'b'.
      wa_fieldcat-outputlen = '3'.
      wa_fieldcat-coltext   = 'Variable as counter'.
      wa_fieldcat-seltext   = wa_fieldcat-coltext.

      APPEND wa_fieldcat TO it_fieldcat.

      wa_fieldcat-fieldname = 'REVNR'.
      wa_fieldcat-inttype   = 'C'.
      wa_fieldcat-outputlen = '8'.
      wa_fieldcat-coltext   = 'Revision'.
      wa_fieldcat-seltext   = wa_fieldcat-coltext.

      APPEND wa_fieldcat TO it_fieldcat.

      wa_fieldcat-fieldname = 'REVTX'.
      wa_fieldcat-inttype   = 'C'.
      wa_fieldcat-outputlen = '40'.
      wa_fieldcat-coltext   = 'Rev. description'.
      wa_fieldcat-seltext   = wa_fieldcat-coltext.

      APPEND wa_fieldcat TO it_fieldcat.

      wa_fieldcat-fieldname = 'EQUNR'.
      wa_fieldcat-inttype   = 'C'.
      wa_fieldcat-outputlen = '18'.
      wa_fieldcat-coltext   = 'Equipment'.
      wa_fieldcat-seltext   = wa_fieldcat-coltext.

      APPEND wa_fieldcat TO it_fieldcat.

      wa_fieldcat-fieldname = 'CLASS'.
      wa_fieldcat-inttype   = 'C'.
      wa_fieldcat-outputlen = '18'.
      wa_fieldcat-coltext   = 'Class'.
      wa_fieldcat-seltext   = wa_fieldcat-coltext.

      APPEND wa_fieldcat TO it_fieldcat.


      wa_fieldcat-fieldname = 'AUSP1'.
      wa_fieldcat-inttype   = 'C'.
      wa_fieldcat-outputlen = '30'.
      wa_fieldcat-coltext   = ''.
      wa_fieldcat-seltext   = wa_fieldcat-coltext.

      APPEND wa_fieldcat TO it_fieldcat.


* Create dynamic table including the internal table
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog           = it_fieldcat
        IMPORTING
          ep_table                  = r_dyn_table
        EXCEPTIONS
          generate_subpool_dir_full = 1
          OTHERS                    = 2.

      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.


* Get access to new table using field symbol.
      ASSIGN r_dyn_table->* TO <t_dyn_table>.

* Create work area for new table.
      CREATE DATA r_wa_dyn_table LIKE LINE OF <t_dyn_table>.

* Get access to new work area using field symbol.
      ASSIGN r_wa_dyn_table->* TO <wa_dyn_table>.


*      l_object = wa_data-equnr.

      CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
        EXPORTING
          class                      = lw_ziappliclass-class
           classtext                  = 'X'
          classtype                  = '002'
           clint                      = 0
           features                   = 'X'
          language                   = sy-langu
          object                     = l_object
*           OBJECTTABLE                = ' '
           key_date                   = sy-datum
*           INITIAL_CHARACT            = 'X'
*           NO_VALUE_DESCRIPT          =
           change_service_clf         = 'X'
*           INHERITED_CHAR             = ' '
*           CHANGE_NUMBER              = ' '
        TABLES
          t_class                    = it_class
          t_objectdata               = it_objectdata
*           I_SEL_CHARACTERISTIC       =
*           T_NO_AUTH_CHARACT          =
        EXCEPTIONS
          no_classification          = 1
          no_classtypes              = 2
          invalid_class_type         = 3
        OTHERS                     = 4
        .
      IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

      ENDIF.


      CLEAR counter.

      LOOP AT it_objectdata INTO ls_objectdata.

        ADD 1 TO counter.

*        CONCATENATE 'WA_DATA-AUSP1_' counter INTO lv_field.
*        ASSIGN (lv_field) TO <l_field>.
        ASSIGN COMPONENT ls_objectdata-ausp1 OF STRUCTURE <wa_dyn_table> TO <l_field>.

        IF sy-subrc = 0.

          IF ls_objectdata-ausp1 = '?'.
            <l_field> = ''.

          ELSE.

            <l_field> = ls_objectdata-ausp1.

          ENDIF.

        ENDIF.


*          IF <l_field> IS ASSIGNED.
*
*            IF ls_objectdata-ausp1 = '?'.
*              <l_field> = ''.
*
*            ELSE.
*
*              <l_field> = ls_objectdata-ausp1.
*
*            ENDIF.
*
*          ENDIF.


      ENDLOOP.

      APPEND <wa_dyn_table> TO <t_dyn_table>.
*      APPEND wa_data TO it_data.
*
*
*      IF  wa_data-counter = 1.
*        CLEAR: wa_data-counter.
*      ENDIF.

    ENDLOOP.


  ENDSELECT.

*  CALL FUNCTION 'CLME_FEATURE_ATTR_OF_CLASS_ALL'
*    EXPORTING
*      class                   = lw_ziappliclass-class
*      classtype               = '002'
*     language                = sy-langu
**   KEY_DATE                = SY-DATUM
*     with_values             = ''
**   CHANGE_NUMBER           = ' '
**   DEFAULT_VAL_EXTRA       = ' '
**   I_SORTED_BY_CLASS       = 'X'
*    TABLES
*      tfeatures               = it_tfeatures
**   TVALUES                 =
* EXCEPTIONS
*   class_not_found         = 1
*   no_authority            = 2
*   OTHERS                  = 3
*            .
*  IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*  ENDIF.
*
*
*  CLEAR counter.
*
*
*  LOOP AT it_tfeatures INTO ls_tfeatures.
*
*
*    ADD 1 TO counter.
*
*    CONCATENATE 'AUSP1_' counter INTO lv_field.
*
*    READ TABLE it_fieldcat INTO lw_fieldcat WITH KEY fieldname =
*     lv_field.
*
*
*    IF sy-subrc = 0.
*
*
*      lw_fieldcat-seltext_s = lw_fieldcat-seltext_m =
*      lw_fieldcat-seltext_l = lw_fieldcat-reptext_ddic = ls_tfeatures-atbez.
*
*
*      MODIFY it_fieldcat FROM lw_fieldcat INDEX sy-tabix.
*
*    ENDIF.
*
*
*  ENDLOOP.
*---------------------------------------------------------------------*
*  MODULE initialization OUTPUT
*---------------------------------------------------------------------*
MODULE initialization OUTPUT.

* Set up for ALV display.
  IF r_dock_ctnr IS INITIAL.

    CREATE OBJECT r_dock_ctnr
           EXPORTING
              side  = cl_gui_docking_container=>dock_at_left
              ratio = '90'.

    CREATE OBJECT r_alv_grid
           EXPORTING i_parent = r_dock_ctnr.

* Display.
    CALL METHOD r_alv_grid->set_table_for_first_display
      EXPORTING
        is_layout       = wa_is_layout
      CHANGING
        it_outtab       = <t_dyn_table>
        it_fieldcatalog = it_fieldcat.

  ENDIF.

ENDMODULE.                 " initialization  OUTPUT
Nun bekomme ich einen folgenden Dump (siehe screenshot)
?

Meine Struktur zrpmm_equipment_inspection_3 brauche ich ja in dem Fall nicht mehr? Richtig?
D.h. dann sind die beiden Deklarationen v. it_data und wa_data in dem Fall dann auch hinfällig und nicht mehr zu gebrauchen!? - da ich ja die dynamischen Tabellen habe. Stimmt das?
In d. neuen Feldkatalog müssen die AUSP1_01 , etc. ... - Spalten ebenfalls, wie beim Altern, 84 x ausgegeben werden ...

Bitte nochmals um event. Hilfe !
Danke!

lG

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
ja. ja. ja.
Aber die int. Tabelle brauchst du nur einmal zu Beginn zu erzeugen. anstelle von SELECT - ENDSELECT solltest du SELECT INTO TABLE verwenden.
Was den DUMP angeht: Keine Ahnung!! :roll:

Vergleichbare Themen

5
Antw.
3305
Views
Typ CURR in CHAR umwandeln
von Armin93 » 02.10.2019 14:15 • Verfasst in ABAP® für Anfänger
1
Antw.
2715
Views
Konvertierug vom datentyp char der länge 4 in char der länge
von ratoshuan » 28.06.2006 11:33 • Verfasst in ABAP® Core
4
Antw.
9660
Views
Dezimalzahl in HEX umwandeln
von RiffRaff » 14.10.2004 16:44 • Verfasst in ABAP® Core
10
Antw.
7460
Views
Umwandeln SAPOffice URL in PDF
von Lucyalison » 08.02.2018 16:39 • Verfasst in ABAP® Core
3
Antw.
2351
Views
exponentialzahl umwandeln
von SaskuAc » 12.02.2018 08:17 • Verfasst in ABAP® Core

Über diesen Beitrag


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

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141