Type-Pools Slis
Type-Pools Slis
REPORT ZCLAASICAL_INT_PO_2
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.
*&---------------------------------------------------------------------*
*& 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.
*&---------------------------------------------------------------------*
*& 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 .
*&---------------------------------------------------------------------*
*& TOP-OF-PAGE
*&---------------------------------------------------------------------*
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 .
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 .
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.
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.
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 .
ENDLOOP.
ENDIF.
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 .
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.
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 .
* 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.
* Use the FM GUI_DOWNLOAD to download the generated PDF file onto the
* presentation server
IF SY-SUBRC = 0.
* MESSAGE S003.
ELSE.
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 = '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.