Sie sind auf Seite 1von 14

REPORT ZFI1_PURCHASE_ORDERS_DOWNLOAD1.

************************************************************************
*
************************************************************************
* Modification History
************************************************************************
* Programmer
Date
Request # Description
* XXXXXXXXX dd/mm/yy
nnnnnnn New release
*
************************************************************************
TYPE-POOLS : SLIS, OLE2 .
************************************************************************
* T A B L E S
************************************************************************
TABLES : EKKO,EKPO,LFA1,T001,KONV.
*----------------------------------------------------------------------* T y p e s
*----------------------------------------------------------------------TYPES: BEGIN OF T_HEADER,
FLD TYPE CHAR40,
END OF T_HEADER.
TYPES: BEGIN
EBELN
LIFNR
NAME1
BUKRS
BUTXT
EKORG
EKGRP
WAERS
KWERT
END OF

OF TY_OUTPUT,
TYPE EBELN,
TYPE LIFNR,
TYPE NAME1_GP,
TYPE BUKRS,
TYPE BUTXT,
TYPE EKORG,
TYPE EKGRP,
TYPE WAERS,
TYPE KWERT,
TY_OUTPUT.

TYPES: TT_OUTPUT TYPE STANDARD TABLE OF TY_OUTPUT.


TYPES: TY_LINE(5000) TYPE C.
TYPES: BEGIN
KNUMV
KWERT
END OF

OF TY_KNUMV,
TYPE KNUMV,
TYPE KWERT,
TY_KNUMV.

TYPES: TT_KNUMV TYPE STANDARD TABLE OF TY_KNUMV.


*----------------------------------------------------------------------* V A R I A B L E D E C L A R A T I O N S
*----------------------------------------------------------------------FIELD-SYMBOLS: <FS_TABLE> TYPE STANDARD TABLE,
<FS_WA>,
<FS_FIELD>,
<FS>,
<FS_CHAR> TYPE CHAR255.
DATA: DYN_TABLE
TYPE REF TO DATA,
DYN_LINE
TYPE REF TO DATA,
WA_FIELDCAT TYPE LVC_S_FCAT,
IT_FIELDCAT TYPE LVC_T_FCAT,
GV_TAB TYPE ZDM_MAPPING-TAB,

GV_CATG TYPE ZDM_MAPPING-CATG,


GV_EXCEL TYPE C,
V_SHEETNO TYPE I.
*ALV data declarations
DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
GD_LAYOUT
TYPE SLIS_LAYOUT_ALV,
GD_REPID
LIKE SY-REPID,
V_LENGTH
TYPE CHAR3.
*----------------------------------------------------------------------* I N T E R N A L T A B L E S
*----------------------------------------------------------------------DATA:
T_OUTPUT TYPE TT_OUTPUT,
T_T001 TYPE STANDARD TABLE OF T001,
T_KONV TYPE STANDARD TABLE OF KONV,
T_EKKO TYPE STANDARD TABLE OF EKKO,
T_EKPO TYPE STANDARD TABLE OF EKPO,
T_LFA1 TYPE STANDARD TABLE OF LFA1,
T_EKAN TYPE STANDARD TABLE OF EKAN,
T_EIKP TYPE STANDARD TABLE OF EIKP,
T_ADRC TYPE STANDARD TABLE OF ADRC,
T_EKET TYPE STANDARD TABLE OF EKET,
T_EKKN TYPE STANDARD TABLE OF EKKN,
T_KONH TYPE STANDARD TABLE OF KONH,
T_KONP TYPE STANDARD TABLE OF KONP,
T_ESUH TYPE STANDARD TABLE OF ESUH,
T_ESUC TYPE STANDARD TABLE OF ESUC,
T_ESLL TYPE STANDARD TABLE OF ESLL,
T_ESKL TYPE STANDARD TABLE OF ESKL,
T_EIPO TYPE STANDARD TABLE OF EIPO,
T_EKPA TYPE STANDARD TABLE OF EKPA,
T_EKPV TYPE STANDARD TABLE OF EKPV,
T_MAPPING TYPE STANDARD TABLE OF ZDM_MAPPING,
T_CATG TYPE STANDARD TABLE OF ZDM_CATG,
T_TAB TYPE STANDARD TABLE OF ZDM_TAB,
T_TRANS TYPE STANDARD TABLE OF ZDM_TRANS,
T_HEAD1 TYPE TABLE OF T_HEADER,
T_HEAD2 TYPE TABLE OF T_HEADER,
T_HEAD3 TYPE TABLE OF T_HEADER,
T_EDATA TYPE TABLE OF TY_LINE.
DATA : W_OUTPUT
W_T001
W_KONV
W_EKKO
W_EKPO
W_LFA1
W_EKAN
W_EIKP
W_ADRC
W_EKET
W_EKKN
W_KONH
W_KONP
W_ESUH
W_ESUC
W_ESLL
W_ESKL
W_EIPO

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

TY_OUTPUT,
T001,
KONV,
EKKO,
EKPO,
LFA1,
EKAN,
EIKP,
ADRC,
EKET,
EKKN,
KONH,
KONP,
ESUH,
ESUC,
ESLL,
ESKL,
EIPO,

W_EKPA
W_EKPV
W_MAPPING
W_CATG
W_TAB
W_TRANS
W_HEAD
WA_TAB

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

EKPA,
EKPV,
ZDM_MAPPING,
ZDM_CATG,
ZDM_TAB,
ZDM_TRANS,
T_HEADER,
TY_LINE.

DATA: BEGIN OF T_TABLE OCCURS 0,


CATG LIKE ZDM_MAPPING-CATG,
TAB LIKE ZDM_MAPPING-TAB,
TBNAME LIKE DD02L-TABNAME,
END OF T_TABLE.
**Excle
DATA: W_EXCEL TYPE OLE2_OBJECT,
W_WORKBOOK
TYPE OLE2_OBJECT,
W_WORKSHEET
TYPE OLE2_OBJECT,
W_COLUMNS
TYPE OLE2_OBJECT,
W_COLUMN_ENT
TYPE OLE2_OBJECT,
W_CELL
TYPE OLE2_OBJECT,
W_INT
TYPE OLE2_OBJECT,
W_RANGE
TYPE OLE2_OBJECT.
DATA INDEX TYPE I.
DATA: LD_COLINDX TYPE I,
LD_ROWINDX TYPE I,
W_RC TYPE I.

"column index
"row index

DATA : T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,


W_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA: T_KNUMV TYPE TT_KNUMV,
W_KNUMV TYPE TY_KNUMV.
*----------------------------------------------------------------------* C o n s t a n t s d e c l a r a t i o n s
*----------------------------------------------------------------------CONSTANTS: C_TCODE(5) TYPE C VALUE 'ME21N', "Transaction
C_G
TYPE C VALUE 'G',
"General
C_1(3) TYPE C VALUE '001',
C_2(3) TYPE C VALUE '002',
C_3(3) TYPE C VALUE '003',
C_5(3) TYPE C VALUE '005',
C_6(3) TYPE C VALUE '006',
C_7(3) TYPE C VALUE '007',
C_8(3) TYPE C VALUE '008',
C_10(3) TYPE C VALUE '010',
C_11(3) TYPE C VALUE '011',
C_12(3) TYPE C VALUE '012',
C_13(3) TYPE C VALUE '013',
C_14(3) TYPE C VALUE '014',
C_15(3) TYPE C VALUE '015',
C_17(3) TYPE C VALUE '017',
C_19(3) TYPE C VALUE '019',
C_21(3) TYPE C VALUE '021'.
CONSTANTS: ROW_MAX TYPE I VALUE 256.

CONSTANTS : CON_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.


************************************************************************
* S E L E C T - O P T I O N S A N D P A R A M E T E R S
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
SELECT-OPTIONS : S_EBELN
S_BUKRS
S_BSART
S_AEDAT
S_EKORG
S_EKGRP
S_MATNR
S_WERKS
S_LGORT

FOR
FOR
FOR
FOR
FOR
FOR
FOR
FOR
FOR

EKKO-EBELN,
EKKO-BUKRS OBLIGATORY,
EKKO-BSART,
EKKO-AEDAT,
EKKO-EKORG,
EKKO-EKGRP,
EKPO-MATNR,
EKPO-WERKS,
EKPO-LGORT .

SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE TEXT-015.


PARAMETERS: P_FILE TYPE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
DATA: LV_FILENAME TYPE STRING,
LV_PATH TYPE STRING,
LV_FULLPATH TYPE STRING,
LV_RESULT TYPE I,
LV_FILE TYPE C.
* Display save dialog window
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
DEFAULT_EXTENSION = 'XLS'
INITIAL_DIRECTORY = 'c:\temp\'
CHANGING
FILENAME
= LV_FILENAME
PATH
= LV_PATH
FULLPATH
= LV_FULLPATH
USER_ACTION
= LV_RESULT.
P_FILE = LV_FULLPATH.
************************************************************************
* S T A R T - O F - S E L E C T I O N
************************************************************************
START-OF-SELECTION.
*getting the data from the tables
PERFORM GET_DATA.
IF NOT T_EKKO IS INITIAL.
*Master data
PERFORM GET_MASTER_DATA(ZDM_GLOBAL_ROUTINE) TABLES T_TAB T_MAPPING T_TRANS T
_CATG USING C_TCODE.
*Data preperation
PERFORM DATA_PROCESS.
ENDIF.

*displying the data in alv grid


PERFORM DISPLAY_DATA.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&
Form GET_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_DATA .
*Purchasing Document Header
SELECT * FROM EKKO INTO TABLE T_EKKO WHERE EBELN IN S_EBELN
AND BUKRS IN S_BUKRS
AND BSART IN S_BSART
AND AEDAT IN S_AEDAT
AND EKORG IN S_EKORG
AND EKGRP IN S_EKGRP
AND LOEKZ NE 'X'.
IF NOT T_EKKO IS INITIAL.
*Purchasing Document Item
SELECT * FROM EKPO INTO TABLE T_EKPO FOR ALL ENTRIES IN T_EKKO
WHERE EBELN = T_EKKO-EBELN
AND MATNR IN S_MATNR
AND WERKS IN S_WERKS
AND LGORT IN S_LGORT
AND LOEKZ NE 'X' .
*Foreign Trade: Export/Import Header Data
SELECT * FROM EIKP INTO TABLE T_EIKP FOR ALL ENTRIES IN T_EKKO
WHERE EXNUM = T_EKKO-EXNUM.
*Vendor Address: Purchasing Document
SELECT * FROM EKAN INTO TABLE T_EKAN FOR ALL ENTRIES IN T_EKKO
WHERE EBELN = T_EKKO-EBELN.
*Addresses (Business Address Services)
SELECT * FROM ADRC INTO TABLE T_ADRC FOR ALL ENTRIES IN T_EKKO
WHERE ADDRNUMBER = T_EKKO-ADRNR.
*Ext. Services Management: Unpl. Service Limits: Header Data
SELECT * FROM ESUH INTO TABLE T_ESUH FOR ALL ENTRIES IN T_EKPO
WHERE PACKNO = T_EKPO-PACKNO.
*Ext. Services Management: Unplanned Limits on Contract Item
SELECT * FROM ESUC INTO TABLE T_ESUC FOR ALL ENTRIES IN T_EKPO
WHERE PACKNO = T_EKPO-PACKNO.
*Account Assignment Specification: Service Line
SELECT * FROM ESKL INTO TABLE T_ESKL FOR ALL ENTRIES IN T_EKPO
WHERE PACKNO = T_EKPO-PACKNO.
*Lines of Service Package
SELECT * FROM ESLL INTO TABLE T_ESLL FOR ALL ENTRIES IN T_EKPO

WHERE PACKNO = T_EKPO-PACKNO.


*Partner Roles in Purchasing
SELECT * FROM EKPA INTO TABLE T_EKPA FOR ALL ENTRIES IN T_EKKO
WHERE EBELN = T_EKKO-EBELN.
*Shipping Data For Stock Transfer of Purchasing Document Item
SELECT * FROM EKPV INTO TABLE T_EKPV FOR ALL ENTRIES IN T_EKKO
WHERE EBELN = T_EKKO-EBELN.
*Foreign Trade: Export/Import: Item Data
SELECT * FROM EIPO INTO TABLE T_EIPO FOR ALL ENTRIES IN T_EKKO
WHERE EXNUM = T_EKKO-EXNUM .
*Vendor Master (General Section)
SELECT * FROM LFA1 INTO TABLE T_LFA1 FOR ALL ENTRIES IN T_EKKO
WHERE LIFNR = T_EKKO-LIFNR.
*Company Codes
SELECT * FROM T001 INTO TABLE T_T001 FOR ALL ENTRIES IN T_EKKO
WHERE BUKRS EQ T_EKKO-BUKRS.
* Conditions (Transaction Data)
SELECT * FROM KONV INTO TABLE T_KONV FOR ALL ENTRIES IN T_EKKO
WHERE KNUMV EQ T_EKKO-KNUMV
AND ( KSCHL = 'PB00' OR KSCHL = 'PBXX' ).
ELSE.
MESSAGE TEXT-001 TYPE 'E'.
ENDIF.
IF T_EKPO IS INITIAL.
MESSAGE TEXT-001 TYPE 'E'.
ELSE.
SORT T_EKPO BY EBELN EBELP.
*Scheduling Agreement Schedule Lines
SELECT * FROM EKET INTO TABLE T_EKET FOR ALL ENTRIES IN T_EKPO
WHERE EBELN = T_EKPO-EBELN
AND EBELP = T_EKPO-EBELP.
*Account Assignment in Purchasing Document
SELECT * FROM EKKN INTO TABLE T_EKKN FOR ALL ENTRIES IN T_EKPO
WHERE EBELN = T_EKPO-EBELN
AND EBELP = T_EKPO-EBELP.
ENDIF.

IF NOT T_KONV IS NOT INITIAL.


*Conditions (Header)
SELECT * FROM KONH INTO TABLE T_KONH FOR ALL ENTRIES IN T_KONV
WHERE KNUMH = T_KONV-KNUMH.
*Conditions (Item)
SELECT * FROM KONP INTO TABLE T_KONP FOR ALL ENTRIES IN T_KONV
WHERE KNUMH = T_KONV-KNUMH.
ENDIF.

IF T_KONV IS NOT INITIAL.


SORT T_KONV BY KNUMV.
LOOP AT T_KONV INTO W_KONV.
AT END OF KNUMV.
SUM .
MOVE W_KONV-KNUMV TO W_KNUMV-KNUMV.
MOVE W_KONV-KWERT TO W_KNUMV-KWERT.
APPEND W_KNUMV TO T_KNUMV.
ENDAT.
CLEAR W_KONV.
ENDLOOP.
ENDIF.
ENDFORM.
" GET_DATA
*&---------------------------------------------------------------------*
*&
Form DATA_PROCESS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM DATA_PROCESS .
DATA:LT_MAP TYPE STANDARD TABLE OF ZDM_MAP,
LW_MAP TYPE ZDM_MAP,
LV_TAB TYPE CHAR20,
LV_FLD TYPE CHAR20,
LV_TABFLD TYPE ZDM_TRANS-TABFLD.
LOOP AT T_MAPPING INTO W_MAPPING.
MOVE-CORRESPONDING W_MAPPING TO LW_MAP.
APPEND LW_MAP TO LT_MAP.
CLEAR LW_MAP.
ENDLOOP.
PERFORM TABLE_FIELDS(ZDM_GLOBAL_ROUTINE) TABLES LT_MAP T_TRANS T_TAB T_MAPPING
USING LV_TAB LV_FLD.
LOOP AT LT_MAP INTO LW_MAP.
MOVE-CORRESPONDING LW_MAP TO T_TABLE.
*preparing fieldcatalog for the output table
PERFORM FIELDCAT_INTABLE(ZDM_GLOBAL_ROUTINE) TABLES T_TRANS T_MAPPING T_HEA
D1
T_HEAD2 T_HEAD3 IT_FIEL
DCAT
USING LW_MAP LV_TABFLD
V_LENGTH.

AT END OF SEQUENCE.
APPEND T_TABLE.
GV_TAB = T_TABLE-TAB.
GV_CATG = T_TABLE-CATG.
GV_SEQUENCE = LW_MAP-SEQUENCE.
READ TABLE T_TAB INTO W_TAB WITH KEY CATG = GV_CATG
TAB = GV_TAB
SEQUENCE = LW_MAP-SEQUENCE

SPRAS = SY-LANGU.
**Create dynamic table
PERFORM CREATE_DYNAMIC_TABLE(ZDM_GLOBAL_ROUTINE) USING IT_FIELDCAT
CHANGING DYN_TABLE.
ASSIGN DYN_TABLE->* TO <FS_TABLE>.
* Create dynamic work area and assign to Field Symbol
CREATE DATA DYN_LINE LIKE LINE OF <FS_TABLE>.
ASSIGN DYN_LINE->* TO <FS_WA>.
**Populate data into internal table
PERFORM DATA_POPULATE.
ENDAT.
ENDLOOP.
IF GV_EXCEL EQ 'X'.
* Save the Excel file
PERFORM SAVE_EXCEL(ZDM_GLOBAL_ROUTINE) USING W_EXCEL W_WORKBOOK P_FILE.
FREE OBJECT: W_WORKSHEET, W_EXCEL.
ENDIF.
ENDFORM.
" DATA_PROCESS
*&---------------------------------------------------------------------*
*&
Form DATA_POPULATE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM DATA_POPULATE .
REFRESH <FS_TABLE>.
*General Data
IF GV_CATG EQ C_G AND GV_TAB EQ C_1.
LOOP AT T_EKKO INTO W_EKKO.
MOVE-CORRESPONDING W_EKKO TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Vendor Address
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_2.
LOOP AT T_EKAN INTO W_EKAN.
MOVE-CORRESPONDING W_EKAN TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Foreign Trade(Header)
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_3.
LOOP AT T_EIKP INTO W_EIKP.
MOVE-CORRESPONDING W_EIKP TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Foreign Trade(Header)

ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_5.


LOOP AT T_EKPO INTO W_EKPO.
MOVE-CORRESPONDING W_EKPO TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Delivery address
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_6.
LOOP AT T_ADRC INTO W_ADRC.
MOVE-CORRESPONDING W_ADRC TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Shedule lines
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_7.
LOOP AT T_EKET INTO W_EKET.
MOVE-CORRESPONDING W_EKET TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Account Assignments
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_8.
LOOP AT T_EKKN INTO W_EKKN.
MOVE-CORRESPONDING W_EKKN TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Conditions(Header)
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_10.
LOOP AT T_KONH INTO W_KONH.
MOVE-CORRESPONDING W_KONH TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Conditions(Item)
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_11.
LOOP AT T_KONP INTO W_KONP.
MOVE-CORRESPONDING W_KONP TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Service Limits(Header)
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_12.
LOOP AT T_ESUH INTO W_ESUH.
MOVE-CORRESPONDING W_ESUH TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Service Limits(Item)
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_13.
LOOP AT T_ESUC INTO W_ESUC.
MOVE-CORRESPONDING W_ESUC TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.

*Lines of Service Package


ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_14.
LOOP AT T_ESLL INTO W_ESLL.
MOVE-CORRESPONDING W_ESLL TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Service Line(Acc Assignment)
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_15.
LOOP AT T_ESKL INTO W_ESKL.
MOVE-CORRESPONDING W_ESKL TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Foreign Trade(Item)
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_17.
LOOP AT T_EIPO INTO W_EIPO.
MOVE-CORRESPONDING W_EIPO TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*Partner Roles in Purchasing
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_19.
LOOP AT T_EKPA INTO W_EKPA.
MOVE-CORRESPONDING W_EKPA TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
*

Shipping Data(Item)
ELSEIF GV_CATG EQ C_G AND GV_TAB EQ C_21.
LOOP AT T_EKPV INTO W_EKPV.
MOVE-CORRESPONDING W_EKPV TO <FS_WA>.
APPEND <FS_WA> TO <FS_TABLE>.
CLEAR <FS_WA>.
ENDLOOP.
ENDIF.
**Header1
CLEAR: WA_TAB, W_HEAD.
LOOP AT T_HEAD1 INTO W_HEAD.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE W_HEAD TO <FS>.
IF WA_TAB IS INITIAL.
WA_TAB = <FS>.
ELSE.
CONCATENATE WA_TAB <FS> INTO WA_TAB SEPARATED BY CON_TAB.
ENDIF.
ENDLOOP.
APPEND WA_TAB TO T_EDATA.
**Header2
CLEAR: WA_TAB, W_HEAD.
LOOP AT T_HEAD2 INTO W_HEAD.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE W_HEAD TO <FS>.
IF WA_TAB IS INITIAL.
WA_TAB = <FS>.
ELSE.

CONCATENATE WA_TAB <FS> INTO WA_TAB SEPARATED BY CON_TAB.


ENDIF.
ENDLOOP.
APPEND WA_TAB TO T_EDATA.
**Header3
CLEAR: WA_TAB, W_HEAD.
LOOP AT T_HEAD3 INTO W_HEAD.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE W_HEAD TO <FS>.
IF WA_TAB IS INITIAL.
WA_TAB = <FS>.
ELSE.
CONCATENATE WA_TAB <FS> INTO WA_TAB SEPARATED BY CON_TAB.
ENDIF.
ENDLOOP.
APPEND WA_TAB TO T_EDATA.
**Data
DATA: LV_CHAR TYPE CHAR120.
CLEAR: WA_TAB, W_HEAD.
LOOP AT <FS_TABLE> INTO <FS_WA>.
DO.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE <FS_WA> TO <FS>.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
LV_CHAR = <FS>.
IF WA_TAB IS INITIAL.
WA_TAB = LV_CHAR.
ELSE.
CONCATENATE WA_TAB LV_CHAR INTO WA_TAB SEPARATED BY CON_TAB.
ENDIF.
ENDDO.
APPEND WA_TAB TO T_EDATA.
CLEAR WA_TAB.
ENDLOOP.
IF GV_EXCEL IS INITIAL.
DATA:V_NSHEET TYPE I.
DESCRIBE TABLE T_TAB LINES V_NSHEET.
**Open excel sheet to populate data
PERFORM OPEN_EXCEL(ZDM_GLOBAL_ROUTINE) USING V_NSHEET W_WORKBOOK W_EXCEL.
GV_EXCEL = 'X'.
ENDIF.
V_SHEETNO = V_SHEETNO + 1.
PERFORM DOWNLOAD_SHEET(ZDM_GLOBAL_ROUTINE) TABLES T_EDATA T_HEAD1
USING W_EXCEL W_WORKSHEET W_RANGE W
_COLUMNS W_INT W_RC V_SHEETNO W_TAB-ZDESC.
GET PROPERTY OF W_EXCEL 'ActiveSheet' = W_WORKSHEET.
REFRESH: T_TABLE, IT_FIELDCAT, T_HEAD1, T_HEAD2, T_HEAD3, T_EDATA.
ENDFORM.
" DATA_POPULATE
*&---------------------------------------------------------------------*
*&
Form DISPLAY_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text

*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
LOOP AT T_EKKO INTO W_EKKO.
MOVE-CORRESPONDING W_EKKO TO W_OUTPUT.
READ TABLE T_LFA1 INTO W_LFA1 WITH KEY LIFNR = W_EKKO-LIFNR.
IF SY-SUBRC EQ 0.
MOVE W_LFA1-NAME1 TO W_OUTPUT-NAME1.
ENDIF.
READ TABLE T_T001 INTO W_T001 WITH KEY BUKRS = W_EKKO-BUKRS.
IF SY-SUBRC EQ 0.
MOVE W_T001-BUTXT TO W_OUTPUT-BUTXT.
ENDIF.
READ TABLE T_KNUMV INTO W_KNUMV WITH KEY KNUMV = W_EKKO-KNUMV.
IF SY-SUBRC EQ 0.
MOVE W_KNUMV-KWERT TO W_OUTPUT-KWERT.
ENDIF.
APPEND W_OUTPUT TO T_OUTPUT.
CLEAR W_OUTPUT.
CLEAR W_EKKO.
CLEAR W_T001.
CLEAR W_LFA1.
CLEAR W_KONV .
ENDLOOP.
* preparing the field catalog
PERFORM BUILD_FIELDCATLOG.
PERFORM GRID_DISPLAY.
ENDFORM.
" DISPLAY_DATA
*&---------------------------------------------------------------------*
*&
Form BUILD_FIELDCATLOG
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCATLOG.
W_FIELDCAT-TABNAME =
W_FIELDCAT-FIELDNAME
W_FIELDCAT-SELTEXT_M
APPEND W_FIELDCAT TO
CLEAR W_FIELDCAT.

'T_OUTPUT'.
= 'EBELN'.
= TEXT-002.
T_FIELDCAT.

W_FIELDCAT-TABNAME =
W_FIELDCAT-FIELDNAME
W_FIELDCAT-SELTEXT_M
APPEND W_FIELDCAT TO
CLEAR W_FIELDCAT.

'T_OUTPUT'.
= 'LIFNR'.
= TEXT-003.
T_FIELDCAT.

W_FIELDCAT-TABNAME =
W_FIELDCAT-FIELDNAME
W_FIELDCAT-SELTEXT_M
APPEND W_FIELDCAT TO
CLEAR W_FIELDCAT.

'T_OUTPUT'.
= 'NAME1'.
= TEXT-004.
T_FIELDCAT.

W_FIELDCAT-TABNAME =
W_FIELDCAT-FIELDNAME
W_FIELDCAT-SELTEXT_M
APPEND W_FIELDCAT TO

'T_OUTPUT'.
= 'BUKRS'.
= TEXT-005.
T_FIELDCAT.

CLEAR W_FIELDCAT.
W_FIELDCAT-TABNAME =
W_FIELDCAT-FIELDNAME
* W_FIELDCAT-NO_OUT
W_FIELDCAT-SELTEXT_M
APPEND W_FIELDCAT TO
CLEAR W_FIELDCAT.

'T_OUTPUT'.
= 'BUTXT'.
= 'X'.
= TEXT-006.
T_FIELDCAT.

W_FIELDCAT-TABNAME =
W_FIELDCAT-FIELDNAME
W_FIELDCAT-SELTEXT_M
APPEND W_FIELDCAT TO
CLEAR W_FIELDCAT.

'T_OUTPUT'.
= 'EKORG'.
= TEXT-007.
T_FIELDCAT.

W_FIELDCAT-TABNAME =
W_FIELDCAT-FIELDNAME
W_FIELDCAT-SELTEXT_M
APPEND W_FIELDCAT TO
CLEAR W_FIELDCAT.

'T_OUTPUT'.
= 'EKGRP'.
= TEXT-008.
T_FIELDCAT.

W_FIELDCAT-TABNAME =
W_FIELDCAT-FIELDNAME
W_FIELDCAT-SELTEXT_M
APPEND W_FIELDCAT TO
CLEAR W_FIELDCAT.

'T_OUTPUT'.
= 'WAERS'.
= TEXT-009.
T_FIELDCAT.

W_FIELDCAT-TABNAME =
W_FIELDCAT-FIELDNAME
W_FIELDCAT-SELTEXT_M
APPEND W_FIELDCAT TO
CLEAR W_FIELDCAT.

'T_OUTPUT'.
= 'KWERT'.
= TEXT-010.
T_FIELDCAT.

ENDFORM.

"BUILD_FIELDCATLOG

*&---------------------------------------------------------------------*
*&
Form GRID_DISPLAY
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM GRID_DISPLAY .
*displyaing the output table in grid
IF T_OUTPUT IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM
= SY-REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT
= T_FIELDCAT
TABLES
T_OUTTAB
= T_OUTPUT
EXCEPTIONS
PROGRAM_ERROR
= 1
OTHERS
= 2.
ENDIF.
ENDFORM.
" GRID_DISPLAY
*&---------------------------------------------------------------------*
*&
Form USER_COMMAND
*&---------------------------------------------------------------------*

*
text
*----------------------------------------------------------------------*
*
-->R_UCOMM
text
*
-->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
IF RS_SELFIELD-FIELDNAME EQ 'EBELN'.
SET PARAMETER ID 'BES' FIELD RS_SELFIELD-VALUE.
CALL TRANSACTION 'ME23N' .
ENDIF.
ENDCASE.
ENDFORM.

"USER_COMMAND

Das könnte Ihnen auch gefallen