Code: Alles auswählen.
Es wurde auf ein noch nicht zugewiesenes Feldsymbol zugegriffen
(Datensegment Nr. 32821).
Dieser Fehler tritt auf, wenn
- ein typisiertes Feldsymbol angesprochen wird, bevor es mittels
ASSIGN gesetzt wird, oder
- ein Feldsymbol angesprochen wird, das auf die Zeile einer
internen Tabelle gezeigt hat, die gelöscht wurde, oder
- ein Feldsymbol angesprochen wird, das vorher mit UNASSIGN
zurückgesetzt wurde oder das auf ein lokales Feld gezeigt hat,
das nicht mehr existiert oder
- ein Parameter einer globalen Funktionsschnittstelle angesprochen
wird, obwohl der entsprechende Funktionsbaustein nicht aktiv ist
d.h. nicht in der Liste der aktiven Aufrufe steht. Die Liste der
aktiven Aufrufe kann diesem Kurzdump entnommen werden.
Code: Alles auswählen.
REPORT zmm_intgr_art_text.
*------------------*
*Tabelledefintion *
*------------------*
TYPES: BEGIN OF t_mara,
matnr LIKE mara-matnr,
spras LIKE makt-spras,
maktx LIKE makt-maktx,
END OF t_mara.
*------------------*
*Tabelledefintion *
*------------------*
TABLES: mara. "Allgemeine Materialdaten
*--------------------------*
*Interne Tabelledefintion *
*--------------------------*
DATA: mara_tab TYPE TABLE OF t_mara. "Artikelstamm(Tiefe Struktur)
*----------------------------------*
*Hilfsvariablen für Dym. Table *
*----------------------------------*
DATA: lt_fieldcatalog TYPE lvc_t_fcat,
ls_fieldcatalog TYPE lvc_s_fcat,
lt_data TYPE REF TO data,
new_line TYPE REF TO data.
FIELD-SYMBOLS: <f_newtab> TYPE REF TO data,
<f_tab> TYPE ANY TABLE,
<f_type> TYPE ANY,
<f_wert>.
*----------------------------------*
*Hilfsvariablen für ALV-Grid *
*----------------------------------*
DATA: ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm,
g_container TYPE scrfname VALUE 'BCALV_GRID_0100',
grid1 TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container.
*-------------------*
*Selektionsscreens *
*-------------------*
SELECTION-SCREEN SKIP 1.
* Datenselektion
SELECTION-SCREEN BEGIN OF BLOCK data_sele WITH FRAME TITLE text-dsl.
SELECT-OPTIONS: sl_matnr FOR mara-matnr OBLIGATORY. "Materialnummer
SELECTION-SCREEN END OF BLOCK data_sele.
SELECTION-SCREEN SKIP 1.
* Dateidownload und Anzeige
SELECTION-SCREEN BEGIN OF BLOCK pste WITH FRAME TITLE text-tps.
* Downloadlokal
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS pm_dlpc RADIOBUTTON GROUP act.
SELECTION-SCREEN COMMENT 4(28) FOR FIELD pm_dlpc.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS pm_filpc TYPE localfile.
SELECTION-SCREEN END OF LINE.
* Download Applikationsserver
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS pm_dlas RADIOBUTTON GROUP act.
SELECTION-SCREEN COMMENT 4(28) FOR FIELD pm_dlas.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS pm_filas TYPE localfile DEFAULT 'zmm_intgr_matstamm.txt'.
SELECTION-SCREEN END OF LINE.
* ALV Grid Anzeige
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS pm_test RADIOBUTTON GROUP act.
SELECTION-SCREEN COMMENT 4(28) FOR FIELD pm_test.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK pste.
*----------------------------------------------------------------------*
* CLASS download_loc DEFINITION
*----------------------------------------------------------------------*
* Lokale Dateisicherung
*----------------------------------------------------------------------*
CLASS download_loc DEFINITION.
PUBLIC SECTION.
*----------------------------------------------------------------------*
* Parameterübergabe:
* CHANGING pfx_file -> Benutzerdefinierte Dateiangabe
*----------------------------------------------------------------------*
CLASS-METHODS: f4_locfile CHANGING pfx_file TYPE localfile.
*----------------------------------------------------------------------*
* Parameterübergabe:
* IMPORTING lf_file -> Name Übergabe von Datei
*----------------------------------------------------------------------*
CLASS-METHODS: down IMPORTING lf_file TYPE localfile.
ENDCLASS. "download_loc DEFINITION
*----------------------------------------------------------------------*
* CLASS download_loc IMPLEMENTATION
*----------------------------------------------------------------------*
* Lokale Dateisicherung
*----------------------------------------------------------------------*
CLASS download_loc IMPLEMENTATION.
METHOD f4_locfile.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = pfx_file.
ENDMETHOD. "f4_locfile
METHOD down.
DATA xlf_file TYPE string.
xlf_file = lf_file.
TRANSLATE xlf_file TO LOWER CASE.
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = xlf_file
write_field_separator = ';'
CHANGING
data_tab = mara_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24.
IF sy-subrc <> 0.
MESSAGE text-err TYPE 'E'.
ELSE.
MESSAGE text-suc TYPE 'I'.
ENDIF.
ENDMETHOD. "down
ENDCLASS. "download_loc IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS show_alv DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS show_alv DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: output.
CLASS-METHODS: create_table.
ENDCLASS. "show_alv DEFINITION
*----------------------------------------------------------------------*
* CLASS show_alv IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS show_alv IMPLEMENTATION.
METHOD output.
CALL SCREEN 100.
ENDMETHOD. "output
METHOD create_table.
DATA: wa_mara TYPE t_mara.
ls_fieldcatalog-fieldname = 'matnr'.
ls_fieldcatalog-coltext = 'Materialnummer'.
APPEND ls_fieldcatalog TO lt_fieldcatalog.
ls_fieldcatalog-fieldname = 'spras'.
ls_fieldcatalog-coltext = 'Sprachenschlüssel'.
APPEND ls_fieldcatalog TO lt_fieldcatalog.
ls_fieldcatalog-fieldname = 'maktx'.
ls_fieldcatalog-coltext = 'Materialkurztext'.
APPEND ls_fieldcatalog TO lt_fieldcatalog.
"Datenreferenzierung auf lt_data
ASSIGN lt_data TO <f_newtab>.
"Tabelleerstellung
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fieldcatalog
IMPORTING
ep_table = <f_newtab>
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.
ASSIGN <f_newtab>->* TO <f_tab>.
ENDMETHOD. "crete_table
ENDCLASS. "show_alv IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS appserver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS appserver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: down IMPORTING filas TYPE localfile.
ENDCLASS. "appserver_down DEFINITION
*----------------------------------------------------------------------*
* CLASS appserver_down IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS appserver IMPLEMENTATION.
METHOD down.
TYPES: BEGIN OF st_mara,
matnr TYPE string,
spras TYPE string,
maktx TYPE string,
END OF st_mara.
"Variablendefinition
DATA: v_filas TYPE localfile,
v_linestamm TYPE string,
wa_mara TYPE st_mara.
FIELD-SYMBOLS: <f_mara> TYPE t_mara.
v_filas = filas.
TRANSLATE v_filas TO LOWER CASE.
CALL FUNCTION 'FILE_GET_NAME_USING_PATH'
EXPORTING
logical_path = 'Z_TRANS_INTEGRAL'
file_name = v_filas
IMPORTING
file_name_with_path = v_filas
EXCEPTIONS
path_not_found = 1
missing_parameter = 2
operating_system_not_found = 3
file_system_not_found = 4
OTHERS = 5.
"Datei auf Applikationsserver anlegen
OPEN DATASET v_filas FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE.
"Artikel in Datei hineinschreiben
LOOP AT mara_tab ASSIGNING <f_mara>.
CONCATENATE <f_mara>-matnr ';' INTO wa_mara-matnr.
CONCATENATE <f_mara>-spras ';' INTO wa_mara-matnr.
CONCATENATE <f_mara>-maktx ';' INTO wa_mara-maktx.
CONCATENATE wa_mara-matnr wa_mara-matnr wa_mara-maktx INTO v_linestamm.
TRANSFER v_linestamm TO v_filas.
ENDLOOP.
* Datei schliesen
CLOSE DATASET v_filas.
IF sy-subrc <> 0.
MESSAGE text-err TYPE 'E'.
ELSE.
MESSAGE text-suc TYPE 'I'.
ENDIF.
ENDMETHOD. "down
ENDCLASS. "appserver_down IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS write_struc DEFINITION
*----------------------------------------------------------------------*
* Datenbankdaten in tiefe Struktur schreiben
*----------------------------------------------------------------------*
CLASS write_struc DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: select_db.
ENDCLASS. "write_struc DEFINITION
*----------------------------------------------------------------------*
* CLASS write_struc IMPLEMENTATION
*----------------------------------------------------------------------*
* Datenbankdaten in tiefe Struktur schreiben
*----------------------------------------------------------------------*
CLASS write_struc IMPLEMENTATION.
METHOD select_db.
DATA: v_fieldname1(100) TYPE c,
v_fieldname2(100) TYPE c,
v_fieldname3(100) TYPE c.
FIELD-SYMBOLS: <f_mara> TYPE t_mara.
"Zweier Tabelle joinen
SELECT m~matnr e~spras e~maktx
FROM mara AS m INNER JOIN makt AS e
ON m~matnr = e~matnr
INTO CORRESPONDING FIELDS OF TABLE mara_tab
WHERE m~matnr IN sl_matnr.
show_alv=>create_table( ).
CREATE DATA new_line LIKE LINE OF <f_tab>.
ASSIGN: new_line->* TO <f_type>,
<f_tab> TO <f_wert>.
LOOP AT mara_tab ASSIGNING <f_mara>.
CLEAR: v_fieldname1, v_fieldname2, v_fieldname3.
CONCATENATE '<f_type>-' 'matnr' INTO v_fieldname1.
ASSIGN (v_fieldname1) TO <f_wert>.
<f_wert> = <f_mara>-matnr.
CONCATENATE '<f_type>-' 'spras' INTO v_fieldname2.
ASSIGN (v_fieldname2) TO <f_wert>.
<f_wert> = <f_mara>-spras.
CONCATENATE '<f_type>-' 'maktx' INTO v_fieldname3.
ASSIGN (v_fieldname3) TO <f_wert>.
<f_wert> = <f_mara>-maktx.
INSERT <f_type> INTO TABLE <f_tab>.
ENDLOOP.
ENDMETHOD. "select_db "select_alv
ENDCLASS. "select_db
* Wenn Taste F4 gedrückt wird
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pm_filpc.
download_loc=>f4_locfile( CHANGING pfx_file = pm_filpc ).
START-OF-SELECTION.
"Datenbankselektion ausführen
write_struc=>select_db( ).
CALL SCREEN 100.
"Downloadauswahl
* CASE 'X'.
* WHEN pm_dlpc.
* download_loc=>down( EXPORTING lf_file = pm_filpc ).
* WHEN pm_dlas.
* appserver=>down( EXPORTING filas = pm_filas ).
* WHEN pm_test.
* show_alv=>output( ).
* ENDCASE.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Module PBO OUTPUT
*&---------------------------------------------------------------------*
* ALV-Grid Generierung vor der Ausgabe
* i_structure_name -> Strukturname in DDIC
* it_outtab -> interne Tabelle
*----------------------------------------------------------------------*
MODULE pbo OUTPUT.
SET PF-STATUS 'ALV100'.
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING
container_name = g_container.
CREATE OBJECT grid1
EXPORTING
i_parent = g_custom_container.
CALL METHOD grid1->set_table_for_first_display
* EXPORTING
* i_structure_name = 'lvc_t_fcat'
CHANGING
it_outtab = <f_tab>
it_fieldcatalog = lt_fieldcatalog.
ENDIF.
ENDMODULE. " PBO OUTPUT
*&---------------------------------------------------------------------*
*& Module PAI INPUT
*&---------------------------------------------------------------------*
* Reaktion auf OK_CODE
*----------------------------------------------------------------------*
MODULE pai INPUT.
* to react on oi_custom_events:
CALL METHOD cl_gui_cfw=>dispatch.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " PAI INPUT
Code: Alles auswählen.
ls_fieldcatalog-fieldname = 'MATNR'.
ls_fieldcatalog-coltext = 'Materialnummer'.
APPEND ls_fieldcatalog TO lt_fieldcatalog.
ls_fieldcatalog-fieldname = 'SPRAS'.
ls_fieldcatalog-coltext = 'Sprachenschlüssel'.
APPEND ls_fieldcatalog TO lt_fieldcatalog.
ls_fieldcatalog-fieldname = 'MAKTX'.
ls_fieldcatalog-coltext = 'Materialkurztext'.
APPEND ls_fieldcatalog TO lt_fieldcatalog.
Code: Alles auswählen.
CONCATENATE '<F_TYPE>-' 'MATNR' INTO v_fieldname1.
ASSIGN (v_fieldname1) TO <f_wert>.
<f_wert> = <f_mara>-matnr.
CONCATENATE '<F_TYPE>-' 'SPRAS' INTO v_fieldname2.
ASSIGN (v_fieldname2) TO <f_wert>.
<f_wert> = <f_mara>-spras.
CONCATENATE '<F_TYPE>-' 'MAKTX' INTO v_fieldname3.
ASSIGN (v_fieldname3) TO <f_wert>.
<f_wert> = <f_mara>-maktx.