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

getting error while calling a subscreen in module pool program

Former Member
0 Likes
4,360

HI ALL,

ACTUALLY I'M GETTING A SYNTAX ERROR WHILE I'M CALLING A SUBSCREEN

IN A MODULE POOL PROGRAM IN PAI MODULE

THE ERROR IS AS FOLLOW

"." or "ID ... FIELD ..." expected after "SUBSCREEN"

CAN ANYBODY PLS HELP ME.

REGARDS

ANDREWS

13 REPLIES 13
Read only

Former Member
0 Likes
2,559

Hi Andrews,

Welcome to SDN.

Did you check the syntax of CALL SUNSCREEN? Please always check F1 help, to correct the syntax. If some proble even after the correction, then you can think further.

Check the syntax:

CALL SUBSCREEN subscreen_name INCLUDING report_name screen_number.

Read only

former_member209703
Active Contributor
0 Likes
2,559

Syntax would be like this


process before output.
  module status_1000.
*  module init.

  call subscreen g_tabs_subs_1000
            including g_tabs_subs_prog g_tabs_subs_dynnr.

process after input.

  module exit at exit-command.
  call subscreen g_tabs_subs_1000.

  module user_command_1000.

Read only

Former Member
0 Likes
2,559

Hi

You should post the code of the flow of the screen, anyway it should be like this:

PROCESS PBO

CALL SUBSCREEN <subscreen area> INCLUDING <program name> <screen numnber>.

PROCESS PAI.

CALL SUBSCREEN <subscreen area>.

Max

Read only

0 Likes
2,559

HI MAX,

I CHECKED FOR HTE ABOVE MENTIONED PROCEDURE BUT I'M GETTING THE SAME EROOR

Read only

0 Likes
2,559

Hi

Can you post your code?

Max

Read only

0 Likes
2,559

HI MAX ,

THE CODE IS AS FOLLOWS:

&----


*& Report ZTABSTRIP_PS

*&

&----


*&

*&

&----


REPORT ZTABSTRIP_PS.

type-pools : vrm.

DATA:number1 type I,

number2 type I,

result type I,

ok_code like SY-UCOMM,

employee1 type c,

ABAP(19) type c,

SALES(19) type c,

HR(19) type c,

MM(19) type c,

employee type c.

  • emp type c.

CONTROLS tabstrip TYPE TABSTRIP.

CALL SCREEN 100.

call screen 110.

call screen 130.

call screen 120.

call screen 140.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'STATUS'.

SET TITLEBAR 'TITLE'.

CASE OK_CODE.

WHEN 'BACK' or 'EXIT' or 'DELETE'.

leave program.

WHEN 'SAVE'.

MESSAGE 'please choose a valid function' TYPE 'I'.

  • WHEN 'BACK'.

  • leave PROGRAM.

  • when 'EXIT' or 'DELETE'.

  • leave to screen 0.

  • WHEN 'SAVE'.

  • MESSAGE 'please choose a valid function' TYPE 'I'.

endcase.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

CASE OK_CODE.

when 'TAB1'.

tabstrip-activetab = 'TAB1'.

when 'TAB2'.

tabstrip-activetab = 'TAB2'.

result = number1 + number2.

when 'TAB3'.

tabstrip-activetab = 'TAB3'.

  • SET TITLEBAR 'TITLE1'.

when 'TAB4'.

tabstrip-activetab = 'TAB4'.

  • if employee = 'NEERAJ'.

  • ABAP = 'NEERAJ'.

  • elseif employee = 'UMESH'.

  • SALES = 'UMESH'.

  • ELSEIF employee = 'RAM'.

  • HR = 'RAM'.

  • elseif employee = 'ANIL'.

  • MM = 'ANIL'.

  • endif.

  • employee = employee.

  • WHEN 'BACK'.

  • leave PROGRAM.

  • when 'EXIT' or 'DELETE'.

  • leave to screen 0.

  • WHEN 'SAVE'.

  • MESSAGE 'please choose a valid function' TYPE 'I'.

  • ENDCASE.

WHEN 'BACK' or 'EXIT' or 'DELETE'.

leave program .

WHEN 'SAVE'.

MESSAGE 'please choose a valid function' TYPE 'I'.

endcase.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module STATUS_0110 OUTPUT

&----


  • text

----


**MODULE STATUS_0110 OUTPUT.

    • SET PF-STATUS 'STATUS1'.

      • SET TITLEBAR 'xxx'.

**case ok_code.

**WHEN 'back' or 'exit' or 'delete'.

    • leave PROGRAM.

    • WHEN 'save'.

    • MESSAGE 'please choose a valid function ' TYPE 'W'.

    • ENDCASE.

**ENDMODULE. " STATUS_0110 OUTPUT

&----


*& Module USER_COMMAND_0110 INPUT

&----


  • text

----


MODULE USER_COMMAND_0110 INPUT.

number1 = number1.

number2 = number2.

  • CLEAR NUMBER1.

  • CLEAR NUMBER2.

REFRESH NUMBER1.

REFRESH NUMBER2.

ENDMODULE. " USER_COMMAND_0110 INPUT

&----


*& Module STATUS_0130 OUTPUT

&----


  • text

----


MODULE STATUS_0130 OUTPUT.

  • SET PF-STATUS 'STATUS2'.

  • SET TITLEBAR 'xxx'.

RESULT = number1 + number2.

*CLEAR RESULT.

REFRESH RESULT.

ENDMODULE. " STATUS_0130 OUTPUT

&----


*& Module STATUS_0120 OUTPUT

&----


  • text

----


MODULE STATUS_0120 OUTPUT.

  • SET PF-STATUS 'xxxxxxxx'.

  • SET TITLEBAR 'xxx'.

*

DATA: l_name TYPE vrm_id,

li_list TYPE vrm_values,

l_value LIKE LINE OF li_list.

l_value-key = '1'.

l_value-text = 'ANIL'.

APPEND l_value TO li_list.

CLEAR l_value.

  • CLEAR li_list.

l_value-key = '2'.

l_value-text = 'RAM'.

APPEND l_value TO li_list.

CLEAR l_value.

  • CLEAR li_list.

l_value-key = '3'.

l_value-text = 'NEERAJ'.

APPEND l_value TO li_list.

CLEAR l_value.

  • CLEAR li_list.

l_value-key = '4'.

l_value-text = 'UMESH'.

APPEND l_value TO li_list.

CLEAR l_value.

  • CLEAR li_list.

l_name = 'employee'.

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

ID = l_name

VALUES = li_list

EXCEPTIONS

ID_ILLEGAL_NAME = 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.

CLEAR li_list.

ENDMODULE. " STATUS_0120 OUTPUT

&----


*& Module USER_COMMAND_0120 INPUT

&----


  • text

----


MODULE USER_COMMAND_0120 INPUT.

  • INCLUDING sy-repid '140'.

employee1 = employee.

IF employee1 CS 'NEERAJ'.

call SUBSCREEN sub4 .

ABAP = 'NEERAJ'.

CLEAR ABAP.

ELSEIF employee1 CS 'UMESH'.

call SUBSCREEN sub4 .

SALES = 'UMESH'.

CLEAR SALES.

elseif employee1 CS 'RAM'.

call SUBSCREEN sub4 .

HR = 'RAM'.

CLEAR HR.

ELSEIF employee1 CS 'ANIL'.

call SUBSCREEN sub4 .

MM = 'ANIL'.

CLEAR MM.

endif.

ENDMODULE. " USER_COMMAND_0120 INPUT

&----


*& Module STATUS_0140 OUTPUT

&----


  • text

----


MODULE STATUS_0140 OUTPUT.

*CASE OK_CODE.

  • WHEN employee1 'NEERAJ'.

    • screen-active = 1.

  • ABAP = 'NEERAJ'.

  • WHEN employee1 = 'UMESH'.

    • screen-active = 1.

  • SALES = 'UMESH'.

  • WHEN employee1 = 'RAM'.

    • screen-active = 1.

  • HR = 'RAM'.

  • WHEN employee1 = 'ANIL'.

    • screen-active = 1.

  • MM = 'ANIL'.

    • endif.

*ENDCASE.

ENDMODULE. " STATUS_0140 OUTPUT

Read only

0 Likes
2,559

Hi

You have to insert the code between the markup else it's not possible to read it

Anyway it seems you have inserted the code to call the subscreen in the module, if it's so it's wrong

The call has to be inserted directly in the screen flow (PBO and PAI)

Max

Read only

0 Likes
2,559

(type-pools : vrm.

DATA:number1 type I,

number2 type I,

result type I,

ok_code like SY-UCOMM,

employee1 type c,

ABAP(19) type c,

SALES(19) type c,

HR(19) type c,

MM(19) type c,

employee type c.

  • emp type c.

CONTROLS tabstrip TYPE TABSTRIP.

CALL SCREEN 100.

call screen 110.

call screen 130.

call screen 120.

call screen 140.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'STATUS'.

SET TITLEBAR 'TITLE'.

CASE OK_CODE.

WHEN 'BACK' or 'EXIT' or 'DELETE'.

leave program.

WHEN 'SAVE'.

MESSAGE 'please choose a valid function' TYPE 'I'.

  • WHEN 'BACK'.

  • leave PROGRAM.

  • when 'EXIT' or 'DELETE'.

  • leave to screen 0.

  • WHEN 'SAVE'.

  • MESSAGE 'please choose a valid function' TYPE 'I'.

endcase.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

CASE OK_CODE.

when 'TAB1'.

tabstrip-activetab = 'TAB1'.

when 'TAB2'.

tabstrip-activetab = 'TAB2'.

result = number1 + number2.

when 'TAB3'.

tabstrip-activetab = 'TAB3'.

  • SET TITLEBAR 'TITLE1'.

when 'TAB4'.

tabstrip-activetab = 'TAB4'.

  • if employee = 'NEERAJ'.

  • ABAP = 'NEERAJ'.

  • elseif employee = 'UMESH'.

  • SALES = 'UMESH'.

  • ELSEIF employee = 'RAM'.

  • HR = 'RAM'.

  • elseif employee = 'ANIL'.

  • MM = 'ANIL'.

  • endif.

  • employee = employee.

  • WHEN 'BACK'.

  • leave PROGRAM.

  • when 'EXIT' or 'DELETE'.

  • leave to screen 0.

  • WHEN 'SAVE'.

  • MESSAGE 'please choose a valid function' TYPE 'I'.

  • ENDCASE.

WHEN 'BACK' or 'EXIT' or 'DELETE'.

leave program .

WHEN 'SAVE'.

MESSAGE 'please choose a valid function' TYPE 'I'.

endcase.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module STATUS_0110 OUTPUT

&----


  • text

----


**MODULE STATUS_0110 OUTPUT.

    • SET PF-STATUS 'STATUS1'.

      • SET TITLEBAR 'xxx'.

**case ok_code.

**WHEN 'back' or 'exit' or 'delete'.

    • leave PROGRAM.

    • WHEN 'save'.

    • MESSAGE 'please choose a valid function ' TYPE 'W'.

    • ENDCASE.

**ENDMODULE. " STATUS_0110 OUTPUT

&----


*& Module USER_COMMAND_0110 INPUT

&----


  • text

----


MODULE USER_COMMAND_0110 INPUT.

number1 = number1.

number2 = number2.

  • CLEAR NUMBER1.

  • CLEAR NUMBER2.

*REFRESH NUMBER1.

*REFRESH NUMBER2.

ENDMODULE. " USER_COMMAND_0110 INPUT

&----


*& Module STATUS_0130 OUTPUT

&----


  • text

----


MODULE STATUS_0130 OUTPUT.

  • SET PF-STATUS 'STATUS2'.

  • SET TITLEBAR 'xxx'.

RESULT = number1 + number2.

*CLEAR RESULT.

*REFRESH RESULT.

ENDMODULE. " STATUS_0130 OUTPUT

&----


*& Module STATUS_0120 OUTPUT

&----


  • text

----


MODULE STATUS_0120 OUTPUT.

  • SET PF-STATUS 'xxxxxxxx'.

  • SET TITLEBAR 'xxx'.

*

DATA: l_name TYPE vrm_id,

li_list TYPE vrm_values,

l_value LIKE LINE OF li_list.

l_value-key = '1'.

l_value-text = 'ANIL'.

APPEND l_value TO li_list.

CLEAR l_value.

  • CLEAR li_list.

l_value-key = '2'.

l_value-text = 'RAM'.

APPEND l_value TO li_list.

CLEAR l_value.

  • CLEAR li_list.

l_value-key = '3'.

l_value-text = 'NEERAJ'.

APPEND l_value TO li_list.

CLEAR l_value.

  • CLEAR li_list.

l_value-key = '4'.

l_value-text = 'UMESH'.

APPEND l_value TO li_list.

CLEAR l_value.

  • CLEAR li_list.

l_name = 'employee'.

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

ID = l_name

VALUES = li_list

EXCEPTIONS

ID_ILLEGAL_NAME = 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.

CLEAR li_list.

ENDMODULE. " STATUS_0120 OUTPUT

&----


*& Module USER_COMMAND_0120 INPUT

&----


  • text

----


MODULE USER_COMMAND_0120 INPUT.

  • INCLUDING sy-repid '140'.

employee1 = employee.

IF employee1 CS 'NEERAJ'.

  • call SUBSCREEN sub4 .

ABAP = 'NEERAJ'.

CLEAR ABAP.

ELSEIF employee1 CS 'UMESH'.

  • call SUBSCREEN sub4 .

SALES = 'UMESH'.

CLEAR SALES.

elseif employee1 CS 'RAM'.

  • call SUBSCREEN sub4 .

HR = 'RAM'.

CLEAR HR.

ELSEIF employee1 CS 'ANIL'.

  • call SUBSCREEN sub4 .

MM = 'ANIL'.

CLEAR MM.

endif.

ENDMODULE. ) " USER_COMMAND_0120 INPUT

Read only

0 Likes
2,559

Hi

If you're using , you need to considere there's a limit of chararcters can be written, probably you should split your code.

Anyway we don't need whole program but just the code of screen flow

Max

Read only

0 Likes
2,559

HI MAX ,

CODE ONLY WITHIN THE MODULE WHERE I'M GETTING ERROR

MODULE USER_COMMAND_0120 INPUT.

  • INCLUDING sy-repid '140'.

employee1 = employee.

IF employee1 CS 'NEERAJ'.

call SUBSCREEN sub4 .

ABAP = 'NEERAJ'.

CLEAR ABAP.

ELSEIF employee1 CS 'UMESH'.

call SUBSCREEN sub4 .

SALES = 'UMESH'.

CLEAR SALES.

elseif employee1 CS 'RAM'.

call SUBSCREEN sub4 .

HR = 'RAM'.

CLEAR HR.

ELSEIF employee1 CS 'ANIL'.

call SUBSCREEN sub4 .

MM = 'ANIL'.

CLEAR MM.

endif.

ENDMODULE. " USER_COMMAND_0120 INPUT

Read only

0 Likes
2,559

Hi

Just as I've said in a my previous answer, the command CALL SUBSCREEN is allow in the screen flow only, so you can't use it in a module, you have to delete it from module and place it directly in PROCESS PBO/PAI.

MODULE USER_COMMAND_0120 INPUT.
* INCLUDING sy-repid '140'.
  EMPLOYEE1 = EMPLOYEE.
  IF EMPLOYEE1 CS 'NEERAJ'.
    CALL SUBSCREEN SUB4.                "<------ Error
    ABAP = 'NEERAJ'.
    CLEAR ABAP.
  ELSEIF EMPLOYEE1 CS 'UMESH'.
    CALL SUBSCREEN SUB4 .                "<------ Error         
    SALES = 'UMESH'.
    CLEAR SALES.
  ELSEIF EMPLOYEE1 CS 'RAM'.
    CALL SUBSCREEN SUB4 ..                "<------ Error
    HR = 'RAM'.
    CLEAR HR.
  ELSEIF EMPLOYEE1 CS 'ANIL'.
    CALL SUBSCREEN SUB4 ..                "<------ Error
    MM = 'ANIL'.
    CLEAR MM.
  ENDIF.
ENDMODULE.

So you should have

PROCESS PAI
  CALL SUBSCREEN SUB4 .
  MODULE USER_COMMAND_0120.

Max

Read only

0 Likes
2,559

HI MAX,

SO WE CAN'T CALL A SUBSCREEN IN MODULE

Read only

0 Likes
2,559

Hi

Yes YOU CAN'T

the CALL SUBSCREEN is a statament for the dynpro and you can place it there only, because the area for subscreen is defined in the dynpro

PROCESS PBO.
  CALL SUBSCREEN SUB4 INCLUDING <PROGRAM NAME> <SUBSCREEN NUMBER>.
PROCESS PAI.
  CALL SUBSCREEN SUB4.

Max