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: 

error when generating screen

Former Member
0 Kudos

hi,

this program i've done call smartform and in that i need two text boxes ..data should be enterd into the text boxes and smartforms printed..now for this text boxes iam using oo method..and this is my program

************************************************************************

  • DATABASE TABLES *

************************************************************************

TABLES: but000, t002.

************************************************************************

  • INTERNAL TABLES *

************************************************************************

DATA: gt_param LIKE zcrmtab_param OCCURS 0 WITH HEADER LINE.

DATA: gt_options TYPE ssfcompop,

gt_control TYPE ssfctrlop.

DATA: gt_but000 TYPE but000 OCCURS 0 WITH HEADER LINE,

gt_addresses TYPE adrc OCCURS 0 WITH HEADER LINE.

  • Table to hold address numbers

DATA: BEGIN OF gt_addr_numbers OCCURS 0,

partner LIKE but020-partner,

addrnumber LIKE but020-addrnumber,

END OF gt_addr_numbers.

DATA : gt_adrc_stores TYPE TABLE OF adrc.

DATA: gs_adrc_stores TYPE adrc.

  • Table to hold form name and language key

DATA: BEGIN OF gt_forms OCCURS 0,

form_name LIKE ppftsfprte-smartform,

langu TYPE langu,

END OF gt_forms.

DATA: gt_title TYPE TABLE OF tsad3t.

DATA : gs_title TYPE tsad3t.

DATA: BEGIN OF gt_country OCCURS 0,

langu TYPE spras,

country LIKE tsad3t-title_medi,

END OF gt_country.

DATA: gt_inv_lang LIKE gt_but000 OCCURS 0 WITH HEADER LINE.

DATA : remarks_con TYPE REF TO cl_gui_custom_container,

remarks TYPE REF TO cl_gui_textedit.

DATA: addnotes_con TYPE REF TO cl_gui_custom_container,

addnotes TYPE REF TO cl_gui_textedit.

DATA: text_tab LIKE STANDARD TABLE OF line,

text_wa LIKE line.

DATA text_tdline TYPE STANDARD TABLE OF tline WITH HEADER LINE.

DATA text_header TYPE thead.

TABLES: ttxit ,ttxid.

DATA line_length2 TYPE i VALUE 83.

DATA: ok_code TYPE sy-ucomm.

************************************************************************

  • WORKING VARIABLES *

************************************************************************

DATA: lv_langu TYPE c.

DATA: gv_addrnumber TYPE but020-addrnumber,

gv_amount TYPE zcrmdel_total_amount,

gv_func_mod_name TYPE rs38l_fnam,

gv_client_name TYPE char20.

DATA: gv_line(72) TYPE c.

DATA: gt_cond TYPE TABLE OF line WITH HEADER LINE.

************************************************************************

****INCLUDES

************************************************************************

INCLUDE zcfinc_maintain_cust_d.

INCLUDE zcfinc_maintaincust_f .

************************************************************************

  • PARAMETERS / SELECT OPTIONS *

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK s01 WITH FRAME TITLE text-001.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 3.

SELECTION-SCREEN COMMENT (20) text-002 FOR FIELD p_client.

SELECTION-SCREEN POSITION 27.

PARAMETERS p_client LIKE but000-partner OBLIGATORY.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 3.

SELECTION-SCREEN COMMENT (20) text-003 FOR FIELD s_cust.

SELECTION-SCREEN POSITION 24.

SELECT-OPTIONS: s_cust FOR but000-partner NO INTERVALS.

SELECTION-SCREEN END OF LINE.

*SELECTION-SCREEN BEGIN OF LINE.

*SELECTION-SCREEN POSITION 3.

*SELECTION-SCREEN COMMENT (20) text-004 FOR FIELD p_date.

*SELECTION-SCREEN POSITION 27.

*PARAMETERS p_date LIKE sy-datum. " OBLIGATORY.

*SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 3.

SELECTION-SCREEN COMMENT (20) text-009 FOR FIELD p_land.

SELECTION-SCREEN POSITION 27.

PARAMETERS p_land LIKE t005-land1 OBLIGATORY.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 3.

SELECTION-SCREEN COMMENT (20) text-011 FOR FIELD s_langu.

SELECTION-SCREEN POSITION 24.

SELECT-OPTIONS s_langu FOR t002-laiso NO INTERVALS OBLIGATORY.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK s01.

*SELECTION-SCREEN BEGIN OF BLOCK s02 WITH FRAME TITLE text-020.

*PARAMETER gencon RADIOBUTTON GROUP form.

*SELECTION-SCREEN END OF BLOCK s02 .

SELECTION-SCREEN BEGIN OF BLOCK s03 WITH FRAME TITLE text-003.

SELECTION-SCREEN SKIP.

PARAMETERS: p_print LIKE pri_params-pdest. " OBLIGATORY DEFAULT '*'.

SELECTION-SCREEN SKIP.

PARAMETERS: p_immed AS CHECKBOX DEFAULT ' ',

p_newsp AS CHECKBOX DEFAULT 'X',

p_delaft AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN END OF BLOCK s03.

SELECTION-SCREEN SKIP.

************************************************************************

INITIALIZATION.

************************************************************************

************************************************************************

AT SELECTION-SCREEN.

************************************************************************

  • Check that entered languages are valid

AT SELECTION-SCREEN ON s_langu.

SELECT SINGLE langu

INTO lv_langu

FROM tsad3t WHERE langu = s_langu-low(1).

IF sy-subrc <> 0.

MESSAGE w999 WITH 'INVALID LANGUAGE'.

ENDIF.

************************************************************************

START-OF-SELECTION.

************************************************************************

  • if gencon = 'X' .

PERFORM get_data.

CALL SCREEN 1000.

PERFORM print_forms.

  • ENDIF.

************************************************************************

END-OF-SELECTION.

************************************************************************

************************************************************************

TOP-OF-PAGE.

************************************************************************

DATA: w_col1 LIKE sy-linsz,

w_col2 LIKE sy-linsz,

w_len LIKE sy-linsz.

w_len = STRLEN( gv_client_name ).

w_col1 = ( sy-linsz - w_len ) / 2.

WRITE: / sy-repid.

WRITE AT w_col1 gv_client_name.

w_col2 = sy-linsz - 15.

WRITE: AT w_col2 text-006,

sy-pagno.

WRITE: / sy-datum DD/MM/YY.

w_len = STRLEN( sy-datum ).

w_col1 = ( sy-linsz - w_len ) / 2.

WRITE AT w_col1 sy-datum.

WRITE AT w_col2 sy-uzeit USING EDIT MASK '__:__:__'.

SKIP.

************************************************************************

************************************************************************

************************************************************************

************************************************************************

  • F O R M S

************************************************************************

&----


*& Form get_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_data .

PERFORM get_parameters.

PERFORM get_customers.

PERFORM get_addresses.

PERFORM get_title.

PERFORM get_country.

ENDFORM. " get_data

----


*& Module STATUS_1000 OUTPUT

&----


  • text

----


MODULE status_1000 OUTPUT.

SET PF-STATUS 'MENU1'.

  • SET TITLEBAR 'xxx'.

IF remarks IS INITIAL.

  • Create obejct for custom container

CREATE OBJECT remarks_con

EXPORTING

container_name = 'REMARKS'.

  • Create obejct for the TextEditor control

CREATE OBJECT remarks

EXPORTING

wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position

wordwrap_position = line_length2

wordwrap_to_linebreak_mode = cl_gui_textedit=>true

parent = remarks_con.

CALL METHOD remarks->set_toolbar_mode

EXPORTING

toolbar_mode = '0'.

CALL METHOD remarks->set_statusbar_mode

EXPORTING

statusbar_mode = '0'.

  • call method mremarks->set_font_fixed

  • exporting

  • font_fixed = '0'.

*

ENDIF.

IF addnotes IS INITIAL.

  • Create obejct for custom container

CREATE OBJECT addnotes_con

EXPORTING

container_name = 'ADDNOTES'.

  • Create obejct for the TextEditor control

CREATE OBJECT addnotes

EXPORTING

wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position

wordwrap_position = line_length2

wordwrap_to_linebreak_mode = cl_gui_textedit=>true

parent = addnotes_con.

CALL METHOD addnotes->set_toolbar_mode

EXPORTING

toolbar_mode = '0'.

CALL METHOD addnotes->set_statusbar_mode

EXPORTING

statusbar_mode = '0'.

  • call method mremarks->set_font_fixed

  • exporting

  • font_fixed = '0'.

*

ENDIF.

ENDMODULE. " STATUS_1000 OUTPUT

&----


*& Module USER_COMMAND_1000 INPUT

&----


  • text

----


MODULE user_command_1000 INPUT.

CASE ok_code.

WHEN 'SAVE'.

    • Remarks Editor

CLEAR : text_tab.

REFRESH: text_tab.

CALL METHOD remarks->get_text_as_stream

IMPORTING

text = text_tab.

IF NOT text_tab[] IS INITIAL.

text_header-tdobject = 'TEXT'.

text_header-tdid = 'EXRM'.

text_header-tdname = 'ENGREMARKS'.

text_header-tdspras = 'EN'.

LOOP AT text_tab INTO text_wa.

text_tdline-tdformat = '*'.

text_tdline-tdline = text_wa-line.

APPEND text_tdline.

ENDLOOP.

TRANSLATE text_wa-line TO UPPER CASE.

MOVE-CORRESPONDING text_header TO ttxit.

INSERT ttxit.

MOVE-CORRESPONDING text_header TO ttxid.

ttxid-tdshowname = 'x'.

INSERT ttxid.

CALL FUNCTION 'SAVE_TEXT'

EXPORTING

client = sy-mandt

header = text_header

TABLES

lines = text_tdline

EXCEPTIONS

id = 1

language = 2

name = 3

object = 4

OTHERS = 5.

TRANSLATE text_tdline TO UPPER CASE.

IF sy-subrc = 0.

ENDIF.

  • CLEAR : TEXT_TDLINE,TEXT_TAB.

  • REFRESH: TEXT_TDLINE,TEXT_TAB.

*

ENDIF.

      • Additioanl notes editor

    • Remarks Editor

CLEAR : text_tab.

REFRESH: text_tab.

CALL METHOD addnotes->get_text_as_stream

IMPORTING

text = text_tab.

IF NOT text_tab[] IS INITIAL.

text_header-tdobject = 'TEXT'.

text_header-tdid = 'EXAD'.

text_header-tdname = 'ENGADDNOTES'.

text_header-tdspras = 'EN'.

LOOP AT text_tab INTO text_wa.

text_tdline-tdformat = '*'.

text_tdline-tdline = text_wa-line.

APPEND text_tdline.

ENDLOOP.

TRANSLATE text_wa-line TO UPPER CASE.

MOVE-CORRESPONDING text_header TO ttxit.

INSERT ttxit.

MOVE-CORRESPONDING text_header TO ttxid.

ttxid-tdshowname = 'x'.

INSERT ttxid.

CALL FUNCTION 'SAVE_TEXT'

EXPORTING

client = sy-mandt

header = text_header

TABLES

lines = text_tdline

EXCEPTIONS

id = 1

language = 2

name = 3

object = 4

OTHERS = 5.

TRANSLATE text_tdline TO UPPER CASE.

IF sy-subrc = 0.

ENDIF.

ENDIF.

WHEN 'READ'.

**READ THE REMARKS TEXT THAT WAS SAVED BEFORE IF EXISTS

CLEAR: text_tab,text_tdline.

REFRESH: text_tab,text_tdline.

text_header-tdobject = 'TEXT'.

text_header-tdid = 'EXRM'.

text_header-tdname = 'ENGREMARKS'.

text_header-tdspras = 'E'.

CALL FUNCTION 'READ_TEXT'

EXPORTING

client = sy-mandt

id = text_header-tdid

language = text_header-tdspras

name = text_header-tdname

object = text_header-tdobject

TABLES

lines = text_tdline

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8.

IF sy-subrc <> 0.

ELSE.

LOOP AT text_tdline.

text_wa-line = text_tdline-tdline.

APPEND text_wa TO text_tab.

TRANSLATE text_wa TO UPPER CASE.

ENDLOOP.

ENDIF.

CALL METHOD remarks->set_text_as_stream

EXPORTING

text = text_tab.

CLEAR : text_tdline,text_tab.

REFRESH: text_tab,text_tdline.

text_header-tdobject = 'TEXT'.

text_header-tdid = 'EXAD'.

text_header-tdname = 'ENGADDNOTES'.

text_header-tdspras = 'E'.

CALL FUNCTION 'READ_TEXT'

EXPORTING

client = sy-mandt

id = text_header-tdid

language = text_header-tdspras

name = text_header-tdname

object = text_header-tdobject

TABLES

lines = text_tdline

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8.

IF sy-subrc <> 0.

ELSE.

LOOP AT text_tdline.

IF sy-tabix = 1.

CLEAR text_tdline.

ENDIF.

text_wa-line = text_tdline-tdline.

APPEND text_wa TO text_tab.

TRANSLATE text_wa TO UPPER CASE.

ENDLOOP.

ENDIF.

CALL METHOD addnotes->set_text_as_stream

EXPORTING

text = text_tab.

WHEN 'CLEAR'.

WHEN 'BACK'.

LEAVE PROGRAM.

ENDCASE.

ENDMODULE. " USER_COMMAND_1000 INPUT

&----


*& Form print_forms

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM print_forms .

PERFORM set_print_params.

*Copy all customers to invalid lang table

gt_inv_lang[] = gt_but000[].

SORT gt_inv_lang BY partner.

LOOP AT gt_forms.

  • get FM name

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = gt_forms-form_name

IMPORTING

fm_name = gv_func_mod_name.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION gv_func_mod_name

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

  • CONTROL_PARAMETERS =

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

gv_addresses = gv_address

gt_but000 = gt_but000

gs_title = gs_title

gs_adrc_stores = gs_adrc_stores

gv_amount = gv_amount

text_tab = text_tab.

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

  • EXCEPTIONS

  • FORMATTING_ERROR = 1

  • INTERNAL_ERROR = 2

  • SEND_ERROR = 3

  • USER_CANCELED = 4

  • OTHERS = 5

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDLOOP.

ENDFORM. " print_forms

&----


*& Form get_customers

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_customers .

SELECT *

INTO

TABLE gt_but000

FROM but000

WHERE partner IN s_cust

AND zzclientnumb = p_client.

IF gt_but000[] IS INITIAL.

MESSAGE i999 WITH 'No Data selected for forms'.

ENDIF.

ENDFORM. " get_customers

&----


*& Form get_addresses

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_addresses .

DATA: lt_addresses TYPE TABLE OF bapibus1006_addresses WITH HEADER LINE.

LOOP AT gt_but000.

    • First get address guids

PERFORM get_address_guids USING gt_but000-partner.

lt_addresses-addressguid = gv_soldtoaddrguid.

    • address details.

PERFORM address_get_details USING gt_but000-partner

lt_addresses-addressguid.

ENDLOOP.

IF lv_langu = 'S'

AND p_client = '0004000181' .

    • Need to get address numbers for store addresses

SELECT partner

addrnumber

FROM but020

INTO TABLE

gt_addr_numbers

WHERE partner = gt_but000-zzilgstorenu.

LOOP AT gt_addr_numbers.

SELECT SINGLE *

INTO gs_adrc_stores

FROM adrc

WHERE addrnumber = gt_addr_numbers-addrnumber.

ENDLOOP.

ENDIF.

ENDFORM. " get_addresses

&----


*& Form get_parameters

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_parameters.

DATA: lv_param.

RANGES: r_param FOR zcrmtab_param-zparameter.

SELECT *

INTO TABLE gt_param

FROM zcrmtab_param

WHERE parentid = sy-repid

AND identifier = p_client.

  • IF gencon = 'X'.

LOOP AT s_langu.

CONCATENATE 'GENCON_LETTER' s_langu-low INTO r_param-low

SEPARATED BY '_'.

APPEND r_param.

ENDLOOP.

  • ENDIF.

  • Get the forms that need to be printed and build up a table

  • with form name and language key

LOOP AT r_param.

READ TABLE gt_param WITH KEY zparameter = r_param-low.

IF sy-subrc <> 0.

MESSAGE e999 WITH 'Parameter' r_param-low 'not found'.

ELSE.

    • Build up condition

  • IF gencon = 'X'.

CONCATENATE 'laiso = ''' r_param-low+14 '''' INTO gv_line.

APPEND gv_line TO gt_cond.

  • ENDIF.

gt_forms-form_name = gt_param-zvalue.

SELECT SINGLE spras

INTO gt_forms-langu

FROM t002

WHERE (gt_cond).

APPEND gt_forms.

ENDIF.

ENDLOOP.

ENDFORM. " get_parameters

&----


*& Form set_print_params

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM set_print_params .

gt_options-tddelete = p_delaft. "Delete after printing

gt_options-tddest = p_print. "Printer

IF p_print IS INITIAL.

SELECT SINGLE spld INTO gt_options-tddest

FROM usr01

WHERE bname = sy-uname.

ENDIF.

IF gt_options-tddest IS INITIAL.

MESSAGE a999 WITH 'No printer defined'.

ENDIF.

gt_options-tdnewid = p_newsp. "New Spool Request

gt_options-tdimmed = p_immed. "Print Immediateley

gt_control-no_dialog = 'X'. "Don't display Dialogue box

ENDFORM. " set_print_params

&----


*& Form get_title

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_title .

SELECT SINGLE *

INTO gs_title

FROM tsad3t

WHERE langu = sy-langu

AND title = gt_but000-title.

ENDFORM. " get_title

&----


*& Form get_country

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_country .

SELECT spras landx

INTO TABLE gt_country

FROM t005t

WHERE land1 = gv_address-country.

endform.

when iam executing this..gettin an error < error when generating the screen>

plz advise..

4 REPLIES 4

former_member480923
Active Contributor
0 Kudos

Write this piece of code in a Module inside the Screen 1000.

IF remarks IS INITIAL.
* Create obejct for custom container
CREATE OBJECT remarks_con
EXPORTING
container_name = 'REMARKS'.
* Create obejct for the TextEditor control
CREATE OBJECT remarks
EXPORTING
wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = line_length2
wordwrap_to_linebreak_mode = cl_gui_textedit=>true
parent = remarks_con.

CALL METHOD remarks->set_toolbar_mode
EXPORTING
toolbar_mode = '0'.

CALL METHOD remarks->set_statusbar_mode
EXPORTING
statusbar_mode = '0'.

* call method mremarks->set_font_fixed
* exporting
* font_fixed = '0'.
*
ENDIF.

IF addnotes IS INITIAL.
* Create obejct for custom container
CREATE OBJECT addnotes_con
EXPORTING
container_name = 'ADDNOTES'.
* Create obejct for the TextEditor control
CREATE OBJECT addnotes
EXPORTING
wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = line_length2
wordwrap_to_linebreak_mode = cl_gui_textedit=>true
parent = addnotes_con.

CALL METHOD addnotes->set_toolbar_mode
EXPORTING
toolbar_mode = '0'.

CALL METHOD addnotes->set_statusbar_mode
EXPORTING
statusbar_mode = '0'.

* call method mremarks->set_font_fixed
* exporting
* font_fixed = '0'.
*
ENDIF.

In the PBO module of the Screen 1000.

Hope That Helps

Anirban M.

0 Kudos

thanks for your reply..if u see my code..its already been written..

regards

0 Kudos

Change your Screen Number from 1000 to 9001. 1000 is the default screen for Selection screen.

Hope That Helps

Anirban M.

varma_narayana
Active Contributor
0 Kudos

Hi Sudheer..

This Error (Generating Scree Error) generally comes when the elements of the Selection Screen are Overlapping.

So u need to change the Position of the fields or comments accordingly.

Eg:

SELECTION-SCREEN BEGIN OF BLOCK s01 WITH FRAME TITLE text-001.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 3.

SELECTION-SCREEN COMMENT (20) text-002 FOR FIELD p_client.

<b>SELECTION-SCREEN POSITION 40.</b>

PARAMETERS p_client LIKE but000-partner OBLIGATORY.

SELECTION-SCREEN END OF LINE.

Same way u need to change for the other lines in the selection screen.

<b>Reward if Helpful.</b>