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

F4 Help

Former Member
0 Likes
543

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

4 REPLIES 4
Read only

Former Member
0 Likes
506

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

Read only

Former Member
0 Likes
506

Give the program name in bold letters. i.e, 'Z_FI_VENDOR_BALANCE'. This should work for you.

mark all helpful answers.

Read only

0 Likes
506

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

Read only

0 Likes
506

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