2013 Oct 26 9:19 AM
Hi All,
Data is not displaying in my ALV Report Program.
Please find the requirement below.
Input:
Company code | ||
Posting date | From | To |
Vendor | From | To |
Article | From | To |
Plant |
Tables Used:
ekko, ekbe, konp, konv
Condition Table:
a918->zmar
a142->zstd
Output Format:
| Purchase order | Purchase order item no | Article | Article description | ZMAR and ZSTD margins in SAP | ZMAR with Key combination of Customer/Article in SAP | GRN No | ZMAR/ZSTD of PO post GRN | Status |
Please see the below source code of my ALV Report Program.
*&---------------------------------------------------------------------*
*& Report ZMM_GRNMARGIN_REPORT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zmm_grnmargin_report.
TYPE-POOLS : slis.
TABLES : ekko,ekbe.
TYPES : BEGIN OF ty_ekko,
ebeln TYPE ebeln,
bukrs TYPE bukrs,
lifnr TYPE elifn,
END OF ty_ekko,
BEGIN OF ty_ekbe,
ebeln TYPE ebeln,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_d,
belnr TYPE mblnr,
END OF ty_ekbe,
BEGIN OF ty_konp,
KBETR TYPE KBETR_KOND,
END OF ty_konp,
BEGIN OF ty_konv,
zmar_kbetr TYPE kbetr,
zm_kbetr TYPE kbetr,
zmm_kbetr TYPE kbetr,
zstd_kbetr TYPE kbetr,
END OF ty_konv,
BEGIN OF ty_final,
bukrs TYPE bukrs,
lifnr TYPE elifn,
ebeln TYPE ebeln,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_d,
zstd(13) TYPE c,
zmar(13) TYPE c,
ebelp TYPE ebelp,
KBETR TYPE KBETR_KOND,
knumh TYPE knumh,
kdgrp TYPE kdgrp,
zmar_kbetr TYPE kbetr,
zm_kbetr TYPE kbetr,
belnr TYPE mblnr,
zmm_kbetr TYPE kbetr,
zstd_kbetr TYPE kbetr,
END OF ty_final.
DATA : it_ekko TYPE TABLE OF ty_ekko,
wa_ekko LIKE LINE OF it_ekko,
it_ekbe TYPE TABLE OF ty_ekbe,
wa_ekbe LIKE LINE OF it_ekbe,
it_final TYPE TABLE OF ty_final,
wa_final LIKE LINE OF it_final.
DATA : it_a918 TYPE TABLE OF a918 WITH HEADER LINE,
wa_a918 LIKE LINE OF it_a918,
it_konv TYPE TABLE OF konv WITH HEADER LINE,
wa_konv LIKE LINE OF it_konv,
it_konp TYPE TABLE OF konp WITH HEADER LINE,
wa_konp LIKE LINE OF it_konp,
it_a142 TYPE TABLE OF a142 WITH HEADER LINE,
wa_a142 LIKE LINE OF it_a142.
DATA: it_fieldcat TYPE TABLE OF slis_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat,
wa_layout TYPE slis_layout_alv.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS :p_bukrs TYPE ekko-bukrs OBLIGATORY.
SELECT-OPTIONS :s_budat FOR ekbe-budat,
s_lifnr FOR ekko-lifnr,
s_matnr FOR ekbe-matnr.
PARAMETERS : p_werks TYPE ekbe-werks OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
START-OF-SELECTION.
SELECT ebeln
bukrs
lifnr
FROM ekko INTO TABLE it_ekko
WHERE bukrs = p_bukrs
AND lifnr IN s_lifnr.
IF it_ekko[] IS NOT INITIAL.
SELECT ebeln
budat
matnr
werks
BELNR
FROM ekbe INTO TABLE it_ekbe
WHERE budat IN s_budat
AND matnr IN s_matnr
AND werks EQ p_werks.
ENDIF.
*&-----------------------------------------------------------------------------------------------&*
*& FORM GET ZMAR
*&-----------------------------------------------------------------------------------------------&*
* text
*------------------------------------------------------------------------------------------------&*
* --> p1 text
* <-- p2 text
*------------------------------------------------------------------------------------------------*
IF it_ekbe[] IS NOT INITIAL.
SELECT matnr
knumh
FROM a918 INTO TABLE it_a918
WHERE kappl = 'V'
AND kschl = 'ZMAR'
AND kdgrp = 'FR'
AND matnr IN s_matnr
AND DATAB GE SY-DATUM.
ENDIF.
*&-----------------------------------------------------------------------------------------------&*
*& FORM GET ZSTD
*&-----------------------------------------------------------------------------------------------&*
* text
*------------------------------------------------------------------------------------------------&*
* --> p1 text
* <-- p2 text
*------------------------------------------------------------------------------------------------*
IF it_a918[] IS NOT INITIAL.
SELECT kappl
kschl
matnr
knumh
FROM a142 INTO TABLE it_a142
WHERE kappl = 'M'
AND kschl = 'ZSTD'
AND matnr IN s_matnr
AND DATAB GE SY-DATUM.
ENDIF.
IF sy-subrc = 0.
SELECT
kappl
kschl
Kbetr
FROM konv INTO TABLE it_konv
WHERE kappl = 'M'
AND kschl = 'zmar' OR kschl = 'zstd'.
ENDIF.
PERFORM arrange_data.
PERFORM build_fieldcatalog.
perFORM display_report .
*&-----------------------------------------------------------------------------------------------&*
*& FORM Arrange data
*&-----------------------------------------------------------------------------------------------&*
FORM arrange_data.
LOOP AT it_ekko INTO wa_ekko.
wa_final-bukrs = wa_ekko-bukrs.
wa_final-lifnr = wa_ekko-lifnr.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
IF sy-subrc = 0.
wa_final-budat = wa_ekbe-budat.
wa_final-matnr = wa_ekbe-matnr.
wa_final-werks = wa_ekbe-werks.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a918 INTO wa_a918 WITH KEY matnr = S_matnr KSCHL = 'ZMAR'.
* wa_final-ZMAR = wa_a914-KBETR.
SELECT SINGLE kbetr FROM konp INTO wa_konp WHERE kappl = 'M'
AND ( kschl = 'ZMAR' OR kschl = 'ZSTD' )
AND knumh = wa_a918-knumh.
IF sy-subrc = 0.
wa_final-zmar = wa_konp-kbetr / 10.
ENDIF.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a142 INTO wa_a142 WITH KEY matnr = s_matnr.
wa_final-zstd = wa_konp-kbetr / 10.
ENDIF.
SORT it_ekbe.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
IF sy-subrc = 0.
CLEAR wa_final.
ENDIF.
CLEAR : wa_final,wa_ekko,wa_ekbe,wa_a918,wa_a142,wa_konv,wa_konp.
ENDLOOP.
ENDFORM. "Arrange_data
*&---------------------------------------------------------------------*
*& FORM BUILD FIELDCATALOG
*&---------------------------------------------------------------------*
FORM build_fieldcatalog.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-seltext_m = 'Purchase order'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'EBELP'.
wa_fieldcat-seltext_m = 'Purchase order item no'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'Article description'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZMAR and ZSTD margins in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 5.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZMAR with key combination of customer article in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 6.
wa_fieldcat-fieldname = 'MBLNR'.
wa_fieldcat-seltext_m = 'Goods reciept no'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 7.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZMAR'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 8.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZSTD OF PO POST GRN'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form DISPLAY_REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_report .
wa_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-cprog
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fieldcat
TABLES
t_outtab = it_final
* 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.
ENDFORM.
Please provide me the solution ASAP.
2013 Oct 26 9:36 AM
Hello Mounika-
In your Sub-Routine: arrange_data you are filling your values in to workarea wa_final, but you are not appending it to your final internal table it_final.
FORM arrange_data.
LOOP AT it_ekko INTO wa_ekko.
wa_final-bukrs = wa_ekko-bukrs.
wa_final-lifnr = wa_ekko-lifnr.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
IF sy-subrc = 0.
wa_final-budat = wa_ekbe-budat.
wa_final-matnr = wa_ekbe-matnr.
wa_final-werks = wa_ekbe-werks.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a918 INTO wa_a918 WITH KEY matnr = S_matnr KSCHL = 'ZMAR'.
* wa_final-ZMAR = wa_a914-KBETR.
SELECT SINGLE kbetr FROM konp INTO wa_konp WHERE kappl = 'M'
AND ( kschl = 'ZMAR' OR kschl = 'ZSTD' )
AND knumh = wa_a918-knumh.
IF sy-subrc = 0.
wa_final-zmar = wa_konp-kbetr / 10.
ENDIF.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a142 INTO wa_a142 WITH KEY matnr = s_matnr.
wa_final-zstd = wa_konp-kbetr / 10.
ENDIF.
SORT it_ekbe.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
IF sy-subrc = 0.
CLEAR wa_final.
ENDIF.
CLEAR : wa_final,wa_ekko,wa_ekbe,wa_a918,wa_a142,wa_konv,wa_konp.
ENDLOOP.
ENDFORM.
So as you are passing this it_final internal table which has no data to the ALV FM, you are getting not getting any output.
Use an Append statement at the end like: APPEND wa_final TO it_final and check the output.
Please don't open multiple threads on same topic:
http://scn.sap.com/thread/3444261
-Venkat
2013 Oct 26 9:51 AM
Hi Venkat,
I did as you suggested. Even am not getting output.
FORM arrange_data.
LOOP AT it_ekko INTO wa_ekko.
wa_final-bukrs = wa_ekko-bukrs.
wa_final-lifnr = wa_ekko-lifnr.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
IF sy-subrc = 0.
wa_final-budat = wa_ekbe-budat.
wa_final-matnr = wa_ekbe-matnr.
wa_final-werks = wa_ekbe-werks.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a918 INTO wa_a918 WITH KEY matnr = S_matnr KSCHL = 'ZMAR'.
* wa_final-ZMAR = wa_a914-KBETR.
SELECT SINGLE kbetr FROM konp INTO wa_konp WHERE kappl = 'M'
AND ( kschl = 'ZMAR' OR kschl = 'ZSTD' )
AND knumh = wa_a918-knumh.
IF sy-subrc = 0.
wa_final-zmar = wa_konp-kbetr / 10.
ENDIF.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a142 INTO wa_a142 WITH KEY matnr = s_matnr.
wa_final-zstd = wa_konp-kbetr / 10.
ENDIF.
SORT it_ekbe.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
IF sy-subrc = 0.
APPEND wa_final TO it_final."Build final itab
CLEAR wa_final.
ENDIF.
CLEAR : wa_final,wa_ekko,wa_ekbe,wa_a918,wa_a142,wa_konv,wa_konp.
ENDLOOP.
ENDFORM.
2013 Oct 26 9:57 AM
In debugging mode have you checked entries in it_final? Please do that, before calling REUSE_ALV_GRID_DISPLAY make sure your internal table is filled with some data.
Please place a screenshot of your debugging screen showing entries in it_final.
-Venkat
2013 Oct 26 10:07 AM
Check below sample report for your reference:
REPORT zvenkat_test.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
DATA: itab TYPE TABLE OF vbak.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-seltext_m = 'Sales Order'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'ERDAT'.
wa_fieldcat-seltext_m = 'Created on'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'VKORG'.
wa_fieldcat-seltext_m = 'Sales Org'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
SELECT *
FROM vbak
INTO TABLE itab
UP TO 100 ROWS.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = it_fieldcat
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2.
-Venkat
2013 Oct 26 10:13 AM
Hi mounika tunga
First thing i am unable to find table a918 in sap.
Where you got this table?
Debug and see are you getting data to it_final
Check sy-subrc = 0 in FORM arrange_data in debug.
2013 Oct 26 10:22 AM
Also while filling your field catalog table why are you appending same fields(KBETR). Give the field names which you have given in your final internal table 'it_final'.
wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZMAR and ZSTD margins in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 5.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZMAR with key combination of customer article in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 6.
wa_fieldcat-fieldname = 'MBLNR'.
wa_fieldcat-seltext_m = 'Goods reciept no'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 7.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZMAR'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 8.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZSTD OF PO POST GRN'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
-Venkat
2013 Oct 26 10:48 AM
Hi Venkat,
KBETR field is used in order to calcaulate percentage for the follwoing margins i n my program.
ZMAR and ZSTD margins in sap,
ZMAR with key combination of customer article in sap,
GRN No(MBLNR)
ZMAR
ZSTD of PO Post GRN
2013 Oct 26 10:59 AM
OK.
BEGIN OF ty_final,
bukrs TYPE bukrs,
lifnr TYPE elifn,
ebeln TYPE ebeln,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_d,
zstd(13) TYPE c,
zmar(13) TYPE c,
ebelp TYPE ebelp,
KBETR TYPE KBETR_KOND,
knumh TYPE knumh,
kdgrp TYPE kdgrp,
zmar_kbetr TYPE kbetr,
zm_kbetr TYPE kbetr,
belnr TYPE mblnr,
zmm_kbetr TYPE kbetr,
zstd_kbetr TYPE kbetr,
END OF ty_final.
In your types declaration there is only one KBETR field as you can see. So for the other fields why are you passing KBETR field name?
Write like this:
wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'ZMAR_KBETR'.
wa_fieldcat-seltext_m = 'ZMAR and ZSTD margins in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 5.
wa_fieldcat-fieldname = 'ZM_KBETR'.
wa_fieldcat-seltext_m = 'ZMAR with key combination of customer article in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
Fieldcatalog needs to be built based on fields in you internal table, else same column will be displayed multiple times.
What run-time error are you getting?
2013 Oct 26 11:16 AM
Hi,
In debugging mode
SELECT ebeln
bukrs
lifnr
FROM ekko INTO TABLE it_ekko
WHERE bukrs = p_bukrs
AND lifnr IN s_lifnr.
while checking entries in bukrs and lifnrshowing entries but in it_ekko showing zero enteries.
How can i get enteries in it_ekko.
2013 Oct 26 11:26 AM
That's the reason why you weren't able to display the output!
For retrieving values from EKKO table, give valid entries on your selection screen.
Check like this:
Goto EKKO table, consider any row and pass the same combination(BUKRS and LIFNR) in your selection screen.
This should fill your internal table it_ekko.
2013 Oct 26 12:39 PM
Iam checking with valid enteries in selection screen. In se16n ekko table and executing its showing like BUKRS =1000 and LIFNR = 1029. This data only am giving in selection screen before debugging. but it_ekko showing zero enteries.
2013 Oct 26 12:44 PM
Hi Venkat,
Thanks for the solution based. Its works for me here. But sad is result is showing 0 for all field names.
zmar_kbetr
zm_kbetr
belnr,
zmm_kbetr
zstd_kbetr
zmm_kbetr TYPE kbetr,
2013 Oct 26 10:12 AM
2013 Oct 26 10:22 AM
dear Mounika ,
Put condition as shown .
if it_final[] is not initial .
call function 'Resue_alv_display'
else.
message 'No data View ' type 'S'.
endif.
2013 Oct 26 10:51 AM
Hi Nice,
After using the above code am getting runtime error.
*&---------------------------------------------------------------------*
*& Report ZMM_GRNMARGIN_REPORT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zmm_grnmargin_report.
TYPE-POOLS : slis.
TABLES : ekko,ekbe.
TYPES : BEGIN OF ty_ekko,
ebeln TYPE ebeln,
bukrs TYPE bukrs,
lifnr TYPE elifn,
END OF ty_ekko,
BEGIN OF ty_ekbe,
ebeln TYPE ebeln,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_d,
belnr TYPE mblnr,
END OF ty_ekbe,
BEGIN OF ty_konp,
KBETR TYPE KBETR_KOND,
END OF ty_konp,
BEGIN OF ty_konv,
zmar_kbetr TYPE kbetr,
zm_kbetr TYPE kbetr,
zmm_kbetr TYPE kbetr,
zstd_kbetr TYPE kbetr,
END OF ty_konv,
BEGIN OF ty_final,
bukrs TYPE bukrs,
lifnr TYPE elifn,
ebeln TYPE ebeln,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_d,
zstd(13) TYPE c,
zmar(13) TYPE c,
ebelp TYPE ebelp,
KBETR TYPE KBETR_KOND,
knumh TYPE knumh,
kdgrp TYPE kdgrp,
zmar_kbetr TYPE kbetr,
zm_kbetr TYPE kbetr,
belnr TYPE mblnr,
zmm_kbetr TYPE kbetr,
zstd_kbetr TYPE kbetr,
END OF ty_final.
DATA : it_ekko TYPE TABLE OF ty_ekko,
wa_ekko LIKE LINE OF it_ekko,
it_ekbe TYPE TABLE OF ty_ekbe,
wa_ekbe LIKE LINE OF it_ekbe,
it_final TYPE TABLE OF ty_final,
wa_final LIKE LINE OF it_final.
DATA : it_a918 TYPE TABLE OF a918 WITH HEADER LINE,
wa_a918 LIKE LINE OF it_a918,
it_konv TYPE TABLE OF konv WITH HEADER LINE,
wa_konv LIKE LINE OF it_konv,
it_konp TYPE TABLE OF konp WITH HEADER LINE,
wa_konp LIKE LINE OF it_konp,
it_a142 TYPE TABLE OF a142 WITH HEADER LINE,
wa_a142 LIKE LINE OF it_a142.
DATA: it_fieldcat TYPE TABLE OF slis_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat,
wa_layout TYPE slis_layout_alv.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS :p_bukrs TYPE ekko-bukrs OBLIGATORY.
SELECT-OPTIONS :s_budat FOR ekbe-budat,
s_lifnr FOR ekko-lifnr,
s_matnr FOR ekbe-matnr.
PARAMETERS : p_werks TYPE ekbe-werks OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
START-OF-SELECTION.
SELECT ebeln
bukrs
lifnr
FROM ekko INTO TABLE it_ekko
WHERE bukrs = p_bukrs
AND lifnr IN s_lifnr.
IF it_ekko[] IS NOT INITIAL.
SELECT ebeln
budat
matnr
werks
BELNR
FROM ekbe INTO TABLE it_ekbe
WHERE budat IN s_budat
AND matnr IN s_matnr
AND werks EQ p_werks.
ENDIF.
*&-----------------------------------------------------------------------------------------------&*
*& FORM GET ZMAR
*&-----------------------------------------------------------------------------------------------&*
* text
*------------------------------------------------------------------------------------------------&*
* --> p1 text
* <-- p2 text
*------------------------------------------------------------------------------------------------*
IF it_ekbe[] IS NOT INITIAL.
SELECT matnr
knumh
FROM a918 INTO TABLE it_a918
WHERE kappl = 'V'
AND kschl = 'ZMAR'
AND kdgrp = 'FR'
AND matnr IN s_matnr
AND DATAB GE SY-DATUM.
ENDIF.
*&-----------------------------------------------------------------------------------------------&*
*& FORM GET ZSTD
*&-----------------------------------------------------------------------------------------------&*
* text
*------------------------------------------------------------------------------------------------&*
* --> p1 text
* <-- p2 text
*------------------------------------------------------------------------------------------------*
IF it_a918[] IS NOT INITIAL.
SELECT kappl
kschl
matnr
knumh
FROM a142 INTO TABLE it_a142
WHERE kappl = 'M'
AND kschl = 'ZSTD'
AND matnr IN s_matnr
AND DATAB GE SY-DATUM.
ENDIF.
IF sy-subrc = 0.
SELECT
kappl
kschl
Kbetr
FROM konv INTO TABLE it_konv
WHERE kappl = 'M'
AND kschl = 'zmar' OR kschl = 'zstd'.
ENDIF.
PERFORM arrange_data.
PERFORM build_fieldcatalog.
perFORM display_report .
*&-----------------------------------------------------------------------------------------------&*
*& FORM Arrange data
*&-----------------------------------------------------------------------------------------------&*
FORM arrange_data.
LOOP AT it_ekko INTO wa_ekko.
wa_final-bukrs = wa_ekko-bukrs.
wa_final-lifnr = wa_ekko-lifnr.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
IF sy-subrc = 0.
wa_final-budat = wa_ekbe-budat.
wa_final-matnr = wa_ekbe-matnr.
wa_final-werks = wa_ekbe-werks.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a918 INTO wa_a918 WITH KEY matnr = S_matnr KSCHL = 'ZMAR'.
* wa_final-ZMAR = wa_a914-KBETR.
SELECT SINGLE kbetr FROM konp INTO wa_konp WHERE kappl = 'M'
AND ( kschl = 'ZMAR' OR kschl = 'ZSTD' )
AND knumh = wa_a918-knumh.
IF sy-subrc = 0.
wa_final-zmar = wa_konp-kbetr / 10.
ENDIF.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a142 INTO wa_a142 WITH KEY matnr = s_matnr.
wa_final-zstd = wa_konp-kbetr / 10.
ENDIF.
SORT it_ekbe.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
if it_final[] is not initial .
call function 'Resue_alv_display'.
else.
message 'No data View ' type 'S'.
endif.
APPEND wa_final TO it_final."Build final itab
CLEAR wa_final.
CLEAR : wa_final,wa_ekko,wa_ekbe,wa_a918,wa_a142,wa_konv,wa_konp.
ENDLOOP.
ENDFORM. "Arrange_data
*&---------------------------------------------------------------------*
*& FORM BUILD FIELDCATALOG
*&---------------------------------------------------------------------*
FORM build_fieldcatalog.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-seltext_m = 'Purchase order'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'EBELP'.
wa_fieldcat-seltext_m = 'Purchase order item no'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'Article description'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZMAR and ZSTD margins in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 5.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZMAR with key combination of customer article in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 6.
wa_fieldcat-fieldname = 'MBLNR'.
wa_fieldcat-seltext_m = 'Goods reciept no'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 7.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZMAR'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 8.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'ZSTD OF PO POST GRN'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form DISPLAY_REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_report .
wa_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-cprog
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fieldcat
TABLES
t_outtab = it_final
* 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.
ENDFORM.
2013 Oct 26 12:03 PM
Dear Mounika,
There are couple of points :
1. There is No FM with
call function 'Resue_alv_display'.
The intension of the above post from Mr. nice was to Use FM related to ALV Display
REUSE_ALV_GRID_DISPLAY
REUSE_ALV_LIST_DISPLAY
Thats why you are getting syntax error.
2. There is some problem with data what you are providing to selection screen. Please cross check sometimes leading zero's also cause this problem.
3. Please debug and find root cause.
2013 Oct 26 1:00 PM
I did changes in my program. Getting output zero for the fields. And Purchase order fields are showing blank.
zmar_kbetr
zm_kbetr
belnr,
zmm_kbetr
zstd_kbetr
Please have a look in the below code.
zmar_kbetr
zm_kbetr
belnr,
zmm_kbetr
*&---------------------------------------------------------------------*
*& Report ZMM_GRNMARGIN_REPORT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zmm_grnmargin_report.
TYPE-POOLS : slis.
TABLES : ekko,ekbe.
TYPES : BEGIN OF ty_ekko,
ebeln TYPE ebeln,
bukrs TYPE bukrs,
lifnr TYPE elifn,
END OF ty_ekko,
BEGIN OF ty_ekbe,
ebeln TYPE ebeln,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_d,
belnr TYPE mblnr,
END OF ty_ekbe,
BEGIN OF ty_konp,
KBETR TYPE KBETR_KOND,
END OF ty_konp,
BEGIN OF ty_konv,
zmar_kbetr TYPE kbetr,
zm_kbetr TYPE kbetr,
zmm_kbetr TYPE kbetr,
zstd_kbetr TYPE kbetr,
END OF ty_konv,
BEGIN OF ty_final,
bukrs TYPE bukrs,
lifnr TYPE elifn,
ebeln TYPE ebeln,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_d,
zstd(13) TYPE c,
zmar(13) TYPE c,
ebelp TYPE ebelp,
KBETR TYPE KBETR_KOND,
knumh TYPE knumh,
kdgrp TYPE kdgrp,
zmar_kbetr TYPE kbetr,
zm_kbetr TYPE kbetr,
belnr TYPE mblnr,
zmm_kbetr TYPE kbetr,
zstd_kbetr TYPE kbetr,
END OF ty_final.
DATA : it_ekko TYPE TABLE OF ty_ekko,
wa_ekko LIKE LINE OF it_ekko,
it_ekbe TYPE TABLE OF ty_ekbe,
wa_ekbe LIKE LINE OF it_ekbe,
it_final TYPE TABLE OF ty_final,
wa_final LIKE LINE OF it_final.
DATA : it_a918 TYPE TABLE OF a918 WITH HEADER LINE,
wa_a918 LIKE LINE OF it_a918,
it_konv TYPE TABLE OF konv WITH HEADER LINE,
wa_konv LIKE LINE OF it_konv,
it_konp TYPE TABLE OF konp WITH HEADER LINE,
wa_konp LIKE LINE OF it_konp,
it_a142 TYPE TABLE OF a142 WITH HEADER LINE,
wa_a142 LIKE LINE OF it_a142.
DATA: it_fieldcat TYPE TABLE OF slis_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat,
wa_layout TYPE slis_layout_alv.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS :p_bukrs TYPE ekko-bukrs OBLIGATORY.
SELECT-OPTIONS :s_budat FOR ekbe-budat,
s_lifnr FOR ekko-lifnr,
s_matnr FOR ekbe-matnr.
PARAMETERS : p_werks TYPE ekbe-werks OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
START-OF-SELECTION.
SELECT ebeln
bukrs
lifnr
FROM ekko INTO TABLE it_ekko
WHERE bukrs = p_bukrs
AND lifnr IN s_lifnr.
IF it_ekko[] IS NOT INITIAL.
SELECT ebeln
budat
matnr
werks
BELNR
FROM ekbe INTO TABLE it_ekbe
WHERE budat IN s_budat
AND matnr IN s_matnr
AND werks EQ p_werks.
ENDIF.
*&-----------------------------------------------------------------------------------------------&*
*& FORM GET ZMAR
*&-----------------------------------------------------------------------------------------------&*
* text
*------------------------------------------------------------------------------------------------&*
* --> p1 text
* <-- p2 text
*------------------------------------------------------------------------------------------------*
IF it_ekbe[] IS NOT INITIAL.
SELECT matnr
knumh
FROM a918 INTO TABLE it_a918
WHERE kappl = 'V'
AND kschl = 'ZMAR'
AND kdgrp = 'FR'
AND matnr IN s_matnr
AND DATAB GE SY-DATUM.
ENDIF.
*&-----------------------------------------------------------------------------------------------&*
*& FORM GET ZSTD
*&-----------------------------------------------------------------------------------------------&*
* text
*------------------------------------------------------------------------------------------------&*
* --> p1 text
* <-- p2 text
*------------------------------------------------------------------------------------------------*
IF it_a918[] IS NOT INITIAL.
SELECT kappl
kschl
matnr
knumh
FROM a142 INTO TABLE it_a142
WHERE kappl = 'M'
AND kschl = 'ZSTD'
AND matnr IN s_matnr
AND DATAB GE SY-DATUM.
ENDIF.
IF sy-subrc = 0.
SELECT
kappl
kschl
Kbetr
FROM konv INTO TABLE it_konv
WHERE kappl = 'M'
AND kschl = 'zmar' OR kschl = 'zstd'.
ENDIF.
PERFORM arrange_data.
PERFORM build_fieldcatalog.
perFORM display_report .
*&-----------------------------------------------------------------------------------------------&*
*& FORM Arrange data
*&-----------------------------------------------------------------------------------------------&*
FORM arrange_data.
LOOP AT it_ekko INTO wa_ekko.
wa_final-bukrs = wa_ekko-bukrs.
wa_final-lifnr = wa_ekko-lifnr.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
IF sy-subrc = 0.
wa_final-budat = wa_ekbe-budat.
wa_final-matnr = wa_ekbe-matnr.
wa_final-werks = wa_ekbe-werks.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a918 INTO wa_a918 WITH KEY matnr = S_matnr KSCHL = 'ZMAR'.
* wa_final-ZMAR = wa_a914-KBETR.
SELECT SINGLE kbetr FROM konp INTO wa_konp WHERE kappl = 'M'
AND ( kschl = 'ZMAR' OR kschl = 'ZSTD' )
AND knumh = wa_a918-knumh.
IF sy-subrc = 0.
wa_final-zmar = wa_konp-kbetr / 10.
ENDIF.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_a142 INTO wa_a142 WITH KEY matnr = s_matnr.
wa_final-zstd = wa_konp-kbetr / 10.
ENDIF.
SORT it_ekbe.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_ekko-ebeln.
IF sy-subrc = 0.
CLEAR wa_final.
ENDIF.
APPEND wa_final TO it_final."Build final itab
CLEAR wa_final.
CLEAR : wa_final,wa_ekko,wa_ekbe,wa_a918,wa_a142,wa_konv,wa_konp.
ENDLOOP.
ENDFORM. "Arrange_data
*&---------------------------------------------------------------------*
*& FORM BUILD FIELDCATALOG
*&---------------------------------------------------------------------*
FORM build_fieldcatalog.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-seltext_m = 'Purchase order'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'EBELP'.
wa_fieldcat-seltext_m = 'Purchase order item no'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'Article description'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'ZMAR_KBETR'.
wa_fieldcat-seltext_m = 'ZMAR and ZSTD margins in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 5.
wa_fieldcat-fieldname = 'ZM_KBETR'.
wa_fieldcat-seltext_m = 'ZMAR with key combination of customer article in sap'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 6.
wa_fieldcat-fieldname = 'MBLNR'.
wa_fieldcat-seltext_m = 'Goods reciept no'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 7.
wa_fieldcat-fieldname = 'ZMM_KBETR'.
wa_fieldcat-seltext_m = 'ZMAR'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 8.
wa_fieldcat-fieldname = 'ZSTD_KBETR'.
wa_fieldcat-seltext_m = 'ZSTD OF PO POST GRN'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form DISPLAY_REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_report .
wa_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-cprog
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fieldcat
TABLES
t_outtab = it_final
* 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.
ENDFORM.
2013 Oct 26 1:17 PM
2013 Oct 26 3:47 PM
Iam not getting values in it_ekko in debugging mode .How to get values into it plz help me...
2013 Oct 26 4:01 PM
Hi Mounika-
Just check whether you are able to get details by passing only Company Code and Plant (as they are mandatory fields) on the selection screen. Leave other fields as empty.
If above procedure doesn't work try below approach:
Just for trial remove Obligatory for all the parameters in the selection screen and run with empty fields which has to select all the values.
Good luck!
-Venkat
2013 Oct 26 4:20 PM
Its working now in it_ekko enteries are showing ....
Thank u so much...
2013 Oct 26 4:29 PM
If everything is working fine, I would request you to close both the threads.
Thanks.
-Venkat
2013 Oct 26 5:15 PM
As i followed same method as u mentioned above in it_ekbe.
beln
budat
matnr
werks
BELNR
FROM ekbe INTO TABLE it_ekbe
WHERE budat IN s_budat
AND matnr IN s_matnr.
AND werks EQ p_werks.
If i wil enter Budat,Matnr, Werks it is showing fill in all fields .so at tht time am giving Lifnr And company code also.still it_ekbe showing zero enteries.
2013 Oct 26 5:37 PM
Check below queries:
SELECT ebeln
bukrs
lifnr
FROM ekko
INTO TABLE it_ekko
WHERE bukrs = p_bukrs
AND lifnr IN s_lifnr.
IF it_ekko[] IS NOT INITIAL.
SELECT ebeln
budat
matnr
werks
belnr
FROM ekbe
INTO TABLE it_ekbe
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln
AND budat IN s_budat
AND matnr IN s_matnr
AND werks = p_werks.
ENDIF.
-Venkat
2013 Oct 26 5:58 PM
I followed above quey only but still in debugging mode it_ekbe showing zero enteries .s_matnr and p_werks showing values not in it_ekbe.
START-OF-SELECTION.
SELECT ebeln
bukrs
lifnr
FROM ekko INTO TABLE it_ekko
WHERE bukrs = p_bukrs
AND lifnr IN s_lifnr.
IF it_ekko[] IS NOT INITIAL.
SELECT ebeln
budat
matnr
werks
BELNR
FROM ekbe INTO TABLE it_ekbe
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln
AND matnr IN s_matnr
AND werks EQ p_werks.
ENDIF.
2013 Oct 26 6:10 PM
Mounika-
I couldn't find any issue with query, I only doubt the data you are selecting....
SELECT ebeln
budat
matnr
werks
belnr
FROM ekbe
INTO TABLE it_ekbe
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln
AND budat IN s_budat -> missing in your quesry
AND matnr IN s_matnr
AND werks = p_werks.
Please note:
Select an entry from EKKO table and the same order needs to be available in EKBE -> PO history table. (This table will be updated only when you make an goods receipt / invoice against particular PO)
So check for the same order in EKBE table too and pass the values accordingly.
For testing purpose select an order which is available in all these tables...
-Venkat
2013 Oct 26 7:23 PM
Hi-
I have tried to retrieve data from both EKKO and EKBE tables based on your selection screen criteria:
Selection Screen:
Debugging Screen:
Internal table:IT_EKKO
Internal Table: IT_EKBE
My code for the same is:
REPORT zvenkat_test1.
TYPE-POOLS: slis.
TABLES: ekko,
ekbe.
TYPES : BEGIN OF ty_ekko,
ebeln TYPE ebeln,
bukrs TYPE bukrs,
lifnr TYPE elifn,
END OF ty_ekko,
BEGIN OF ty_ekbe,
ebeln TYPE ebeln,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_d,
belnr TYPE mblnr,
END OF ty_ekbe,
BEGIN OF ty_final,
bukrs TYPE bukrs,
lifnr TYPE elifn,
ebeln TYPE ebeln,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_d,
belnr TYPE mblnr,
END OF ty_final.
DATA : it_ekko TYPE TABLE OF ty_ekko,
wa_ekko TYPE ty_ekko,
it_ekbe TYPE TABLE OF ty_ekbe,
wa_ekbe TYPE ty_ekbe,
it_final TYPE TABLE OF ty_final,
wa_final TYPE ty_final.
DATA: it_fieldcat TYPE TABLE OF slis_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat.
PARAMETERS :p_bukrs TYPE ekko-bukrs OBLIGATORY.
SELECT-OPTIONS :s_budat FOR ekbe-budat,
s_lifnr FOR ekko-lifnr,
s_matnr FOR ekbe-matnr.
PARAMETERS : p_werks TYPE ekbe-werks OBLIGATORY.
START-OF-SELECTION.
SELECT ebeln
bukrs
lifnr
FROM ekko
INTO TABLE it_ekko
WHERE bukrs = p_bukrs
AND lifnr IN s_lifnr.
IF sy-subrc = 0 AND it_ekko[] IS NOT INITIAL.
SELECT ebeln
budat
matnr
werks
belnr
FROM ekbe
INTO TABLE it_ekbe
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln
AND budat IN s_budat
AND matnr IN s_matnr
AND werks = p_werks.
ENDIF.
IF it_ekbe[] IS NOT INITIAL.
ENDIF.
Now I can confirm that queries written were correct, problem is with your data selection. Please pass the appropriate data.
Thanks.
-Venkat
2013 Oct 26 7:28 PM
Iam checking ekbe values in se16n and giving valid data in selection screen.
Bukrs :1000
Budat : 04.06.2008
Matnr :40002654
Werks : 1002
Above mentioned data am checking in selction screen .
IF it_ekko[] IS NOT INITIAL.
SELECT ebeln
budat
matnr
werks
belnr
FROM ekbe INTO TABLE it_ekbe
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln
AND budat IN s_budat
AND matnr IN s_matnr
AND werks EQ p_werks.
ENDIF.
Above query am debugging still it_ekbe showing zero enteries.what to do.plz help me
2013 Oct 27 10:51 AM
First of all check whether material has leading zeros. Secondly you have date in EKBE for MATNR and other criteria, but did you check the PO number in IT_EKKO Whether those PO satisy plant...material...date criteria from EKBE
2013 Oct 28 6:59 AM
2013 Oct 28 7:04 AM
Hi Mounika,
Good to hear that, at last your problem got resolved!
Please close your threads if it's been answered and from here on please don't open multiple threads for the same issue.
Thanks,
Venkat