Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.70 KB | None | 0 0
  1. REPORT Z_AUFGABE1_WOSSNER_B.
  2.  
  3. "AUFGABE 1
  4.  
  5. SELECT mara~matnr, makt~maktx " Selektieren von 'matnr' 'maktx'
  6. FROM mara
  7. INNER JOIN makt ON makt~matnr = mara~matnr " 'Matnr' aus 'Mara' und 'Makt' vergleichen
  8. UP TO 10 ROWS " Datenmenge begrenzen
  9. INTO TABLE @DATA(lt_result).
  10.  
  11. LOOP AT lt_result INTO DATA(ls_result). " Daten aus 'lt_result' in Workarea verschieben
  12. WRITE: / 'Materialbezeichnung: ', ls_result-maktx. " Ausgeben von Materialkurztext
  13. WRITE: / 'Zugehörige Materialnummer: ', ls_result-matnr. " Ausgeben von Materialnummer
  14. ENDLOOP.
  15.  
  16. AUFGABE 2
  17.  
  18. DATA: lv_matnr TYPE matnr, " Definieren von Variablen
  19. lv_maktx TYPE maktx,
  20. lv_ersda TYPE ersda,
  21. lv_spras TYPE spras,
  22. lv_mtart TYPE mtart.
  23.  
  24. SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-se1. " Selection Screen Anfang
  25. SELECT-OPTIONS:
  26. material FOR lv_matnr, " Selection Screen 'Materialnummer'
  27. beschr FOR lv_maktx NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialkurztext'
  28. date FOR lv_ersda NO INTERVALS NO-EXTENSION, " Selection Screen 'Erstelldatum'
  29. language FOR lv_spras NO INTERVALS NO-EXTENSION, " Selection Screen 'Sprache'
  30. art FOR lv_mtart NO INTERVALS NO-EXTENSION. " Selection Screen 'Materialart'
  31.  
  32.  
  33.  
  34. SELECTION-SCREEN END OF BLOCK BLOCK1. " Selection Screen Ende
  35.  
  36. SELECT * " Selektieren von allen Daten (*) aus 'Mara'
  37. FROM mara
  38. INNER JOIN makt ON makt~matnr = mara~matnr " 'Matnr' aus 'Mara' und 'Makt' vergleichen
  39. INTO TABLE @DATA(lt_result) " Interne Tabelle 'lt_result' erstellen mit '@Data'
  40. UP TO 100 ROWS " Datenmenge begrenzen
  41. WHERE mara~matnr In @material " Bedingungen aus Selection Screen
  42. AND makt~maktx In @beschr
  43. AND ersda In @date
  44. AND mtart In @art
  45. AND makt~spras In @language.
  46.  
  47.  
  48. LOOP AT lt_result INTO DATA(ls_result). " 'lt_result' in Workarea übertragen
  49.  
  50. WRITE: / 'Materialnummer: ', ls_result-mara-matnr. " Ausgabe von 'matnr'
  51. WRITE: / 'Zugehörige Materialbeschreibung: ', ls_result-makt-maktx. " Ausgabe von 'maktx'
  52. WRITE: / 'Übersetzung: ', ls_result-makt-spras. " Ausgabe von 'spras'
  53. WRITE: / 'Erstelldatum:', ls_result-mara-ersda. " Ausgabe von 'ersda'
  54. WRITE: / 'Materialart', ls_result-mara-mtart. " Ausgabe von 'mtart'
  55.  
  56. ENDLOOP.
  57.  
  58. AUFGABE 2
  59.  
  60. AUTHORITY-CHECK OBJECT 'M_MATE_STA' " 'M_MATE_STA' = Materialstamm Zugriff
  61. ID 'ACTVT' FIELD '03' " 'ACTVT' (03) Berechtigung zum Anzeigen
  62. ID 'STATM' DUMMY. " 'STATM' = Pflegestatus unwichtig
  63. IF sy-subrc NE 0.
  64. MESSAGE: 'Berechtigung nicht vorhanden' TYPE 'E'. " Error Ausgabe
  65. ELSE.
  66.  
  67. DATA: lv_matnr TYPE matnr, " Variablen Definition
  68. lv_maktx TYPE maktx,
  69. lv_ersda TYPE ersda,
  70. lv_spras TYPE spras,
  71. lv_mtart TYPE mtart,
  72.  
  73. go_table TYPE REF TO cl_salv_table,
  74. go_functions TYPE REF TO cl_salv_functions.
  75.  
  76. SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-se1. " Selection Screen Beginn
  77.  
  78. SELECT-OPTIONS:
  79. material FOR lv_matnr, " Selection Screen 'Materialnummer'
  80. beschr FOR lv_maktx NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialtext'
  81. art FOR lv_mtart NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialart'
  82. language FOR lv_spras NO INTERVALS NO-EXTENSION, " Selection Screen 'Sprache'
  83. date FOR lv_ersda NO INTERVALS NO-EXTENSION. " Selection Screen 'Erstelldatum'
  84.  
  85. SELECTION-SCREEN END OF BLOCK BLOCK1. " Selection Screen Ende
  86.  
  87.  
  88. SELECT mara~matnr, maktx, spras, mtart, ersda " Selektieren von 'matnr' 'maktx' 'spras' 'mtart' 'ersda'
  89. FROM mara " Zugriff auf 'Mara'
  90.  
  91. INNER JOIN makt ON makt~matnr = mara~matnr " 'Matnr' aus 'Mara' und 'Makt' vergleichen
  92.  
  93. INTO TABLE @DATA(lt_result) " Mit '@Data' 'lt_result' definieren
  94. UP TO 100 ROWS " Datenmenge begrenzen
  95. WHERE mara~matnr In @material " Bedingungen aus Selection Screen
  96. AND makt~maktx In @beschr
  97. AND ersda In @date
  98. AND mtart In @art
  99. AND makt~spras In @language.
  100.  
  101.  
  102.  
  103. TRY. "ALV Copy and Paste
  104. cl_salv_table=>factory
  105. (
  106. IMPORTING r_salv_table = go_table
  107. CHANGING t_table = lt_result
  108. ).
  109.  
  110. CATCH cx_salv_msg.
  111. ENDTRY.
  112.  
  113. go_functions = go_table->get_functions( ).
  114.  
  115. go_functions->set_all( abap_true ).
  116.  
  117. go_table->display( ).
  118.  
  119. ENDIF.
  120.  
  121. Aufgabe 3
  122. TYPES: BEGIN OF ty_result_struct, " Struktur 'ty_result_struct' erstellen
  123. matnr TYPE matnr,
  124. maktx TYPE maktx,
  125. werks TYPE werks_D,
  126. END OF ty_result_struct.
  127.  
  128.  
  129. DATA: lv_ersda TYPE ersda, " Definieren von Standard Variablen
  130. lv_spras TYPE spras,
  131. lv_mtart TYPE mtart,
  132.  
  133. lt_result TYPE TABLE OF ty_result_struct, " 'lt_result' und dazugehörige Workarea definieren
  134. ls_result TYPE ty_result_struct,
  135.  
  136. GD_MAKTX TYPE maktx, " Definieren von Dynpro Variablen
  137. GD_WERKS TYPE werks_D,
  138. GD_MATNR TYPE matnr,
  139.  
  140. GD_INDEX TYPE i VALUE 1, " Definieren von 'Index' Variablen
  141. GD_INDEX_SHOW TYPE i,
  142. INDEX_TOTAL TYPE i,
  143.  
  144. ok_code TYPE sy-ucomm, " Definieren von Variablen (Button Dynpro)
  145. save_ok LIKE ok_code.
  146.  
  147.  
  148. SELECTION-SCREEN BEGIN OF BLOCK BLOCK1. " Selection Screen 'BLOCK1' starten
  149. SELECT-OPTIONS:
  150. material FOR ls_result-matnr, " Selection Screen 'Materialnummer'
  151. beschr FOR ls_result-maktx NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialkurztext'
  152. werk FOR ls_result-werks NO INTERVALS NO-EXTENSION, " Selection Screen 'Werk'
  153. kind FOR lv_mtart NO INTERVALS NO-EXTENSION, " Selection Screen 'Materialart'
  154. date FOR lv_ersda NO INTERVALS NO-EXTENSION, " Selection Screen 'Erstelldatum'
  155. language FOR lv_spras NO INTERVALS NO-EXTENSION DEFAULT 'DE'. " Selection Screen 'Sprache'
  156. SELECTION-SCREEN END OF BLOCK BLOCK1. " Selection Screen 'BLOCK1' beenden
  157.  
  158. START-OF-SELECTION. " Selection Starten
  159.  
  160. SELECT mara~matnr makt~maktx marc~werks " Selektieren von matnr, maktx und werks
  161. FROM mara
  162.  
  163. INNER JOIN makt ON mara~matnr = makt~matnr " Selektieren und Vergleich von matnr in mara und makt
  164. INNER JOIN marc ON mara~matnr = marc~matnr " Selektieren und Vergleich von matnr in mara und marc
  165.  
  166. INTO CORRESPONDING FIELDS OF TABLE lt_result
  167. UP TO 100 ROWS " Begrenzen der Datenmenge
  168. WHERE mara~matnr In material " Selektieren von Daten welche zu 'Selection' passen
  169. AND makt~maktx In beschr
  170. AND mara~ersda In date
  171. AND mara~mtart In kind
  172. AND marc~werks In werk
  173. AND makt~spras In language.
  174.  
  175.  
  176. SORT lt_result BY matnr. " 'lt_result' nach Materialnummern sortieren
  177. LOOP AT lt_result INTO ls_result. " 'lt_result' Werte in Workarea übergeben
  178.  
  179. AUTHORITY-CHECK OBJECT 'M_MATE_WRK' " 'M_MATE_WRK' = Werk Zugriff
  180. ID 'ACTVT' FIELD '03' " '3' = Anzeigen
  181. ID 'WERKS' FIELD ls_result-werks. " Berechtigung für Werk vergleichen mit 'ls_result-werks' vergleichen
  182.  
  183. IF sy-subrc NE 0. " Berechtigung fuer dieses Werk ist nicht vorhanden
  184. CLEAR ls_result. " 'ls_result' Inhalt löschen
  185. MODIFY lt_result FROM ls_result. " 'lt_result' Inhalt durch 'ls_result' Inhalt ersetzen
  186. MESSAGE 'Keine Berechtigung' TYPE 'S'. " Fehlermeldung ausgeben
  187. ENDIF.
  188.  
  189. ENDSELECT.
  190. ENDLOOP.
  191. END-OF-SELECTION. " Selection Beenden
  192.  
  193. GD_INDEX = 1. " Index Value auf 1 setzen
  194.  
  195. CALL SCREEN '1001'. " Dynpro aufrufen
  196.  
  197. MODULE read_data OUTPUT.
  198. READ TABLE lt_result INTO ls_result INDEX GD_INDEX. " Werte in Workarea übergeben
  199.  
  200. GD_MATNR = ls_result-matnr. " Variablen Werte zuordnen
  201. GD_MAKTX = ls_result-maktx.
  202. GD_WERKS = ls_result-werks.
  203. GD_INDEX_SHOW = GD_INDEX.
  204. INDEX_TOTAL = lines( lt_result ).
  205.  
  206. ENDMODULE.
  207.  
  208. MODULE user_command_0100 INPUT. " Module (Dynpro Button: Return, Exit)
  209. save_ok = ok_code.
  210. CLEAR ok_code. " 'ok_code' leeren (Sicher gehen)
  211.  
  212. IF GD_INDEX NE GD_INDEX_SHOW. " 'GD_INDEX' mit 'GD_INDEX_SHOW' vergleichen
  213. GD_INDEX = GD_INDEX_SHOW. " 'GD_INDEX_SHOW' Wert zuordnen
  214. ENDIF.
  215.  
  216. CASE save_ok. " Case definieren
  217.  
  218. WHEN 'BUTTON_EXIT'.
  219. LEAVE PROGRAM. " Programm beenden
  220.  
  221. WHEN 'BUTTON_RETURN'.
  222. LEAVE TO SCREEN 0. " Zu Selection Screen zurückkehren
  223.  
  224. WHEN 'BUTTON_NEXT'.
  225. CHECK GD_INDEX < lines( lt_result ). " Index Wertebereich auf Maximum beschränken
  226. GD_INDEX = GD_INDEX + 1. " Index um 1 erhöhen
  227.  
  228. WHEN 'BUTTON_PREVIOUS'.
  229. CHECK GD_INDEX > 1. " Index Wertebereich auf Minimum beschränken
  230. GD_INDEX = GD_INDEX - 1. " Index um 1 erniedrigen
  231.  
  232. ENDCASE.
  233.  
  234. ENDMODULE.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement