Hi Michael,
*&---------------------------------------------------------------------*
*& Report ZMATREPORT
*&
*&
*&---------------------------------------------------------------------*
REPORT zmatreport NO STANDARD PAGE HEADING MESSAGE-ID zmsg_matreport.
* type pools for alv.
TYPE-POOLS: slis, vrm . "value request manager.
* MARA TABLE TYPE DEFINITION.
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr,
meins TYPE mara-meins,
matkl TYPE mara-matkl,
END OF ty_mara.
* MARD TABLE TYPE DEFINITION.
TYPES: BEGIN OF ty_mard,
matnr TYPE mard-matnr,
*lgort TYPE mard-lgort,
labst TYPE mard-labst,
END OF ty_mard.
* MAKT TABLE TYPE DEFINITION
TYPES: BEGIN OF ty_makt,
matnr TYPE makt-matnr,
maktx TYPE makt-maktx,
END OF ty_makt.
* MARC TABLE TYPE DEFINITION.
TYPES: BEGIN OF ty_marc,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
eisbe TYPE marc-eisbe,
mabst TYPE marc-mabst,
END OF ty_marc.
* eban teable data.
TYPES: BEGIN OF ty_eban,
matnr TYPE eban-matnr,
ekgrp TYPE eban-ekgrp,
menge TYPE eban-menge,
zzpriority TYPE eban-zzpriority,
END OF ty_eban.
* ALV DISPLAY TABLE DEFINITION.
TYPES: BEGIN OF ty_final,
matnr TYPE marc-matnr,
maktx TYPE makt-maktx,
werks TYPE marc-werks,
eisbe TYPE marc-eisbe,
mabst TYPE marc-mabst,
meins TYPE mara-meins,
*lgort type mard-lgort,
labst TYPE mard-labst,
matkl TYPE mara-matkl,
menge TYPE eban-menge,
ekgrp TYPE eban-ekgrp,
zzpriority TYPE eban-zzpriority,
checkbox TYPE c,
END OF ty_final.
DATA: it_marc TYPE TABLE OF ty_marc,
it_mard TYPE TABLE OF ty_mard,
it_makt TYPE TABLE OF ty_makt,
it_mara TYPE TABLE OF ty_mara,
it_eban TYPE TABLE OF ty_eban,
it_final TYPE TABLE OF ty_final WITH HEADER LINE,
wa_marc TYPE ty_marc,
wa_final TYPE ty_final,
wa_mard TYPE ty_mard,
wa_makt TYPE ty_makt,
wa_mara TYPE ty_mara,
wa_eban TYPE ty_eban.
* data declaration for ALV.
DATA:ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcatlog TYPE slis_fieldcat_alv,
lt_fieldcatlog TYPE slis_t_fieldcat_alv,
lt_layout TYPE slis_layout_alv,
it_events TYPE slis_t_event,
wa_events LIKE LINE OF it_events.
* initialization Event.
DATA: gs_status TYPE slis_status. "defining a type for the checkbox field.
*PARAMETERS: p_werks AS LISTBOX VISIBLE LENGTH 2 OBLIGATORY.
INITIALIZATION. " Initialization Event.
*perform f4_value_request.
START-OF-SELECTION. "Start of selection.
DATA : t_requisition_items LIKE bapiebanc OCCURS 0 WITH HEADER LINE,
t_return LIKE bapireturn OCCURS 0 WITH HEADER LINE .
DATA : e_number LIKE bapiebanc-preq_no.
DATA: l_matnr TYPE matnr.
*write P_werks.
SELECT-OPTIONS: p_matnr FOR l_matnr.
PARAMETERS: p_werks LIKE marc-werks OBLIGATORY. "ADDING PARAMETERS FOR SELECTION SCREEN.
* FETCHING OF DATA INTO INTERNAL TABLE FOR FURTHER PROCESSING.
SELECT matnr werks eisbe mabst
FROM marc
INTO TABLE it_marc
WHERE matnr IN p_matnr
AND werks = p_werks.
* READING FROM MARA FOR UOM
SELECT matnr meins matkl
FROM mara
INTO TABLE it_mara
WHERE matnr IN p_matnr.
* READING FROM MARD TABLE FOR PRESENT STOCK.
SELECT matnr labst
FROM mard
INTO TABLE it_mard
FOR ALL ENTRIES IN it_marc
WHERE matnr = it_marc-matnr
AND werks = it_marc-werks.
* READING FROM EBAN TABLE FOR REQUIRED DETAILS.
SELECT matnr ekgrp menge zzpriority
FROM eban
INTO TABLE it_eban
WHERE matnr IN p_matnr.
* READING FROM MAKT TABLE FRO MAT DESCRIPTION.
SELECT matnr maktx
FROM makt
INTO TABLE it_makt
WHERE matnr IN p_matnr
AND spras = sy-langu.
LOOP AT it_marc INTO wa_marc.
wa_final-matnr = wa_marc-matnr.
wa_final-eisbe = wa_marc-eisbe.
wa_final-werks = wa_marc-werks.
wa_final-mabst = wa_marc-mabst.
READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_marc-matnr.
IF sy-subrc IS INITIAL.
wa_final-meins = wa_mara-meins.
wa_final-matkl = wa_mara-matkl.
ENDIF.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_marc-matnr.
IF sy-subrc IS INITIAL.
wa_final-maktx = wa_makt-maktx.
ENDIF.
READ TABLE it_mard INTO wa_mard WITH KEY matnr = wa_marc-matnr.
IF sy-subrc IS INITIAL.
wa_final-labst = wa_mard-labst.
* wa_final-lgort = wa_mard-lgort.
ENDIF.
READ TABLE it_eban INTO wa_eban WITH KEY matnr = wa_marc-matnr.
wa_final-ekgrp = wa_eban-ekgrp.
wa_final-menge = wa_eban-menge.
wa_final-zzpriority = wa_eban-zzpriority.
APPEND wa_final TO it_final.
CLEAR wa_final.
if it_final-checkbox is not initial.
if it_final-labst < it_final-eisbe.
GS_STATUS-FLG_CHECKBOXES_ACTIVE = 'X'.
endif.
endif.
ENDLOOP. "end of loop at.
wa_events-name = slis_ev_end_of_list.
wa_events-form = 'MODIFY_LIST'.
APPEND wa_events TO it_events.
CLEAR wa_events. " CALLING EVENTS IN ORDER TO MAINTAIN LIST OF EVENTS.
PERFORM alv_output. "CALLING ALV PROGRAM.
FORM save_pr.
PERFORM get_data.
CALL FUNCTION 'BAPI_REQUISITION_CREATE'
* EXPORTING
* SKIP_ITEMS_WITH_ERROR =
IMPORTING
number = e_number
TABLES
requisition_items = t_requisition_items
*REQUISITION_ACCOUNT_ASSIGNMENT =
* REQUISITION_ITEM_TEXT =
* REQUISITION_LIMITS =
* REQUISITION_CONTRACT_LIMITS =
* REQUISITION_SERVICES =
* REQUISITION_SRV_ACCASS_VALUES =
return = t_return
* REQUISITION_SERVICES_TEXT =
* EXTENSIONIN =
* REQUISITION_ADDRDELIVERY =.
.
READ TABLE t_return WITH KEY type = 'E'.
IF sy-subrc <> 0 .
*Function called for commit
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
IF NOT e_number IS INITIAL .
WRITE:/ 'REQ NO:' , e_number , 'CREATED'.
ELSE.
LOOP AT t_return.
WRITE t_return-message.
ENDLOOP.
ENDIF.
*
ENDFORM. " save_pr form.
FORM zuser_command USING lv_okcode LIKE sy-ucomm l_selfield TYPE slis_selfield.
lv_okcode = sy-ucomm.
DATA ref1 TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref1.
CALL METHOD ref1->check_changed_data.
CASE lv_okcode.
WHEN 'PR_CREATE'.
* message 1208(00) with I 'Checkbox Selected'.
LOOP AT it_final INTO wa_final.
IF wa_final-checkbox EQ 'X'.
PERFORM save_pr.
ENDIF.
ENDLOOP.
ENDCASE.
ENDFORM.
FORM pf USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZPFSTATUS' EXCLUDING rt_extab.
ENDFORM. "pf
*&---------------------------------------------------------------------*
*& Form ALV_Output
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alv_output.
* PERFORM event_exits.
PERFORM build_fieldcat. " build field catlaog.
PERFORM build_layout. " build layout.
PERFORM alv. " ALV dialog output.
ENDFORM. " ALV Output.
*&---------------------------------------------------------------------*
*& Form build_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_fieldcat.
" fieldcatalogue for ALV dialog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '1'.
ls_fieldcatlog-fieldname = 'MATNR'.
ls_fieldcatlog-tabname = 'IT_FINAL'.
ls_fieldcatlog-seltext_m = 'Material No.'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '2'.
ls_fieldcatlog-fieldname = 'MAKTX'.
ls_fieldcatlog-tabname = 'IT_FINAL'.
ls_fieldcatlog-seltext_m = 'Material Description'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '3'.
ls_fieldcatlog-fieldname = 'WERKS'.
ls_fieldcatlog-tabname = 'IT_FINAL'.
ls_fieldcatlog-seltext_m = 'Plant'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '4'.
ls_fieldcatlog-fieldname = 'EISBE'.
ls_fieldcatlog-tabname = 'IT_FINAL'.
ls_fieldcatlog-seltext_m = 'Minimum Stock'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '5'.
ls_fieldcatlog-fieldname = 'MABST'.
ls_fieldcatlog-tabname = 'IT_FINAL'.
ls_fieldcatlog-seltext_m = 'Maximum Stock'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '6'.
ls_fieldcatlog-fieldname = 'MEINS'.
ls_fieldcatlog-tabname = 'IT_FINAL'.
ls_fieldcatlog-seltext_m = 'Unit of Measure'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '7'.
ls_fieldcatlog-fieldname = 'LABST'.
ls_fieldcatlog-tabname = 'IT_FINAL'.
ls_fieldcatlog-seltext_m = 'Present Stock'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ls_fieldcatlog-row_pos = '1'.
ls_fieldcatlog-col_pos = '8'.
ls_fieldcatlog-fieldname = 'CHECKBOX'.
ls_fieldcatlog-tabname = 'IT_FINAL'.
ls_fieldcatlog-checkbox = 'X'.
ls_fieldcatlog-input = 'X'.
ls_fieldcatlog-edit = 'X'.
ls_fieldcatlog-seltext_m = 'Generate PR'.
APPEND ls_fieldcatlog TO lt_fieldcatlog.
CLEAR ls_fieldcatlog.
ENDFORM. "End of fieldcat.
* calling alv display form for the output display.
FORM build_layout.
lt_layout-zebra = 'X'.
lt_layout-colwidth_optimize = 'X'.
ENDFORM. "build layout.
* calling of alv to display.
FORM alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_grid_title = 'MATERIAL REPORT'
is_layout = lt_layout
it_fieldcat = lt_fieldcatlog
it_events = it_events
i_callback_user_command = 'ZUSER_COMMAND' " for User-Command
i_callback_pf_status_set = 'PF' " for PF-STATUS
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " alv
FORM get_data.
* adding data to the field for the bapi.
* filling the requisition_items table before calling BAPI.
LOOP AT it_final INTO wa_final.
t_requisition_items-doc_type = 'ZPRM'.
t_requisition_items-preq_date = sy-datum.
t_requisition_items-del_datcat = '1'.
t_requisition_items-deliv_date = sy-datum + 5.
t_requisition_items-preq_name = 'AutoGenerate'.
t_requisition_items-pur_group = wa_final-ekgrp.
t_requisition_items-plant = p_werks.
IF p_werks = 1010 OR p_werks = 1011 OR p_werks = 1012 OR p_werks = 1013 OR p_werks = 1015.
t_requisition_items-store_loc = '1010'.
ELSEIF p_werks = 1021 OR p_werks = 1022 OR p_werks = 1023 OR p_werks = 1024 OR p_werks = 1025.
t_requisition_items-store_loc = '1020'.
ENDIF.
t_requisition_items-material = wa_final-matnr.
t_requisition_items-mat_grp = wa_final-matkl.
t_requisition_items-quantity = wa_final-menge.
t_requisition_items-unit = wa_final-meins.
t_requisition_items-purch_org = ' ' .
APPEND t_requisition_items.
ENDLOOP.
ENDFORM. "FOR GET_DATA.FORM f4_value_request.
* DATA: l_name TYPE vrm_id,
* li_list TYPE vrm_values,
* l_value LIKE LINE OF li_list.
*
* l_value-key = '1'.
* l_value-text = '1015'.
* APPEND l_value TO li_list.
* CLEAR l_value.
*
* l_value-key = '2'.
* l_value-text = '1025'.
* APPEND l_value TO li_list.
* CLEAR l_value.
*
* l_name = 'P_WERKS'.
** P_WERKS = '1'. "this is to set the default value of the list box.
*
* CALL FUNCTION 'VRM_SET_VALUES'
* EXPORTING
* id = l_name
* values = li_list
* EXCEPTIONS
* id_illegal_name = 1
* OTHERS = 2.
*
* IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.
*
* ENDFORM.
Thanks,
Ameya