‎2008 Nov 03 12:45 PM
i have written a program which gives the output for PO , PO item , Inbound delivery number, Inbound delivery Quantity & shipment number.
The delivery quantity has to be addded grid value wise which is not coming, see if you people can help me out
the program is as follows
&----
*& Report ZDAN_DEMO_ALV3_COPY
*&
&----
*&
*&
&----
REPORT ZDAN_DEMO_ALV3_COPY.
TYPE-POOLS : slis.
TABLES : ekpo.
TYPES : BEGIN OF ty_ekpo,
ebeln TYPE ekpo-ebeln, " PO
ebelp TYPE ekpo-ebelp," PO Item
END OF ty_ekpo.
TYPES : BEGIN OF ty_ekkn,
ebeln TYPE ekkn-ebeln,
ebelp TYPE ekkn-ebelp,
vbeln TYPE ekkn-vbeln,
vbelp TYPE ekkn-vbelp,
END OF ty_ekkn.
TYPES : BEGIN OF ty_lips,
vbeln TYPE lips-vbeln,
posnr TYPE lips-posnr,
vgbel TYPE lips-vgbel,
vgpos TYPE lips-vgpos,
lfimg TYPE lips-lfimg,
END OF ty_lips.
TYPES : BEGIN OF ty_vttp,
vbeln TYPE vttp-vbeln,
tknum TYPE vttp-tknum,
END OF ty_vttp.
TYPES : BEGIN OF ty_final,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
vbeln TYPE lips-vbeln,
lfimg TYPE lips-lfimg,
tknum type vttp-tknum,
end of ty_final.
DATA : totquan TYPE lips-lfimg,
del_num TYPE lips-vbeln.
DATA : it_ekpo TYPE TABLE OF ty_ekpo,
wa_ekpo LIKE LINE OF it_ekpo,
it_ekkn TYPE TABLE OF ty_ekkn,
wa_ekkn LIKE LINE OF it_ekkn,
it_lips TYPE TABLE OF ty_lips,
wa_lips LIKE LINE OF it_lips,
it_vttp TYPE TABLE OF ty_vttp,
wa_vttp LIKE LINE OF it_vttp,
it_final TYPE TABLE OF ty_final,
wa_final LIKE LINE OF it_final.
DATA : it_fclog TYPE slis_t_fieldcat_alv,
wa_fclog LIKE LINE OF it_fclog,
it_sort TYPE slis_t_sortinfo_alv,
wa_sort LIKE LINE OF it_sort,
gd_layout TYPE slis_layout_alv,
gd_print TYPE slis_print_alv,
gd_repid LIKE sy-repid,
gt_events TYPE slis_t_event.
SELECTION-SCREEN BEGIN OF BLOCK sodisp WITH FRAME TITLE text-001.
SELECT-OPTIONS: ponum FOR ekpo-ebeln.
SELECTION-SCREEN END OF BLOCK sodisp.
START-OF-SELECTION.
PERFORM data_retv.
PERFORM fclog.
PERFORM disp_rpt.
&----
*& Form data_retv
&----
text
----
break hopflabap1.
FORM data_retv.
break hopflabap1.
SELECT ebeln ebelp
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln IN ponum.
sort it_ekpo by ebeln.
SELECT ebeln ebelp vbeln vbelp
FROM ekkn
INTO TABLE it_ekkn
FOR ALL ENTRIES IN it_ekpo
WHERE ebeln = it_ekpo-ebeln
AND ebelp EQ it_ekpo-ebelp.
SELECT vbeln posnr vgbel vgpos lfimg
FROM lips
INTO TABLE it_lips
FOR ALL ENTRIES IN it_ekkn
WHERE vgbel EQ it_ekkn-vbeln
AND vgpos EQ it_ekkn-vbelp
AND lfimg <> 0.
SELECT vbeln tknum
FROM vttp
INTO TABLE it_vttp
FOR ALL ENTRIES IN it_lips
WHERE vbeln EQ it_lips-vbeln.
break hopflabap1.
LOOP AT it_ekpo INTO wa_ekpo."it gives all po with line item
wa_final-ebeln = wa_ekpo-ebeln."po
wa_final-ebelp = wa_ekpo-ebelp."po item
CLEAR wa_ekkn.
READ TABLE it_ekkn INTO wa_ekkn with key ebeln = wa_ekpo-ebeln.
CLEAR wa_lips.
loop at it_lips INTO wa_lips WHERE vgbel = wa_ekkn-vbeln AND vgpos = wa_ekkn-vbelp.
if wa_lips-vgbel eq del_num.
totquan = totquan + wa_lips-lfimg.
ENDIF.
CLEAR wa_vttp.
READ TABLE it_vttp INTO wa_vttp WITH KEY vbeln = wa_lips-vbeln.
wa_final-tknum = wa_vttp-tknum.
wa_final-lfimg = totquan.
APPEND wa_final TO it_final.
del_num = wa_lips-vbeln.
endloop.
ENDLOOP.
*break hopflabap1.
LOOP AT it_ekpo INTO wa_ekpo WHERE ebeln IN ponum.
LOOP AT it_ekkn INTO wa_ekkn WHERE ebeln = wa_ekpo-ebeln.
LOOP AT it_lips INTO wa_lips WHERE vgbel EQ wa_ekkn-vbeln AND vgpos = wa_ekkn-vbelp.
*
wa_final-ebeln = wa_ekpo-ebeln.
wa_final-ebelp = wa_ekpo-ebelp.
wa_final-vbeln = wa_lips-vbeln.
del_num = wa_lips-vbeln.
*
if del_num eq wa_lips-vbeln.
totquan = totquan + wa_lips-lfimg.
ENDIF.
*
wa_final-lfimg = totquan.
*
*
CLEAR wa_vttp.
READ TABLE it_vttp INTO wa_vttp WITH KEY vbeln = wa_lips-vbeln.
*
wa_final-tknum = wa_vttp-tknum.
*
*
ENDLOOP.
*
APPEND wa_final TO it_final.
*
DELETE ADJACENT DUPLICATES FROM it_final.
*
ENDLOOP.
*
ENDLOOP.
ENDFORM. "data_retv
&----
*& Form disp_rpt
&----
text
----
FORM disp_rpt.
gd_repid = sy-repid .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_user_command = 'USER_COMMAND'
is_print = gd_print
i_callback_pf_status_set = 'SET_STATUS'
i_callback_top_of_page = 'TOP-OF-PAGE'
is_layout = gd_layout
it_fieldcat = it_fclog[]
it_sort = it_sort[]
i_save = 'X'
IT_EVENTS = GT_EVENTS[]
TABLES
t_outtab = it_final[].
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
&----
*& Form fclog
&----
text
----
FORM fclog.
wa_fclog-fieldname = 'EBELN'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = 'PO'.
wa_fclog-outputlen = 15.
wa_fclog-col_pos = 2.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
wa_fclog-fieldname = ' EBELP'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = 'PO Item'.
wa_fclog-outputlen = 20.
wa_fclog-col_pos = 3.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
wa_fclog-fieldname = 'VBELN'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = ' Delivery Number'.
wa_fclog-outputlen = 15.
wa_fclog-col_pos = 4.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
wa_fclog-fieldname = 'LFIMG'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = ' Delivery Quantity'.
wa_fclog-outputlen = 20.
wa_fclog-col_pos = 7.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
wa_fclog-fieldname = 'TKNUM'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = 'Shipment Number'.
wa_fclog-outputlen = 20.
wa_fclog-col_pos = 7.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
ENDFORM. "fclog
‎2008 Nov 03 1:11 PM
try to use do_sum = 'X' for LFIMG.
wa_fclog-fieldname = 'LFIMG'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = ' Delivery Quantity'.
wa_fclog-outputlen = 20.
wa_fclog-col_pos = 7.
wa_fclog-do_sum = 'X'. "<----add this.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
‎2008 Nov 03 1:11 PM
try to use do_sum = 'X' for LFIMG.
wa_fclog-fieldname = 'LFIMG'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = ' Delivery Quantity'.
wa_fclog-outputlen = 20.
wa_fclog-col_pos = 7.
wa_fclog-do_sum = 'X'. "<----add this.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
‎2008 Nov 03 1:23 PM
not working.... the value is coming 0 for all... i have made some changes prog is as follows
&----
*& Report ZDAN_DEMO_ALV3_COPY
*&
&----
*&
*&
&----
REPORT ZDAN_DEMO_ALV3_COPY.
TYPE-POOLS : slis.
TABLES : ekpo.
TYPES : BEGIN OF ty_ekpo,
ebeln TYPE ekpo-ebeln, " PO
ebelp TYPE ekpo-ebelp," PO Item
END OF ty_ekpo.
TYPES : BEGIN OF ty_ekkn,
ebeln TYPE ekkn-ebeln,
ebelp TYPE ekkn-ebelp,
vbeln TYPE ekkn-vbeln,
vbelp TYPE ekkn-vbelp,
END OF ty_ekkn.
TYPES : BEGIN OF ty_lips,
vbeln TYPE lips-vbeln,
posnr TYPE lips-posnr,
vgbel TYPE lips-vgbel,
vgpos TYPE lips-vgpos,
lfimg TYPE lips-lfimg,
END OF ty_lips.
TYPES : BEGIN OF ty_vttp,
vbeln TYPE vttp-vbeln,
tknum TYPE vttp-tknum,
END OF ty_vttp.
TYPES : BEGIN OF ty_final,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
vbeln TYPE lips-vbeln,
lfimg TYPE lips-lfimg,
tknum type vttp-tknum,
end of ty_final.
DATA : totquan TYPE lips-lfimg,
del_num TYPE lips-vbeln.
DATA : it_ekpo TYPE TABLE OF ty_ekpo,
wa_ekpo LIKE LINE OF it_ekpo,
it_ekkn TYPE TABLE OF ty_ekkn,
wa_ekkn LIKE LINE OF it_ekkn,
it_lips TYPE TABLE OF ty_lips,
wa_lips LIKE LINE OF it_lips,
it_vttp TYPE TABLE OF ty_vttp,
wa_vttp LIKE LINE OF it_vttp,
it_final TYPE TABLE OF ty_final,
wa_final LIKE LINE OF it_final.
DATA : it_fclog TYPE slis_t_fieldcat_alv,
wa_fclog LIKE LINE OF it_fclog,
it_sort TYPE slis_t_sortinfo_alv,
wa_sort LIKE LINE OF it_sort,
gd_layout TYPE slis_layout_alv,
gd_print TYPE slis_print_alv,
gd_repid LIKE sy-repid,
gt_events TYPE slis_t_event.
SELECTION-SCREEN BEGIN OF BLOCK sodisp WITH FRAME TITLE text-001.
SELECT-OPTIONS: ponum FOR ekpo-ebeln.
SELECTION-SCREEN END OF BLOCK sodisp.
START-OF-SELECTION.
PERFORM data_retv.
PERFORM fclog.
PERFORM disp_rpt.
&----
*& Form data_retv
&----
text
----
break hopflabap1.
FORM data_retv.
break hopflabap1.
SELECT ebeln ebelp
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln IN ponum.
sort it_ekpo by ebeln.
SELECT ebeln ebelp vbeln vbelp
FROM ekkn
INTO TABLE it_ekkn
FOR ALL ENTRIES IN it_ekpo
WHERE ebeln = it_ekpo-ebeln
AND ebelp EQ it_ekpo-ebelp.
SELECT vbeln posnr vgbel vgpos lfimg
FROM lips
INTO TABLE it_lips
FOR ALL ENTRIES IN it_ekkn
WHERE vgbel EQ it_ekkn-vbeln
AND vgpos EQ it_ekkn-vbelp
AND lfimg <> 0.
SELECT vbeln tknum
FROM vttp
INTO TABLE it_vttp
FOR ALL ENTRIES IN it_lips
WHERE vbeln EQ it_lips-vbeln.
break hopflabap1.
LOOP AT it_ekpo INTO wa_ekpo."it gives all po with line item
wa_final-ebeln = wa_ekpo-ebeln."po
wa_final-ebelp = wa_ekpo-ebelp."po item
CLEAR wa_ekkn.
READ TABLE it_ekkn INTO wa_ekkn with key ebeln = wa_ekpo-ebeln.
CLEAR wa_lips.
loop at it_lips INTO wa_lips WHERE vgbel = wa_ekkn-vbeln AND vgpos = wa_ekkn-vbelp.
if wa_lips-vbeln eq del_num.
totquan = totquan + wa_lips-lfimg.
else.
wa_final-vbeln = wa_lips-vbeln.
wa_final-lfimg = totquan.
CLEAR wa_vttp.
READ TABLE it_vttp INTO wa_vttp WITH KEY vbeln = wa_lips-vbeln.
wa_final-tknum = wa_vttp-tknum.
wa_final-lfimg = totquan.
APPEND wa_final TO it_final.
ENDIF.
del_num = wa_lips-vbeln.
CLEAR totquan.
endloop.
ENDLOOP.
*break hopflabap1.
LOOP AT it_ekpo INTO wa_ekpo WHERE ebeln IN ponum.
LOOP AT it_ekkn INTO wa_ekkn WHERE ebeln = wa_ekpo-ebeln.
LOOP AT it_lips INTO wa_lips WHERE vgbel EQ wa_ekkn-vbeln AND vgpos = wa_ekkn-vbelp.
*
wa_final-ebeln = wa_ekpo-ebeln.
wa_final-ebelp = wa_ekpo-ebelp.
wa_final-vbeln = wa_lips-vbeln.
del_num = wa_lips-vbeln.
*
if del_num eq wa_lips-vbeln.
totquan = totquan + wa_lips-lfimg.
ENDIF.
*
wa_final-lfimg = totquan.
*
*
CLEAR wa_vttp.
READ TABLE it_vttp INTO wa_vttp WITH KEY vbeln = wa_lips-vbeln.
*
wa_final-tknum = wa_vttp-tknum.
*
*
ENDLOOP.
*
APPEND wa_final TO it_final.
*
DELETE ADJACENT DUPLICATES FROM it_final.
*
ENDLOOP.
*
ENDLOOP.
ENDFORM. "data_retv
&----
*& Form disp_rpt
&----
text
----
FORM disp_rpt.
gd_repid = sy-repid .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_user_command = 'USER_COMMAND'
is_print = gd_print
i_callback_pf_status_set = 'SET_STATUS'
i_callback_top_of_page = 'TOP-OF-PAGE'
is_layout = gd_layout
it_fieldcat = it_fclog[]
it_sort = it_sort[]
i_save = 'X'
IT_EVENTS = GT_EVENTS[]
TABLES
t_outtab = it_final[].
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
&----
*& Form fclog
&----
text
----
FORM fclog.
wa_fclog-fieldname = 'EBELN'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = 'PO'.
wa_fclog-outputlen = 15.
wa_fclog-col_pos = 2.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
wa_fclog-fieldname = ' EBELP'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = 'PO Item'.
wa_fclog-outputlen = 20.
wa_fclog-col_pos = 3.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
wa_fclog-fieldname = 'VBELN'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = ' Delivery Number'.
wa_fclog-outputlen = 15.
wa_fclog-col_pos = 4.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
wa_fclog-fieldname = 'LFIMG'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = ' Delivery Quantity'.
wa_fclog-outputlen = 20.
wa_fclog-col_pos = 7.
wa_fclog-do_sum = 'X'.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
wa_fclog-fieldname = 'TKNUM'.
wa_fclog-tabname = 'IT_FINAL'.
wa_fclog-seltext_m = 'Shipment Number'.
wa_fclog-outputlen = 20.
wa_fclog-col_pos = 7.
APPEND wa_fclog TO it_fclog.
CLEAR wa_fclog.
ENDFORM. "fclog
‎2008 Nov 03 1:27 PM
we dont need the overall total of delivery quantity however the SO which has the same line item and different delivery quantities, these different quantities should be added
‎2008 Nov 03 1:38 PM
then in that case you have to use the sort option. you need to build the sort table based on your requirement. and pass it to it_sort option of the alv.
PS: I see lot of confusion in your coding..?
‎2008 Nov 03 1:42 PM
thanks...
apart from this prog i want to ask you a question...
your skills are too good where did you learn your skills from????
can you suggest me some book that will help me build up my skills?
‎2008 Nov 03 1:50 PM
no books, read sap help, tutorials, blogs, articles, elearning materials available in SDN, some you can learn from experience and some you can learn from participating in SDN communities.