‎2008 Jun 04 7:00 AM
Hi ,
Can any body explain me WITH AN EXAMPLE how can we use user command for generating interactive alve report.
I have already searched for this question in forums but I could not get this exactly.
‎2008 Jun 04 7:01 AM
hi
in the events table populate the events set-pf status and usercommand,
we create buttons using pf status and using user command we use to write the code
&----
*& Report ZP_ALV4
*&
&----
*&
*&
&----
REPORT zp_alv4 .
TYPE-POOLS : slis.
TABLES: kna1,vbak,vbap.
***************************************************************
TYPES DECLARATION******************************
***************************************************************
TYPES : BEGIN OF ty_kna1 ,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
land1 LIKE kna1-land1,
END OF ty_kna1.
TYPES : BEGIN OF ty_vbak,
vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
ernam LIKE vbak-ernam,
netwr LIKE vbak-netwr,
END OF ty_vbak.
TYPES : BEGIN OF ty_vbap,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
END OF ty_vbap.
***************************************************************
DATA DECLARATION********************************
***************************************************************
DATA: it_kna1 TYPE TABLE OF ty_kna1,
wa_kna1 TYPE ty_kna1,
it_vbak TYPE TABLE OF ty_vbak,
wa_vbak TYPE ty_vbak,
it_vbap TYPE TABLE OF ty_vbap,
wa_vbap TYPE ty_vbap.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv ,
wa_layout1 TYPE slis_layout_alv .
DATA : it_events TYPE slis_t_event ,
wa_events TYPE slis_alv_event,
it_events_vbak TYPE slis_t_event ,
wa_events_vbak TYPE slis_alv_event.
DATA : it_listheader TYPE slis_t_listheader,
wa_listheader TYPE slis_listheader,
it_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
DATA: i_title_kna1 TYPE lvc_title VALUE 'FIRST LIST DISPLAYED',
i_title_vbak TYPE lvc_title VALUE 'SECOND LIST DISPLAYED'.
***************************************************************
SELECTION SCREEN********************************
***************************************************************
SELECT-OPTIONS : s_kunnr FOR kna1-kunnr DEFAULT 1000 TO 1100.
***************************************************************
FOR BASIC LIST KNA1*****************************
***************************************************************
INITIALIZATION.
PERFORM getevents.
PERFORM desinlayout.
PERFORM populateevents.
PERFORM desinfieldcat.
START-OF-SELECTION.
PERFORM datafetching.
PERFORM display.
***************************************************************
DATA FETCHING FOR BASIC LIST********************
***************************************************************
FORM datafetching .
SELECT kunnr name1 land1
FROM kna1
INTO TABLE it_kna1
WHERE kunnr IN s_kunnr.
up to 30 rows.
ENDFORM. "datafetching
***************************************************************
FIELDCAT FOR 3 TABLES***************************
***************************************************************
**********************KNA1 TABLE**********************
FORM desinfieldcat .
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'KUNNR'.
wa_fieldcat-seltext_l = 'Cust Num'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_KNA1'.
wa_fieldcat-key = 'X'.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-seltext_l = 'Name'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 35.
wa_fieldcat-tabname = 'IT_KNA1'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'LAND1'.
wa_fieldcat-seltext_l = 'Country'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_KNA1'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. "desinfieldcat
**********************VBAK TABLE**********************
FORM fieldcat_vbak .
REFRESH it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-seltext_l = 'SALES DOCU'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAK'.
wa_fieldcat-key = 'X'.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'ERDAT'.
wa_fieldcat-seltext_l = 'DATE'.
wa_fieldcat-datatype = 'DATS'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAK'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'ERNAM'.
wa_fieldcat-seltext_l = 'NAME'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAK'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-seltext_l = 'VALUE'.
wa_fieldcat-datatype = 'CURR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAK'.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. "fieldcat_vbak
**********************VBAP TABLE*******************
form fieldcat_vbap.
REFRESH it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-seltext_l = 'ITEM NUM'.
wa_fieldcat-datatype = 'NUMC'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAP'.
wa_fieldcat-key = 'X'.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_l = 'MATERIAL NUM'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAP'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
endform.
***************************************************************
LAYOUT FOR 3 TABLES*****************************
***************************************************************
**********************KNA1 TABLE**********************
FORM desinlayout .
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
ENDFORM. "desinlayout
**********************VBAK TABLE**********************
FORM desinlayout1 .
wa_layout1-zebra = 'X'.
wa_layout1-colwidth_optimize = 'X'.
wa_layout1-totals_text = 'GRANDTOTAL'.
wa_layout1-subtotals_text = 'SUB TOTAL'.
ENDFORM. "desinlayout1
***************************************************************
GET EVENTS FOR 3 TABLES************************
***************************************************************
**********************KNA1 TABLE**********************
FORM getevents .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
et_events = it_events.
ENDFORM. "getevents
**********************VBAK TABLE**********************
FORM getevents_vbak .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
et_events = it_events_vbak.
ENDFORM. "getevents_vbak
***************************************************************
POPULATE EVENTS FOR 3 TABLES********************
***************************************************************
**********************KNA1 TABLE**********************
FORM populateevents .
READ TABLE it_events INTO wa_events WITH KEY name = 'TOP_OF_PAGE'.
wa_events-form = 'TOP_OF_PAGE'.
MODIFY it_events FROM wa_events TRANSPORTING form WHERE name = wa_events-name.
READ TABLE it_events INTO wa_events WITH KEY name = 'USER_COMMAND'.
wa_events-form = 'USER_COMMAND'.
MODIFY it_events FROM wa_events TRANSPORTING form WHERE name = wa_events-name.
READ TABLE it_events INTO wa_events WITH KEY name = 'PF_STATUS_SET'.
wa_events-form = 'PF_STATUS_SET'.
MODIFY it_events FROM wa_events TRANSPORTING form WHERE name = wa_events-name.
ENDFORM. "populateevents
**********************VBAK TABLE**********************
FORM populateevents_vbak .
READ TABLE it_events_vbak INTO wa_events_vbak WITH KEY name = 'TOP_OF_PAGE'.
wa_events_vbak-form = 'TOP_OF_PAGE_VBAK'.
MODIFY it_events_vbak FROM wa_events_vbak TRANSPORTING form WHERE name = wa_events_vbak-name.
READ TABLE it_events_vbak INTO wa_events_vbak WITH KEY name = 'USER_COMMAND'.
wa_events_vbak-form = 'USER_COMMAND_VBAK'.
MODIFY it_events_vbak FROM wa_events_vbak TRANSPORTING form WHERE name = wa_events_vbak-name.
READ TABLE it_events_vbak INTO wa_events_vbak WITH KEY name = 'PF_STATUS_SET'.
wa_events_vbak-form = 'PF_STATUS_SET_VBAK'.
MODIFY it_events_vbak FROM wa_events_vbak TRANSPORTING form WHERE name = wa_events_vbak-name.
ENDFORM. "populateevents_vbak
***************************************************************
EVENTS OF 3 TABLES******************************
***************************************************************
**********************KNA1 TABLE**********************
FORM top_of_page.
wa_listheader-typ = 'H'.
wa_listheader-info = 'Customer Details'.
APPEND wa_listheader TO it_listheader.
CLEAR wa_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'ENJOYSAP_LOGO'.
REFRESH it_listheader.
ENDFORM. "top_of_page
&----
*& Form user_command
&----
text
----
-->U_COMM text
-->R_SELFIELD text
----
FORM user_command
USING u_comm TYPE sy-ucomm "<----- using form user_command
r_selfield TYPE slis_selfield.
CASE u_comm.
*
WHEN 'DISPLAY'.
SELECT vbeln erdat ernam netwr
FROM vbak
INTO CORRESPONDING FIELDS OF TABLE it_vbak
WHERE kunnr = r_selfield-value.
PERFORM fieldcat_vbak.
PERFORM desinlayout1.
PERFORM getevents_vbak.
PERFORM populateevents_vbak.
PERFORM sort.
PERFORM display_vbak.
ENDCASE.
ENDFORM. "user_command
&----
*& Form pf_status_set
&----
text
----
-->RT_EXTAB text
----
FORM pf_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS'. "<------ setting the pf status
ENDFORM. "pf_status_set
********************VBAK TABLE**********************
FORM sort .
wa_sort-fieldname = 'ERNAM'.
wa_sort-tabname = 'IT_VBAK'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
ENDFORM. "sort
&----
*& Form top_of_page_vbak
&----
text
----
FORM top_of_page_vbak.
wa_listheader-typ = 'H'.
wa_listheader-info = 'Customer Details'.
APPEND wa_listheader TO it_listheader.
CLEAR wa_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'EDSLOGO'.
REFRESH it_listheader.
ENDFORM. "top_of_page_vbak
&----
*& Form PF_STATUS_SET_vbak
&----
text
----
-->RT_EXTAB1 text
----
FORM pf_status_set_vbak USING rt_extab1 TYPE slis_t_extab.
SET PF-STATUS 'ITEM'. "<------ setting the pf status
ENDFORM. "PF_STATUS_SET_vbak
&----
*& Form USER_COMMAND_VBAK
&----
text
----
-->UCOMM1 text
-->RSELFIELD1 text
----
FORM user_command_vbak USING ucomm1 TYPE sy-ucomm "<----- using form user_command
rselfield1 TYPE slis_selfield.
CASE sy-ucomm.
WHEN 'ITEM'.
SELECT posnr matnr
FROM vbap
INTO TABLE it_vbap
WHERE vbeln = rselfield1-value.
perform fieldcat_vbap.
perform display_vbap.
ENDCASE.
ENDFORM. "USER_COMMAND_VBAK
***************************************************************
DISPLAY FOR 3 TABLES****************************
***************************************************************
**********************KNA1 TABLE**********************
FORM display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP-OF-PAGE'
i_grid_title = i_title_kna1
is_layout = wa_layout
it_fieldcat = it_fieldcat
it_events = it_events
TABLES
t_outtab = it_kna1.
ENDFORM. " display
**********************VBAK TABLE**********************
FORM display_vbak .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND_VBAK'
i_callback_top_of_page = 'TOP-OF-PAGE_VBAK'
i_grid_title = i_title_vbak
is_layout = wa_layout1
it_fieldcat = it_fieldcat
it_sort = it_sort
it_events = it_events_vbak
TABLES
t_outtab = it_vbak.
ENDFORM. "display_vbak
**********************VBAP TABLE*******************
form display_vbap.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'VBAP TABLE DETAILS'
I_SELECTION = 'X'
I_ZEBRA = 'X'
I_SCREEN_START_COLUMN = 15
I_SCREEN_START_LINE = 30
I_SCREEN_END_COLUMN = 120
I_SCREEN_END_LINE = 60
i_tabname = 'IT_VBAP'
IT_FIELDCAT = it_fieldcat
I_CALLBACK_PROGRAM = sy-repid
tables
t_outtab = it_vbap.
endform.
regards
prasanth
‎2008 Jun 04 7:01 AM
hi
in the events table populate the events set-pf status and usercommand,
we create buttons using pf status and using user command we use to write the code
&----
*& Report ZP_ALV4
*&
&----
*&
*&
&----
REPORT zp_alv4 .
TYPE-POOLS : slis.
TABLES: kna1,vbak,vbap.
***************************************************************
TYPES DECLARATION******************************
***************************************************************
TYPES : BEGIN OF ty_kna1 ,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
land1 LIKE kna1-land1,
END OF ty_kna1.
TYPES : BEGIN OF ty_vbak,
vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
ernam LIKE vbak-ernam,
netwr LIKE vbak-netwr,
END OF ty_vbak.
TYPES : BEGIN OF ty_vbap,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
END OF ty_vbap.
***************************************************************
DATA DECLARATION********************************
***************************************************************
DATA: it_kna1 TYPE TABLE OF ty_kna1,
wa_kna1 TYPE ty_kna1,
it_vbak TYPE TABLE OF ty_vbak,
wa_vbak TYPE ty_vbak,
it_vbap TYPE TABLE OF ty_vbap,
wa_vbap TYPE ty_vbap.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv ,
wa_layout1 TYPE slis_layout_alv .
DATA : it_events TYPE slis_t_event ,
wa_events TYPE slis_alv_event,
it_events_vbak TYPE slis_t_event ,
wa_events_vbak TYPE slis_alv_event.
DATA : it_listheader TYPE slis_t_listheader,
wa_listheader TYPE slis_listheader,
it_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
DATA: i_title_kna1 TYPE lvc_title VALUE 'FIRST LIST DISPLAYED',
i_title_vbak TYPE lvc_title VALUE 'SECOND LIST DISPLAYED'.
***************************************************************
SELECTION SCREEN********************************
***************************************************************
SELECT-OPTIONS : s_kunnr FOR kna1-kunnr DEFAULT 1000 TO 1100.
***************************************************************
FOR BASIC LIST KNA1*****************************
***************************************************************
INITIALIZATION.
PERFORM getevents.
PERFORM desinlayout.
PERFORM populateevents.
PERFORM desinfieldcat.
START-OF-SELECTION.
PERFORM datafetching.
PERFORM display.
***************************************************************
DATA FETCHING FOR BASIC LIST********************
***************************************************************
FORM datafetching .
SELECT kunnr name1 land1
FROM kna1
INTO TABLE it_kna1
WHERE kunnr IN s_kunnr.
up to 30 rows.
ENDFORM. "datafetching
***************************************************************
FIELDCAT FOR 3 TABLES***************************
***************************************************************
**********************KNA1 TABLE**********************
FORM desinfieldcat .
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'KUNNR'.
wa_fieldcat-seltext_l = 'Cust Num'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_KNA1'.
wa_fieldcat-key = 'X'.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-seltext_l = 'Name'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 35.
wa_fieldcat-tabname = 'IT_KNA1'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'LAND1'.
wa_fieldcat-seltext_l = 'Country'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_KNA1'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. "desinfieldcat
**********************VBAK TABLE**********************
FORM fieldcat_vbak .
REFRESH it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-seltext_l = 'SALES DOCU'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAK'.
wa_fieldcat-key = 'X'.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'ERDAT'.
wa_fieldcat-seltext_l = 'DATE'.
wa_fieldcat-datatype = 'DATS'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAK'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'ERNAM'.
wa_fieldcat-seltext_l = 'NAME'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAK'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-seltext_l = 'VALUE'.
wa_fieldcat-datatype = 'CURR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAK'.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. "fieldcat_vbak
**********************VBAP TABLE*******************
form fieldcat_vbap.
REFRESH it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-seltext_l = 'ITEM NUM'.
wa_fieldcat-datatype = 'NUMC'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAP'.
wa_fieldcat-key = 'X'.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_l = 'MATERIAL NUM'.
wa_fieldcat-datatype = 'CHAR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-tabname = 'IT_VBAP'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
endform.
***************************************************************
LAYOUT FOR 3 TABLES*****************************
***************************************************************
**********************KNA1 TABLE**********************
FORM desinlayout .
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
ENDFORM. "desinlayout
**********************VBAK TABLE**********************
FORM desinlayout1 .
wa_layout1-zebra = 'X'.
wa_layout1-colwidth_optimize = 'X'.
wa_layout1-totals_text = 'GRANDTOTAL'.
wa_layout1-subtotals_text = 'SUB TOTAL'.
ENDFORM. "desinlayout1
***************************************************************
GET EVENTS FOR 3 TABLES************************
***************************************************************
**********************KNA1 TABLE**********************
FORM getevents .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
et_events = it_events.
ENDFORM. "getevents
**********************VBAK TABLE**********************
FORM getevents_vbak .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
et_events = it_events_vbak.
ENDFORM. "getevents_vbak
***************************************************************
POPULATE EVENTS FOR 3 TABLES********************
***************************************************************
**********************KNA1 TABLE**********************
FORM populateevents .
READ TABLE it_events INTO wa_events WITH KEY name = 'TOP_OF_PAGE'.
wa_events-form = 'TOP_OF_PAGE'.
MODIFY it_events FROM wa_events TRANSPORTING form WHERE name = wa_events-name.
READ TABLE it_events INTO wa_events WITH KEY name = 'USER_COMMAND'.
wa_events-form = 'USER_COMMAND'.
MODIFY it_events FROM wa_events TRANSPORTING form WHERE name = wa_events-name.
READ TABLE it_events INTO wa_events WITH KEY name = 'PF_STATUS_SET'.
wa_events-form = 'PF_STATUS_SET'.
MODIFY it_events FROM wa_events TRANSPORTING form WHERE name = wa_events-name.
ENDFORM. "populateevents
**********************VBAK TABLE**********************
FORM populateevents_vbak .
READ TABLE it_events_vbak INTO wa_events_vbak WITH KEY name = 'TOP_OF_PAGE'.
wa_events_vbak-form = 'TOP_OF_PAGE_VBAK'.
MODIFY it_events_vbak FROM wa_events_vbak TRANSPORTING form WHERE name = wa_events_vbak-name.
READ TABLE it_events_vbak INTO wa_events_vbak WITH KEY name = 'USER_COMMAND'.
wa_events_vbak-form = 'USER_COMMAND_VBAK'.
MODIFY it_events_vbak FROM wa_events_vbak TRANSPORTING form WHERE name = wa_events_vbak-name.
READ TABLE it_events_vbak INTO wa_events_vbak WITH KEY name = 'PF_STATUS_SET'.
wa_events_vbak-form = 'PF_STATUS_SET_VBAK'.
MODIFY it_events_vbak FROM wa_events_vbak TRANSPORTING form WHERE name = wa_events_vbak-name.
ENDFORM. "populateevents_vbak
***************************************************************
EVENTS OF 3 TABLES******************************
***************************************************************
**********************KNA1 TABLE**********************
FORM top_of_page.
wa_listheader-typ = 'H'.
wa_listheader-info = 'Customer Details'.
APPEND wa_listheader TO it_listheader.
CLEAR wa_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'ENJOYSAP_LOGO'.
REFRESH it_listheader.
ENDFORM. "top_of_page
&----
*& Form user_command
&----
text
----
-->U_COMM text
-->R_SELFIELD text
----
FORM user_command
USING u_comm TYPE sy-ucomm "<----- using form user_command
r_selfield TYPE slis_selfield.
CASE u_comm.
*
WHEN 'DISPLAY'.
SELECT vbeln erdat ernam netwr
FROM vbak
INTO CORRESPONDING FIELDS OF TABLE it_vbak
WHERE kunnr = r_selfield-value.
PERFORM fieldcat_vbak.
PERFORM desinlayout1.
PERFORM getevents_vbak.
PERFORM populateevents_vbak.
PERFORM sort.
PERFORM display_vbak.
ENDCASE.
ENDFORM. "user_command
&----
*& Form pf_status_set
&----
text
----
-->RT_EXTAB text
----
FORM pf_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS'. "<------ setting the pf status
ENDFORM. "pf_status_set
********************VBAK TABLE**********************
FORM sort .
wa_sort-fieldname = 'ERNAM'.
wa_sort-tabname = 'IT_VBAK'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
ENDFORM. "sort
&----
*& Form top_of_page_vbak
&----
text
----
FORM top_of_page_vbak.
wa_listheader-typ = 'H'.
wa_listheader-info = 'Customer Details'.
APPEND wa_listheader TO it_listheader.
CLEAR wa_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'EDSLOGO'.
REFRESH it_listheader.
ENDFORM. "top_of_page_vbak
&----
*& Form PF_STATUS_SET_vbak
&----
text
----
-->RT_EXTAB1 text
----
FORM pf_status_set_vbak USING rt_extab1 TYPE slis_t_extab.
SET PF-STATUS 'ITEM'. "<------ setting the pf status
ENDFORM. "PF_STATUS_SET_vbak
&----
*& Form USER_COMMAND_VBAK
&----
text
----
-->UCOMM1 text
-->RSELFIELD1 text
----
FORM user_command_vbak USING ucomm1 TYPE sy-ucomm "<----- using form user_command
rselfield1 TYPE slis_selfield.
CASE sy-ucomm.
WHEN 'ITEM'.
SELECT posnr matnr
FROM vbap
INTO TABLE it_vbap
WHERE vbeln = rselfield1-value.
perform fieldcat_vbap.
perform display_vbap.
ENDCASE.
ENDFORM. "USER_COMMAND_VBAK
***************************************************************
DISPLAY FOR 3 TABLES****************************
***************************************************************
**********************KNA1 TABLE**********************
FORM display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP-OF-PAGE'
i_grid_title = i_title_kna1
is_layout = wa_layout
it_fieldcat = it_fieldcat
it_events = it_events
TABLES
t_outtab = it_kna1.
ENDFORM. " display
**********************VBAK TABLE**********************
FORM display_vbak .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND_VBAK'
i_callback_top_of_page = 'TOP-OF-PAGE_VBAK'
i_grid_title = i_title_vbak
is_layout = wa_layout1
it_fieldcat = it_fieldcat
it_sort = it_sort
it_events = it_events_vbak
TABLES
t_outtab = it_vbak.
ENDFORM. "display_vbak
**********************VBAP TABLE*******************
form display_vbap.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'VBAP TABLE DETAILS'
I_SELECTION = 'X'
I_ZEBRA = 'X'
I_SCREEN_START_COLUMN = 15
I_SCREEN_START_LINE = 30
I_SCREEN_END_COLUMN = 120
I_SCREEN_END_LINE = 60
i_tabname = 'IT_VBAP'
IT_FIELDCAT = it_fieldcat
I_CALLBACK_PROGRAM = sy-repid
tables
t_outtab = it_vbap.
endform.
regards
prasanth
‎2008 Jun 04 7:03 AM
hi,
The sample code is as below:
REPORT zotc_plant_stock MESSAGE-ID zmessage.
TABLES:mard,marc,vbbe. "#EC NEEDED
TYPE-POOLS:slis.
*sructure used to validate data entered on selection screen
TYPES:BEGIN OF x_struct,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
END OF x_struct.
*structure for basic list
TYPES: BEGIN OF x_struct1,
matnr TYPE mard-matnr, "material number
werks TYPE mard-werks, "plant
lgort TYPE mard-lgort, "storage location
labst TYPE mard-labst, "Valuated Unrestricted-Use Stock(Stock)
stprs TYPE mbew-stprs, "Standard price(value/unit)
salk3 TYPE mbew-salk3, "Value of Total Valuated Stock
vbtyp TYPE vbbe-vbtyp, "SD document category
sale_q TYPE vbbe-omeng, "Open orders
dele_q TYPE vbbe-omeng, "Open Deliveries
free_q TYPE vbbe-omeng, "Open free orders
schd_q TYPE vbbe-omeng, "Open scheduling agreement
END OF x_struct1.
*structure for displaying secondary list
TYPES:BEGIN OF x_struct2,
matnr TYPE vbbe-matnr, "material number
werks TYPE vbbe-werks, "plant
lgort TYPE vbbe-lgort, "storage location
vbeln TYPE vbbe-vbeln, "Sales Document
posnr TYPE vbbe-posnr, "Sales Document Item
etenr TYPE vbbe-etenr, "Delivery Schedule Line Number
vbtyp TYPE vbbe-vbtyp, "SD document category
omeng TYPE vbbe-omeng, "Open Qty in Stockkeeping Units for Transfer of Reqmts to MRP
vmeng TYPE vbbe-vmeng, "Confirmed quantity for availability check in SKU
auart TYPE vbbe-auart, "Sales Document Type
kunnr TYPE vbbe-kunnr, "Sold-to party
END OF x_struct2.
*Structure for Price control indicator and Standard price
TYPES:BEGIN OF x_struct3,
matnr TYPE mbew-matnr, "material number
bwkey TYPE mbew-bwkey, "Valuation Area
vprsv TYPE mbew-vprsv, "Price control indicator
stprs TYPE mbew-stprs, "Standard price
VERPR type mbew-VERPR, "Moving Average Price/Periodic Unit Price
END OF x_struct3.
*structure for summing open orders/deliveries/free orders/sdch agrmnts
TYPES: BEGIN OF x_struct4,
matnr TYPE vbbe-matnr, "material number
werks TYPE vbbe-werks, "plant
omeng TYPE vbbe-omeng, "Open Qty in Stockkeeping Units for Transfer of Reqmts to MRP
vbtyp TYPE vbbe-vbtyp, "SD document category
END OF x_struct4.
*variable to validate the entered data
DATA:wa_itab TYPE x_struct.
*internal table for basic list
DATA:it_basic TYPE STANDARD TABLE OF x_struct1.
DATA:wa_basic TYPE x_struct1.
*Internal table for Price control indicator and Standard price
DATA:it_val TYPE STANDARD TABLE OF x_struct3.
DATA:wa_val TYPE x_struct3.
*declaration for field catalog(basic list)
DATA:it_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv.
DATA:wa_fieldcat TYPE slis_fieldcat_alv.
*declaration for field catalog(Detailed list)
DATA:it_fieldcat1 TYPE STANDARD TABLE OF slis_fieldcat_alv.
DATA:wa_fieldcat1 TYPE slis_fieldcat_alv.
*work area for layout
DATA:wa_layout TYPE slis_layout_alv.
DATA:r_ucomm TYPE sy-ucomm. "#EC NEEDED
DATA:rs_selfield TYPE slis_selfield. "#EC NEEDED
*variable to capture table index
DATA:mytabix TYPE sy-tabix.
*internal table for detailed list
DATA:it_vbbe2 TYPE STANDARD TABLE OF x_struct2,
wa_vbbe2 TYPE x_struct2.
*internal table for selecting open orders/deliveries/free orders/scdh agreements
DATA : it_vbbe TYPE STANDARD TABLE OF x_struct2,
wa_vbbe TYPE x_struct2,
wa_vbbe1 TYPE x_struct2.
*variable which calculates the total open orders/deliveries/free orders/scdh agreements
DATA:sum TYPE i VALUE '0'.
*validate the data entered on selection screen
AT SELECTION-SCREEN.
SELECT SINGLE matnr werks
FROM marc INTO wa_itab
WHERE matnr IN s_matnr
AND werks IN s_werks. "#EC *
IF sy-subrc <> 0.
MESSAGE e000 WITH s_matnr-low s_werks-low.
ENDIF.
START-OF-SELECTION.
*subroutine for select queries
PERFORM select.
*subroutine which modifies internal table according to SD document catagory
*and Price control indicator(mbew-stprs)and total value(mbew-salk3)
PERFORM total.
*sort the internal table according to material no,plant,storage location and SD document category
SORT it_vbbe BY matnr werks lgort vbtyp.
*subroutine to calculate the total open orders/deliveries/free orders/scdh agreements
PERFORM calculate.
*Display basic list
PERFORM bld_fcat1.
PERFORM bld_layout.
PERFORM basic_disp.
&----
*& Form USER_COMMAND
&----
FORM user_command USING r_ucomm TYPE sy-ucomm rs_selfield TYPE slis_selfield."#EC NEEDED "#EC CALLED
READ TABLE it_basic INTO wa_basic INDEX rs_selfield-tabindex.
CASE rs_selfield-fieldname.
*Display details of corresponding open orders
WHEN 'SALE_Q'.
CLEAR it_vbbe2.
REFRESH it_vbbe2.
LOOP AT it_vbbe INTO wa_vbbe WHERE vbtyp = 'C'
AND matnr = wa_basic-matnr
AND werks = wa_basic-werks.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_vbbe TO wa_vbbe2.
APPEND wa_vbbe2 TO it_vbbe2.
CLEAR wa_vbbe2.
ENDIF.
ENDLOOP.
IF wa_basic-sale_q = 0.
MESSAGE e001.
ENDIF.
PERFORM bld_fcat_ord1.
PERFORM bld_fcat_gen.
PERFORM detail_disp.
*Display details of corresponding open deliveries
WHEN 'DELE_Q'.
CLEAR it_vbbe2.
REFRESH it_vbbe2.
LOOP AT it_vbbe INTO wa_vbbe WHERE vbtyp = 'J'
AND matnr = wa_basic-matnr
AND werks = wa_basic-werks.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_vbbe TO wa_vbbe2.
APPEND wa_vbbe2 TO it_vbbe2.
CLEAR wa_vbbe2.
ENDIF.
ENDLOOP.
IF wa_basic-dele_q = 0.
MESSAGE e002.
ENDIF.
PERFORM bld_fcat_ord2.
PERFORM bld_fcat_gen.
PERFORM detail_disp.
*Display details of corresponding open free orders
WHEN 'FREE_Q'.
CLEAR it_vbbe2.
REFRESH it_vbbe2.
LOOP AT it_vbbe INTO wa_vbbe WHERE vbtyp = 'I'
AND matnr = wa_basic-matnr
AND werks = wa_basic-werks.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_vbbe TO wa_vbbe2.
APPEND wa_vbbe2 TO it_vbbe2.
CLEAR wa_vbbe2.
ENDIF.
ENDLOOP.
IF wa_basic-free_q = 0.
MESSAGE e003.
ENDIF.
PERFORM bld_fcat_ord3.
PERFORM bld_fcat_gen.
PERFORM detail_disp.
*Display details of corresponding open scd agreements
WHEN 'SCHD_Q'.
CLEAR it_vbbe2.
REFRESH it_vbbe2.
LOOP AT it_vbbe INTO wa_vbbe WHERE vbtyp = 'E'
AND matnr = wa_basic-matnr
AND werks = wa_basic-werks.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_vbbe TO wa_vbbe2.
APPEND wa_vbbe2 TO it_vbbe2.
CLEAR wa_vbbe2.
ENDIF.
ENDLOOP.
IF wa_basic-schd_q = 0.
MESSAGE e004.
ENDIF.
PERFORM bld_fcat_ord4.
PERFORM bld_fcat_gen.
PERFORM detail_disp.
ENDCASE.
ENDFORM. "USER_COMMAND
&----
*& Form bld_fcat1
&----
FORM bld_fcat1 .
*Fill the fieldcatalog for basic list
*Material number
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-002.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*Plant
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-003.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*storage location
wa_fieldcat-fieldname = 'LGORT'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-004.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*Stock
wa_fieldcat-fieldname = 'LABST'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-005.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*Value/unit
wa_fieldcat-fieldname = 'STPRS'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-006.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*Total Value
wa_fieldcat-fieldname = 'SALK3'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-007.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*Open orders
wa_fieldcat-fieldname = 'SALE_Q'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-008.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*Open deliveries
wa_fieldcat-fieldname = 'DELE_Q'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-009.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*Open free orders
wa_fieldcat-fieldname = 'FREE_Q'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-010.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*Open sched.Agreements
wa_fieldcat-fieldname = 'SCHD_Q'.
wa_fieldcat-tabname = 'it_basic'.
wa_fieldcat-seltext_m = text-011.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " bld_fcat1
&----
*& Form bld_layout
&----
FORM bld_layout .
*Layout
wa_layout-colwidth_optimize = 'X'.
wa_layout-zebra = 'X'.
ENDFORM. " bld_layout
&----
*& Form basic_disp
&----
*subroutine which displays basic list
FORM basic_disp .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
i_grid_title = text-020
is_layout = wa_layout
it_fieldcat = it_fieldcat[]
TABLES
t_outtab = it_basic
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. " basic_disp
&----
*& Form bld_fcat_ord1
&----
text
----
--> p1 text
<-- p2 text
----
FORM bld_fcat_ord1.
*Fill the fieldcatalog for details of open orders
refresh it_fieldcat1.
*Sales Document
wa_fieldcat1-fieldname = 'VBELN'.
wa_fieldcat1-tabname = 'it_vbbe2'.
wa_fieldcat1-seltext_m = text-012.
APPEND wa_fieldcat1 TO it_fieldcat1.
CLEAR wa_fieldcat1.
ENDFORM. " bld_fcat_ord
&----
*& Form bld_fcat_gen
&----
FORM bld_fcat_gen .
*fill the fieldcatalog for other fields.
*Sales Document Item
wa_fieldcat1-fieldname = 'POSNR'.
wa_fieldcat1-tabname = 'it_vbbe2'.
wa_fieldcat1-seltext_m = text-013.
APPEND wa_fieldcat1 TO it_fieldcat1.
CLEAR wa_fieldcat1.
*Delivery Schedule Line Number
wa_fieldcat1-fieldname = 'ETENR'.
wa_fieldcat1-tabname = 'it_vbbe2'.
wa_fieldcat1-seltext_m = text-014.
APPEND wa_fieldcat1 TO it_fieldcat1.
CLEAR wa_fieldcat1.
*Material number
wa_fieldcat1-fieldname = 'MATNR'.
wa_fieldcat1-tabname = 'it_vbbe2'.
wa_fieldcat1-seltext_m = text-002.
APPEND wa_fieldcat1 TO it_fieldcat1.
CLEAR wa_fieldcat1.
*Open Qty
wa_fieldcat1-fieldname = 'OMENG'.
wa_fieldcat1-tabname = 'it_vbbe2'.
wa_fieldcat1-seltext_m = text-015.
wa_fieldcat1-do_sum = 'X'.
APPEND wa_fieldcat1 TO it_fieldcat1.
CLEAR wa_fieldcat1.
*Confirmed Qty
wa_fieldcat1-fieldname = 'VMENG'.
wa_fieldcat1-tabname = 'it_vbbe2'.
wa_fieldcat1-seltext_m = text-016.
wa_fieldcat1-do_sum = 'X'.
APPEND wa_fieldcat1 TO it_fieldcat1.
CLEAR wa_fieldcat1.
ENDFORM. " bld_fcat_gen
&----
*& Form detail_disp
&----
FORM detail_disp .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_grid_title = text-021
is_layout = wa_layout
it_fieldcat = it_fieldcat1[]
TABLES
t_outtab = it_vbbe2
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. " detail_disp
&----
*& Form bld_fcat_ord2
&----
FORM bld_fcat_ord2 . "#EC CALLED
refresh it_fieldcat1.
*open delivery
wa_fieldcat1-fieldname = 'VBELN'.
wa_fieldcat1-tabname = 'it_vbbe2'.
wa_fieldcat1-seltext_m = text-017.
APPEND wa_fieldcat1 TO it_fieldcat1.
CLEAR wa_fieldcat1.
ENDFORM. " bld_fcat_ord2
&----
*& Form bld_fcat_ord3
&----
FORM bld_fcat_ord3 .
refresh it_fieldcat1.
*Free orders
wa_fieldcat1-fieldname = 'VBELN'.
wa_fieldcat1-tabname = 'it_vbbe2'.
wa_fieldcat1-seltext_m = text-018.
APPEND wa_fieldcat1 TO it_fieldcat1.
CLEAR wa_fieldcat1.
ENDFORM. " bld_fcat_ord3
&----
*& Form bld_fcat_ord4
&----
text
----
--> p1 text
<-- p2 text
----
FORM bld_fcat_ord4 .
refresh it_fieldcat1.
*schd agreements
wa_fieldcat1-fieldname = 'VBELN'.
wa_fieldcat1-tabname = 'it_vbbe2'.
wa_fieldcat1-seltext_m = text-019.
APPEND wa_fieldcat1 TO it_fieldcat1.
CLEAR wa_fieldcat1.
ENDFORM. " bld_fcat_ord4
&----
*& Form select
&----
subroutine for select queries
----
FORM select .
*fill the internal table it_basic(basic list)
SELECT matnr werks lgort labst FROM mard
INTO TABLE it_basic
WHERE matnr IN s_matnr
AND werks IN s_werks
AND lgort IN s_lgort.
*fill internal table it_val
IF it_basic[] IS NOT INITIAL.
SELECT matnr bwkey vprsv stprs VERPR FROM mbew INTO TABLE it_val
FOR ALL ENTRIES IN it_basic
WHERE bwkey = it_basic-werks
AND matnr = it_basic-matnr.
*Fill the entries for open orders/deliveries/free orders/scdh agreements
SELECT matnr werks lgort vbeln posnr etenr vbtyp omeng vmeng auart kunnr
FROM vbbe INTO TABLE it_vbbe
FOR ALL ENTRIES IN it_basic
WHERE matnr = it_basic-matnr
AND werks = it_basic-werks.
ENDIF.
ENDFORM. " select
&----
*& Form total
&----
modify internal table it_basic according to SD document category,
Price control indicator(mbew-stprs)and total value(mbew-salk3)
----
FORM total .
LOOP AT it_basic INTO wa_basic.
READ TABLE it_vbbe INTO wa_vbbe WITH KEY matnr = wa_basic-matnr
werks = wa_basic-werks.
IF sy-subrc = 0.
wa_basic-vbtyp = wa_vbbe-vbtyp.
ENDIF.
READ TABLE it_val INTO wa_val WITH KEY matnr = wa_basic-matnr
bwkey = wa_basic-werks
vprsv = 'S'.
IF sy-subrc = 0.
wa_basic-stprs = wa_val-stprs.
ELSE.
READ TABLE it_val INTO wa_val WITH KEY matnr = wa_basic-matnr
bwkey = wa_basic-werks
vprsv = 'V'.
IF sy-subrc = 0.
wa_basic-stprs = wa_val-VERPR.
ENDIF.
ENDIF.
wa_basic-salk3 = wa_basic-stprs * wa_basic-labst.
MODIFY it_basic FROM wa_basic TRANSPORTING vbtyp stprs salk3.
CLEAR wa_basic.
ENDLOOP.
ENDFORM. " total
&----
*& Form calculate
&----
calculate the total open orders/deliveries/free orders/scdh agreements
----
FORM calculate .
LOOP AT it_basic INTO wa_basic.
READ TABLE it_vbbe INTO wa_vbbe1 WITH KEY matnr = wa_basic-matnr
werks = wa_basic-werks
BINARY SEARCH .
mytabix = sy-tabix.
*calculate total open orders
LOOP AT it_vbbe INTO wa_vbbe FROM mytabix WHERE vbtyp = 'C'
AND matnr = wa_basic-matnr
AND werks = wa_basic-werks.
IF sy-subrc = 0.
IF wa_vbbe-matnr = wa_vbbe1-matnr
AND wa_vbbe-werks = wa_vbbe1-werks.
sum = sum + wa_vbbe-omeng.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
wa_basic-sale_q = sum.
MODIFY it_basic FROM wa_basic TRANSPORTING sale_q.
CLEAR sum.
CLEAR wa_vbbe.
*calculate total open Deliveries
LOOP AT it_vbbe INTO wa_vbbe FROM mytabix WHERE vbtyp = 'J'
AND matnr = wa_basic-matnr
AND werks = wa_basic-werks.
IF sy-subrc = 0.
IF wa_vbbe-matnr = wa_vbbe1-matnr
AND wa_vbbe-werks = wa_vbbe1-werks.
sum = sum + wa_vbbe-omeng.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
wa_basic-dele_q = sum.
MODIFY it_basic FROM wa_basic TRANSPORTING dele_q.
CLEAR sum.
CLEAR wa_vbbe.
*calculate total open free of charge orders
LOOP AT it_vbbe INTO wa_vbbe FROM mytabix WHERE vbtyp = 'I'
AND matnr = wa_basic-matnr
AND werks = wa_basic-werks.
IF sy-subrc = 0.
IF wa_vbbe-matnr = wa_vbbe1-matnr
AND wa_vbbe-werks = wa_vbbe1-werks.
sum = sum + wa_vbbe-omeng.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
wa_basic-free_q = sum.
MODIFY it_basic FROM wa_basic TRANSPORTING free_q.
CLEAR sum.
CLEAR wa_vbbe.
**calculate total open scheduling agreement
LOOP AT it_vbbe INTO wa_vbbe FROM mytabix WHERE vbtyp = 'E'
AND matnr = wa_basic-matnr
AND werks = wa_basic-werks.
IF sy-subrc = 0.
IF wa_vbbe-matnr = wa_vbbe1-matnr
AND wa_vbbe-werks = wa_vbbe1-werks.
sum = sum + wa_vbbe-omeng.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
wa_basic-schd_q = sum.
MODIFY it_basic FROM wa_basic TRANSPORTING schd_q.
CLEAR sum.
CLEAR wa_vbbe.
ENDLOOP.
ENDFORM. " calculate
‎2008 Jun 04 7:03 AM
hi,
&----
*& Report ZALV4
*&
&----
*&
*&
&----
REPORT zalv4.
tables declaration
TABLES:kna1,vbak,vbap.
TYPE-POOLS: slis.
structures declaration
TYPES:BEGIN OF ty_kna1,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
ort01 LIKE kna1-ort01,
END OF ty_kna1 .
TYPES:BEGIN OF ty_vbak,
kunnr TYPE vbak-kunnr,
vbeln TYPE vbak-vbeln,
ernam TYPE vbak-ernam,
netwr TYPE vbak-netwr,
END OF ty_vbak.
TYPES: BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
netwr TYPE vbap-netwr,
END OF ty_vbap.
internal table declaration
DATA: it_kna1 TYPE TABLE OF ty_kna1 WITH HEADER LINE,
it_vbak TYPE TABLE OF ty_vbak WITH HEADER LINE,
it_vbap TYPE TABLE OF ty_vbap WITH HEADER LINE.
internal table declaration for field catlog
DATA: it_fieldtab TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
it_fieldtab1 TYPE slis_t_fieldcat_alv,
wa_fieldcat1 TYPE slis_fieldcat_alv.
internal table declaration for listheader
DATA: it_listheader TYPE slis_t_listheader,
wa_listheader TYPE slis_listheader.
internal table declaration for events
DATA:it_event TYPE slis_t_event,
wa_event TYPE slis_alv_event,
it_event1 TYPE slis_t_event,
wa_event1 TYPE slis_alv_event.
DATA: wa_layout TYPE slis_layout_alv,
wa_layout1 TYPE slis_layout_alv,
it_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
data declaration for table headings
DATA:i_title1 TYPE lvc_title VALUE 'BASIC LIST'.
DATA:i_title2 TYPE lvc_title VALUE 'FIRST SECONDARY LIST'.
SELECT-OPTIONS:s_kunnr FOR kna1-kunnr DEFAULT 1000 TO 2000.
INITIALIZATION.
PERFORM fieldcatlog.
PERFORM event .
PERFORM populate_event.
*perform layout.
START-OF-SELECTION.
PERFORM fetchdata.
PERFORM displaydata.
&----
*& Form fieldcatlog
&----
text
----
--> p1 text
<-- p2 text
----
FORM fieldcatlog .
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_KNA1'.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-fieldname = 'KUNNR'.
wa_fieldcat-key = 'X'.
wa_fieldcat-hotspot = 'X'.
wa_fieldcat-seltext_s = 'no'.
wa_fieldcat-seltext_m = 'cust.No'.
wa_fieldcat-seltext_l = 'customer.No'.
APPEND wa_fieldcat TO it_fieldtab.
CLEAR wa_fieldcat .
wa_fieldcat-col_pos = '2'.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-key = 'X'.
wa_fieldcat-tabname = 'IT_KNA1'.
wa_fieldcat-seltext_s = 'name'.
wa_fieldcat-seltext_m = 'name'.
wa_fieldcat-seltext_l = 'name'.
APPEND wa_fieldcat TO it_fieldtab.
CLEAR wa_fieldcat .
wa_fieldcat-col_pos = '3'.
wa_fieldcat-fieldname = 'ORT01'.
wa_fieldcat-key = 'X'.
wa_fieldcat-tabname = 'IT_KNA1'.
wa_fieldcat-seltext_s = 'c.city'.
wa_fieldcat-seltext_m = 'cust.city'.
wa_fieldcat-seltext_l = 'customer.city'.
wa_fieldcat-edit = 'X'.
APPEND wa_fieldcat TO it_fieldtab.
CLEAR wa_fieldcat .
ENDFORM. " fieldcatlog
&----
*& Form fetchdata
&----
text
----
--> p1 text
<-- p2 text
----
FORM fetchdata .
SELECT kunnr name1 ort01 FROM kna1 INTO TABLE it_kna1
WHERE kunnr IN s_kunnr.
ENDFORM. " fetchdata
&----
*& Form displaydata
&----
text
----
--> p1 text
<-- p2 text
----
FORM displaydata .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ''
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
i_grid_title = i_title1
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = it_fieldtab
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
it_events = it_event
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_kna1
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. " displaydata
&----
*& Form event
&----
text
----
--> p1 text
<-- p2 text
----
FORM event .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
et_events = it_event
EXCEPTIONS
LIST_TYPE_WRONG = 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. " event
&----
*& Form populate_event
&----
text
----
--> p1 text
<-- p2 text
----
FORM populate_event .
READ TABLE it_event INTO wa_event WITH KEY name = 'TOP_OF_PAGE'.
wa_event-form = 'TOP_OF_PAGE'.
MODIFY it_event FROM wa_event TRANSPORTING form WHERE name = wa_event-name.
READ TABLE it_event INTO wa_event WITH KEY name = 'PF_STATUS_SET'.
wa_event-form = 'PF_STATUS_SET'.
MODIFY it_event FROM wa_event TRANSPORTING form WHERE name = wa_event-name.
READ TABLE it_event INTO wa_event WITH KEY name = 'USER_COMMAND'.
wa_event-form = 'USER_COMMAND'.
MODIFY it_event FROM wa_event TRANSPORTING form WHERE name = wa_event-name.
ENDFORM. " populate_event
&----
*& Form TOP_OF_PAGE
&----
text
----
FORM top_of_page.
CLEAR wa_listheader.
wa_listheader-typ = 'H'.
*wa_listheader-key = 'CUSTDETAIL'.
wa_listheader-info = 'CUSTMERDETAILS'.
APPEND wa_listheader TO it_listheader.
CLEAR wa_listheader.
wa_listheader-typ = 'S'.
wa_listheader-key = 'CUSTDETAIL'.
wa_listheader-info = '1 to 500' .
APPEND wa_listheader TO it_listheader.
CLEAR wa_listheader.
wa_listheader-typ = 'A'.
*wa_listheader-key = 'CUSTDETAIL'.
wa_listheader-info = sy-datum .
APPEND wa_listheader TO it_listheader.
clear wa_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'EDSLOGO'
I_END_OF_LIST_GRID =
I_ALV_FORM =
.
refresh it_listheader.
ENDFORM. "TOP_OF_PAGE
&----
*& Form PF_STATUS_SET
&----
text
----
-->RT_EXTAB text
----
FORM pf_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'SALES'.
ENDFORM. "PF_STATUS_SET
&----
*& Form USER_COMMAND
&----
text
----
-->UCOMM text
-->RS_SELFIELD text
----
FORM user_command USING ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE sy-ucomm.
WHEN 'SALES'.
SELECT kunnr vbeln ernam netwr FROM vbak INTO TABLE it_vbak
WHERE kunnr = rs_selfield-value.
PERFORM fieldcat_vbak.
perform event_vbak.
perform populateevent_vbak.
perform sort.
perform layout.
PERFORM display.
ENDCASE.
ENDFORM. "USER_COMMAND
&----
*& Form fieldcat_vbak
&----
text
----
--> p1 text
<-- p2 text
----
FORM fieldcat_vbak .
CLEAR wa_fieldcat1.
wa_fieldcat1-tabname = 'IT_VBAK'.
wa_fieldcat1-col_pos = '1'.
wa_fieldcat1-fieldname = 'VBELN'.
wa_fieldcat1-key = 'X'.
wa_fieldcat1-hotspot = 'X'.
wa_fieldcat1-seltext_s = 'no'.
wa_fieldcat1-seltext_m = 'sales.No'.
wa_fieldcat1-seltext_l = 'sales doc.No'.
APPEND wa_fieldcat1 TO it_fieldtab1.
CLEAR wa_fieldcat1 .
wa_fieldcat1-col_pos = '2'.
wa_fieldcat1-fieldname = 'ERNAM'.
*wa_FIELDCAT1-KEY = 'X'.
wa_fieldcat1-tabname = 'IT_VBAK'.
wa_fieldcat1-seltext_s = 'name'.
wa_fieldcat1-seltext_m = 'name'.
wa_fieldcat1-seltext_l = 'name'.
APPEND wa_fieldcat1 TO it_fieldtab1.
CLEAR wa_fieldcat1 .
wa_fieldcat1-col_pos = '3'.
wa_fieldcat1-fieldname = 'NETWR'.
*wa_FIELDCAT1-KEY = 'X'.
wa_fieldcat1-tabname = 'IT_VBAK'.
wa_fieldcat1-seltext_s = 'amount'.
wa_fieldcat1-seltext_m = 'net.amount'.
wa_fieldcat1-seltext_l = 'net.amount'.
wa_fieldcat1-do_sum = 'X'.
APPEND wa_fieldcat1 TO it_fieldtab1.
CLEAR wa_fieldcat1 .
ENDFORM. " fieldcat_vbak
&----
*& Form display
&----
text
----
--> p1 text
<-- p2 text
----
FORM display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
i_grid_title = i_title2
I_GRID_SETTINGS =
IS_LAYOUT = wa_layout1
it_fieldcat = it_fieldtab1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = it_sort
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event1
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_vbak
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. " display
&----
*& Form layout
&----
text
----
--> p1 text
<-- p2 text
----
form layout .
wa_layout1-zebra = 'X'.
wa_layout1-colwidth_optimize = 'X'.
wa_layout1-totals_text = 'TOTAL'.
endform. " layout
&----
*& Form sort
&----
text
----
--> p1 text
<-- p2 text
----
form sort .
wa_sort-fieldname = 'ERNAM'.
wa_sort-tabname = 'IT_VBAK'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
endform. " sort
&----
*& Form event_vbak
&----
text
----
--> p1 text
<-- p2 text
----
form event_vbak .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
et_events = it_event1
EXCEPTIONS
LIST_TYPE_WRONG = 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. " event_vbak
&----
*& Form populateevent_vbak
&----
text
----
--> p1 text
<-- p2 text
----
form populateevent_vbak .
READ TABLE it_event1 INTO wa_event1 WITH KEY name = 'TOP_OF_PAGE'.
wa_event1-form = 'TOP_OF_PAGE'.
MODIFY it_event1 FROM wa_event1 TRANSPORTING form WHERE name = wa_event1-name.
endform. " populateevent_vbak
thanks,
raji
‎2008 Jun 04 7:04 AM
Hi,
report znaresh.
************************************************************************
***----
DECLARING TYPE-POOLS FOR ALV
************************************************************************
TYPE-POOLS: SLIS.
TYPE-POOLS: LIST.
************************************************************************
***----
DECLARING TABLES WORK AREA
************************************************************************
TABLES : KNA1,KNB1,VBAK,VBAP .
************************************************************************
***----
DECLARING INTERNAL TABLES
************************************************************************
DATA: BEGIN OF IKNA1 OCCURS 10,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
STRAS LIKE KNA1-STRAS,
REGIO LIKE KNA1-REGIO,
TELF1 LIKE KNA1-TELF1,
ORT01 LIKE KNA1-ORT01,
PSTLZ LIKE KNA1-PSTLZ,
LAND1 LIKE KNA1-LAND1,
END OF IKNA1.
DATA: IKNB1 LIKE KNB1 OCCURS 10 WITH HEADER LINE.
DATA: IVBAK LIKE VBAK OCCURS 10 WITH HEADER LINE.
DATA: IVBAP LIKE VBAP OCCURS 10 WITH HEADER LINE.
************************************************************************
TYPES: SLIS_TABNAME(30) TYPE C,
SLIS_FIELDNAME(30) TYPE C.
************************************************************************
***----
DECLARING INTERNAL TABLES FOR FIELDCATALOGUE
************************************************************************
DATA: FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA: VCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA: OCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA: ICAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
************************************************************************
***----
DECLARING INTERNAL TABLES TO WRITE IN THE LIST HEADERS
************************************************************************
DATA: LISTHEAD TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
DATA: LISTKNB1 TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
DATA: LISTVBAK TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
************************************************************************
***----
DECLARING STRUCTURES FOR LAYOUT
************************************************************************
DATA: I_LAYOUT TYPE SLIS_LAYOUT_ALV,
TITLEBAR TYPE RSMPE-TITTEXT.
************************************************************************
***----
DECLARING INTERNAL TABLES FOR EVENTS IN ALV
************************************************************************
DATA: EVENT TYPE SLIS_T_EVENT WITH HEADER LINE.
DATA: EVENTONE TYPE SLIS_T_EVENT WITH HEADER LINE.
DATA: EVENTTWO TYPE SLIS_T_EVENT WITH HEADER LINE.
************************************************************************
***----
DECLARING ALV VARIABLES
************************************************************************
DATA: FIELDS TYPE SLIS_SELFIELD,
FIELDS1 TYPE SLIS_SELFIELD,
FIELDS2 TYPE SLIS_SELFIELD,
LIGHTS_TABNAME TYPE SLIS_TABNAME,
LIGHTS_FIELDNAME TYPE SLIS_FIELDNAME.
***The structure SELFIELD contains the following information about the
***current cursor position
***
***tabname : internal output table name
***tabindex : internal output table index
***fieldname: field name
***value : field contents
AT SELECTION-SCREEN on VALUE-REQUEST F
************************************************************************
***----
DECLARING VARIABLES
************************************************************************
DATA: UCOMM LIKE SY-UCOMM,
UCOMM1 LIKE SY-UCOMM,
UCOMM2 LIKE SY-UCOMM.
************************************************************************
***----
POPULATING INTERNAL TABLES
************************************************************************
SELECT * FROM KNA1 INTO CORRESPONDING FIELDS OF TABLE IKNA1.
************************************************************************
***----
FIELD CATALOGUE FOR CUSTOMERS, FCAT
************************************************************************
FCAT-COL_POS = 1.
FCAT-FIELDNAME = 'KUNNR'. "CUSTOMER NUMBER
FCAT-REF_TABNAME = 'KNA1'.
FCAT-EMPHASIZE = 'C211'.
FCAT-HOTSPOT = 'X'.
APPEND FCAT.
FCAT-COL_POS = 2.
FCAT-FIELDNAME = 'NAME1'. "CUSTOMER NAME
FCAT-REF_TABNAME = 'KNA1'.
FCAT-EMPHASIZE = 'C412'.
FCAT-HOTSPOT = ' '.
APPEND FCAT.
FCAT-COL_POS = 3.
FCAT-FIELDNAME = 'STRAS'. "HOUSE OR STREET NUMBER
FCAT-REF_TABNAME = 'KNA1'.
FCAT-EMPHASIZE = 'C512'.
APPEND FCAT.
FCAT-COL_POS = 4.
FCAT-FIELDNAME = 'REGIO'. "REGION
FCAT-REF_TABNAME = 'KNA1'.
FCAT-EMPHASIZE = 'C612'.
APPEND FCAT.
FCAT-COL_POS = 5.
FCAT-FIELDNAME = 'TELF1'. "TELEPHONE NUMBER
FCAT-REF_TABNAME = 'KNA1'.
FCAT-EMPHASIZE = 'C710'.
APPEND FCAT.
FCAT-COL_POS = 6.
FCAT-FIELDNAME = 'ORT01'. "CITY
FCAT-REF_TABNAME = 'KNA1'.
FCAT-EMPHASIZE = 'C811'.
APPEND FCAT.
FCAT-COL_POS = 7.
FCAT-FIELDNAME = 'PSTLZ'. "POSTAL CODE
FCAT-REF_TABNAME = 'KNA1'.
FCAT-EMPHASIZE = 'C112'.
APPEND FCAT.
FCAT-COL_POS = 8.
FCAT-FIELDNAME = 'LAND1'. "COUNTRY
FCAT-REF_TABNAME = 'KNA1'.
FCAT-EMPHASIZE = 'C312'.
APPEND FCAT.
************************************************************************
***----
FIELD CATALOGUE FOR CUSTOMER COCODE, VCAT
************************************************************************
VCAT-COL_POS = 1.
VCAT-FIELDNAME = 'KUNNR'.
VCAT-REF_TABNAME = 'KNB1'.
VCAT-EMPHASIZE = 'C201'.
APPEND VCAT.
VCAT-COL_POS = 2.
VCAT-FIELDNAME = 'BUKRS'.
VCAT-REF_TABNAME = 'KNB1'.
VCAT-EMPHASIZE = 'C402'.
APPEND VCAT.
VCAT-COL_POS = 3.
VCAT-FIELDNAME = 'ERDAT'.
VCAT-REF_TABNAME = 'KNB1'.
VCAT-EMPHASIZE = 'C510'.
APPEND VCAT.
VCAT-COL_POS = 4.
VCAT-FIELDNAME = 'PERNR'.
VCAT-REF_TABNAME = 'KNB1'.
VCAT-EMPHASIZE = 'C811'.
APPEND VCAT.
VCAT-COL_POS = 5.
VCAT-FIELDNAME = 'VRSNR'.
VCAT-REF_TABNAME = 'KNB1'.
VCAT-EMPHASIZE = 'C811'.
APPEND VCAT.
************************************************************************
***----
FIELD CATALOGUE FOR ORDERS, OCAT
************************************************************************
OCAT-COL_POS = 1.
OCAT-FIELDNAME = 'KUNNR'. "CUSTOMER NUMBER
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C911'.
OCAT-HOTSPOT = 'X'.
APPEND OCAT.
OCAT-COL_POS = 2.
OCAT-FIELDNAME = 'VBELN'. "SALES DOCUMENT
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C710'.
OCAT-HOTSPOT = ' '.
APPEND OCAT.
OCAT-COL_POS = 3.
OCAT-FIELDNAME = 'ERDAT'. "DATE CREATED
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C311'.
APPEND OCAT.
OCAT-COL_POS = 4.
OCAT-FIELDNAME = 'AUART'. "SALES DOCUMENT TYPE
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C810'.
APPEND OCAT.
OCAT-COL_POS = 5.
OCAT-FIELDNAME = 'AUDAT'. "DOCUMENT DATE (DATE RECV/SENT)
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C411'.
APPEND OCAT.
OCAT-COL_POS = 6.
OCAT-FIELDNAME = 'NETWR'. "NET VALUE
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C910'.
OCAT-DO_SUM = 'X'.
APPEND OCAT.
OCAT-COL_POS = 7.
OCAT-FIELDNAME = 'WAERK'. "DOCUMENT CURRENCY
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C101'.
OCAT-CURRENCY = 'X'.
APPEND OCAT.
OCAT-COL_POS = 8.
OCAT-FIELDNAME = 'VKORG'. "SALES ORGANIATION
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C201'.
APPEND OCAT.
OCAT-COL_POS = 9.
OCAT-FIELDNAME = 'VTWEG'. "DRISTRIBUTION CHANNEL
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C611'.
APPEND OCAT.
OCAT-COL_POS = 10.
OCAT-FIELDNAME = 'VSBED'. "SHIPPING CONDITIONS
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C301'.
APPEND OCAT.
OCAT-COL_POS = 11.
OCAT-FIELDNAME = 'GRUPP'. "CUSTOMER CREDIT GROUP
OCAT-REF_TABNAME = 'VBAK'.
OCAT-EMPHASIZE = 'C401'.
APPEND OCAT.
************************************************************************
***----
FIELD CATALOGUE FOR ITEMS, ICAT
************************************************************************
ICAT-COL_POS = 1.
ICAT-FIELDNAME = 'VBELN'. "SALES DOCUMENT
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C201'.
APPEND ICAT.
ICAT-COL_POS = 2.
ICAT-FIELDNAME = 'POSNR'. "SALES DOCUMENT ITEM
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C401'.
APPEND ICAT.
ICAT-COL_POS = 3.
ICAT-FIELDNAME = 'MATNR'. "MATERIAL NUMBER
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C510'.
APPEND ICAT.
ICAT-COL_POS = 4.
ICAT-FIELDNAME = 'ZMENG'. "TARGET QUANTITY IN SALES UNITS
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C811'.
APPEND ICAT.
ICAT-COL_POS = 5.
ICAT-FIELDNAME = 'ZIEME'. "TARGET QUANTITY UoM
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C711'.
APPEND ICAT.
ICAT-COL_POS = 6.
ICAT-FIELDNAME = 'MATKL'. "MATERIAL GROUP
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C311'.
APPEND ICAT.
ICAT-COL_POS = 7.
ICAT-FIELDNAME = 'ARKTX'. "SHORT TEXT FOR ITEM TEXT
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C810'.
APPEND ICAT.
ICAT-COL_POS = 8.
ICAT-FIELDNAME = 'POSAR'. "ITEM TYPE
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C811'.
APPEND ICAT.
ICAT-COL_POS = 9.
ICAT-FIELDNAME = 'LFREL'. "ITEM RELEVENT FOR DELIVERY
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C611'.
APPEND ICAT.
ICAT-COL_POS = 10.
ICAT-FIELDNAME = 'FKREL'. "ITEM RELEVANT FOR BILLING
ICAT-REF_TABNAME = 'VBAP'.
ICAT-EMPHASIZE = 'C111'.
APPEND ICAT.
************************************************************************
***----
POPULATING ALV EVENTS INTERNAL TABLES
************************************************************************
EVENT-NAME = 'TOP_OF_PAGE'.
EVENT-FORM = 'TOPPAGE'.
APPEND EVENT.
EVENT-NAME = 'USER_COMMAND'.
EVENT-FORM = 'USECOMM'.
APPEND EVENT.
***----
EVENTONE-NAME = 'TOP_OF_PAGE'.
EVENTONE-FORM = 'TOPPAGEONE'.
APPEND EVENTONE.
EVENTONE-NAME = 'USER_COMMAND'.
EVENTONE-FORM = 'USECOMM1'.
APPEND EVENTONE.
***----
EVENTTWO-NAME = 'TOP_OF_PAGE'.
EVENTTWO-FORM = 'TOPPAGETWO'.
APPEND EVENTTWO.
EVENTTWO-NAME = 'USER_COMMAND'.
EVENTTWO-FORM = 'USECOMM2'.
APPEND EVENTTWO.
************************************************************************
***----
POPULATING ALV LAYOUT STRUCTURE
************************************************************************
I_LAYOUT-WINDOW_TITLEBAR = 'THIS IS MILTONS TITLE BAR'.
************************************************************************
***----
POPULATING ALV LIST HEADERS
************************************************************************
LISTHEAD-TYP = 'H'.
LISTHEAD-INFO = 'CLICK ON THE CUSTOMER TO GET COMPANY CODE DETAILS'.
APPEND LISTHEAD.
*DATA: CUST TYPE KUNNR.
*SELECT SINGLE KUNNR FROM KNA1 INTO CUST WHERE KUNNR = '0000001000'.
*LISTHEAD-TYP = 'S'.
*LISTHEAD-KEY = CUST.
*LISTHEAD-INFO = 'CUSUTOMER'.
*APPEND LISTHEAD.
LISTHEAD-TYP = 'A'.
LISTHEAD-INFO = 'GREAT PYRAMIDS IN THE BACKGROUND'.
APPEND LISTHEAD.
************************************************************************
*----
DISPLAY CUSTOMERS LIST IN GRID
************************************************************************
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = 'TRVPICTURE22'
I_GRID_TITLE = 'CUSTOMERS MASTER DETAILS'
I_GRID_SETTINGS =
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = FCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = EVENT[]
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IKNA1
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.
************************************************************************
*----
POPULATING ALV EVENT SUBROUTINES
************************************************************************
FORM TOPPAGE.
WRITE:/ 'CUSTOMER LIST'.
***----
ALV FUNTION TO WRITE IN THE LIST HEADER
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = LISTHEAD[]
I_LOGO = 'EDSLOGO'
I_END_OF_LIST_GRID =
.
ENDFORM.
FORM TOPPAGEONE.
WRITE:/ 'CUSTOMER COCODE LIST'.
***----
ALV FUNTION TO WRITE IN THE LIST HEADER
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = LISTKNB1[]
I_LOGO = 'SAMP'
I_END_OF_LIST_GRID =
.
ENDFORM.
FORM TOPPAGETWO.
WRITE:/ 'CUSTOMER ORDERS LIST'.
***----
ALV FUNTION TO WRITE IN THE LIST HEADER
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = LISTVBAK[]
I_LOGO = 'MILTON'
I_END_OF_LIST_GRID =
.
ENDFORM.
************************************************************************
***------SUBROUTINE TO DISPLAY CCODES FOR SEL-CUSTOMERS IN GRID
************************************************************************
FORM USECOMM USING UCOMM LIKE SY-UCOMM FIELDS TYPE SLIS_SELFIELD.
READ TABLE IKNA1 INDEX FIELDS-TABINDEX.
SELECT * FROM KNB1 INTO CORRESPONDING FIELDS OF TABLE IKNB1 WHERE
KUNNR = IKNA1-KUNNR.
PERFORM LISTKNB1 USING IKNA1-KUNNR.
***----
DISPLAY CUSTOMER CCODES LIST IN GRID
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME = 'KNB1'
I_BACKGROUND_ID = 'TRVPICTURE05'
I_GRID_TITLE = 'CUSTOMER COMPANY CODE DETAILS'
I_GRID_SETTINGS =
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT =
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = EVENTONE[]
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IKNB1
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.
REFRESH LISTKNB1.
ENDFORM.
************************************************************************
***-------SUBROUTINE POPULATING ALV LIST HEADER FOR COCODE
************************************************************************
FORM LISTKNB1 USING VALUE(CUST) TYPE KUNNR.
LISTKNB1-TYP = 'H'.
LISTKNB1-INFO = 'DOUBLE-CLICK ON CUSTOMER TO GET THE ORDERS PLACED'.
APPEND LISTKNB1.
DATA: NAM TYPE NAME1.
SELECT SINGLE NAME1 FROM KNA1 INTO NAM WHERE KUNNR = CUST.
LISTKNB1-TYP = 'S'.
LISTKNB1-INFO = 'CUSUTOMER NAME'.
LISTKNB1-KEY = NAM.
APPEND LISTKNB1.
LISTKNB1-TYP = 'A'.
LISTKNB1-INFO = 'GREAT COMPANIES IN THE BACKGROUND'.
APPEND LISTKNB1.
LISTKNB1-TYP = 'A'.
LISTKNB1-INFO = 'GREAT PYRAMIDS IN THE BACKGROUND'.
APPEND LISTKNB1.
ENDFORM.
************************************************************************
***-------SUBROUTINE DISPLAYING CUSTOMERS ORDERS IN GRID DISPLAY
************************************************************************
FORM USECOMM1 USING UCOMM1 LIKE SY-UCOMM FIELDS1 TYPE SLIS_SELFIELD.
READ TABLE IKNB1 INDEX FIELDS1-TABINDEX.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IVBAK WHERE
KUNNR = IKNB1-KUNNR.
PERFORM LISTVBAK. " USING IKNB1-KUNNR.
***----
DISPLAYING ORDERS IN GRID
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = 'TRVPICTURE08'
I_GRID_TITLE = 'ORDERS PLACED BY THE CUSTOMER'
I_GRID_SETTINGS =
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = OCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = EVENTTWO[]
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IVBAK
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.
REFRESH LISTVBAK.
ENDFORM.
FORM LISTVBAK. " USING VALUE(ORD) TYPE VBELN.
LISTVBAK-TYP = 'H'.
LISTVBAK-INFO = 'DOUBLE CLICK ON ORDER TO GET THE ITEMS ORDERED'.
APPEND LISTVBAK.
*DATA: NAM TYPE NAME1.
*SELECT SINGLE NAME1 FROM KNA1 INTO NAM WHERE KUNNR = CUST.
*LISTVBAK-TYP = 'S'.
*LISTVBAK-INFO = 'CUSUTOMER NAME'.
*LISTVBAK-KEY = NAM.
*APPEND LISTVBAK.
LISTVBAK-TYP = 'A'.
LISTVBAK-INFO = 'GREAT COMPANIES IN THE BACKGROUND'.
APPEND LISTVBAK.
ENDFORM.
************************************************************************
***------SUBROUTINE DIPLAYING LIST OF ITEMS ORDERD IN POPUP DISPLAY
************************************************************************
***
--------DISPLAYING ITEMS LIST IN POPUP LIST
REUSE_ALV_POPUP_TO_SELECT
Lists in dialog box (single or multiple selection is possible)
***
************************************************************************
FORM USECOMM2 USING UCOMM2 LIKE SY-UCOMM FIELDS2 TYPE SLIS_SELFIELD.
READ TABLE IVBAK INDEX FIELDS2-TABINDEX.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IVBAP WHERE
VBELN = IVBAK-VBELN.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'LIST OF ITEMS OREDERD'
I_SELECTION = 'X'
I_ZEBRA = 'X'
I_SCREEN_START_COLUMN = 15
I_SCREEN_START_LINE = 5
I_SCREEN_END_COLUMN = 120
I_SCREEN_END_LINE = 15
I_CHECKBOX_FIELDNAME = 'NETWR'
I_LINEMARK_FIELDNAME = 'C50'
I_SCROLL_TO_SEL_LINE = 'X'
I_TABNAME = 'IVBAP'
I_STRUCTURE_NAME =
IT_FIELDCAT = ICAT[]
IT_EXCLUDING =
I_CALLBACK_PROGRAM =
I_CALLBACK_USER_COMMAND =
IS_PRIVATE =
IMPORTING
ES_SELFIELD =
E_EXIT = 'X'
TABLES
T_OUTTAB = IVBAP
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.
************************************************************************
Reward If helpfull,
Naresh
‎2008 Jun 04 7:05 AM
Hi,
REPORT ZSPRENH069 LINE-SIZE 1023 NO STANDARD PAGE HEADING.
TYPE-POOLS : SLIS. "Global Type for ALV
************************************************************************
* T Y P E S *
************************************************************************
TYPES:
BEGIN OF TY_VB_AKAP,
VBELN TYPE VBELN_VA, "Sales Document
KUNNR TYPE KUNAG, "Sold-to party
POSNR TYPE POSNR_VA, "Item Number
MATNR TYPE MATNR, "Material Number
PMATN TYPE PMATN, "Pricing Reference Material/Newly Created Material
KWMENG TYPE KWMENG, "Cumulative Order Qty. in Sales Units
VRKME TYPE VRKME, "Sales Unit
KZWI1 TYPE KZWI1, "Sub Total 1 from pricing procedure for condition
VKAUS TYPE ABRVW, "Usage Indicator
WAERK TYPE WAERK, "SD Document Currency
END OF TY_VB_AKAP,
BEGIN OF TY_MARA,
MATNR TYPE MATNR, "Material Number
ZZTECHSPEC TYPE ZTECHSPEC, "Technical Specification
END OF TY_MARA,
BEGIN OF TY_MVKE,
MATNR TYPE MATNR, "Material Number
VKORG TYPE VKORG, "Sales Organization
VTWEG TYPE VTWEG, "Distribution Channel
KONDM TYPE KONDM, "Material Pricing Group
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
VRKME TYPE VRKME, "Sales Unit according to the Material Master
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
END OF TY_MVKE,
BEGIN OF TY_VBKD,
VBELN TYPE VBELN_VA, "Sales Document
POSNR TYPE POSNR_VA, "Item Number
BSTKD_E TYPE BSTKD_E, "Used to capture New Material Number
END OF TY_VBKD,
BEGIN OF TY_IHEADER,
SELECT(1) TYPE C, "Check Box
VBELN TYPE VBELN, "Sales Document
KUNNR TYPE KUNAG, "Sold-to Party
END OF TY_IHEADER,
BEGIN OF TY_MESSAGE1,
VKORG TYPE VKORG, "Sales Organization
VTWEG TYPE VTWEG, "Distribution Channel
KUNNR TYPE KUNAG, "Customer number
KONDM TYPE KONDM, "Material pricing group
ZCOUNT(2) TYPE N, "Zcount
MSGTYP(1) TYPE C, "Message type
TEXT TYPE STRING, "Message text
END OF TY_MESSAGE1,
*-----------------Begin of changes for the change request 2007106------25th July 2007--------------------------------
BEGIN OF TY_MESSAGE1_2,
VKORG TYPE VKORG, "Sales Organization
VTWEG TYPE VTWEG, "Distribution Channel
KUNNR TYPE KUNAG, "Customer number
KONDM TYPE KONDM, "Material pricin
MSGTYP(1) TYPE C, "Message type
TEXT TYPE STRING, "Message text
END OF TY_MESSAGE1_2,
*-----------------End of changes for the change request 2007106------25th July 2007--------------------------------
BEGIN OF TY_MESSAGE2,
VKORG TYPE VKORG, "Sales Organization
VTWEG TYPE VTWEG, "Distribution Channel
KUNNR TYPE KUNAG, "Customer number
MATNR TYPE MATNR, "Material Number
MSGTYP(1) TYPE C, "Message type
TEXT TYPE STRING, "Message text
END OF TY_MESSAGE2,
BEGIN OF TY_IFINAL,
VBELN TYPE VBELN_VA, "Sales Document
KWMENG TYPE KWMENG, "Cumulative Order Qty. in Sales Units
POSNR TYPE POSNR_VA, "Item Number
KUNNR TYPE KUNAG, "Sold-to party
MATNR TYPE MATNR, "Material Number
VRKME TYPE VRKME, "Sales Unit
KZWI1 TYPE KZWI1, "Sub Total 1 from pricing procedure for condition
VKAUS TYPE ABRVW, "Usage Indicator
ZZTECHSPEC TYPE ZTECHSPEC, "Technical Specification
PMATN TYPE PMATN, "Pricing Reference Material/Newly Created Material
KONDM TYPE KONDM, "Material Pricing Group
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
WAERK TYPE WAERK, "SD Document Currency
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
END OF TY_IFINAL,
BEGIN OF TY_ACC1,
VBELN TYPE VBELN_VA, "Sales Document
KUNNR TYPE KUNAG, "Sold-to party
KONDM TYPE KONDM, "Material Pricing Group
ZCOUNT(2) TYPE N, "ZCount indicator
KSTBM TYPE KSTBM, "Quantity
VRKME TYPE VRKME, "Sales Unit
ZZTECHSPEC TYPE ZTECHSPEC, "Technical Specification
KZWI1 TYPE KZWI1, "Sub Total 1 from pricing procedure for condition
ERROR(1) TYPE N, "Error Field
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
WAERK TYPE WAERK, "SD Document Currency
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
END OF TY_ACC1,
* Important Note : Earlier there were only three accesses and hence this below type was coded as TY_ACC2 depicting
* the type for internal table as a holder of data for second access sequence, but later a new access sequence was
* introduced and was introduced as the second access by itself and hence the sequence which was previously considered
* as second access is going to be third access sequence in reality. The naming standards that are going to be followed
* for the newly introduced access sequence would be XXX_1_2. (For Change request 2007106)
BEGIN OF TY_ACC2,
VBELN TYPE VBELN_VA, "Sales Document
KUNNR TYPE KUNAG, "Sold-to party
MATNR TYPE MATNR, "Material Number
KSTBM TYPE KSTBM, "Cumulative Order Qty. in Sales Units
ZZTECHSPEC TYPE ZTECHSPEC, "Technical Specification
VRKME TYPE VRKME, "Sales Unit
KZWI1 TYPE KZWI1, "Sub Total 1 from pricing procedure for condition
ERROR(1) TYPE N, "Error field
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
WAERK TYPE WAERK, "SD Document Currency
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
END OF TY_ACC2,
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
BEGIN OF TY_ACC1_2,
VBELN TYPE VBELN_VA, "Sales Document
KUNNR TYPE KUNAG, "Sold-to party
KONDM TYPE KONDM, "Material Pricing Group
KSTBM TYPE KSTBM, "Quantity
VRKME TYPE VRKME, "Sales Unit
ZZTECHSPEC TYPE ZTECHSPEC, "Technical Specification
KZWI1 TYPE KZWI1, "Sub Total 1 from pricing procedure for condition
ERROR(1) TYPE N, "Error field
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
WAERK TYPE WAERK, "SD Document Currency
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
END OF TY_ACC1_2,
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
BEGIN OF TY_T006,
MSEHI TYPE MSEHI, "Unit of Measurement
ZAEHL TYPE DZAEHL, "Numerator for conversion to SI unit
NENNR TYPE NENNR, "Denominator for conversion into SI unit
END OF TY_T006,
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
*Types of MARM table
BEGIN OF TY_MARM,
MATNR TYPE MATNR, " Material Number
MEINH TYPE LRMEI, " Alternative Unit of Measure
UMREZ TYPE UMREZ, " Numerator for Conversion to Base UOM
UMREN TYPE UMREN, " Denominator for Conversion to Base UOM
END OF TY_MARM.
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
************************************************************************
* D A T A *
************************************************************************
* Internal Table Declarations
*****************************
DATA: T_FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV, "Fieldcatalog IT
T_EVENTS TYPE SLIS_T_EVENT, "Event IT
T_HEADER TYPE SLIS_T_LISTHEADER, "Header IT
T_VB_AKAP TYPE STANDARD TABLE OF TY_VB_AKAP, "To hold records from VBAK & VBAP Table
T_MARA TYPE STANDARD TABLE OF TY_MARA, "To hold records from MARA Table
T_MVKE TYPE STANDARD TABLE OF TY_MVKE, "To hold records from MVKE Table
T_VBKD TYPE STANDARD TABLE OF TY_VBKD, "To hold records from VBKD Table
T_IHEADER TYPE STANDARD TABLE OF TY_IHEADER, "To hold records from VBAK Table
T_IFINAL TYPE STANDARD TABLE OF TY_IFINAL, "To hold cumulative data for ALV
T_BDCDATA TYPE STANDARD TABLE OF BDCDATA, "IT for bdcdata
T_BDCMSGCOLL TYPE STANDARD TABLE OF BDCMSGCOLL, "IT for error messages
T_MESSAGE1 TYPE STANDARD TABLE OF TY_MESSAGE1, "IT for conditions1 messages
*-----------------Begin of changes for the change request 2007106------25th July 2007--------------------------------
T_MESSAGE1_2 TYPE STANDARD TABLE OF TY_MESSAGE1_2,"ITfor conditions1_2 messages
*-----------------End of changes for the change request 2007106------25th July 2007--------------------------------
T_MESSAGE2 TYPE STANDARD TABLE OF TY_MESSAGE2, "IT for conditions2 messages
T_ACC2 TYPE STANDARD TABLE OF TY_ACC2, "IT for holding data for Second Access Sequence Processing
T_ACC1 TYPE STANDARD TABLE OF TY_ACC1, "IT for holding data for First Access Sequence Processing
T_SELECT TYPE STANDARD TABLE OF RSPARAMS, "IT for holding data related to the selection screen
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
T_ACC1_2 TYPE STANDARD TABLE OF TY_ACC1_2, "IT for holding data for new intermediate Access Sequence
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
T_T006 TYPE STANDARD TABLE OF TY_T006, "IT for holding T006 Entries
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
T_MARM TYPE STANDARD TABLE OF TY_MARM, "IT for holding entries from MARM
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
* Work area Declarations
************************
W_FIELDCATALOG TYPE SLIS_FIELDCAT_ALV, "Fieldcatalog WA
W_EVENT TYPE SLIS_ALV_EVENT, "Event WA
W_HEADER TYPE SLIS_LISTHEADER, "Header WA
W_LAYOUT TYPE SLIS_LAYOUT_ALV, "Layout WA
W_KEYINFO TYPE SLIS_KEYINFO_ALV, "Key Information WA
W_VB_AKAP TYPE TY_VB_AKAP, "To hold records from T_VB_AKAP
W_MARA TYPE TY_MARA, "To hold records from T_MARA
W_MVKE TYPE TY_MVKE, "To hold records from T_MVKE
W_VBKD TYPE TY_VBKD, "To hold records from T_VBKD
W_IHEADER TYPE TY_IHEADER, "To hold records from T_IHEADER
W_IFINAL TYPE TY_IFINAL, "To hold records from T_IFINAL
W_PARAMS TYPE CTU_PARAMS, "CTU Params
W_BDCDATA TYPE BDCDATA, "Work Area for BDCDATA
W_BDCMSGCOLL TYPE BDCMSGCOLL, "Work Area to collect BDC Messages
W_MESSAGE1 TYPE TY_MESSAGE1, "WA for price conditions1 messages
*-----------------Begin of changes for the change request 2007106------25th July 2007--------------------------------
W_MESSAGE1_2 TYPE TY_MESSAGE1_2, "WA for price conditions1_2 messages
*-----------------End of changes for the change request 2007106------25th July 2007--------------------------------
W_MESSAGE2 TYPE TY_MESSAGE2, "WA for price conditions2 messages
W_ACC2 TYPE TY_ACC2, "WA for holding records from T_ACC2
W_ACC1 TYPE TY_ACC1, "WA for holding records from T_ACC1
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
W_ACC1_2 TYPE TY_ACC1_2, "WA for holding records from T_ACC1_2
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_T006 TYPE TY_T006, "WA for holding T_T006 Entries
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
W_MARM TYPE TY_MARM, "WA for holding entries of T_MARM
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
* Variable declarations
***********************
G_VKORG TYPE VKORG, "Sales Organization
G_VTWEG TYPE VTWEG, "Distribution Channel
G_AUDAT TYPE AUDAT, "Document Date (Date Received/Sent)
G_VBELN TYPE VBELN_VA, "Sales Document
G_KUNNR TYPE KUNAG, "Sold-to party
G_MATNR TYPE MATNR, "Material Number
G_REPID TYPE SY-REPID, "Program Name
G_MESSAGE(73) TYPE C, "To Capture Message
G_FLAG1(1) TYPE C, "Flag
G_ANSWER(1) TYPE C, "Optional Button
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
G_NUM_SOURCE TYPE DZAEHL, "Holds Numerator value for Source Unit of Measure
G_NUM_TARGET TYPE DZAEHL, "Holds Numerator value for Target Unit of Measure
G_DEN_SOURCE TYPE NENNR, "Holds Denominator value for Source Unit of Measure
G_DEN_TARGET TYPE NENNR. "Holds Denominator value for Target Unit of Measure
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
* Constant declarations
***********************
CONSTANTS:
C_A(1) TYPE C VALUE 'A', "Constant Value A
C_S(1) TYPE C VALUE 'S', "Constant Value S
C_U(1) TYPE C VALUE 'U', "Constant Value U
C_X(1) TYPE C VALUE 'X', "Constant Value X
C_E(1) TYPE C VALUE 'E', "Constant Value E
C_I(1) TYPE C VALUE 'I', "Constant Value I
C_R(1) TYPE C VALUE 'R', "Constant Value R
C_C(1) TYPE C VALUE 'C', "Constant Value C
C_B(1) TYPE C VALUE 'B', "Document Category is Quotation
C_HTNAME(10) TYPE C VALUE 'T_IHEADER', "Internal table for Header Data
C_ITNAME(10) TYPE C VALUE 'T_IFINAL', "Internal Table with processed data
C_Q2(2) TYPE C VALUE 'Q2', "Constant Order Reason Q2
C_100(3) TYPE C VALUE '100', "Popup screen
C_25(2) TYPE C VALUE '25', "Popup screen
C_5(1) TYPE C VALUE '5', "Popup screen
C_1 TYPE I VALUE 1, "Value 1 for Error Denotion
C_2 TYPE I VALUE 2, "Value 2 for Error Denotion
C_3 TYPE I VALUE 3, "Value 3 for BDC Error Denotion
C_1000(4) TYPE N VALUE 1000, "Value 1000
C_01(2) TYPE N VALUE '01', "Value 01 for Zcount
C_VK11(4) TYPE C VALUE 'VK11', "Transaction VK11
C_DYNBEGIN(1) TYPE C VALUE 'X', "Indicator
C_UPDATE(1) TYPE C VALUE 'S', "Update
C_DISMODE(1) TYPE C VALUE 'N', "Display
C_Q3(2) TYPE C VALUE 'Q3', "Quotation Approved
C_ZBPR(4) TYPE C VALUE 'ZBPR', "Condition Type ZBPR
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
C_ZBPN(4) TYPE C VALUE 'ZBPN', "Condition Type ZBPN
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
C_ERROR(5) TYPE C VALUE 'ERROR'. "Error screen title
************************************************************************
* S E L E C T O P T I O N S & P A R A M E T E R S *
************************************************************************
* Selection-screen Block 1
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_VKORG TYPE VKORG OBLIGATORY, "Sales Organization
P_VTWEG TYPE VTWEG OBLIGATORY, "Distribution Channel
P_SPART TYPE SPART DEFAULT '00'. "Division
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS: S_AUDAT FOR G_AUDAT, "Document Date (Date Received/Sent)
S_VBELN FOR G_VBELN, "Sales Document
S_KUNNR FOR G_KUNNR, "Sold-to party
S_MATNR FOR G_MATNR. "Material Number
PARAMETERS: P_VKAUS(2) TYPE N. "Usage Indicator
SELECTION-SCREEN END OF BLOCK BLK2.
************************************************************************
* I N I T I A L I Z A T I O N *
************************************************************************
INITIALIZATION.
CLEAR : G_REPID. "Program Name
G_REPID = SY-REPID. "Program Name
************************************************************************
* A T S E L E C T I O N S C R E E N *
************************************************************************
CLEAR: G_VKORG,
G_VTWEG.
AT SELECTION-SCREEN ON P_VKORG.
SELECT SINGLE VKORG INTO G_VKORG
FROM TVKO
WHERE VKORG EQ P_VKORG.
IF SY-SUBRC NE 0.
MESSAGE E000(ZS) WITH TEXT-021.
ENDIF.
AT SELECTION-SCREEN ON P_VTWEG.
SELECT SINGLE VTWEG INTO G_VTWEG
FROM TVKOV
WHERE VKORG EQ P_VKORG
AND VTWEG EQ P_VTWEG.
IF SY-SUBRC NE 0.
MESSAGE E000(ZS) WITH TEXT-022.
ENDIF.
CLEAR: G_VKORG,
G_VTWEG.
************************************************************************
* S T A R T O F S E L E C T I O N *
************************************************************************
START-OF-SELECTION.
* Data Selection
PERFORM DATA_RETRIEVAL.
* Build Field Catalog
PERFORM BUILD_FIELDCATALOG.
* Bulid layout
PERFORM BUILD_LAYOUT.
* Build Events
PERFORM BUILD_EVENTS.
* Captures the Values of Selection Screen
PERFORM CAPTURE_SCREEN.
************************************************************************
* E N D O F S E L E C T I O N *
************************************************************************
END-OF-SELECTION.
* Display List
PERFORM DISPLAY_ALV_REPORT.
************************************************************************
* F O R M S *
************************************************************************
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieves Data for ALV Display
*----------------------------------------------------------------------*
*-----------------Begin of changes for the change request 2007106------25th July 2007--------------------------------
*-----------------End of changes for the change request 2007106------25th July 2007--------------------------------
FORM DATA_RETRIEVAL .
DATA : L_VKAUS TYPE VKAUS. "Variable to hold Usage Indicator
CLEAR L_VKAUS.
SELECT VBELN
KUNNR
INTO CORRESPONDING FIELDS OF TABLE T_IHEADER
FROM VBAK
WHERE VBELN IN S_VBELN
AND KUNNR IN S_KUNNR
AND VKORG EQ P_VKORG
AND AUDAT IN S_AUDAT
AND VTWEG EQ P_VTWEG
AND SPART EQ P_SPART
AND AUGRU EQ C_Q2
AND VBTYP EQ C_B.
IF NOT T_IHEADER IS INITIAL.
IF NOT P_VKAUS IS INITIAL.
*-----------------Begin of changes for the change request 2007106------25th July 2007------COMMENTED FROM HERE-----
* IF P_VKAUS EQ C_1. "IF Zcount is given as 1 then quotation without zcount should be picked
* "for whom Material Pricing Group should be given.
* SELECT A~VBELN
* A~KUNNR
* B~POSNR
* B~MATNR
* B~PMATN
* B~KWMENG
* B~VRKME
* B~KZWI1
* B~VKAUS
* INTO TABLE T_VB_AKAP
* FROM VBAK AS A
* JOIN VBAP AS B
* ON A~VBELN EQ B~VBELN
* FOR ALL ENTRIES IN T_IHEADER
* WHERE A~VBELN EQ T_IHEADER-VBELN
* AND B~MATNR IN S_MATNR.
*
* ELSE.
*-----------------End of changes for the change request 2007106------25th July 2007------COMMENTED TILL HERE-----
CONCATENATE C_C P_VKAUS INTO L_VKAUS.
SELECT A~VBELN
A~KUNNR
B~POSNR
B~MATNR
B~PMATN
B~KWMENG
B~VRKME
B~KZWI1
B~VKAUS
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
A~WAERK
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
INTO TABLE T_VB_AKAP
FROM VBAK AS A
JOIN VBAP AS B
ON A~VBELN EQ B~VBELN
FOR ALL ENTRIES IN T_IHEADER
WHERE A~VBELN EQ T_IHEADER-VBELN
AND B~MATNR IN S_MATNR
AND B~VKAUS EQ L_VKAUS.
* ENDIF.
ELSE.
SELECT A~VBELN
A~KUNNR
B~POSNR
B~MATNR
B~PMATN
B~KWMENG
B~VRKME
B~KZWI1
B~VKAUS
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
A~WAERK
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
INTO TABLE T_VB_AKAP
FROM VBAK AS A
JOIN VBAP AS B
ON A~VBELN EQ B~VBELN
FOR ALL ENTRIES IN T_IHEADER
WHERE A~VBELN EQ T_IHEADER-VBELN
AND B~MATNR IN S_MATNR.
ENDIF.
IF NOT T_VB_AKAP IS INITIAL.
SELECT VBELN
POSNR
BSTKD_E
INTO TABLE T_VBKD
FROM VBKD
FOR ALL ENTRIES IN T_VB_AKAP
WHERE VBELN EQ T_VB_AKAP-VBELN
AND POSNR EQ T_VB_AKAP-POSNR.
ENDIF.
SORT T_VBKD BY VBELN POSNR.
CLEAR W_VB_AKAP.
* After much of coding was completed, Usage of PMATN was dropped and
* the first eighteen characters of the field BSTKD was proposed for usage
* Hence PMATN is overwritten by BSTKD value in the below loop
LOOP AT T_VB_AKAP INTO W_VB_AKAP.
CLEAR: W_VBKD,
W_VB_AKAP-PMATN.
READ TABLE T_VBKD INTO W_VBKD
WITH KEY VBELN = W_VB_AKAP-VBELN
POSNR = W_VB_AKAP-POSNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_VB_AKAP-PMATN = W_VBKD-BSTKD_E+0(18).
ENDIF.
MODIFY T_VB_AKAP FROM W_VB_AKAP TRANSPORTING PMATN.
CLEAR W_VB_AKAP.
ENDLOOP.
IF NOT T_VB_AKAP IS INITIAL.
* Collecting all Material Numbers along with their Technical Spec data for all the materials available in T_VB_AKAP.
SELECT MATNR
ZZTECHSPEC
INTO TABLE T_MARA
FROM MARA
FOR ALL ENTRIES IN T_VB_AKAP
WHERE MATNR EQ T_VB_AKAP-MATNR.
IF SY-SUBRC EQ 0.
SORT T_MARA BY MATNR.
ENDIF. "Checking SY-SUBRC for T_MARA
SELECT MATNR
ZZTECHSPEC
APPENDING TABLE T_MARA
FROM MARA
FOR ALL ENTRIES IN T_VB_AKAP
WHERE MATNR EQ T_VB_AKAP-PMATN.
IF SY-SUBRC EQ 0.
SORT T_MARA BY MATNR.
ENDIF. "Checking SY-SUBRC for T_MARA
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
* Collecting information into T_MARM for all the available materials so that it could be used for conversion into Alternate UOM
SELECT MATNR " Material Number
MEINH " Alternate UOM
UMREZ " Numerator for conversion
UMREN " Denominator for conversion
FROM MARM
INTO TABLE T_MARM
FOR ALL ENTRIES IN T_VB_AKAP
WHERE MATNR EQ T_VB_AKAP-MATNR.
IF SY-SUBRC = 0.
SORT T_MARM BY MATNR MEINH.
ENDIF. "Checking SY-SUBRC for T_MARM
SELECT MATNR " Material Number
MEINH " Alternate UOM
UMREZ " Numerator for conversion
UMREN " Denominator for conversion
FROM MARM
APPENDING TABLE T_MARM
FOR ALL ENTRIES IN T_VB_AKAP
WHERE MATNR EQ T_VB_AKAP-PMATN.
IF SY-SUBRC = 0.
SORT T_MARM BY MATNR MEINH.
ENDIF. "Checking SY-SUBRC for T_MARM
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
SELECT MATNR
VKORG
VTWEG
KONDM
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
VRKME
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
INTO TABLE T_MVKE
FROM MVKE
FOR ALL ENTRIES IN T_VB_AKAP
WHERE MATNR EQ T_VB_AKAP-PMATN.
IF SY-SUBRC EQ 0.
SORT T_MVKE BY MATNR VKORG VTWEG.
ENDIF. "Checking SY-SUBRC for T_MVKE
SELECT MATNR
VKORG
VTWEG
KONDM
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
VRKME
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPENDING TABLE T_MVKE
FROM MVKE
FOR ALL ENTRIES IN T_VB_AKAP
WHERE MATNR EQ T_VB_AKAP-MATNR.
IF SY-SUBRC EQ 0.
SORT T_MVKE BY MATNR VKORG VTWEG.
ENDIF. "Checking SY-SUBRC for T_MVKE
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
SELECT MSEHI
ZAEHL
NENNR
INTO TABLE T_T006
FROM T006
FOR ALL ENTRIES IN T_VB_AKAP
WHERE MSEHI EQ T_VB_AKAP-VRKME.
IF SY-SUBRC EQ 0.
SORT T_T006 BY MSEHI.
ENDIF. "Checking SY-SUBRC for T_T006
IF NOT T_MVKE IS INITIAL.
SELECT MSEHI
ZAEHL
NENNR
APPENDING TABLE T_T006
FROM T006
FOR ALL ENTRIES IN T_MVKE
WHERE MSEHI EQ T_MVKE-VRKME.
IF SY-SUBRC EQ 0.
SORT T_T006 BY MSEHI.
ENDIF. "Checking SY-SUBRC for T_T006
ENDIF. "Checking for Initial status of internal table T_MVKE
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
ENDIF. " FOR T_VB_AKAP NOT INITIAL.
ENDIF. " FOR T_IHEADER NOT INITIAL.
CLEAR: W_VB_AKAP,
W_IFINAL.
LOOP AT T_VB_AKAP INTO W_VB_AKAP.
W_IFINAL-VBELN = W_VB_AKAP-VBELN.
W_IFINAL-KUNNR = W_VB_AKAP-KUNNR.
W_IFINAL-POSNR = W_VB_AKAP-POSNR.
W_IFINAL-MATNR = W_VB_AKAP-MATNR.
W_IFINAL-PMATN = W_VB_AKAP-PMATN.
W_IFINAL-KWMENG = W_VB_AKAP-KWMENG.
W_IFINAL-VRKME = W_VB_AKAP-VRKME.
W_IFINAL-KZWI1 = ( W_VB_AKAP-KZWI1 / W_VB_AKAP-KWMENG ) * 1000.
W_IFINAL-VKAUS = W_VB_AKAP-VKAUS.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_IFINAL-WAERK = W_VB_AKAP-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
* Populating Material Pricing Group from New Material Group, if such Group doesn't exist
* Population of Material Pricing Group from Material Number is tried.
* Similar condition does suit for Tech Spec too.
SORT: T_MVKE BY MATNR VKORG VTWEG,
T_MARA BY MATNR.
IF NOT W_VB_AKAP-PMATN IS INITIAL.
CLEAR W_MVKE.
READ TABLE T_MVKE
INTO W_MVKE
WITH KEY MATNR = W_VB_AKAP-PMATN
VKORG = P_VKORG
VTWEG = P_VTWEG
BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_IFINAL-KONDM = W_MVKE-KONDM.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
IF ( W_IFINAL-VRKME NE W_MVKE-VRKME ) AND ( NOT W_MVKE-VRKME IS INITIAL ).
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
CLEAR: W_MARM,
G_NUM_SOURCE,
G_DEN_SOURCE,
G_NUM_TARGET,
G_DEN_TARGET.
READ TABLE T_MARM INTO W_MARM
WITH KEY MATNR = W_IFINAL-PMATN
MEINH = W_IFINAL-VRKME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
G_NUM_SOURCE = W_MARM-UMREZ.
G_DEN_SOURCE = W_MARM-UMREN.
CLEAR W_MARM.
READ TABLE T_MARM INTO W_MARM
WITH KEY MATNR = W_IFINAL-PMATN
MEINH = W_MVKE-VRKME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
G_NUM_TARGET = W_MARM-UMREZ.
G_DEN_TARGET = W_MARM-UMREN.
CLEAR W_MARM.
W_IFINAL-KWMENG = W_IFINAL-KWMENG * ( G_NUM_SOURCE / G_DEN_SOURCE ) * ( G_DEN_TARGET / G_NUM_TARGET ).
CLEAR W_IFINAL-KZWI1.
W_IFINAL-KZWI1 = ( W_VB_AKAP-KZWI1 / W_IFINAL-KWMENG ) * 1000.
W_IFINAL-VRKME = W_MVKE-VRKME.
ENDIF. "Check SY-SUBRC for W_MARM using W_MVKE-VRKME (Sales UOM)
ELSE.
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
CLEAR: W_T006,
G_NUM_SOURCE,
G_DEN_SOURCE,
G_NUM_TARGET,
G_DEN_TARGET.
READ TABLE T_T006 INTO W_T006 WITH KEY MSEHI = W_IFINAL-VRKME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
G_NUM_SOURCE = W_T006-ZAEHL. "Numerator to convert specified UOM to SI UOM
G_DEN_SOURCE = W_T006-NENNR. "Denominator to convert specified UOM to SI UOM
CLEAR W_T006.
READ TABLE T_T006 INTO W_T006 WITH KEY MSEHI = W_MVKE-VRKME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
G_NUM_TARGET = W_T006-ZAEHL. "Numerator to convert specified UOM to SI UOM
G_DEN_TARGET = W_T006-NENNR. "Denominator to convert specified UOM to SI UOM
CLEAR W_T006.
W_IFINAL-KWMENG = W_IFINAL-KWMENG * ( G_NUM_SOURCE / G_DEN_SOURCE ) * ( G_DEN_TARGET / G_NUM_TARGET ).
CLEAR W_IFINAL-KZWI1.
W_IFINAL-KZWI1 = ( W_VB_AKAP-KZWI1 / W_IFINAL-KWMENG ) * 1000.
W_IFINAL-VRKME = W_MVKE-VRKME.
ENDIF. "Check for SY-SUBRC for READ TABLE T_T006 using W_MVKE-VRKME (Sales UOM)
ENDIF. "Check for SY-SUBRC for READ TABLE T_T006 using W_IFINAL-VRKME (Quotation UOM)
ENDIF. "Check SY-SUBRC for W_MARM using W_IFINAL-VRKME (Quotation UOM)
ENDIF. "Check for ( W_IFINAL-VRKME NE W_MVKE-VRKME ) AND ( NOT W_MVKE-VRKME IS INITIAL )
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
ENDIF.
CLEAR W_MARA.
READ TABLE T_MARA
INTO W_MARA
WITH KEY MATNR = W_VB_AKAP-PMATN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_IFINAL-ZZTECHSPEC = W_MARA-ZZTECHSPEC.
ENDIF. " SY-SUBRC FOR READ TABLE T_MARA
ELSE.
CLEAR W_MVKE.
READ TABLE T_MVKE
INTO W_MVKE
WITH KEY MATNR = W_VB_AKAP-MATNR
VKORG = P_VKORG
VTWEG = P_VTWEG
BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_IFINAL-KONDM = W_MVKE-KONDM.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
IF ( W_IFINAL-VRKME NE W_MVKE-VRKME ) AND ( NOT W_MVKE-VRKME IS INITIAL ).
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
CLEAR: W_MARM,
G_NUM_SOURCE,
G_DEN_SOURCE,
G_NUM_TARGET,
G_DEN_TARGET.
READ TABLE T_MARM INTO W_MARM
WITH KEY MATNR = W_IFINAL-MATNR
MEINH = W_IFINAL-VRKME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
G_NUM_SOURCE = W_MARM-UMREZ.
G_DEN_SOURCE = W_MARM-UMREN.
CLEAR W_MARM.
READ TABLE T_MARM INTO W_MARM
WITH KEY MATNR = W_IFINAL-MATNR
MEINH = W_MVKE-VRKME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
G_NUM_TARGET = W_MARM-UMREZ.
G_DEN_TARGET = W_MARM-UMREN.
CLEAR W_MARM.
W_IFINAL-KWMENG = W_IFINAL-KWMENG * ( G_NUM_SOURCE / G_DEN_SOURCE ) * ( G_DEN_TARGET / G_NUM_TARGET ).
CLEAR W_IFINAL-KZWI1.
W_IFINAL-KZWI1 = ( W_VB_AKAP-KZWI1 / W_IFINAL-KWMENG ) * 1000.
W_IFINAL-VRKME = W_MVKE-VRKME.
ENDIF. "Check SY-SUBRC for W_MARM using W_MVKE-VRKME (Sales UOM)
ELSE.
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
CLEAR: W_T006,
G_NUM_SOURCE,
G_DEN_SOURCE,
G_NUM_TARGET,
G_DEN_TARGET.
READ TABLE T_T006 INTO W_T006 WITH KEY MSEHI = W_IFINAL-VRKME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
G_NUM_SOURCE = W_T006-ZAEHL. "Numerator to convert specified UOM to SI UOM
G_DEN_SOURCE = W_T006-NENNR. "Denominator to convert specified UOM to SI UOM
CLEAR W_T006.
READ TABLE T_T006 INTO W_T006 WITH KEY MSEHI = W_MVKE-VRKME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
G_NUM_TARGET = W_T006-ZAEHL. "Numerator to convert specified UOM to SI UOM
G_DEN_TARGET = W_T006-NENNR. "Denominator to convert specified UOM to SI UOM
CLEAR W_T006.
W_IFINAL-KWMENG = W_IFINAL-KWMENG * ( G_NUM_SOURCE / G_DEN_SOURCE ) * ( G_DEN_TARGET / G_NUM_TARGET ).
CLEAR W_IFINAL-KZWI1.
W_IFINAL-KZWI1 = ( W_VB_AKAP-KZWI1 / W_IFINAL-KWMENG ) * 1000.
W_IFINAL-VRKME = W_MVKE-VRKME.
ENDIF. "Check for SY-SUBRC for READ TABLE T_T006 using W_MVKE-VRKME (Sales UOM)
ENDIF. "Check for SY-SUBRC for READ TABLE T_T006 using W_IFINAL-VRKME (Quotation UOM)
ENDIF. "Check SY-SUBRC for W_MARM using W_IFINAL-VRKME (Quotation UOM)
ENDIF. "Check for ( W_IFINAL-VRKME NE W_MVKE-VRKME ) AND ( NOT W_MVKE-VRKME IS INITIAL )
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
ENDIF.
CLEAR W_MARA.
READ TABLE T_MARA
INTO W_MARA
WITH KEY MATNR = W_VB_AKAP-MATNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_IFINAL-ZZTECHSPEC = W_MARA-ZZTECHSPEC.
ENDIF. " SY-SUBRC FOR READ TABLE T_MARA
ENDIF. " IS INITIAL CHECK FOR W_MVKE-KONDM
*-----------------Begin of changes for the change request 2007106------25th July 2007------COMMENTED FROM HERE-----
** This logic is written to avoid records without Material Pricing group whose
** Zcount is selected as 1.
*
* IF P_VKAUS EQ C_1.
*
* IF NOT W_IFINAL-KONDM IS INITIAL AND W_IFINAL-VKAUS IS INITIAL.
*
* APPEND W_IFINAL TO T_IFINAL.
*
* ENDIF.
*
* ELSE.
*-----------------End of changes for the change request 2007106------25th July 2007------COMMENTED TILL HERE-----
APPEND W_IFINAL TO T_IFINAL.
* ENDIF. Commented for the change request 2007106-----25th July 2007
CLEAR: W_VB_AKAP,
W_IFINAL.
ENDLOOP.
SORT T_IFINAL BY VBELN POSNR.
* Checking whether if there are any header quotations which does not have items against them in item internal table
* if such records exist then, ensuring that such records gets deleted from header too, so that inconsitency is removed.
CLEAR W_IHEADER.
LOOP AT T_IHEADER INTO W_IHEADER.
CLEAR W_IFINAL.
READ TABLE T_IFINAL INTO W_IFINAL
WITH KEY VBELN = W_IHEADER-VBELN
BINARY SEARCH.
IF SY-SUBRC NE 0.
W_IHEADER-SELECT = C_X.
MODIFY T_IHEADER FROM W_IHEADER TRANSPORTING SELECT.
ENDIF.
ENDLOOP.
DELETE T_IHEADER WHERE SELECT = C_X.
SORT T_IFINAL BY VBELN POSNR.
ENDFORM. " DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*& Form build_layout
*&---------------------------------------------------------------------*
* To build ALV Layout
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT.
CLEAR : W_LAYOUT.
W_LAYOUT-COLWIDTH_OPTIMIZE = C_X.
W_LAYOUT-BOX_TABNAME = C_HTNAME. "tabname for checkbox
W_LAYOUT-BOX_FIELDNAME = 'SELECT'. "fieldname for checkbox
CLEAR : W_KEYINFO.
W_KEYINFO-HEADER01 = 'VBELN'. "Header1 key information
W_KEYINFO-ITEM01 = 'VBELN'. "Item1 key information
* W_LAYOUT-no_min_linesize = C_X.
* W_LAYOUT-min_linesize = 80.
* W_LAYOUT-max_linesize = 400.
ENDFORM. "build_layout
*&---------------------------------------------------------------------*
*& Form build_events
*&---------------------------------------------------------------------*
* To build ALV Events
*----------------------------------------------------------------------*
FORM BUILD_EVENTS.
CONSTANTS: C_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 1
IMPORTING
ET_EVENTS = T_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
IF SY-SUBRC = 0.
CLEAR W_EVENT.
READ TABLE T_EVENTS INTO W_EVENT
WITH KEY NAME = C_TOP_OF_PAGE.
IF SY-SUBRC = 0.
MOVE C_TOP_OF_PAGE TO W_EVENT-FORM.
MODIFY T_EVENTS INDEX SY-TABIX
FROM W_EVENT
TRANSPORTING FORM.
ENDIF.
ELSE.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "build_events
*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
* To display top of page in ALV Report
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE. "#EC CALLED
DATA :
L_VKORG(35) TYPE C, "Sales Organization
L_VTWEG(35) TYPE C, "Distribution Channel
L_SPART(35) TYPE C. "Division
* Sales Organization
CLEAR W_HEADER.
W_HEADER-TYP = C_S.
CONCATENATE TEXT-004 P_VKORG INTO L_VKORG.
W_HEADER-INFO = L_VKORG.
APPEND W_HEADER TO T_HEADER.
* Distribution Channel
CLEAR W_HEADER.
W_HEADER-TYP = C_S.
CONCATENATE TEXT-005 P_VTWEG INTO L_VTWEG.
W_HEADER-INFO = L_VTWEG.
APPEND W_HEADER TO T_HEADER.
* Division
CLEAR W_HEADER.
W_HEADER-TYP = C_S.
CONCATENATE TEXT-006 P_SPART INTO L_SPART.
W_HEADER-INFO = L_SPART.
APPEND W_HEADER TO T_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = T_HEADER.
ENDFORM. "top_of_page
*&---------------------------------------------------------------------*
*& Form pf_status
*&---------------------------------------------------------------------*
* To set PF-Status (user interface)
*----------------------------------------------------------------------*
* -->EXTAB The excluding table (function codes)
*----------------------------------------------------------------------*
FORM PF_STATUS "#EC CALLED
USING T_EXTAB TYPE SLIS_T_EXTAB.
REFRESH T_EXTAB.
SET PF-STATUS 'ZSTANDARD_FULLSCREEN' EXCLUDING T_EXTAB.
ENDFORM. "pf_status
*&---------------------------------------------------------------------*
*& Form display_alv_report
*&---------------------------------------------------------------------*
* To display ALV report
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_REPORT.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = W_LAYOUT
IT_FIELDCAT = T_FIELDCATALOG
I_DEFAULT = C_X
I_SAVE = C_A
IT_EVENTS = T_EVENTS[]
I_TABNAME_HEADER = 'T_IHEADER'
I_TABNAME_ITEM = 'T_IFINAL'
IS_KEYINFO = W_KEYINFO
TABLES
T_OUTTAB_HEADER = T_IHEADER
T_OUTTAB_ITEM = T_IFINAL
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. "display_alv_report
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* To build ALV Field Catalog
*----------------------------------------------------------------------*
FORM BUILD_FIELDCATALOG .
DATA: L_COUNT TYPE I VALUE 0.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_HTNAME.
W_FIELDCATALOG-FIELDNAME = 'SELECT'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C01.
W_FIELDCATALOG-CHECKBOX = C_X.
W_FIELDCATALOG-EDIT = C_X.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_HTNAME.
W_FIELDCATALOG-FIELDNAME = 'VBELN'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C02.
W_FIELDCATALOG-KEY = C_X. "Fixes the column for no-scroll
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_HTNAME.
W_FIELDCATALOG-FIELDNAME = 'KUNNR'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C04.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR L_COUNT.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'POSNR'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C03.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'KWMENG'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C06.
W_FIELDCATALOG-EMPHASIZE = 'C400'.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'VRKME'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C07.
W_FIELDCATALOG-JUST = C_R.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'KZWI1'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C08.
W_FIELDCATALOG-EMPHASIZE = 'C400'.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'WAERK'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C13.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'VKAUS'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C12.
W_FIELDCATALOG-JUST = C_R.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_FIELDCATALOG-EMPHASIZE = 'C400'.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'ZZTECHSPEC'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C09.
* W_FIELDCATALOG-EMPHASIZE = 'C400'. "Commented for CR 2007096 on 26th July 2007
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'MATNR'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C05.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_FIELDCATALOG-EMPHASIZE = 'C400'.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'PMATN'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C10.
* W_FIELDCATALOG-EMPHASIZE = 'C400'. "Commented for CR 2007096 on 26th July 2007
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
CLEAR W_FIELDCATALOG.
L_COUNT = L_COUNT + 1.
W_FIELDCATALOG-COL_POS = L_COUNT.
W_FIELDCATALOG-TABNAME = C_ITNAME.
W_FIELDCATALOG-FIELDNAME = 'KONDM'.
W_FIELDCATALOG-SELTEXT_M = TEXT-C11.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_FIELDCATALOG-EMPHASIZE = 'C400'.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPEND W_FIELDCATALOG TO T_FIELDCATALOG.
ENDFORM. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* EXIT routine for command handling
*----------------------------------------------------------------------*
* -->L_UCOMM Function code that PAI triggered
* -->W_SELFIELD Information cursor position ALV
*----------------------------------------------------------------------*
FORM USER_COMMAND USING L_UCOMM TYPE SY-UCOMM "#EC CALLED
W_SELFIELD TYPE SLIS_SELFIELD. "#EC NEEDED
* Check function code
CASE L_UCOMM.
WHEN 'CREATE'.
SORT T_IHEADER BY SELECT.
CLEAR W_IHEADER.
READ TABLE T_IHEADER INTO W_IHEADER
WITH KEY SELECT = C_X
BINARY SEARCH.
IF SY-SUBRC <> 0.
MESSAGE I000(ZS) WITH TEXT-M01.
ELSE.
CLEAR : G_ANSWER.
* Dialog box for save prompts
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = TEXT-OP1
DISPLAY_CANCEL_BUTTON = ''
IMPORTING
ANSWER = G_ANSWER
EXCEPTIONS
TEXT_NOT_FOUND = 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.
ELSE.
IF G_ANSWER = 1.
SET PF-STATUS 'ZSTANDARD_SCREEN'.
PERFORM DATA_IDENTITY_4_ACCESS_SEQ.
PERFORM CREATE_CONDITIONS.
PERFORM DISPLAY_RESULT.
ENDIF.
ENDIF.
ENDIF.
WHEN '&REFRESH'.
SUBMIT ZSPRENH069 USING SELECTION-SCREEN 1000
WITH SELECTION-TABLE T_SELECT.
WHEN 'BACKTO'.
SUBMIT ZSPRENH069 USING SELECTION-SCREEN 1000
WITH SELECTION-TABLE T_SELECT.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form DATA_IDENTITY_4_ACCESS_SEQ
*&---------------------------------------------------------------------*
* Seperates the Available Data for processing for both Access Sequences
*----------------------------------------------------------------------*
FORM DATA_IDENTITY_4_ACCESS_SEQ .
CLEAR : W_IFINAL,
W_ACC1,
W_ACC2,
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
W_ACC1_2.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
SORT T_MVKE BY MATNR VKORG VTWEG.
LOOP AT T_IHEADER INTO W_IHEADER WHERE SELECT = C_X.
LOOP AT T_IFINAL INTO W_IFINAL WHERE VBELN EQ W_IHEADER-VBELN.
IF NOT W_IFINAL-PMATN IS INITIAL.
CLEAR W_MVKE.
READ TABLE T_MVKE
INTO W_MVKE
WITH KEY MATNR = W_IFINAL-PMATN
VKORG = P_VKORG
VTWEG = P_VTWEG
BINARY SEARCH.
IF W_MVKE-KONDM IS INITIAL.
IF NOT W_IFINAL-VKAUS IS INITIAL.
W_ACC2-ERROR = C_1.
ELSE.
CLEAR W_ACC2-ERROR.
ENDIF. " ZCOUNT exists for the material
W_ACC2-VBELN = W_IFINAL-VBELN.
W_ACC2-MATNR = W_IFINAL-PMATN.
W_ACC2-KUNNR = W_IFINAL-KUNNR.
W_ACC2-VRKME = W_IFINAL-VRKME.
W_ACC2-ZZTECHSPEC = W_IFINAL-ZZTECHSPEC.
W_ACC2-KSTBM = W_IFINAL-KWMENG.
W_ACC2-KZWI1 = W_IFINAL-KZWI1.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_ACC2-WAERK = W_IFINAL-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPEND W_ACC2 TO T_ACC2.
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
CLEAR W_ACC2.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
ELSE. "Material Pricing Group exists for the records
W_ACC1-KONDM = W_MVKE-KONDM.
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
W_ACC1_2-KONDM = W_MVKE-KONDM.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
IF W_IFINAL-VKAUS IS INITIAL.
* W_ACC1-ZCOUNT = C_01. "Commented for C/R 2007106 on 24th July 2007
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
CLEAR W_ACC1_2.
W_ACC1_2-VBELN = W_IFINAL-VBELN.
W_ACC1_2-KUNNR = W_IFINAL-KUNNR.
W_ACC1_2-VRKME = W_IFINAL-VRKME.
W_ACC1_2-ZZTECHSPEC = W_IFINAL-ZZTECHSPEC.
W_ACC1_2-KSTBM = W_IFINAL-KWMENG.
W_ACC1_2-KZWI1 = W_IFINAL-KZWI1.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_ACC1_2-WAERK = W_IFINAL-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPEND W_ACC1_2 TO T_ACC1_2.
CLEAR W_ACC1_2.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
ELSE.
W_ACC1-ZCOUNT = W_IFINAL-VKAUS+1(2).
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
CLEAR W_ACC1-ERROR.
W_ACC1-VBELN = W_IFINAL-VBELN.
W_ACC1-KUNNR = W_IFINAL-KUNNR.
W_ACC1-VRKME = W_IFINAL-VRKME.
W_ACC1-ZZTECHSPEC = W_IFINAL-ZZTECHSPEC.
W_ACC1-KSTBM = W_IFINAL-KWMENG.
W_ACC1-KZWI1 = W_IFINAL-KZWI1.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_ACC1-WAERK = W_IFINAL-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPEND W_ACC1 TO T_ACC1.
CLEAR W_ACC1.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
ENDIF.
* CLEAR W_ACC1-ERROR. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-VBELN = W_IFINAL-VBELN. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-KUNNR = W_IFINAL-KUNNR. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-VRKME = W_IFINAL-VRKME. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-ZZTECHSPEC = W_IFINAL-ZZTECHSPEC. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-KSTBM = W_IFINAL-KWMENG. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-KZWI1 = W_IFINAL-KZWI1. "Commented for C/R 2007106 on 24th July 2007
* APPEND W_ACC1 TO T_ACC1. "Commented for C/R 2007106 on 24th July 2007
ENDIF.
ELSE. "New Material Number doesn't exist
CLEAR W_MVKE.
READ TABLE T_MVKE
INTO W_MVKE
WITH KEY MATNR = W_IFINAL-MATNR
VKORG = P_VKORG
VTWEG = P_VTWEG
BINARY SEARCH.
IF W_MVKE-KONDM IS INITIAL.
IF NOT W_IFINAL-VKAUS IS INITIAL.
W_ACC2-ERROR = C_1.
ELSE.
CLEAR W_ACC2-ERROR.
ENDIF.
W_ACC2-VBELN = W_IFINAL-VBELN.
W_ACC2-MATNR = W_IFINAL-MATNR.
W_ACC2-KUNNR = W_IFINAL-KUNNR.
W_ACC2-VRKME = W_IFINAL-VRKME.
W_ACC2-ZZTECHSPEC = W_IFINAL-ZZTECHSPEC.
W_ACC2-KSTBM = W_IFINAL-KWMENG.
W_ACC2-KZWI1 = W_IFINAL-KZWI1.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_ACC2-WAERK = W_IFINAL-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPEND W_ACC2 TO T_ACC2.
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
CLEAR W_ACC2.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
ELSE. "Material Pricing Group exists for the records
W_ACC1-KONDM = W_MVKE-KONDM.
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
W_ACC1_2-KONDM = W_MVKE-KONDM.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
IF W_IFINAL-VKAUS IS INITIAL.
W_ACC1-ZCOUNT = C_01.
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
CLEAR W_ACC1_2-ERROR.
W_ACC1_2-VBELN = W_IFINAL-VBELN.
W_ACC1_2-KUNNR = W_IFINAL-KUNNR.
W_ACC1_2-VRKME = W_IFINAL-VRKME.
W_ACC1_2-ZZTECHSPEC = W_IFINAL-ZZTECHSPEC.
W_ACC1_2-KSTBM = W_IFINAL-KWMENG.
W_ACC1_2-KZWI1 = W_IFINAL-KZWI1.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_ACC1_2-WAERK = W_IFINAL-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPEND W_ACC1_2 TO T_ACC1_2.
CLEAR W_ACC1_2.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
ELSE.
W_ACC1-ZCOUNT = W_IFINAL-VKAUS+1(2).
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
CLEAR W_ACC1-ERROR.
W_ACC1-VBELN = W_IFINAL-VBELN.
W_ACC1-KUNNR = W_IFINAL-KUNNR.
W_ACC1-VRKME = W_IFINAL-VRKME.
W_ACC1-ZZTECHSPEC = W_IFINAL-ZZTECHSPEC.
W_ACC1-KSTBM = W_IFINAL-KWMENG.
W_ACC1-KZWI1 = W_IFINAL-KZWI1.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
W_ACC1-WAERK = W_IFINAL-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
APPEND W_ACC1 TO T_ACC1.
CLEAR W_ACC1.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
ENDIF.
* CLEAR W_ACC1-ERROR. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-VBELN = W_IFINAL-VBELN. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-KUNNR = W_IFINAL-KUNNR. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-VRKME = W_IFINAL-VRKME. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-ZZTECHSPEC = W_IFINAL-ZZTECHSPEC. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-KSTBM = W_IFINAL-KWMENG. "Commented for C/R 2007106 on 24th July 2007
* W_ACC1-KZWI1 = W_IFINAL-KZWI1. "Commented for C/R 2007106 on 24th July 2007
* APPEND W_ACC1 TO T_ACC1. "Commented for C/R 2007106 on 24th July 2007
ENDIF.
ENDIF. " CHECK FOR W_IFINAL-PMATN
CLEAR: W_ACC1,
W_ACC2,
W_IFINAL,
*-----------------Begin of changes for the change request 2007106------24th July 2007--------------------------------
W_ACC1_2.
*-----------------End of changes for the change request 2007106------24th July 2007--------------------------------
ENDLOOP. " T_IFINAL
CLEAR W_IHEADER.
ENDLOOP. " T_IHEADER
ENDFORM. " DATA_IDENTITY_4_ACCESS_SEQ
*&---------------------------------------------------------------------*
*& Form CREATE_CONDITIONS
*&---------------------------------------------------------------------*
* Creates the Condition Records for first two access sequences
*----------------------------------------------------------------------*
FORM CREATE_CONDITIONS .
DATA : L_ERROREXIST(1) TYPE C,
L_KONDM TYPE KONDM,
L_KSTBM(18) TYPE C,
L_KBETR(13) TYPE C,
L_FLAG_NEW(1) TYPE C,
L_UNAME TYPE SY-UNAME,
L_ACC1_VBELN TYPE VBELN_VA,
L_ACC2_VBELN TYPE VBELN_VA,
*-----------------Begin of changes for the change request 2007106------25th July 2007--------------------------------
L_ACC1_2_VBELN TYPE VBELN_VA.
*-----------------End of changes for the change request 2007106------25th July 2007--------------------------------
W_PARAMS-DISMODE = C_DISMODE. "Dispaly mode
W_PARAMS-UPDMODE = C_UPDATE. "Update mode
W_PARAMS-CATTMODE = SPACE. "CATT
W_PARAMS-DEFSIZE = C_DYNBEGIN. "Default Size
W_PARAMS-RACOMMIT = C_DYNBEGIN. "Commit
W_PARAMS-NOBINPT = SPACE. "No Batch Input
W_PARAMS-NOBIEND = SPACE. "BI END
** code for the first access sequence..............................starts here
*
*
CLEAR: W_ACC1,
L_UNAME.
SORT T_ACC1 BY VBELN KUNNR KONDM ZCOUNT ASCENDING KSTBM DESCENDING.
LOOP AT T_ACC1 INTO W_ACC1.
CALL FUNCTION 'ENQUEUE_EVVBAKE' "#EC *
EXPORTING
VBELN = W_ACC1-VBELN
EXCEPTIONS
FOREIGN_LOCK = 2.
L_UNAME = SY-MSGV1.
IF SY-SUBRC EQ 2.
MESSAGE E042(V1) WITH W_ACC1-VBELN L_UNAME.
ELSE.
IF NOT W_ACC1-ERROR IS INITIAL.
W_MESSAGE1-VKORG = P_VKORG.
W_MESSAGE1-VTWEG = P_VTWEG.
W_MESSAGE1-KUNNR = W_ACC1-KUNNR.
W_MESSAGE1-KONDM = L_KONDM.
W_MESSAGE1-ZCOUNT = W_ACC1-ZCOUNT.
W_MESSAGE1-MSGTYP = W_BDCMSGCOLL-MSGTYP.
CONCATENATE TEXT-018 TEXT-016 W_ACC1-VBELN INTO W_MESSAGE1-TEXT.
APPEND W_MESSAGE1 TO T_MESSAGE1.
CLEAR W_MESSAGE1.
W_ACC1-ERROR = C_2. " 2 is the status which is used to indicate that this record is processed for error
" message and would be deleted from the internal table before processing the BDC.
MODIFY T_ACC1 FROM W_ACC1 TRANSPORTING ERROR.
ELSE.
CLEAR: L_ERROREXIST,
L_FLAG_NEW.
AT NEW ZCOUNT.
L_FLAG_NEW = C_X.
ENDAT.
IF L_FLAG_NEW EQ C_X.
CLEAR L_FLAG_NEW.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV13A-KSCHL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RV13A-KSCHL'
C_ZBPR.
PERFORM BDC_DYNPRO USING 'SAPLV14A' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV130-SELKZ(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=WEIT'.
PERFORM BDC_FIELD USING 'RV130-SELKZ(01)'
C_X.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '1950'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KONP-KMEIN(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMG-VKORG'
P_VKORG.
PERFORM BDC_FIELD USING 'KOMG-VTWEG'
P_VTWEG.
PERFORM BDC_FIELD USING 'KOMG-KUNNR'
W_ACC1-KUNNR.
PERFORM BDC_FIELD USING 'KOMG-KONDM' "Material Pricing Group
W_ACC1-KONDM.
PERFORM BDC_FIELD USING 'KONP-KMEIN(01)'
W_ACC1-VRKME.
PERFORM BDC_FIELD USING 'KONP-KPEIN(01)'
C_1000.
PERFORM BDC_FIELD USING 'KOMG-ZZCOUNT(01)'
W_ACC1-ZCOUNT.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
PERFORM BDC_FIELD USING 'KONP-KONWA(01)'
W_ACC1-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
PERFORM BDC_FIELD USING 'KOMG-ZZTECHSPEC(01)'
W_ACC1-ZZTECHSPEC.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '1950'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMG-ZZCOUNT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KTXT'.
PERFORM BDC_FIELD USING 'RV130-SELKZ(01)'
C_X.
PERFORM BDC_DYNPRO USING 'SAPLV70T' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LV70T-LTX01(04)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
L_ACC1_VBELN = W_ACC1-VBELN.
SHIFT L_ACC1_VBELN LEFT DELETING LEADING '0'.
PERFORM BDC_FIELD USING 'LV70T-LTX01(04)'
L_ACC1_VBELN.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '1950'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMG-ZZCOUNT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PSTF'.
PERFORM BDC_FIELD USING 'RV130-SELKZ(01)'
C_X.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '0303'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KONM-KBETR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=EINF'.
CLEAR L_KSTBM.
L_KSTBM = W_ACC1-KSTBM.
PERFORM BDC_FIELD USING 'KONM-KSTBM(01)' L_KSTBM.
PERFORM BDC_FIELD USING 'RV13A-KONMS(01)' W_ACC1-VRKME.
CLEAR L_KBETR.
L_KBETR = W_ACC1-KZWI1.
PERFORM BDC_FIELD USING 'KONM-KBETR(01)' L_KBETR.
AT END OF ZCOUNT.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION C_VK11 USING T_BDCDATA "#EC CI_CALLTA
OPTIONS FROM W_PARAMS
MESSAGES INTO T_BDCMSGCOLL.
LOOP AT T_BDCMSGCOLL INTO W_BDCMSGCOLL.
IF W_BDCMSGCOLL-MSGTYP EQ C_E OR
W_BDCMSGCOLL-MSGTYP EQ C_I OR
W_BDCMSGCOLL-MSGTYP EQ C_A.
W_ACC1-ERROR = C_3.
MODIFY T_ACC1 FROM W_ACC1 TRANSPORTING ERROR.
ENDIF.
CLEAR W_BDCMSGCOLL.
ENDLOOP.
* Building the Internal Table to hold Success & Error Messages
CLEAR: W_BDCMSGCOLL,
G_MESSAGE.
LOOP AT T_BDCMSGCOLL INTO W_BDCMSGCOLL.
*Funtion module to output the error and sucess messages
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = W_BDCMSGCOLL-MSGID
MSGNR = W_BDCMSGCOLL-MSGNR
MSGV1 = W_BDCMSGCOLL-MSGV1
MSGV2 = W_BDCMSGCOLL-MSGV2
MSGV3 = W_BDCMSGCOLL-MSGV3
MSGV4 = W_BDCMSGCOLL-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = G_MESSAGE.
W_MESSAGE1-VKORG = P_VKORG.
W_MESSAGE1-VTWEG = P_VTWEG.
W_MESSAGE1-KUNNR = W_ACC1-KUNNR.
W_MESSAGE1-KONDM = W_ACC1-KONDM.
W_MESSAGE1-ZCOUNT = W_ACC1-ZCOUNT.
W_MESSAGE1-MSGTYP = W_BDCMSGCOLL-MSGTYP.
CONCATENATE G_MESSAGE TEXT-016 W_ACC1-VBELN INTO W_MESSAGE1-TEXT.
APPEND W_MESSAGE1 TO T_MESSAGE1.
CLEAR : W_BDCMSGCOLL,
G_MESSAGE,
W_MESSAGE1.
EXIT.
ENDLOOP.
REFRESH : T_BDCDATA,
T_BDCMSGCOLL.
ENDAT.
ENDIF.
ENDIF.
CALL FUNCTION 'DEQUEUE_EVVBAKE'
EXPORTING
VBELN = W_ACC1-VBELN.
CLEAR W_ACC1.
ENDLOOP.
* code for the first access sequence...............................ends here
*-----------------Begin of changes for the change request 2007106------25th July 2007--------------------------------
* code for the intermediate access sequence........................starts here
CLEAR: W_ACC1_2,
L_UNAME.
SORT T_ACC1_2 BY VBELN KUNNR KONDM ASCENDING KSTBM DESCENDING.
LOOP AT T_ACC1_2 INTO W_ACC1_2. "Looping at the Intermediate Access Sequence Data Table.
CALL FUNCTION 'ENQUEUE_EVVBAKE' "#EC *
EXPORTING
VBELN = W_ACC1_2-VBELN
EXCEPTIONS
FOREIGN_LOCK = 2.
L_UNAME = SY-MSGV1.
IF SY-SUBRC EQ 2.
MESSAGE E042(V1) WITH W_ACC1_2-VBELN L_UNAME.
ELSE.
IF NOT W_ACC1_2-ERROR IS INITIAL.
W_MESSAGE1_2-VKORG = P_VKORG.
W_MESSAGE1_2-VTWEG = P_VTWEG.
W_MESSAGE1_2-KUNNR = W_ACC1_2-KUNNR.
W_MESSAGE1_2-KONDM = W_ACC1_2-KONDM.
W_MESSAGE1_2-MSGTYP = C_E.
CONCATENATE TEXT-017 TEXT-016 W_ACC1_2-VBELN INTO W_MESSAGE1_2-TEXT.
APPEND W_MESSAGE1_2 TO T_MESSAGE1_2.
CLEAR W_MESSAGE1_2.
W_ACC1_2-ERROR = C_2. " 2 is the status which is used to indicate that this record is processed for error
" message and would be deleted from the internal table before processing the BDC.
MODIFY T_ACC1_2 FROM W_ACC1_2 TRANSPORTING ERROR.
ELSE.
CLEAR: L_ERROREXIST,
L_FLAG_NEW.
AT NEW KONDM.
L_FLAG_NEW = C_X.
ENDAT.
IF L_FLAG_NEW EQ C_X.
CLEAR L_FLAG_NEW.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV13A-KSCHL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RV13A-KSCHL'
C_ZBPR.
PERFORM BDC_DYNPRO USING 'SAPLV14A' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV130-SELKZ(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=WEIT'.
PERFORM BDC_FIELD USING 'RV130-SELKZ(02)'
C_X.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '1953'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMG-VKORG'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMG-VKORG'
P_VKORG.
PERFORM BDC_FIELD USING 'KOMG-VTWEG'
P_VTWEG.
PERFORM BDC_FIELD USING 'KOMG-KUNNR'
W_ACC1_2-KUNNR.
PERFORM BDC_FIELD USING 'KOMG-KONDM(01)'
W_ACC1_2-KONDM.
PERFORM BDC_FIELD USING 'KOMG-ZZTECHSPEC(01)'
W_ACC1_2-ZZTECHSPEC.
PERFORM BDC_FIELD USING 'KONP-KPEIN(01)'
C_1000.
PERFORM BDC_FIELD USING 'KONP-KMEIN(01)'
W_ACC1_2-VRKME.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
PERFORM BDC_FIELD USING 'KONP-KONWA(01)'
W_ACC1_2-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
PERFORM BDC_DYNPRO USING 'SAPMV13A' '1953'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMG-KONDM(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KTXT'.
PERFORM BDC_FIELD USING 'RV130-SELKZ(01)'
C_X.
PERFORM BDC_DYNPRO USING 'SAPLV70T' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LV70T-LTX01(04)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
CLEAR L_ACC1_2_VBELN.
L_ACC1_2_VBELN = W_ACC1_2-VBELN.
SHIFT L_ACC1_2_VBELN LEFT DELETING LEADING '0'.
PERFORM BDC_FIELD USING 'LV70T-LTX01(04)'
L_ACC1_2_VBELN.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '1953'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMG-KONDM(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PSTF'.
PERFORM BDC_FIELD USING 'RV130-SELKZ(01)'
C_X.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '0303'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KONM-KBETR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=EINF'.
CLEAR L_KSTBM.
L_KSTBM = W_ACC1_2-KSTBM.
PERFORM BDC_FIELD USING 'KONM-KSTBM(01)' L_KSTBM.
PERFORM BDC_FIELD USING 'RV13A-KONMS(01)' W_ACC1_2-VRKME.
CLEAR L_KBETR.
L_KBETR = W_ACC1_2-KZWI1.
PERFORM BDC_FIELD USING 'KONM-KBETR(01)' L_KBETR.
AT END OF KONDM.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION C_VK11 USING T_BDCDATA "#EC CI_CALLTA
OPTIONS FROM W_PARAMS
MESSAGES INTO T_BDCMSGCOLL.
LOOP AT T_BDCMSGCOLL INTO W_BDCMSGCOLL.
IF W_BDCMSGCOLL-MSGTYP EQ C_E OR
W_BDCMSGCOLL-MSGTYP EQ C_I OR
W_BDCMSGCOLL-MSGTYP EQ C_A.
W_ACC1_2-ERROR = C_3.
MODIFY T_ACC1_2 FROM W_ACC1_2 TRANSPORTING ERROR.
ENDIF.
CLEAR W_BDCMSGCOLL.
ENDLOOP.
* Building the Internal Table to hold Success & Error Messages
CLEAR: W_BDCMSGCOLL,
G_MESSAGE.
LOOP AT T_BDCMSGCOLL INTO W_BDCMSGCOLL.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = W_BDCMSGCOLL-MSGID
MSGNR = W_BDCMSGCOLL-MSGNR
MSGV1 = W_BDCMSGCOLL-MSGV1
MSGV2 = W_BDCMSGCOLL-MSGV2
MSGV3 = W_BDCMSGCOLL-MSGV3
MSGV4 = W_BDCMSGCOLL-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = G_MESSAGE.
W_MESSAGE1_2-VKORG = P_VKORG.
W_MESSAGE1_2-VTWEG = P_VTWEG.
W_MESSAGE1_2-KUNNR = W_ACC1_2-KUNNR.
W_MESSAGE1_2-KONDM = W_ACC1_2-KONDM.
W_MESSAGE1_2-MSGTYP = W_BDCMSGCOLL-MSGTYP.
CONCATENATE G_MESSAGE TEXT-016 W_ACC1_2-VBELN INTO W_MESSAGE1_2-TEXT.
APPEND W_MESSAGE1_2 TO T_MESSAGE1_2.
CLEAR : W_BDCMSGCOLL,
G_MESSAGE,
W_MESSAGE1_2.
EXIT.
ENDLOOP.
REFRESH : T_BDCDATA,
T_BDCMSGCOLL.
ENDAT. "AT END OF MATNR
ENDIF. "IF W_ACC1_2-ERROR IS INITIAL / NOT.
ENDIF.
CALL FUNCTION 'DEQUEUE_EVVBAKE'
EXPORTING
VBELN = W_ACC1_2-VBELN.
CLEAR: W_ACC1_2.
ENDLOOP.
* code for the intermediate access sequence........................ends here
*-----------------End of changes for the change request 2007106------25th July 2007--------------------------------
* code for the second access sequence..............................starts here
CLEAR: W_ACC2,
L_UNAME.
SORT T_ACC2 BY VBELN KUNNR MATNR ASCENDING KSTBM DESCENDING.
LOOP AT T_ACC2 INTO W_ACC2. "Looping at the Second Access Sequence Data Table.
CALL FUNCTION 'ENQUEUE_EVVBAKE' "#EC *
EXPORTING
VBELN = W_ACC2-VBELN
EXCEPTIONS
FOREIGN_LOCK = 2.
L_UNAME = SY-MSGV1.
IF SY-SUBRC EQ 2.
MESSAGE E042(V1) WITH W_ACC2-VBELN L_UNAME.
ELSE.
IF NOT W_ACC2-ERROR IS INITIAL.
W_MESSAGE2-VKORG = P_VKORG.
W_MESSAGE2-VTWEG = P_VTWEG.
W_MESSAGE2-KUNNR = W_ACC2-KUNNR.
W_MESSAGE2-MATNR = W_ACC2-MATNR.
W_MESSAGE2-MSGTYP = C_E.
CONCATENATE TEXT-017 TEXT-016 W_ACC2-VBELN INTO W_MESSAGE2-TEXT.
APPEND W_MESSAGE2 TO T_MESSAGE2.
CLEAR W_MESSAGE2.
W_ACC2-ERROR = C_2. " 2 is the status which is used to indicate that this record is processed for error
" message and would be deleted from the internal table before processing the BDC.
MODIFY T_ACC2 FROM W_ACC2 TRANSPORTING ERROR.
ELSE.
CLEAR: L_ERROREXIST,
L_FLAG_NEW.
AT NEW MATNR.
L_FLAG_NEW = C_X.
ENDAT.
IF L_FLAG_NEW EQ C_X.
CLEAR L_FLAG_NEW.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV13A-KSCHL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RV13A-KSCHL'
* C_ZBPR. "Commented on 2nd Aug
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
C_ZBPN.
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
PERFORM BDC_DYNPRO USING 'SAPLV14A' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
* 'RV130-SELKZ(02)'. "Commented on 25th July for Change request 2007106
*-----------------Begin of changes for the change request 2007106------25th July 2007--------------------------------
* 'RV130-SELKZ(03)'. "Commented on 2nd August
*-----------------End of changes for the change request 2007106------25th July 2007--------------------------------
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
'RV130-SELKZ(01)'.
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=WEIT'.
* PERFORM BDC_FIELD USING 'RV130-SELKZ(02)' "Commented on 25th July for Change request 2007106
*-----------------Begin of changes for the change request 2007106------25th July 2007--------------------------------
* PERFORM BDC_FIELD USING 'RV130-SELKZ(03)' "Commented on 2nd August
*-----------------End of changes for the change request 2007106------25th July 2007--------------------------------
*-----------------Begin of changes for the change request xxx------2nd Aug 2007--------------------------------
PERFORM BDC_FIELD USING 'RV130-SELKZ(01)'
*-----------------End of changes for the change request xxx------2nd Aug 2007--------------------------------
C_X.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '1951'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMG-VKORG'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMG-VKORG'
P_VKORG.
PERFORM BDC_FIELD USING 'KOMG-VTWEG'
P_VTWEG.
PERFORM BDC_FIELD USING 'KOMG-KUNNR'
W_ACC2-KUNNR.
PERFORM BDC_FIELD USING 'KOMG-MATNR(01)'
W_ACC2-MATNR.
PERFORM BDC_FIELD USING 'KOMG-ZZTECHSPEC(01)'
W_ACC2-ZZTECHSPEC.
PERFORM BDC_FIELD USING 'KONP-KPEIN(01)'
C_1000.
PERFORM BDC_FIELD USING 'KONP-KMEIN(01)'
W_ACC2-VRKME.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
PERFORM BDC_FIELD USING 'KONP-KONWA(01)'
W_ACC2-WAERK.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
PERFORM BDC_DYNPRO USING 'SAPMV13A' '1951'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMG-MATNR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KTXT'.
PERFORM BDC_FIELD USING 'RV130-SELKZ(01)'
C_X.
PERFORM BDC_DYNPRO USING 'SAPLV70T' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LV70T-LTX01(04)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
L_ACC2_VBELN = W_ACC2-VBELN.
SHIFT L_ACC2_VBELN LEFT DELETING LEADING '0'.
PERFORM BDC_FIELD USING 'LV70T-LTX01(04)'
L_ACC2_VBELN.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '1951'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMG-MATNR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PSTF'.
PERFORM BDC_FIELD USING 'RV130-SELKZ(01)'
C_X.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV13A' '0303'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KONM-KBETR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=EINF'.
CLEAR L_KSTBM.
L_KSTBM = W_ACC2-KSTBM.
PERFORM BDC_FIELD USING 'KONM-KSTBM(01)' L_KSTBM.
PERFORM BDC_FIELD USING 'RV13A-KONMS(01)' W_ACC2-VRKME.
CLEAR L_KBETR.
L_KBETR = W_ACC2-KZWI1.
PERFORM BDC_FIELD USING 'KONM-KBETR(01)' L_KBETR.
*********END OF THE MATERIAL FOR A QUOTATION
AT END OF MATNR.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION C_VK11 USING T_BDCDATA "#EC CI_CALLTA
OPTIONS FROM W_PARAMS
MESSAGES INTO T_BDCMSGCOLL.
LOOP AT T_BDCMSGCOLL INTO W_BDCMSGCOLL.
IF W_BDCMSGCOLL-MSGTYP EQ C_E OR
W_BDCMSGCOLL-MSGTYP EQ C_I OR
W_BDCMSGCOLL-MSGTYP EQ C_A.
W_ACC2-ERROR = C_3.
MODIFY T_ACC2 FROM W_ACC2 TRANSPORTING ERROR.
ENDIF.
CLEAR W_BDCMSGCOLL.
ENDLOOP.
* Building the Internal Table to hold Success & Error Messages
CLEAR: W_BDCMSGCOLL,
G_MESSAGE.
LOOP AT T_BDCMSGCOLL INTO W_BDCMSGCOLL.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = W_BDCMSGCOLL-MSGID
MSGNR = W_BDCMSGCOLL-MSGNR
MSGV1 = W_BDCMSGCOLL-MSGV1
MSGV2 = W_BDCMSGCOLL-MSGV2
MSGV3 = W_BDCMSGCOLL-MSGV3
MSGV4 = W_BDCMSGCOLL-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = G_MESSAGE.
W_MESSAGE2-VKORG = P_VKORG.
W_MESSAGE2-VTWEG = P_VTWEG.
W_MESSAGE2-KUNNR = W_ACC2-KUNNR.
W_MESSAGE2-MATNR = W_ACC2-MATNR.
W_MESSAGE2-MSGTYP = W_BDCMSGCOLL-MSGTYP.
CONCATENATE G_MESSAGE TEXT-016 W_ACC2-VBELN INTO W_MESSAGE2-TEXT.
APPEND W_MESSAGE2 TO T_MESSAGE2.
CLEAR : W_BDCMSGCOLL,
G_MESSAGE,
W_MESSAGE2.
EXIT.
ENDLOOP.
REFRESH : T_BDCDATA,
T_BDCMSGCOLL.
ENDAT. "AT END OF MATNR
ENDIF. "IF W_ACC2-ERROR IS INITIAL / NOT.
ENDIF.
CALL FUNCTION 'DEQUEUE_EVVBAKE'
EXPORTING
VBELN = W_ACC2-VBELN.
CLEAR: W_ACC2.
ENDLOOP.
* code for the second access sequence..............................ends here
* Processing for Change of Sales Document starts here
CLEAR: W_IHEADER,
L_ERROREXIST.
LOOP AT T_IHEADER INTO W_IHEADER WHERE SELECT EQ C_X.
CALL FUNCTION 'ENQUEUE_EVVBAKE' "#EC *
EXPORTING
VBELN = W_IHEADER-VBELN
EXCEPTIONS
FOREIGN_LOCK = 2.
L_UNAME = SY-MSGV1.
IF SY-SUBRC EQ 2.
MESSAGE E042(V1) WITH W_IHEADER-VBELN L_UNAME.
ENDIF.
LOOP AT T_ACC1 INTO W_ACC1 WHERE VBELN = W_IHEADER-VBELN.
IF NOT W_ACC1-ERROR IS INITIAL.
L_ERROREXIST = C_X.
ENDIF.
ENDLOOP.
*-----------------Begin of changes for the change request 2007096------26th July 2007--------------------------------
LOOP AT T_ACC1_2 INTO W_ACC1_2 WHERE VBELN = W_IHEADER-VBELN.
IF NOT W_ACC1_2-ERROR IS INITIAL.
L_ERROREXIST = C_X.
ENDIF.
ENDLOOP.
*-----------------End of changes for the change request 2007096------26th July 2007--------------------------------
LOOP AT T_ACC2 INTO W_ACC2 WHERE VBELN = W_IHEADER-VBELN.
IF NOT W_ACC2-ERROR IS INITIAL.
L_ERROREXIST = C_X.
ENDIF.
ENDLOOP.
IF L_ERROREXIST IS INITIAL.
PERFORM CHANGE_SALESDOCUMENT_STATUS USING W_IHEADER-VBELN.
ENDIF.
CALL FUNCTION 'DEQUEUE_EVVBAKE'
EXPORTING
VBELN = W_IHEADER-VBELN.
CLEAR L_ERROREXIST.
ENDLOOP.
ENDFORM. " CREATE_CONDITIONS
*&---------------------------------------------------------------------*
*& Form CHANGE_SALESDOCUMENT_STATUS
*&---------------------------------------------------------------------*
* Shall change the status of Order Reason for the given Quotation
*----------------------------------------------------------------------*
* --> P_VBELN Quotation Number
*----------------------------------------------------------------------*
FORM CHANGE_SALESDOCUMENT_STATUS USING P_VBELN TYPE VBELN.
DATA :
W_ORDER_HEADER_IN TYPE BAPISDH1,
W_ORDER_HEADER_INX TYPE BAPISDH1X,
W_RETURN TYPE BAPIRET2, "#EC NEEDED
T_RETURN TYPE STANDARD TABLE OF BAPIRET2.
CLEAR: W_ORDER_HEADER_IN,
W_ORDER_HEADER_INX.
W_ORDER_HEADER_IN-ORD_REASON = C_Q3.
W_ORDER_HEADER_INX-UPDATEFLAG = C_U.
W_ORDER_HEADER_INX-ORD_REASON = C_X.
*--Bapi to change status of open sales IHEADERs
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = P_VBELN
ORDER_HEADER_IN = W_ORDER_HEADER_IN
ORDER_HEADER_INX = W_ORDER_HEADER_INX
TABLES
RETURN = T_RETURN.
CLEAR W_RETURN.
READ TABLE T_RETURN INTO W_RETURN WITH KEY TYPE = C_E.
IF NOT W_RETURN IS INITIAL.
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY_OK'
EXPORTING
ENDPOS_COL = C_100
ENDPOS_ROW = C_25
STARTPOS_COL = C_5
STARTPOS_ROW = C_5
TITLETEXT = C_ERROR
TABLES
VALUETAB = T_RETURN
EXCEPTIONS
BREAK_OFF = 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.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = '3'.
ENDIF.
CLEAR: W_ORDER_HEADER_IN,
W_ORDER_HEADER_INX.
ENDFORM. " CHANGE_SALESDOCUMENT_STATUS
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* This form takes the program name and screen number
*----------------------------------------------------------------------*
* -->p_program Program Name
* -->p_screen Screen Number
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING P_PROGRAM TYPE BDCDATA-PROGRAM
P_SCREEN TYPE BDCDATA-DYNPRO.
W_BDCDATA-PROGRAM = P_PROGRAM.
W_BDCDATA-DYNPRO = P_SCREEN.
W_BDCDATA-DYNBEGIN = C_X.
APPEND W_BDCDATA TO T_BDCDATA.
CLEAR W_BDCDATA.
ENDFORM. " bdc_dynpro
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
* This form takes the field name and field value
*----------------------------------------------------------------------*
* -->p_fnam Field Name
* -->p_fval Field Value
*----------------------------------------------------------------------*
FORM BDC_FIELD USING P_FNAM TYPE ANY
P_FVAL TYPE ANY.
W_BDCDATA-FNAM = P_FNAM.
W_BDCDATA-FVAL = P_FVAL.
APPEND W_BDCDATA TO T_BDCDATA.
CLEAR W_BDCDATA.
ENDFORM. " bdc_field
*&---------------------------------------------------------------------*
*& Form DISPLAY_RESULT
*&---------------------------------------------------------------------*
* Displays all the messages regarding posting of Condition Records
*----------------------------------------------------------------------*
FORM DISPLAY_RESULT .
NEW-PAGE LINE-SIZE 255.
* Messages related to the First Access Sequence
IF T_MESSAGE1 IS NOT INITIAL.
SKIP 2.
WRITE : /70 TEXT-008.
SKIP 2.
SORT T_MESSAGE1 BY VKORG.
WRITE : /9 TEXT-010, 24 TEXT-011, 50 TEXT-012, 70 TEXT-013.
CLEAR G_FLAG1.
LOOP AT T_MESSAGE1 INTO W_MESSAGE1.
AT NEW VKORG.
G_FLAG1 = C_X.
ENDAT.
AT NEW VTWEG.
G_FLAG1 = C_X.
ENDAT.
AT NEW KUNNR.
G_FLAG1 = C_X.
ENDAT.
AT NEW KONDM.
G_FLAG1 = C_X.
ENDAT.
IF G_FLAG1 = C_X.
SKIP 1.
WRITE : /9 W_MESSAGE1-VKORG,
24 W_MESSAGE1-VTWEG,
50 W_MESSAGE1-KUNNR,
70 W_MESSAGE1-KONDM.
SKIP 1.
WRITE: /9 TEXT-014, 23 TEXT-019, 45 TEXT-015.
ENDIF.
WRITE : /9 W_MESSAGE1-MSGTYP,
23 W_MESSAGE1-ZCOUNT,
45 W_MESSAGE1-TEXT.
CLEAR: G_FLAG1,
W_MESSAGE1.
ENDLOOP.
REFRESH T_MESSAGE1.
ENDIF.
*-----------------Begin of changes for the change request 2007106------25th July 2007--------------------------------
* Messages related to the Intermediate Access Sequence
IF T_MESSAGE1_2 IS NOT INITIAL.
SKIP 2.
WRITE : /70 TEXT-009.
SKIP 2.
SORT T_MESSAGE1_2 BY VKORG.
WRITE : /9 TEXT-010, 24 TEXT-011, 50 TEXT-012.
CLEAR G_FLAG1.
LOOP AT T_MESSAGE1_2 INTO W_MESSAGE1_2.
AT NEW VKORG.
G_FLAG1 = C_X.
ENDAT.
AT NEW VTWEG.
G_FLAG1 = C_X.
ENDAT.
AT NEW KUNNR.
G_FLAG1 = C_X.
ENDAT.
IF G_FLAG1 = C_X.
SKIP 1.
WRITE : /9 W_MESSAGE1_2-VKORG, 24 W_MESSAGE1_2-VTWEG, 50 W_MESSAGE1_2-KUNNR.
SKIP 1.
WRITE: /9 TEXT-014, 23 TEXT-013, 45 TEXT-015.
ENDIF.
WRITE : /9 W_MESSAGE1_2-MSGTYP, 23 W_MESSAGE1_2-KONDM, 45 W_MESSAGE1_2-TEXT.
CLEAR: G_FLAG1,
W_MESSAGE1_2.
ENDLOOP.
REFRESH T_MESSAGE1_2.
ENDIF.
*-----------------End of changes for the change request 2007106------25th July 2007--------------------------------
* Messages related to the Second Access Sequence
IF T_MESSAGE2 IS NOT INITIAL.
SKIP 2.
WRITE : /70 TEXT-009.
SKIP 2.
SORT T_MESSAGE2 BY VKORG.
WRITE : /9 TEXT-010, 24 TEXT-011, 50 TEXT-012.
CLEAR G_FLAG1.
LOOP AT T_MESSAGE2 INTO W_MESSAGE2.
AT NEW VKORG.
G_FLAG1 = C_X.
ENDAT.
AT NEW VTWEG.
G_FLAG1 = C_X.
ENDAT.
AT NEW KUNNR.
G_FLAG1 = C_X.
ENDAT.
IF G_FLAG1 = C_X.
SKIP 1.
WRITE : /9 W_MESSAGE2-VKORG, 24 W_MESSAGE2-VTWEG, 50 W_MESSAGE2-KUNNR.
SKIP 1.
WRITE: /9 TEXT-014, 23 TEXT-020, 45 TEXT-015.
ENDIF.
WRITE : /9 W_MESSAGE2-MSGTYP, 23 W_MESSAGE2-MATNR, 45 W_MESSAGE2-TEXT.
CLEAR: G_FLAG1,
W_MESSAGE2.
ENDLOOP.
REFRESH T_MESSAGE2.
ENDIF.
ENDFORM. " DISPLAY_RESULT
*&---------------------------------------------------------------------*
*& Form CAPTURE_SCREEN
*&---------------------------------------------------------------------*
* Captures the Selection Screen Values of the present program
*----------------------------------------------------------------------*
FORM CAPTURE_SCREEN .
DATA L_REPID TYPE SY-REPID.
REFRESH T_SELECT.
L_REPID = SY-REPID.
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
CURR_REPORT = L_REPID
TABLES
SELECTION_TABLE = T_SELECT
EXCEPTIONS
NOT_FOUND = 1
NO_REPORT = 2
OTHERS = 3.
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. " CAPTURE_SCREEN
Reward points if this helps,
Kiran
‎2008 Jun 04 7:05 AM
Hi,
Please refer the code below:
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE'
I_callback_user_command = 'USER_COMMAND' "see FORM
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
tables
t_outtab = it_ekko
exceptions
program_error = 1
others = 2.
*------------------------------------------------------------------*
* FORM USER_COMMAND *
*------------------------------------------------------------------*
* --> R_UCOMM *
* --> RS_SELFIELD *
*------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
* Check function code
CASE r_ucomm.
WHEN '&IC1'.
* Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
* Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
* Set parameter ID for transaction screen field
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
* Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
Thanks,
Sriram Ponna.