*&---------------------------------------------------------------------*
*& 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