0% found this document useful (0 votes)
78 views18 pages

Type-Pools Slis

The document describes a report that retrieves and displays purchase order data from various database tables. It declares variables and structures for headers, items, and output tables. It performs queries to populate the tables, prepares the output, and displays it on selection using ALV grid control or exports to Excel/PDF formats.

Uploaded by

Rangabashyam
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)
78 views18 pages

Type-Pools Slis

The document describes a report that retrieves and displays purchase order data from various database tables. It declares variables and structures for headers, items, and output tables. It performs queries to populate the tables, prepares the output, and displays it on selection using ALV grid control or exports to Excel/PDF formats.

Uploaded by

Rangabashyam
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/ 18

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

*& Report ZCLAASICAL_INT_PO_2


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

REPORT ZCLAASICAL_INT_PO_2

no standard PAGE HEADING LINE-size 135 LINE-COUNT 60(10).


TYPE-POOLS : SLIS.
* Declaring line structure of database tables
TABLES: ekko, ekpo, t161t, LFA1.
INCLUDE OLE2INCL.

* Declaring local structures for internal table & work area


TYPES:
BEGIN OF ty_ekko,
ebeln TYPE ekko-ebeln, "Purchase Order
bukrs TYPE ekko-bukrs, "Company Code
bstyp TYPE ekko-bstyp, "Category
bsart TYPE ekko-bsart, "Type
lifnr TYPE ekko-lifnr, "Vendor
SPRAS TYPE EKKO-SPRAS,
END OF ty_ekko,

BEGIN OF ty_text,
spras TYPE t161t-spras,
bsart TYPE t161t-bsart,
bstyp TYPE t161t-bstyp,
batxt TYPE t161t-batxt, "PO Info
END OF ty_text,

BEGIN OF ty_ekpo,
ebeln TYPE ekpo-ebeln, "Purchase Order
ebelp TYPE ekpo-ebelp, "PO Item
matnr TYPE ekpo-matnr, "Material
werks TYPE ekpo-werks, "Plant
lgort TYPE ekpo-lgort, "Storage Location
matkl TYPE ekpo-matkl, "Material Group
menge TYPE ekpo-menge, "Quantity
meins TYPE ekpo-meins, "Unit
END OF ty_ekpo,

BEGIN OF ty_out1,
ebeln TYPE ekko-ebeln,
bukrs TYPE ekko-bukrs,
bstyp TYPE ekko-bstyp,
bsart TYPE ekko-bsart,
lifnr TYPE ekko-lifnr,
SPRAS TYPE EKKO-SPRAS,
batxt TYPE t161t-batxt,
LAND1 TYPE LFA1-LAND1,
NAME1 TYPE LFA1-NAME1,
ORT01 TYPE LFA1-ORT01,
END OF ty_out1,
BEGIN OF TY_LFA1,
LIFNR TYPE LFA1-LIFNR,
LAND1 TYPE LFA1-LAND1,
NAME1 TYPE LFA1-NAME1,
ORT01 TYPE LFA1-ORT01,
END OF TY_LFA1.

* Declaring work area & internal table


DATA:
wa_ekko TYPE ty_ekko, "Header table work area
it_ekko TYPE STANDARD TABLE OF ty_ekko, "Header internal table
wa_text TYPE ty_text, "Info table work area
it_text TYPE STANDARD TABLE OF ty_text, "Info internal table
wa_out1 TYPE ty_out1, "Basic output work area
it_out1 TYPE STANDARD TABLE OF ty_out1, "Basic output internal table
wa_ekpo TYPE ty_ekpo, "Item table work area
it_ekpo TYPE STANDARD TABLE OF ty_ekpo, "Item internal table
WA_LFA1 TYPE TY_LFA1,
IT_LFA1 TYPE STANDARD TABLE OF TY_LFA1,
v_repid TYPE sy-repid,
v_user TYPE sy-uname,
v_date TYPE sy-datum,
LV_LIFNR TYPE LFA1-LIFNR,
GI_PDF TYPE STANDARD TABLE OF TLINE,
GV_BIN_FILESIZE TYPE I,
GV_FILE_NAME TYPE STRING,
GV_FILE_PATH TYPE STRING,
GV_FULL_PATH TYPE STRING,

v_field1 TYPE char40,


v_value1 TYPE char40,
v_field2 TYPE char40,
v_value2 TYPE char40,
v_field3 TYPE char40,
v_value3 TYPE char40.

DATA : H_EXCEL TYPE OLE2_OBJECT, " Excel object


H_MAPL TYPE OLE2_OBJECT, " list of workbooks
H_MAP TYPE OLE2_OBJECT, " workbook
H_ZL TYPE OLE2_OBJECT, " cell
H_F TYPE OLE2_OBJECT. " font
DATA H TYPE I.
DATA : FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& SELECTION SCREENS
*&---------------------------------------------------------------------*

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


SELECT-OPTIONS s_ebeln FOR ekko-ebeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.

*&---------------------------------------------------------------------*
*& INTIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
PERFORM INTIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_EBELN-LOW .
PERFORM GET_FILENAME.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_EBELN-HIGH.
PERFORM GET_FILENAME.

*&---------------------------------------------------------------------*
*& START OF SLECTION
*&---------------------------------------------------------------------*

START-OF-SELECTION.

PERFORM get_ekko. "Get data from header table


PERFORM get_t161t. "Get data from Info table
PERFORM basic_output. "Preparing the primary output
PERFORM disp_basic. "Displaying output of first list
* PERFORM EXCEL.

PERFORM get_ekko. "Get data from header table


PERFORM get_t161t. "Get data from Info table
PERFORM basic_output. "Preparing the primary output
PERFORM disp_basic.
* PERFORM PRINT_PARAMETERS.

*&---------------------------------------------------------------------*
*& AT LINE-SELECTION
*&---------------------------------------------------------------------*
* Event At line selection for Double click operation
AT LINE-SELECTION.
BREAK-POINT.
* It passes the field and value to the current cursor position
* When double click is happened on the PO field of Primary list
GET CURSOR FIELD v_field1 VALUE v_value1.
CASE v_field1 .

* When we double click on PO number on Basic output list


WHEN 'WA_OUT1-EBELN'.
PERFORM get_ekpo. "Get data from Item table
PERFORM ekpo_output. "Displaying output of second list
WHEN 'WA_EKPO-MATNR'.
PERFORM get_mara.
WHEN 'WA_OUT1-LIFNR'.
PERFORM GET_LIFNR.
PERFORM LIFNR_OUTPUT.
WHEN OTHERS.
MESSAGE 'SELECT VALID FIELD.' TYPE 'E' DISPLAY LIKE 'S'.
LEAVE LIST-PROCESSING.
clear v_field1.
clear v_value1.
ENDCASE.

*&---------------------------------------------------------------------*
*& TOP-OF-PAGE
*&---------------------------------------------------------------------*

* Event top of page for Basic list / Primary list


TOP-OF-PAGE.
PERFORM top_page1.

* Event top of page for Second list


TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM top_page2.
*&---------------------------------------------------------------------*
*& END-OF-PAGE
*&---------------------------------------------------------------------*
* Event End of page for Basic list / Primary list
END-OF-PAGE.
PERFORM END_OF_PAGE.
SET PF-STATUS 'PDF & EXCEL '.
AT USER-COMMAND.
IF SY-UCOMM = 'PDF'.
CASE SY-LSIND.
WHEN 1.
PERFORM PRINT_PARAMETERS.
ENDCASE.
clear sy-ucomm.
ENDIF.

IF SY-UCOMM = 'EXCEL'.
CASE SY-LSIND.
WHEN 1.
PERFORM EXCEL.
ENDCASE.
clear sy-ucomm.
ENDIF.
IF SY-UCOMM = 'ALV'.
CASE SY-LSIND.
WHEN 1.
PERFORM ALV.
ENDCASE.
clear sy-ucomm.
ENDIF.

*&-------------------++--------------------------------------------------*
*& Form get_ekko
*&---------------------------------------------------------------------*
* Get data from header table
*----------------------------------------------------------------------*

FORM get_ekko .

* Selection of header table data


SELECT ebeln bukrs bstyp bsart lifnr
FROM ekko INTO TABLE it_ekko
WHERE ebeln IN s_ebeln.

IF sy-subrc = 0.
SORT it_ekko BY ebeln.
ELSE.
MESSAGE 'Purchase Order doesn''t exist.' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.

ENDFORM. "get_ekko

" get_ekko
*&---------------------------------------------------------------------*
*& Form get_t161t
*&---------------------------------------------------------------------*
* Get data from Info table
*----------------------------------------------------------------------*
FORM get_t161t .

* Seelction of Info table data


IF it_ekko IS NOT INITIAL. "Prerequisite of For all Entries
SELECT spras bsart bstyp batxt
FROM t161t INTO TABLE it_text
FOR ALL ENTRIES IN it_ekko
WHERE spras = SY-LANGU "System language at login time
AND bsart = it_ekko-bsart
AND bstyp = it_ekko-bstyp.

IF sy-subrc = 0.
SORT it_text BY bsart bstyp.
**DELETE ADJACENT DUPLICATES FROM IT_TEXT COMPARING BSART.
ENDIF.
ENDIF.
ENDFORM. " get_t161t
*&---------------------------------------------------------------------*
*& 0 Form basic_output
*&---------------------------------------------------------------------*
* Preparing the primary output
*----------------------------------------------------------------------*
FORM basic_output .
* Preparing the basic output table
IF it_ekko IS NOT INITIAL.
LOOP AT it_ekko INTO wa_ekko.
wa_out1-ebeln = wa_ekko-ebeln.
wa_out1-bukrs = wa_ekko-bukrs.
wa_out1-bstyp = wa_ekko-bstyp.
wa_out1-bsart = wa_ekko-bsart.
wa_out1-lifnr = wa_ekko-lifnr.
wa_out1-SPRAS = wa_ekko-SPRAS.

READ TABLE it_text INTO wa_text


WITH KEY bsart = wa_ekko-bsart
bstyp = wa_ekko-bstyp BINARY SEARCH.
IF sy-subrc = 0.
wa_out1-batxt = wa_text-batxt.
ENDIF.

APPEND wa_out1 TO it_out1.


CLEAR: wa_out1, wa_ekko, wa_text.

ENDLOOP.
ENDIF.
ENDFORM. " basic_output
*&---------------------------------------------------------------------*
*& Form disp_basic
*&---------------------------------------------------------------------*
* Displaying output of first list
*----------------------------------------------------------------------*
FORM disp_basic .
IF it_out1 IS NOT INITIAL.
LOOP AT it_out1 INTO wa_out1.
AT FIRST.
WRITE: / 'Purchase Order Item List',
/ 'Date: ', 12 SY-DATUM DD/MM/YYYY,
/ 'User: ', 12 SY-UNAME,
/ 'Report: ', 12 SY-repid.
ULINE.
SKIP.
ULINE (87).
WRITE: / SY-VLINE,
' ' COLOR 3, 3 'Purchase Order' COLOR 6,
18 SY-VLINE,
20 'Company',
28 SY-VLINE,
30 'Category',
38 SY-VLINE,
40 'Type',
48 SY-VLINE,
54 'Vendor',
63 SY-VLINE,
70 'PO Info.',
87 SY-VLINE.
ULINE (87).
ENDAT.

WRITE: / SY-VLINE,
3 wa_out1-ebeln,
18 SY-VLINE,
20 wa_out1-bukrs,
28 SY-VLINE,
33 wa_out1-bstyp,
38 SY-VLINE,
40 wa_out1-bsart,
48 SY-VLINE,
54 wa_out1-lifnr,
63 SY-VLINE,
65 wa_out1-batxt,
87 SY-VLINE.
ULINE (87).
AT LAST.
ULINE (87).
WRITE: /12 'PAGE NO' COLOR 5, sy-pagno COLOR 5, '~~End of Report~~'.
ULINE.
ENDAT.
ENDLOOP.
ENDIF.

ENDFORM. " disp_basic


*&---------------------------------------------------------------------*
*& Form get_ekpo
*&---------------------------------------------------------------------*
* Get data from Item table
*----------------------------------------------------------------------*
FORM get_ekpo .

* Local temporary variable for conversion


DATA: lv_ebeln TYPE ekko-ebeln.
IF v_value1 IS NOT INITIAL.

* To convert the value from output format to input format


* and passing it from input format to output format

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
input = v_value1
IMPORTING
output = lv_ebeln.

IF lv_ebeln IS NOT INITIAL.

* Selection of Item table


SELECT ebeln ebelp matnr werks lgort
matkl menge meins
FROM ekpo INTO TABLE it_ekpo
WHERE ebeln = lv_ebeln.

IF sy-subrc <> 0.
MESSAGE 'PO Item doesn''t Exist.' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDIF.
BREAK-POINT.
ENDFORM. " get_ekpo
*&---------------------------------------------------------------------*
*& Form ekpo_output
*&---------------------------------------------------------------------*
* Displaying output of second list
*----------------------------------------------------------------------*
FORM ekpo_output .

* Preparing secondary output


IF it_ekpo IS NOT INITIAL.
LOOP AT it_ekpo INTO wa_ekpo.
AT FIRST.
ULINE (105).
WRITE: / SY-VLINE,
2 'Purchase Order',
17 SY-VLINE,
20 'PO Item',
28 SY-VLINE,
30 'Material',
45 SY-VLINE,
48 'Plant',
53 SY-VLINE,
55 'Storage',
63 SY-VLINE,
65 'Material Group',
81 SY-VLINE,
85 'PO Quantity',
99 SY-VLINE,
100 'Unit',
105 SY-VLINE.
ULINE (105).
ENDAT.
WRITE: / SY-VLINE,
2 wa_ekpo-ebeln,
17 SY-VLINE,
20 wa_ekpo-ebelp,
28 SY-VLINE,
30 wa_ekpo-matnr,
45 SY-VLINE,
48 wa_ekpo-werks,
53 SY-VLINE,
55 wa_ekpo-lgort,
63 SY-VLINE,
65 wa_ekpo-matkl,
81 SY-VLINE,
82 wa_ekpo-menge,
99 SY-VLINE,
100 wa_ekpo-meins,
105 SY-VLINE.
ULINE (105).
AT LAST.
SKIP.
ULINE.
WRITE: /12 '~~End of PO Item~~'.
ENDAT.

ENDLOOP.
ENDIF.

ENDFORM. " ekpo_output


*&---------------------------------------------------------------------*
*& Form get_mara
*&---------------------------------------------------------------------*
* Get Information by calling MM03 Transaction
*----------------------------------------------------------------------*
FORM get_mara .

* Local temporary variable for conversion


DATA: lv_matnr TYPE mara-matnr.

IF v_value1 IS NOT INITIAL.

* Converting material from output format to input format


* and passing it from input format to output format
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = v_value1
IMPORTING
output = lv_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.

IF lv_matnr IS NOT INITIAL.

* Calling the MM03 transaction needs parameter ID


* which is available on domain of MATNR
SET PARAMETER ID 'MAT' FIELD lv_matnr.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDFORM. " get_mara
*&---------------------------------------------------------------------*
*& Form top_page1
*&---------------------------------------------------------------------*
* Event top of page for Basic list / Primary list
*----------------------------------------------------------------------*
FORM top_page1 .
IF SY-PAGNO GT 1.
ULINE (87).
WRITE: / SY-VLINE,
' ' COLOR 3, 3 'Purchase Order' COLOR 6,
18 SY-VLINE,
20 'Company',
28 SY-VLINE,
30 'Category',
38 SY-VLINE,
40 'Type',
48 SY-VLINE,
54 'Vendor',
63 SY-VLINE,
70 'PO Info.',
87 SY-VLINE.
ULINE (87).

ENDIF.
ENDFORM. " top_page1
*&---------------------------------------------------------------------*
*& Form top_page2
*&---------------------------------------------------------------------*
* Event top of page for Second list
*----------------------------------------------------------------------*

FORM top_page2.
case V_FIELD1.
when 'WA_OUT1-EBELN'.
WRITE: / 'purchase order item list',
/ 'Date: ', 12 SY-DATUM DD/MM/YYYY,
/ 'User: ', 12 SY-UNAME,
/ 'Report: ', 12 SY-REPID.
ULINE.
SKIP.
WHEN 'WA_OUT1-LIFNR'.
WRITE: / 'vendor details',
/ 'Date: ', 12 SY-DATUM DD/MM/YYYY,
/ 'User: ', 12 SY-UNAME,
/ 'Report: ', 12 SY-REPID.
ULINE.
SKIP.
ENDCASE.
ENDFORM. "top_page2
*&---------------------------------------------------------------------*
*& Form END_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM END_OF_PAGE .

WRITE: /12 'PAGE NO' COLOR 5, sy-pagno COLOR 5, '~~End of Report~~'.


ULINE.
ENDFORM. " END_OF_PAGE
*&---------------------------------------------------------------------*
*& Form GET_LIFNR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_LIFNR.

IF v_value1 IS NOT INITIAL.


CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_value1
IMPORTING
output = LV_LIFNR.

IF LV_LIFNR IS NOT INITIAL.

* Selection of Item table


SELECT LIFNR LAND1 NAME1 ORT01
FROM LFA1 INTO TABLE IT_LFA1
WHERE LIFNR = LV_LIFNR.

ENDIF.
ENDIF.
ENDFORM. " GET_LIFNR
*&---------------------------------------------------------------------*
*& Form LIFNR_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LIFNR_OUTPUT.
LOOP AT IT_LFA1 INTO WA_LFA1.
AT FIRST.
ULINE (90).
WRITE : / sy-vline,
'Account Number of Vendor',
29 sy-vline,
30 'Country Key',
44 sy-vline,
45 'name',
69 sy-vline,
70 'city',
90 sy-vline.
uline (90).
ENDAT.
WRITE: / sy-vline,
WA_LFA1-LIFNR,
29 sy-vline,
30 WA_LFA1-LAND1,
44 sy-vline,
45 WA_LFA1-NAME1,
69 sy-vline,
70 WA_LFA1-ORT01,
90 sy-vline.
uline (90).
AT LAST.
WRITE: /12 'PAGE NO' COLOR 5, sy-pagno COLOR 5, '~~End of Report~~'.
ULINE.
ENDAT.

ENDLOOP.

ENDFORM. " LIFNR_OUTPUT


*&---------------------------------------------------------------------*
*& Form EXCEL
*&---------------------------------------------------------------------*
* text function module to convert internal table into excel file.
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXCEL .

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'


EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-007
EXCEPTIONS
OTHERS = 1.
* start Excel
CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
PERFORM ERR_HDL.
SET PROPERTY OF H_EXCEL 'Visible' = 1.
PERFORM ERR_HDL.
* tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-008
EXCEPTIONS
OTHERS = 1.
* get list of workbooks, initially empty
CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
PERFORM ERR_HDL.
* add a new workbook
CALL METHOD OF H_MAPL 'Add' = H_MAP.
PERFORM ERR_HDL.
* tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-009
EXCEPTIONS
OTHERS = 1.
* output column headings to active Excel sheet
PERFORM FILL_CELL USING 1 1 1 'PURCGASE ORDER'(001).
PERFORM FILL_CELL USING 1 2 1 'COMPANY CODE'(002).
PERFORM FILL_CELL USING 1 3 1 'CATEGORY'(003).
PERFORM FILL_CELL USING 1 4 1 'TYPE'(004).
PERFORM FILL_CELL USING 1 5 1 'VENDOR'(005).
PERFORM FILL_CELL USING 1 6 1 'P0 INFORMATION'(006).
LOOP AT IT_EKKO INTO WA_EKKO.
* copy flights to active EXCEL sheet
H = SY-TABIX + 1.
PERFORM FILL_CELL USING H 1 0 WA_OUT1-EBELN.
PERFORM FILL_CELL USING H 2 0 WA_OUT1-BUKRS.
PERFORM FILL_CELL USING H 3 0 WA_OUT1-BSTYP.
PERFORM FILL_CELL USING H 4 0 WA_OUT1-BSART.
PERFORM FILL_CELL USING H 5 0 WA_OUT1-LIFNR.
PERFORM FILL_CELL USING H 6 0 WA_OUT1-BATXT.

ENDLOOP.
* disconnect from Excel
FREE OBJECT H_EXCEL.
PERFORM ERR_HDL.
ENDFORM.
*---------------------------------------------------------------------*
* FORM FILL_CELL *
*---------------------------------------------------------------------*
* sets cell at coordinates i,j to value val boldtype bold *
*---------------------------------------------------------------------*
FORM FILL_CELL USING I J BOLD VAL.
CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J.
PERFORM ERR_HDL.
SET PROPERTY OF H_ZL 'Value' = VAL .
PERFORM ERR_HDL.
GET PROPERTY OF H_ZL 'Font' = H_F.
PERFORM ERR_HDL.
SET PROPERTY OF H_F 'Bold' = BOLD .
PERFORM ERR_HDL.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ERR_HDL
*&---------------------------------------------------------------------*
* outputs OLE error if any *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ERR_HDL.
IF SY-SUBRC <> 0.
WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC.
STOP.
ENDIF.
ENDFORM. " ERR_HDL

" EXCEL
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE3 .

WRITE: / 'VENDOR order item list',


/ 'Date: ', 12 SY-DATUM DD/MM/YYYY,
/ 'User: ', 12 SY-UNAME,
/ 'Report: ', 12 SY-REPID.
ULINE.
SKIP.

ENDFORM. " TOP_OF_PAGE3


*&---------------------------------------------------------------------*
*& Form GET_FILENAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FILENAME.
SELECT EBELN FROM EKKO INTO TABLE IT_EKKO UP TO 50 ROWS.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
RETFIELD = 'EBELN'
* PVALKEY = ' '
* DYNPPROG = ' '
* DYNPNR = ' '
DYNPROFIELD = 'S_EBELEN '
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
VALUE_TAB = IT_EKKO

* FIELD_TAB =
* RETURN_TAB =
* DYNPFLD_MAPPING =
* EXCEPTIONS
* PARAMETER_ERROR = 1
* NO_VALUES_FOUND = 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. " GET_FILENAME


*&---------------------------------------------------------------------*
*& Form INTIALIZATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM INTIALIZATION.
S_EBELN-LOW = '3000000004'.
S_EBELN-HIGH = '3000000500'.
S_EBELN-OPTION = 'BT'.
S_EBELN-SIGN = 'I'.
APPEND S_EBELN.
CLEAR S_EBELN.

ENDFORM. " INTIALIZATION


*&---------------------------------------------------------------------*
*& Form PRINT_PARAMETERS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRINT_PARAMETERS .
PERFORM PDF. "Get data from Info table
PERFORM disp_basic.
PERFORM CREATE_PDF.

ENDFORM. " print_parameters


*&---------------------------------------------------------------------*
*& Form PDF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PDF .
DATA:lv_val TYPE c,
lv_pripar TYPE pri_params,
lv_arcpar TYPE arc_params.

CALL FUNCTION 'GET_PRINT_PARAMETERS'


EXPORTING
in_archive_parameters = lv_arcpar
in_parameters = lv_pripar
layout = 'X_65_132'
line_count = 65
line_size = 132
no_dialog = 'X'
IMPORTING
out_archive_parameters = lv_arcpar
out_parameters = lv_pripar
valid = lv_val.
IF lv_val NE space .
lv_pripar-prrel = space.
lv_pripar-primm = space.
NEW-PAGE PRINT ON NEW-SECTION PARAMETERS
lv_pripar ARCHIVE PARAMETERS lv_arcpar NO DIALOG.
ENDIF.
ENDFORM.
" PDF
*&---------------------------------------------------------------------*
*& Form CREATE_PDF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_PDF .
NEW-PAGE PRINT OFF.
CALL FUNCTION 'ABAP4_COMMIT_WORK'.

DATA: lv_spoolid LIKE tsp01-rqident.


lv_spoolid = sy-spono.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = lv_spoolid
no_dialog = ' '
TABLES
pdf = GI_pdf. "OTF Data

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG


EXPORTING
WINDOW_TITLE = 'Save Output as PDF' "LV_TITLE
DEFAULT_EXTENSION = 'PDF'
FILE_FILTER = '(*.pdf)|*.pdf|'
DEFAULT_FILE_NAME = GV_FILE_NAME
CHANGING
FILENAME = GV_FILE_NAME
PATH = GV_FILE_PATH
FULLPATH = GV_FULL_PATH
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.

* Use the FM GUI_DOWNLOAD to download the generated PDF file onto the

* presentation server

CHECK GV_FULL_PATH IS NOT INITIAL.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
BIN_FILESIZE = GV_BIN_FILESIZE
FILENAME = GV_FULL_PATH
FILETYPE = 'BIN'
TABLES
DATA_TAB = GI_PDF
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.

IF SY-SUBRC = 0.

* MESSAGE S003.

ELSE.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


* MESSAGE E004.
LEAVE LIST-PROCESSING.
ENDIF.

ENDFORM. " CREATE_PDF


*&---------------------------------------------------------------------*
*& Form ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV .

FIELDCATALOG-FIELDNAME = 'EBELN'.
FIELDCATALOG-SELTEXT_M = 'PURCHASE ORDER'.
FIELDCATALOG-COL_POS = 0.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.

FIELDCATALOG-FIELDNAME = 'BUKRS'.
FIELDCATALOG-SELTEXT_M = 'Company Code'.
FIELDCATALOG-COL_POS = 1.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.

FIELDCATALOG-FIELDNAME = 'BSTYP '.


FIELDCATALOG-SELTEXT_M = 'Category'.
FIELDCATALOG-COL_POS = 2.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.

FIELDCATALOG-FIELDNAME = 'BSART'.
FIELDCATALOG-SELTEXT_M = 'Type'.
FIELDCATALOG-COL_POS = 3.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.

FIELDCATALOG-FIELDNAME = 'LIFNR'.
FIELDCATALOG-SELTEXT_M = 'Vendor'.
FIELDCATALOG-COL_POS = 4.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.

FIELDCATALOG-FIELDNAME = 'BATXT'.
FIELDCATALOG-SELTEXT_M = 'PO Info'.
FIELDCATALOG-COL_POS = 5.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'GD_REPID '
* I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = '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_GRID_SETTINGS =
* IS_LAYOUT =
IT_FIELDCAT = FIELDCATALOG[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
I_SAVE = 'X '
* IS_VARIANT =
* IT_EVENTS =
* 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_OUT1
* 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. " FIELDCATALOG

You might also like