Skip to Content
0
Former Member
May 31, 2008 at 05:24 AM

selection screen field value capturing

167 Views

Hi,

I have developed a report for displaying amendment changes in a purchse order. The input are purchase order

and plant. Now they have asked for an additional input of version field, which should also have F4 field-value help.

For version field, default there is no F4 key. So, i have written code like after entering the PO number when we press the enter key, for the corresponding PO, it brings the version no in input field. But my problem is it is displaying the values for version field, but when i select some value it is not getting updated in selection-screen version field. I have attached my code below... please help me

in the below code my proble is only between

AT SELECTION-SCREEN on value-request for P_REVNO.

and

start-of-selection event...

kindly help me...

TABLES : ekko,

ekpo,

cdhdr,

cdpos,

MEPO1325,

t001,

t166c,

t166t,

adrc,

komp, " net rate of header

konv, " net value of purchase order

zammendpodet.

TYPES : BEGIN OF ts_cdpos,

ebeln TYPE ekbe-ebeln,

ebelp TYPE ekbe-ebelp,

matnr type ekpo-matnr,

maktx type makt-maktx,

prdat type ekpo-prdat,

belnr TYPE ekbe-belnr,

budat TYPE ekbe-budat,

tkey(70),

txz01 TYPE ekpo-txz01,

ctxnr TYPE t166c-ctxnr,

desp(20) type C,

MEINS LIKE MARA-MEINS,

chtxt TYPE t166t-chtxt.

INCLUDE STRUCTURE cdpos.

TYPES : END OF ts_cdpos.

data : begin of it_makt occurs 0,

matnr like makt-matnr,

maktx like makt-maktx,

end of it_makt.

data : begin of it_maRA occurs 0,

matnr like maRA-matnr,

mEINS like maRA-mEINS,

end of it_maRA.

*Internal table declartion

DATA : it_erev TYPE TABLE OF erev WITH HEADER LINE,

it_ekko1 type table of ekko with header line,

it_konv2 type table of konv with header line,

it_ekpo TYPE TABLE OF ekpo WITH HEADER LINE,

it_ekpo1 TYPE TABLE OF ekpo WITH HEADER LINE,

it_cdhdr TYPE TABLE OF cdhdr WITH HEADER LINE,

it_t166c TYPE TABLE OF t166c WITH HEADER LINE,

it_ekbe TYPE TABLE OF ekbe WITH HEADER LINE,

IT_AMMEND TYPE TABLE OF ZAMMENDPODET WITH HEADER LINE,

IT_AMMEND1 TYPE TABLE OF ZAMMENDPODET WITH HEADER LINE,

it_komp TYPE TABLE OF KOMP WITH HEADER LINE,

it_konv type table of konv with header line,

it_konv1 type table of konv with header line,

it_cdpos TYPE TABLE OF ts_cdpos WITH HEADER LINE.

data : BEGIN OF it_erev1 occurs 0,

revno TYPE erev-revno.

data : end of it_erev1.

data : begin of it_cdpos1 occurs 0.

include structure cdpos.

data : ebeln like ekko-ebeln,

item like ekpo-ebelp,

aedat like ekpo-aedat,

matnr like ekpo-matnr,

txz01 like ekpo-txz01,

desp(20) type C,

MEINS LIKE MARA-MEINS,

item1 like ekpo-netpr.

data : end of it_cdpos1.

types : dy_temp TYPE lips-lgort.

DATA : dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE, dy_value TYPE dy_temp.

DATA: progname TYPE sy-repid,

dynnum TYPE sy-dynnr,

dynpro_values TYPE TABLE OF dynpread,

field_value LIKE LINE OF dynpro_values.

*Work variable declaration

DATA : v_revno TYPE erev-revno,

revno1 type zammendpodet-revno,

w_version TYPE erev-revno,

w_erdat TYPE erev-erdat,

w_eruhr TYPE erev-eruhr,

wv_eruhr TYPE erev-eruhr,

v_tabkey TYPE cdpos-tabkey,

v_temp(5),

v_olddate(8),

v_newdate(8),

v_value_old TYPE cdpos-value_old,

V_OLD TYPE EKPO-BRTWR, " OLD VALUE FOR PURCHASE ORDER

l_ind TYPE i,

temp value 0 type i,

temp1 type i,

temp2 type i,

temp3 type i,

wa_cdpos like line of it_cdpos,

wa_cdpos1 like line of it_cdpos1,

v_tabkey1 TYPE cdpos-tabkey.

PARAMETERS : p_ebeln TYPE ekko-ebeln,

  • p_ebelp TYPE ekpo-ebelp.

p_bukrs TYPE t001-bukrs,

p_revno type erev-revno.

INITIALIZATION.

AT SELECTION-SCREEN on value-request for P_REVNO.

CLEAR: dyfields[], dyfields.

dyfields-fieldname = 'P_REVNO'.

APPEND dyfields.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

dyname = sy-cprog

dynumb = sy-dynnr

TABLES

dynpfields = dyfields.

READ TABLE dyfields INDEX 1.

SELECT revno

FROM erev

INTO TABLE it_erev1 WHERE edokn = p_ebeln.

IF sy-subrc = 0.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'REVNO'

dynpprog = progname

dynpnr = dynnum

dynprofield = 'P_REVNO'

value_org = 'S'

TABLES

value_tab = it_eREV1

EXCEPTIONS

parameter_error = 1

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

ENDIF.

START-OF-SELECTION.

SELECT SINGLE *

FROM t001

WHERE bukrs EQ p_bukrs.

IF sy-subrc EQ 0.

SELECT SINGLE *

FROM adrc

WHERE addrnumber EQ t001-adrnr.

ENDIF.

SELECT SINGLE *

FROM ekko

WHERE ebeln

EQ p_ebeln

AND frgke = 2.

select * from konv into corresponding fields of table it_konv where knumv eq ekko-knumv.

IF sy-subrc EQ 0.

SELECT *

FROM ekpo

INTO CORRESPONDING FIELDS OF

TABLE it_ekpo

WHERE ebeln EQ p_ebeln.

ENDIF.

select matnr maktx from makt into table it_makt for all entries in it_ekpo where matnr = it_ekpo-matnr.

SELECT SINGLE *

FROM zammendpodet

WHERE ebeln EQ p_ebeln.

SELECT *

FROM ekbe

INTO TABLE it_ekbe

WHERE ebeln EQ p_ebeln

AND bwart EQ '101'

AND budat GE zammendpodet-effectivedate.

SELECT SINGLE revno

FROM ekko

INTO v_revno

WHERE ebeln = ekko-ebeln.

SELECT SINGLE *

FROM erev

INTO it_erev

WHERE edokn = ekko-ebeln

AND revno = p_revno

AND bstyp = 'F'.

IF sy-subrc = 0.

w_version = it_erev-revno.

w_erdat = it_erev-erdat.

w_eruhr = it_erev-eruhr.

wv_eruhr = w_eruhr + 60.

WRITE w_version TO w_version NO-ZERO.

SELECT *

FROM cdhdr

INTO CORRESPONDING

FIELDS OF TABLE it_cdhdr

WHERE objectclas = 'EINKBELEG'

AND objectid = ekko-ebeln

AND tcode IN ('ME22N','ME23N') "('ME21N','ME22N','ME28','ME29N')

AND udate = w_erdat.

IF sy-subrc = 0.

SORT it_cdhdr BY utime DESCENDING.

READ TABLE it_cdhdr INDEX 1.

IF sy-subrc = 0.

SELECT * FROM t166c

INTO CORRESPONDING FIELDS OF TABLE it_t166c

WHERE xbest = 'X' AND

fname <> ''.

.

SORT it_t166c BY fname.

SELECT *

FROM cdpos

INTO CORRESPONDING FIELDS

OF TABLE it_cdpos1

WHERE objectclas = 'EINKBELEG'

AND objectid = ekko-ebeln

AND chngind = 'I'.

loop at it_cdpos1.

wa_cdpos1-item = it_cdpos1-tabkey+16(2).

select single * from ekpo into it_ekpo1 where ebeln = it_cdpos1-objectid and ebelp = wa_cdpos1-item.

wa_cdpos1-ebeln = it_ekpo1-ebeln.

wa_cdpos1-aedat = it_ekpo1-aedat.

wa_cdpos1-matnr = it_ekpo1-matnr.

wa_cdpos1-txz01 = it_ekpo1-txz01.

wa_cdpos1-item1 = it_ekpo1-netpr.

if wa_cdpos1-item ne ''.

modify it_cdpos1 from wa_cdpos1 transporting item matnr txz01 item1.

endif.

clear wa_cdpos1.

endloop.

DELETE ADJACENT DUPLICATES FROM it_cdpos1

COMPARING item." tabkey. "Commented

  • Get changed from Old contents to New contents in P.O.

SELECT *

FROM cdpos

INTO CORRESPONDING FIELDS

OF TABLE it_cdpos

FOR ALL ENTRIES IN it_t166c

WHERE objectclas = 'EINKBELEG'

AND objectid = ekko-ebeln

AND changenr = it_cdhdr-changenr

AND tabname = it_t166c-tname

AND fname = it_t166c-fname

AND chngind = 'U'.

CLEAR : l_ind.

IF sy-subrc EQ 0.

LOOP AT it_cdpos.

l_ind = sy-tabix.

READ TABLE it_t166c WITH KEY fname = it_cdpos-fname

tname = it_cdpos-tabname.

IF sy-subrc EQ 0.

SELECT SINGLE *

FROM t166t

WHERE ctxnr = it_t166c-ctxnr

AND spras = 'EN'.

IF sy-subrc EQ 0.

it_cdpos-ctxnr = t166t-ctxnr.

it_cdpos-chtxt = t166t-chtxt.

MODIFY it_cdpos INDEX l_ind TRANSPORTING ctxnr chtxt.

ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

IF sy-subrc <> 0.

  • Get Insert od Deleted contents in P.O.

SELECT *

FROM cdpos

INTO CORRESPONDING FIELDS OF TABLE it_cdpos

WHERE objectclas = 'EINKBELEG'

AND objectid = ekpo-ebeln

AND changenr = it_cdhdr-changenr

AND chngind IN ('I','D').

IF sy-subrc = 0.

CLEAR: it_cdpos.

CLEAR: w_version.

WRITE: w_version TO w_version NO-ZERO.

ENDIF.

ENDIF.

ELSE.

CLEAR: w_version.

WRITE: w_version TO w_version NO-ZERO.

ENDIF.

ELSE.

CLEAR: w_version.

WRITE: w_version TO w_version NO-ZERO.

ENDIF.

ELSE.

CLEAR: w_version.

WRITE: w_version TO w_version NO-ZERO.

ENDIF.

SORT it_cdpos BY fname.

LOOP AT it_ekpo.

CLEAR : v_tabkey.

CONCATENATE sy-mandt

it_ekpo-ebeln

it_ekpo-ebelp INTO v_tabkey.

LOOP AT IT_CDPOS.

SY-INDEX = SY-TABIX.

IF IT_CDPOS-TABKEY+0(18) = V_TABKEY.

IF sy-subrc EQ 0.

it_cdpos-ebeln = it_ekpo-ebeln.

it_cdpos-ebelp = it_ekpo-ebelp.

it_cdpos-matnr = it_ekpo-matnr.

it_cdpos-prdat = it_ekpo-prdat.

it_cdpos-tkey = 'X'.

it_cdpos-txz01 = it_ekpo-txz01.

read table it_makt with key matnr = it_ekpo-matnr.

if sy-subrc = 0.

it_cdpos-maktx = it_makt-maktx.

endif.

MODIFY it_cdpos INDEX SY-INDEX TRANSPORTING tkey ebeln ebelp matnr prdat txz01 maktx.

ENDIF.

ENDIF.

SY-TABIX = SY-TABIX + 1.

ENDLOOP.

ENDLOOP.

LOOP AT it_ekbe.

READ TABLE it_cdpos WITH KEY ebeln = it_ekbe-ebeln

ebelp = it_ekbe-ebelp.

IF sy-subrc EQ 0.

it_cdpos-belnr = it_ekbe-belnr.

it_cdpos-budat = it_ekbe-budat.

MODIFY it_cdpos INDEX sy-tabix TRANSPORTING belnr budat.

ENDIF.

CLEAR : it_ekbe,

it_cdpos.

ENDLOOP.

SORT it_cdhdr BY utime DESCENDING.

READ TABLE it_cdhdr INDEX 1.

SELECT SINGLE *

FROM cdpos

WHERE changenr EQ it_cdhdr-changenr

AND fname EQ 'EFFWR'

AND objectclas EQ 'EINKBELEG'

AND objectid EQ ekko-ebeln.

IF sy-subrc EQ 0.

v_value_old = cdpos-value_new - cdpos-value_old .

ENDIF.

loop at it_cdpos.

if it_cdpos-fname = 'NETPR'.

WA_CDPOS-DESP = 'BASIC PRICE'.

ELSEIF it_cdpos-fname = 'MENGE'.

WA_CDPOS-DESP = 'P.O QUANTITY'.

ELSEIF it_cdpos-fname = 'MWSKZ'.

WA_CDPOS-DESP = 'TAX CODE'.

ENDIF.

SELECT MATNR MEINS FROM MARA INTO TABLE IT_MARA WHERE MATNR = IT_CDPOS-MATNR.

LOOP AT IT_MARA.

WA_CDPOS-MEINS = IT_MARA-MEINS.

ENDLOOP.

MODIFY IT_CDPOS FROM WA_CDPOS TRANSPORTING DESP MEINS.

CLEAR WA_CDPOS.

DELETE IT_MARA INDEX 1.

CLEAR IT_MARA.

ENDLOOP.

delete adjacent duplicates from it_cdpos comparing objectid tabkey+0(18) fname value_new value_old.

loop at it_cdpos1.

if it_cdpos1-fname = 'NETPR'.

WA_CDPOS1-DESP = 'BASIC PRICE'.

ELSEIF it_cdpos1-fname = 'MENGE'.

WA_CDPOS1-DESP = 'P.O QUANTITY'.

ELSEIF it_cdpos1-fname = 'MWSKZ'.

WA_CDPOS1-DESP = 'TAX CODE'.

ENDIF.

SELECT MATNR MEINS FROM MARA INTO TABLE IT_MARA WHERE MATNR = IT_CDPOS1-MATNR.

LOOP AT IT_MARA.

WA_CDPOS1-MEINS = IT_MARA-MEINS.

ENDLOOP.

MODIFY IT_CDPOS1 FROM WA_CDPOS1 TRANSPORTING DESP MEINS.

CLEAR WA_CDPOS1.

DELETE IT_MARA INDEX 1.

CLEAR IT_MARA.

ENDLOOP.

delete adjacent duplicates from it_cdpos comparing objectid tabkey+0(18) fname value_new value_old.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

  • APPLICATION = 'TX'

  • ARCHIVE_INDEX =

  • ARCHIVE_PARAMS =

device = 'PRINTER'

  • DIALOG = 'X'

form = 'ZAMMENDMENTPO'.

  • LANGUAGE = SY-LANGU

  • OPTIONS =

  • MAIL_SENDER =

  • MAIL_RECIPIENT =

  • MAIL_APPL_OBJECT =

  • RAW_DATA_INTERFACE = '*'

  • SPONUMIV =

  • IMPORTING

  • LANGUAGE =

  • NEW_ARCHIVE_PARAMS =

  • RESULT =

  • EXCEPTIONS

  • CANCELED = 1

  • DEVICE = 2

  • FORM = 3

  • OPTIONS = 4

  • UNCLOSED = 5

  • MAIL_OPTIONS = 6

  • ARCHIVE_ERROR = 7

  • INVALID_FAX_NUMBER = 8

  • MORE_PARAMS_NEEDED_IN_BATCH = 9

  • SPOOL_ERROR = 10

  • CODEPAGE = 11

  • OTHERS = 12.

IF sy-subrc <> 0.

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

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

ENDIF.

PERFORM disp_form USING 'ADDRESS_DATA' 'ADDRESS'.

PERFORM disp_form USING 'INFO_DATA' 'INFO'.

PERFORM disp_form USING 'INFO2_DATA' 'INFO2'.

PERFORM disp_form USING 'ITEM_TOP' 'MAIN'.

LOOP AT it_cdpos

WHERE value_new NE ''

AND ( value_old NE ''

OR value_old NE 0 ).

PERFORM disp_form USING 'ITEM_DATA' 'MAIN'.

ENDLOOP.

SELECT *

FROM zammendpodet

INTO CORRESPONDING FIELDS OF

TABLE it_ammend

WHERE ebeln EQ ekko-ebeln.

delete it_ammend where effectivedate eq ''.

revno1 = it_ammend-revno - 1.

select * from ekko into table it_ekko1 where revno = revno1.

if sy-subrc = 0.

select * from konv into table it_konv2 where knumv = it_ekko1-knumv.

loop at it_konv2.

temp3 = temp3 + it_konv2-kwert.

endloop.

temp2 = temp3.

endif.

IF IT_EKPO-SCHPR = 'X'.

loop at it_konv.

IF it_konv-stunr = 10.

temp = temp + it_konv-kwert.

endif.

endloop.

ELSEIF IT_EKPO-SCHPR = ' '.

loop at it_konv.

temp = temp + it_konv-kwert.

endloop.

ENDIF.

temp1 = temp.

PERFORM disp_form USING 'ITEM_BOTTOM' 'MAIN'.

CALL FUNCTION 'CLOSE_FORM'

  • IMPORTING

  • RESULT =

  • RDI_RESULT =

  • TABLES

  • OTFDATA =

  • EXCEPTIONS

  • UNOPENED = 1

  • BAD_PAGEFORMAT_FOR_PRINT = 2

  • SEND_ERROR = 3

  • SPOOL_ERROR = 4

  • CODEPAGE = 5

  • OTHERS = 6

.

IF sy-subrc <> 0.

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

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

ENDIF.

&----


*& Form disp_form

&----


  • text

----


  • -->P_TXT_ELMT text

----


FORM disp_form USING p_txt_elmt TYPE string

p_window TYPE string.

  • BREAK-POINT.

l_ind = sy-tabix.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = p_txt_elmt

function = 'SET'

  • type = 'BODY'

window = p_window

  • IMPORTING

  • PENDING_LINES =

  • EXCEPTIONS

  • ELEMENT = 1

  • FUNCTION = 2

  • TYPE = 3

  • UNOPENED = 4

  • UNSTARTED = 5

  • WINDOW = 6

  • BAD_PAGEFORMAT_FOR_PRINT = 7

  • SPOOL_ERROR = 8

  • CODEPAGE = 9

  • OTHERS = 10

.

IF sy-subrc <> 0.

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

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

ENDIF.

ENDFORM. " disp_form

useful informations will be rewarded.

thanks and regards,

subbu.,