04-09-2008 6:54 AM
Hi,
In my program, Iam getting the error that 'no open if statement'.Please correct me.
Also please let me know the functionality of hide statement in this progra,.
REPORT ZMTSHPRG7 .
TYPES:
BEGIN OF TY_KNA1,
KUNNR TYPE KNA1-KUNNR,
LAND1 TYPE KNA1-LAND1,
NAME1 TYPE KNA1-NAME1,
ORT01 TYPE KNA1-ORT01,
END OF TY_KNA1,
BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
AUDAT TYPE VBAK-AUDAT,
AUART TYPE VBAK-AUART,
NETWR TYPE VBAK-NETWR,
END OF TY_VBAK,
BEGIN OF TY_VBAP,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
ARKTX TYPE VBAP-ARKTX,
NETPR TYPE VBAP-NETPR,
NETWR TYPE VBAP-NETWR,
END OF TY_VBAP.
DATA:
ST_KNA1 TYPE TY_KNA1,
IT_KNA1 TYPE TABLE OF TY_KNA1,
ST_VBAK TYPE TY_VBAK,
IT_VBAK TYPE TABLE OF TY_VBAK,
ST_VBAP TYPE TY_VBAP,
IT_VBAP TYPE TABLE OF TY_VBAP.
SELECT-OPTIONS:
SKUNNR FOR ST_KNA1-KUNNR.
START-OF-SELECTION.
PERFORM GETCUSTDATA.
IF IT_KNA1 IS NOT INITIAL.
LOOP AT IT_KNA1 INTO ST_KNA1.
WRITE:/ SY-VLINE,1 ST_KNA1-KUNNR,SY-VLINE, 12 ST_KNA1-NAME1, SY-VLINE,42
ST_KNA1-ORT01, SY-VLINE, 62 ST_KNA1-LAND1, SY-VLINE.
ENDLOOP.
ENDIF.
TOP-OF-PAGE.
WRITE:/ SY-VLINE,1 'CUSTOMER NUMBER',SY-VLINE, 12 'CUSTOMER NAME',
SY-VLINE, 42 'CITY',SY-VLINE, 62 'COUNTRY',SY-VLINE.
ULINE.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
WRITE:/ 'READY TO DISPLAY DETAILS'.
ENDCASE.
HIDE ST_KNA1-KUNNR.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
SELECT VBELN AUDAT AUART NETWR FROM VBAK INTO TABLE IT_VBAK
WHERE KUNNR EQ ST_KNA1-KUNNR.
IF SY-SUBRC EQ 0.
LOOP AT IT_VBAK INTO ST_VBAK.
WRITE:/ ST_VBAK-VBELN, 12 ST_VBAK-AUDAT, ST_VBAK-AUART , ST_VBAK-NETWR.
ELSE.
MESSAGE S000(0) 'WITH NO ORDERS FOUND FOR THIS CUSTOMER'.
ENDLOOP.
ENDIF.
ENDCASE.
&----
*& Form GETCUSTDATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM GETCUSTDATA .
SELECT KUNNR LAND1 NAME1 ORT01 FROM KNA1
INTO TABLE IT_KNA1
WHERE KUNNR IN SKUNNR.
ENDFORM. " GETCUSTDATA
04-09-2008 6:57 AM
Hi,
change like this.
TYPES:
BEGIN OF TY_KNA1,
KUNNR TYPE KNA1-KUNNR,
LAND1 TYPE KNA1-LAND1,
NAME1 TYPE KNA1-NAME1,
ORT01 TYPE KNA1-ORT01,
END OF TY_KNA1,
BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
AUDAT TYPE VBAK-AUDAT,
AUART TYPE VBAK-AUART,
NETWR TYPE VBAK-NETWR,
END OF TY_VBAK,
BEGIN OF TY_VBAP,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
ARKTX TYPE VBAP-ARKTX,
NETPR TYPE VBAP-NETPR,
NETWR TYPE VBAP-NETWR,
END OF TY_VBAP.
DATA:
ST_KNA1 TYPE TY_KNA1,
IT_KNA1 TYPE TABLE OF TY_KNA1,
ST_VBAK TYPE TY_VBAK,
IT_VBAK TYPE TABLE OF TY_VBAK,
ST_VBAP TYPE TY_VBAP,
IT_VBAP TYPE TABLE OF TY_VBAP.
SELECT-OPTIONS:
SKUNNR FOR ST_KNA1-KUNNR.
START-OF-SELECTION.
PERFORM GETCUSTDATA.
IF IT_KNA1 IS NOT INITIAL.
LOOP AT IT_KNA1 INTO ST_KNA1.
WRITE:/ SY-VLINE,1 ST_KNA1-KUNNR,SY-VLINE, 12 ST_KNA1-NAME1, SY-VLINE,42
ST_KNA1-ORT01, SY-VLINE, 62 ST_KNA1-LAND1, SY-VLINE.
ENDLOOP.
ENDIF.
TOP-OF-PAGE.
WRITE:/ SY-VLINE,1 'CUSTOMER NUMBER',SY-VLINE, 12 'CUSTOMER NAME',
SY-VLINE, 42 'CITY',SY-VLINE, 62 'COUNTRY',SY-VLINE.
ULINE.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
WRITE:/ 'READY TO DISPLAY DETAILS'.
ENDCASE.
HIDE ST_KNA1-KUNNR.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
SELECT VBELN AUDAT AUART NETWR FROM VBAK INTO TABLE IT_VBAK
WHERE KUNNR EQ ST_KNA1-KUNNR.
IF SY-SUBRC EQ 0.
LOOP AT IT_VBAK INTO ST_VBAK.
WRITE:/ ST_VBAK-VBELN, 12 ST_VBAK-AUDAT, ST_VBAK-AUART , ST_VBAK-NETWR.
ENDLOOP.
ELSE.
MESSAGE S000(0) WITH 'NO ORDERS FOUND FOR THIS CUSTOMER'.
ENDIF.
ENDCASE.
*&---------------------------------------------------------------------
**& Form GETCUSTDATA
*&---------------------------------------------------------------------
*
* * text
*
*----------------------------------------------------------------------
*
* * --> p1 text
* * <-- p2 text
*
*----------------------------------------------------------------------
FORM GETCUSTDATA .
SELECT KUNNR LAND1 NAME1 ORT01 FROM KNA1
INTO TABLE IT_KNA1
WHERE KUNNR IN SKUNNR.
ENDFORM. " GETCUSTDATA
it came because of the misplacement of endloop.
rgds,
bharat.
04-09-2008 6:57 AM
Hi,
change like this.
TYPES:
BEGIN OF TY_KNA1,
KUNNR TYPE KNA1-KUNNR,
LAND1 TYPE KNA1-LAND1,
NAME1 TYPE KNA1-NAME1,
ORT01 TYPE KNA1-ORT01,
END OF TY_KNA1,
BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
AUDAT TYPE VBAK-AUDAT,
AUART TYPE VBAK-AUART,
NETWR TYPE VBAK-NETWR,
END OF TY_VBAK,
BEGIN OF TY_VBAP,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
ARKTX TYPE VBAP-ARKTX,
NETPR TYPE VBAP-NETPR,
NETWR TYPE VBAP-NETWR,
END OF TY_VBAP.
DATA:
ST_KNA1 TYPE TY_KNA1,
IT_KNA1 TYPE TABLE OF TY_KNA1,
ST_VBAK TYPE TY_VBAK,
IT_VBAK TYPE TABLE OF TY_VBAK,
ST_VBAP TYPE TY_VBAP,
IT_VBAP TYPE TABLE OF TY_VBAP.
SELECT-OPTIONS:
SKUNNR FOR ST_KNA1-KUNNR.
START-OF-SELECTION.
PERFORM GETCUSTDATA.
IF IT_KNA1 IS NOT INITIAL.
LOOP AT IT_KNA1 INTO ST_KNA1.
WRITE:/ SY-VLINE,1 ST_KNA1-KUNNR,SY-VLINE, 12 ST_KNA1-NAME1, SY-VLINE,42
ST_KNA1-ORT01, SY-VLINE, 62 ST_KNA1-LAND1, SY-VLINE.
ENDLOOP.
ENDIF.
TOP-OF-PAGE.
WRITE:/ SY-VLINE,1 'CUSTOMER NUMBER',SY-VLINE, 12 'CUSTOMER NAME',
SY-VLINE, 42 'CITY',SY-VLINE, 62 'COUNTRY',SY-VLINE.
ULINE.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
WRITE:/ 'READY TO DISPLAY DETAILS'.
ENDCASE.
HIDE ST_KNA1-KUNNR.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
SELECT VBELN AUDAT AUART NETWR FROM VBAK INTO TABLE IT_VBAK
WHERE KUNNR EQ ST_KNA1-KUNNR.
IF SY-SUBRC EQ 0.
LOOP AT IT_VBAK INTO ST_VBAK.
WRITE:/ ST_VBAK-VBELN, 12 ST_VBAK-AUDAT, ST_VBAK-AUART , ST_VBAK-NETWR.
ENDLOOP.
ELSE.
MESSAGE S000(0) WITH 'NO ORDERS FOUND FOR THIS CUSTOMER'.
ENDIF.
ENDCASE.
*&---------------------------------------------------------------------
**& Form GETCUSTDATA
*&---------------------------------------------------------------------
*
* * text
*
*----------------------------------------------------------------------
*
* * --> p1 text
* * <-- p2 text
*
*----------------------------------------------------------------------
FORM GETCUSTDATA .
SELECT KUNNR LAND1 NAME1 ORT01 FROM KNA1
INTO TABLE IT_KNA1
WHERE KUNNR IN SKUNNR.
ENDFORM. " GETCUSTDATA
it came because of the misplacement of endloop.
rgds,
bharat.
04-09-2008 6:58 AM
04-09-2008 6:58 AM
hi,
Change the following piece of code to
IF SY-SUBRC EQ 0.
LOOP AT IT_VBAK INTO ST_VBAK.
WRITE:/ ST_VBAK-VBELN, 12 ST_VBAK-AUDAT, ST_VBAK-AUART , ST_VBAK-NETWR.
ELSE.
MESSAGE S000(0) 'WITH NO ORDERS FOUND FOR THIS CUSTOMER'.
ENDLOOP.
ENDIF.
this
IF SY-SUBRC EQ 0.
LOOP AT IT_VBAK INTO ST_VBAK.
WRITE:/ ST_VBAK-VBELN, 12 ST_VBAK-AUDAT, ST_VBAK-AUART , ST_VBAK-NETWR.
ENDLOOP.
ELSE.
MESSAGE S000(0) 'WITH NO ORDERS FOUND FOR THIS CUSTOMER'.
ENDIF.
Hide is used to carry value to the next list in interactive reports.
Dont forget to reward points.
Regards,
Nishant
04-09-2008 6:59 AM
try this
IF sy-subrc EQ 0.
LOOP AT it_vbak INTO st_vbak.
WRITE:/ st_vbak-vbeln, 12 st_vbak-audat, st_vbak-auart , st_vbak-netwr.
ENDLOOP.
ELSE.
MESSAGE s000(0) WITH 'NO ORDERS FOUND FOR THIS CUSTOMER'.
ENDIF.
04-09-2008 7:00 AM
Change as follows.
AT LINE-SELECTION.
CASE sy-lsind.
WHEN 1.
SELECT vbeln audat auart netwr FROM vbak INTO TABLE it_vbak
WHERE kunnr EQ st_kna1-kunnr.
IF sy-subrc EQ 0.
LOOP AT it_vbak INTO st_vbak.
WRITE:/ st_vbak-vbeln, 12 st_vbak-audat, st_vbak-auart , st_vbak-netwr.
ENDLOOP.
ELSE.
MESSAGE s000(0) 'WITH NO ORDERS FOUND FOR THIS CUSTOMER'.
ENDIF.
ENDCASE.
03-10-2011 9:30 AM
TYPES:
BEGIN OF TY_KNA1,
KUNNR TYPE KNA1-KUNNR,
LAND1 TYPE KNA1-LAND1,
NAME1 TYPE KNA1-NAME1,
ORT01 TYPE KNA1-ORT01,
END OF TY_KNA1,
BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
AUDAT TYPE VBAK-AUDAT,
AUART TYPE VBAK-AUART,
NETWR TYPE VBAK-NETWR,
END OF TY_VBAK,
BEGIN OF TY_VBAP,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
ARKTX TYPE VBAP-ARKTX,
NETPR TYPE VBAP-NETPR,
NETWR TYPE VBAP-NETWR,
END OF TY_VBAP.
DATA:
ST_KNA1 TYPE TY_KNA1,
IT_KNA1 TYPE TABLE OF TY_KNA1,
ST_VBAK TYPE TY_VBAK,
IT_VBAK TYPE TABLE OF TY_VBAK,
ST_VBAP TYPE TY_VBAP,
IT_VBAP TYPE TABLE OF TY_VBAP.
SELECT-OPTIONS:
SKUNNR FOR ST_KNA1-KUNNR.
START-OF-SELECTION.
PERFORM GETCUSTDATA.
IF IT_KNA1 IS NOT INITIAL.
LOOP AT IT_KNA1 INTO ST_KNA1.
WRITE:/ SY-VLINE,1 ST_KNA1-KUNNR,SY-VLINE, 12 ST_KNA1-NAME1, SY-VLINE,42
ST_KNA1-ORT01, SY-VLINE, 62 ST_KNA1-LAND1, SY-VLINE.
HIDE ST_KNA1-KUNNR.
ENDLOOP.
ENDIF.
TOP-OF-PAGE.
WRITE:/ SY-VLINE,1 'CUSTOMER NUMBER',SY-VLINE, 12 'CUSTOMER NAME',
SY-VLINE, 42 'CITY',SY-VLINE, 62 'COUNTRY',SY-VLINE.
ULINE.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
WRITE:/ 'READY TO DISPLAY DETAILS'.
ENDCASE.
*AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 2.
SELECT VBELN
AUDAT
AUART
NETWR FROM VBAK
INTO TABLE IT_VBAK
WHERE KUNNR EQ ST_KNA1-KUNNR.
IF SY-SUBRC EQ 0.
LOOP AT IT_VBAK INTO ST_VBAK.
WRITE:/ ST_VBAK-VBELN, 12 ST_VBAK-AUDAT, ST_VBAK-AUART , ST_VBAK-NETWR.
ENDLOOP.
ELSE.
MESSAGE S002(ZRMSG).
ENDIF.
ENDCASE.
&---------------------------------------------------------------------
*& Form GETCUSTDATA
&---------------------------------------------------------------------
text
----------------------------------------------------------------------
--> p1 text
<-- p2 text
----------------------------------------------------------------------
FORM GETCUSTDATA .
SELECT KUNNR LAND1 NAME1 ORT01 FROM KNA1
INTO TABLE IT_KNA1
WHERE KUNNR IN SKUNNR.
ENDFORM. " GETCUSTDATA