0% found this document useful (0 votes)
176 views11 pages

Program Smecher ALV

This document describes an ABAP report that displays delivery information from SAP tables in an ALV grid. It includes the following: 1. Forms to select delivery data from LIKP and LIPS tables, select related sales order data, and populate a delivery output table. 2. A form to define the ALV grid field catalog. 3. A display form that calls the ALV grid display function, passing the output table and field catalog. It allows sorting on delivery date and shipping point.

Uploaded by

EmanuelPredescu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
176 views11 pages

Program Smecher ALV

This document describes an ABAP report that displays delivery information from SAP tables in an ALV grid. It includes the following: 1. Forms to select delivery data from LIKP and LIPS tables, select related sales order data, and populate a delivery output table. 2. A form to define the ALV grid field catalog. 3. A display form that calls the ALV grid display function, passing the output table and field catalog. It allows sorting on delivery date and shipping point.

Uploaded by

EmanuelPredescu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 11

*&---------------------------------------------------------------------*

*& Report ZMEF_ALV_EXERCISE_FINAL


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zmef_alv_exercise_final.
TYPE-POOLS: slis.
TABLES: vbak,likp,lips.
TYPES : BEGIN OF ty_salesorder,
wbstk
TYPE vbuk-wbstk,
vbeln
TYPE vbap-vbeln,
posnr
TYPE vbap-posnr,
auart
TYPE vbak-auart,
kwmeng
TYPE vbap-kwmeng,
vgbel
TYPE vbap-vgbel,
vgpos
TYPE vbap-vgpos,
END OF ty_salesorder,
BEGIN OF ty_del,
vbeln
TYPE
posnr
TYPE
lfdat
TYPE
vstel
TYPE
kunnr
TYPE
wadat_ist TYPE
lfimg
TYPE
meins
TYPE
vgbel
TYPE
vgpos
TYPE
END OF ty_del,

likp-vbeln,
lips-posnr,
likp-lfdat,
likp-vstel,
likp-kunnr,
likp-wadat_ist,
lips-lfimg,
lips-meins,
lips-vgbel,
lips-vgpos,

BEGIN OF ty_delivery, "folosit la afisare


vbeln_d
TYPE likp-vbeln,"Delivery
posnr_d
TYPE lips-posnr,"Delivery Item
lfdat
TYPE likp-lfdat,"Delivery date
vstel
TYPE likp-vstel,"Shipping point
kunnr
TYPE likp-kunnr,"Ship to party
wadat_ist TYPE likp-wadat_ist,"Actual Goods Mov.Date
wbstk
TYPE vbuk-wbstk, "Total goods mov status
lfimg
TYPE lips-lfimg,"Quantity
meins
TYPE lips-meins, "om
vbeln
TYPE vbak-vbeln,"Sales order
posnr
TYPE vbap-posnr,"Sales order item
auart
TYPE vbak-auart,"Sales order type
kwmeng
TYPE vbap-kwmeng,"Sales order qty
vgbel
TYPE lips-vgbel,
vgpos
TYPE lips-vgpos,
END OF ty_delivery.
TYPES: tty_delivery TYPE STANDARD TABLE OF ty_delivery,
tty_del
TYPE STANDARD TABLE OF ty_del,
tty_salesorder TYPE STANDARD TABLE OF ty_salesorder.
DATA: gt_delivery
gt_del

TYPE tty_delivery,
TYPE tty_del,

gt_salesorder TYPE tty_salesorder,


ct_delivery
TYPE tty_delivery.
DATA: gv_repid
gv_sum
gt_fieldcat
g_variant
gx_variant
g_save
g_exit

TYPE sy-repid,
TYPE lips-lfimg,
TYPE slis_t_fieldcat_alv,
TYPE disvariant,
TYPE disvariant,
TYPE c VALUE 'X',
TYPE c.

*PARAMETERS: p_var LIKE disvariant-variant.


SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: so_vbeln FOR likp-vbeln,
so_lfdat FOR likp-lfdat,
so_lfart FOR likp-lfart,
so_vstel FOR likp-vstel,
so_kunnr FOR likp-kunnr.
SELECTION-SCREEN END OF BLOCK block1.
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-002.
PARAMETERS: p_vstel TYPE c AS CHECKBOX DEFAULT 'X',
p_lfdat TYPE c AS CHECKBOX DEFAULT 'X',
p_dv
TYPE c AS CHECKBOX DEFAULT 'X',
p_var TYPE disvariant-variant.
SELECTION-SCREEN END OF BLOCK block2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_var.
g_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save
= g_save
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_var = gx_variant-variant.
ENDIF.
ENDIF.
START-OF-SELECTION.

*** Pas 1 selectare date ;livrare


PERFORM select_delivery CHANGING gt_del.
*** Pas 2 Selectare date ordin pentru livrarile din gt_del
PERFORM select_salesorder USING gt_del
CHANGING gt_salesorder.
*** Pas 3 Prelucrare date in tabela gt_delivery
PERFORM prelucrare_date USING
gt_del
gt_salesorder
CHANGING gt_delivery.
IF NOT gt_delivery IS INITIAL.
PERFORM display.
ELSE.
"mesaj nu avem date de afisat.
ENDIF.

*&---------------------------------------------------------------------*
*&
Form catalog
*&---------------------------------------------------------------------*
FORM catalog.
DATA: ls_fieldcat

TYPE slis_fieldcat_alv.

ls_fieldcat-fieldname = 'VBELN_D'.
ls_fieldcat-tabname = 'GT_DELIVERY'.
ls_fieldcat-seltext_m = 'DELIVERY '.
ls_fieldcat-emphasize = 'C111'.
ls_fieldcat-fix_column = 'X'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'POSNR_D'.
'GT_DELIVERY'.
= 'DELIVERY ITEM'.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'LFDAT'.
'GT_DELIVERY'.
= 'DELIVERY DATE '.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'VSTEL'.
'GT_DELIVERY'.
= 'SHIPPING POINT'.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'KUNNR'.
'GT_DELIVERY'.
= ' SHIP-TO PARTY '.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'WADAT_IST'.
'GT_DELIVERY'.
= 'ACTUAL GOODS MOVEMENT DATE '.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'WBSTK'.
'GT_DELIVERY'.
= '
TOTAL GOODS MOVEMENT STATUS '.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
ls_fieldcat-do_sum
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'LFIMG'.
'GT_DELIVERY'.
= 'QUANTITY'.
= 'X'.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'MEINS'.
'GT_DELIVERY'.
= 'UoM'.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'VBELN'.
'GT_DELIVERY'.
= 'SALES ORDER'.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'POSNR'.
'GT_DELIVERY'.
= '
SALES ORDER ITEM '.
gt_fieldcat.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.

= 'AUART'.
'GT_DELIVERY'.
= '
SALES ORDER TYPE
gt_fieldcat.

'.

ls_fieldcat-fieldname
ls_fieldcat-tabname =
ls_fieldcat-seltext_m
APPEND ls_fieldcat TO
CLEAR ls_fieldcat.
ENDFORM.

= 'KWMENG'.
'GT_DELIVERY'.
= ' SALES ORDER QUANTITY
gt_fieldcat.

'.

"catalog

*&---------------------------------------------------------------------*
*&
Form handle_user_command
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->R_UCOMM
text
*
-->RS_SELFIELD text
*----------------------------------------------------------------------*
* LOOP AT gt_fieldcat INTO gs_fieldcat .
*
IF ls_fieldcat-fieldname = 'VBELN'.
*
ls_fieldcat-hotspot = 'X'.
*
MODIFY gt_fieldcat FROM ls_fieldcat.
*
ENDIF.
* ENDLOOP.
FORM usercommand USING r_ucomm

TYPE sy-ucomm
rs_selfield TYPE slis_selfield.

CASE r_ucomm.
WHEN '&IC1'.

CASE rs_selfield-fieldname.
WHEN 'VBELN'.
SET PARAMETER ID 'VBE' FIELD rs_selfield-value.
SET parameter id 'WRK' field '0001'.
CALL TRANSACTION 'VL03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.

ENDFORM.

"handle_user_command

*&---------------------------------------------------------------------*
*&
Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM top_of_page.
DATA: lt_header TYPE slis_t_listheader,
wa_header
TYPE slis_listheader,
lt_line
TYPE slis_entry,

ld_lines
TYPE i,
ld_linesc(10) TYPE c,
lv_sum_c
TYPE char17.
wa_header-typ = 'H'.
wa_header-info = 'DELIVERY Table Report'.
APPEND wa_header TO lt_header.
CLEAR wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info.
APPEND wa_header TO lt_header.
CLEAR: wa_header.
* Total No. of Records Selected
DESCRIBE TABLE gt_delivery LINES ld_lines.
ld_linesc = ld_lines.
CONCATENATE 'Total No. of Records Selected: ' ld_linesc
INTO lt_line SEPARATED BY space.
wa_header-typ = 'A'.
wa_header-info = lt_line.
APPEND wa_header TO lt_header.
CLEAR: wa_header, lt_line.
WRITE gv_sum TO lv_sum_c.
CONCATENATE 'Total Quantity ' lv_sum_c
INTO lt_line SEPARATED BY space.
wa_header-typ = 'A'.
wa_header-info = lt_line.
APPEND wa_header TO lt_header.
CLEAR: wa_header, lt_line.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = lt_header.
ENDFORM.

"TOP_OF_PAGE

*&---------------------------------------------------------------------*
*&
Form display
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM display .
DATA:

ls_sort
TYPE slis_sortinfo_alv,
lt_sort
TYPE slis_t_sortinfo_alv,
ls_layout TYPE slis_layout_alv.

gv_repid = sy-repid.
g_variant-variant = p_var.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.

PERFORM catalog.
REFRESH lt_sort.
IF p_lfdat = 'X'.
CLEAR ls_sort.
ls_sort-fieldname = 'VSTEL'.
ls_sort-spos = '1'.
ls_sort-up = 'X'.
APPEND ls_sort TO lt_sort.
ENDIF.
IF p_lfdat = 'X'.
CLEAR ls_sort.
ls_sort-fieldname = 'LFDAT'.
ls_sort-spos = '2'.
ls_sort-up = 'X'.
APPEND ls_sort TO lt_sort.
ENDIF.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program
= gv_repid
*
I_CALLBACK_PF_STATUS_SET
= ' '
i_callback_user_command
= 'USERCOMMAND'
i_callback_top_of_page
= 'TOP_OF_PAGE'
is_layout
= ls_layout
it_fieldcat
= gt_fieldcat
it_sort
= lt_sort
i_default
= 'X'
i_save
= 'A'
is_variant
= g_variant
TABLES
t_outtab
= gt_delivery
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

"DISPLAY_ALV
*&---------------------------------------------------------------------*
*&
Form SELECT_DELIVERY
*&---------------------------------------------------------------------*
FORM select_delivery CHANGING ct_del TYPE tty_del.

TYPES: BEGIN OF ty_likp,


vbeln
TYPE
lfdat
TYPE
vstel
TYPE
kunnr
TYPE
wadat_ist TYPE
END OF ty_likp,
BEGIN OF ty_lips,
vbeln
TYPE
posnr
TYPE
lfimg
TYPE
meins
TYPE
vgbel
TYPE
vgpos
TYPE
END OF ty_lips.

likp-vbeln,
likp-lfdat,
likp-vstel,
likp-kunnr,
likp-wadat_ist,

DATA: lt_likp
ls_likp
lt_lips
ls_lips
ls_del

TYPE
TYPE
TYPE
TYPE
TYPE

lips-vbeln,
lips-posnr,
lips-lfimg,
lips-meins,
lips-vgbel,
lips-vgpos,

STANDARD TABLE OF ty_likp,


ty_likp,
STANDARD TABLE OF ty_lips,
ty_lips,
ty_del.

*** selectie date de header ale livrarilor


REFRESH lt_likp.
SELECT vbeln lfdat vstel kunnr wadat_ist
INTO CORRESPONDING FIELDS OF TABLE lt_likp
FROM likp
WHERE vbeln IN so_vbeln
AND lfdat IN so_lfdat
AND lfart IN so_lfart
AND vstel IN so_vstel
AND kunnr IN so_kunnr.
SORT lt_likp BY vbeln. "obligatorio pt read cu binary search
IF NOT lt_likp IS INITIAL. "If sy-subrc = 0
SELECT vbeln posnr lfimg meins vgbel vgpos
INTO CORRESPONDING FIELDS OF TABLE lt_lips
FROM lips
FOR ALL ENTRIES IN lt_likp
WHERE vbeln = lt_likp-vbeln.
ENDIF.
REFRESH ct_del.
LOOP AT lt_lips INTO ls_lips.
CLEAR ls_del. "structura cu info de livrari
CLEAR ls_likp.
READ TABLE lt_likp
WITH KEY vbeln =
BINARY SEARCH.
IF sy-subrc = 0.
ls_del-vbeln
ls_del-lfdat
ls_del-vstel
ls_del-kunnr
ls_del-wadat_ist

INTO ls_likp
ls_lips-vbeln
=
=
=
=
=

ls_likp-vbeln.
ls_likp-lfdat.
ls_likp-vstel.
ls_likp-kunnr.
ls_likp-wadat_ist.

ENDIF.
ls_del-posnr = ls_lips-posnr.
ls_del-lfimg = ls_lips-lfimg.
ls_del-meins = ls_lips-meins.
ls_del-vgbel = ls_lips-vgbel.
ls_del-vgpos = ls_lips-vgpos.
APPEND ls_del TO ct_del.
ENDLOOP.
SORT ct_del BY vbeln posnr.
ENDFORM.
" SELECT_DELIVERY
*&---------------------------------------------------------------------*
*&
Form SELECT_SALESORDER
*&---------------------------------------------------------------------*
FORM select_salesorder USING
ut_del
TYPE tty_del
CHANGING ct_salesorder TYPE tty_salesorder.
TYPES: BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln,
auart TYPE vbak-auart,
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
kwmeng TYPE vbap-kwmeng,
vgbel TYPE vbap-vgbel,
vgpos TYPE vbap-vgpos,
END OF ty_vbap.
DATA:

lt_vbak TYPE STANDARD TABLE OF ty_vbak,


ls_vbak TYPE ty_vbak,
lt_vbap TYPE STANDARD TABLE OF ty_vbap,
ls_vbap TYPE ty_vbap,
ls_salesorder TYPE ty_salesorder.

IF NOT ut_del IS INITIAL.


SELECT vbeln posnr kwmeng
INTO CORRESPONDING FIELDS OF TABLE lt_vbap
FROM vbap
FOR ALL ENTRIES IN ut_del
WHERE vbeln = ut_del-vgbel
AND posnr = ut_del-vgpos.
SORT lt_vbak BY vbeln.
IF sy-subrc = 0.
SELECT vbeln auart
INTO CORRESPONDING FIELDS OF TABLE lt_vbak
FROM vbak
FOR ALL ENTRIES IN lt_vbap
WHERE vbeln = lt_vbap-vbeln.
ENDIF.
ENDIF.

REFRESH ct_salesorder.
LOOP AT lt_vbap INTO ls_vbap.
CLEAR ls_salesorder. "structura cu informatii de order
CLEAR ls_vbak.
READ TABLE lt_vbak INTO ls_vbak
WITH KEY vbeln = ls_vbap-vbeln
BINARY SEARCH.
IF sy-subrc = 0.
ls_salesorder-auart = ls_vbak-auart.
ENDIF.
ls_salesorder-vbeln = ls_vbap-vbeln.
ls_salesorder-posnr = ls_vbap-posnr.
ls_salesorder-kwmeng = ls_vbap-kwmeng.
APPEND ls_salesorder TO ct_salesorder.
ENDLOOP.
ENDFORM.
" SELECT_SALESORDAR
*&---------------------------------------------------------------------*
*&
Form PRELUCRARE_DATE
*&---------------------------------------------------------------------*
FORM prelucrare_date USING
ut_del
TYPE tty_del "delivery
ut_salesorder TYPE tty_salesorder "sales order
CHANGING ct_delivery
TYPE tty_delivery. "output
DATA: ls_delivery TYPE ty_delivery,
ls_del
TYPE ty_del,
ls_salesorder TYPE ty_salesorder.
REFRESH ct_delivery.
CLEAR gv_sum.
LOOP AT ut_del INTO ls_del.
CLEAR ls_delivery.
ls_delivery-vbeln_d = ls_del-vbeln.
ls_delivery-posnr_d = ls_del-posnr.
ls_delivery-lfdat = ls_del-lfdat.
ls_delivery-vstel = ls_del-vstel.
ls_delivery-kunnr = ls_del-kunnr.
ls_delivery-wadat_ist = ls_del-wadat_ist.
ls_delivery-lfimg = ls_del-lfimg.
gv_sum = gv_sum + ls_delivery-lfimg.
ls_delivery-meins = ls_del-meins.
CLEAR ls_salesorder.
READ TABLE ut_salesorder INTO ls_salesorder
WITH KEY vbeln = ls_del-vgbel
posnr = ls_del-vgpos
BINARY SEARCH.

IF sy-subrc = 0.
ls_delivery-vbeln = ls_salesorder-vbeln.
ls_delivery-posnr = ls_salesorder-posnr.
ls_delivery-auart = ls_salesorder-auart.
ls_delivery-kwmeng = ls_salesorder-kwmeng.
ls_delivery-wbstk = ls_salesorder-wbstk.
ENDIF.
APPEND ls_delivery TO ct_delivery.
ENDLOOP.

ENDFORM.

" PRELUCRARE_DATE

You might also like