2007 Sep 17 5:11 AM
Hi Guru's,
This is my program . There is no syntax error but while debugging this below loop it is not working
( LOOP AT i_vbrk WHERE vbeln = i_vbak-vbeln. ), Please correct my program if anything is wrong or suggest me what do to.
REPORT zsdr_omvsa40.
************************************************************************
TYPE-POOLS
************************************************************************
TYPE-POOLS: slis.
************************************************************************
TABLE DECLARATIONS
************************************************************************
TABLES : vbak, vbkd, zzvbak, kna1, vbrk, vbrp, knvp .
*************************************************************************
INTERNALTABLE DECLARATION *
*************************************************************************
DATA: BEGIN OF i_vbak OCCURS 0,
vbeln LIKE vbak-vbeln, " Sales Order no
erdat LIKE vbak-erdat, " Date on Which Record Was Created
kunnr LIKE vbak-kunnr,
ps_psp_pnr LIKE vbak-ps_psp_pnr, " Work Breakdown Structure Element
END OF i_vbak.
DATA : BEGIN OF i_zzvbak OCCURS 0,
vbeln LIKE zzvbak-vbeln,
zssidc LIKE zzvbak-zssidc, "Salesman ID
END OF i_zzvbak.
DATA : BEGIN OF i_vbrk OCCURS 0,
vbeln LIKE vbrk-vbeln,
fkdat LIKE vbrk-fkdat, "Invoice Date
END OF i_vbrk.
DATA : BEGIN OF i_kna1 OCCURS 0,
pstlz LIKE kna1-pstlz , " Postal Code
kunnr LIKE kna1-kunnr , " Customer Number 1
name1 LIKE kna1-name1, " Customer Name
END OF i_kna1.
DATA : BEGIN OF i_vbrp OCCURS 0,
vbeln LIKE vbrp-vbeln,
aubel LIKE vbrp-aubel,
netwr LIKE vbrp-netwr , " Net Value in Document Currency
kzwi1 LIKE vbrp-kzwi1, " Subtotal 1 from pricing procedure for condition
erdat LIKE vbrp-erdat, "Billing document.
END OF i_vbrp.
DATA : BEGIN OF i_knvp OCCURS 0,
parvw LIKE knvp-parvw , " Partner Function
kunnr LIKE knvp-kunnr ,
parnr LIKE knvp-parnr , " Number of contact person
END OF i_knvp .
DATA : BEGIN OF i_data OCCURS 0,
erdat LIKE vbak-erdat, " Date on Which Record Was Created
vbeln LIKE vbak-vbeln, " Sales Order no
fkdat LIKE vbrk-fkdat, " Invoice date.
kunnr LIKE kna1-kunnr , " Customer Number 1
ps_psp_pnr LIKE vbak-ps_psp_pnr, " Work Breakdown Structure Element
name1 LIKE kna1-name1, " Customer Name
netwr LIKE vbrp-netwr , " Net Value in Document Currency
kzwi1 LIKE vbrp-kzwi1, " Subtotal 1 from pricing procedure for condition
parvw LIKE knvp-parvw , " Partner Function
parnr LIKE knvp-parnr , " Number of contact person
zssidc LIKE zzvbak-zssidc, "Salesman ID
pstlz LIKE kna1-pstlz , " Postal Code
END OF i_data.
************************************************************************
ALV Declaraton
************************************************************************
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,
it_listheader TYPE slis_t_listheader,
gd_repid LIKE sy-repid.
************************************************************************
Selection - Screen
************************************************************************
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS creation FOR vbak-erdat . " Sales Order Date
SELECT-OPTIONS period FOR vbrk-fkdat . " Invoice Date
SELECT-OPTIONS order FOR vbak-vbeln . " Sales order no
SELECT-OPTIONS name FOR kna1-name1 . " Customer Name
SELECT-OPTIONS contact FOR knvp-parnr . " Contact Name.
SELECT-OPTIONS ssid FOR zzvbak-zssidc . " Salesman ID
SELECT-OPTIONS project FOR vbak-ps_psp_pnr . " Work Breakdown Structure Element
SELECTION-SCREEN : END OF BLOCK b1.
************************************************************************
START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM BUILD_LAYOUT.
PERFORM top_of_page.
PERFORM fill_listheader USING it_listheader.
PERFORM display_alv_report.
END-OF-SELECTION.
***********************************************************************
*TOP-OF-PAGE.
************************************************************************
TOP-OF-PAGE.
END-OF-PAGE.
&----
*& Form BUILD_FIELDCATALOG
&----
text
----
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'KUNNR'.
fieldcatalog-seltext_m = 'Sold to Party'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NAME1'.
fieldcatalog-seltext_m = 'Hlev Customer'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PARNR'.
fieldcatalog-seltext_m = 'Contact name'.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PS_PSP_PNR'.
fieldcatalog-seltext_m = 'Project ID'.
fieldcatalog-col_pos = 3.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'Sales Document Type'.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ZSSIDC'.
fieldcatalog-seltext_m = 'SSID'.
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ERDAT'.
fieldcatalog-seltext_m = 'so date'.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'FKDAT'.
fieldcatalog-seltext_m = 'inv date'.
fieldcatalog-col_pos = 7.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'KWZI1'.
fieldcatalog-seltext_m = 'gross amt'.
fieldcatalog-col_pos = 8.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NETWR'.
fieldcatalog-seltext_m = 'net amt'.
fieldcatalog-col_pos = 9.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PSTLZ'.
fieldcatalog-seltext_m = 'Postal code'.
fieldcatalog-col_pos = 10.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. "BUILD_FIELDCATALOG
&----
*& Form DATA_RETRIEVAL
&----
text
----
FORM data_retrieval.
SELECT vbeln erdat kunnr ps_psp_pnr INTO CORRESPONDING FIELDS OF TABLE i_vbak
FROM vbak WHERE erdat IN creation AND vbeln IN ORDER AND
ps_psp_pnr IN project.
IF NOT i_vbak[] IS INITIAL.
SELECT vbeln aubel netwr kzwi1 FROM vbrp INTO TABLE i_vbrp
FOR ALL ENTRIES IN i_vbak
WHERE aubel = i_vbak-vbeln.
SELECT vbeln fkdat FROM vbrk INTO TABLE i_vbrk FOR ALL ENTRIES IN i_vbrp
WHERE vbeln = i_vbrp-vbeln
AND fkdat IN period.
SELECT pstlz name1 kunnr FROM kna1 INTO TABLE i_kna1 FOR ALL ENTRIES IN i_vbak
WHERE kunnr = i_vbak-kunnr
AND name1 IN name.
SELECT vbeln zssidc FROM zzvbak INTO TABLE i_zzvbak FOR ALL ENTRIES IN i_vbak
WHERE vbeln = i_vbak-vbeln
AND zssidc IN ssid .
select netwr kzwi1 erdat from vbrp into table i_vbrp for all entries in i_vbak
where erdat = i_vbak-erdat.
SELECT kunnr parnr parvw FROM knvp INTO CORRESPONDING FIELDS OF TABLE i_knvp FOR ALL ENTRIES IN i_vbak
WHERE kunnr = i_vbak-kunnr
AND parvw = 'AP'
AND parnr IN contact.
ENDIF .
LOOP AT i_vbak.
LOOP AT i_vbrk WHERE vbeln = i_vbak-vbeln. " ( From this loop it'snot working)
LOOP AT i_kna1 WHERE kunnr = i_vbak-kunnr.
LOOP AT i_zzvbak WHERE vbeln = i_vbak-vbeln.
LOOP AT i_vbrp WHERE aubel = i_vbak-vbeln.
LOOP AT i_knvp ." where kunnr = i_vbak-kunnr.
CLEAR i_data.
MOVE i_kna1-kunnr TO i_data-kunnr.
MOVE i_kna1-name1 TO i_data-name1.
IF i_vbak-kunnr = i_knvp-kunnr .
MOVE i_knvp-parnr TO i_data-parnr.
ENDIF.
MOVE i_vbak-ps_psp_pnr TO i_data-ps_psp_pnr.
MOVE i_vbak-vbeln TO i_data-vbeln .
MOVE i_zzvbak-zssidc TO i_data-zssidc.
MOVE i_vbak-erdat TO i_data-erdat.
MOVE i_vbrk-fkdat TO i_data-fkdat.
MOVE i_vbrp-netwr TO i_data-netwr .
MOVE i_vbrp-kzwi1 TO i_data-kzwi1.
MOVE i_kna1-pstlz TO i_data-pstlz .
APPEND i_data.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM i_data.
*refresh : i_data.
*free : i_data.
*LOOP AT i_data.
ENDFORM. "DATA_RETRIEVAL
&----
*& Form DISPLAY_ALV_REPORT
&----
text
----
FORM display_alv_report.
GD_REPID = SY-REPID.
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 = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = fieldcatalog[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = i_data.
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. "DISPLAY_ALV_REPORT
**************************************************************************
FORM FOR FILLING LISTHEADER *
**************************************************************************
FORM fill_listheader USING it_listheader TYPE slis_t_listheader.
DATA : wa_listheader TYPE slis_listheader.
wa_listheader-typ = 'H'.
wa_listheader-info = 'Noel Gifts International Limited '.
APPEND wa_listheader TO it_listheader.
wa_listheader-typ = 'S'.
wa_listheader-info = 'CUSTOMER CREDIT EXCEPTION REPORT' .
APPEND wa_listheader TO it_listheader.
CLEAR wa_listheader.
ENDFORM. "fill_listheader
&----
*& Form top_of_page
&----
text
----
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader.
.
ENDFORM. "top_of_page
Thanks and regards,
R.Vinod.
2007 Sep 17 5:18 AM
in the statement LOOP AT i_vbrk WHERE vbeln = i_vbak-vbeln.
i_vbak refers to a structure / header line by the name i_vbak and not your internal table
since that is blank, the loop will fail
in the statement LOOP AT i_vbrk WHERE vbeln = i_vbak-vbeln.
i_vbak refers to a structure / header line by the name i_vbak and not your internal table
since that is blank, the loop will fail
2007 Sep 17 5:18 AM
in the statement LOOP AT i_vbrk WHERE vbeln = i_vbak-vbeln.
i_vbak refers to a structure / header line by the name i_vbak and not your internal table
since that is blank, the loop will fail
2007 Sep 17 5:20 AM
hI vinoth.
there are lot of Statements that must be changed in ur Report.
1. The order of the SELECTs need to change
2. Dont use INTO CORRESPONDING FIELDS it will be very slow.
3. Dont use So many LOOPS as Nested LOOPS will affect the Performance badly. So use the Read Table Statement with BINARY SEARCH instead of LOOP.
Try these changes it will surely work for u..
<b>reward if Helpful.</b>
2007 Sep 17 5:23 AM
Hi,
--> NOT i_vbak[] IS INITIAL, you have to check for these as well before select
1.NOT i_vbrp IS INITIAL, NOT i_knvp IS INITIAL.....
2.Before processing... sort all the tables by vbeln kunnr.....
3.Chek all the records are in have preceding zeros or not
2007 Sep 17 5:36 AM
sorry i sdint go through your entire code but it seems to me may be some conversion problem i.e. with leading zeroes. just check that...
you may have to use
fm after first loop at
LOOP AT i_vbak.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = i_vbak-vbeln
IMPORTING
OUTPUT = i_vbak-vbeln
.
LOOP AT i_vbrk WHERE vbeln = i_vbak-vbeln.
it will give a leading zero.
if you want to delete the leading zeroes from i_vbak-vbeln then use
LOOP AT i_vbak.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = i_vbak-vbeln
IMPORTING
OUTPUT = i_vbak-vbeln
.
LOOP AT i_vbrk WHERE vbeln = i_vbak-vbeln.
just check in debugging mode what conversion you need
regards
shiba dutta
2007 Sep 17 5:47 AM
Hi Vinoth..
Have seen the Suggestions in my Previous post?
And one more thing:
The Reason why tho LOOP is Failing in ur code.
VBAK-VBELN - Sales DOC No. (i.e Sales Order No)
VBRK-VBELN - Billing Doc No (i.e Invoice No)
So we should not compare these two fields.
Rather you have to Compare VBRP-VBELV to get the Sales order no.
OR else CHECK the Table VBFA for Sales doc flow.
reward if Helpful.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |