‎2008 Mar 10 6:32 AM
Dear All
The following F4 function working properly
REPORT ZV_F4 .
TABLES: LFB1.
SELECTION-SCREEN: BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
SELECT-OPTIONS : S_AKONT FOR LFB1-AKONT.
SELECT-OPTIONS : S_LIFNR FOR LFB1-LIFNR . "Vendor
SELECTION-SCREEN: END OF BLOCK B3.
DATA BEGIN OF IT_RETN OCCURS 0.
INCLUDE STRUCTURE DDSHRETVAL.
DATA END OF IT_RETN.
*AT SELECTION-SCREEN ON S_AKONT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_LIFNR-LOW.
DATA: BEGIN OF LT_LFB1 OCCURS 0,
LIFNR LIKE LFB1-LIFNR,
END OF LT_LFB1.
IF S_AKONT[] IS not INITIAL.
SELECT LIFNR FROM LFB1 INTO TABLE LT_LFB1 WHERE AKONT IN S_AKONT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'LIFNR'
DYNPPROG = 'ZV_F4'
DYNPNR = '1000'
DYNPROFIELD = 'S_LIFNR-LOW'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_LFB1
RETURN_TAB = IT_RETN
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_RETN WHERE RETFIELD = 'LIFNR'.
S_LIFNR-LOW = IT_RETN-FIELDVAL.
EXIT.
ENDLOOP.
endif.
but i am using same coding in my program but not working
why not working in my program any one know pls tell be
&----
*& Report Z_FI_VENDOR_BALANCE *
*& *
&----
*& *
*& *
&----
*
REPORT z_fi_vendor_balance NO STANDARD PAGE HEADING
LINE-SIZE 114 LINE-COUNT 65(3) .
INCLUDE <icon>.
TABLES: lfa1,lfb1,lfc1,lfc3,bseg,bkpf,bsid,t001,skat,bsad,payr.
*this table is of same structure as bsad too.
DATA: t_temp LIKE bsid OCCURS 0 WITH HEADER LINE.
DATA: t_output LIKE bsid OCCURS 0 WITH HEADER LINE.
DATA: t_bkpf LIKE bkpf OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF t_bseg OCCURS 0,
bseg LIKE bseg,
blart LIKE bkpf-blart,
budat LIKE bkpf-budat,
xblnr LIKE bkpf-xblnr,
END OF t_bseg.
DATA: umsav LIKE lfc1-umsav,
tot_crdt LIKE bseg-dmbtr,
tot_dbt LIKE bseg-dmbtr,
grand_tot LIKE bseg-dmbtr,
grand_dbt LIKE bseg-dmbtr,
grand_crdt LIKE bseg-dmbtr,
prev_year LIKE bseg-gjahr,
iterations TYPE i VALUE 0,
col_flag TYPE i.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_bukrs LIKE bsis-bukrs OBLIGATORY, "cocode
p_gjahr LIKE bsis-gjahr OBLIGATORY
DEFAULT sy-datum+0(4). "Year
SELECTION-SCREEN: END OF BLOCK b1.
SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS : s_budat FOR bsid-budat OBLIGATORY,
s_blart FOR bsid-blart NO-DISPLAY.
SELECTION-SCREEN: END OF BLOCK b2.
SELECTION-SCREEN: BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
SELECT-OPTIONS : S_AKONT for LFB1-AKONT.
SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr OBLIGATORY. "Vendor
SELECTION-SCREEN: END OF BLOCK b3.
DATA BEGIN OF IT_RETN OCCURS 0.
INCLUDE STRUCTURE DDSHRETVAL.
DATA END OF IT_RETN.
SELECTION-SCREEN: BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
PARAMETERS : p_detail AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN: END OF BLOCK b4.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_LIFNR-LOW.
DATA: BEGIN OF LT_LFB1 OCCURS 0,
LIFNR LIKE LFB1-LIFNR,
END OF LT_LFB1.
IF S_AKONT[] IS not INITIAL.
SELECT LIFNR FROM LFB1 INTO TABLE LT_LFB1 WHERE AKONT IN S_AKONT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'LIFNR'
DYNPPROG = 'z_fi_vendor_balance'
DYNPNR = '1000'
DYNPROFIELD = 'S_LIFNR-LOW'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_LFB1
RETURN_TAB = IT_RETN
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_RETN WHERE RETFIELD = 'LIFNR'.
S_LIFNR-LOW = IT_RETN-FIELDVAL.
EXIT.
ENDLOOP.
endif.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_LIFNR-LOW.
DATA: BEGIN OF LT_LFB1 OCCURS 0,
LIFNR LIKE LFB1-LIFNR,
END OF LT_LFB1.
IF not S_AKONT[] IS INITIAL.
SELECT LIFNR FROM LFB1 INTO TABLE LT_LFB1 WHERE AKONT IN S_AKONT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'LIFNR'
DYNPPROG = 'z_fi_vendor_balance'
DYNPNR = '1000'
DYNPROFIELD = 'S_LIFNR-LOW'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_LFB1
RETURN_TAB = IT_RETN
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC eq 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_RETN WHERE RETFIELD = 'LIFNR'.
*
S_LIFNR-LOW = IT_RETN-FIELDVAL.
EXIT.
ENDLOOP.
ENDIF.
INITIALIZATION.
col_flag = 0.
START-OF-SELECTION.
CLEAR bseg.
CLEAR umsav.
CLEAR tot_dbt.
CLEAR tot_crdt.
CLEAR grand_tot.
CLEAR grand_crdt.
CLEAR grand_dbt.
CLEAR iterations.
DATA year_beg LIKE sy-datum.
DATA curr_year LIKE bseg-gjahr.
CONCATENATE '01' '01' p_gjahr INTO year_beg.
prev_year = p_gjahr - 1.
*Get company code name
SELECT SINGLE butxt FROM t001 INTO t001-butxt WHERE
bukrs EQ p_bukrs.
*First select each vendor number in selection option.
SELECT lifnr name1 FROM lfa1 INTO (lfa1-lifnr,lfa1-name1)
WHERE lifnr IN s_lifnr.
SELECT SINGLE akont FROM lfb1 INTO lfb1-akont WHERE bukrs EQ p_bukrs
AND lifnr EQ lfa1-lifnr.
iterations = iterations + 1.
*Detailed report for each ogf the item
CLEAR: umsav,
tot_dbt,
tot_crdt,
lfc1,
lfc3,
bkpf,
bseg,
t_bkpf,
t_bseg.
REFRESH: t_bseg,
t_bkpf.
*Get balance till the year month beginning
SELECT SINGLE * FROM lfc1 WHERE bukrs EQ p_bukrs AND
gjahr EQ p_gjahr AND
lifnr EQ lfa1-lifnr.
IF sy-subrc = 0.
umsav = umsav + lfc1-umsav.
ENDIF.
SELECT SINGLE * FROM lfc3 WHERE bukrs EQ p_bukrs AND
gjahr EQ p_gjahr AND
lifnr EQ lfa1-lifnr.
IF sy-subrc = 0.
umsav = umsav + lfc3-saldv.
ENDIF.
*calculate the balance from year beginning.
select * from bsid into table t_temp where lifnr eq lfa1-lifnr and
bukrs eq p_bukrs and
gjahr eq p_gjahr and
budat < s_budat-low.
*
IF bsid-SHKZG = 'S'.
umsav = umsav + bsid-dmbtr.
ELSE.
umsav = umsav - bsid-dmbtr.
ENDIF.
*
ENDSELECT.
select * from bsad appending table t_temp where lifnr eq lfa1-lifnr
*and
bukrs eq p_bukrs and
gjahr eq p_gjahr and
budat < s_budat-low.
*
if bsid-SHKZG = 'S'.
umsav = umsav + bsad-dmbtr.
ELSE.
umsav = umsav - bsad-dmbtr.
ENDIF.
ENDSELECT.
*sort t_temp by belnr.
*
*delete adjacent duplicates from t_temp comparing belnr.
*loop at t_temp.
if t_temp-SHKZG = 'S'.
umsav = umsav + t_temp-dmbtr.
ELSE.
umsav = umsav - t_temp-dmbtr.
ENDIF.
*endloop.
SELECT * FROM bkpf WHERE bukrs EQ p_bukrs AND
( gjahr EQ p_gjahr OR
gjahr EQ prev_year ) AND
gjahr EQ p_gjahr and
budat LT s_budat-low." and
" XREVERSAL ne .
SELECT * FROM bseg WHERE belnr EQ bkpf-belnr AND
bukrs EQ p_bukrs AND
gjahr EQ p_gjahr AND
lifnr EQ lfa1-lifnr AND
hkont EQ lfb1-akont.
IF sy-subrc = 0.
IF bseg-shkzg = 'S'.
umsav = umsav + bseg-dmbtr.
ELSE.
umsav = umsav - bseg-dmbtr.
ENDIF.
ENDIF.
ENDSELECT.
ENDSELECT.
*Write heading for each Vendor
format color col_key intensified on.
WRITE: / sy-vline, (3) icon_customer AS ICON,
'Vendor :', (10) lfa1-lifnr,
(50) lfa1-name1,
114 sy-vline.
ULINE (114).
*
format color col_key intensified off.
new-page.
ULINE (114).
WRITE: / sy-vline, 50 'Page', sy-pagno,114 sy-vline.
ULINE (114).
WRITE: / sy-vline, 'Opening Balance ',
95 sy-vline, (16) umsav,
sy-vline.
ULINE (114).
SELECT * FROM bkpf INTO TABLE t_bkpf
WHERE bukrs EQ p_bukrs AND
( gjahr EQ p_gjahr OR
gjahr EQ prev_year ) AND
blart IN s_blart AND
budat IN s_budat .
budat ge year_beg and
budat ge s_budat-low. "and
"XREVERSAL eq space.
SORT t_bkpf BY budat belnr.
CLEAR t_bkpf.
LOOP AT t_bkpf.
SELECT * FROM bseg WHERE bukrs EQ p_bukrs AND
gjahr EQ t_bkpf-gjahr AND
belnr EQ t_bkpf-belnr AND
lifnr EQ lfa1-lifnr AND
( hkont EQ lfb1-akont OR
saknr EQ lfb1-akont ).
t_bseg-bseg = bseg.
t_bseg-budat = t_bkpf-budat.
t_bseg-blart = t_bkpf-blart.
t_bseg-xblnr = t_bkpf-xblnr.
APPEND t_bseg.
ENDSELECT.
CLEAR t_bkpf.
ENDLOOP.
LOOP AT t_bseg.
IF p_detail NE 'X'.
PERFORM col_change CHANGING col_flag.
ELSE.
format color col_normal intensified on.
ENDIF.
*PRINT THE LINE
WRITE: / sy-vline,(10) t_bseg-budat,
' ', (10) t_bseg-bseg-belnr,
' ',(2) t_bseg-blart,
' '.
IF t_bseg-bseg-shkzg EQ 'H'. "Credit
umsav = umsav - t_bseg-bseg-dmbtr.
tot_crdt = tot_crdt + t_bseg-bseg-dmbtr.
WRITE: ' ',
(16) t_bseg-bseg-dmbtr.
ELSE. "Debit
umsav = umsav + t_bseg-bseg-dmbtr.
tot_dbt = tot_dbt + t_bseg-bseg-dmbtr.
WRITE: (16) t_bseg-bseg-dmbtr,
' '.
ENDIF.
WRITE : (16) umsav,
sy-vline.
HIDE : t_bseg-bseg-belnr,
t_bseg-bseg-bukrs,
t_bseg-bseg-gjahr.
IF p_detail EQ 'X'.
format color col_normal intensified off.
*SELECT OTHER G/Ls IN THE SAME DOCUMENT
SELECT * FROM bseg WHERE bukrs EQ t_bseg-bseg-bukrs AND
gjahr EQ t_bseg-bseg-gjahr AND
belnr EQ t_bseg-bseg-belnr AND
hkont NE t_bseg-bseg-hkont.
WRITE: / sy-vline.
IF bseg-lifnr NE space.
SELECT SINGLE name1 INTO lfa1-name1 FROM lfa1 WHERE
lifnr EQ bseg-lifnr.
WRITE: 17(10) bseg-lifnr, (16) lfa1-name1.
ELSEIF bseg-hkont NE space .
SELECT SINGLE txt20 INTO skat-txt20 FROM skat
WHERE spras EQ 'EN' AND
ktopl EQ 'NCCA' AND
saknr EQ bseg-hkont.
WRITE: 17(6) bseg-hkont, skat-txt20.
ENDIF.
IF bseg-shkzg EQ 'H'.
WRITE: 'Cr',(14) bseg-dmbtr.
ELSE.
WRITE: 'Dr',(14) bseg-dmbtr.
ENDIF.
WRITE: 114 sy-vline.
HIDE : t_bseg-bseg-belnr,
t_bseg-bseg-bukrs,
t_bseg-bseg-gjahr.
IF bseg-sgtxt NE space.
WRITE : / sy-vline, 17 bseg-sgtxt,
114 sy-vline.
ENDIF.
HIDE : t_bseg-bseg-belnr,
t_bseg-bseg-bukrs,
t_bseg-bseg-gjahr.
ENDSELECT.
ENDIF.
IF p_detail EQ 'X'.
IF t_bseg-xblnr NE space.
WRITE : / sy-vline, 17 'Reference:', t_bseg-xblnr,
114 sy-vline.
ENDIF.
IF t_bseg-blart EQ 'ZP'.
SELECT SINGLE * FROM payr WHERE vblnr EQ t_bseg-bseg-belnr AND
voidr EQ space.
IF sy-subrc = 0.
format color col_positive intensified off.
WRITE : / sy-vline, 'Cheque:', payr-chect,
icon_okay AS ICON,114 sy-vline.
HIDE : payr-chect,
payr-zbukr,
payr-hbkid,
payr-hktid.
ENDIF.
ENDIF.
WRITE : / sy-vline, ' ', 114 sy-vline.
ENDIF.
ENDLOOP.
grand_tot = grand_tot + umsav.
grand_crdt = grand_crdt + tot_crdt.
grand_dbt = grand_dbt + tot_dbt.
ULINE (114).
WRITE: / sy-vline, icon_sum AS ICON,
21(12) 'Total ',
39(21) ' ',
sy-vline, (16) tot_dbt,
sy-vline, (14) tot_crdt,
sy-vline, (14) umsav,
sy-vline.
ULINE (114).
ULINE (114).
WRITE: / sy-vline, 50 'Page', sy-pagno,114 sy-vline.
ULINE (114).
ENDSELECT.
END-OF-SELECTION.
DATA l TYPE i VALUE 0.
format color col_total intensified on.
CLEAR bsid.
IF iterations GT 1.
ULINE (114).
WRITE: / sy-vline, icon_sum AS ICON,
21(12) 'Grand Total',
39(21) ' ',
sy-vline, (16) grand_dbt,
sy-vline, (14) grand_crdt,
sy-vline, (14) grand_tot,
sy-vline.
ULINE (114).
ENDIF.
CLEAR t_bseg.
TOP-OF-PAGE.
format color col_key intensified on.
SKIP.
SKIP.
SKIP.
SKIP.
IF p_detail EQ 'X'.
ULINE (114).
WRITE: / sy-vline, 114 sy-vline.
NEW-LINE NO-SCROLLING.
WRITE: / sy-vline, 44 t001-butxt CENTERED, 114 sy-vline.
WRITE: / sy-vline,'VENDOR ACCOUNT BALANCE' UNDER t001-butxt,
114 sy-vline.
WRITE: / sy-vline, 'Period', s_budat-low, 'to',
s_budat-high,114 sy-vline.
ULINE (114).
WRITE: / sy-vline, (11) ' Posting',
sy-vline, (18) ' Document Number ',
(20) ' Document Type',
' ',sy-vline,(14) ' Debit ',
sy-vline, (14) ' Credit',
sy-vline, (16) 'Cumul Balance',
sy-vline.
WRITE: / sy-vline, (11) ' Date',
sy-vline, (5) ' ',
(8) ' ',
'Particulars ',
sy-vline,(14) ' Amount (Rs)',
sy-vline, (14) ' Amount (Rs)',
sy-vline, (16) ' Amount (Rs) ',
sy-vline.
ELSE.
ULINE (114).
WRITE: / sy-vline, 114 sy-vline.
NEW-LINE NO-SCROLLING.
WRITE: / sy-vline,47 t001-butxt CENTERED,114 sy-vline.
WRITE: / sy-vline,'VENDOR ACCOUNT BALANCE' UNDER t001-butxt,
114 sy-vline.
WRITE: / sy-vline, 'Period', s_budat-low, 'to',
s_budat-high,114 sy-vline.
ULINE (114).
WRITE: / sy-vline, (11) ' Posting',
sy-vline, (12) ' Document ',
sy-vline, (4) 'Doc',
sy-vline, (16) ' Header ',
sy-vline, (16) ' Debit ',
sy-vline, (16) ' Credit',
sy-vline, (17) 'Cumul Balance',
sy-vline.
WRITE: / sy-vline, (11) ' Date',
sy-vline, (12) ' Number ',
sy-vline, (4) 'Type',
sy-vline, (16) ' Reference ',
sy-vline, (16) ' Amount (Rs)',
sy-vline, (16) ' Amount (Rs)',
sy-vline, (17) ' Amount (Rs) ',
114 sy-vline.
ENDIF.
ULINE (114).
WRITE: / sy-vline, (3) icon_customer AS ICON,
'Vendor :', (10) lfa1-lifnr,
(50) lfa1-name1,
114 sy-vline.
ULINE (114).
WRITE: / sy-vline, 50 'Page', sy-pagno,114 sy-vline.
ULINE (114).
END-OF-PAGE.
format color col_key intensified on.
ULINE (114).
WRITE: / sy-vline, 50 'Page', sy-pagno,114 sy-vline.
ULINE (114).
AT LINE-SELECTION.
IF t_bseg-bseg-belnr NE space.
SET PARAMETER ID 'BLN' FIELD t_bseg-bseg-belnr.
SET PARAMETER ID 'BUK' FIELD t_bseg-bseg-bukrs.
SET PARAMETER ID 'GJR' FIELD t_bseg-bseg-gjahr.
CLEAR t_bseg.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
&----
*& Form col_change
&----
text
----
<--P_COL_FLAG text
----
FORM col_change CHANGING p_col_flag.
IF p_col_flag = 0.
format color col_normal intensified off.
p_col_flag = 1.
ELSE.
p_col_flag = 0.
format color col_normal intensified on.
ENDIF.
ENDFORM. "col_change
‎2008 Mar 10 6:40 AM
Hi,
Try giving program name in CAPS.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_LIFNR-LOW.
DATA: BEGIN OF LT_LFB1 OCCURS 0,
LIFNR LIKE LFB1-LIFNR,
END OF LT_LFB1.
IF S_AKONT[] IS not INITIAL.
SELECT LIFNR FROM LFB1 INTO TABLE LT_LFB1 WHERE AKONT IN S_AKONT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'LIFNR'
DYNPPROG = 'Z_FI_VENDOR_BALANCE'
DYNPNR = '1000'
DYNPROFIELD = 'S_LIFNR-LOW'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_LFB1
RETURN_TAB = IT_RETN
EXCEPTIONS
PARAMETER_ERROR = 1
Hope this will Help.
Reward if helpful.
Regards
Shibin
Edited by: Shibin on Mar 10, 2008 7:46 AM
‎2008 Mar 10 7:00 AM
Give the program name in bold letters. i.e, 'Z_FI_VENDOR_BALANCE'. This should work for you.
mark all helpful answers.
‎2008 Mar 10 7:09 AM
hi pradeep
i will chk it but not working
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_LIFNR-LOW.
DATA: BEGIN OF LT_LFB1 OCCURS 0,
LIFNR LIKE LFB1-LIFNR,
END OF LT_LFB1.
IF S_AKONT[] IS not INITIAL.
SELECT LIFNR FROM LFB1 INTO TABLE LT_LFB1 WHERE AKONT IN S_AKONT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'LIFNR'
DYNPPROG = 'Z_FI_VENDOR_BALANCE'
DYNPNR = '1000'
DYNPROFIELD = 'S_LIFNR-LOW'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_LFB1
RETURN_TAB = IT_RETN
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_RETN WHERE RETFIELD = 'LIFNR'.
S_LIFNR-LOW = IT_RETN-FIELDVAL.
EXIT.
ENDLOOP.
endif.
thanks and regards
Suresh
‎2008 Mar 10 7:13 AM
Hi,
Then check the internal table LT_LFB1,whether any data is there in the database for that particular selection condition.Put one break point and check it.
Regards
Shibin