Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

No Open If Statement

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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.

6 REPLIES 6

Former Member
0 Kudos

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.

b_deterd2
Active Contributor
0 Kudos

You probably miss an ENDIF statement at the end.

Former Member
0 Kudos

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

Former Member
0 Kudos

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.

Former Member
0 Kudos

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.

0 Kudos

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