Advertisement
being_pravinn

Z250_Materials

Nov 22nd, 2020
1,868
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 11.24 KB | None | 0 0
  1. REPORT z241_materials.
  2.  
  3. DATA: it_materials  TYPE Z241_t_material,
  4.       it_fieldcat    TYPE slis_t_fieldcat_alv,
  5.       it_sort        TYPE slis_t_sortinfo_alv,
  6.       it_events      TYPE slis_t_event,
  7.       wa_events      TYPE slis_alv_event,
  8.       wa_layout      TYPE slis_layout_alv,
  9.       wa_order       TYPE Z241_MATERIAL.
  10.  
  11. TYPE-POOLS: slis.
  12. TABLES: Z241_MATERIAL.
  13. SELECTION-SCREEN BEGIN OF BLOCK MATERIAL
  14.   WITH FRAME TITLE text-001.
  15. SELECT-OPTIONS: s_matnr FOR Z241_MATERIAL-MATNR,
  16.                 s_descr FOR Z241_MATERIAL-DESCR,
  17.                 s_c_date FOR Z241_MATERIAL-creation_date.
  18. SELECTION-SCREEN END OF BLOCK MATERIAL.
  19.  
  20. *&---------------------------------------------------------------------*
  21. *&  INCLUDE           Z241_MATERIAL
  22. *&---------------------------------------------------------------------*
  23. START-OF-SELECTION.
  24.   PERFORM fetch_data.
  25.   PERFORM prepare_fldcat.
  26.   PERFORM prepare_layout.
  27.   PERFORM fill_events.
  28.   PERFORM call_alv.
  29. *&---------------------------------------------------------------------*
  30. *&      FORM  FETCH_DATA
  31. *&---------------------------------------------------------------------*
  32. *       TEXT
  33. *----------------------------------------------------------------------*
  34. *  -->  P1        TEXT
  35. *  <--  P2        TEXT
  36. *----------------------------------------------------------------------*
  37. FORM fetch_data .
  38.  
  39.     SELECT * FROM Z241_MATERIAL INTO CORRESPONDING FIELDS OF TABLE it_materials
  40.       WHERE MATNR IN s_matnr
  41.         AND descr IN s_descr
  42.         AND creation_date IN s_c_date.
  43.     IF sy-subrc EQ 0.
  44.       LOOP AT it_materials ASSIGNING FIELD-SYMBOL(<lwa_material>).
  45.       ENDLOOP.
  46.     ELSE.
  47.       MESSAGE 'NO DATA FOUND' TYPE 'I'.
  48.     ENDIF.
  49. ENDFORM.
  50. *&---------------------------------------------------------------------*
  51. *&      FORM  PREPARE_FLDCAT
  52. *&---------------------------------------------------------------------*
  53. *       TEXT
  54. *----------------------------------------------------------------------*
  55. *  -->  P1        TEXT
  56. *  <--  P2        TEXT
  57. *----------------------------------------------------------------------*
  58. FORM prepare_fldcat .
  59.  
  60.   CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  61.     EXPORTING
  62. *     I_PROGRAM_NAME         =     " INTERNAL TABLE DECLARATION PROGRAM
  63. *     I_INTERNAL_TABNAME     =     " OUTPUT TABLE NAME
  64.       i_structure_name       = 'Z241_S_MATERIAL'    " STRUCTURE NAME (STRUCTURE, TABLE, VIEW)
  65. *     I_CLIENT_NEVER_DISPLAY = 'X'    " HIDE CLIENT FIELDS
  66. *     I_INCLNAME             =     " DATA DECLARATION INCLUDE NAME
  67. *     I_BYPASSING_BUFFER     =     " IGNORE BUFFER WHILE READING
  68. *     I_BUFFER_ACTIVE        =     " SPECIAL BUFFERING ACTIVE
  69.     CHANGING
  70.       ct_fieldcat            = it_fieldcat    " FIELD CATALOG WITH FIELD DESCRIPTIONS
  71.     EXCEPTIONS
  72.       inconsistent_interface = 1
  73.       program_error          = 2
  74.       OTHERS                 = 3.
  75.   IF sy-subrc <> 0.
  76. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  77. *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  78.   ENDIF.
  79.  
  80.   LOOP AT it_fieldcat ASSIGNING FIELD-SYMBOL(<lwa_fcat>).
  81.     CASE <lwa_fcat>-fieldname.
  82.       WHEN 'MATNR'.
  83.         <lwa_fcat>-col_pos = 1.
  84.       WHEN 'DESCR'  .
  85.         <lwa_fcat>-col_pos = 2.
  86.       WHEN 'PRICE'.
  87.         <lwa_fcat>-col_pos = 3.
  88.       WHEN 'CURRENCY'.
  89.         <lwa_fcat>-col_pos = 4.
  90.       WHEN 'QUANTITY'.
  91.         <lwa_fcat>-col_pos = 5.
  92.         <lwa_fcat>-reptext = 'Available Quantity'.
  93.       WHEN 'UOM' OR 'BOX'.
  94.       <lwa_fcat>-no_out =
  95.       <lwa_fcat>-tech = abap_true.
  96.     ENDCASE.
  97.   ENDLOOP.
  98.  
  99.  
  100. ENDFORM.
  101. *&---------------------------------------------------------------------*
  102. *&      FORM  PREPARE_LAYOUT
  103. *&---------------------------------------------------------------------*
  104. *       TEXT
  105. *----------------------------------------------------------------------*
  106. *  -->  P1        TEXT
  107. *  <--  P2        TEXT
  108. *----------------------------------------------------------------------*
  109. FORM prepare_layout .
  110.   wa_layout-box_fieldname = 'BOX'.
  111. ENDFORM.
  112. *&---------------------------------------------------------------------*
  113. *&      FORM  FILL_EVENTS
  114. *&---------------------------------------------------------------------*
  115. *       TEXT
  116. *----------------------------------------------------------------------*
  117. *  -->  P1        TEXT
  118. *  <--  P2        TEXT
  119. *----------------------------------------------------------------------*
  120. FORM fill_events .
  121.  
  122.   wa_events-name = 'PF_STATUS_SET'.
  123.   wa_events-form = 'F_PF_STATUS_SET'.
  124.   APPEND wa_events TO it_events.
  125.   CLEAR wa_events.
  126.  
  127.   wa_events-name = 'USER_COMMAND'.
  128.   wa_events-form = 'F_USER_COMMAND'.
  129.   APPEND wa_events TO it_events.
  130.  
  131. ENDFORM.
  132. *&---------------------------------------------------------------------*
  133. *&      FORM  CALL_ALV
  134. *&---------------------------------------------------------------------*
  135. *       TEXT
  136. *----------------------------------------------------------------------*
  137. *  -->  P1        TEXT
  138. *  <--  P2        TEXT
  139. *----------------------------------------------------------------------*
  140. FORM call_alv .
  141.   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  142.     EXPORTING
  143. *     I_INTERFACE_CHECK  = SPACE    " INTERFACE CONSISTENCY CHECK LOG OUTPUT
  144. *     I_BYPASSING_BUFFER = SPACE    " IGNORE ALL BUFFERS
  145. *     I_BUFFER_ACTIVE    = SPACE    " BUFFERING ACTIVE
  146.       i_callback_program = sy-repid    " NAME OF THE CALLING PROGRAM
  147. *     I_CALLBACK_PF_STATUS_SET    = SPACE    " SET EXIT ROUTINE TO STATUS
  148. *     I_CALLBACK_USER_COMMAND     = SPACE    " EXIT ROUTINE FOR COMMAND HANDLING
  149. *     I_CALLBACK_TOP_OF_PAGE      = SPACE    " EXIT ROUTINE FOR HANDLING TOP-OF-PAGE
  150. *     I_CALLBACK_HTML_TOP_OF_PAGE = SPACE    " EXIT ROUTINE FOR HTML TOP-OF-PAGE
  151. *     I_CALLBACK_HTML_END_OF_LIST = SPACE    " EXIT ROUTINE FOR HTML END-OF-LIST
  152. *     I_STRUCTURE_NAME   =     " INTERNAL OUTPUT TABLE STRUCTURE NAME
  153. *     I_BACKGROUND_ID    =     " OBJECT ID OF WALLPAPER
  154. *     I_GRID_TITLE       =     " CONTROL TITLE
  155. *     I_GRID_SETTINGS    =     " GRID SETTINGS
  156.       is_layout          = wa_layout    " LIST LAYOUT SPECIFICATIONS
  157.       it_fieldcat        = it_fieldcat    " FIELD CATALOG WITH FIELD DESCRIPTIONS
  158. *     IT_EXCLUDING       =     " TABLE OF INACTIVE FUNCTION CODES
  159. *     IT_SPECIAL_GROUPS  =     " GROUPING FIELDS FOR COLUMN SELECTION
  160.       it_sort            = it_sort    " SORT CRITERIA FOR FIRST LIST DISPLAY
  161. *     IT_FILTER          =     " FILTER CRITERIA FOR FIRST LIST OUTPUT
  162. *     IS_SEL_HIDE        =     " SELECTION INFORMATION MODIFICATION
  163. *     I_DEFAULT          = 'X'    " INITIAL VARIANT ACTIVE/INACTIVE LOGIC
  164. *     I_SAVE             = SPACE    " VARIANTS CAN BE SAVED
  165. *     IS_VARIANT         =     " VARIANT INFORMATION
  166.       it_events          = it_events    " TABLE OF EVENTS TO PERFORM
  167. *     IT_EVENT_EXIT      =     " STANDARD FCODE EXIT REQUESTS TABLE
  168. *     IS_PRINT           =     " PRINT INFORMATION
  169. *     IS_REPREP_ID       =     " INITIALIZATION KEY FOR RE/RE INTERFACE
  170. *     I_SCREEN_START_COLUMN       = 0    " COORDINATES FOR LIST IN DIALOG BOX
  171. *     I_SCREEN_START_LINE         = 0    " COORDINATES FOR LIST IN DIALOG BOX
  172. *     I_SCREEN_END_COLUMN         = 0    " COORDINATES FOR LIST IN DIALOG BOX
  173. *     I_SCREEN_END_LINE  = 0    " COORDINATES FOR LIST IN DIALOG BOX
  174. *     I_HTML_HEIGHT_TOP  = 0    " HTML_TOP_OF_PAGE HEIGHT
  175. *     I_HTML_HEIGHT_END  = 0    " HTML_END_OF_PAGE HEIGHT
  176. *     IT_ALV_GRAPHICS    =     " PARAMETER FOR ALV GRAPHIC
  177. *     IT_HYPERLINK       =     " HYPERLINKS
  178. *     IT_ADD_FIELDCAT    =     " ADDITIONAL FIELD CATALOG OPTIONS
  179. *     IT_EXCEPT_QINFO    =
  180. *     IR_SALV_FULLSCREEN_ADAPTER  =     " ADAPTER FULLSCREEN -> TABLE
  181. *  IMPORTING
  182. *     E_EXIT_CAUSED_BY_CALLER     =     " DELETE LIST IN CALLBACK_USER_COMMAND
  183. *     ES_EXIT_CAUSED_BY_USER      =     " HOW THE USER LEFT THE LIST
  184.     TABLES
  185.       t_outtab           = it_materials    " TABLE WITH DATA TO BE DISPLAYED
  186.     EXCEPTIONS
  187.       program_error      = 1
  188.       OTHERS             = 2.
  189.   IF sy-subrc <> 0.
  190. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  191. *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  192.   ENDIF.
  193. ENDFORM.
  194. *&---------------------------------------------------------------------*
  195. *&      FORM  F_PF_STATUS_SET
  196. *&---------------------------------------------------------------------*
  197. *       TEXT
  198. *----------------------------------------------------------------------*
  199. FORM f_pf_status_set USING rt_extab TYPE slis_t_extab.
  200.  
  201.   SET PF-STATUS 'STANDARD' EXCLUDING rt_extab.
  202.  
  203. ENDFORM.                    "F_PF_STATUS_SET
  204.  
  205.  
  206. *&---------------------------------------------------------------------*
  207. *&      FORM  F_USER_COMMAND
  208. *&---------------------------------------------------------------------*
  209. *       TEXT
  210. *----------------------------------------------------------------------*
  211. *      -->R_UCOMM      TEXT
  212. *      -->RS_SELFIELD  TEXT
  213. *----------------------------------------------------------------------*
  214. FORM f_user_command USING r_ucomm TYPE sy-ucomm
  215.                           rs_selfield TYPE slis_selfield.
  216.  
  217.   DATA : it_ekko TYPE TABLE OF sval,
  218.          wa_ekko TYPE sval.
  219.  
  220.   CASE r_ucomm.
  221.  
  222.     WHEN '&IC1'.
  223. *      IF RS_SELFIELD-FIELDNAME = 'EBELN'.
  224. *        SET PARAMETER ID : 'BES' FIELD RS_SELFIELD-VALUE.
  225. *        CALL TRANSACTION 'ME23N'.
  226. *      ENDIF.
  227.     WHEN 'SAVE'.
  228.     " LOOP AT it_po INTO wa_po.
  229.     "   MOVE-CORRESPONDING wa_po TO wa_zzsiva_po_m.
  230.     "   UPDATE zzsiva_po_m FROM wa_zzsiva_po_m.
  231.     " ENDLOOP.
  232.     " rs_selfield-refresh = 'X'.
  233.  
  234.     WHEN 'ADD'.
  235.       CLEAR it_ekko.
  236.       wa_ekko-tabname = 'Z241_MATERIAL'.
  237.       wa_ekko-fieldname = 'MATNR'.
  238.       APPEND wa_ekko TO it_ekko.
  239.  
  240.       wa_ekko-tabname = 'Z241_MATERIAL'.
  241.       wa_ekko-fieldname = 'DESCR'.
  242.       APPEND wa_ekko TO it_ekko.
  243.  
  244.       wa_ekko-tabname = 'Z241_MATERIAL'.
  245.       wa_ekko-fieldname = 'PRICE'.
  246.       APPEND wa_ekko TO it_ekko.
  247.  
  248.       CALL FUNCTION 'POPUP_GET_VALUES'
  249.         EXPORTING
  250.           popup_title     = 'Enter Material Details'    " TEXT OF TITLE LINE
  251.         TABLES
  252.           fields          = it_ekko    " TABLE FIELDS, VALUES AND ATTRIBUTES
  253.         EXCEPTIONS
  254.           error_in_fields = 1
  255.           OTHERS          = 2.
  256.       IF sy-subrc = 0.
  257.         DATA lwa_material TYPE z241_material.
  258.         LOOP AT it_ekko INTO wa_ekko.
  259.           CASE wa_ekko-fieldname.
  260.             WHEN 'MATNR'.
  261.             lwa_material-MATNR = wa_ekko-value.
  262.             WHEN 'DESCR'.
  263.             lwa_material-descr = wa_ekko-value.
  264.             WHEN 'PRICE'.
  265.             lwa_material-price = wa_ekko-value.
  266.           ENDCASE.
  267.         ENDLOOP.
  268.         IF sy-subrc EQ 0.
  269.           IF line_exists( it_materials[ matnr = lwa_material-MATNR ] ).
  270.           ELSE.
  271.  
  272.           lwa_material-CURRENCY = 'USD'.
  273.           lwa_material-UOM = 1.
  274.           INSERT Z241_MATERIAL From lwa_material.
  275.          
  276.           APPEND INITIAL LINE TO it_materials ASSIGNING FIeld-SYMBOL(<lwa_material>).
  277.           <lwa_material> = CORRESPONDING #( lwa_material )
  278.         ENDIF.
  279.         rs_selfield-refresh = 'X'.
  280.  
  281.  
  282.       ENDIF.
  283.  
  284.     WHEN 'DEL'.
  285.  
  286.     LOOP AT it_materials INTO lwa_material WHERE box = 'X'.
  287.       DELETE FROM Z241_MATERIAL WHERE MATNR = lwa_material-matnr.
  288.     ENDLOOP.
  289.  
  290.     DELETE it_materials WHERE box = 'X'.
  291.     rs_selfield-refresh = 'X'.
  292.  
  293.   ENDCASE.
  294. ENDFORM.                    "F_USER_COMMAND
  295.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement