Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- REPORT Z_AUFGABE1_WOSSNER_B.
- "AUFGABE 1
- SELECT mara~matnr, makt~maktx " Selektieren von 'matnr' 'maktx'
- FROM mara
- INNER JOIN makt ON makt~matnr = mara~matnr " 'Matnr' aus 'Mara' und 'Makt' vergleichen
- UP TO 10 ROWS " Datenmenge begrenzen
- INTO TABLE @DATA(lt_result).
- LOOP AT lt_result INTO DATA(ls_result). " Daten aus 'lt_result' in Workarea verschieben
- WRITE: / 'Materialbezeichnung: ', ls_result-maktx. " Ausgeben von Materialkurztext
- WRITE: / 'Zugehörige Materialnummer: ', ls_result-matnr. " Ausgeben von Materialnummer
- ENDLOOP.
- AUFGABE 2
- DATA: lv_matnr TYPE matnr, " Definieren von Variablen
- lv_maktx TYPE maktx,
- lv_ersda TYPE ersda,
- lv_spras TYPE spras,
- lv_mtart TYPE mtart.
- SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-se1. " Selection Screen Anfang
- SELECT-OPTIONS:
- material FOR lv_matnr, " Selection Screen 'Materialnummer'
- beschr FOR lv_maktx NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialkurztext'
- date FOR lv_ersda NO INTERVALS NO-EXTENSION, " Selection Screen 'Erstelldatum'
- language FOR lv_spras NO INTERVALS NO-EXTENSION, " Selection Screen 'Sprache'
- art FOR lv_mtart NO INTERVALS NO-EXTENSION. " Selection Screen 'Materialart'
- SELECTION-SCREEN END OF BLOCK BLOCK1. " Selection Screen Ende
- SELECT * " Selektieren von allen Daten (*) aus 'Mara'
- FROM mara
- INNER JOIN makt ON makt~matnr = mara~matnr " 'Matnr' aus 'Mara' und 'Makt' vergleichen
- INTO TABLE @DATA(lt_result) " Interne Tabelle 'lt_result' erstellen mit '@Data'
- UP TO 100 ROWS " Datenmenge begrenzen
- WHERE mara~matnr In @material " Bedingungen aus Selection Screen
- AND makt~maktx In @beschr
- AND ersda In @date
- AND mtart In @art
- AND makt~spras In @language.
- LOOP AT lt_result INTO DATA(ls_result). " 'lt_result' in Workarea übertragen
- WRITE: / 'Materialnummer: ', ls_result-mara-matnr. " Ausgabe von 'matnr'
- WRITE: / 'Zugehörige Materialbeschreibung: ', ls_result-makt-maktx. " Ausgabe von 'maktx'
- WRITE: / 'Übersetzung: ', ls_result-makt-spras. " Ausgabe von 'spras'
- WRITE: / 'Erstelldatum:', ls_result-mara-ersda. " Ausgabe von 'ersda'
- WRITE: / 'Materialart', ls_result-mara-mtart. " Ausgabe von 'mtart'
- ENDLOOP.
- AUFGABE 2
- AUTHORITY-CHECK OBJECT 'M_MATE_STA' " 'M_MATE_STA' = Materialstamm Zugriff
- ID 'ACTVT' FIELD '03' " 'ACTVT' (03) Berechtigung zum Anzeigen
- ID 'STATM' DUMMY. " 'STATM' = Pflegestatus unwichtig
- IF sy-subrc NE 0.
- MESSAGE: 'Berechtigung nicht vorhanden' TYPE 'E'. " Error Ausgabe
- ELSE.
- DATA: lv_matnr TYPE matnr, " Variablen Definition
- lv_maktx TYPE maktx,
- lv_ersda TYPE ersda,
- lv_spras TYPE spras,
- lv_mtart TYPE mtart,
- go_table TYPE REF TO cl_salv_table,
- go_functions TYPE REF TO cl_salv_functions.
- SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-se1. " Selection Screen Beginn
- SELECT-OPTIONS:
- material FOR lv_matnr, " Selection Screen 'Materialnummer'
- beschr FOR lv_maktx NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialtext'
- art FOR lv_mtart NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialart'
- language FOR lv_spras NO INTERVALS NO-EXTENSION, " Selection Screen 'Sprache'
- date FOR lv_ersda NO INTERVALS NO-EXTENSION. " Selection Screen 'Erstelldatum'
- SELECTION-SCREEN END OF BLOCK BLOCK1. " Selection Screen Ende
- SELECT mara~matnr, maktx, spras, mtart, ersda " Selektieren von 'matnr' 'maktx' 'spras' 'mtart' 'ersda'
- FROM mara " Zugriff auf 'Mara'
- INNER JOIN makt ON makt~matnr = mara~matnr " 'Matnr' aus 'Mara' und 'Makt' vergleichen
- INTO TABLE @DATA(lt_result) " Mit '@Data' 'lt_result' definieren
- UP TO 100 ROWS " Datenmenge begrenzen
- WHERE mara~matnr In @material " Bedingungen aus Selection Screen
- AND makt~maktx In @beschr
- AND ersda In @date
- AND mtart In @art
- AND makt~spras In @language.
- TRY. "ALV Copy and Paste
- cl_salv_table=>factory
- (
- IMPORTING r_salv_table = go_table
- CHANGING t_table = lt_result
- ).
- CATCH cx_salv_msg.
- ENDTRY.
- go_functions = go_table->get_functions( ).
- go_functions->set_all( abap_true ).
- go_table->display( ).
- ENDIF.
- Aufgabe 3
- TYPES: BEGIN OF ty_result_struct, " Struktur 'ty_result_struct' erstellen
- matnr TYPE matnr,
- maktx TYPE maktx,
- werks TYPE werks_D,
- END OF ty_result_struct.
- DATA: lv_ersda TYPE ersda, " Definieren von Standard Variablen
- lv_spras TYPE spras,
- lv_mtart TYPE mtart,
- lt_result TYPE TABLE OF ty_result_struct, " 'lt_result' und dazugehörige Workarea definieren
- ls_result TYPE ty_result_struct,
- GD_MAKTX TYPE maktx, " Definieren von Dynpro Variablen
- GD_WERKS TYPE werks_D,
- GD_MATNR TYPE matnr,
- GD_INDEX TYPE i VALUE 1, " Definieren von 'Index' Variablen
- GD_INDEX_SHOW TYPE i,
- INDEX_TOTAL TYPE i,
- ok_code TYPE sy-ucomm, " Definieren von Variablen (Button Dynpro)
- save_ok LIKE ok_code.
- SELECTION-SCREEN BEGIN OF BLOCK BLOCK1. " Selection Screen 'BLOCK1' starten
- SELECT-OPTIONS:
- material FOR ls_result-matnr, " Selection Screen 'Materialnummer'
- beschr FOR ls_result-maktx NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialkurztext'
- werk FOR ls_result-werks NO INTERVALS NO-EXTENSION, " Selection Screen 'Werk'
- kind FOR lv_mtart NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialart'
- date FOR lv_ersda NO INTERVALS NO-EXTENSION, " Selection Screen 'Erstelldatum'
- language FOR lv_spras NO INTERVALS NO-EXTENSION DEFAULT 'DE'. " Selection Screen 'Sprache'
- SELECTION-SCREEN END OF BLOCK BLOCK1. " Selection Screen 'BLOCK1' beenden
- START-OF-SELECTION. " Selection Starten
- SELECT mara~matnr makt~maktx marc~werks " Selektieren von matnr, maktx und werks
- FROM mara
- INNER JOIN makt ON mara~matnr = makt~matnr " Selektieren und Vergleich von matnr in mara und makt
- INNER JOIN marc ON mara~matnr = marc~matnr " Selektieren und Vergleich von matnr in mara und marc
- INTO CORRESPONDING FIELDS OF TABLE lt_result
- UP TO 100 ROWS " Begrenzen der Datenmenge
- WHERE mara~matnr In material " Selektieren von Daten welche zu 'Selection' passen
- AND makt~maktx In beschr
- AND mara~ersda In date
- AND mara~mtart In kind
- AND marc~werks In werk
- AND makt~spras In language.
- SORT lt_result BY matnr. " 'lt_result' nach Materialnummern sortieren
- LOOP AT lt_result INTO ls_result. " 'lt_result' Werte in Workarea übergeben
- AUTHORITY-CHECK OBJECT 'M_MATE_WRK' " 'M_MATE_WRK' = Werk Zugriff
- ID 'ACTVT' FIELD '03' " '3' = Anzeigen
- ID 'WERKS' FIELD ls_result-werks. " Berechtigung für Werk vergleichen mit 'ls_result-werks' vergleichen
- IF sy-subrc NE 0. " Berechtigung fuer dieses Werk ist nicht vorhanden
- CLEAR ls_result. " 'ls_result' Inhalt löschen
- MODIFY lt_result FROM ls_result. " 'lt_result' Inhalt durch 'ls_result' Inhalt ersetzen
- MESSAGE 'Keine Berechtigung' TYPE 'S'. " Fehlermeldung ausgeben
- ENDIF.
- ENDSELECT.
- ENDLOOP.
- END-OF-SELECTION. " Selection Beenden
- GD_INDEX = 1. " Index Value auf 1 setzen
- CALL SCREEN '1001'. " Dynpro aufrufen
- MODULE read_data OUTPUT.
- READ TABLE lt_result INTO ls_result INDEX GD_INDEX. " Werte in Workarea übergeben
- GD_MATNR = ls_result-matnr. " Variablen Werte zuordnen
- GD_MAKTX = ls_result-maktx.
- GD_WERKS = ls_result-werks.
- GD_INDEX_SHOW = GD_INDEX.
- INDEX_TOTAL = lines( lt_result ).
- ENDMODULE.
- MODULE user_command_0100 INPUT. " Module (Dynpro Button: Return, Exit)
- save_ok = ok_code.
- CLEAR ok_code. " 'ok_code' leeren (Sicher gehen)
- IF GD_INDEX NE GD_INDEX_SHOW. " 'GD_INDEX' mit 'GD_INDEX_SHOW' vergleichen
- GD_INDEX = GD_INDEX_SHOW. " 'GD_INDEX_SHOW' Wert zuordnen
- ENDIF.
- CASE save_ok. " Case definieren
- WHEN 'BUTTON_EXIT'.
- LEAVE PROGRAM. " Programm beenden
- WHEN 'BUTTON_RETURN'.
- LEAVE TO SCREEN 0. " Zu Selection Screen zurückkehren
- WHEN 'BUTTON_NEXT'.
- CHECK GD_INDEX < lines( lt_result ). " Index Wertebereich auf Maximum beschränken
- GD_INDEX = GD_INDEX + 1. " Index um 1 erhöhen
- WHEN 'BUTTON_PREVIOUS'.
- CHECK GD_INDEX > 1. " Index Wertebereich auf Minimum beschränken
- GD_INDEX = GD_INDEX - 1. " Index um 1 erniedrigen
- ENDCASE.
- ENDMODULE.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement