‎2007 Jul 20 8:37 AM
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
‎2007 Jul 20 8:48 AM
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
‎2007 Jul 20 8:43 AM
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
‎2007 Jul 20 8:46 AM
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
‎2007 Jul 20 8:46 AM
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
‎2007 Jul 20 8:48 AM
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
‎2007 Jul 20 9:00 AM
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***********
‎2007 Jul 20 9:53 AM
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.
‎2007 Jul 20 9:59 AM
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