Transporting module pool program from sand dev to dev system
Hi,
Can any body tell me how to transport module pool objects(including screens) from sand dev to dev system rather than manually with in the same client.
regards,
prasad reddy.
Hi
Go to Screen painter and give your program name which you wanted to transport.
Go to --> Object directory entry and there enter Development class and press enter then it will ask for request,. create a request accordingly.
Then you can release the sub task and give the main request to your Basis person to move it to target system.
Regads
Suresh
Similar Messages
-
How to copy a Module Pool Program from one SAP server to another SAP server
Hi Experts,
My requirement is to copy some Module pool programs from one SAP server to another SAP server which do not have any link.
Please advise on this.
Regards
Dipakput all relevant objects inside a transport request and release it. this will generate two files, a control file in /usr/sap/trans/cofiles/ and a data file in /usr/sap/trans/data/
you can take these two files, zip'em up and e.g. email them to your destination. There they have to be put into the same directories of that other server and can then be added to the import queue and finally imported.
These last steps would usually be done by an administrator.
Both systems should be on the same release, as far as I know.
Cheers
Thomas -
Call module pool program from report
Hi,
Iam calling module pool program from a report, while passing values to module pool program, one of the field doesn't have parameter id, how to pass value to it. and also please let me know how to call module pool program.
Appreciate your help.
Thanks in advance
jogHi Jog,
Module pool program can be run in background. Most of the BDC's are written on module pool programs and they run in the background.
Also regarrding copying the standard program, if you require to make the changes for every user then instead of copying the program make modification in standard program as copied program are much harder to maintain during support pack implementation or upgrade that modification to standard program.
Reward points if useful.
Regards,
Atish -
How to down load the Module pool program from sap
hi friends,
i am having the Module pool program in one server
it consists of 1 screen.
now i want to down load the Module pool program into another server.
those two server are not linked.
is there any way to copy from one server to another server.
like what we do in smartfroms,that is downloading form and uploading the form.Hi,
You can down load code from source system and u can upload those in your destination system. You can down load Code as normally like execute SE38 > enter ur program name> click on change button> Utilities(in menu bar)->more utilities>upload/down load>down load in source system & Just use same path with upload instead of down load. So this will help u to transfer code from one system to other.
Screens transfer: SE51> enter ur program name & screen no> click on change button> click on Layout button> Utilities(m)>upload/download>download for down loading a screen from source system.
And follow the same procedure in destination system also just use up load instead of download. to upload a screen in destination system.
Hope useful.
Regards,
BBR. -
How to pass values to a module pool program from another Report Program
Hi ..
Please let me know how I can pass values to a MODULE POOL selection screen field from another Report Program.
Thanks
RKhttp://help.sap.com/saphelp_nw04/helpdata/en/9f/db9e0435c111d1829f0000e829fbfe/frameset.htm
a® -
How to DOWNLOAD a whole module pool program????
Hi..
can anybody tell me how to download a <b>whole module pool program</b> into my desktop with .sap extension???
Actually i want to download a whole module pool program from a server so that i can upload the same program into another sap server instead of writing the whole code.
Thanx in advance......the program is exits..
i don't y it is not for ur.....
i am sending d code for the same....
create a program and check...
*& Report REPTRAN *
*& This report allows to display and save complete programs and *
*& function modules. *
*& This report was originally written by Frank Wolf, Xaption GmbH. *
*& Its original name was ZREPTRAN (see www.abaps.de). *
REPORT reptran LINE-SIZE 170 .
TABLES: d010inc, trdir, eudb, title, d020t, trkey, tfdir, tmdir, tadir,
seoclass, seoclassdf, seoclassex, seoclasstx, seometarel,
seocompo, seocompodf, seocompoex, seocompotx, seoimplrel,
seomapatt, seomapcls, seoredef, seofriends, seotypepls,
seosubco, seosubcodf, seosubcoex, seosubcotx.
TYPES: abapline(255).
TYPES: BEGIN OF ty_tit,
code TYPE rsoldleng-title,
text TYPE title-text_line,
END OF ty_tit.
TYPES: BEGIN OF ty_reptxt,
id TYPE textpool-id,
key TYPE textpool-key,
entry TYPE textpool-entry,
length(4) TYPE n,
END OF ty_reptxt.
TYPES: BEGIN OF ty_d020t,
prog TYPE d020t-prog,
dynr TYPE d020t-dynr,
dtxt TYPE d020t-dtxt,
END OF ty_d020t.
TYPES: BEGIN OF dynp_rel_type, "Dynpro-Releases
rel(1),
dot(1),
version(2),
END OF dynp_rel_type.
TYPES: BEGIN OF ty_seocompodf_t.
INCLUDE STRUCTURE seocmpkey.
TYPES: version TYPE seocompodf-version,
alias TYPE seocompodf-alias,
redefin TYPE seocompodf-redefin,
exposure TYPE seocompodf-exposure,
state TYPE seocompodf-state,
editorder(4) TYPE n,
locked TYPE seocompodf-locked,
dispid(4) TYPE n.
INCLUDE STRUCTURE seochange.
INCLUDE STRUCTURE seomtdapx.
INCLUDE STRUCTURE seoevtapx.
INCLUDE STRUCTURE seotypapx.
TYPES: typtype TYPE seocompodf-typtype,
type TYPE seocompodf-type,
tableof TYPE seocompodf-tableof,
srcrow1(4) TYPE n,
srccolumn1(2) TYPE n,
srcrow2(4) TYPE n,
srccolumn2(2) TYPE n.
INCLUDE STRUCTURE seocmpref.
TYPES: END OF ty_seocompodf_t.
TYPES: BEGIN OF ty_seosubcodf_t.
INCLUDE STRUCTURE seoscokey.
TYPES: version TYPE seosubcodf-version,
editorder(4) TYPE n,
dispid(4) TYPE n.
INCLUDE STRUCTURE seochange.
TYPES: pardecltyp TYPE seosubcodf-pardecltyp,
parpasstyp TYPE seosubcodf-parpasstyp,
typtype TYPE seosubcodf-typtype,
type TYPE seosubcodf-type,
tableof TYPE seosubcodf-tableof,
srcrow1(4) TYPE n,
srccolumn1(2) TYPE n,
srcrow2(4) TYPE n,
srccolumn2(2) TYPE n,
parvalue TYPE seosubcodf-parvalue,
paroptionl TYPE seosubcodf-paroptionl.
INCLUDE STRUCTURE seoexcapx.
TYPES: END OF ty_seosubcodf_t.
Release bis 3.1
*INCLUDE mseuxcom.
DATA: eu_key TYPE rseu1_key.
Titel
DATA: tit TYPE STANDARD TABLE OF ty_tit WITH HEADER LINE.
Release from 4.6
DATA: fun4 TYPE STANDARD TABLE OF rsmpe_funt WITH HEADER LINE.
DATA: ctx4 TYPE STANDARD TABLE OF rsmpe_ctx WITH HEADER LINE.
DATA: mtx4 TYPE STANDARD TABLE OF rsmpe_mnlt WITH HEADER LINE.
DATA: men4 TYPE STANDARD TABLE OF rsmpe_men WITH HEADER LINE.
DATA: act4 TYPE STANDARD TABLE OF rsmpe_act WITH HEADER LINE.
DATA: doc4 TYPE STANDARD TABLE OF rsmpe_atrt WITH HEADER LINE.
DATA: sta4 TYPE STANDARD TABLE OF rsmpe_stat WITH HEADER LINE.
DATA: set4 TYPE STANDARD TABLE OF rsmpe_staf WITH HEADER LINE.
DATA: pfk4 TYPE STANDARD TABLE OF rsmpe_pfk WITH HEADER LINE.
DATA: but4 TYPE STANDARD TABLE OF rsmpe_but WITH HEADER LINE.
DATA: tit4 TYPE STANDARD TABLE OF rsmpe_titt WITH HEADER LINE.
DATA: stx4 TYPE STANDARD TABLE OF rsmptexts WITH HEADER LINE.
DATA: adm4 TYPE rsmpe_adm.
Release from 4.6c
DATA: biv46c TYPE STANDARD TABLE OF rsmpe_buts WITH HEADER LINE.
DATA: reports TYPE STANDARD TABLE OF trdir-name WITH HEADER LINE,
reportname TYPE string.
DATA: i_repsrc TYPE STANDARD TABLE OF abapline WITH HEADER LINE.
DATA: i_reptx TYPE STANDARD TABLE OF textpool WITH HEADER LINE.
DATA: i_reptxt TYPE STANDARD TABLE OF ty_reptxt WITH HEADER LINE.
DATA: i_adm4 TYPE STANDARD TABLE OF rsmpe_adm WITH HEADER LINE.
DATA: i_tmd TYPE STANDARD TABLE OF tmdir.
DATA: i_tfd TYPE STANDARD TABLE OF tfdir.
DATA: i_cls TYPE STANDARD TABLE OF seoclass.
DATA: i_cdf TYPE STANDARD TABLE OF seoclassdf.
DATA: i_clx TYPE STANDARD TABLE OF seoclassex.
DATA: i_clt TYPE STANDARD TABLE OF seoclasstx.
DATA: i_cmr TYPE STANDARD TABLE OF seometarel.
DATA: i_cmp TYPE STANDARD TABLE OF seocompo.
DATA: i_cmd TYPE STANDARD TABLE OF seocompodf WITH HEADER LINE.
DATA: i_cmd_t TYPE STANDARD TABLE OF ty_seocompodf_t WITH HEADER LINE.
DATA: i_cmx TYPE STANDARD TABLE OF seocompoex.
DATA: i_cmt TYPE STANDARD TABLE OF seocompotx.
DATA: i_irl TYPE STANDARD TABLE OF seoimplrel.
DATA: i_mat TYPE STANDARD TABLE OF seomapatt.
DATA: i_mac TYPE STANDARD TABLE OF seomapcls.
DATA: i_red TYPE STANDARD TABLE OF seoredef.
DATA: i_frd TYPE STANDARD TABLE OF seofriends.
DATA: i_tpl TYPE STANDARD TABLE OF seotypepls.
DATA: i_sco TYPE STANDARD TABLE OF seosubco.
DATA: i_scd TYPE STANDARD TABLE OF seosubcodf WITH HEADER LINE.
DATA: i_scd_t TYPE STANDARD TABLE OF ty_seosubcodf_t WITH HEADER LINE.
DATA: i_scx TYPE STANDARD TABLE OF seosubcoex.
DATA: i_sct TYPE STANDARD TABLE OF seosubcotx.
DATA: i_inc TYPE STANDARD TABLE OF d010inc-include WITH HEADER LINE.
DATA: i_d020t TYPE STANDARD TABLE OF ty_d020t WITH HEADER LINE.
DATA: hdr TYPE d020s,
fld TYPE STANDARD TABLE OF d021s WITH HEADER LINE,
src TYPE STANDARD TABLE OF d022s WITH HEADER LINE,
mat TYPE STANDARD TABLE OF d023s WITH HEADER LINE.
CONSTANTS:
stars(64) VALUE
"#EC NOTEXT
comment1(64) VALUE
'* THIS FILE IS GENERATED BY THE SCREEN PAINTER. *',
"#EC NOTEXT
comment2(64) VALUE
'* NEVER CHANGE IT MANUALLY, PLEASE ! *',
"#EC NOTEXT
dynpro_text(8) VALUE '%_DYNPRO', "#EC NOTEXT
header_text(8) VALUE '%_HEADER', "#EC NOTEXT
params_text(8) VALUE '%_PARAMS', "#EC NOTEXT
descript_text(13) VALUE '%_DESCRIPTION', "#EC NOTEXT
fields_text(8) VALUE '%_FIELDS', "#EC NOTEXT
kreuz(1) VALUE 'x', "#EC NOTEXT
flowlogic_text(11) VALUE '%_FLOWLOGIC'. "#EC NOTEXT
DATA: header_char TYPE scr_chhead.
DATA: fields_char TYPE STANDARD TABLE OF scr_chfld WITH HEADER LINE.
DATA: dynp_char TYPE STANDARD TABLE OF scr_chfld WITH HEADER LINE.
DATA: prog_len TYPE p.
DATA: BEGIN OF dynp,
prog TYPE d020s-prog,
dnum TYPE d020s-dnum,
END OF dynp.
DATA:
scrp_rel TYPE dynp_rel_type VALUE '4.02'. "Rel. Scrp. 4.02
scrp_rel TYPE dynp_rel_type VALUE '4.60'. "Rel. Scrp. 4.6A
DATA dynp_rel TYPE dynp_rel_type. "akt. Rel. Dynpro
DATA: dynpro_rel(4).
DATA status.
DATA prog_len_akt TYPE p.
DATA release.
DATA rows LIKE sy-curow.
DATA lines LIKE sy-cucol.
DATA: filename TYPE string.
DATA: subrc LIKE sy-subrc.
DATA: os(10).
DATA: delux VALUE '/'.
DATA: delwn VALUE '\'.
DATA: delim.
DATA: dirux(250) VALUE '-l>dir.tmp'.
DATA: dirwn(250) VALUE '/Q /Cdir>dir.tmp'.
DATA: command(250).
DATA: shellux(250) VALUE 'bash'.
DATA: shellwn(250) VALUE 'cmd.exe'.
DATA: shell(250).
DATA: file TYPE rlgrap-filename.
DATA: answer.
DATA: incname TYPE d010inc-include.
DATA: repname TYPE d010inc-include.
DATA: rest1 TYPE d010inc-include.
DATA: rest2 TYPE d010inc-include.
DATA: kz_renam.
DATA: classname TYPE seoclsname.
DATA: classtype(2).
DATA: offset TYPE i.
DATA: savepath(250).
SELECT-OPTIONS: report FOR trdir-name.
SELECTION-SCREEN: SKIP.
SELECT-OPTIONS: cnam FOR trdir-cnam MATCHCODE OBJECT user_addr,
unam FOR trdir-unam MATCHCODE OBJECT user_addr,
devclass FOR tadir-devclass,
subc FOR trdir-subc,
rstat FOR trdir-rstat,
cdat FOR trdir-cdat,
udat FOR trdir-udat.
SELECTION-SCREEN: SKIP.
PARAMETERS: path(250).
SELECTION-SCREEN: SKIP.
PARAMETERS: display RADIOBUTTON GROUP func,
save RADIOBUTTON GROUP func,
savedspl RADIOBUTTON GROUP func.
SELECTION-SCREEN: SKIP.
PARAMETERS: codeonly AS CHECKBOX.
SELECTION-SCREEN: SKIP.
*PARAMETERS: suffix(80) LOWER CASE.
DATA: suffix(80) TYPE c.
LOAD-OF-PROGRAM.
AUTHORITY-CHECK OBJECT 'S_DEVELOP'
ID 'DEVCLASS' DUMMY
ID 'OBJTYPE' FIELD 'PROG'
ID 'OBJNAME' FIELD 'REPTRAN'
ID 'PGROUP' DUMMY
ID 'ACTVT' FIELD '03'.
IF sy-subrc <> 0.
MESSAGE e059(EU) WITH 'REPTRAN'.
ENDIF.
INITIALIZATION.
GET PARAMETER ID 'REPTRAN_PATH' FIELD path.
IF path IS INITIAL.
path = 'C:\ABAPS\'.
ENDIF.
save = 'X'.
codeonly = 'X'.
CALL FUNCTION 'WS_QUERY'
EXPORTING
ENVIRONMENT = ' '
FILENAME = ' '
query = 'OS'
WINID = ' '
IMPORTING
return = os
EXCEPTIONS
inv_query = 1
no_batch = 2
frontend_error = 3
OTHERS = 4.
IF sy-subrc = 0 AND
( os CS 'OS2' OR os CS 'DOS' OR os CS 'NT' ).
delim = delwn.
command = dirwn.
shell = shellwn.
ELSE.
delim = delux.
command = dirux.
shell = shellux.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR path.
GET CURSOR FIELD path VALUE path.
filename = path.
PERFORM fileselector.
AT SELECTION-SCREEN.
IF report[] IS INITIAL.
IF NOT reports[] IS INITIAL.
report = 'IEQ'.
report-low = reports.
APPEND report.
MESSAGE i208(00)
WITH 'Report/BSP application was also identified'(009).
ELSE.
MESSAGE e208(00)
WITH 'Enter report or BSP application or enter path'(011).
ENDIF.
ENDIF.
START-OF-SELECTION.
offset = strlen( path ) - 1.
IF path+offset(1) <> '\'.
CONCATENATE path '\' INTO path.
ENDIF.
SET PARAMETER ID 'REPTRAN_PATH' FIELD path.
FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.
eu_key-sprsl = sy-langu.
IF NOT save IS INITIAL OR
NOT display IS INITIAL OR
NOT savedspl IS INITIAL.
DOWNLOAD PROGRAMS
SELECT name FROM trdir
INTO TABLE reports
WHERE name IN report
AND cnam IN cnam
AND unam IN unam
AND subc IN subc
AND rstat IN rstat
AND cdat IN cdat
AND udat IN udat.
IF sy-subrc <> 0.
LOOP AT report.
CONCATENATE report(3) 'SAPL' report+3 INTO report.
MODIFY report.
ENDLOOP.
SELECT name FROM trdir
INTO TABLE reports
WHERE name IN report
AND cnam IN cnam
AND unam IN unam
AND subc IN subc
AND rstat IN rstat
AND cdat IN cdat
AND udat IN udat.
ENDIF.
IF sy-subrc <> 0.
MESSAGE i208(00)
WITH 'The program/function name entered does not exist!'(082).
ENDIF.
LOOP AT reports.
Check if report is in development class
classtype = reports+30.
IF reports(5) NE 'CL_O2'.
IF classtype = 'CP'.
tadir-obj_name = reports.
SHIFT tadir-obj_name RIGHT DELETING TRAILING space.
SHIFT tadir-obj_name RIGHT BY 2 PLACES.
SHIFT tadir-obj_name RIGHT DELETING TRAILING '='.
SHIFT tadir-obj_name LEFT DELETING LEADING space.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'CLAS'
AND obj_name = tadir-obj_name
AND devclass IN devclass.
ENDIF.
IF classtype <> 'CP' OR sy-subrc <> 0.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'PROG'
AND obj_name = reports
AND devclass IN devclass.
IF sy-subrc <> 0.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name = reports
AND devclass IN devclass.
ENDIF.
IF sy-subrc <> 0 AND
( reports(4) = 'SAPL' OR reports(4) = 'sapl' ).
reportname = reports+4.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name = reportname
AND devclass IN devclass.
ENDIF.
ENDIF.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
ENDIF.
reportname = reports.
PERFORM makepath USING reportname
path
CHANGING savepath.
PERFORM writeinfo USING reportname
savepath.
REFRESH: i_repsrc, i_reptx, i_reptxt, i_inc,
sta4, ctx4, fun4, mtx4, doc4, tit4, men4, act4, but4,
pfk4, set4, stx4, biv46c,
i_d020t, i_adm4,
i_tmd, i_tfd, i_cls, i_cdf, i_clx, i_clt, i_cmr, i_cmp,
i_cmd, i_cmx, i_cmt, i_irl, i_mat, i_mac, i_red, i_frd,
i_tpl, i_sco, i_scd, i_scx, i_sct, i_cmd_t, i_scd_t.
CLEAR: adm4.
eu_key-name = reports.
READ REPORT reports INTO i_repsrc.
IF codeonly <> 'X'.
READ TEXTPOOL reports INTO i_reptx.
ENDIF.
LOOP AT i_reptx.
MOVE-CORRESPONDING i_reptx TO i_reptxt.
APPEND i_reptxt.
ENDLOOP.
IF NOT display IS INITIAL OR
NOT savedspl IS INITIAL.
PERFORM show_rep.
ENDIF.
IF classtype = 'CP' OR classtype = 'IP'.
classname = reports(30).
TRANSLATE classname USING '= '.
SELECT * FROM tmdir INTO TABLE i_tmd
WHERE classname = classname.
SELECT * FROM seoclass INTO TABLE i_cls
WHERE clsname = classname.
SELECT * FROM seoclassdf INTO TABLE i_cdf
WHERE clsname = classname.
SELECT * FROM seoclassex INTO TABLE i_clx
WHERE clsname = classname.
SELECT * FROM seoclasstx INTO TABLE i_clt
WHERE clsname = classname.
SELECT * FROM seometarel INTO TABLE i_cmr
WHERE clsname = classname.
SELECT * FROM seocompo INTO TABLE i_cmp
WHERE clsname = classname.
SELECT * FROM seocompodf INTO TABLE i_cmd
WHERE clsname = classname.
LOOP AT i_cmd.
MOVE-CORRESPONDING i_cmd TO i_cmd_t.
APPEND i_cmd_t.
ENDLOOP.
SELECT * FROM seocompoex INTO TABLE i_cmx
WHERE clsname = classname.
SELECT * FROM seocompotx INTO TABLE i_cmt
WHERE clsname = classname.
SELECT * FROM seoimplrel INTO TABLE i_irl
WHERE clsname = classname.
SELECT * FROM seomapatt INTO TABLE i_mat
WHERE clsname = classname.
SELECT * FROM seomapcls INTO TABLE i_mac
WHERE clsname = classname.
SELECT * FROM seoredef INTO TABLE i_red
WHERE clsname = classname.
SELECT * FROM seofriends INTO TABLE i_frd
WHERE clsname = classname.
SELECT * FROM seotypepls INTO TABLE i_tpl
WHERE clsname = classname.
SELECT * FROM seosubco INTO TABLE i_sco
WHERE clsname = classname.
SELECT * FROM seosubcodf INTO TABLE i_scd
WHERE clsname = classname.
LOOP AT i_scd.
MOVE-CORRESPONDING i_scd TO i_scd_t.
APPEND i_scd_t.
ENDLOOP.
SELECT * FROM seosubcoex INTO TABLE i_scx
WHERE clsname = classname.
SELECT * FROM seosubcotx INTO TABLE i_sct
WHERE clsname = classname.
ELSE.
CLEAR classtype.
ENDIF.
IF codeonly <> 'X'.
SELECT * FROM tfdir INTO TABLE i_tfd
WHERE pname = reports.
CALL FUNCTION 'RS_CUA_INTERNAL_FETCH'
EXPORTING
program = reports
LANGUAGE =
STATE = 'A'
IMPORTING
adm = adm4
LANGU =
AUTHOR =
DATE =
TIME =
CAUTHOR =
CDATE =
CTIME =
GDATE =
GTIME =
TABLES
sta = sta4
fun = fun4
men = men4
mtx = mtx4
act = act4
but = but4
pfk = pfk4
set = set4
doc = doc4
tit = tit4
biv = biv46c
EXCEPTIONS
not_found = 1
unknown_version = 2
OTHERS = 3.
SELECT ddnr text_line FROM title INTO TABLE tit
WHERE ddlanguage = eu_key-sprsl AND
progname = eu_key-name.
SELECT * FROM rsmptexts INTO TABLE stx4
WHERE progname = eu_key-name AND
sprsl = eu_key-sprsl.
SELECT prog dynr dtxt FROM d020t INTO TABLE i_d020t
WHERE prog = reports AND
NOT dtxt LIKE 'SEL_SCREEN%'.
ENDIF.
IF NOT classtype IS INITIAL.
reports = classname.
ENDIF.
TRANSLATE reports TO LOWER CASE.
TRANSLATE reports USING '/.'.
IF NOT save IS INITIAL OR
NOT savedspl IS INITIAL.
CONCATENATE savepath reports suffix '.txt' INTO filename.
PERFORM download TABLES i_repsrc USING filename
'Source'(003).
IF NOT i_reptxt[] IS INITIAL.
CONCATENATE savepath reports suffix '_txt.txt' INTO filename.
PERFORM download TABLES i_reptxt USING filename
'Text elements'(004).
ENDIF.
ENDIF.
SELECT include FROM d010inc INTO TABLE i_inc
WHERE master = eu_key-name.
DELETE i_inc WHERE table_line(1) = '<'.
DELETE i_inc WHERE table_line(1) = '>'.
DELETE i_inc WHERE table_line = 'DB__SSEL'.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_inc[] IS INITIAL.
CONCATENATE savepath reports suffix '_inc.txt' INTO filename.
PERFORM download TABLES i_inc USING filename
'Include List'(033).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_tmd[] IS INITIAL.
CONCATENATE savepath reports suffix '_tmd.txt' INTO filename.
PERFORM download TABLES i_tmd USING filename
'Methods List'(048).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_cls[] IS INITIAL.
CONCATENATE savepath reports suffix '_cls.txt' INTO filename.
PERFORM download TABLES i_cls USING filename
'Class Entry'(050).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_cdf[] IS INITIAL.
CONCATENATE savepath reports suffix '_cdf.txt' INTO filename.
PERFORM download TABLES i_cdf USING filename
'Class Definition'(051).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_clx[] IS INITIAL.
CONCATENATE savepath reports suffix '_clx.txt' INTO filename.
PERFORM download TABLES i_clx USING filename
'Class Remote Info'(052).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_clt[] IS INITIAL.
CONCATENATE savepath reports suffix '_clt.txt' INTO filename.
PERFORM download TABLES i_clt USING filename
'Class Description'(053).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_cmr[] IS INITIAL.
CONCATENATE savepath reports suffix '_cmr.txt' INTO filename.
PERFORM download TABLES i_cmr USING filename
'Class Meta Relations'(054).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_cmp[] IS INITIAL.
CONCATENATE savepath reports suffix '_cmp.txt' INTO filename.
PERFORM download TABLES i_cmp USING filename
'Class Components'(055).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_cmd_t[] IS INITIAL.
CONCATENATE savepath reports suffix '_cmd.txt' INTO filename.
PERFORM download TABLES i_cmd_t USING filename
'Class Components Definitions'(056).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_cmx[] IS INITIAL.
CONCATENATE savepath reports suffix '_cmx.txt' INTO filename.
PERFORM download TABLES i_cmx USING filename
'Class Components Remote Infos'(057).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_cmt[] IS INITIAL.
CONCATENATE savepath reports suffix '_cmt.txt' INTO filename.
PERFORM download TABLES i_cmt USING filename
'Class Components Descriptions'(058).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_irl[] IS INITIAL.
CONCATENATE savepath reports suffix '_irl.txt' INTO filename.
PERFORM download TABLES i_irl USING filename
'Class Components Relation Types'(059).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_mat[] IS INITIAL.
CONCATENATE savepath reports suffix '_mat.txt' INTO filename.
PERFORM download TABLES i_mat USING filename
'Class Mapping Attributes'(060).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_mac[] IS INITIAL.
CONCATENATE savepath reports suffix '_mac.txt' INTO filename.
PERFORM download TABLES i_mac USING filename
'Class Mapping Classes'(061).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_red[] IS INITIAL.
CONCATENATE savepath reports suffix '_red.txt' INTO filename.
PERFORM download TABLES i_red USING filename
'Class Redefinitions'(062).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_frd[] IS INITIAL.
CONCATENATE savepath reports suffix '_frd.txt' INTO filename.
PERFORM download TABLES i_frd USING filename
'Class Friends'(063).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_tpl[] IS INITIAL.
CONCATENATE savepath reports suffix '_tpl.txt' INTO filename.
PERFORM download TABLES i_tpl USING filename
'Class Type-Pools'(064).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_sco[] IS INITIAL.
CONCATENATE savepath reports suffix '_sco.txt' INTO filename.
PERFORM download TABLES i_sco USING filename
'Class Sub Components'(065).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_scd_t[] IS INITIAL.
CONCATENATE savepath reports suffix '_scd.txt' INTO filename.
PERFORM download TABLES i_scd_t USING filename
'Class Sub Components Definitions'(066).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_scx[] IS INITIAL.
CONCATENATE savepath reports suffix '_scx.txt' INTO filename.
PERFORM download TABLES i_scx USING filename
'Class Sub Components Remote Infos'(067).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_sct[] IS INITIAL.
CONCATENATE savepath reports suffix '_sct.txt' INTO filename.
PERFORM download TABLES i_sct USING filename
'Class Sub Components Descriptions'(068).
ENDIF.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_tfd[] IS INITIAL.
CONCATENATE savepath reports suffix '_tfd.txt' INTO filename.
PERFORM download TABLES i_tfd USING filename
'Function List'(049).
ENDIF.
IF NOT i_inc[] IS INITIAL.
LOOP AT i_inc.
REFRESH: i_reptx, i_reptxt.
READ REPORT i_inc INTO i_repsrc.
IF codeonly <> 'X'.
READ TEXTPOOL i_inc INTO i_reptx.
ENDIF.
LOOP AT i_reptx.
MOVE-CORRESPONDING i_reptx TO i_reptxt.
APPEND i_reptxt.
ENDLOOP.
IF NOT display IS INITIAL OR
NOT savedspl IS INITIAL.
PERFORM show_inc.
ENDIF.
TRANSLATE i_inc TO LOWER CASE.
TRANSLATE i_inc USING '/.'.
IF NOT save IS INITIAL OR
NOT savedspl IS INITIAL.
CONCATENATE savepath i_inc suffix '.txt' INTO filename.
PERFORM download TABLES i_repsrc USING filename
'Include Source'(032).
IF NOT i_reptxt[] IS INITIAL.
CONCATENATE savepath i_inc suffix '_txt.txt'
INTO filename.
PERFORM download TABLES i_reptxt USING filename
'Text elements'(004).
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT i_d020t[] IS INITIAL.
LOOP AT i_d020t.
IMPORT DYNPRO hdr fld src mat ID i_d020t.
CALL FUNCTION 'RS_SCRP_UPGRADE_DYNPRO'
TABLES
f = fld
m = mat
CHANGING
h = hdr.
IF src[] IS INITIAL.
DELETE i_d020t.
CONTINUE.
ENDIF.
CLEAR src.
READ TABLE src INDEX 1.
IF src-line CS 'Do not change'.
DELETE i_d020t.
CONTINUE.
ENDIF.
CALL FUNCTION 'RS_SCRP_GET_SCREEN_INFOS'
EXPORTING
dynnr = hdr-dnum
progname = hdr-prog
with_fieldlist = 'X'
IMPORTING
lines = lines
columns = rows
TABLES
fieldlist = fld
EXCEPTIONS
dynpro_does_not_exist = 01
no_field_list = 02.
hdr-bzmx = lines.
hdr-bzbr = rows.
IF NOT display IS INITIAL OR
NOT savedspl IS INITIAL.
PERFORM show_dyn.
ENDIF.
IF NOT save IS INITIAL OR
NOT savedspl IS INITIAL.
PERFORM dynpro_download.
ENDIF.
ENDLOOP.
IF ( NOT save IS INITIAL OR
NOT savedspl IS INITIAL ) AND
NOT i_d020t[] IS INITIAL.
CONCATENATE savepath reports suffix '_dyn.txt' INTO filename.
PERFORM download TABLES i_d020t USING filename
'Dynpro List'(040).
ENDIF.
ENDIF.
IF NOT save IS INITIAL OR
NOT savedspl IS INITIAL.
IF NOT sta4[] IS INITIAL.
CONCATENATE savepath reports suffix '_sta.txt' INTO filename.
PERFORM download TABLES sta4 USING filename
'GUI Status'(013).
ENDIF.
IF NOT ctx4[] IS INITIAL.
CONCATENATE savepath reports suffix '_ctx.txt' INTO filename.
PERFORM download TABLES ctx4 USING filename
'Object Codes'(045).
ENDIF.
IF NOT fun4[] IS INITIAL.
CONCATENATE savepath reports suffix '_fun.txt' INTO filename.
PERFORM download TABLES fun4 USING filename
'Function Texts'(014).
ENDIF.
IF NOT men4[] IS INITIAL.
CONCATENATE savepath reports suffix '_men.txt' INTO filename.
PERFORM download TABLES men4 USING filename
'Menus'(015).
ENDIF.
IF NOT tit4[] IS INITIAL.
CONCATENATE savepath reports suffix '_sti.txt' INTO filename.
PERFORM download TABLES tit4 USING filename
'Title Codes'(042).
ENDIF.
IF NOT mtx4[] IS INITIAL.
CONCATENATE savepath reports suffix '_mtx.txt' INTO filename.
PERFORM download TABLES mtx4 USING filename
'Menu Texts'(016).
ENDIF.
IF NOT act4[] IS INITIAL.
CONCATENATE savepath reports suffix '_act.txt' INTO filename.
PERFORM download TABLES act4 USING filename
'Menu Bars'(047).
ENDIF.
IF NOT but4[] IS INITIAL.
CONCATENATE savepath reports suffix '_but.txt' INTO filename.
PERFORM download TABLES but4 USING filename
'Push Buttons'(018).
ENDIF.
IF NOT pfk4[] IS INITIAL.
CONCATENATE savepath reports suffix '_pfk.txt' INTO filename.
PERFORM download TABLES pfk4 USING filename
'PF Keys'(019).
ENDIF.
IF NOT adm4 IS INITIAL.
APPEND adm4 TO i_adm4.
CONCATENATE savepath reports suffix '_adm.txt' INTO filename.
PERFORM download TABLES i_adm4 USING filename
'Management Information'(043).
ENDIF.
IF NOT set4[] IS INITIAL.
CONCATENATE savepath reports suffix '_set.txt' INTO filename.
PERFORM download TABLES set4 USING filename
'Function Sets'(020).
ENDIF.
IF NOT stx4[] IS INITIAL.
CONCATENATE savepath reports suffix '_stx.txt' INTO filename.
PERFORM download TABLES stx4 USING filename
'Status Texts'(023).
ENDIF.
IF NOT doc4[] IS INITIAL.
CONCATENATE savepath reports suffix '_doc.txt' INTO filename.
PERFORM download TABLES doc4 USING filename
'Status Short Texts'(024).
ENDIF.
IF NOT biv46c[] IS INITIAL.
CONCATENATE savepath reports suffix '_biv.txt' INTO filename.
PERFORM download TABLES biv46c USING filename
'Invariant Functions'(048).
ENDIF.
IF NOT tit[] IS INITIAL.
CONCATENATE savepath reports suffix '_tit.txt' INTO filename.
PERFORM download TABLES tit USING filename
'Title Bars'(030).
ENDIF.
ENDIF.
ULINE.
ENDLOOP.
ENDIF.
REFRESH reports.
*& Form DOWNLOAD
FORM download TABLES tabelle
USING value(filename)
component.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
filename = filename
filetype = 'ASC'
IMPORTING
FILELENGTH =
TABLES
data_tab = tabelle
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
OTHERS = 5.
IF reports IS INITIAL.
WRITE: / appls.
ELSE.
WRITE: / reports.
ENDIF.
WRITE: /(20) component.
IF sy-subrc = 0.
WRITE: 'successfully downloaded'(001).
PERFORM getfilename USING filename
CHANGING filename.
WRITE: '->', filename.
ELSE.
WRITE: 'not downloaded, RC ='(002), sy-subrc.
ENDIF.
ENDFORM. " DOWNLOAD
*& Form FILESELECTOR
FORM fileselector.
DATA: repname(250).
DATA: fdpos(2) TYPE p.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = ' '
def_path = path
mask = ',.txt,.txt.'
mode = 'O'
TITLE = ' '
IMPORTING
filename = file
RC =
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
subrc = sy-subrc.
path = file.
CLEAR: sy-fdpos, sy-subrc.
fdpos = 1.
WHILE sy-subrc = 0.
fdpos = fdpos + sy-fdpos + 1.
SEARCH path FOR delim STARTING AT fdpos.
ENDWHILE.
fdpos = fdpos - 1.
path = path(fdpos).
repname = file.
CLEAR sy-subrc.
WHILE sy-subrc = 0.
SHIFT repname LEFT.
SHIFT repname LEFT UP TO delim.
ENDWHILE.
SHIFT repname RIGHT UP TO '.'.
SHIFT repname RIGHT.
SHIFT repname LEFT DELETING LEADING space.
TRANSLATE repname TO UPPER CASE.
reports = repname.
APPEND reports.
ENDFORM. " FILESELECTOR
*& Form LS
FORM ls.
TYPES: c80(80).
DATA: dirtab TYPE STANDARD TABLE OF c80 WITH HEADER LINE.
DATA: datei TYPE string.
DATA: i LIKE sy-tabix.
DATA: endtime LIKE sy-uzeit.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
DOCUMENT = ' '
cd = path
commandline = command
INFORM = ' '
program = shell
STAT = ' '
WINID = ' '
OSMAC_SCRIPT = ' '
OSMAC_CREATOR = ' '
WIN16_EXT = ' '
EXEC_RC = ' '
IMPORTING
RBUFF =
EXCEPTIONS
frontend_error = 1
no_batch = 2
prog_not_found = 3
illegal_option = 4
OTHERS = 5.
IF sy-subrc NE 0.
MESSAGE e001(pc).
Error when executing the WS program
ENDIF.
CONCATENATE path 'dir.tmp' INTO datei.
GET TIME.
endtime = sy-uzeit + 3.
WHILE sy-uzeit < endtime.
GET TIME.
ENDWHILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = datei
filetype = 'ASC'
IMPORTING
FILELENGTH =
TABLES
data_tab = dirtab
EXCEPTIONS
file_read_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
OTHERS = 5.
IF sy-subrc NE 0.
MESSAGE e001(pc).
Error when executing the WS program
ENDIF.
REFRESH reports.
i = 1.
DO.
SEARCH dirtab FOR '.txt' STARTING AT i.
IF sy-subrc NE 0.
EXIT.
ENDIF.
READ TABLE dirtab INDEX sy-tabix.
i = sy-tabix + 1.
CHECK dirtab NS 'txt_.txt'.
SHIFT dirtab LEFT UP TO space.
SHIFT dirtab LEFT DELETING LEADING space.
SHIFT dirtab LEFT UP TO space.
SHIFT dirtab LEFT DELETING LEADING space.
SHIFT dirtab LEFT UP TO space.
SHIFT dirtab RIGHT UP TO '.'.
SHIFT dirtab RIGHT.
SHIFT dirtab LEFT DELETING LEADING space.
IF NOT dirtab IS INITIAL.
TRANSLATE dirtab TO LOWER CASE.
APPEND dirtab TO reports.
ENDIF.
ENDDO.
SORT reports.
DELETE ADJACENT DUPLICATES FROM reports.
ENDFORM. " LS
*& Form SHOW_DYN
FORM show_dyn.
Printing Dynpro data
Header for Dynpro
FORMAT COLOR COL_TOTAL.
WRITE: / 'Dynpro header', AT sy-linsz ''.
FORMAT COLOR COL_NORMAL.
WRITE: / 'Program:', 30 hdr-prog, AT sy-linsz '',
/ 'Dynpro:', 30 hdr-dnum, AT sy-linsz '',
/ 'Follow-up dynpro:', 30 hdr-fnum, AT sy-linsz ''.
ULINE.
Print field list
FORMAT COLOR COL_TOTAL.
WRITE: / 'Field list' COLOR COL_TOTAL, AT sy-linsz ''.
FORMAT COLOR COL_HEADING.
WRITE: / 'Field',
25 'Line',
30 'Column',
37 'TYPE',
42 'LOOPTyp',
50 'DDIC',
55 'FormByte', AT sy-linsz ''.
CALL FUNCTION 'RS_SCRP_FIELDS_RAW_TO_CHAR'
TABLES
fields_int = fld
fields_char = fields_char
EXCEPTIONS
OTHERS = 1.
FORMAT COLOR COL_NORMAL.
LOOP AT fields_char.
WRITE: /(24) fields_char-feldname,
25 fields_char-line,
30 fields_char-coln,
37 fields_char-feldformat,
42 fields_char-looptype,
50 fields_char-inttyp,
55 fields_char-fmb1,
58 fields_char-fmb2.
ENDLOOP.
ULINE.
Display logic
FORMAT COLOR COL_TOTAL.
WRITE: / 'Logic', AT sy-linsz ''.
FORMAT COLOR COL_NORMAL.
LOOP AT src.
WRITE: / src-line.
ENDLOOP.
ULINE.
SKIP.
Display matchcode data
FORMAT COLOR COL_TOTAL.
WRITE: / 'Matchcode data', AT sy-linsz ''.
FORMAT COLOR COL_NORMAL.
LOOP AT mat.
WRITE: /(80) mat.
ENDLOOP.
IF sy-subrc NE 0.
WRITE / ' no matchcode files available ' COLOR COL_NEGATIVE.
ENDIF.
NEW-PAGE.
ENDFORM. " SHOW_DYN
*& Form SHOW_REP
FORM show_rep.
FORMAT COLOR COL_TOTAL.
WRITE: / 'Program:', reports, AT sy-linsz ''.
FORMAT COLOR COL_BACKGROUND.
LOOP AT i_repsrc.
WRITE: / i_repsrc.
ENDLOOP.
ULINE.
FORMAT COLOR COL_TOTAL.
WRITE: / 'Text elements for program:', reports, AT sy-linsz ''.
FORMAT COLOR COL_HEADING.
WRITE: / 'Type',
5 'Key',
20 'Length',
30 'Text', AT sy-linsz ''.
FORMAT COLOR COL_NORMAL.
LOOP AT i_reptxt.
WRITE: / i_reptxt-id,
5 i_reptxt-key,
20(4) i_reptxt-length,
30(80) i_reptxt-entry.
ENDLOOP.
NEW-PAGE.
ENDFORM. " SHOW_REP
*& Form SHOW_INC
FORM show_inc.
FORMAT COLOR COL_TOTAL.
WRITE: / 'Include:', i_inc, AT sy-linsz ''.
FORMAT COLOR COL_BACKGROUND.
LOOP AT i_repsrc.
WRITE: / i_repsrc.
ENDLOOP.
ULINE.
FORMAT COLOR COL_TOTAL.
WRITE: / 'Text elements for include:', i_inc, AT sy-linsz ''.
FORMAT COLOR COL_HEADING.
WRITE: / 'Type',
5 'Key',
20 'Length',
30 'Text', AT sy-linsz ''.
FORMAT COLOR COL_NORMAL.
LOOP AT i_reptxt.
WRITE: / i_reptxt-id,
5 i_reptxt-key,
20(4) i_reptxt-length,
30(80) i_reptxt-entry.
ENDLOOP.
NEW-PAGE.
ENDFORM. " SHOW_INC
*& Form DYNPRO_DOWNLOAD
& -
How to create a module pool program
Dear Guru
I want to know know how to create a module pool program from se80 step by step. I want to know the steps where i will get the four includes like form routines, PAI, PBO, and global data please its very urgent.
Thanks & regards
Saifur Rahamanhi Saifur Rahaman,
goto se80 then click find program,
next u want any name of the program enter as,
Attribute type as find Module pool click it.
next u want any package and save and activate.
program name with create screen with any number then
click layout and u want any object and save , actived.
click flow logic , four types as PBO and PAI and POV, POH.
PBO---> Trigger is before screen.
its applied for display screen and inactive or no display screen only
PAI--->Trigger is after screen
when u want button then its processed.
POV--> Value requested for F4.
POH-->Help requested for F1.
Reward if useful,
S.Suresh. -
How to copy a module pool program
Hi All,
How to copy a module pool program from one system (Organization) to other system(organization) i.e. from one company to other company. My requirement is to how to download & upload module pool program.
Regards,
Rajesh VasudevaHi,
Check the below link
[How to DOWNLOAD a whole module pool program????]
[Download the Module pool program]
Cheers,
Surinder -
Call Module pool program in report
Dear guys,
i have Module pool program ZSDMODPOOL,which is transaction ZSDORD(ADDON SCREEN),Which creates sales order and shipment.
Now i want, one new screen to display before this ZSDORD Screen. In new screen i will have Table control having Internal table displaying in it.
Now, My requirement is how to pass this New screen internal table datas into Module pool program.
or i can put question as how to call module pool program
from other report program or screen.
Pls give me ideas.
ambichanYou can call the transaction using CALL TRANSACTION, or you can setup a DIALOG and call it using CALL DIALOG. Using CALL DIALOG you will be able to pass values. You create a DIALOG via transation SE35.
Regards,
Rich Heilman -
Calling a report from module pool program
Hi all,
I had a requirement where I need to call a report from the module pool program where in when we click REPORT button, it should display the report output in the another screen.
Can we do by calling screen after pushing REPORT button. If so, where we should write that code ( In pbo or pai). Please give me an idea.
Thanking you,
Regards,
Murali Krishna TUse submit syntax.
Press F1 on submit, Donot use return statement with it.
If so, where we should write that code ( In pbo or pai).
Please understand about these two events before doing the requirement. -
I want to go back from mandatory field in module pool program
Hi
i am doing tab strip control in module pool program.i want to go back from the selection field, which is a mandatory, to the main program by pressing f3.but i am nt able to get the output.can anybody pls help me.
AmayikaHi
1. For your BACK or CANCEL button on menu bar, give Button
Ftype "E".
2. In PAI : Write below Modules.
PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.
MODULE BACK AT EXIT-COMMAND.
double click on it.Inside of modules write below code.
MODULE CANCEL INPUT.
IF OK_CODE = 'CANCEL'.
CLEAR OK_CODE.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.
MODULE BACK INPUT.
IF OK_CODE = 'BACK'.
CLEAR: OK_CODE, INPUT1, INPUT2.
LEAVE TO SCREEN 100.
ENDIF.
ENDMODULE. -
How to extract the data from module pool program to Excel Sheet?
Hi Guys
I am having a requirement to transfer the data from Module pool screen to excel sheet directly.
This is an urgent requirement.
So plz reply me with some coding examples.
I will give points for that.This report extract excel file. From that concept you can easily extract data from module pool program also by coding in PAI of the screen.
REPORT ztest1 .
* this report demonstrates how to send some ABAP data to an
* EXCEL sheet using OLE automation.
include ole2incl.
* handles for OLE objects
data: h_excel type ole2_object, " Excel object
h_mapl type ole2_object, " list of workbooks
h_map type ole2_object, " workbook
h_zl type ole2_object, " cell
h_f type ole2_object, " font
h_c type ole2_object. " color
DATA: FILENAME LIKE RLGRAP-FILENAME.
tables: spfli.
data h type i.
* table of flights
data: it_spfli like spfli occurs 10 with header line.
*& Event START-OF-SELECTION
start-of-selection.
* read flights
select * from spfli into table it_spfli.
* display header
uline (61).
write: / sy-vline no-gap,
(3) 'Flg'(001) color col_heading no-gap, sy-vline no-gap,
(4) 'Nr'(002) color col_heading no-gap, sy-vline no-gap,
(20) 'Von'(003) color col_heading no-gap, sy-vline no-gap,
(20) 'Nach'(004) color col_heading no-gap, sy-vline no-gap,
(8) 'Zeit'(005) color col_heading no-gap, sy-vline no-gap.
uline /(61).
* display flights
loop at it_spfli.
write: / sy-vline no-gap,
it_spfli-carrid color col_key no-gap, sy-vline no-gap,
it_spfli-connid color col_normal no-gap, sy-vline no-gap,
it_spfli-cityfrom color col_normal no-gap, sy-vline no-gap,
it_spfli-cityto color col_normal no-gap, sy-vline no-gap,
it_spfli-deptime color col_normal no-gap, sy-vline no-gap.
endloop.
uline /(61).
* tell user what is going on
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
* PERCENTAGE = 0
text = text-007
exceptions
others = 1.
* start Excel
create object h_excel 'EXCEL.APPLICATION'.
* PERFORM ERR_HDL.
set property of h_excel 'Visible' = 1.
* CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'c:kis_excel.xls'
* PERFORM ERR_HDL.
* tell user what is going on
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
* PERCENTAGE = 0
text = text-008
exceptions
others = 1.
* get list of workbooks, initially empty
call method of h_excel 'Workbooks' = h_mapl.
perform err_hdl.
* add a new workbook
call method of h_mapl 'Add' = h_map.
perform err_hdl.
* tell user what is going on
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
* PERCENTAGE = 0
text = text-009
exceptions
others = 1.
* output column headings to active Excel sheet
perform fill_cell using 1 1 1 200 'Carrier id'(001).
perform fill_cell using 1 2 1 200 'Connection id'(002).
perform fill_cell using 1 3 1 200 'City from'(003).
perform fill_cell using 1 4 1 200 'City to'(004).
perform fill_cell using 1 5 1 200 'Dep. Time'(005).
loop at it_spfli.
* copy flights to active EXCEL sheet
h = sy-tabix + 1.
if it_spfli-carrid cs 'AA'.
perform fill_cell using h 1 0 000255000 it_spfli-carrid.
elseif it_spfli-carrid cs 'AZ'.
perform fill_cell using h 1 0 168000000 it_spfli-carrid.
elseif it_spfli-carrid cs 'JL'.
perform fill_cell using h 1 0 168168000 it_spfli-carrid.
elseif it_spfli-carrid cs 'LH'.
perform fill_cell using h 1 0 111111111 it_spfli-carrid.
elseif it_spfli-carrid cs 'SQ'.
perform fill_cell using h 1 0 100100100 it_spfli-carrid.
else.
perform fill_cell using h 1 0 000145000 it_spfli-carrid.
endif.
if it_spfli-connid lt 400.
perform fill_cell using h 2 0 255000255 it_spfli-connid.
elseif it_spfli-connid lt 800.
perform fill_cell using h 2 0 077099088 it_spfli-connid.
else.
perform fill_cell using h 2 0 246156138 it_spfli-connid.
endif.
if it_spfli-cityfrom cp 'S*'.
perform fill_cell using h 3 0 155155155 it_spfli-cityfrom.
elseif it_spfli-cityfrom cp 'N*'.
perform fill_cell using h 3 0 189111222 it_spfli-cityfrom.
else.
perform fill_cell using h 3 0 111230222 it_spfli-cityfrom.
endif.
if it_spfli-cityto cp 'S*'.
perform fill_cell using h 4 0 200200200 it_spfli-cityto.
elseif it_spfli-cityto cp 'N*'.
perform fill_cell using h 4 0 000111222 it_spfli-cityto.
else.
perform fill_cell using h 4 0 130230230 it_spfli-cityto.
endif.
if it_spfli-deptime lt '020000'.
perform fill_cell using h 5 0 145145145 it_spfli-deptime.
elseif it_spfli-deptime lt '120000' .
perform fill_cell using h 5 0 015215205 it_spfli-deptime.
elseif it_spfli-deptime lt '180000' .
perform fill_cell using h 5 0 000215205 it_spfli-deptime.
else.
perform fill_cell using h 5 0 115115105 it_spfli-deptime.
endif.
endloop.
* EXCEL FILENAME
CONCATENATE SY-REPID '_' SY-DATUM+6(2) '_' SY-DATUM+4(2) '_'
SY-DATUM(4) '_' SY-UZEIT '.XLS' INTO FILENAME.
CALL METHOD OF H_MAP 'SAVEAS' EXPORTING #1 = FILENAME.
free object h_excel.
perform err_hdl.
* FORM FILL_CELL *
* sets cell at coordinates i,j to value val boldtype bold *
form fill_cell using i j bold col val.
call method of h_excel 'Cells' = h_zl
exporting
#1 = i
#2 = j.
perform err_hdl.
set property of h_zl 'Value' = val .
perform err_hdl.
get property of h_zl 'Font' = h_f.
perform err_hdl.
set property of h_f 'Bold' = bold .
perform err_hdl.
set property of h_f 'Color' = col.
perform err_hdl.
endform. "FILL_CELL
*& Form ERR_HDL
* outputs OLE error if any *
* --> p1 text
* <-- p2 text
form err_hdl.
if sy-subrc <> 0.
write: / 'OLE-Automation Error:'(010), sy-subrc.
stop.
endif.
endform. " ERR_HDL -
How to get the cursor position from screen in module pool program
Hi,
I am doing the module pool program, I have one table control in one screen.
I have to give functionality to the user that when the user enters first record in the table control and after filling the last field
when he presses enter the cursor will have to come in the starting field of the second record.
I know the logic , but i m bit confused.
Can any body help me to solve this....
thanksHi,
Check this code,
Write it in the PBO
MODULE SET_CURSOR_WERTKONTRAKT.
MODULE SET_CURSOR_WERTKONTRAKT OUTPUT.
PERFORM SET_CURSOR USING 'VBAP-ZWERT'.
ENDMODULE. " SET_CURSOR_WERTKONTRAKT OUTPUT
FORM SET_CURSOR USING US_FELDNAME.
DATA: DA_TFILL LIKE SY-TFILL.
DESCRIBE TABLE IVBAP LINES DA_TFILL.
FCODE 'Create Position':
==> Cursor to the first free line set to make the new position
Can be created directly
IF DA_TFILL EQ 0.
SET CURSOR FIELD US_FELDNAME LINE 1. -> set cursor position
ELSE.
SET CURSOR FIELD US_FELDNAME LINE 2.
ENDIF.
Product proposal actively
Set ==> cursor in the first row
IF DPP_ACTIVE EQ CHARX AND
XVBAP_UMFANG_OPV IS INITIAL.
in the 'target volume' if available
IF KOPGR_MIT_ZMENG CS TVAK-KOPGR.
SET CURSOR FIELD 'VBAP-ZMENG' LINE 1.
EXIT.
ELSE.
Else in the field 'Order quantity'
SET CURSOR FIELD 'RV45A-KWMENG' LINE 1.
EXIT.
ENDIF.
ENDIF.
Hope it helps you,
Regards,
Abhijit G. Borkar -
How to remove the print popup screen from module pool program
Hi,
In my project i am having one module pool program in which 7-8 screens are there.
In the initial screen after entering the equipment number when i am executing the program then after loading second screen
it is showing one screen is coming which is asking to print the content of the page.
I want to remove this screen (printing popup) but i am not able to get the code or setting for it.
Please help me to solve this problem.
Thanks and regards.I think this is more to do with ABAP than EP so, the corresponding sections of forum could prove more helpful on this...
Thanks,
H -
Hi all plz any one send me the doc for Module pool programmiing to learn on my own
thanks & regards
vamsinHi,
This is the material find the attachment.
hi,
Pool table
A database table defined in the ABAP Dictionary whose database instance is assigned to more than one table defined in the ABAP Dictionary. Multiple pool tables are assigned to a table pool in the database. The key fields of a pool table have to be character-type fields. The table pool's primary key consists of two fields: TABNAME for the name of a pool table, and VARKEY for the interdependent contents of the key fields in the corresponding pool table. The non-key fields of the pool table are stored in compressed format in their own column, called VARDATA, of the table pool. The only way to access pool tables is by using Open SQL. Joins are not allowed.
Table Pool
Database table in the database that contains the data of several pool tables.
Cluster Table
Database table defined in the ABAP Dictionary, whose version on the database is not only assigned to one table defined in the ABAP Dictionary. Several cluster tables are assigned to a table cluster in the database. The intersection of the key fields of the cluster tables forms the primary key of the table cluster. The other columns of the cluster tables are stored in compressed form in a single column VARDATA of the table cluster. You can access cluster tables only via Open SQL, and only without using joins.
Table Cluster
Database table in the database that contains the data of several cluster tables.
Note: Never mix up with a database table that has the necessary structure for storing data clusters in database tables and in the shared memory. Those are called INDX-type, with reference to the database table INDX supplied by SAP. Data clusters are groupings of data objects for transient and persistent storage in a selectable storage medium. A data cluster can be processed using the statements IMPORT, EXPORT, and DELETE FROM
P.Naganjana ReddyDAY-4 CONTENTS
SCREEN PAINTER
��
Introduction to Dialog Programming
��
Transactions
Screens (dynpros)
ABAP/4 module pool
Transferring Field Data
Field Attributes
Error Dialogs
Data Consistency
Dynpro
Layout
��
Exercise
TABLE CONTROL
��
Functional scope
��
Programming
��
Attributes
��
EXERCISE
TABSTRIP CONTROLS
��
Defining the Tabstrip Control Area and Tab Titles
��
Assigning a Subscreen Area to a Tab Title
��
Paging in the SAPgui
��
Programming the Flow Logic
��
EXERCISE
P.Naganjana Reddy
SCREEN WITH FIELDS
Introduction to Dialog Programming
Transactions
A transaction is a program that conducts a dialog with the user. In a typical dialog, the
system displays a screen on which the user can enter or request information. As a reaction on
the the user input or request, the program executes the appropriate actions: it branches to the
next screen, displays an output, or changes the database.
Example
A travel agent wants to book a flight. The agent enters the corresponding data on the
screen. The system either confirms the desired request, that is, the agent can book the flight
and the customer travels on the desired day on the reserved seat to the chosen destination,
or the system displays the information that the flight is already booked up.
To fulfil such requirements, a dialog program must offer:
_a user-friendly user interface
_format and consistency checks for the data entered by the user
_easy correction of input errors
_access to data by storing it in the database.
ABAP/4 offers a variety of tools and language elements to meet the requirements stated
above in the dialog programs.
Structure of a Dialog Program
A dialog program consists of the following basic components:
P.Naganjana Reddy
Screens (dynpros)
Each dialog in an SAP system is controlled by dynpros. A dynpro (Dynamic PROgram) consists of a screen and its flow logic and controls exactly one dialog step. The flow logic determines which processing takes place before displaying the screen (PBO-Process Before Output) and after receiving the entries the user made on the screen (PAI-Process After Input).
The screen layout fixed in the Screen Painter determines the positions of input/output
fields, text fields, and graphical elements such as radio buttons and checkboxes. In addition, the Menu Painter allows to store menus, icons, pushbuttons, and function keys in one or more GUI statuses. Dynpros and GUI statuses refer to the ABAP/4 program that control the sequence of the dynpros and GUI statuses at runtime.
ABAP/4 module pool
Each dynpro refers to exactly one ABAP/4 dialog program. Such a dialog program is also called a module pool, since it consists of interactive modules. The flow logic of a dynpro contains calls of modules from the corresponding module pool. Interactive modules called at the PBO event are used to prepare the screen template in accordance to the context, for example by setting field contents or by suppressing fields from the display that are not needed. Interactive modules called at the PAI event are used to check the user input and to trigger appropriate dialog steps, such as the update task.
All dynpros to be called from within one transaction refer to a common module pool. The dynpros of a module pool are numbered. By default, the system stores for each dynpro the dynpro to be displayed next. This dynpro sequence or chain can be linear as well as cyclic. From within a dynpro chain, you can even call another dynpro chain and, after processing it, return to the original chain.
Transferring Field Data
How do I display fields known in an ABAP/4 module on the screen? How do I transfer
user entries on the screen to the module? In contrast to report programming, you cannot write field data to the screen using the WRITE statement. The system instead transfers data by comparing screen field names with ABAP/4 variable names. If both names are the same, it transfers screen field values to ABAP/4 program fields and vice versa. This happens immediately before and immediately after displaying the screen.
Field Attributes
For all screen fields of a dynpro, field attributes are defined in the Screen Painter. If a
field name in the screen corresponds to the name of an ABAP/4 Dictionary field, the system automatically establishes a reference between these two fields. Thus, a large number of field attributes in the dynpro is automatically copied from the ABAP/4 Dictionary. The field attributes together with data element and domain of the assigned Dictionary field form the basis for the standard functions the dynpro executes in a dialog (automatic format check for screen fields, automatic value range check, online help, and so on).
Error Dialogs
Another task of the dynpro processor is to conduct error dialogs. Checking the input data is carried out either automatically using check tables of the ABAP/4 Dictionary or by the ABAP/4 program itself. The dynpro processor includes the error message into the received screen and returns the screen to the user. The message may be context-sensitive, that is, the system replaces placeholders in the message text with current field contents. In addition, only fields whose contents is related to the error and for which a correction may solve the error can accept input.
P.Naganjana Reddy
Data Consistency
To keep data consistent within complex applications, ABAP/4 offers techniques for
optimizing database updates that operate independent of the underlying database and correspond to the special requests of dialog programming. For more information on database updates, see Programming Database Updates.
Dynpro
Each screen contains fields used to display or request information. Fields can be text strings, input or output fields, radio buttons, checkboxes, or pushbuttons. The screen of Transaction TZ10 contains only texts and input/output fields.
An SAP dynpro consists of several components:
Flow logic: Calls of the ABAP/4 modules for a screen.
Screen layout: Positions of the texts, fields, pushbuttons, and so on for a screen.
Screen attributes: Number of the screen, number of the subsequent screen, and others.
Field attributes: Definition of the attributes of the individual fields on a screen.
SCREEN PAINTER
You create and edit all components of a dynpro in the Screen Painter. To call the Screen
Painter, create a dynpro in the Object Browser or double-click on an existing dynpro. The Object Browser then calls the Screen Painter. There, you can enter the flow logic of the new dynpro. By pressing the corresponding pushbutton you can maintain the Screen attributes, branch to the Full Screen-Editor or you choose the pushbutton Field list and change the attributes of fields.
Screen Attributes
From the users point of view, a transaction is a sequence of screens, displayed one after
another. How do I determine this sequence? The transactionss attributes determine the first screen to be displayed. The attributes of the individual dynpros determine which screen to display
P.Naganjana Reddy
after the current screen. You can also set the number of the subsequent screen dynamically from within the ABAP/4 program.
Layout
Choose Fullscreen to go to the screen editor. Here you can determine the layout of the
screen. For Transaction TZ10, the desired fields can be copied from Table SPFLI of the
ABAP/4 Dictionary.
Field Attributes
To display and modify the attributes of the individual fields (input/output fields, input
required, possible entries button, invisible, and so on), use the Field list.The fields Company (SPFLI-CARRID) and Flight number (SPFLI-CONNID) are defined as input/output fields. All other fields are used only for outputting the flight data.
Flow Logic
The flow control code of a dynpro consists of a few statements that syntactically ressemble ABAP/4 statements. However, you cannot use flow contol keywords in ABAP/4 and vice versa. You enter the flow control code in the Screen Painter as one component of the dynpro.
The flow control for the dynpro of Transaction TZ10 looks like this:
PROCESS BEFORE OUTPUT.
MODULE SET_STATUS_0100.
PROCESS AFTER INPUT
MODULE USER_COMMAND_0100.
The PROCESS statement names the event type for the dynpro and the MODULE statement tells the system which ABAP/4 routine to call for this event. In this example, there is only one MODULE for each event PBO and PAI. However, an event can contain several statements with several keywords. (The flow control language contains only few statement types. The most important are MODULE, FIELD, CHAIN, LOOP, CALL SUBSCREEN.) To display information on the statement syntax in the flow logic, choose Utilities Help on... in the flow logic editor. In the subsequent dialog window, mark Flow logickeyword, enter the name of the desired keyword, and press ENTER.
ABAP/4 Module Pool
In the Object Browser, the module pool code belongs to one of the following categories:
Global fields: data declarations that can be used by all modules in the module pool
PBO modules: modules that are called before displaying the screen
PAI modules: modules that are called in response to the user input
Subroutines: subroutines that can be called from any position within the module pool.
You use the ABAP/4 Dictionary to store frequently used data declarations centrally. Objects defined in the Dictionary are known throughout the system. Active Dictionary definitions can be accessed by any application. Data defined in the Dictionary can be included in a screen or used by an ABAP/4 program. You declare global data in the TOP module of the transaction, using the TABLES, STRUCTURE, LIKE statements and others. Transaction TZ10 accesses the Dictionary definition of Table SPFLI to provide the desired flight data display. If the TOP include contains the TABLES: SPFLI declaration, all modules in the module pool can access the table fields of
P.Naganjana Reddy
Table SPFLI. The PAI module USER_COMMAND_0100 checks which pushbutton the user activated (CASE OK_CODE). The Display pushbutton in Transaction TZ10 has the function code
SHOW. (For more information on handling function codes, see Processing User Requests). The program then tries to select those records in the SPFLI database that correspond to the data the user entered. The WHERE condition determines matching records by comparing the fields SPFLI-CARRID and SPFLI-CONNID with the database key fields CARRID and CONNID. As soon as a matching record is found, the database transfers all accompanying SPFLI fields to the program table.
When the screen is displayed again, the complete information appears in the output fields
of the screen. The system automatically displays these fields, since the ABAP/4 field names SPFLI-CARRID and SPFLI-CONNID are the same as the screen field names.
In the PBO module STATUS_0100 of Transaction TZ10, the screen 100 receives a GUI status (using SET PF-STATUS) and a GUI title (using SET TITLEBAR):
SET PF-STATUS TZ0100.
SET TITLEBAR 100.
A GUI status is a subset of the interface elements used for a certain screen. The status
Comprise those elements that are currently needed by the transaction. The GUI status for a transaction may be composed of the following elements:
The GUI title is the screen title displayed in the title bar of the window. In contrast to the
GUI status that can be used for several screens, a GUI title belongs to one screen.To create and edit GUI status and GUI title, you use the Menu Painter. To start the Menu Painter, create a GUI status or GUI title in an object list in the Object Browser (or double-click on an existing status or title).
Interaction between Dynpro and ABAP/4 Module Pool
In its most simple form, a transaction is a collection of screens and ABAP/4 routines, controlled and executed by a dialog processor. The dialog processor processes screen after screen, thereby triggering the appropriate ABAP/4 processing for each screen. For each screen, the system executes the flow logic that contains the corresponding ABAP/4 processing. The control passes from screen flow logic to ABAP/4 code and back.
The sequence of events for Transaction TZ10, for example, looks like this:
P.Naganjana Reddy
1.
In the PBO event, the statement MODULE STATUS_0100 passes control to the corresponding ABAP/4 module.In the ABAP/4 module pool, the screen to be displayed receives a menu interface.
2.
After processing the module STATUS_0100, control returns to the flow logic.For the PBO event, no further processing is required. The system display the screen and receives entries from the user. The entries are:
the values for the fields Company and Flight number.
the four-character function code that tells which pushbutton the user activated.
3.
The user input triggers the PAI event. The first PAI statement passes control to the ABAP/4 module USER_COMMAND_0100.Module USER_COMMAND_0100 processes the requests of the user.
4. After processing MODULE USER_COMMAND_0100, control returns to PAI. This terminates the dialog.
P.Naganjana Reddy
EXERCISE
Goto to ABAP editor, and enter the program name ZKA_SCREEN.
Declare the tables and call the screen.
In order to create the object, double click on the screen no, you will automatically guided to the screen painter SE51.
P.Naganjana Reddy
Enter the short description and click on the FLOW LOGIC tab.
Uncomment the flow logic, both PAI and PBO.
P.Naganjana Reddy
Now click on the LAYOUT button.
Click on the DICTIONARY/PROGRAM FIELDS WINDOW F6 button. Type in the table name and click on GET FROM DIC button and select the fields required for the screen and click on the COPY button.
P.Naganjana Reddy
Now drag and place the INPUT/OUTPUT fields box on the screen.
Now click on the TEXT FIELD button and place in the screen and stretch the box for the size required. Now double click on the box, U will get the attributes screen. Enter the name and Text for the field.
P.Naganjana Reddy
Now we need to place the bush buttons. So Click on the push button on the left side and place it on the screen. Double click on it, u will get the attributes screen. Enter the name, text and the icon required and mainly the FCTCODE. It is the one which links the screen painter with the code.
Once everything is set up, SAVE, CHECK and ACTIVATE the screen.
P.Naganjana Reddy
Click on the BACK button. U will be guided to the FLOW LOGIC screen.
Double click on PAI, Because for the screen painter with the fields, Process After the Input is done and so u will guided to the Editor screen.
P.Naganjana Reddy
Now we need to set the System-Uses commands which links the code to the Editor.
So the conditions would be:
IF SY-UCOMM = 'DISPLAY'.
SELECT SINGLE * FROM ZKA_CENTER WHERE CENTERNO = ZKA_CENTER-CENTERNO.
ELSEIF SY-UCOMM ='SAVE'.
INSERT ZKA_CENTER.
ELSEIF SY-UCOMM = 'REFRESH'.
CLEAR ZKA_CENTER.
ELSEIF SY-UCOMM = 'GOTO'.
LEAVE TO SCREEN '0002'.
ELSEIF SY-UCOMM = 'EXIT'.
LEAVE PROGRAM.
ENDIF.
If u create many screens and need links between the screens then u can use GOTO to guide to the other screen.
SAVE, CHECK and ACTIVATE and click on TEST.
P.Naganjana Reddy
Now click on the DISPLAY button.
Also verify with SAVE, REFRESH and EXIT buttons. Thus the screen painter.
P.Naganjana Reddy
TABLE CONTROL
Basic form
CONTROLS ctrl TYPE TABLEVIEW USING SCREEN scr.
Effect
Creates a table control ctrl of the type TABLEVIEW . The reference screen for the initialization is the screen scr . Area of use The table control (referred to here as TC ) facilitates the display and entry of one-line, tabular data in dialog transactions. The functional scope has been defined so that you can implement many typical set operations usually handled by an elementary STEP-LOOP with the standard methods of a TC . Functional scope
Resizeable table grid for displaying and editing data.
Column width and column position modifiable by user and by program.
Storing and loading of user-specific column layout.
Selection column for line selection with color selection display.
Variable column headers as pushbuttons for column selection.
Simple selection, multiple selection, Select/deselect all.
Scrolling functions (horizontal and vertical) via scroll bar.
Fixing of any number of key columns.
Setting attributes for each cell at runtime.
Programming The data exchange between the application and the SAPgui is achieved with a STEP-LOOP , i.e. an ABAP/4 module is called to transfer data for each page.
Example
Processing without an internal table
PROCESS BEFORE OUTPUT.
LOOP WITH CONTROL ctrl.
MODULE ctrl_pbo.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP WITH CONTROL ctrl.
MODULE ctrl_pai.
ENDLOOP.
In this case, the module ctrl_pbo OUTPUT is called once for each output line before the screen is displayed, in order to fill the output fields. After the user has entered data on the screen, the module ctrl_pai INPUT is executed to check the input and copy the new contents.
Example
Processing with an internal table
P.Naganjana Reddy
PROCESS BEFORE OUTPUT.
LOOP AT itab WITH CONTROL ctrl CURSOR ctrl-CURRENT_LINE.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP AT itab WITH CONTROL ctrl.
MODULE ctrl_pai.
ENDLOOP.
Here, the system fills the output fields before displaying the screen by reading the internal table itab. When the user has entered data, the module ctrl_pai INPUT must be executed to check the input and to refresh the contents of the internal table. Vertical scrolling with the scroll bar is followed by the event PAI for the displayed page. Then, cntl-TOP_LINE is increased and PBO is processed for the next page. Program-driven scrolling and the most of the functionality described above is achieved by manipulating the control attributes.
Attributes The CONTROLS statement creates a complex data object of the type CXTAB_CONTROL with the name of the control. You maintain the initial values in the Screen Painter and assign the screen with the initial values for a control using the addition USING SCREEN . Initialization is achieved automatically in the "1st access to the control" (setting or reading values). You can use the customizing button (in the top right corner) to save the current setting (column widths and column positions) and use it as the initial value for the next call. All the initial values can be overwritten by the program using the MOVE ... TO TC attributes statement.
EXERCISE
Enter the Editor with SE38.
Declare the Tables and an internal table.
Then use the CONTROLS statement to have the controls for the Table control.
P.Naganjana Reddy
CONTROLS: <var> TYPE TABLEVIEW USING SCREEN '<screenno>'.
Now call the screen with the CALL SCREEN statement. Click on the screen to draw the table.
Fill in the attributes screen with the short description and click on the LAYOUT button.
Now click on the TABLE CONTROL button and draw the table to the size required. Double click on the table and enter the Attributes giving the Table-control name.
And select the check boxes for the vertical & horizontal resizing and separators.
Click on the DICTIONARY/PROGRAM FIELDS WINDOW F6 button. Type in the table name and click on GET FROM PROGRAM button and select the fields required for the screen and click on the COPY button.
P.Naganjana Reddy
Enter the header with the TEXT FIELDS button by double clicking on the TEXT FIELD and fill in the ATTRIBUTES button with the name and text.
P.Naganjana Reddy
SAVE, CHECK & ACTIVATE.
Click the BACK button and go the FLOW LOGIC screen.
P.Naganjana Reddy
REPORT ZKA_TC .
TABLES: ZKA_EMP.
DATA: ITAB LIKE ZKA_EMP OCCURS 0 WITH HEADER LINE.
CONTROLS: TC TYPE TABLEVIEW USING SCREEN '0001'.
CALL SCREEN '0001'.
*& Module STATUS_0001 OUTPUT
text
MODULE STATUS_0001 OUTPUT.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
SELECT * FROM ZKA_EMP INTO TABLE ITAB.
ENDMODULE. " STATUS_0001 OUTPUT
*& Module USER_COMMAND_0001 INPUT
P.Naganjana Reddy
text
MODULE USER_COMMAND_0001 INPUT.
IF SY-UCOMM = 'EXIT'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE. " USER_COMMAND_0001 INPUT
P.Naganjana Reddy
TABSTRIP CONTROLS
A tabstrip control is a screen object consisting of two or more pages. Each tab page consists of a tab title and a page area. If the area occupied by the tabstrip control is too narrow to display all of the tab titles, a scrollbar appears, allowing you to reach the titles that are not displayed. There is also a pushbutton that allows you to display a list of all tab titles.
Tabstrip controls allow you to place a series of screens belonging to an application on a single screen, and to navigate between them easily. The recommended uses and ergonomic considerations for tabstrip controls are described in the Tabstrip Control section of the SAP Style Guide.
From a technical point of view, a tab page is a subscreen with a pushbutton assigned to it, which is displayed as the tab title.
The tabstrip control is the set of all the tab pages. Tabstrip controls are therefore subject to the same restrictions as subscreens. In particular, you cannot change the GUI status
P.Naganjana Reddy
when you switch between pages in the tabstrip control. However, they are fully integrated into the screen environment, so present no problems with batch input.
To use a tabstrip control on a screen, you must be using a SAPgui with Release 4.0 or higher, and its operating system must be Motif, Windows 95, MacOS, or Windows NT with version 3.51 or higher.
When you create a tabstrip control, you must:
Define the tab area on a screen and the tab titles.
Assign a subscreen area to each tab title.
Program the screen flow logic.
Program the ABAP processing logic.
You must then decide whether you want to page through the tabstrip control at the SAPgui or on the application server. In the first case, each tab page has its own subscreen. In the second, there is a single subscreen area that is shared by all tab pages.
Defining the Tabstrip Control Area and Tab Titles
You define both the tabstrip area and the tab titles in the screen layout. The tabstrip area has a unique name and a position, length, and height. You can also specify whether the tabstrip area can be resized vertically or horizontally when the user resizes the window. If the area supports resizing, you can specify a minimum size for it.
When you define a tabstrip area, it already has two tab titles. Tab titles are technically exactly the same as pushbuttons. To create additional tab titles, simple create pushbuttons in the row containing the tab titles. Tab titles have the same attributes as pushbuttons, that is, each has a name, a text, and a function code. You can also use icons and dynamic texts with tab titles.
Assigning a Subscreen Area to a Tab Title
You must assign a subscreen area to each tab title. There are two ways of doing this:
Paging in the SAPgui
You need to assign a separate subscreen area to each tab title, and define the function codes of the tab titles with type P (local GUI function). In the screen flow logic, you call all the subscreens in the PBO event. This means that all of the tab pages reside locally on the SAPgui.
When the user chooses a tab title, paging takes place within the SAPgui. In this respect, the tabstrip control behaves like a single screen. In particular, the PAI event is not triggered when the user chooses a tab title, and no data is transported. While this improves the performance of your tabstrip control, it also has the negative effect that when the user does trigger the PAI event, all of the input checks for all of the subscreens are performed. This means that when the user is working on one tab page, the input checks may jump to an unfilled mandatory field on another page.
P.Naganjana Reddy
Local paging at the SAPgui is therefore most appropriate for screens that display data rather than for input screens.
Paging on the Application Server
One subscreen area is shared by all tab titles and called in the PBO event. You define the function codes of the individual tab titles without a special function type. When the user chooses a tab page, the PAI event is triggered, and you must include a module in your flow logic that activates the appropriate tab page and assigns the correct subscreen to the subscreen area.
Since the PAI event is triggered each time the user chooses a tab title, this method is less economical for the application server, but the input checks that are performed only affect the current tab page.
Procedure in Either Case
You create the subscreen areas within the tabstrip area. You assign the subscreen areas to one or more tab titles in the Screen Painter by selecting one or more titles. You can also assign a subscreen area to a tab title in the tab title attributes by entering the name of the subscreen area in the Reference field attribute.
The procedure for the alphanumeric Screen Painter is described under Creating Tabstrip Controls.
If you are paging at the SAPgui, create a subscreen area for each tab title. If you are paging at the application server, select all tab titles and create a single subscreen area. The subscreen areas may not cover the top line of the tab area. However, within a tab area, more than one subscreen area can overlap.
Programming the Flow Logic
In the flow logic, all you have to do by hand is include the correct subscreens. The screen flow and data transport to the ABAP program is the same as for normal subscreens. There are two ways of programming the screen flow logic, depending on how you have decided to page through the tabstrip control.
Paging in the SAPgui
When you page in the SAPgui, you must include a subscreen for each subscreen area:
PROCESS BEFORE OUTPUT. ... CALL SUBSCREEN: <area1> INCLUDING [<prog 1>] <dynp 1>, <area2> INCLUDING [<prog 2>] <dynp 2>, <area3> INCLUDING [<prog 3>] <dynp 3>, ... ...
P.Naganjana Reddy
PROCESS AFTER INPUT. ... CALL SUBSCREEN: <area1>, <area2>, <area3>, ... ...
Paging on the Application Server
When you page on the application server, you only have to include a subscreen for the one subscreen area:
PROCESS BEFORE OUTPUT. ... CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>. ...
PROCESS AFTER INPUT. ... CALL SUBSCREEN <area>. ...
Handling in the ABAP Program
Before you can use a tabstrip control in your ABAP program, you must create a control for each control in the declaration part of your program using the following statement:
CONTROLS <ctrl> TYPE TABSTRIP.
where <ctrl> is the name of the tabstrip area on a screen in the ABAP program. The control allows the ABAP program to work with the tabstrip control. The statement declares a structure with the name <ctrl> . The only component of this structure that you need in your program is called ACTIVETAB.
Use in the PBO event
Before the screen is displayed, you use the control to set the tab page that is currently active. To do this, assign the function code of the corresponding tab title to the component ACTIVETAB:
<ctrl>-ACTIVETAB = <fcode>.
When you page at the SAPgui, you only need to do this once before the screen is displayed. This initializes the tabstrip control. The default active tab page is the first page. After this, the page activated when the user chooses a tab title is set within SAPgui.
When you page on the application server, you must assign the active page both before the screen is displayed for the first time, and each time the user pages. At the same time, you must set the required subscreen screen.
P.Naganjana Reddy
You can suppress a tab page dynamically by setting the ACTIVE field of table SCREEN to 0 for the corresponding tab title.
Use in the PAI event
In the PAI event, ACTIVETAB contains the function code of the last active tab title on the screen. When you page in the SAPgui, this allows you to find out the page that the user can currently see. When you page at the application server, the active tab page is controlled by the ABAP program anyway. The OK_CODE field behaves differently according to the paging method:
Paging in the SAPgui
When you page in the SAPgui, the PAI event is not triggered when the user chooses a tab title, and the OK_CODE field is not filled. The OK_CODE field is only filled by user actions in the GUI status or when the user chooses a pushbutton either outside the tabstrip control or on one of the subscreens.
Paging on the application server
If you are paging at the application server, the PAI event is triggered when the user chooses a tab title, and the OK_CODE field is filled with the corresponding function code. To page through the tabstrip control, you must assign the function code to the ACTIVETAB component of the control:
<ctrl>-ACTIVETAB = <ok_code>.
This statement overwrites the function code of the last active tab page with that of the new tab title. At the same time, you must ensure that the correct subscreen is inserted in the subscreen area. Otherwise, tabstrip controls are handled like normal subscrens in ABAP programs, that is, the ABAP program of a subscreen screen must contain the dialog modules called from the flow logic of the subscreen.
P.Naganjana Reddy
EXERCISE
Goto SE38. Enter the tabstrip program name Eg: ZKA_TABSTRIP and click on the create button.
First we need to declare the tables.
Then use the controls for the tabstrip.
Syntax: <ctrl-name> TYPE TASTRIP.
Now call the screen. Using CALL SCREEN statement.
Double click on the screen no to draw the screen for tabstrip control.
Now uncomment the FLOW LOGIC and click on the LAYOUT.
P.Naganjana Reddy
The flow logic for the tabstrip would be as follows.
PBO:
The PBO is initiated so that the subscreen for the corresponding tab can be maintained.
Syntax:
CALL SUBSCREEEN <sub-screen name> INCLUDING SY-REPID <screen-var>.
PAI:
When the tab is clicked, the corresponding subscren should open
Syntax:
CALL SUBSCREEN <subscreen>.
P.Naganjana Reddy
DRAWING THE TABSTRIP CONTROL:
Click on the TABSTRIP button and place it on the screen for the required size.
Double click on the control and give the name for the tabstrip control in the ATTRIBUTES screen.
Now double click on the tab and fill in the attributes screen for the name and the text.
Also draw the subscreen in one of the tab and refer the same subscreen in the rest of the tabs.
P.Naganjana Reddy
Now in the sub-screens, we need to get the screen for the tabs.
So call an other screen and draw with fields and pushbuttons to perform actions very similar like SCREEN WITH FIELDS (refer screen painter).
Enter the short description and click on the FLOW LOGIC tab.
P.Naganjana Reddy
Uncomment the flow logic, both PAI and PBO.
Now click on the LAYOUT button.
Naganjana Reddy.P
Click on the DICTIONARY/PROGRAM FIELDS WINDOW F6 button. Type in the table name and click on GET FROM DIC button and select the fields required for the screen and click on the COPY button.
Now drag and place the INPUT/OUTPUT fields box on the screen.
P.Naganjana Reddy
Now click on the TEXT FIELD button and place in the screen and stretch the box for the size required. Now double click on the box, U will get the attributes screen. Enter the name and Text for the field.
Now we need to place the bush buttons. So Click on the push button on the left side and place it on the screen. Double click on it, u will get the attributes screen. Enter the name, text and the icon required and mainly the FCTCODE. It is the one which links the screen painter with the code.
P.Naganjana Reddy
Once everything is set up, SAVE, CHECK and ACTIVATE the screen.
P.Naganjana Reddy
Click on the BACK button. U will be guided to the FLOW LOGIC screen.
Double click on PAI, Because for the screen painter with the fields, Process After the Input is done and so u will guided to the Editor screen.
P.Naganjana Reddy
Now we need to set the System-Uses commands which links the code to the Editor.
So the conditions would be:
IF SY-UCOMM = 'DISPLAY'.
SELECT SINGLE * FROM ZKA_CENTER WHERE CENTERNO = ZKA_CENTER-CENTERNO.
ELSEIF SY-UCOMM ='SAVE'.
INSERT ZKA_CENTER.
ELSEIF SY-UCOMM = 'REFRESH'.
CLEAR ZKA_CENTER.
ELSEIF SY-UCOMM = 'GOTO'.
LEAVE TO SCREEN '0002'.
ELSEIF SY-UCOMM = 'EXIT'.
LEAVE PROGRAM.
ENDIF.
The same procedure for the company table as well will lead the screen in the below manner.
P.Naganjana Reddy
Summary:
REPORT ZKA_TABSTRIP .
TABLES: ZKA_EMP,ZKA_COM.
CONTROLS: TS TYPE TABSTRIP..
DATA: SCREENNO(4) TYPE N.
CALL SCREEN '0003'.
*& Module STATUS_0001 OUTPUT
text
MODULE STATUS_0001 OUTPUT.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
IF SCREENNO IS INITIAL.
TS-ACTIVETAB = 'EMP'.
SCREENNO = '0002'.
ENDIF.
ENDMODULE. " STATUS_0001 OUTPUT
*& Module USER_COMMAND_0001 INPUT
text
MODULE USER_COMMAND_0001 INPUT.
IF SY-UCOMM = 'EMP'.
TS-ACTIVETAB = 'EMP'.
SCREENNO = '0002'.
ELSEIF SY-UCOMM = 'COM'.
TS-ACTIVETAB = 'COM'.
SCREENNO = '0003'.
ENDIF.
ENDMODULE. " USER_COMMAND_0001 INPUT
*& Module USER_COMMAND_0002 INPUT
text
MODULE USER_COMMAND_0002 INPUT.
IF SY-UCOMM = 'DISPLAY'.
SELECT SINGLE * FROM ZKA_EMP WHERE EMPNO = ZKA_EMP-EMPNO.
ELSEIF SY-UCOMM = 'SAVE'.
INSERT ZKA_EMP.
ELSEIF SY-UCOMM = 'REFRESH'.
CLEAR ZKA_EMP.
ELSEIF SY-UCOMM = 'EXIT'.
LEAVE PROGRAM.
ENDIF.
P.Naganjana Reddy
Maybe you are looking for
-
IPod Touch 1st generation-texting
I just purchased a refurbished iPod Touch 1st generation for my 10 year old for Christmas. Is there an app she can use on it to text for free with wifi?
-
Safari crashes when using the dialog box to import/save files, in facebook under windows 7
I've encountered the following errors in some PCs, running Safari 5.1.7 in MS-Windows 7 Pro: Safari crashes when using the dialog box to import/save files. One doesn't have to actually upload or download any file, the mere invocation of the relevant
-
Import/Export Job in management portal.
I am trying to create an Import/Export job in portal, I read this document: http://azure.microsoft.com/en-us/documentation/articles/storage-import-export-service/ and I am unable to do this, document says download import/export tool, but I am unable
-
IMessages delayed to iPhone only
When I am sending iMessages from my phone number on my iPhone they send fine. But when I receive a message I hear my iPad ring, then sometimes almost 29 minutes lat my iPhone finally notifies me of the new message. That's not the weird part though. I
-
Are there any patterns/Best Practises documentation regarding JSF ?