Beruflich Dokumente
Kultur Dokumente
************************************************************************
*
************************************************************************
* 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.
OF TY_KNUMV,
TYPE KNUMV,
TYPE KWERT,
TY_KNUMV.
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.
"column index
"row index
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 .
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)
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.
*----------------------------------------------------------------------*
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