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