REPORT ZOOPS_ALV_REPORT.
TYPES : BEGIN OF TY_EKKO,
EBELN TYPE EBELN,
BUKRS TYPE BUKRS,
BSART TYPE ESART,
LIFNR TYPE ELIFN,
BEDAT TYPE EBDAT,
END OF TY_EKKO,
BEGIN OF TY_EKPO,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
TXZ01 TYPE TXZ01,
MATNR TYPE MATNR,
MENGE TYPE BSTMG,
MEINS TYPE BSTME,
NETPR TYPE BPREI,
END OF TY_EKPO,
BEGIN OF TY_FINAL,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
BSART TYPE ESART,
LIFNR TYPE ELIFN,
BEDAT TYPE EBDAT,
TXZ01 TYPE TXZ01,
MATNR TYPE MATNR,
MENGE TYPE BSTMG,
MEINS TYPE BSTME,
NETPR TYPE BPREI,
END OF TY_FINAL.
***************Internal Table and Workarea Declaration***********
DATA : IT_EKKO TYPE STANDARD TABLE OF TY_EKKO INITIAL SIZE 1,
IT_EKPO TYPE STANDARD TABLE OF TY_EKPO INITIAL SIZE 1,
IT_FINAL TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_EKKO TYPE TY_EKKO,
WA_EKPO TYPE TY_EKPO,
WA_FCAT TYPE SLIS_FIELDCAT_ALV,
WA_FINAL TYPE TY_FINAL,
IS_LAYOUT TYPE SLIS_LAYOUT_ALV.
************Constant Declaration**************
DATA : SE_EBELN TYPE EBELN,
P_COL TYPE INT4.
************FieldSymbol
FIELD-SYMBOLS : <FS_W_EKKO> TYPE ANY,
<FS_T_EKKO> TYPE STANDARD TABLE,
<FS_W_EKPO> TYPE TY_EKPO,
<FS_T_EKPO> TYPE STANDARD TABLE,
<W_FINAL> TYPE ANY.
ASSIGN IT_EKKO TO <FS_T_EKKO>.
ASSIGN IT_EKPO TO <FS_T_EKPO>.
***************Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_EBELN FOR SE_EBELN.
SELECTION-SCREEN END OF BLOCK A.
CLASS ZDATA DEFINITION.
PUBLIC SECTION.
METHODS GET_DATA.
METHODS GET_POP_FINAL.
METHODS GET_FILL_FIELDCAT.
ENDCLASS.
CLASS ZDATA IMPLEMENTATION.
METHOD GET_DATA.
SELECT EBELN
BUKRS
BSART
LIFNR
BEDAT
FROM EKKO INTO TABLE <FS_T_EKKO> WHERE EBELN IN S_EBELN.
IF IT_EKKO IS NOT INITIAL.
SELECT EBELN
EBELP
TXZ01
MATNR
MENGE
MEINS
NETPR
FROM EKPO INTO TABLE <FS_T_EKPO> FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
ENDIF.
ENDMETHOD.
METHOD GET_POP_FINAL.
LOOP AT <FS_T_EKPO> ASSIGNING <FS_W_EKPO>.
ASSIGN COMPONENT 'EBELN' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-EBELN = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'EBELP' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-EBELP = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
READ TABLE <FS_T_EKKO> ASSIGNING <FS_W_EKKO> WITH KEY ('EBELN') = <FS_W_EKPO>-EBELN.
IF SY-SUBRC = 0.
ASSIGN COMPONENT 'BSART' OF STRUCTURE <FS_W_EKKO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-BSART = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'LIFNR' OF STRUCTURE <FS_W_EKKO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-LIFNR = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'BEDAT' OF STRUCTURE <FS_W_EKKO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-BEDAT = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ENDIF.
ASSIGN COMPONENT 'MENGE' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-MENGE = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'MEINS' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-MEINS = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'NETPR' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-NETPR = <W_FINAL>.
ENDIF.
APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDLOOP.
ENDMETHOD.
METHOD GET_FILL_FIELDCAT.
PERFORM GET_FILL_FCAT USING : P_COL 'EBELN' 'Purchase Doc.No' 10,
P_COL 'EBELP' 'Purchase Item' 10,
P_COL 'BSART' 'Doc. Type' 4,
P_COL 'LIFNR' 'Vendor Account Number' 10,
P_COL 'BEDAT' 'Purchasing Document Date' 8,
P_COL 'MATNR' 'Material Number' 18,
P_COL 'TXZ01' 'Material Description' 40,
P_COL 'MENGE' 'Quantity' 13,
P_COL 'MEINS' 'Unit of Measure' 3,
P_COL 'NETPR' 'Net Price' 11.
PERFORM DISPLAY_DATA.
ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& Form GET_FILL_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_FILL_FCAT USING : P_COL
P_FIELD TYPE CHAR20
P_DES TYPE CHAR40
P_LEN TYPE INT4.
P_COL = P_COL + 1.
WA_FCAT-COL_POS = P_COL.
WA_FCAT-FIELDNAME = P_FIELD.
WA_FCAT-SELTEXT_L = P_DES.
APPEND WA_FCAT TO IT_FCAT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
IS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
IS_LAYOUT-ZEBRA = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FCAT
* IT_EXCLUDING = IT_EXCLUDING
* IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
* IT_SORT = IT_SORT
* IT_FILTER = IT_FILTER
* IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = 'X'
TABLES
T_OUTTAB = IT_FINAL
EXCEPTIONS
PROGRAM_ERROR = 1.
ENDFORM.
START-OF-SELECTION.
DATA V_REF TYPE REF TO ZDATA.
CREATE OBJECT V_REF.
V_REF->GET_DATA( ).
END-OF-SELECTION.
V_REF->GET_POP_FINAL( ).
V_REF->GET_FILL_FIELDCAT( ).
TYPES : BEGIN OF TY_EKKO,
EBELN TYPE EBELN,
BUKRS TYPE BUKRS,
BSART TYPE ESART,
LIFNR TYPE ELIFN,
BEDAT TYPE EBDAT,
END OF TY_EKKO,
BEGIN OF TY_EKPO,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
TXZ01 TYPE TXZ01,
MATNR TYPE MATNR,
MENGE TYPE BSTMG,
MEINS TYPE BSTME,
NETPR TYPE BPREI,
END OF TY_EKPO,
BEGIN OF TY_FINAL,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
BSART TYPE ESART,
LIFNR TYPE ELIFN,
BEDAT TYPE EBDAT,
TXZ01 TYPE TXZ01,
MATNR TYPE MATNR,
MENGE TYPE BSTMG,
MEINS TYPE BSTME,
NETPR TYPE BPREI,
END OF TY_FINAL.
***************Internal Table and Workarea Declaration***********
DATA : IT_EKKO TYPE STANDARD TABLE OF TY_EKKO INITIAL SIZE 1,
IT_EKPO TYPE STANDARD TABLE OF TY_EKPO INITIAL SIZE 1,
IT_FINAL TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_EKKO TYPE TY_EKKO,
WA_EKPO TYPE TY_EKPO,
WA_FCAT TYPE SLIS_FIELDCAT_ALV,
WA_FINAL TYPE TY_FINAL,
IS_LAYOUT TYPE SLIS_LAYOUT_ALV.
************Constant Declaration**************
DATA : SE_EBELN TYPE EBELN,
P_COL TYPE INT4.
************FieldSymbol
FIELD-SYMBOLS : <FS_W_EKKO> TYPE ANY,
<FS_T_EKKO> TYPE STANDARD TABLE,
<FS_W_EKPO> TYPE TY_EKPO,
<FS_T_EKPO> TYPE STANDARD TABLE,
<W_FINAL> TYPE ANY.
ASSIGN IT_EKKO TO <FS_T_EKKO>.
ASSIGN IT_EKPO TO <FS_T_EKPO>.
***************Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_EBELN FOR SE_EBELN.
SELECTION-SCREEN END OF BLOCK A.
CLASS ZDATA DEFINITION.
PUBLIC SECTION.
METHODS GET_DATA.
METHODS GET_POP_FINAL.
METHODS GET_FILL_FIELDCAT.
ENDCLASS.
CLASS ZDATA IMPLEMENTATION.
METHOD GET_DATA.
SELECT EBELN
BUKRS
BSART
LIFNR
BEDAT
FROM EKKO INTO TABLE <FS_T_EKKO> WHERE EBELN IN S_EBELN.
IF IT_EKKO IS NOT INITIAL.
SELECT EBELN
EBELP
TXZ01
MATNR
MENGE
MEINS
NETPR
FROM EKPO INTO TABLE <FS_T_EKPO> FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
ENDIF.
ENDMETHOD.
METHOD GET_POP_FINAL.
LOOP AT <FS_T_EKPO> ASSIGNING <FS_W_EKPO>.
ASSIGN COMPONENT 'EBELN' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-EBELN = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'EBELP' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-EBELP = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
READ TABLE <FS_T_EKKO> ASSIGNING <FS_W_EKKO> WITH KEY ('EBELN') = <FS_W_EKPO>-EBELN.
IF SY-SUBRC = 0.
ASSIGN COMPONENT 'BSART' OF STRUCTURE <FS_W_EKKO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-BSART = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'LIFNR' OF STRUCTURE <FS_W_EKKO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-LIFNR = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'BEDAT' OF STRUCTURE <FS_W_EKKO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-BEDAT = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ENDIF.
ASSIGN COMPONENT 'MENGE' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-MENGE = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'MEINS' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-MEINS = <W_FINAL>.
ENDIF.
UNASSIGN <W_FINAL>.
ASSIGN COMPONENT 'NETPR' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
IF <W_FINAL> IS ASSIGNED.
WA_FINAL-NETPR = <W_FINAL>.
ENDIF.
APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDLOOP.
ENDMETHOD.
METHOD GET_FILL_FIELDCAT.
PERFORM GET_FILL_FCAT USING : P_COL 'EBELN' 'Purchase Doc.No' 10,
P_COL 'EBELP' 'Purchase Item' 10,
P_COL 'BSART' 'Doc. Type' 4,
P_COL 'LIFNR' 'Vendor Account Number' 10,
P_COL 'BEDAT' 'Purchasing Document Date' 8,
P_COL 'MATNR' 'Material Number' 18,
P_COL 'TXZ01' 'Material Description' 40,
P_COL 'MENGE' 'Quantity' 13,
P_COL 'MEINS' 'Unit of Measure' 3,
P_COL 'NETPR' 'Net Price' 11.
PERFORM DISPLAY_DATA.
ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& Form GET_FILL_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_FILL_FCAT USING : P_COL
P_FIELD TYPE CHAR20
P_DES TYPE CHAR40
P_LEN TYPE INT4.
P_COL = P_COL + 1.
WA_FCAT-COL_POS = P_COL.
WA_FCAT-FIELDNAME = P_FIELD.
WA_FCAT-SELTEXT_L = P_DES.
APPEND WA_FCAT TO IT_FCAT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
IS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
IS_LAYOUT-ZEBRA = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FCAT
* IT_EXCLUDING = IT_EXCLUDING
* IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
* IT_SORT = IT_SORT
* IT_FILTER = IT_FILTER
* IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = 'X'
TABLES
T_OUTTAB = IT_FINAL
EXCEPTIONS
PROGRAM_ERROR = 1.
ENDFORM.
START-OF-SELECTION.
DATA V_REF TYPE REF TO ZDATA.
CREATE OBJECT V_REF.
V_REF->GET_DATA( ).
END-OF-SELECTION.
V_REF->GET_POP_FINAL( ).
V_REF->GET_FILL_FIELDCAT( ).
No comments:
Post a Comment