Application Development and Automation 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: 
Read only

Error

Former Member
0 Likes
2,105

Hi,

I my program whne i execute menu bar for sales it is not processing as there are no sales orders for that customer.

so i wrote else stament but iam getting error that Field "ENDIF" is unknown. It is neither in one of the specified tables nor defined by a "DATA" statement . . . . . . . . . .

Also when i am executing usercommand change and calling the T.Code Xd02, it is taking the customer number by default.

REPORT ZAC_TAB24 LINE-SIZE 180

LINE-COUNT 26(2)

NO STANDARD PAGE HEADING.

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.

  • S E L E C T O P T I O N S.

SELECT-OPTIONS:

SKUNNR FOR ST_KNA1-KUNNR.

  • S T A R T O F S E L E C T I O N.

START-OF-SELECTION.

PERFORM GET_CUSTDATA.

IF IT_KNA1 IS NOT INITIAL.

SET PF-STATUS 'ZSTAT1'.

LOOP AT IT_KNA1 INTO ST_KNA1.

WRITE:/ ST_KNA1-KUNNR,ST_KNA1-LAND1,ST_KNA1-NAME1,ST_KNA1-ORT01.

ENDLOOP.

ELSE.

WRITE:/ 'NO CUSTOMERS FOUND'.

ENDIF.

*<b> AT USER-COMMAND.

AT USER-COMMAND.

CASE SY-UCOMM.

WHEN 'SALES'.

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,ST_VBAK-AUDAT,ST_VBAK-AUART,ST_VBAK-NETWR.

ENDLOOP.

ELSE.

MESSAGE S000(0) WITH "NO RECORDS FOUND FOR THIS CUSTOMER'.

ENDIF.

WHEN'BANK'.

WRITE:/ 'BANK DETAILS'.

WHEN 'CHANGE'.

CALL TRANSACTION 'XD02'.

SET PARAMETER ID 'KUN' FIELD ST_KNA1-KUNNR.

ENDCASE.</b>

  • A T L I N E S E L E C T I O N.

AT LINE-SELECTION.

CASE SY-LSIND.

WHEN 1.

WRITE:/ SY-LISEL.

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,ST_VBAK-AUDAT,ST_VBAK-AUART,ST_VBAK-NETWR.

HIDE ST_VBAK.

ENDLOOP.

ELSE.

MESSAGE S000(0) WITH 'NO RECORDS FOUND FOR THIS CUSTOMER'.

ENDIF.

WHEN 2.

WRITE:/ SY-LISEL.

SELECT POSNR MATNR ARKTX NETPR NETWR FROM VBAP INTO TABLE IT_VBAP.

IF SY-SUBRC EQ 0.

LOOP AT IT_VBAP INTO ST_VBAP.

WRITE:/ ST_VBAP-POSNR,ST_VBAP-MATNR,ST_VBAP-ARKTX,ST_VBAP-NETPR,ST_VBAP-NETWR.

HIDE ST_VBAP.

ENDLOOP.

ELSE.

MESSAGE S000(0) WITH 'NO ITEMS FOUND FOR THIS DOCUMENT NUMBER'.

ENDIF.

ENDCASE.

  • T O P O F P A G E D U R I N G L I N E S E L E C T I O N.

TOP-OF-PAGE DURING LINE-SELECTION.

CASE SY-LSIND.

WHEN 1.

WRITE:/ 'SALES DOCUMENT DETAILS'.

ULINE.

WHEN 2.

WRITE:/ 'ITEM DETAILS'.

ULINE.

ENDCASE.

&----


*& Form GET_CUSTDATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_CUSTDATA .

SELECT KUNNR LAND1 NAME1 ORT01 FROM KNA1 INTO TABLE IT_KNA1

WHERE KUNNR IN SKUNNR.

ENDFORM. " GET_CUSTDATA

Message was edited by:

rams s

1 ACCEPTED SOLUTION
Read only

gopi_narendra
Active Contributor
0 Likes
1,303

See the two changes in RED Color comments below.

You need to change the if not it_kna1[] is initial.

it_kna1[] represents a table.

* S T A R T O F S E L E C T I O N.
START-OF-SELECTION.
PERFORM GET_CUSTDATA.
IF not IT_KNA1[] is INITIAL. " Change like this
SET PF-STATUS 'ZSTAT1'.
LOOP AT IT_KNA1 INTO ST_KNA1.
WRITE:/ ST_KNA1-KUNNR,ST_KNA1-LAND1,ST_KNA1-NAME1,ST_KNA1-ORT01.
ENDLOOP.
ELSE.
WRITE:/ 'NO CUSTOMERS FOUND'.
ENDIF.

* AT USER-COMMAND.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'SALES'.
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,ST_VBAK-AUDAT,ST_VBAK-AUART,ST_VBAK-NETWR.
ENDLOOP.
ELSE.
MESSAGE S000(0) WITH 'NO RECORDS FOUND FOR THIS CUSTOMER'. 
                                      " Remove Double Quote after WITH
ENDIF.
WHEN'BANK'.
WRITE:/ 'BANK DETAILS'.
WHEN 'CHANGE'.

SET PARAMETER ID 'KUN' FIELD ST_KNA1-KUNNR. " shift here 
CALL TRANSACTION 'XD02'.
 " previously set parameter was here
ENDCASE.

Regards

Gopi

7 REPLIES 7
Read only

kostas_tsioubris
Contributor
0 Likes
1,303

HI,

for the endif problem try to change the double quotes before no records...

MESSAGE S000(0) WITH 'NO RECORDS FOUND FOR THIS CUSTOMER'.

ENDIF.

for the xd02 issue first use the statement set parameter id...and then use call transaction

Kostas

Read only

Former Member
0 Likes
1,303

Hi,

Pls remove the double quotes in the MESSAGE Statement.

MESSAGE S000(0) WITH 'NO RECORDS FOUND FOR THIS CUSTOMER'

<b>Rewards if helpful</b>

Harish

Read only

Former Member
0 Likes
1,303

SET PARAMETER ID 'KUN' FIELD ST_KNA1-KUNNR. <-

CALL TRANSACTION 'XD02'.

SET PARAMETER ID 'KUN' FIELD ST_KNA1-KUNNR. < - X

ENDCASE.

keep SET parameter before calltransaction not after that ...

WHEN 'SALES'.

SELECT VBELN AUDAT AUART NETWR FROM VBAK

INTO TABLE IT_VBAK

<b>for all entries in ST_KNA1</b>

WHERE KUNNR EQ ST_KNA1-KUNNR.

IF SY-SUBRC EQ 0.

.....

....

.....

use for all entries

Ok

Read only

gopi_narendra
Active Contributor
0 Likes
1,304

See the two changes in RED Color comments below.

You need to change the if not it_kna1[] is initial.

it_kna1[] represents a table.

* S T A R T O F S E L E C T I O N.
START-OF-SELECTION.
PERFORM GET_CUSTDATA.
IF not IT_KNA1[] is INITIAL. " Change like this
SET PF-STATUS 'ZSTAT1'.
LOOP AT IT_KNA1 INTO ST_KNA1.
WRITE:/ ST_KNA1-KUNNR,ST_KNA1-LAND1,ST_KNA1-NAME1,ST_KNA1-ORT01.
ENDLOOP.
ELSE.
WRITE:/ 'NO CUSTOMERS FOUND'.
ENDIF.

* AT USER-COMMAND.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'SALES'.
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,ST_VBAK-AUDAT,ST_VBAK-AUART,ST_VBAK-NETWR.
ENDLOOP.
ELSE.
MESSAGE S000(0) WITH 'NO RECORDS FOUND FOR THIS CUSTOMER'. 
                                      " Remove Double Quote after WITH
ENDIF.
WHEN'BANK'.
WRITE:/ 'BANK DETAILS'.
WHEN 'CHANGE'.

SET PARAMETER ID 'KUN' FIELD ST_KNA1-KUNNR. " shift here 
CALL TRANSACTION 'XD02'.
 " previously set parameter was here
ENDCASE.

Regards

Gopi

Read only

Former Member
0 Likes
1,303

Hi,

you have problem in this statement

MESSAGE S000(0) WITH "NO RECORDS FOUND FOR THIS CUSTOMER'

please make it

MESSAGE S000(0) WITH ' NO RECORDS FOUND FOR THIS CUSTOMER '.

**********please reward points if the information is helpful to you***********

Read only

Former Member
0 Likes
1,303

Hi,

When i am executing user command Change, it is taking last customer number ny defalu for evry customer.

Example. When i am selecting the customer number 1000 and when i click on change it is taking 500000 customer. similarly when i am selecting 1001 also it is taking 500000 in XD02 code by defalu. plz correct me.

Read only

0 Likes
1,303

Hi,

This is because of the parameter ID.

If you don't want any customer number then use

SET PARAMETER ID 'KUN' VALUE space.

Regards,

Atish