You are on page 1of 9

*&---------------------------------------------------------------------*

*& Report ZTEST11


*&
*&---------------------------------------------------------------------*
*&
*&
*&
*&---------------------------------------------------------------------*

REPORT ZTEST11.

*&---------------------------------------------------------------------*
*& TYPE-POOLS
*&---------------------------------------------------------------------*
TYPE-POOLS SLIS.

*&---------------------------------------------------------------------*
*& Internal Tables
*&---------------------------------------------------------------------*
* Internal table for Purchasing Info Record: General Data.
DATA: BEGIN OF IT_EINA OCCURS 0,
INFNR LIKE EINA-INFNR, " Number of Purchasing Info Record
MATNR LIKE EINA-MATNR, " Material Number
MATKL LIKE EINA-MATKL, " Material Group
LIFNR LIKE EINA-LIFNR, " Vendor Account Number
LOEKZ LIKE EINA-LOEKZ, " Deletion flag
ERDAT LIKE EINA-ERDAT, " Date on Which Record Was Created
MEINS LIKE EINA-MEINS, " Purchase Order Unit of Measure
UMREZ LIKE EINA-UMREZ, " Num.for Con.of Ord. UOM to Base UOM
UMREN LIKE EINA-UMREN, " Denom.for Con.of Ord. UOM to Base UOM
IDNLF LIKE EINA-IDNLF, "Material Number Used by Vendor
LMEIN LIKE EINA-LMEIN, " Base Unit of Measure
END OF IT_EINA.

* Internal table for Purchasing Info Record: Purchasing Org. Data.


DATA: BEGIN OF IT_EINE OCCURS 0,
INFNR LIKE EINE-INFNR, " Number of Purchasing Info Record
EKORG LIKE EINE-EKORG, " Purchasing Organization
ESOKZ LIKE EINE-ESOKZ, " Purchasing info record category
WERKS LIKE EINE-WERKS, " Plant
ERDAT LIKE EINE-ERDAT, " Date on Which Record Was Created
NORBM LIKE EINE-NORBM, " Standard Purchase Order Quantity
APLFZ LIKE EINE-APLFZ, " Planned Delivery Time in Days
NETPR LIKE EINE-NETPR, " Net Price in Purchasing Info Record
PRDAT LIKE EINE-PRDAT, " Price Valid Until
END OF IT_EINE.

* Internal table for Material Descriptions.


DATA: BEGIN OF IT_MAKT OCCURS 0,
MATNR LIKE MAKT-MATNR, " Material Number
MAKTX LIKE MAKT-MAKTX, " Material Description
END OF IT_MAKT.

* Internal table for Vendor Master (General Section).


DATA: BEGIN OF IT_LFA1 OCCURS 0,
LIFNR LIKE LFA1-LIFNR, " Vendor Account Number
NAME1 LIKE LFA1-NAME1, " Name
REGIO LIKE LFA1-REGIO, " State Code
END OF IT_LFA1.

* Internal table for Plant Data for Material.


DATA: BEGIN OF IT_MARC OCCURS 0,
MATNR LIKE MARC-MATNR, " Material Number
STEUC LIKE MARC-STEUC, " HSN Code
END OF IT_MARC.

* Internal table for Conditions (Item).


DATA: BEGIN OF IT_KONP OCCURS 0,
KNUMH LIKE KONP-KNUMH, " Condition record number
KSCHL LIKE KONP-KSCHL, " Condition type
KBETR LIKE KONP-KBETR, " Rate
END OF IT_KONP.

* Internal table for Material Info Record (Plant-Specific).


DATA: BEGIN OF IT_A017 OCCURS 0,
KSCHL LIKE A017-KSCHL, " Condition type
LIFNR LIKE A017-LIFNR, " Vendor Account Number
MATNR LIKE A017-MATNR, " Material Number
EKORG LIKE A017-EKORG, " Purchasing Organization
WERKS LIKE A017-WERKS, " Plant
DATBI LIKE A017-DATBI, " Valid to
DATAB LIKE A017-DATAB, " Valid from
KNUMH LIKE A017-KNUMH, " Condition record number
END OF IT_A017.

* Internal table for Output.


DATA: BEGIN OF IT_OUTPUT OCCURS 0,
MATNR LIKE EINA-MATNR, " Material Number
MAKTX LIKE MAKT-MAKTX, " Material Description
LIFNR LIKE EINA-LIFNR, " Vendor Account Number
L_NAME1 LIKE LFA1-NAME1, " Vendor Name
REGIO LIKE LFA1-REGIO, " Vendor Region
IDNLF LIKE EINA-IDNLF, " Vendor part number
INFNR LIKE EINA-INFNR, " Number of Purchasing Info Record
LOEKZ LIKE EINA-LOEKZ, " Deletion indicator flag
PB00 LIKE KONP-KBETR, " PB00 Condition value
RA00 LIKE KONP-KBETR, " RA00 Condition value
ZP_F LIKE KONP-KBETR, " ZP_F Condition value
DATAB LIKE A017-DATAB, " Valid from date
DATBI LIKE A017-DATBI, " Valid to date
STEUC LIKE MARC-STEUC, " HSN Code
ERDAT LIKE EINA-ERDAT, " Created On
SELKZ TYPE SELKZ,
END OF IT_OUTPUT.

*&---------------------------------------------------------------------*
*& Workareas
*&---------------------------------------------------------------------*
* Workarea for Purchasing Info Record: General Data.
DATA WA_EINA LIKE IT_EINA.

* Workarea for Purchasing Info Record: Purchasing Org. Data.


DATA WA_EINE LIKE IT_EINE.

* Workarea for Material Descriptions.


DATA WA_MAKT LIKE IT_MAKT.

* Workarea for Vendor Master (General Section).


DATA WA_LFA1 LIKE IT_LFA1.

* Workarea for Plant Data for Material


DATA WA_MARC LIKE IT_MARC.
* Workarea for Conditions (Item).
DATA WA_KONP LIKE IT_KONP.

* Workarea for Material Info Record (Plant-Specific).


DATA WA_A017 LIKE IT_A017.

* Workarea for Output.


DATA WA_OUTPUT LIKE IT_OUTPUT.

*&---------------------------------------------------------------------*
*& SELECTION-SCREEN
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-T01.
SELECT-OPTIONS: S_MATNR FOR WA_MAKT-MATNR MEMORY ID MAT OBLIGATORY,
S_LIFNR FOR WA_LFA1-LIFNR MEMORY ID LIF,
S_INFNR FOR WA_EINA-INFNR MEMORY ID INF,
S_WERKS FOR WA_EINE-WERKS MEMORY ID WRK.
SELECTION-SCREEN END OF BLOCK B1.

*&---------------------------------------------------------------------*
*& variables
*&---------------------------------------------------------------------*
DATA: GD_REPID TYPE SY-REPID.

*&---------------------------------------------------------------------*
*& ALV variables
*&---------------------------------------------------------------------*
DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT TYPE SLIS_FIELDCAT_ALV.

DATA WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.

GD_REPID = SY-REPID.

PERFORM GET_DATA.
PERFORM MANIPULATE_DATA.

*&---------------------------------------------------------------------*
*& END-OF-SELECTION
*&---------------------------------------------------------------------*
END-OF-SELECTION.

IF IT_OUTPUT[] IS NOT INITIAL.


PERFORM MANIPULATE_FCAT.
PERFORM MAIPULATE_LAYOUT.
PERFORM DISPLAY_DATA.
ELSE.
MESSAGE I005(HRHAP00_DOC_PA) DISPLAY LIKE 'E'.
* Data Not Found.
ENDIF."IF it_output[] IS NOT INITIAL.

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
FORM GET_DATA.
* Fetch data from Purchasing Info Record: General Data table.
SELECT INFNR
MATNR
MATKL
LIFNR
LOEKZ
ERDAT
MEINS
UMREZ
UMREN
IDNLF
LMEIN
FROM EINA
INTO TABLE IT_EINA
WHERE INFNR IN S_INFNR
AND MATNR IN S_MATNR
AND LIFNR IN S_LIFNR.

IF IT_EINA[] IS NOT INITIAL.

* Fetch data from Purchasing Info Record: Purchasing Org. Data table.
SELECT INFNR
EKORG
ESOKZ
WERKS
ERDAT
NORBM
APLFZ
NETPR
PRDAT
FROM EINE
INTO TABLE IT_EINE
FOR ALL ENTRIES IN IT_EINA
WHERE INFNR EQ IT_EINA-INFNR
AND WERKS IN S_WERKS.

* Fetch data from Material Descriptions table.


SELECT MATNR
MAKTX
FROM MAKT
INTO TABLE IT_MAKT
FOR ALL ENTRIES IN IT_EINA
WHERE MATNR EQ IT_EINA-MATNR
AND SPRAS EQ SY-LANGU.

* Fetch data from Vendor Master (General Section) table.


SELECT LIFNR
NAME1
REGIO
FROM LFA1
INTO TABLE IT_LFA1
FOR ALL ENTRIES IN IT_EINA
WHERE LIFNR EQ IT_EINA-LIFNR.

* Fetch data from Plant Data for Material table.


SELECT MATNR
STEUC
FROM MARC
INTO TABLE IT_MARC
FOR ALL ENTRIES IN IT_EINA
WHERE MATNR EQ IT_EINA-MATNR.

* Fetch data from Material Info Record (Plant-Specific) table.


SELECT KSCHL
LIFNR
MATNR
EKORG
WERKS
DATBI
DATAB
KNUMH
FROM A017
INTO TABLE IT_A017
FOR ALL ENTRIES IN IT_EINA
WHERE LIFNR EQ IT_EINA-LIFNR
AND MATNR EQ IT_EINA-MATNR
AND WERKS IN S_WERKS.

IF IT_A017[] IS NOT INITIAL.

* Fetch data from Conditions (Item) table.


SELECT KNUMH
KSCHL
KBETR
FROM KONP
INTO TABLE IT_KONP
FOR ALL ENTRIES IN IT_A017
WHERE KNUMH EQ IT_A017-KNUMH.

ENDIF."IF it_a017[] IS NOT INITIAL.

ENDIF."IF it_eina[] IS NOT INITIAL.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------*
*& Form MANIPULATE_DATA
*&---------------------------------------------------------------------*
FORM MANIPULATE_DATA .

LOOP AT IT_EINA INTO WA_EINA.

WA_OUTPUT-INFNR = WA_EINA-INFNR.
WA_OUTPUT-MATNR = WA_EINA-MATNR.
WA_OUTPUT-LOEKZ = WA_EINA-LOEKZ.
WA_OUTPUT-ERDAT = WA_EINA-ERDAT.
WA_OUTPUT-IDNLF = WA_EINA-IDNLF.

READ TABLE IT_MAKT INTO WA_MAKT


WITH KEY MATNR = WA_EINA-MATNR.
IF SY-SUBRC EQ 0.
WA_OUTPUT-MAKTX = WA_MAKT-MAKTX.
ENDIF."IF sy-subrc EQ 0, READ TABLE it_makt.

READ TABLE IT_MARC INTO WA_MARC


WITH KEY MATNR = WA_EINA-MATNR.
IF SY-SUBRC EQ 0.
WA_OUTPUT-STEUC = WA_MARC-STEUC.
ENDIF."IF sy-subrc EQ 0, READ TABLE it_makt.

READ TABLE IT_LFA1 INTO WA_LFA1


WITH KEY LIFNR = WA_EINA-LIFNR.
IF SY-SUBRC EQ 0.
WA_OUTPUT-LIFNR = WA_LFA1-LIFNR.
WA_OUTPUT-L_NAME1 = WA_LFA1-NAME1.
WA_OUTPUT-REGIO = WA_LFA1-REGIO.
ENDIF."IF sy-subrc EQ 0, READ TABLE it_lfa1.

READ TABLE IT_EINE INTO WA_EINE


WITH KEY INFNR = WA_EINA-INFNR.
IF SY-SUBRC EQ 0.

LOOP AT IT_A017 INTO WA_A017 WHERE LIFNR = WA_EINA-LIFNR


AND MATNR = WA_EINA-MATNR
AND EKORG = WA_EINE-EKORG
AND WERKS = WA_EINE-WERKS.
* Basic Price
READ TABLE IT_KONP INTO WA_KONP
WITH KEY KNUMH = WA_A017-KNUMH
KSCHL = 'PB00'.
IF SY-SUBRC EQ 0.
WA_OUTPUT-PB00 = WA_KONP-KBETR.
ENDIF."IF sy-subrc EQ 0,READ TABLE it_konp.

* Freight/Quantity
READ TABLE IT_KONP INTO WA_KONP
WITH KEY KNUMH = WA_A017-KNUMH
KSCHL = 'FRB1'.
IF SY-SUBRC EQ 0.
WA_OUTPUT-RA00 = WA_KONP-KBETR.
ENDIF."IF sy-subrc EQ 0,READ TABLE it_konp.

* Basic custom duty


READ TABLE IT_KONP INTO WA_KONP
WITH KEY KNUMH = WA_A017-KNUMH
KSCHL = 'JCDB'.
IF SY-SUBRC EQ 0.
WA_OUTPUT-ZP_F = WA_KONP-KBETR.
ENDIF."IF sy-subrc EQ 0,READ TABLE it_konp.

WA_OUTPUT-DATBI = WA_A017-DATBI.
WA_OUTPUT-DATAB = WA_A017-DATAB.

CLEAR: WA_A017,
WA_KONP.

ENDLOOP. " LOOP AT it_a017 INTO wa_a017

ENDIF."IF sy-subrc EQ 0, READ TABLE it_eine.

APPEND WA_OUTPUT TO IT_OUTPUT.


CLEAR: WA_OUTPUT,
WA_EINA,
WA_MAKT,
WA_MARC,
WA_LFA1,
WA_A017.

ENDLOOP."LOOP AT it_eina INTO wa_eina.

ENDFORM. " MANIPULATE_DATA


*&---------------------------------------------------------------------*
*& Form MANIPULATE_FCAT
*&---------------------------------------------------------------------*
FORM MANIPULATE_FCAT .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'


EXPORTING
I_PROGRAM_NAME = GD_REPID
I_INTERNAL_TABNAME = 'IT_OUTPUT'
I_INCLNAME = GD_REPID
I_BYPASSING_BUFFER = 'X'
I_BUFFER_ACTIVE = 'X'

CHANGING
CT_FIELDCAT = IT_FCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 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.
ELSE.

LOOP AT IT_FCAT INTO WA_FCAT.

CASE WA_FCAT-FIELDNAME.
when 'MATNR'.
WA_FCAT-HOTSPOT = 'X'.
WHEN 'SELKZ'.
WA_FCAT-NO_OUT = 'X'.
WA_FCAT-TECH = 'X'.

WHEN 'PB00'.
WA_FCAT-SELTEXT_L = TEXT-T02. " PB00
WA_FCAT-SELTEXT_M = TEXT-T02. " PB00
WA_FCAT-SELTEXT_S = TEXT-T02. " PB00
WA_FCAT-DDICTXT = 'L'.

WHEN 'RA00'.
WA_FCAT-SELTEXT_L = TEXT-T03. " RA00
WA_FCAT-SELTEXT_M = TEXT-T03. " RA00
WA_FCAT-SELTEXT_S = TEXT-T03. " RA00
WA_FCAT-DDICTXT = 'L'.

WHEN 'ZP_F'.
WA_FCAT-SELTEXT_L = TEXT-T04. " ZP&F%
WA_FCAT-SELTEXT_M = TEXT-T04. " ZP&F%
WA_FCAT-SELTEXT_S = TEXT-T04. " ZP&F%
WA_FCAT-DDICTXT = 'L'.

WHEN 'IDNLF'.
WA_FCAT-SELTEXT_L = TEXT-T05. " IDNLF
WA_FCAT-SELTEXT_M = TEXT-T05. " IDNLF
WA_FCAT-SELTEXT_S = TEXT-T05. " IDNLF
WA_FCAT-DDICTXT = 'L'.

ENDCASE."CASE wa_fcat-fieldname.

MODIFY IT_FCAT FROM WA_FCAT.


CLEAR: WA_FCAT.
ENDLOOP."LOOP AT it_fcat INTO wa_fcat.

ENDIF."IF sy-subrc <> 0.

ENDFORM. " MANIPULATE_FCAT


*&---------------------------------------------------------------------*
*& Form MAIPULATE_LAYOUT
*&---------------------------------------------------------------------*
FORM MAIPULATE_LAYOUT .
WA_LAYOUT-BOX_FIELDNAME = 'SELKZ'.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WA_LAYOUT-ZEBRA = 'X'.
ENDFORM. " MAIPULATE_LAYOUT

*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM DISPLAY_DATA .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
I_CALLBACK_PROGRAM = GD_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FCAT
TABLES
T_OUTTAB = IT_OUTPUT
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."IF sy-subrc <> 0.
ENDFORM. " DISPLAY_DATA

*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
FORM USER_COMMAND USING P_UCOMM TYPE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD.

CASE P_UCOMM.

WHEN '&IC1'.

IF P_SELFIELD-VALUE IS NOT INITIAL.

CASE P_SELFIELD-FIELDNAME.

WHEN 'MATNR'.
SET PARAMETER ID 'MAT' FIELD P_SELFIELD-VALUE.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

WHEN 'LIFNR'.
SET PARAMETER ID 'LIF' FIELD P_SELFIELD-VALUE.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.

WHEN 'INFNR'.
SET PARAMETER ID 'INF' FIELD P_SELFIELD-VALUE.
CALL TRANSACTION 'ME13' AND SKIP FIRST SCREEN.

ENDCASE. " CASE p_selfield-fieldname.

ENDIF. " if p_selfield-value is NOT INITIAL.

ENDCASE. " CASE p_ucomm.

ENDFORM. "user_command

You might also like