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

schedule lines are duplicating : Code help

Former Member
0 Likes
1,375

Hi experts,

I have a program like following, in the output the <b>schedule lines are duplicating over and over again</b>. Can anyone help with the code.?

I should only have one requested delivery date per sales order line item. Therefore, I should only see line item once.

any code helps is highly appreciated, please bold the added code, such a way that i can execute the code direcly on the editor, that wud be a great help

Thanks

SP

9 REPLIES 9
Read only

Former Member
0 Likes
1,090

Hi experts,

I have a program like following in the output the <b>schedule lines are duplicating over and over again</b>. Can anyone help with the code.?

I should only have one requested delivery date per sales order line item. Therefore, I should only see line item once.

any code helps is highly appreciated, please bold the added code, such a way that i can execute the code direcly on the editor, that wud be a great help

Thanks

SP

______________________________________________________________________

  • Global data declaration

______________________________________________________________________

TYPE-POOLS: slis.

TABLES: vbap, vbrk, vbfa, vbak, vbrp, konv, kna1, bkpf, bsad, bkpf_bsad,

knvv, pa0002, t005u, mvke, lips, likp, vbpa, vbep.

DATA: BEGIN OF i_list OCCURS 0,

vbeln LIKE vbak-vbeln,

posnr LIKE vbap-posnr,

etenr like vbep-etenr,

matnr LIKE vbap-matnr,

erdat LIKE vbap-erdat,

mvgr1 LIKE mvke-mvgr1,

wadat_ist LIKE likp-wadat_ist,

days TYPE i,

werks LIKE vbap-werks,

lgort LIKE vbap-lgort,

kwmeng LIKE vbap-kwmeng," CH01+

lfimg LIKE lips-lfimg," CH01+

pstyv LIKE vbap-pstyv," CH01+

obd LIKE lips-vbeln," CH01+

obd_pos LIKE lips-posnr," CH01+

soldto LIKE vbaK-kunnr," JR+

shipto LIKE vbpa-kunnr," JR+

edatu like vbep-edatu," PR+

END OF i_list.

DATA: i_list2 LIKE i_list OCCURS 0 WITH HEADER LINE,

i_list3 LIKE i_list OCCURS 0 WITH HEADER LINE.

DATA: i_list4 LIKE vbap OCCURS 0 WITH HEADER LINE.

*ALV Output Header

DATA: gt_list_top_of_page TYPE slis_t_listheader,

prognm LIKE sy-repid,

gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',

gt_events TYPE slis_t_event,

is_layout TYPE slis_layout_alv,

is_variant LIKE disvariant,

it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.

DATA:gt_fieldcat TYPE slis_t_fieldcat_alv.

DATA:gt_outtab LIKE i_list OCCURS 0 WITH HEADER LINE.

DATA: g_repid LIKE sy-repid,

g_count LIKE sy-tabix.

SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME TITLE text-t01.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(79) text-t10.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(79) text-t11.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(79) text-t12.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN END OF BLOCK block0.

*/ Selection and Input Parameters

SELECTION-SCREEN BEGIN OF BLOCK blocko WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_vbeln FOR vbap-vbeln, "SO

s_auart FOR vbak-auart DEFAULT 'KB' OBLIGATORY,

s_matnr FOR vbap-matnr," obligatory,

s_mvgr1 FOR mvke-mvgr1,

s_erdat FOR vbap-erdat OBLIGATORY,

s_werks FOR vbap-werks,

s_lgort FOR vbap-lgort,

s_edatu FOR vbep-edatu.

PARAMETERS: p_vkorg LIKE vbak-vkorg DEFAULT '5010'.

SELECTION-SCREEN SKIP 2.

*----


+EC1

  • Addition +EC1

*----


+EC1

PARAMETERS: p_vari LIKE disvariant-variant.

*----


+EC1

  • End Addition +EC1

*----


+EC1

SELECTION-SCREEN END OF BLOCK blocko.

*----


+EC1

  • Addition +EC1

*----


+EC1

DATA: g_save(1) TYPE c,

  • g_default(1) TYPE c,

g_exit(1) TYPE c,

gx_variant LIKE disvariant,

g_variant LIKE disvariant.

*----


+EC1

  • End Addition +EC1

*----


+EC1

  • Initialization fieldcatalog

INITIALIZATION.

  • PERFORM clear_tables.

g_repid = sy-repid.

PERFORM fieldcat_init USING gt_fieldcat[].

*----


+EC1

  • Addition +EC1

*----


+EC1

g_save = 'A'.

PERFORM variant_init.

  • Get default variant

gx_variant = g_variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = g_save

CHANGING

cs_variant = gx_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

p_vari = gx_variant-variant.

ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

PERFORM f4_for_variant.

AT SELECTION-SCREEN.

PERFORM auth_check. "+ESC

PERFORM pai_of_selection_screen.

*----


+EC1

  • End Addition +EC1

*----


+EC1

START-OF-SELECTION.

PERFORM get_data.

PERFORM alv.

END-OF-SELECTION.

----


  • FORM get_data *

----


  • ........ *

----


FORM get_data.

*CH01 - Added kwmeng(order qty) to selection, excluded rejects

*JR -added soldto and shipto code

SELECT avbeln aposnr amatnr aerdat awerks algort

akwmeng apstyv bkunnr cedatu

  • CH01+

INTO

(i_list-vbeln, i_list-posnr, i_list-matnr, i_list-erdat, i_list-werks,

i_list-lgort,

i_list-kwmeng , i_list-pstyv, i_list-soldto,i_list-edatu)

  • CH01+

FROM vbap AS a INNER JOIN vbak AS b ON avbeln = bvbeln

INNER JOIN vbep AS c ON avbeln = cvbeln

WHERE b~vkorg = p_vkorg

AND a~werks IN s_werks

AND a~lgort IN s_lgort

AND b~auart IN s_auart

AND a~vbeln IN s_vbeln

AND a~erdat IN s_erdat

AND a~abgru = ''" CH01+

AND a~matnr IN s_matnr

AND c~edatu IN s_edatu.

APPEND i_list.

ENDSELECT.

COMMIT WORK AND WAIT.

LOOP AT i_list.

SELECT SINGLE mvgr1 INTO i_list-mvgr1 FROM mvke

WHERE matnr = i_list-matnr.

MODIFY i_list.

CLEAR: i_list.

ENDLOOP.

COMMIT WORK AND WAIT.

LOOP AT i_list.

IF i_list-mvgr1 IN s_mvgr1.

CONTINUE.

ELSE.

DELETE i_list.

COMMIT WORK AND WAIT.

ENDIF.

ENDLOOP.

  • CH01 - commented these lines out and redid logic below

  • LOOP AT i_list.

    • select single vbeln into lips-vbeln from lips

    • where vgbel = i_list-vbeln

    • and vgpos = i_list-posnr.

**

    • select single wadat_ist into i_list-wadat_ist from likp

    • where vbeln = lips-vbeln.

*

  • SELECT b~wadat_ist INTO i_list-wadat_ist

  • FROM lips AS a INNER JOIN

  • likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln

  • AND a~vgpos = i_list-posnr.

  • MODIFY i_list.

  • CLEAR: i_list, lips-vbeln.

  • ENDSELECT.

  • ENDLOOP.

  • CH01 - Changed to select multiple delivery lines & del qty

  • summing the total deliveries per OBD# and date

LOOP AT i_list.

SELECT avbeln sum( alfimg ) b~wadat_ist

INTO (i_list-obd , i_list-lfimg , i_list-wadat_ist)

FROM lips AS a INNER JOIN

likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln

AND a~vgpos = i_list-posnr

AND a~pstyv = i_list-pstyv

group by avbeln bwadat_ist.

i_list2 = i_list.

APPEND i_list2.

ENDSELECT.

IF sy-subrc <> 0.

i_list2 = i_list.

APPEND i_list2.

ENDIF.

ENDLOOP.

i_list[] = i_list2[].

*End CH01

COMMIT WORK AND WAIT.

LOOP AT i_list.

IF i_list-wadat_ist IS INITIAL.

CONTINUE.

ELSE.

i_list-days = i_list-wadat_ist - i_list-erdat.

ENDIF.

MODIFY i_list.

CLEAR: i_list.

COMMIT WORK AND WAIT.

ENDLOOP.

COMMIT WORK AND WAIT.

LOOP AT i_list.

IF i_list-vbeln IS INITIAL.

DELETE i_list.

ENDIF.

ENDLOOP.

COMMIT WORK AND WAIT.

*JR

LOOP AT i_list.

SELECT SINGLE KUNNR INTO i_list-shipto FROM vbpa

WHERE vbeln = i_list-vbeln

AND parvw = 'WE'.

MODIFY i_list.

ENDLOOP.

*END JR

gt_outtab[] = i_list[].

COMMIT WORK AND WAIT.

ENDFORM.

----


  • FORM alv *

----


  • ........ *

----


FORM alv.

PERFORM e03_eventtab_build USING gt_events[]. "+EC1

PERFORM e04_comment_build USING gt_list_top_of_page[]. "+EC1

prognm = sy-repid. "+EC1

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_user_command = 'USER_COMMAND'

i_callback_program = g_repid

it_fieldcat = gt_fieldcat[]

it_events = gt_events[] "+ESC

it_sort = it_sort[]

*----


+EC1

  • Addition +EC1

*----


+EC1

is_variant = g_variant

i_save = g_save

*----


+EC1

  • End Addition +EC1

*----


+EC1

TABLES

t_outtab = gt_outtab.

COMMIT WORK AND WAIT.

ENDFORM.

----


  • FORM fieldcat_init *

----


  • ........ *

----


  • --> I_FIELDCAT *

----


FORM fieldcat_init

USING i_fieldcat TYPE slis_t_fieldcat_alv.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

DATA: pos TYPE i VALUE 1.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'VBELN'.

ls_fieldcat-ref_tabname = 'VBAK'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'POSNR'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MVGR1'.

ls_fieldcat-ref_tabname = 'MVKE'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WERKS'.

ls_fieldcat-ref_tabname = 'VBAP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'LGORT'.

ls_fieldcat-ref_tabname = 'VBAP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ERDAT'.

ls_fieldcat-ref_tabname = 'VBAP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WADAT_IST'.

ls_fieldcat-ref_tabname = 'LIKP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'DAYS'.

ls_fieldcat-ref_fieldname = 'DAYS'.

ls_fieldcat-seltext_s = '# Of Days'.

ls_fieldcat-seltext_m = '# Of Days'.

ls_fieldcat-seltext_l = '# Of Days'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

*Begin CH01

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'KWMENG'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-outputlen = 7.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'LFIMG'.

ls_fieldcat-ref_tabname = 'LIPS'.

ls_fieldcat-outputlen = 7.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'OBD'.

ls_fieldcat-seltext_s = 'OBD'.

ls_fieldcat-seltext_m = 'Outbound Del'.

ls_fieldcat-seltext_l = 'Outbound Delivery'.

ls_fieldcat-outputlen = 10.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

  • ls_fieldcat-col_pos = pos.

  • ls_fieldcat-fieldname = 'OBD_POS'.

  • ls_fieldcat-seltext_s = 'OBD Ln'.

  • ls_fieldcat-seltext_m = 'Outbound Del Ln'.

  • ls_fieldcat-seltext_l = 'Outbound Del Line'.

  • ls_fieldcat-outputlen = 10.

  • APPEND ls_fieldcat TO i_fieldcat.

  • CLEAR ls_fieldcat.

*

*End CH01

*JR

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SOLDTO'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-seltext_m = 'Sold To'.

ls_fieldcat-seltext_l = 'Sold To'.

ls_fieldcat-outputlen = 10.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SHIPTO'.

ls_fieldcat-ref_tabname = 'VBPA'.

ls_fieldcat-seltext_m = 'Ship To'.

ls_fieldcat-seltext_l = 'Ship To'.

ls_fieldcat-outputlen = 10.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ETERN'.

ls_fieldcat-ref_tabname = 'VBEP'.

ls_fieldcat-seltext_m = 'Schedule line number'.

ls_fieldcat-seltext_l = 'Schedule line number'.

  • ls_fieldcat-key = 'Schedule line number'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

*END JR

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'EDATU'.

ls_fieldcat-ref_tabname = 'VBEP'.

ls_fieldcat-seltext_m = 'Requested Delivery date'.

ls_fieldcat-seltext_l = 'Requested Delivery date'.

ls_fieldcat-outputlen = 20.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

*FOR ALV SORT & SUBTOTAL

CLEAR it_sort.

it_sort-spos = '0'.

it_sort-fieldname = 'VBELN'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

CLEAR it_sort.

it_sort-spos = '1'.

it_sort-fieldname = 'POSNR'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

it_sort-subtot = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

*

CLEAR it_sort.

it_sort-spos = '2'.

it_sort-fieldname = 'MATNR'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

CLEAR it_sort.

it_sort-spos = '3'.

it_sort-fieldname = 'MVGR1'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

*

CLEAR it_sort.

it_sort-spos = '4'.

it_sort-fieldname = 'ERDAT'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

CLEAR it_sort.

it_sort-spos = '5'.

it_sort-fieldname = 'WADAT_IST'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-down = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '6'.

  • it_sort-fieldname = 'PERNR'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

*

  • CLEAR it_sort.

  • it_sort-spos = '7'.

  • it_sort-fieldname = 'VORNA'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '8'.

  • it_sort-fieldname = 'NACHN'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '9'.

  • it_sort-fieldname = 'VKGRP'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '10'.

  • it_sort-fieldname = 'VBELN'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '11'.

  • it_sort-fieldname = 'ERDAT'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '12'.

  • it_sort-fieldname = 'BEZEI'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • clear it_sort.

  • it_sort-spos = '1'.

  • it_sort-fieldname = 'BELNR'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

  • append it_sort.

ENDFORM.

*----


+EC1

  • Addition +EC1

*----


+EC1

&----


*& Form VARIANT_INIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM variant_init.

*

CLEAR g_variant.

g_variant-report = g_repid.

ENDFORM. " VARIANT_INIT

----


  • FORM f4_for_variant *

----


  • ........ *

----


FORM f4_for_variant.

*

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = g_variant

i_save = g_save

  • it_default_fieldcat =

IMPORTING

e_exit = g_exit

es_variant = gx_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 2.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF g_exit = space.

p_vari = gx_variant-variant.

ENDIF.

ENDIF.

ENDFORM.

&----


*& Form PAI_OF_SELECTION_SCREEN

&----


  • text

----


FORM pai_of_selection_screen.

*

IF NOT p_vari IS INITIAL.

MOVE g_variant TO gx_variant.

MOVE p_vari TO gx_variant-variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = g_save

CHANGING

cs_variant = gx_variant.

g_variant = gx_variant.

ELSE.

PERFORM variant_init.

ENDIF.

ENDFORM. " PAI_OF_SELECTION_SCREEN

*----


+EC1

  • End Addition +EC1

*----


+EC1

----


  • FORM e03_eventtab_build *

----


  • ........ *

----


  • --> E03_LT_EVENTS *

----


FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.

DATA: ls_event TYPE slis_alv_event.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = e03_lt_events.

READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page

INTO ls_event.

IF sy-subrc = 0.

MOVE gc_formname_top_of_page TO ls_event-form.

APPEND ls_event TO e03_lt_events.

ENDIF.

ENDFORM.

----


  • FORM e04_comment_build *

----


  • ........ *

----


  • --> E04_LT_TOP_OF_PAGE *

----


FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.

DATA: ls_line TYPE slis_listheader.

*Report Title

CLEAR ls_line.

ls_line-typ = 'H'.

ls_line-info = text-007.

APPEND ls_line TO e04_lt_top_of_page.

*

*

**Doc Type Desc.

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-008.

    • ls_line-info = p_matnr.

  • append ls_line to e04_lt_top_of_page.

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-009.

    • ls_line-info = p_werks.

  • append ls_line to e04_lt_top_of_page.

*

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-010.

    • ls_line-info = p_stlan.

  • append ls_line to e04_lt_top_of_page.

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-011.

    • ls_line-info = p_stlal.

  • append ls_line to e04_lt_top_of_page.

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-012.

    • ls_line-info = p_stlal.

  • append ls_line to e04_lt_top_of_page.

ENDFORM.

----


  • FORM top_of_page *

----


  • ........ *

----


FORM top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = gt_list_top_of_page.

ENDFORM.

----


  • FORM auth_check *

----


  • ........ *

----


FORM auth_check.

AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'

ID 'VKORG' FIELD p_vkorg.

IF sy-subrc NE 0.

MESSAGE e054 WITH p_vkorg.

ENDIF.

ENDFORM. " auth_check

*&----


*& Form USER_COMMAND

*&----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

PERFORM display_so_order USING r_ucomm

rs_selfield.

ENDCASE.

ENDFORM.

&----


*& Form display_sales_order

&----


  • text

----


  • -->P_R_UCOMM text

  • -->P_RS_SELFIELD text

----


FORM display_so_order USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE rs_selfield-sel_tab_field.

WHEN '1-VBELN'.

SET PARAMETER ID 'AUN' FIELD rs_selfield-value.

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

WHEN '1-MATNR'.

SET PARAMETER ID 'MAT' FIELD rs_selfield-value.

CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

WHEN '1-OBD'.

SET PARAMETER ID 'VL' FIELD rs_selfield-value.

CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.

WHEN OTHERS.

MESSAGE i000(z1) WITH 'Please Click on the Valid Selection'.

EXIT.

ENDCASE.

ENDFORM. " display_sales_order

----


  • FORM EDit_table *

----


  • ........ *

----


Read only

0 Likes
1,090

Please populate the field in you i_list and than you would see that there is single date for each schedule line.

SELECT avbeln aposnr <b>cetenr</b> amatnr aerdat awerks a~lgort

akwmeng apstyv bkunnr cedatu

  • CH01+

INTO

(i_list-vbeln, i_list-posnr, <b>i_list-etenr,</b> i_list-matnr, i_list-erdat, i_list-werks,

i_list-lgort,

i_list-kwmeng , i_list-pstyv, i_list-soldto,i_list-edatu)

  • CH01+

FROM vbap AS a INNER JOIN vbak AS b ON avbeln = bvbeln

INNER JOIN vbep AS c ON avbeln = cvbeln

WHERE b~vkorg = p_vkorg

AND a~werks IN s_werks

AND a~lgort IN s_lgort

AND b~auart IN s_auart

AND a~vbeln IN s_vbeln

AND a~erdat IN s_erdat

AND a~abgru = ''" CH01+

AND a~matnr IN s_matnr

AND c~edatu IN s_edatu.

Read only

Former Member
0 Likes
1,090

HI,

Include <b>delete ajacent duplicates</b> statement ...

Regards,

santosh

Read only

0 Likes
1,090

THanks santhosh where should add this?

Thanks

SP

Read only

0 Likes
1,090

hi,

You can add it before you send the data in to your final Internal table ... or after the select statements ..

but make sure that you use sort statement before using this ....

Reward if it helps ..

Regards,

Santosh

Read only

0 Likes
1,090

Instead of using select and Endselect use into corresponding fields of table

SELECT avbeln aposnr amatnr aerdat awerks algort

akwmeng apstyv bkunnr cedatu

  • CH01+

INTO

(i_list-vbeln, i_list-posnr, i_list-matnr, i_list-erdat, i_list-werks,

i_list-lgort,

i_list-kwmeng , i_list-pstyv, i_list-soldto,i_list-edatu)

  • CH01+

FROM vbap AS a INNER JOIN vbak AS b ON avbeln = bvbeln

INNER JOIN vbep AS c ON avbeln = cvbeln

WHERE b~vkorg = p_vkorg

AND a~werks IN s_werks

AND a~lgort IN s_lgort

AND b~auart IN s_auart

AND a~vbeln IN s_vbeln

AND a~erdat IN s_erdat

AND a~abgru = ''" CH01+

AND a~matnr IN s_matnr

AND c~edatu IN s_edatu.

APPEND i_list.

ENDSELECT.

Pass the value directly into internal table.

SELECT avbeln aposnr amatnr aerdat awerks algort

akwmeng apstyv bkunnr cedatu

  • CH01+

<b>INTO corresponding fields of table i_list</b>

  • CH01+

FROM vbap AS a INNER JOIN vbak AS b ON avbeln = bvbeln

INNER JOIN vbep AS c ON avbeln = cvbeln

WHERE b~vkorg = p_vkorg

AND a~werks IN s_werks

AND a~lgort IN s_lgort

AND b~auart IN s_auart

AND a~vbeln IN s_vbeln

AND a~erdat IN s_erdat

AND a~abgru = ''" CH01+

AND a~matnr IN s_matnr

AND c~edatu IN s_edatu.

<b>Add the delete duplicate entries after this select query.</b>

Also in the below statements no need of commit work and wait statements.

LOOP AT i_list.

SELECT SINGLE mvgr1 INTO i_list-mvgr1 FROM mvke

WHERE matnr = i_list-matnr.

MODIFY i_list.

CLEAR: i_list.

ENDLOOP.

COMMIT WORK AND WAIT.

Modify statement directly modifies the internal table, so need of commit work and wait.

<b>I think the perform of this program will be very slow.

Don't use the select queries inside the loop. endloop.

Declare a internal table and use <b>for all entries in i_list</b> statement while selecting data from tables lips, mvke etc.</b>

Regards,

Prakash.

Read only

Former Member
0 Likes
1,090

Hi,

If you are filtering the requested delivery date from the schedule line you will get all the schedule lines available in the line item..

If it is okay for you to display the first delivery date in the scheduline lines...Then you can use the sort and delete adjacent duplicates...

The changes are marked in bold..

______________________________________________________________________

  • Global data declaration

______________________________________________________________________

TYPE-POOLS: slis.

TABLES: vbap, vbrk, vbfa, vbak, vbrp, konv, kna1, bkpf, bsad, bkpf_bsad,

knvv, pa0002, t005u, mvke, lips, likp, vbpa, vbep.

DATA: BEGIN OF i_list OCCURS 0,

vbeln LIKE vbak-vbeln,

posnr LIKE vbap-posnr,

etenr like vbep-etenr,

matnr LIKE vbap-matnr,

erdat LIKE vbap-erdat,

mvgr1 LIKE mvke-mvgr1,

wadat_ist LIKE likp-wadat_ist,

days TYPE i,

werks LIKE vbap-werks,

lgort LIKE vbap-lgort,

kwmeng LIKE vbap-kwmeng," CH01+

lfimg LIKE lips-lfimg," CH01+

pstyv LIKE vbap-pstyv," CH01+

obd LIKE lips-vbeln," CH01+

obd_pos LIKE lips-posnr," CH01+

soldto LIKE vbaK-kunnr," JR+

shipto LIKE vbpa-kunnr," JR+

edatu like vbep-edatu," PR+

END OF i_list.

DATA: i_list2 LIKE i_list OCCURS 0 WITH HEADER LINE,

i_list3 LIKE i_list OCCURS 0 WITH HEADER LINE.

DATA: i_list4 LIKE vbap OCCURS 0 WITH HEADER LINE.

*ALV Output Header

DATA: gt_list_top_of_page TYPE slis_t_listheader,

prognm LIKE sy-repid,

gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',

gt_events TYPE slis_t_event,

is_layout TYPE slis_layout_alv,

is_variant LIKE disvariant,

it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.

DATA:gt_fieldcat TYPE slis_t_fieldcat_alv.

DATA:gt_outtab LIKE i_list OCCURS 0 WITH HEADER LINE.

DATA: g_repid LIKE sy-repid,

g_count LIKE sy-tabix.

SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME TITLE text-t01.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(79) text-t10.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(79) text-t11.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(79) text-t12.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN END OF BLOCK block0.

*/ Selection and Input Parameters

SELECTION-SCREEN BEGIN OF BLOCK blocko WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_vbeln FOR vbap-vbeln, "SO

s_auart FOR vbak-auart DEFAULT 'KB' OBLIGATORY,

s_matnr FOR vbap-matnr," obligatory,

s_mvgr1 FOR mvke-mvgr1,

s_erdat FOR vbap-erdat OBLIGATORY,

s_werks FOR vbap-werks,

s_lgort FOR vbap-lgort,

s_edatu FOR vbep-edatu.

PARAMETERS: p_vkorg LIKE vbak-vkorg DEFAULT '5010'.

SELECTION-SCREEN SKIP 2.

*----


+EC1

  • Addition +EC1

*----


+EC1

PARAMETERS: p_vari LIKE disvariant-variant.

*----


+EC1

  • End Addition +EC1

*----


+EC1

SELECTION-SCREEN END OF BLOCK blocko.

*----


+EC1

  • Addition +EC1

*----


+EC1

DATA: g_save(1) TYPE c,

  • g_default(1) TYPE c,

g_exit(1) TYPE c,

gx_variant LIKE disvariant,

g_variant LIKE disvariant.

*----


+EC1

  • End Addition +EC1

*----


+EC1

  • Initialization fieldcatalog

INITIALIZATION.

  • PERFORM clear_tables.

g_repid = sy-repid.

PERFORM fieldcat_init USING gt_fieldcat[].

*----


+EC1

  • Addition +EC1

*----


+EC1

g_save = 'A'.

PERFORM variant_init.

  • Get default variant

gx_variant = g_variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = g_save

CHANGING

cs_variant = gx_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

p_vari = gx_variant-variant.

ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

PERFORM f4_for_variant.

AT SELECTION-SCREEN.

PERFORM auth_check. "+ESC

PERFORM pai_of_selection_screen.

*----


+EC1

  • End Addition +EC1

*----


+EC1

START-OF-SELECTION.

PERFORM get_data.

PERFORM alv.

END-OF-SELECTION.

----


  • FORM get_data *

----


  • ........ *

----


FORM get_data.

*CH01 - Added kwmeng(order qty) to selection, excluded rejects

*JR -added soldto and shipto code

SELECT avbeln aposnr amatnr aerdat awerks algort

akwmeng apstyv bkunnr cedatu

  • CH01+

INTO

(i_list-vbeln, i_list-posnr, i_list-matnr, i_list-erdat, i_list-werks,

i_list-lgort,

i_list-kwmeng , i_list-pstyv, i_list-soldto,i_list-edatu)

  • CH01+

FROM vbap AS a INNER JOIN vbak AS b ON avbeln = bvbeln

INNER JOIN vbep AS c ON avbeln = cvbeln

WHERE b~vkorg = p_vkorg

AND a~werks IN s_werks

AND a~lgort IN s_lgort

AND b~auart IN s_auart

AND a~vbeln IN s_vbeln

AND a~erdat IN s_erdat

AND a~abgru = ''" CH01+

AND a~matnr IN s_matnr

AND c~edatu IN s_edatu.

APPEND i_list.

ENDSELECT.

COMMIT WORK AND WAIT.

<b>SORT i_list BY VBELN POSNR EDATU.

DELETE ADJACENT DUPLICATES FROM i_list COMPARING vbeln posnr.</b>

LOOP AT i_list.

SELECT SINGLE mvgr1 INTO i_list-mvgr1 FROM mvke

WHERE matnr = i_list-matnr.

MODIFY i_list.

CLEAR: i_list.

ENDLOOP.

COMMIT WORK AND WAIT.

LOOP AT i_list.

IF i_list-mvgr1 IN s_mvgr1.

CONTINUE.

ELSE.

DELETE i_list.

COMMIT WORK AND WAIT.

ENDIF.

ENDLOOP.

  • CH01 - commented these lines out and redid logic below

  • LOOP AT i_list.

    • select single vbeln into lips-vbeln from lips

    • where vgbel = i_list-vbeln

    • and vgpos = i_list-posnr.

**

    • select single wadat_ist into i_list-wadat_ist from likp

    • where vbeln = lips-vbeln.

*

  • SELECT b~wadat_ist INTO i_list-wadat_ist

  • FROM lips AS a INNER JOIN

  • likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln

  • AND a~vgpos = i_list-posnr.

  • MODIFY i_list.

  • CLEAR: i_list, lips-vbeln.

  • ENDSELECT.

  • ENDLOOP.

  • CH01 - Changed to select multiple delivery lines & del qty

  • summing the total deliveries per OBD# and date

LOOP AT i_list.

SELECT avbeln sum( alfimg ) b~wadat_ist

INTO (i_list-obd , i_list-lfimg , i_list-wadat_ist)

FROM lips AS a INNER JOIN

likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln

AND a~vgpos = i_list-posnr

AND a~pstyv = i_list-pstyv

group by avbeln bwadat_ist.

i_list2 = i_list.

APPEND i_list2.

ENDSELECT.

IF sy-subrc <> 0.

i_list2 = i_list.

APPEND i_list2.

ENDIF.

ENDLOOP.

i_list[] = i_list2[].

*End CH01

COMMIT WORK AND WAIT.

LOOP AT i_list.

IF i_list-wadat_ist IS INITIAL.

CONTINUE.

ELSE.

i_list-days = i_list-wadat_ist - i_list-erdat.

ENDIF.

MODIFY i_list.

CLEAR: i_list.

COMMIT WORK AND WAIT.

ENDLOOP.

COMMIT WORK AND WAIT.

LOOP AT i_list.

IF i_list-vbeln IS INITIAL.

DELETE i_list.

ENDIF.

ENDLOOP.

COMMIT WORK AND WAIT.

*JR

LOOP AT i_list.

SELECT SINGLE KUNNR INTO i_list-shipto FROM vbpa

WHERE vbeln = i_list-vbeln

AND parvw = 'WE'.

MODIFY i_list.

ENDLOOP.

*END JR

gt_outtab[] = i_list[].

COMMIT WORK AND WAIT.

ENDFORM.

----


  • FORM alv *

----


  • ........ *

----


FORM alv.

PERFORM e03_eventtab_build USING gt_events[]. "+EC1

PERFORM e04_comment_build USING gt_list_top_of_page[]. "+EC1

prognm = sy-repid. "+EC1

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_user_command = 'USER_COMMAND'

i_callback_program = g_repid

it_fieldcat = gt_fieldcat[]

it_events = gt_events[] "+ESC

it_sort = it_sort[]

*----


+EC1

  • Addition +EC1

*----


+EC1

is_variant = g_variant

i_save = g_save

*----


+EC1

  • End Addition +EC1

*----


+EC1

TABLES

t_outtab = gt_outtab.

COMMIT WORK AND WAIT.

ENDFORM.

----


  • FORM fieldcat_init *

----


  • ........ *

----


  • --> I_FIELDCAT *

----


FORM fieldcat_init

USING i_fieldcat TYPE slis_t_fieldcat_alv.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

DATA: pos TYPE i VALUE 1.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'VBELN'.

ls_fieldcat-ref_tabname = 'VBAK'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'POSNR'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MVGR1'.

ls_fieldcat-ref_tabname = 'MVKE'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WERKS'.

ls_fieldcat-ref_tabname = 'VBAP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'LGORT'.

ls_fieldcat-ref_tabname = 'VBAP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ERDAT'.

ls_fieldcat-ref_tabname = 'VBAP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WADAT_IST'.

ls_fieldcat-ref_tabname = 'LIKP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'DAYS'.

ls_fieldcat-ref_fieldname = 'DAYS'.

ls_fieldcat-seltext_s = '# Of Days'.

ls_fieldcat-seltext_m = '# Of Days'.

ls_fieldcat-seltext_l = '# Of Days'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

*Begin CH01

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'KWMENG'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-outputlen = 7.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'LFIMG'.

ls_fieldcat-ref_tabname = 'LIPS'.

ls_fieldcat-outputlen = 7.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'OBD'.

ls_fieldcat-seltext_s = 'OBD'.

ls_fieldcat-seltext_m = 'Outbound Del'.

ls_fieldcat-seltext_l = 'Outbound Delivery'.

ls_fieldcat-outputlen = 10.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

  • ls_fieldcat-col_pos = pos.

  • ls_fieldcat-fieldname = 'OBD_POS'.

  • ls_fieldcat-seltext_s = 'OBD Ln'.

  • ls_fieldcat-seltext_m = 'Outbound Del Ln'.

  • ls_fieldcat-seltext_l = 'Outbound Del Line'.

  • ls_fieldcat-outputlen = 10.

  • APPEND ls_fieldcat TO i_fieldcat.

  • CLEAR ls_fieldcat.

*

*End CH01

*JR

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SOLDTO'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-seltext_m = 'Sold To'.

ls_fieldcat-seltext_l = 'Sold To'.

ls_fieldcat-outputlen = 10.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SHIPTO'.

ls_fieldcat-ref_tabname = 'VBPA'.

ls_fieldcat-seltext_m = 'Ship To'.

ls_fieldcat-seltext_l = 'Ship To'.

ls_fieldcat-outputlen = 10.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ETERN'.

ls_fieldcat-ref_tabname = 'VBEP'.

ls_fieldcat-seltext_m = 'Schedule line number'.

ls_fieldcat-seltext_l = 'Schedule line number'.

  • ls_fieldcat-key = 'Schedule line number'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

*END JR

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'EDATU'.

ls_fieldcat-ref_tabname = 'VBEP'.

ls_fieldcat-seltext_m = 'Requested Delivery date'.

ls_fieldcat-seltext_l = 'Requested Delivery date'.

ls_fieldcat-outputlen = 20.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

*FOR ALV SORT & SUBTOTAL

CLEAR it_sort.

it_sort-spos = '0'.

it_sort-fieldname = 'VBELN'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

CLEAR it_sort.

it_sort-spos = '1'.

it_sort-fieldname = 'POSNR'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

it_sort-subtot = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

*

CLEAR it_sort.

it_sort-spos = '2'.

it_sort-fieldname = 'MATNR'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

CLEAR it_sort.

it_sort-spos = '3'.

it_sort-fieldname = 'MVGR1'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

*

CLEAR it_sort.

it_sort-spos = '4'.

it_sort-fieldname = 'ERDAT'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

CLEAR it_sort.

it_sort-spos = '5'.

it_sort-fieldname = 'WADAT_IST'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-down = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '6'.

  • it_sort-fieldname = 'PERNR'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

*

  • CLEAR it_sort.

  • it_sort-spos = '7'.

  • it_sort-fieldname = 'VORNA'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '8'.

  • it_sort-fieldname = 'NACHN'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '9'.

  • it_sort-fieldname = 'VKGRP'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '10'.

  • it_sort-fieldname = 'VBELN'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '11'.

  • it_sort-fieldname = 'ERDAT'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '12'.

  • it_sort-fieldname = 'BEZEI'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • clear it_sort.

  • it_sort-spos = '1'.

  • it_sort-fieldname = 'BELNR'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

  • append it_sort.

ENDFORM.

*----


+EC1

  • Addition +EC1

*----


+EC1

&----


*& Form VARIANT_INIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM variant_init.

*

CLEAR g_variant.

g_variant-report = g_repid.

ENDFORM. " VARIANT_INIT

----


  • FORM f4_for_variant *

----


  • ........ *

----


FORM f4_for_variant.

*

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = g_variant

i_save = g_save

  • it_default_fieldcat =

IMPORTING

e_exit = g_exit

es_variant = gx_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 2.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF g_exit = space.

p_vari = gx_variant-variant.

ENDIF.

ENDIF.

ENDFORM.

&----


*& Form PAI_OF_SELECTION_SCREEN

&----


  • text

----


FORM pai_of_selection_screen.

*

IF NOT p_vari IS INITIAL.

MOVE g_variant TO gx_variant.

MOVE p_vari TO gx_variant-variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = g_save

CHANGING

cs_variant = gx_variant.

g_variant = gx_variant.

ELSE.

PERFORM variant_init.

ENDIF.

ENDFORM. " PAI_OF_SELECTION_SCREEN

*----


+EC1

  • End Addition +EC1

*----


+EC1

----


  • FORM e03_eventtab_build *

----


  • ........ *

----


  • --> E03_LT_EVENTS *

----


FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.

DATA: ls_event TYPE slis_alv_event.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = e03_lt_events.

READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page

INTO ls_event.

IF sy-subrc = 0.

MOVE gc_formname_top_of_page TO ls_event-form.

APPEND ls_event TO e03_lt_events.

ENDIF.

ENDFORM.

----


  • FORM e04_comment_build *

----


  • ........ *

----


  • --> E04_LT_TOP_OF_PAGE *

----


FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.

DATA: ls_line TYPE slis_listheader.

*Report Title

CLEAR ls_line.

ls_line-typ = 'H'.

ls_line-info = text-007.

APPEND ls_line TO e04_lt_top_of_page.

*

*

**Doc Type Desc.

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-008.

    • ls_line-info = p_matnr.

  • append ls_line to e04_lt_top_of_page.

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-009.

    • ls_line-info = p_werks.

  • append ls_line to e04_lt_top_of_page.

*

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-010.

    • ls_line-info = p_stlan.

  • append ls_line to e04_lt_top_of_page.

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-011.

    • ls_line-info = p_stlal.

  • append ls_line to e04_lt_top_of_page.

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-012.

    • ls_line-info = p_stlal.

  • append ls_line to e04_lt_top_of_page.

ENDFORM.

----


  • FORM top_of_page *

----


  • ........ *

----


FORM top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = gt_list_top_of_page.

ENDFORM.

----


  • FORM auth_check *

----


  • ........ *

----


FORM auth_check.

AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'

ID 'VKORG' FIELD p_vkorg.

IF sy-subrc NE 0.

MESSAGE e054 WITH p_vkorg.

ENDIF.

ENDFORM. " auth_check

*&----


*& Form USER_COMMAND

*&----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

PERFORM display_so_order USING r_ucomm

rs_selfield.

ENDCASE.

ENDFORM.

&----


*& Form display_sales_order

&----


  • text

----


  • -->P_R_UCOMM text

  • -->P_RS_SELFIELD text

----


FORM display_so_order USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE rs_selfield-sel_tab_field.

WHEN '1-VBELN'.

SET PARAMETER ID 'AUN' FIELD rs_selfield-value.

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

WHEN '1-MATNR'.

SET PARAMETER ID 'MAT' FIELD rs_selfield-value.

CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

WHEN '1-OBD'.

SET PARAMETER ID 'VL' FIELD rs_selfield-value.

CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.

WHEN OTHERS.

MESSAGE i000(z1) WITH 'Please Click on the Valid Selection'.

EXIT.

ENDCASE.

ENDFORM. " display_sales_order

----


  • FORM EDit_table *

----


  • ........ *

----


Read only

0 Likes
1,090

Hi

I should only have one requested delivery date per sales order line item, can anyone help with the code.

Thanks

SP

Read only

Former Member
0 Likes
1,090

Hi,

Please check my reply..

Hi,

If you are filtering the requested delivery date from the schedule line you will get all the schedule lines available in the line item..

If it is okay for you to display the first delivery date in the scheduline lines...Then you can use the sort and delete adjacent duplicates...

The changes are marked in bold..

______________________________________________________________________

  • Global data declaration

______________________________________________________________________

TYPE-POOLS: slis.

TABLES: vbap, vbrk, vbfa, vbak, vbrp, konv, kna1, bkpf, bsad, bkpf_bsad,

knvv, pa0002, t005u, mvke, lips, likp, vbpa, vbep.

DATA: BEGIN OF i_list OCCURS 0,

vbeln LIKE vbak-vbeln,

posnr LIKE vbap-posnr,

etenr like vbep-etenr,

matnr LIKE vbap-matnr,

erdat LIKE vbap-erdat,

mvgr1 LIKE mvke-mvgr1,

wadat_ist LIKE likp-wadat_ist,

days TYPE i,

werks LIKE vbap-werks,

lgort LIKE vbap-lgort,

kwmeng LIKE vbap-kwmeng," CH01+

lfimg LIKE lips-lfimg," CH01+

pstyv LIKE vbap-pstyv," CH01+

obd LIKE lips-vbeln," CH01+

obd_pos LIKE lips-posnr," CH01+

soldto LIKE vbaK-kunnr," JR+

shipto LIKE vbpa-kunnr," JR+

edatu like vbep-edatu," PR+

END OF i_list.

DATA: i_list2 LIKE i_list OCCURS 0 WITH HEADER LINE,

i_list3 LIKE i_list OCCURS 0 WITH HEADER LINE.

DATA: i_list4 LIKE vbap OCCURS 0 WITH HEADER LINE.

*ALV Output Header

DATA: gt_list_top_of_page TYPE slis_t_listheader,

prognm LIKE sy-repid,

gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',

gt_events TYPE slis_t_event,

is_layout TYPE slis_layout_alv,

is_variant LIKE disvariant,

it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.

DATA:gt_fieldcat TYPE slis_t_fieldcat_alv.

DATA:gt_outtab LIKE i_list OCCURS 0 WITH HEADER LINE.

DATA: g_repid LIKE sy-repid,

g_count LIKE sy-tabix.

SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME TITLE text-t01.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(79) text-t10.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(79) text-t11.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(79) text-t12.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN END OF BLOCK block0.

*/ Selection and Input Parameters

SELECTION-SCREEN BEGIN OF BLOCK blocko WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_vbeln FOR vbap-vbeln, "SO

s_auart FOR vbak-auart DEFAULT 'KB' OBLIGATORY,

s_matnr FOR vbap-matnr," obligatory,

s_mvgr1 FOR mvke-mvgr1,

s_erdat FOR vbap-erdat OBLIGATORY,

s_werks FOR vbap-werks,

s_lgort FOR vbap-lgort,

s_edatu FOR vbep-edatu.

PARAMETERS: p_vkorg LIKE vbak-vkorg DEFAULT '5010'.

SELECTION-SCREEN SKIP 2.

*----


+EC1

  • Addition +EC1

*----


+EC1

PARAMETERS: p_vari LIKE disvariant-variant.

*----


+EC1

  • End Addition +EC1

*----


+EC1

SELECTION-SCREEN END OF BLOCK blocko.

*----


+EC1

  • Addition +EC1

*----


+EC1

DATA: g_save(1) TYPE c,

  • g_default(1) TYPE c,

g_exit(1) TYPE c,

gx_variant LIKE disvariant,

g_variant LIKE disvariant.

*----


+EC1

  • End Addition +EC1

*----


+EC1

  • Initialization fieldcatalog

INITIALIZATION.

  • PERFORM clear_tables.

g_repid = sy-repid.

PERFORM fieldcat_init USING gt_fieldcat[].

*----


+EC1

  • Addition +EC1

*----


+EC1

g_save = 'A'.

PERFORM variant_init.

  • Get default variant

gx_variant = g_variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = g_save

CHANGING

cs_variant = gx_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

p_vari = gx_variant-variant.

ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

PERFORM f4_for_variant.

AT SELECTION-SCREEN.

PERFORM auth_check. "+ESC

PERFORM pai_of_selection_screen.

*----


+EC1

  • End Addition +EC1

*----


+EC1

START-OF-SELECTION.

PERFORM get_data.

PERFORM alv.

END-OF-SELECTION.

----


  • FORM get_data *

----


  • ........ *

----


FORM get_data.

*CH01 - Added kwmeng(order qty) to selection, excluded rejects

*JR -added soldto and shipto code

SELECT avbeln aposnr amatnr aerdat awerks algort

akwmeng apstyv bkunnr cedatu

  • CH01+

INTO

(i_list-vbeln, i_list-posnr, i_list-matnr, i_list-erdat, i_list-werks,

i_list-lgort,

i_list-kwmeng , i_list-pstyv, i_list-soldto,i_list-edatu)

  • CH01+

FROM vbap AS a INNER JOIN vbak AS b ON avbeln = bvbeln

INNER JOIN vbep AS c ON avbeln = cvbeln

WHERE b~vkorg = p_vkorg

AND a~werks IN s_werks

AND a~lgort IN s_lgort

AND b~auart IN s_auart

AND a~vbeln IN s_vbeln

AND a~erdat IN s_erdat

AND a~abgru = ''" CH01+

AND a~matnr IN s_matnr

AND c~edatu IN s_edatu.

APPEND i_list.

ENDSELECT.

COMMIT WORK AND WAIT.

<b>SORT i_list BY VBELN POSNR EDATU.

DELETE ADJACENT DUPLICATES FROM i_list COMPARING vbeln posnr.</b>

LOOP AT i_list.

SELECT SINGLE mvgr1 INTO i_list-mvgr1 FROM mvke

WHERE matnr = i_list-matnr.

MODIFY i_list.

CLEAR: i_list.

ENDLOOP.

COMMIT WORK AND WAIT.

LOOP AT i_list.

IF i_list-mvgr1 IN s_mvgr1.

CONTINUE.

ELSE.

DELETE i_list.

COMMIT WORK AND WAIT.

ENDIF.

ENDLOOP.

  • CH01 - commented these lines out and redid logic below

  • LOOP AT i_list.

    • select single vbeln into lips-vbeln from lips

    • where vgbel = i_list-vbeln

    • and vgpos = i_list-posnr.

**

    • select single wadat_ist into i_list-wadat_ist from likp

    • where vbeln = lips-vbeln.

*

  • SELECT b~wadat_ist INTO i_list-wadat_ist

  • FROM lips AS a INNER JOIN

  • likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln

  • AND a~vgpos = i_list-posnr.

  • MODIFY i_list.

  • CLEAR: i_list, lips-vbeln.

  • ENDSELECT.

  • ENDLOOP.

  • CH01 - Changed to select multiple delivery lines & del qty

  • summing the total deliveries per OBD# and date

LOOP AT i_list.

SELECT avbeln sum( alfimg ) b~wadat_ist

INTO (i_list-obd , i_list-lfimg , i_list-wadat_ist)

FROM lips AS a INNER JOIN

likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln

AND a~vgpos = i_list-posnr

AND a~pstyv = i_list-pstyv

group by avbeln bwadat_ist.

i_list2 = i_list.

APPEND i_list2.

ENDSELECT.

IF sy-subrc <> 0.

i_list2 = i_list.

APPEND i_list2.

ENDIF.

ENDLOOP.

i_list[] = i_list2[].

*End CH01

COMMIT WORK AND WAIT.

LOOP AT i_list.

IF i_list-wadat_ist IS INITIAL.

CONTINUE.

ELSE.

i_list-days = i_list-wadat_ist - i_list-erdat.

ENDIF.

MODIFY i_list.

CLEAR: i_list.

COMMIT WORK AND WAIT.

ENDLOOP.

COMMIT WORK AND WAIT.

LOOP AT i_list.

IF i_list-vbeln IS INITIAL.

DELETE i_list.

ENDIF.

ENDLOOP.

COMMIT WORK AND WAIT.

*JR

LOOP AT i_list.

SELECT SINGLE KUNNR INTO i_list-shipto FROM vbpa

WHERE vbeln = i_list-vbeln

AND parvw = 'WE'.

MODIFY i_list.

ENDLOOP.

*END JR

gt_outtab[] = i_list[].

COMMIT WORK AND WAIT.

ENDFORM.

----


  • FORM alv *

----


  • ........ *

----


FORM alv.

PERFORM e03_eventtab_build USING gt_events[]. "+EC1

PERFORM e04_comment_build USING gt_list_top_of_page[]. "+EC1

prognm = sy-repid. "+EC1

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_user_command = 'USER_COMMAND'

i_callback_program = g_repid

it_fieldcat = gt_fieldcat[]

it_events = gt_events[] "+ESC

it_sort = it_sort[]

*----


+EC1

  • Addition +EC1

*----


+EC1

is_variant = g_variant

i_save = g_save

*----


+EC1

  • End Addition +EC1

*----


+EC1

TABLES

t_outtab = gt_outtab.

COMMIT WORK AND WAIT.

ENDFORM.

----


  • FORM fieldcat_init *

----


  • ........ *

----


  • --> I_FIELDCAT *

----


FORM fieldcat_init

USING i_fieldcat TYPE slis_t_fieldcat_alv.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

DATA: pos TYPE i VALUE 1.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'VBELN'.

ls_fieldcat-ref_tabname = 'VBAK'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'POSNR'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MVGR1'.

ls_fieldcat-ref_tabname = 'MVKE'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WERKS'.

ls_fieldcat-ref_tabname = 'VBAP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'LGORT'.

ls_fieldcat-ref_tabname = 'VBAP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ERDAT'.

ls_fieldcat-ref_tabname = 'VBAP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WADAT_IST'.

ls_fieldcat-ref_tabname = 'LIKP'.

  • ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'DAYS'.

ls_fieldcat-ref_fieldname = 'DAYS'.

ls_fieldcat-seltext_s = '# Of Days'.

ls_fieldcat-seltext_m = '# Of Days'.

ls_fieldcat-seltext_l = '# Of Days'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

*Begin CH01

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'KWMENG'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-outputlen = 7.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'LFIMG'.

ls_fieldcat-ref_tabname = 'LIPS'.

ls_fieldcat-outputlen = 7.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'OBD'.

ls_fieldcat-seltext_s = 'OBD'.

ls_fieldcat-seltext_m = 'Outbound Del'.

ls_fieldcat-seltext_l = 'Outbound Delivery'.

ls_fieldcat-outputlen = 10.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

  • ls_fieldcat-col_pos = pos.

  • ls_fieldcat-fieldname = 'OBD_POS'.

  • ls_fieldcat-seltext_s = 'OBD Ln'.

  • ls_fieldcat-seltext_m = 'Outbound Del Ln'.

  • ls_fieldcat-seltext_l = 'Outbound Del Line'.

  • ls_fieldcat-outputlen = 10.

  • APPEND ls_fieldcat TO i_fieldcat.

  • CLEAR ls_fieldcat.

*

*End CH01

*JR

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SOLDTO'.

ls_fieldcat-ref_tabname = 'VBAP'.

ls_fieldcat-seltext_m = 'Sold To'.

ls_fieldcat-seltext_l = 'Sold To'.

ls_fieldcat-outputlen = 10.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SHIPTO'.

ls_fieldcat-ref_tabname = 'VBPA'.

ls_fieldcat-seltext_m = 'Ship To'.

ls_fieldcat-seltext_l = 'Ship To'.

ls_fieldcat-outputlen = 10.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ETERN'.

ls_fieldcat-ref_tabname = 'VBEP'.

ls_fieldcat-seltext_m = 'Schedule line number'.

ls_fieldcat-seltext_l = 'Schedule line number'.

  • ls_fieldcat-key = 'Schedule line number'.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

*END JR

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'EDATU'.

ls_fieldcat-ref_tabname = 'VBEP'.

ls_fieldcat-seltext_m = 'Requested Delivery date'.

ls_fieldcat-seltext_l = 'Requested Delivery date'.

ls_fieldcat-outputlen = 20.

APPEND ls_fieldcat TO i_fieldcat.

CLEAR ls_fieldcat.

*FOR ALV SORT & SUBTOTAL

CLEAR it_sort.

it_sort-spos = '0'.

it_sort-fieldname = 'VBELN'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

CLEAR it_sort.

it_sort-spos = '1'.

it_sort-fieldname = 'POSNR'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

it_sort-subtot = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

*

CLEAR it_sort.

it_sort-spos = '2'.

it_sort-fieldname = 'MATNR'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

CLEAR it_sort.

it_sort-spos = '3'.

it_sort-fieldname = 'MVGR1'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

*

CLEAR it_sort.

it_sort-spos = '4'.

it_sort-fieldname = 'ERDAT'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-up = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

CLEAR it_sort.

it_sort-spos = '5'.

it_sort-fieldname = 'WADAT_IST'.

it_sort-tabname = 'GT_OUTTAB'.

it_sort-down = 'X'.

  • it_sort-subtot = 'X'.

APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '6'.

  • it_sort-fieldname = 'PERNR'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

*

  • CLEAR it_sort.

  • it_sort-spos = '7'.

  • it_sort-fieldname = 'VORNA'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '8'.

  • it_sort-fieldname = 'NACHN'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '9'.

  • it_sort-fieldname = 'VKGRP'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '10'.

  • it_sort-fieldname = 'VBELN'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '11'.

  • it_sort-fieldname = 'ERDAT'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • CLEAR it_sort.

  • it_sort-spos = '12'.

  • it_sort-fieldname = 'BEZEI'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

    • it_sort-subtot = 'X'.

  • APPEND it_sort.

*

  • clear it_sort.

  • it_sort-spos = '1'.

  • it_sort-fieldname = 'BELNR'.

  • it_sort-tabname = 'GT_OUTTAB'.

  • it_sort-up = 'X'.

  • append it_sort.

ENDFORM.

*----


+EC1

  • Addition +EC1

*----


+EC1

&----


*& Form VARIANT_INIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM variant_init.

*

CLEAR g_variant.

g_variant-report = g_repid.

ENDFORM. " VARIANT_INIT

----


  • FORM f4_for_variant *

----


  • ........ *

----


FORM f4_for_variant.

*

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = g_variant

i_save = g_save

  • it_default_fieldcat =

IMPORTING

e_exit = g_exit

es_variant = gx_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 2.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF g_exit = space.

p_vari = gx_variant-variant.

ENDIF.

ENDIF.

ENDFORM.

&----


*& Form PAI_OF_SELECTION_SCREEN

&----


  • text

----


FORM pai_of_selection_screen.

*

IF NOT p_vari IS INITIAL.

MOVE g_variant TO gx_variant.

MOVE p_vari TO gx_variant-variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = g_save

CHANGING

cs_variant = gx_variant.

g_variant = gx_variant.

ELSE.

PERFORM variant_init.

ENDIF.

ENDFORM. " PAI_OF_SELECTION_SCREEN

*----


+EC1

  • End Addition +EC1

*----


+EC1

----


  • FORM e03_eventtab_build *

----


  • ........ *

----


  • --> E03_LT_EVENTS *

----


FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.

DATA: ls_event TYPE slis_alv_event.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = e03_lt_events.

READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page

INTO ls_event.

IF sy-subrc = 0.

MOVE gc_formname_top_of_page TO ls_event-form.

APPEND ls_event TO e03_lt_events.

ENDIF.

ENDFORM.

----


  • FORM e04_comment_build *

----


  • ........ *

----


  • --> E04_LT_TOP_OF_PAGE *

----


FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.

DATA: ls_line TYPE slis_listheader.

*Report Title

CLEAR ls_line.

ls_line-typ = 'H'.

ls_line-info = text-007.

APPEND ls_line TO e04_lt_top_of_page.

*

*

**Doc Type Desc.

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-008.

    • ls_line-info = p_matnr.

  • append ls_line to e04_lt_top_of_page.

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-009.

    • ls_line-info = p_werks.

  • append ls_line to e04_lt_top_of_page.

*

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-010.

    • ls_line-info = p_stlan.

  • append ls_line to e04_lt_top_of_page.

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-011.

    • ls_line-info = p_stlal.

  • append ls_line to e04_lt_top_of_page.

*

  • clear ls_line.

  • ls_line-typ = 'S'.

  • ls_line-key = text-012.

    • ls_line-info = p_stlal.

  • append ls_line to e04_lt_top_of_page.

ENDFORM.

----


  • FORM top_of_page *

----


  • ........ *

----


FORM top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = gt_list_top_of_page.

ENDFORM.

----


  • FORM auth_check *

----


  • ........ *

----


FORM auth_check.

AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'

ID 'VKORG' FIELD p_vkorg.

IF sy-subrc NE 0.

MESSAGE e054 WITH p_vkorg.

ENDIF.

ENDFORM. " auth_check

*&----


*& Form USER_COMMAND

*&----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

PERFORM display_so_order USING r_ucomm

rs_selfield.

ENDCASE.

ENDFORM.

&----


*& Form display_sales_order

&----


  • text

----


  • -->P_R_UCOMM text

  • -->P_RS_SELFIELD text

----


FORM display_so_order USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE rs_selfield-sel_tab_field.

WHEN '1-VBELN'.

SET PARAMETER ID 'AUN' FIELD rs_selfield-value.

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

WHEN '1-MATNR'.

SET PARAMETER ID 'MAT' FIELD rs_selfield-value.

CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

WHEN '1-OBD'.

SET PARAMETER ID 'VL' FIELD rs_selfield-value.

CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.

WHEN OTHERS.

MESSAGE i000(z1) WITH 'Please Click on the Valid Selection'.

EXIT.

ENDCASE.

ENDFORM. " display_sales_order

----


  • FORM EDit_table *

----


  • ........ *

----


THanks,

Naren