NAchdem du dich da dreimal im Kreis gedreht hast, konnte ich das nicht mehr mit ansehen...BabsiCSC hat geschrieben:Hallo,
Danke für die Antwort!
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.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"!!
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