Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

smartform issue

Former Member
0 Likes
1,311

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

Parameters: S_MATE like mseg-matnr obligatory.

SELECT-OPTIONS: S_AUDAT1 FOR mkpf-budat obligatory.

s_audat = s_audat1.

SELECTION-SCREEN END OF BLOCK b1.

this is my selection screen code.....

in output i want like this

"ITEM REGISTER for <material description> from <lower date> to <Upper date>"

i am getting like this:

ITEM REGISTER for <material description> from <lowerdate>

how can i get my desired result...

while fetching the data i wrote the code like this

ITEM REGISTER for &wa_it_item-maktx& from &wa_it_item-budat&

what changes i should do....pls help me

12 REPLIES 12
Read only

Former Member
0 Likes
1,258

Hi,

While calling smartform function module from your driver

program, you should pass some parameter to smartform

e.g. s_audat1-low, s_audat1-high, or text which you can use in your smartform to display from date and to date.

prior to this you should make provision in your smartform using import parameter.

Regards,

Vishal

Read only

0 Likes
1,258

vishal...thanx...

what u said is correct...i am a fresher...could u pls tell me how can i do that in driver program...i mean

how can i split s_audat as s_audat-low and s_audat-high

Read only

Former Member
0 Likes
1,258

Hi,

You have to pass select option su_audit as a export parameter while calling smart form .

There in smart form you to define this parameter in Form interface as a assiciated type of table .

Now, use it

ITEM REGISTER for from &su_audit-low& to &su_audit-high&.

Thanks,

Smita

Read only

Former Member
0 Likes
1,258

Hi ,

You dont need to split this select option.

its internally saved as a table which contain lower and higher value.

You can directly access that.

Thanks,

Smita

Read only

0 Likes
1,258

Hi Smita

i thank u that u try to help me...

but i am getting an error like this...

The data object "S_AUDAT" has no structure and therefore no component called "LOW".

why i am getting like this?

what should i do now friend...

BR,

Rajkamal

Read only

0 Likes
1,258

friends...help pls...

Read only

0 Likes
1,258

Hi Rajkamal,

I see that you are using S_AUDIT1 as your select option name and not S_AUDIT. so instead of S_AUDIT try using

S_AUDIT1-LOW. I hope this should solve your issue.

Best Regards,

Ram.

Read only

0 Likes
1,258

Ram,

it didnt solve the problem...

it says the same error....The data object "S_AUDAT1" has no structure and therefore no component called "HIGH". .

anything else can i try

Read only

Former Member
0 Likes
1,258

Hi,

In your function module under export parameters take two fields like s_audat1-low and s_audat1-high.

In source code take statement ranges : r_audit for mkpf-budat.

then make

r_audit-low = s_audat1-low,

r_audit-high = s_audat1-high,

r_audit-sign = 'I'.

r_audit-option ='BT'.

append r_audit.

now select based on r_audit , in this way u can pass select options to function module...

Hope this is helpful..

Rgds.,

subash

Read only

0 Likes
1,258

Subash,

should i create a structure for r_audat....

i am getting error like r_audat is not having a structure so there is no component like low...

pls clarify it to me

Edited by: Rajkamal Ayamperumal on Oct 24, 2008 12:17 PM

Read only

Former Member
0 Likes
1,258

hi,

No man befor r_audit i am declaring it as ranges.

Ranges is similar like a selopt structure... so no need to decalre seperate structure for that.

If u still do not understand then declare in the same way, check in debugging what that

r_audit holds u can see four fields low high sign option..

Rgds.,

subash

Read only

0 Likes
1,258

friends,

i tried what suggested...still i am getting errors...can u pls give me the codings...

I'll give u my program...

REPORT ITEM_REGISTER.

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

*Tables Decleration

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

TABLES : makt,lfa1, mseg, mkpf, rbkp.

DATA : FNAME TYPE RS38L_FNAM.

*data: r_audat like mkpf-budat.

DATA : s_audat LIKE mkpf-budat.

DATA: DATE1 LIKE mkpf-budat.

DATA: DATE2 LIKE mkpf-budat.

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

Parameters: S_MATE like mseg-matnr obligatory.

SELECT-OPTIONS: S_AUDAT1 FOR mkpf-budat obligatory.

s_audat = s_audat1.

*ranges : r_audat for mkpf-budat.

*r_audat-low = s_audat1-low.

*r_audat-high = s_audat1-high.

*r_audat-sign = 'I'.

*r_audat-option ='BT'.

*append r_audat.

SELECTION-SCREEN END OF BLOCK b1.

data : itab LIKE zitab OCCURS 0 WITH HEADER LINE.

Data : it_item like zitem1 OCCURS 0 WITH HEADER LINE.

data : it_makt LIKe makt occurs 0 WITH HEADER LINE.

data : it_mseg like mseg occurs 0 WITH HEADER LINE.

data : it_mkpf like mkpf occurs 0 WITH HEADER LINE,

it_lfa1 like lfa1 OCCURS 0 WITH HEADER LINE.

Perform intialization.

perform fill_it_item.

perform call_form.

&----


*& Form INTIALIZATION

&----


FORM INTIALIZATION .

clear it_item.

clear it_makt.

clear it_mseg.

clear it_mkpf.

clear it_lfa1.

clear it_item[].

clear it_makt[].

clear it_mseg[].

clear it_mkpf[].

clear it_lfa1[].

ENDFORM. " INTIALIZATION

&----


*& Form FILL_IT_ITEM

&----


FORM FILL_IT_ITEM .

select * from mseg

into table it_mseg

where matnr = s_mate.

LOOP at it_mseg.

select * from mkpf into TABLE it_mkpf

where budat in s_audat1

  • where budat in r_audat

and mblnr = it_mseg-mblnr.

LOOP AT IT_MKPF.

IF DATE1 = '00000000'.

At FIRST.

DATE1 = iT_MKPF-budat.

ENDAT.

ENDIF.

AT LAST.

DATE2 = IT_MKPF-budat.

ENDAT.

ENDLOOP.

LOOP at it_mkpf.

itab-budat = it_mkpf-budat.

itab-mblnr = it_mkpf-mblnr.

append itab.

ENDLOOP.

Endloop.

loop at itab.

select * from mseg into table it_mseg where mblnr = itab-mblnr and matnr = s_mate.

Loop at it_mseg.

it_item-matnr = it_mseg-matnr.

it_item-dmbtr = it_mseg-dmbtr.

it_item-mblnr = it_mseg-mblnr.

it_item-bwart = it_mseg-bwart.

it_item-budat = itab-budat.

it_item-erfmg = it_mseg-erfmg.

it_item-lifnr = it_mseg-lifnr.

it_item-rate = it_item-dmbtr / it_item-erfmg.

append it_item.

*DELETE ADJACENT DUPLICATES FROM It_item COMPARING ALL FIELDS.

SORT It_item BY budat ASCENDING.

DELETE ADJACENT DUPLICATES FROM It_item COMPARING ALL FIELDS.

Endloop.

Endloop.

loop at it_item.

Select single maktx

from makt

into it_item-maktx

where matnr = it_item-matnr.

modify it_item.

Endloop.

loop at it_item.

Select single name1

from lfa1

into it_item-name1

where lifnr = it_item-lifnr.

modify it_item.

  • DELETE ADJACENT DUPLICATES FROM It_item COMPARING ALL FIELDS.

Endloop.

LOOP AT IT_ITEM.

*delete it_item where bwart <> '101''501''122''161''201''261'.

    • delete it_item where bwart <> '501'.

    • delete it_item where bwart <> '122'.

    • delete it_item where bwart <> '161'.

    • delete it_item where bwart <> '201'.

    • delete it_item where bwart <> '261'.

  • "'501''122''161''201''261'.

DELETE it_item WHERE bwart NE '101'

AND bwart NE '501'

AND bwart NE '122'

AND bwart NE '161'

AND bwart NE '201'

AND bwart NE '261'.

MODIFY it_item.

*DELETE ADJACENT DUPLICATES FROM It_item COMPARING ALL FIELDS.

ENDLOOP.

ENDFORM. " FILL_IT_ITEM

*Loop at it_item.

*

  • if it_item-bwart = '101' or '501'.

  • it_item-new1 = '001'.

  • else.

  • it_item-new1 = '002'.

  • ENDIF.

*modify it_item.

*SORT It_item BY new1 ASCENDING.

*ENDLOOP.

&----


*& Form CALL_FORM

&----


FORM CALL_FORM .

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZITEM_REGISTER' "sfname

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

FM_NAME = FNAME

EXCEPTIONS

NO_FORM = 1

NO_FUNCTION_MODULE = 2

OTHERS = 3

.

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 '/1BCDWB/SF00000022'

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

  • CONTROL_PARAMETERS =

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

DATE1 = DATE1

DATE2 = DATE2

*R_AUDAT = R_AUDAT

*S_AUDAT1-LOW = S_AUDAT1-LOW

*S_AUDAT1-HIGH = S_AUDAT1-HIGH

S_AUDAT = S_AUDAT

S_MATE = S_MATE

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

TABLES

IT_ITEM = IT_ITEM

ITAB = ITAB

  • 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.

clear it_item.

clear it_item[].

ENDFORM. " CALL_FORM

subash...pls have a look at it...