char in num, und/oder int umwandeln

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

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
Hallo,

evtl. kommt der Dump aus der Ecke:

Code: Alles auswählen.

  
    wa_fieldcat-fieldname = 'COUNTER'. 
      wa_fieldcat-inttype   = 'b'. 
      wa_fieldcat-outputlen = '3'. 
Probier es einfach mit einem 'C'-Feld. Wenn du aber den Feldkatalog vorher fix generierst, brauchst du auch keine Tabelle dynamisch zu geneireren.

Grüße

Udo

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


Beitrag von ewx (Top Expert / 4885 / 319 / 644 ) »
uh hat geschrieben:Wenn du aber den Feldkatalog vorher fix generierst, brauchst du auch keine Tabelle dynamisch zu geneireren.
Da hst du recht...! :lol:

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

Danke für die Hilfe.

Leider kommt jedoch der Dump nicht aus dieser Ecke: :cry:
wa_fieldcat-fieldname = 'COUNTER'.
wa_fieldcat-inttype = 'b'.
wa_fieldcat-outputlen = '3'.

hmm, mit dieser Aussage bin ich jetzt `etwas irritiert´ :shock:
-> Wenn du aber den Feldkatalog vorher fix generierst, brauchst du auch keine Tabelle dynamisch zu geneireren.
? :(
Soll das heißen, dass ich mir diesen ganzen Teil m. d. dyn. Tabelle ersparen kann?

Code: Alles auswählen.

 
...   
  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,
...  

... 
  it_fieldcat TYPE lvc_t_fcat,
  wa_fieldcat LIKE LINE OF it_fieldcat,
...

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

...
* 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>.

...

... 
        ASSIGN COMPONENT ls_objectdata-ausp1 OF STRUCTURE <wa_dyn_table> TO <l_field>.
... 

...
      APPEND <wa_dyn_table> TO <t_dyn_table>.
...

...
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
... 
Dann brauch' ich aber wieder die it_data, wa_data und meine Struktur zrpmm_equipment_inspection_3 ???

:( das macht ja dann keinen Sinn mehr?!!?

Hilfe! :oops:

thx,
lg

Beitrag von ewx (Top Expert / 4885 / 319 / 644 ) »
BabsiCSC hat geschrieben:Soll das heißen, dass ich mir diesen ganzen Teil m. d. dyn. Tabelle ersparen kann?
Hi Babsi!
Das soll es heissen. Wenn du den Feldkatalog fest aufbaust um daraus eine Tabelle zu generieren, dann kannst du auch gleich die Tabelle/ Struktur so definieren.

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

.. mein code diesbez. hat sich etwas geändert ->

Code: Alles auswählen.


TYPE-POOLS: sydes, wc, cntl, slis.

TABLES: zpmm_t352r_iflot, t352r, equi, eqkt, zpmm_reqclass, iflo,
zpmm_itob_auskz, itob, afih, klah, klfb, ausp.

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_revnr      TYPE TABLE OF zpmm_t352r_iflot,
  wa_revnr      LIKE LINE OF it_revnr,
  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,

*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.


* 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>.


*  SELECT * FROM zpmm_t352r_iflot
*    WHERE revnr IN s_revnr.

  SELECT * FROM zpmm_t352r_iflot INTO CORRESPONDING FIELDS OF TABLE it_revnr
    WHERE revnr IN s_revnr.


  LOOP AT it_revnr INTO wa_revnr.

    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.


  ENDLOOP.


*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.


  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.


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

    APPEND wa_fieldcat TO it_fieldcat.


*      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 wa_fieldcat INDEX sy-tabix.
*
*      ENDIF.


  ENDLOOP.


  LOOP AT it_equi INTO wa_equi.

*      wa_data-counter = 1.


    l_object = wa_equi-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.

    ENDLOOP.

    APPEND <wa_dyn_table> TO <t_dyn_table>.

*      IF  wa_data-counter = 1.
*        CLEAR: wa_data-counter.
*      ENDIF.

  ENDLOOP.


*  ENDSELECT.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
*   I_CALLBACK_PROGRAM                = ' '
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_USER_COMMAND           = ' '
*   I_CALLBACK_TOP_OF_PAGE            = ' '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*    i_structure_name                  = 'ZRPMM_EQUIPMENT_INSPECTION_3'
*   I_BACKGROUND_ID                   = ' '
    i_grid_title                      = 'Equipmentlist Inspection'
*   I_GRID_SETTINGS                   =
    is_layout                         =  ls_layout
    it_fieldcat                       =  it_fieldcat[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
    i_save                            = 'X'
    is_variant                        = lv_variant
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   I_HTML_HEIGHT_TOP                 =
*   I_HTML_HEIGHT_END                 =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab                          = <t_dyn_table>
 EXCEPTIONS
   program_error                     = 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.
Was ich rausgefunden habe ist, dass der Dump offensichtlich durch den Aufruf dieser Methode (dyn. Tabelle) ausgelöst wird!!

Code: Alles auswählen.

* 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.

???

Danke!
lg

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
Ja, so wie ewx geschrieben hat, habe ich es gemeint. Im Moment machst du eher Schritte zurück als voran. Ich habe mal ein Programm geschrieben, das mit dynamischen Tabellen arbeitet. Das war eine nette Erfahrung aber wenn du in die Richtung gehst, programmierst du dir einen Wolf.
Nimm doch die Idee mit der fixen Struktur und den drei verschiedenen Typen auf. Dann kannst du die Felder, die du nicht anzeigen willst, einfach im Feldkatalog mittels fc-tech = 'X'
ausblenden.

Grüße

Udo

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

O.K., danke.

Nur funktioniert das dann auch so, dass ich bei Spalten mit nummerischen Werten summieren kann???

*pffff* im Moment dreh' ich mich ein bischen im Kreis :( , da hast du recht.

thx,
lg

Beitrag von ewx (Top Expert / 4885 / 319 / 644 ) »
also...
du hast doch deine Struktur mit CHAR. Die sieht in etwa so aus:
EQUNR
MERKMAL1(C10)
MERKMAL2(C10)
MERKMAL3(C10)

In deinem Programm liest du die Merkmale zu einem Objekt und machst in etwa folgendes:
case merkmal.
WHEN 'BREITE'.
struc-merkmal1 = value.
WHEN 'LÄNGE'.
struc-merkmal2 = value.
WHEN 'BAUART'.
struc-merkmal3 = value.
ENDCASE.

Da du ja anscheinend weisst, welche Merkmale in deiner Klassifizierung vorkommen, kannst du auch die folgende Struktur benutzen:

EQUNR
MERKMAL1(P)
MERKMAL2(P)
MERKMAL3(C10)

Die kannst du ja ganz einfach im DDIC oder per Types definieren.

Und schon kannst du die Tabelle ans Grid übergeben und summieren...

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

O.K., es ist schon klar was du meinst, bzw. was du mir versuchst zu erklären.
Nur das Problem an dem Ganzen ist, dass ich eben NICHT weiß welche Typen die Merkmale enthalten , sondern nur die ersten 5 fünf Einträge d. Struktur.
Deshalb kann ich ja das dem Feldkatalog so fix zuweisen,

Code: Alles auswählen.

*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.


Aber ab d. weiteren 84 eben nicht mehr, da die aus dem Fkt.baustein CLME_FEATURE_ATTR_OF_CLASS_ALL rausgeholt werden.
Deshalb möchte ich das ja in dem jeweiligen loop `verpacken´ -->

Code: Alles auswählen.

  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.


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

    APPEND wa_fieldcat TO it_fieldcat.


  ENDLOOP.

Oder meinst du das eh' auch?!? *skeptischschau*

thx
lg

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
Hallo Babsi,

schmeiss mal den Call Method direkt nach START-OF-SELECTION raus.

Grüße

Udo

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

*gg* o.k. - nachdem mich nun zwei Personen (Enno und Udo) diesbez. "bearbeiten" *g* , werde ich jetzt mal auf das ganze dyn. Tabellen`zeugs´ verzichten und das mal ohne dyn. und wieder mit meiner Struktur, it_data und wa_data ausprobieren. ...

:?

mal schauen ....

thx,
lg

Beitrag von ewx (Top Expert / 4885 / 319 / 644 ) »
BabsiCSC hat geschrieben:Nur das Problem an dem Ganzen ist, dass ich eben NICHT weiß welche Typen die Merkmale enthalten , sondern nur die ersten 5 fünf Einträge d. Struktur.
...dann sind wir wieder am Anfang... :-)
Zwischendurch hattest du glaube ich ein Coding gepostet, in dem du dich eben nicht dynamisch auf die Merkmalsdefinitionen beziehst.
In deinem "LOOP AT it_tfeatures INTO ls_tfeatures" musst du dann natürlich die entsprechenden Typen aus den Merkmalen verwenden.
Und du solltest diesen Typ "b" mal durch NUMC10 oder Typ "P" ersetzen weil wegen des Dumps...

assigning bei dyn. Tabellen

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

Danke für eure Hilfe! ;-)
Der richtige Code dafür sieht so aus -->

Code: Alles auswählen.

REPORT  zpmmr_equipment_inspection_4  LINE-SIZE 132.

TYPE-POOLS: sydes, wc, cntl, slis.

TABLES: zpmm_t352r_iflot, t352r, equi, eqkt, zpmm_reqclass, iflo,
zpmm_itob_auskz, itob, afih, klah, klfb, ausp.

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

DATA:
  it_data       TYPE TABLE OF dd03p,
  wa_data       TYPE dd03p,
  it_revnr      TYPE TABLE OF zpmm_t352r_iflot,
  wa_revnr      LIKE LINE OF it_revnr,
  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,

*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,
      l_first(10)  TYPE c,
      l_second(10) TYPE c.

DATA: l_class LIKE klah-class.

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

*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: p_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.

  CALL FUNCTION 'DD_TBFD_GET'
   EXPORTING
*   GET_STATE           = 'M'
     langu               = sy-langu
*   PRID                = 0
     tabl_name           = 'ZRPMM_EQUIPMENT_INSPECTION_4'
   withtext            = 'X'
*   ADD_TYPEINFO        = 'X'
*   USE_CACHE           = ' '
*   TRACELEVEL          = 0
* IMPORTING
*   GOT_STATE           =
 TABLES
   dd03p_tab_a         = it_data
*   DD03P_TAB_N         =
* EXCEPTIONS
*   ILLEGAL_VALUE       = 1
*   OP_FAILURE          = 2
*   OTHERS              = 3
            .
  IF sy-subrc = 0.
    SORT it_data BY position.
    LOOP AT it_data INTO wa_data.

      CLEAR wa_fieldcat.

*Feldkatalog aufbauen
      wa_fieldcat-fieldname = wa_data-fieldname.
      wa_fieldcat-inttype   = wa_data-inttype.
      wa_fieldcat-intlen    = wa_data-intlen.
      wa_fieldcat-outputlen = wa_data-intlen.
      wa_fieldcat-coltext   = wa_data-ddtext.
      wa_fieldcat-seltext   = wa_data-reptext.

      APPEND wa_fieldcat TO it_fieldcat.

    ENDLOOP.
  ENDIF.


  l_class = p_class2.

  CALL FUNCTION 'CLME_FEATURE_ATTR_OF_CLASS_ALL'
    EXPORTING
      class                   = l_class
      classtype               = '002'
     language                = 'D'
*   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.


  LOOP AT it_tfeatures INTO ls_tfeatures.

    IF ls_tfeatures-atfor = 'NUM' AND ls_tfeatures-anzdz = '0'.

      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = ls_tfeatures-atnam.
      wa_fieldcat-inttype   = 'I'.
      wa_fieldcat-intlen = ls_tfeatures-anzst.
      wa_fieldcat-coltext   = ls_tfeatures-atnam.
      wa_fieldcat-seltext   = ls_tfeatures-atbez.

      APPEND wa_fieldcat TO it_fieldcat.

    ELSE.

      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = ls_tfeatures-atnam.
      wa_fieldcat-inttype   = 'C'.
      wa_fieldcat-outputlen = '30'.
      wa_fieldcat-coltext   = ls_tfeatures-atnam.
      wa_fieldcat-seltext   = ls_tfeatures-atbez.

      APPEND wa_fieldcat TO it_fieldcat.

    ENDIF.

  ENDLOOP.


* 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 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>.


  SELECT * FROM zpmm_t352r_iflot INTO CORRESPONDING FIELDS OF TABLE it_revnr
    WHERE revnr IN s_revnr.


  LOOP AT it_revnr INTO wa_revnr.


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

    CHECK sy-subrc = 0.


    CALL FUNCTION 'INSTALLED_EQMTS_ON_LOCATION'
      EXPORTING
        iflo_number = wa_revnr-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 = p_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_dyn_table>.
      MOVE-CORRESPONDING lw_ziappliclass TO <wa_dyn_table>.
      MOVE-CORRESPONDING wa_equi TO <wa_dyn_table>.

      l_object = wa_equi-equnr.


      CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
        EXPORTING
          class                      = lw_ziappliclass-class
           classtext                  = 'X'
          classtype                  = '002'
           clint                      = 0
           features                   = 'X'
          language                   = 'D'
*        language                   = sy-langu
          object                     = l_object
*           OBJECTTABLE                = ' '
           key_date                   = sy-datum
*           INITIAL_CHARACT            = 'X'
*           NO_VALUE_DESCRIPT          =
           change_service_clf         = 'X'
             inherited_char             = 'X'
*           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-atnam OF STRUCTURE <wa_dyn_table> TO <l_field>.

        IF <l_field> IS ASSIGNED.

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

          ELSE.

            READ TABLE it_tfeatures INTO ls_tfeatures
              WITH KEY atnam = ls_objectdata-atnam.

            IF sy-subrc = 0.

              IF ls_tfeatures-atfor = 'NUM'.


                IF NOT ls_objectdata-atflv IS INITIAL.
                  SPLIT ls_objectdata-ausp1 AT ' ' INTO l_first l_second.
                  IF ls_tfeatures-anzdz = '0'.
                    REPLACE '.' IN l_first WITH ''.
                    REPLACE ',' IN l_first WITH ''.
                  ENDIF.

                  <l_field> = l_first.
                ENDIF.

              ELSE.

                <l_field> = ls_objectdata-ausp1.

              ENDIF.

            ENDIF.

          ENDIF.

        ENDIF.

      ENDLOOP.

      APPEND <wa_dyn_table> TO <t_dyn_table>.

*      IF  wa_data-counter = 1.
*        CLEAR: wa_data-counter.
*      ENDIF.

    ENDLOOP.

  ENDLOOP.


  IF <t_dyn_table> IS ASSIGNED.

    DATA: lt_fieldcat_tmp TYPE slis_t_fieldcat_alv,
          ls_fieldcat_tmp TYPE LINE OF slis_t_fieldcat_alv.
    DATA: l_tabname TYPE slis_tabname.


    LOOP AT it_fieldcat INTO wa_fieldcat.


      CLEAR ls_fieldcat_tmp.

      MOVE-CORRESPONDING wa_fieldcat TO ls_fieldcat_tmp.

      READ TABLE it_tfeatures INTO ls_tfeatures
            WITH KEY atnam = wa_fieldcat-fieldname.

      IF sy-subrc = 0.
        ls_fieldcat_tmp-seltext_s = ls_fieldcat_tmp-seltext_m =
        ls_fieldcat_tmp-seltext_l = ls_fieldcat_tmp-reptext_ddic = ls_tfeatures-atbez.
      ELSE.
        ls_fieldcat_tmp-seltext_s = ls_fieldcat_tmp-seltext_m =
        ls_fieldcat_tmp-seltext_l = ls_fieldcat_tmp-reptext_ddic = wa_fieldcat-fieldname.
      ENDIF.

      APPEND ls_fieldcat_tmp TO lt_fieldcat_tmp.


    ENDLOOP.


    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
*   I_CALLBACK_PROGRAM                = ' '
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_USER_COMMAND           = ' '
*   I_CALLBACK_TOP_OF_PAGE            = ' '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*    i_structure_name                  = 'ZRPMM_EQUIPMENT_INSPECTION_3'
*   I_BACKGROUND_ID                   = ' '
      i_grid_title                      = 'Equipmentlist Inspection'
*   I_GRID_SETTINGS                   =
      is_layout                         =  ls_layout
      it_fieldcat                       =  lt_fieldcat_tmp
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
      i_save                            = 'X'
      is_variant                        = lv_variant
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   I_HTML_HEIGHT_TOP                 =
*   I_HTML_HEIGHT_END                 =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
      TABLES
        t_outtab                          = <t_dyn_table>
   EXCEPTIONS
     program_error                     = 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.

  ENDIF.
Wobei ich aber jetzt noch überlege, wie man bitte d. counter der dynamischen Tabelle zuweisen kann?
Bzw. möchte ich den counter der dyn. tab. assignen und auf 1 setzen.
Wie mache ich das?
Bzw. wie verwende ich beim Dynamischen das assign?

.. hab' schon "wie ein Wilde" herum`experimentiert´ ... :oops:
z.B.
** ASSIGN COMPONENT counter OF STRUCTURE <wa_dyn_table> TO <l_field>.
** ASSIGN counter TO <wa_dyn_table>.
ASSIGN (counter) TO <wa_dyn_table>.
* ASSIGN counter->* TO <wa_dyn_table>.

Weiß das wer von euch?

thx,
lg

Re: assigning bei dyn. Tabellen

Beitrag von ewx (Top Expert / 4885 / 319 / 644 ) »
War ja schon fast richtig... :-)
ASSIGN COMPONENT 'COUNTER' OF STRUCTURE <wa_dyn_table> TO <l_field>.

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hello,
O.K., stimmt ;-) , danke....
lg

Vergleichbare Themen

5
Antw.
3907
Views
Typ CURR in CHAR umwandeln
von Armin93 » 02.10.2019 14:15 • Verfasst in ABAP® für Anfänger
1
Antw.
3394
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
1
Antw.
1680
Views
Liste zu ALV umwandeln
von managero » 06.06.2008 10:31 • Verfasst in ABAP® für Anfänger
11
Antw.
5083
Views
BAPI umwandeln
von SaskuAc » 16.12.2016 11:15 • Verfasst in ABAP® für Anfänger
10
Antw.
8154
Views
Umwandeln SAPOffice URL in PDF
von Lucyalison » 08.02.2018 16:39 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

RFC vs. ODATA
vor 3 Tagen von DeathAndPain 8 / 1654
Frage zur redefinierten Methode
vor 6 Tagen von ralf.wenzel 12 / 2124

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

RFC vs. ODATA
vor 3 Tagen von DeathAndPain 8 / 1654
Frage zur redefinierten Methode
vor 6 Tagen von ralf.wenzel 12 / 2124