Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.13 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