Documente Academic
Documente Profesional
Documente Cultură
This ABAP example program lists VBAK and VBAP items between given two VBELN numbers on an SAP screen in an AL
using cl_gui_alv_grid.
And the below screenshot is showing the output of the example ABAP program that filters data from VBAK and VBAP trans
tables and displays data on an ABAP ALV grid control placed in a custom container.
Let's begin with the source code of the example ABAP report codes.
DATA :
gr_vbeln TYPE RANGE OF vbak-vbeln,
grs_vbeln LIKE LINE OF gr_vbeln.
DATA:
gs_fieldcatalog TYPE lvc_s_fcat OCCURS 0,
gv_fcat LIKE LINE OF gs_fieldcatalog,
gs_layout TYPE lvc_s_layo.
TYPES :
BEGIN OF gty_item,
mandt LIKE vbak-mandt,
vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
kunnr LIKE vbak-kunnr,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
arktx LIKE vbap-arktx,
kwmeng LIKE vbap-kwmeng,
desc_text LIKE zvbap-desc_text,
END OF gty_item,
BEGIN OF gty_vbak,
mandt LIKE vbak-mandt,
vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
kunnr LIKE vbak-kunnr,
END OF gty_vbak,
BEGIN OF gty_vbap,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
arktx LIKE vbap-arktx,
kwmeng LIKE vbap-kwmeng,
END OF gty_vbap.
DATA :
gs_item TYPE gty_item,
gt_item TYPE TABLE OF gty_item.
DATA :
gs_vbak TYPE gty_vbak,
gt_vbak TYPE TABLE OF gty_vbak,
gs_vbap TYPE gty_vbap,
gt_vbap TYPE TABLE OF gty_vbap.
DATA :
g_Container TYPE scrfname VALUE 'CC_CONTAINER_GRID',
g_Custom_Container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
g_Grid TYPE REF TO CL_GUI_ALV_GRID.
DATA :
OK_CODE LIKE sy-ucomm,
SAVE_OK LIKE sy-ucomm.
START-OF-SELECTION.
Let's continue reviewing the sample ABAP program code with the screen 100 dynapro object.
In the below screenshot you can see the layout view of the screen on the SAP Screen Painter editor.
This Screen Painter example show a cl_gui_custom_container object and the grid object cl_gui_alv_grid placed in that cont
Please pay attention to the FctCode of the Button object BTNLIST. The FctCode is set as "BTNLIST" and will be controlled
(Process After Input) module with the ABAP CASE statement controlling the value of OK_CODE.
Here is the Process Before Output (PBO) module or ABAP code block of the Screen 100.
" Create CONTAINER object with reference to container name in the screen
CREATE OBJECT g_Custom_Container EXPORTING CONTAINER_NAME = g_Container.
" Create GRID object with reference to parent name
CREATE OBJECT g_Grid EXPORTING I_PARENT = g_Custom_Container.
PERFORM u_prepare_fieldcatalog.
gs_layout-ZEBRA = 'X'.
"gs_layout-edit = 'X'. " Makes all Grid editable
" SET_TABLE_FOR_FIRST_DISPLAY
CALL METHOD g_Grid->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
is_layout = gs_layout
CHANGING
it_fieldcatalog = gs_fieldcatalog
IT_OUTTAB = gt_item. " Data
ELSE.
CALL METHOD g_Grid->REFRESH_TABLE_DISPLAY.
ENDIF.
And you can find the Process After Input (PAI) module or ABAP code block of the Screen 100.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'EXIT' OR 'BACK' OR 'CNCL'.
LEAVE PROGRAM.
WHEN 'BTNLIST'.
PERFORM u_filter_vbak.
WHEN OTHERS.
ENDCASE.
In U_FILTER_VBAK, the required ABAP code to select data from related data dictionary objects, tables according to the giv
takes place.
Within this ABAP code block, the necessary internal tables are populated with data from database.
FORM U_FILTER_VBAK .
REFRESH gt_vbak.
CLEAR gs_item.
CLEAR gs_vbak.
CLEAR gs_vbap.
ENDLOOP.
ENDIF.
CLEAR gv_fcat.
gv_fcat-fieldname = 'MANDT'.
gv_fcat-tabname = 'VBAP'.
gv_fcat-col_pos = 0.
gv_fcat-coltext = 'MANDT'.
gv_fcat-no_out = 'X'. " Do not Display Column
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'VBELN'.
gv_fcat-tabname = 'VBAP'.
gv_fcat-col_pos = 1.
gv_fcat-coltext = 'VBELN'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'ERDAT'.
gv_fcat-tabname = 'VBAP'.
gv_fcat-col_pos = 2.
gv_fcat-coltext = 'ERDAT'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'KUNNR'.
gv_fcat-tabname = 'VBAP'.
gv_fcat-col_pos = 3.
gv_fcat-coltext = 'KUNNR'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'POSNR'. gv_fcat-tabname = 'VBAP'.
gv_fcat-col_pos = 4.
gv_fcat-coltext = 'POSNR'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'MATNR'.
gv_fcat-tabname = 'VBAP'.
gv_fcat-col_pos = 5.
gv_fcat-coltext = 'MATNR'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'ARKTX'.
gv_fcat-tabname = 'VBAP'.
gv_fcat-col_pos = 6.
gv_fcat-coltext = 'ARKTX'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'KWMENG'.
gv_fcat-tabname = 'VBAP'.
gv_fcat-col_pos = 7.
gv_fcat-coltext = 'KWMENG'.
gv_fcat-EDIT = 'X'. " Makes field editable in Grid
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'DESC_TEXT'.
gv_fcat-tabname = 'VBAP'.
gv_fcat-col_pos = 7.
gv_fcat-coltext = 'DESC_TEXT'.
gv_fcat-no_out = 'X'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.