Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Interactive ALV reports

Former Member
0 Likes
836

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.

1 ACCEPTED SOLUTION
Read only

prasanth_kasturi
Active Contributor
0 Likes
764

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

6 REPLIES 6
Read only

prasanth_kasturi
Active Contributor
0 Likes
765

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

Read only

Former Member
0 Likes
764

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

Read only

Former Member
0 Likes
764

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

Read only

Former Member
0 Likes
764

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

Read only

Former Member
0 Likes
764

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

Read only

Former Member
0 Likes
764

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.