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