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

Didpaly problem

Former Member
0 Likes
765

Why F0014 (ZUONR) in the FORM f4_bills_discounting is not showing the value.Its showing boxes or ascii characters. But in my internal table i.e. lt_tab i have values for the field ZUONR. I am sending the code. Can any1 help me?

-


REPORT zfb005_realisation.

DATA : w_belnr LIKE bseg-belnr,

w_kunag LIKE vbrk-kunag,

w_flag,

wa_bsis_xx LIKE bsis,

wa_bseg_xx LIKE bseg.

----


----


  • Internal tables Begin with IT_ *

----


DATA : BEGIN OF it_t012 OCCURS 0,

hbkid LIKE t012-hbkid,

banks LIKE t012-banks,

bankl LIKE t012-bankl,

END OF it_t012.

DATA : BEGIN OF it_bnka OCCURS 0,

bankl LIKE bnka-bankl,

banka LIKE bnka-banka,

END OF it_bnka.

DATA : r_hbkid TYPE RANGE OF bseg-hbkid WITH HEADER LINE,

r_hbkid_b TYPE RANGE OF bseg-hbkid WITH HEADER LINE,

r_hkont TYPE RANGE OF bsis-hkont WITH HEADER LINE.

DATA : it_bdcdata LIKE STANDARD TABLE OF bdcdata WITH HEADER LINE,

it_bdcmsg LIKE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE.

----


  • Parameters Begin with PR_ *

----


  • Bill Discounting

SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.

PARAMETERS : pr_bukrs LIKE bkpf-bukrs OBLIGATORY VALUE CHECK,

pr_gjahr LIKE bkpf-gjahr OBLIGATORY,

pr_hbkid LIKE t012-hbkid OBLIGATORY,

pr_budat LIKE bkpf-budat OBLIGATORY,

pr_bldat LIKE bkpf-bldat OBLIGATORY,

pr_belnr LIKE bkpf-belnr OBLIGATORY,

pr_zuonr LIKE bsis-zuonr OBLIGATORY,

pr_valut LIKE bseg-valut OBLIGATORY,

pr_oamt TYPE bseg-wrbtr OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b01.

  • Invoice Document

SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME TITLE text-b02.

PARAMETERS : pr_vbeln LIKE vbrk-vbeln MODIF ID a11,

pr_netwr LIKE vbrk-netwr MODIF ID a11, "+ECDK902801

pr_waers LIKE bkpf-waers MODIF ID a11,

pr_kunag LIKE vbrk-kunag MODIF ID a11,

pr_name LIKE kna1-name1 MODIF ID a11.

SELECTION-SCREEN END OF BLOCK b02.

  • Currency exchange rate

SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-b03.

PARAMETERS : pr_kurs1 LIKE bkpf-kursf ,

pr_kurs2 LIKE bkpf-kursf,

pr_amt TYPE wrbtv.

SELECTION-SCREEN END OF BLOCK b03.

----


  • Initialisation *

----


INITIALIZATION.

PERFORM clear_all.

----


  • At Selection-Screen Output *

----


AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF screen-group1 = 'A11'.

screen-input = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

----


  • At selection-screen on value request *

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_hbkid.

*-Drop down list for house bank

PERFORM f4_house_bank.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_belnr.

*-Drop down list for bills discounting

PERFORM f4_bills_discounting.

----


  • At Selection-Screen *

----


AT SELECTION-SCREEN.

*-Check if Invoice Document or Currency blank

*-Must use drop down list of bills discounting

IF pr_vbeln IS INITIAL OR pr_waers IS INITIAL OR w_flag IS INITIAL.

MESSAGE e208(00) WITH text-e08.

ENDIF.

*-Enter Exch.rate ( Inv Curr - USD ) if invoice currency is not 'USD'

IF pr_waers <> 'USD' AND pr_kurs1 IS INITIAL.

MESSAGE e208(00) WITH text-e09.

ENDIF.

*-Validate house bank

PERFORM validate_house_bank.

*-Validate bills discounting currency

PERFORM validate_bill_belnr.

*-Enter Exch.rate ( USD - INR ) if bills discounting doc. curr is 'INR'

IF wa_bsis_xx-waers EQ 'INR' AND pr_kurs2 IS INITIAL.

MESSAGE e208(00) WITH text-e10.

ENDIF.

*-Current account amount

IF wa_bsis_xx-waers EQ 'INR' AND pr_waers EQ 'USD'.

  • IF pr_amt IS INITIAL.

  • MESSAGE e208(00) WITH text-e11.

  • ENDIF.

ELSE.

CLEAR pr_amt.

ENDIF.

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

  • S T A R T O F S E L E C T I O N *

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

START-OF-SELECTION.

IF wa_bseg_xx-zfbdt > sy-datum.

MESSAGE i398(00) WITH text-w02 wa_bseg_xx-zfbdt text-w03 sy-datum.

ENDIF.

IF pr_waers <> wa_bsis_xx-waers.

MESSAGE i398(00) WITH text-t02 pr_waers text-t03 wa_bsis_xx-waers.

ENDIF.

*-Calling FB05 BDC for doc type z4

PERFORM create_document.

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

  • E N D O F S E L E C T I O N *

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

END-OF-SELECTION.

IF wa_bsis_xx-waers EQ 'INR' OR pr_waers NE 'USD'.

*---Check it_bdcmsg for successful posting

CLEAR it_bdcmsg.

READ TABLE it_bdcmsg WITH KEY msgtyp = 'S'

msgid = 'F5'

msgnr = '312'.

IF sy-subrc = 0.

CLEAR w_belnr.

MOVE it_bdcmsg-msgv1 TO w_belnr.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = w_belnr

IMPORTING

output = w_belnr.

MESSAGE i398(00) WITH text-i03 w_belnr text-i04 text-i05.

*-----Calling FB05 BDC for document type Z5

PERFORM create_document_z5 USING w_belnr.

ELSE.

MESSAGE i208(00) WITH text-i02.

ENDIF.

ENDIF.

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

  • E N D O F S E L E C T I O N *

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

*eject

&----


*& Form F4_HOUSE_BANK

&----


  • Custom F4 help for House Bank

----


  • --> p1 text

  • <-- p2 text

----


FORM f4_house_bank .

*-Local declaration

DATA : l_dyname LIKE d020s-prog,

l_dynumb LIKE d020s-dnum,

l_retfie LIKE dfies-fieldname,

l_bukrs LIKE bkpf-bukrs,

lt_dynpf LIKE STANDARD TABLE OF dynpread WITH HEADER LINE.

DATA : BEGIN OF lt_tab OCCURS 0,

  • bukrs LIKE t012k-bukrs, "-ECDK902801

hbkid LIKE t012k-hbkid,

banka LIKE bnka-banka, "+ECDK902801

END OF lt_tab.

*-Read Company code from selection screen

MOVE sy-repid TO l_dyname.

l_dynumb = '1000'.

lt_dynpf-fieldname = 'PR_BUKRS'.

APPEND lt_dynpf.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

dyname = l_dyname

dynumb = l_dynumb

TABLES

dynpfields = lt_dynpf

EXCEPTIONS

invalid_abapworkarea = 1

invalid_dynprofield = 2

invalid_dynproname = 3

invalid_dynpronummer = 4

invalid_request = 5

no_fielddescription = 6

invalid_parameter = 7

undefind_error = 8

double_conversion = 9

stepl_not_found = 10

OTHERS = 11.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

READ TABLE lt_dynpf INDEX 1.

CHECK sy-subrc EQ 0.

MOVE lt_dynpf-fieldvalue TO l_bukrs.

*>>>>> Start of ECDK902801 : Added Bank name

*---Get house bank for given comapny code on selection screen

  • SELECT bukrs hbkid INTO TABLE lt_tab FROM t012

  • WHERE bukrs = l_bukrs

  • AND hbkid LIKE '9%'.

SELECT ahbkid bbanka INTO TABLE lt_tab

FROM t012 AS a

INNER JOIN bnka AS b

ON bbanks = abanks

AND bbankl = abankl

WHERE a~bukrs = l_bukrs

AND a~hbkid LIKE '9%'.

*<<<<<< End of ECDK902801

IF sy-subrc = 0.

MOVE 'HBKID' TO l_retfie.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = l_retfie

dynpprog = 'ZFB005_REALISATION_SMART'

dynpnr = '1000'

dynprofield = 'PR_HBKID'

value_org = 'S'

TABLES

value_tab = lt_tab

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.

ENDIF.

ENDFORM. " F4_HOUSE_BANK

&----


*& Form validate_house_bank

&----


  • Validate house bank

----


  • --> p1 text

  • <-- p2 text

----


FORM validate_house_bank .

DATA : l_hbkid LIKE t012-hbkid.

SELECT SINGLE hbkid INTO l_hbkid FROM t012

WHERE bukrs = pr_bukrs

AND hbkid = pr_hbkid

AND spras = 'EN'.

IF sy-subrc <> 0.

MESSAGE e208(00) WITH text-001.

ENDIF.

IF pr_hbkid(1) <> '9'.

MESSAGE e398(00) WITH text-001 text-003 space space.

ENDIF.

ENDFORM. " validate_house_bank

&----


*& Form f4_bills_discounting

&----


  • F4 help for bills discounting document

----


  • --> p1 text

  • <-- p2 text

----


FORM f4_bills_discounting .

*-table for F4

DATA : BEGIN OF lt_tab OCCURS 0,

blart LIKE bsis-blart,

belnr LIKE bsis-belnr,

budat LIKE bsis-budat,

zfbdt LIKE bsis-zfbdt, "+ECDK902801

hkont LIKE bseg-hkont,

hbkid LIKE bseg-hbkid,

xblnr LIKE bkpf-xblnr,

waerk LIKE vbrk-waerk,

kunag LIKE vbrk-kunag,

name1 LIKE kna1-name1, "+ECDK902801

  • banka LIKE bnka-banka, "-ECDK902801

waers LIKE bsis-waers,

wrbtr LIKE bseg-wrbtr,

bal LIKE bseg-wrbtr,

zuonr type bseg-zuonr, "KD1

END OF lt_tab .

*-----fetch data from bseg

DATA : BEGIN OF lt_bseg OCCURS 0,

belnr LIKE bseg-belnr,

buzei LIKE bseg-buzei,

gjahr LIKE bseg-gjahr,

hbkid LIKE bseg-hbkid,

wrbtr LIKE bseg-wrbtr,

  • zuonr LIKE BSEG-ZUONR,

END OF lt_bseg.

DATA : l_dyname LIKE d020s-prog,

l_dynumb LIKE d020s-dnum,

l_retfie LIKE dfies-fieldname,

l_bukrs LIKE bkpf-bukrs,

l_gjahr LIKE bsis-gjahr,

ll_gjahr LIKE bsis-gjahr,

l_budat LIKE bkpf-budat,

l_tabix LIKE sy-tabix,

l_belnr LIKE bkpf-belnr,

l_vbeln LIKE vbrk-vbeln, "+ECDK902801

l_xblnr LIKE bkpf-xblnr,

ll_xblnr LIKE bkpf-xblnr,

l_hbkid LIKE bseg-hbkid,

ls_z2 LIKE bkpf,

ls_not_z4 LIKE bkpf,

l_netwr(21), "+ECDK902801

l_waers TYPE waers, "+ECDK902801

l_kunnr TYPE kunnr, "+ECDK902801

l_name TYPE kna1-name1,

lt_dynpf LIKE STANDARD TABLE OF dynpread WITH HEADER LINE,

lt_tab1 LIKE STANDARD TABLE OF lt_tab WITH HEADER LINE.

DATA: BEGIN OF lt_f4hlp OCCURS 1.

INCLUDE STRUCTURE dynpread.

DATA: END OF lt_f4hlp.

DATA : ltt_bkpf TYPE STANDARD TABLE OF bkpf WITH HEADER LINE,

lttt_bkpf TYPE bkpf ,

ltt_bseg TYPE STANDARD TABLE OF bseg WITH HEADER LINE,

ll_wrbtr TYPE bseg-wrbtr,

l_bal TYPE bseg-wrbtr,

l_bal1(20).

*-Read Company code from selection screen

MOVE sy-repid TO l_dyname.

l_dynumb = '1000'.

lt_dynpf-fieldname = 'PR_BUKRS'.

APPEND lt_dynpf.

lt_dynpf-fieldname = 'PR_GJAHR'.

APPEND lt_dynpf.

lt_dynpf-fieldname = 'PR_HBKID'.

APPEND lt_dynpf.

lt_dynpf-fieldname = 'PR_BUDAT'.

APPEND lt_dynpf.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

dyname = l_dyname

dynumb = l_dynumb

TABLES

dynpfields = lt_dynpf

EXCEPTIONS

invalid_abapworkarea = 1

invalid_dynprofield = 2

invalid_dynproname = 3

invalid_dynpronummer = 4

invalid_request = 5

no_fielddescription = 6

invalid_parameter = 7

undefind_error = 8

double_conversion = 9

stepl_not_found = 10

OTHERS = 11.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

READ TABLE lt_dynpf WITH KEY fieldname = 'PR_BUKRS'.

IF sy-subrc = 0.

l_bukrs = lt_dynpf-fieldvalue.

ENDIF.

READ TABLE lt_dynpf WITH KEY fieldname = 'PR_GJAHR'.

IF sy-subrc = 0.

l_gjahr = lt_dynpf-fieldvalue.

ENDIF.

READ TABLE lt_dynpf WITH KEY fieldname = 'PR_HBKID'.

IF sy-subrc = 0.

l_hbkid = lt_dynpf-fieldvalue.

ENDIF.

READ TABLE lt_dynpf WITH KEY fieldname = 'PR_BUDAT'.

IF sy-subrc = 0.

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'

EXPORTING

date_external = lt_dynpf-fieldvalue

IMPORTING

date_internal = lt_dynpf-fieldvalue

EXCEPTIONS

date_external_is_invalid = 1

OTHERS = 2.

IF sy-subrc = 0.

WRITE lt_dynpf-fieldvalue TO l_budat.

ENDIF.

ENDIF.

CHECK l_bukrs <> space AND l_hbkid <> space AND NOT l_budat IS INITIAL.

*---Get dep house bank from limit table

CLEAR: r_hbkid, r_hbkid[].

PERFORM get_dep_house_bank_gl TABLES r_hbkid

USING l_bukrs l_hbkid l_budat.

*---Get data from BSIS for XX

SELECT abelnr abuzei abudat ablart ahkont awaers awrbtr bxblnr

azfbdt azuonr

INTO CORRESPONDING FIELDS OF TABLE lt_tab

FROM bsis AS a

INNER JOIN bkpf AS b

ON abelnr = bbelnr AND abukrs = bbukrs AND agjahr = bgjahr

WHERE a~bukrs EQ l_bukrs

AND a~hkont IN r_hkont

AND a~gjahr EQ l_gjahr

AND a~blart EQ 'XX'

AND b~xreversal EQ space

.

IF sy-subrc <> 0.

*----


Do Nothing

ENDIF.

*---Get data from BSAS for XX

SELECT abelnr abuzei abudat ablart ahkont awaers awrbtr bxblnr

azfbdt azuonr

APPENDING CORRESPONDING FIELDS OF TABLE lt_tab

FROM bsas AS a

INNER JOIN bkpf AS b

ON abelnr = bbelnr AND abukrs = bbukrs AND agjahr = bgjahr

WHERE a~bukrs EQ l_bukrs

AND a~hkont IN r_hkont

AND a~gjahr EQ l_gjahr

AND a~blart EQ 'XX'

AND b~xreversal EQ space.

IF sy-subrc <> 0.

*----


Do Nothing

ENDIF.

*---Get data from BSIS for Z3

CLEAR : lt_tab1, lt_tab1[].

SELECT a~belnr a~buzei a~budat a~blart a~hkont a~waers a~wrbtr b~xblnr

a~zfbdt a~zuonr

INTO CORRESPONDING FIELDS OF TABLE lt_tab1

FROM bsis AS a

INNER JOIN bkpf AS b

ON a~belnr = b~belnr AND a~bukrs = b~bukrs AND a~gjahr = b~gjahr

WHERE a~bukrs EQ l_bukrs

AND a~hkont IN r_hkont

AND a~gjahr EQ l_gjahr

AND a~blart EQ 'Z3'

AND b~xreversal EQ space

.

IF sy-subrc = 0.

CLEAR l_tabix.

LOOP AT lt_tab1.

l_tabix = sy-tabix.

CLEAR: l_belnr, ls_z2.

MOVE lt_tab1-xblnr(10) TO l_belnr.

CLEAR ll_gjahr.

CONCATENATE '20' lt_tab1-xblnr+14(2) INTO ll_gjahr.

SELECT SINGLE * INTO ls_z2 FROM bkpf

WHERE bukrs = l_bukrs

AND belnr = l_belnr

AND gjahr GE ll_gjahr

AND blart = 'Z2'.

IF sy-subrc <> 0.

DELETE lt_tab1 INDEX l_tabix.

CONTINUE.

ENDIF.

CLEAR: ls_not_z4, l_belnr.

MOVE ls_z2-xblnr(10) TO l_belnr.

CLEAR ll_gjahr.

CONCATENATE '20' ls_z2-xblnr+14(2) INTO ll_gjahr.

SELECT SINGLE * INTO ls_not_z4 FROM bkpf

WHERE bukrs = l_bukrs

AND belnr = l_belnr

AND gjahr GE ll_gjahr

AND blart <> 'Z4'.

IF sy-subrc <> 0.

DELETE lt_tab1 INDEX l_tabix.

CONTINUE.

ENDIF.

MOVE ls_not_z4-xblnr(10) TO lt_tab1-xblnr.

CONCATENATE '20' ls_not_z4-xblnr+14(2) INTO ll_gjahr.

  • ------------------------------------------

*-------customer number from invoicing document

CLEAR lt_tab1-kunag.

SELECT SINGLE kunag waerk INTO (lt_tab1-kunag, lt_tab1-waerk)

FROM vbrk

WHERE vbeln = lt_tab1-xblnr.

IF sy-subrc <> 0.

SELECT SINGLE kunnr pswsl INTO (lt_tab1-kunag, lt_tab1-waerk)

FROM bseg

WHERE bukrs = l_bukrs

AND belnr = lt_tab1-xblnr

AND gjahr = ll_gjahr.

ENDIF.

IF sy-subrc = 0.

*>>>>> Start of ECDK902801 : Added to fetch customer name

CLEAR lt_tab1-name1.

SELECT SINGLE name1 INTO lt_tab1-name1 FROM kna1

WHERE kunnr = lt_tab1-kunag.

IF sy-subrc <> 0.

*----


Do nothing

ENDIF.

*<<<<< End of ECDK902801

MODIFY lt_tab1 INDEX l_tabix TRANSPORTING xblnr kunag waerk name1.

ENDIF.

ENDLOOP.

IF NOT lt_tab1[] IS INITIAL.

APPEND LINES OF lt_tab1[] TO lt_tab[].

ENDIF.

CLEAR: lt_tab1, lt_tab1[].

ENDIF.

IF lt_tab[] IS INITIAL.

MESSAGE s208(00) WITH text-w01.

ELSE.

*-----Get data from BSEG

CLEAR: lt_bseg, lt_bseg[].

SELECT belnr buzei gjahr hbkid wrbtr

INTO TABLE lt_bseg

FROM bseg

FOR ALL ENTRIES IN lt_tab

WHERE bukrs = l_bukrs

AND belnr = lt_tab-belnr

AND gjahr = l_gjahr

AND bschl = '50'

AND hbkid IN r_hbkid_b.

IF sy-subrc = 0.

*-------Process data

CLEAR: lt_tab.

LOOP AT lt_tab.

l_tabix = sy-tabix.

CLEAR: lt_bseg, l_bal.

READ TABLE lt_bseg WITH KEY belnr = lt_tab-belnr

gjahr = l_gjahr.

IF sy-subrc = 0.

CLEAR ll_gjahr.

CONCATENATE '20' lt_tab-xblnr+14(2) INTO ll_gjahr.

MOVE lt_tab-xblnr(10) TO lt_tab-xblnr.

CLEAR l_xblnr.

CONCATENATE lt_tab-belnr l_bukrs l_gjahr+2(2) INTO l_xblnr.

IF lt_tab-blart EQ 'Z3'.

CLEAR : ltt_bkpf, ltt_bkpf[], ll_wrbtr.

SELECT * INTO TABLE ltt_bkpf FROM bkpf

WHERE bukrs = l_bukrs

AND gjahr GE l_gjahr

AND xblnr = l_xblnr

AND blart EQ 'Z4'

AND xreversal EQ space.

IF sy-subrc EQ 0.

LOOP AT ltt_bkpf.

IF lt_tab-waers <> ltt_bkpf-waers.

CLEAR : lttt_bkpf, ll_xblnr.

CONCATENATE ltt_bkpf-belnr l_bukrs l_gjahr+2(2) INTO ll_xblnr.

SELECT SINGLE * INTO lttt_bkpf FROM bkpf

WHERE bukrs = l_bukrs

AND gjahr GE l_gjahr

AND xblnr = ll_xblnr

AND blart EQ 'Z5'

AND xreversal EQ space.

IF sy-subrc EQ 0.

ltt_bkpf = lttt_bkpf.

MODIFY ltt_bkpf.

ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

IF ltt_bkpf[] IS NOT INITIAL.

CLEAR : ltt_bseg, ltt_bseg[].

SELECT * INTO TABLE ltt_bseg FROM bseg

FOR ALL ENTRIES IN ltt_bkpf

WHERE bukrs = ltt_bkpf-bukrs

AND belnr = ltt_bkpf-belnr

AND gjahr = ltt_bkpf-gjahr

AND bschl = '40'

AND hkont IN r_hkont.

IF sy-subrc EQ 0.

LOOP AT ltt_bseg.

ll_wrbtr = ll_wrbtr + ltt_bseg-wrbtr.

ENDLOOP.

ENDIF.

ENDIF.

CLEAR l_bal.

l_bal = lt_bseg-wrbtr - ll_wrbtr.

IF l_bal LE 0 .

DELETE lt_tab INDEX l_tabix.

CONTINUE.

ENDIF.

ENDIF.

IF lt_tab-blart = 'XX'.

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

CLEAR l_belnr.

SELECT belnr INTO l_belnr FROM bkpf UP TO 1 ROWS

WHERE bukrs = l_bukrs

AND gjahr GE l_gjahr

AND xblnr = l_xblnr

AND blart EQ 'Z2'

AND xreversal EQ space.

ENDSELECT.

IF sy-subrc = 0 AND NOT l_belnr IS INITIAL.

DELETE lt_tab INDEX l_tabix.

CONTINUE.

ENDIF.

CLEAR : ltt_bkpf, ltt_bkpf[], ll_wrbtr.

SELECT * INTO TABLE ltt_bkpf FROM bkpf

WHERE bukrs = l_bukrs

AND gjahr GE l_gjahr

AND xblnr = l_xblnr

AND blart EQ 'Z4'

AND xreversal EQ space.

IF sy-subrc EQ 0.

LOOP AT ltt_bkpf.

IF lt_tab-waers <> ltt_bkpf-waers.

CLEAR : lttt_bkpf, ll_xblnr.

CONCATENATE ltt_bkpf-belnr l_bukrs l_gjahr+2(2) INTO ll_xblnr.

SELECT SINGLE * INTO lttt_bkpf FROM bkpf

WHERE bukrs = l_bukrs

AND gjahr GE l_gjahr

AND xblnr = ll_xblnr

AND blart EQ 'Z5'

AND xreversal EQ space.

IF sy-subrc EQ 0.

ltt_bkpf = lttt_bkpf.

MODIFY ltt_bkpf.

ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

IF ltt_bkpf[] IS NOT INITIAL.

CLEAR : ltt_bseg, ltt_bseg[].

SELECT * INTO TABLE ltt_bseg FROM bseg

FOR ALL ENTRIES IN ltt_bkpf

WHERE bukrs = ltt_bkpf-bukrs

AND belnr = ltt_bkpf-belnr

AND gjahr = ltt_bkpf-gjahr

AND bschl = '40'

AND hkont IN r_hkont.

IF sy-subrc EQ 0.

LOOP AT ltt_bseg.

ll_wrbtr = ll_wrbtr + ltt_bseg-wrbtr.

ENDLOOP.

ENDIF.

ENDIF.

CLEAR l_bal.

l_bal = lt_bseg-wrbtr - ll_wrbtr.

IF l_bal LE 0 .

DELETE lt_tab INDEX l_tabix.

CONTINUE.

ENDIF.

*----


customer number from invoicing document

SELECT SINGLE kunag waerk INTO (lt_tab-kunag, lt_tab-waerk) FROM vbrk

WHERE vbeln = lt_tab-xblnr.

IF sy-subrc <> 0.

SELECT SINGLE kunnr pswsl INTO (lt_tab-kunag, lt_tab-waerk)

FROM bseg

WHERE bukrs = l_bukrs

AND belnr = lt_tab-xblnr

AND gjahr = ll_gjahr.

ENDIF.

IF sy-subrc = 0.

*>>>>> Start of ECDK902801 : Added to get customer name1

CLEAR lt_tab-name1.

SELECT SINGLE name1 INTO lt_tab-name1 FROM kna1

WHERE kunnr = lt_tab-kunag.

IF sy-subrc <> 0.

*----


Do nothing

ENDIF.

*<<<<< End of ECDK902801

ENDIF.

  • ELSE.

  • CLEAR l_bal.

  • l_bal = lt_bseg-wrbtr.

ENDIF.

lt_tab-wrbtr = lt_bseg-wrbtr.

lt_tab-hbkid = lt_bseg-hbkid.

lt_tab-bal = l_bal.

*>>>>> Start of ECDK902801 : Deleted house bank description

*----


House bank description

  • CLEAR it_t012.

  • READ TABLE it_t012 WITH KEY hbkid = lt_tab-hbkid.

  • IF sy-subrc = 0.

  • CLEAR it_bnka.

  • READ TABLE it_bnka WITH KEY bankl = it_t012-bankl.

  • IF sy-subrc = 0.

  • lt_tab-banka = it_bnka-banka.

  • ENDIF.

  • ENDIF.

*<<<<< End of ECDK902801

MODIFY lt_tab INDEX l_tabix TRANSPORTING xblnr hbkid kunag waerk wrbtr name1 bal.

ELSE.

DELETE lt_tab INDEX l_tabix.

ENDIF.

ENDLOOP.

ENDIF.

ENDIF.

ENDIF.

IF lt_tab[] IS INITIAL.

MESSAGE s208(00) WITH text-w01.

ELSE.

MOVE 'BELNR' TO l_retfie.

SORT lt_tab BY belnr budat.

DATA : lt_ftab LIKE STANDARD TABLE OF dfies .

DATA : lt_rtab LIKE STANDARD TABLE OF ddshretval WITH HEADER LINE.

DATA : lt_dynm LIKE STANDARD TABLE OF dselc WITH HEADER LINE.

lt_dynm-fldname = 'F0002'.

lt_dynm-dyfldname = 'PR_BELNR'.

APPEND lt_dynm.

lt_dynm-fldname = 'F0007'.

lt_dynm-dyfldname = 'PR_VBELN'.

APPEND lt_dynm.

lt_dynm-fldname = 'F0008'.

lt_dynm-dyfldname = 'PR_WAERS'.

APPEND lt_dynm.

lt_dynm-fldname = 'F0009'.

lt_dynm-dyfldname = 'PR_KUNAG'.

APPEND lt_dynm.

lt_dynm-fldname = 'F0010'.

lt_dynm-dyfldname = 'PR_NAME'.

APPEND lt_dynm.

lt_dynm-fldname = 'F0013'.

lt_dynm-dyfldname = 'PR_OAMT'.

APPEND lt_dynm.

PERFORM field_lable USING lt_ftab.

*---Display data in drop down list

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = l_retfie

dynpprog = 'ZFB005_REALISATION_SMART'

dynpnr = '1000'

dynprofield = 'PR_BELNR'

value_org = 'S'

TABLES

value_tab = lt_tab

field_tab = lt_ftab

return_tab = lt_rtab

dynpfld_mapping = lt_dynm

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.

CLEAR w_kunag.

READ TABLE lt_rtab WITH KEY retfield = 'PR_KUNAG'.

IF sy-subrc = 0.

w_kunag = lt_rtab-fieldval.

ENDIF.

CLEAR l_name.

READ TABLE lt_rtab WITH KEY retfield = 'PR_NAME'.

IF sy-subrc = 0.

l_name = lt_rtab-fieldval.

ENDIF.

*>>>>> Start of ECDK902801 : Added to display Invoice amt

CLEAR l_waers.

READ TABLE lt_rtab WITH KEY retfield = 'PR_WAERS'.

IF sy-subrc = 0.

l_waers = lt_rtab-fieldval.

ENDIF.

CLEAR l_bal.

READ TABLE lt_rtab WITH KEY retfield = 'PR_OAMT'.

IF sy-subrc = 0.

  • l_bal1 = lt_rtab-fieldval.

MOVE lt_rtab-fieldval TO l_bal1.

ENDIF.

CLEAR l_belnr.

READ TABLE lt_rtab WITH KEY retfield = 'PR_BELNR'.

IF sy-subrc = 0.

l_belnr = lt_rtab-fieldval.

ENDIF.

READ TABLE lt_rtab WITH KEY retfield = 'PR_VBELN'.

IF sy-subrc = 0.

l_vbeln = lt_rtab-fieldval.

SELECT SINGLE netwr INTO pr_netwr FROM vbrk

WHERE vbeln = l_vbeln.

IF sy-subrc <> 0.

SELECT SINGLE wrbtr INTO pr_netwr

FROM bseg

WHERE bukrs = l_bukrs

AND belnr = l_vbeln

AND gjahr = l_gjahr.

ENDIF.

ENDIF.

lt_f4hlp-fieldname = 'PR_BELNR'.

MOVE l_belnr TO lt_f4hlp-fieldvalue.

APPEND lt_f4hlp.

*

lt_f4hlp-fieldname = 'PR_VBELN'.

MOVE l_vbeln TO lt_f4hlp-fieldvalue.

APPEND lt_f4hlp.

*

lt_f4hlp-fieldname = 'PR_NETWR'.

MOVE pr_netwr TO l_netwr.

MOVE l_netwr TO lt_f4hlp-fieldvalue.

APPEND lt_f4hlp.

*

lt_f4hlp-fieldname = 'PR_WAERS'.

IF l_waers IS INITIAL.

SELECT SINGLE waers INTO l_waers FROM bkpf

WHERE belnr EQ l_vbeln.

IF sy-subrc <> 0.

*----


Do nothing

ENDIF.

ENDIF.

MOVE l_waers TO lt_f4hlp-fieldvalue.

APPEND lt_f4hlp.

lt_f4hlp-fieldname = 'PR_KUNAG'.

MOVE w_kunag TO lt_f4hlp-fieldvalue.

APPEND lt_f4hlp.

*

lt_f4hlp-fieldname = 'PR_NAME'.

MOVE l_name TO lt_f4hlp-fieldvalue.

APPEND lt_f4hlp.

lt_f4hlp-fieldname = 'PR_OAMT'.

WRITE l_bal1 TO lt_f4hlp-fieldvalue.

APPEND lt_f4hlp.

lt_f4hlp-fieldname = 'PR_VALUT'.

WRITE l_bal1 TO lt_f4hlp-fieldvalue.

APPEND lt_f4hlp.

CALL FUNCTION 'DYNP_VALUES_UPDATE'

EXPORTING

dyname = 'ZFB005_EALISATION_SMART_Z4'

dynumb = '1000'

TABLES

dynpfields = lt_f4hlp

EXCEPTIONS

invalid_abapworkarea = 1

invalid_dynprofield = 2

invalid_dynproname = 3

invalid_dynpronummer = 4

invalid_request = 5

no_fielddescription = 6

undefind_error = 7

OTHERS = 8.

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.

  • End of ECDK902801

w_flag = 'C'.

ENDFORM. " f4_bills_discounting

&----


*& Form validate_bill_belnr

&----


  • Validate bills discounting currecncy document

----


  • --> p1 text

  • <-- p2 text

----


FORM validate_bill_belnr .

DATA : l_belnr LIKE bsis-belnr.

DATA : l_xblnr LIKE bkpf-xblnr.

DATA : ll_xblnr LIKE bkpf-xblnr.

DATA : l_bal TYPE wrbtr.

DATA : ltt_bkpf TYPE STANDARD TABLE OF bkpf WITH HEADER LINE.

DATA : lttt_bkpf TYPE bkpf.

DATA : ltt_bseg TYPE STANDARD TABLE OF bseg WITH HEADER LINE.

DATA : ll_wrbtr TYPE bseg-wrbtr.

IF r_hbkid[] IS INITIAL.

PERFORM get_dep_house_bank_gl TABLES r_hbkid

USING pr_bukrs pr_hbkid pr_budat.

ENDIF.

CLEAR wa_bsis_xx.

SELECT * INTO wa_bsis_xx UP TO 1 ROWS

FROM bsis

WHERE bukrs EQ pr_bukrs

AND hkont IN r_hkont

AND belnr EQ pr_belnr

AND gjahr EQ pr_gjahr

AND ( blart EQ 'XX' OR blart EQ 'Z3' ).

ENDSELECT.

IF sy-subrc <> 0.

CLEAR wa_bsis_xx.

MESSAGE e208(00) WITH text-e01.

ENDIF.

CLEAR wa_bseg_xx.

SELECT SINGLE * INTO wa_bseg_xx FROM bseg

WHERE bukrs = wa_bsis_xx-bukrs

AND belnr = wa_bsis_xx-belnr

AND buzei = wa_bsis_xx-buzei

AND gjahr = wa_bsis_xx-gjahr

AND bschl = '50'

AND hbkid IN r_hbkid

.

IF sy-subrc <> 0.

CLEAR wa_bsis_xx.

MESSAGE e208(00) WITH text-e01.

ENDIF.

SELECT SINGLE belnr INTO l_belnr FROM bkpf

WHERE bukrs = wa_bsis_xx-bukrs

AND belnr = wa_bsis_xx-belnr

AND gjahr = wa_bsis_xx-gjahr

AND xreversal <> 1.

IF sy-subrc <> 0.

CLEAR: wa_bsis_xx, wa_bseg_xx.

MESSAGE e208(00) WITH text-e07.

ENDIF.

CLEAR l_xblnr.

CONCATENATE wa_bsis_xx-belnr wa_bsis_xx-bukrs wa_bsis_xx-gjahr+2(2)

INTO l_xblnr.

SELECT belnr INTO l_belnr FROM bkpf UP TO 1 ROWS

WHERE bukrs = wa_bsis_xx-bukrs

AND gjahr GE wa_bsis_xx-gjahr

AND xblnr = l_xblnr

AND blart EQ 'Z2'

AND xreversal EQ space.

ENDSELECT.

IF sy-subrc = 0 AND NOT l_belnr IS INITIAL.

MESSAGE e398(00) WITH l_belnr 'Z2 document created for' pr_belnr space.

ENDIF.

CLEAR : ltt_bkpf, ltt_bkpf[], ll_wrbtr.

SELECT * INTO TABLE ltt_bkpf FROM bkpf

WHERE bukrs = wa_bsis_xx-bukrs

AND gjahr GE wa_bsis_xx-gjahr

AND xblnr = l_xblnr

AND blart EQ 'Z4'

AND xreversal EQ space.

IF sy-subrc EQ 0.

LOOP AT ltt_bkpf.

IF wa_bsis_xx-waers <> ltt_bkpf-waers.

CLEAR : lttt_bkpf, ll_xblnr.

CONCATENATE ltt_bkpf-belnr wa_bsis_xx-bukrs wa_bsis_xx-gjahr+2(2) INTO ll_xblnr.

SELECT SINGLE * INTO lttt_bkpf FROM bkpf

WHERE bukrs = wa_bsis_xx-bukrs

AND gjahr GE wa_bsis_xx-gjahr

AND xblnr = ll_xblnr

AND blart EQ 'Z5'

AND xreversal EQ space.

IF sy-subrc EQ 0.

ltt_bkpf = lttt_bkpf.

MODIFY ltt_bkpf.

ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

IF ltt_bkpf[] IS NOT INITIAL.

CLEAR : ltt_bseg, ltt_bseg[].

SELECT * INTO TABLE ltt_bseg FROM bseg

FOR ALL ENTRIES IN ltt_bkpf

WHERE bukrs = ltt_bkpf-bukrs

AND belnr = ltt_bkpf-belnr

AND gjahr = ltt_bkpf-gjahr

AND bschl = '40'

AND hkont IN r_hkont.

IF sy-subrc EQ 0.

LOOP AT ltt_bseg.

ll_wrbtr = ll_wrbtr + ltt_bseg-wrbtr.

ENDLOOP.

ENDIF.

ENDIF.

CLEAR l_bal.

l_bal = wa_bsis_xx-wrbtr - ll_wrbtr.

IF pr_oamt > l_bal.

MESSAGE e398(00) WITH 'Outstanding amount' pr_oamt 'is greater than balance amount' l_bal.

ENDIF.

ENDFORM. " validate_bill_belnr

&----


*& Form GET_DEP_HOUSE_BANK_GL

&----


  • text

----


  • -->P_R_HBKID text

  • -->P_L_BUKRS text

  • -->P_L_HBKID text

  • -->P_L_BUDAT text

----


FORM get_dep_house_bank_gl TABLES p_r_hbkid STRUCTURE r_hbkid

USING p_l_bukrs TYPE bukrs

p_l_hbkid TYPE hbkid

p_l_budat TYPE budat.

DATA : BEGIN OF lt_depbank OCCURS 0,

dep_housebank LIKE zft006_limit-dep_housebank,

END OF lt_depbank.

DATA : BEGIN OF lt_t012k OCCURS 0,

hkont LIKE t012k-hkont,

wekon LIKE t012k-wekon,

END OF lt_t012k.

*-Get dependent house bank from limit table

SELECT DISTINCT dep_housebank INTO TABLE lt_depbank FROM zft006_limit

WHERE bukrs = p_l_bukrs

AND hbkid = p_l_hbkid

AND zdate LE p_l_budat.

IF sy-subrc = 0.

LOOP AT lt_depbank.

p_r_hbkid-sign = 'I'.

p_r_hbkid-option = 'EQ'.

p_r_hbkid-low = lt_depbank-dep_housebank.

APPEND p_r_hbkid.

ENDLOOP.

ENDIF.

*-Get GL Account

IF NOT p_r_hbkid[] IS INITIAL.

CLEAR: lt_t012k, lt_t012k[].

SELECT hkont wekon FROM t012k

INTO CORRESPONDING FIELDS OF TABLE lt_t012k

WHERE bukrs = p_l_bukrs

AND hbkid IN p_r_hbkid.

IF sy-subrc = 0.

CLEAR: r_hkont, r_hkont[].

LOOP AT lt_t012k.

r_hkont-sign = 'I'.

r_hkont-option = 'EQ'.

IF NOT lt_t012k-hkont IS INITIAL.

r_hkont-low = lt_t012k-hkont.

APPEND r_hkont.

ENDIF.

IF NOT lt_t012k-wekon IS INITIAL.

r_hkont-low = lt_t012k-wekon.

APPEND r_hkont.

ENDIF.

ENDLOOP.

ENDIF.

SORT r_hkont BY low.

DELETE ADJACENT DUPLICATES FROM r_hkont.

ENDIF.

IF r_hkont[] IS INITIAL.

MESSAGE s208(00) WITH text-w01.

ENDIF.

IF NOT p_r_hbkid[] IS INITIAL.

CLEAR: it_t012, it_t012[].

SELECT hbkid banks bankl

INTO TABLE it_t012

FROM t012

WHERE bukrs = p_l_bukrs

AND hbkid IN p_r_hbkid.

IF sy-subrc = 0.

CLEAR : it_bnka, it_bnka[].

SELECT bankl banka

INTO TABLE it_bnka

FROM bnka

FOR ALL ENTRIES IN it_t012

WHERE banks = it_t012-banks

AND bankl = it_t012-bankl.

IF sy-subrc <> 0.

*----


Do Nothing

ENDIF.

ENDIF.

ENDIF.

*-Get dependent house bank from limit table

CLEAR: lt_depbank, lt_depbank[].

SELECT DISTINCT dep_housebank INTO TABLE lt_depbank FROM zft006_limit

WHERE bukrs = p_l_bukrs

AND hbkid = p_l_hbkid

AND dep_housebank LIKE 'B%'

AND zdate LE p_l_budat.

IF sy-subrc = 0.

CLEAR: r_hbkid_b, r_hbkid_b[].

LOOP AT lt_depbank.

r_hbkid_b-sign = 'I'.

r_hbkid_b-option = 'EQ'.

r_hbkid_b-low = lt_depbank-dep_housebank.

APPEND r_hbkid_b.

ENDLOOP.

ENDIF.

ENDFORM. " GET_DEP_HOUSE_BANK_GL

&----


*& Form create_document

&----


  • create accounting document Z4

----


  • -->text

----


FORM create_document.

DATA : l_xblnr LIKE bkpf-xblnr,

l_sgtxt LIKE bseg-sgtxt,

l_wrbtr LIKE bsis-wrbtr,

l_xrbtr(7) TYPE p,

l_xref1 LIKE bseg-xref1,

l_ukurs LIKE tcurr-ukurs,

l_dec LIKE tcurx-currdec.

DATA : l_dmbe2 TYPE bsis-dmbe2.

CLEAR : it_bdcdata, it_bdcmsg.

REFRESH : it_bdcdata, it_bdcmsg.

CONCATENATE pr_belnr pr_bukrs pr_gjahr+2(2) INTO l_xblnr.

*-First Screen

PERFORM bdc_dynpro USING 'SAPMF05A' '0122'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'BKPF-BLDAT' pr_bldat.

PERFORM bdc_field USING 'BKPF-BLART' 'Z4'.

PERFORM bdc_field USING 'BKPF-BUKRS' pr_bukrs.

PERFORM bdc_field USING 'BKPF-BUDAT' pr_budat.

PERFORM bdc_field USING 'BKPF-WAERS' pr_waers.

IF pr_waers <> 'USD'.

PERFORM bdc_field USING 'BKPF-KURSF' pr_kurs1.

ENDIF.

PERFORM bdc_field USING 'BKPF-XBLNR' l_xblnr.

PERFORM bdc_field USING 'RF05A-XPOS1(02)' 'X'.

*-Line items and GL Account

PERFORM bdc_field USING 'RF05A-NEWBS' '40'.

IF pr_waers <> 'USD' OR wa_bsis_xx-waers <> 'USD'.

IF pr_waers EQ 'INR' AND wa_bsis_xx-waers EQ 'INR'.

PERFORM bdc_field USING 'RF05A-NEWKO' wa_bsis_xx-hkont.

ELSE.

PERFORM bdc_field USING 'RF05A-NEWKO' '1215000900'.

ENDIF.

ELSE.

PERFORM bdc_field USING 'RF05A-NEWKO' wa_bsis_xx-hkont.

ENDIF.

*-Amount and Bank reference

PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.

PERFORM bdc_field USING 'BDC_CURSOR' 'BSEG-WRBTR'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ZK'.

*-Convert amount into USD

CLEAR l_wrbtr.

l_wrbtr = pr_oamt + pr_amt.

IF pr_waers <> 'USD' AND wa_bsis_xx-waers = 'USD'. " case3 EUR - USD

l_wrbtr = l_wrbtr * pr_kurs1.

l_wrbtr = ABS( l_wrbtr ).

ELSEIF pr_waers <> 'USD' AND wa_bsis_xx-waers = 'INR'. " case4 EUR - INR

l_wrbtr = l_wrbtr / pr_kurs2.

l_wrbtr = ABS( l_wrbtr ).

PERFORM convert_currency USING 'M' 'USD' pr_waers

CHANGING l_ukurs.

IF l_ukurs IS INITIAL.

MESSAGE i398(00) WITH text-i01 pr_waers space space.

EXIT.

ENDIF.

l_wrbtr = l_wrbtr * l_ukurs.

l_wrbtr = ABS( l_wrbtr ).

ELSEIF pr_waers = 'USD' AND wa_bsis_xx-waers = 'INR'. " case2 USD - INR

  • l_ukurs = 1 / pr_kurs2.

l_wrbtr = l_wrbtr / pr_kurs2.

l_wrbtr = ABS( l_wrbtr ).

ENDIF.

*-Get decimals places

CLEAR l_dec.

CALL FUNCTION 'FWOS_CURRENCY_DECIMALS_READ'

EXPORTING

i_currency = pr_waers

IMPORTING

e_decimals = l_dec.

IF l_dec EQ 0.

MOVE l_wrbtr TO l_xrbtr.

PERFORM bdc_field USING 'BSEG-WRBTR' l_xrbtr.

ELSE.

PERFORM bdc_field USING 'BSEG-WRBTR' l_wrbtr.

ENDIF.

PERFORM bdc_field USING 'BSEG-ZUONR' pr_zuonr.

CLEAR l_sgtxt.

CONCATENATE text-t01 pr_belnr INTO l_sgtxt

SEPARATED BY space.

PERFORM bdc_field USING 'BSEG-SGTXT' l_sgtxt.

SY-DATLO = pr_valut.

PERFORM bdc_field USING 'BSEG-VALUT' pr_valut.

*-Business Area

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR' 'COBL-GSBER'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

PERFORM bdc_field USING 'COBL-GSBER' wa_bseg_xx-gsber.

*-House bank

PERFORM bdc_dynpro USING 'SAPMF05A' '0330'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.

PERFORM bdc_field USING 'BDC_OKCODE' '=SL'.

CLEAR l_xref1.

CONCATENATE pr_belnr pr_gjahr+2(2) INTO l_xref1.

PERFORM bdc_field USING 'BSEG-XREF1' l_xref1.

CLEAR l_dmbe2.

IF pr_waers <> 'USD' OR wa_bsis_xx-waers <> 'USD'.

l_dmbe2 = pr_oamt + pr_amt.

ELSE.

l_dmbe2 = ( ( wa_bseg_xx-dmbe2 * pr_oamt ) / wa_bseg_xx-dmbtr ) + ( pr_amt * pr_kurs2 ).

ENDIF.

PERFORM bdc_field USING 'BSEG-DMBE2' l_dmbe2.

PERFORM bdc_field USING 'BSEG-HBKID' wa_bseg_xx-hbkid.

*-clearing document

PERFORM bdc_dynpro USING 'SAPMF05A' '0710'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-XPOS1(03)'.

PERFORM bdc_field USING 'BDC_OKCODE' '=PA'.

PERFORM bdc_field USING 'RF05A-AGBUK' pr_bukrs.

PERFORM bdc_field USING 'RF05A-AGKON' w_kunag.

PERFORM bdc_field USING 'RF05A-AGKOA' 'D'.

PERFORM bdc_field USING 'RF05A-XNOPS' 'X'.

PERFORM bdc_field USING 'RF05A-XPOS1(03)' 'X'.

PERFORM bdc_dynpro USING 'SAPMF05A' '0731'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-SEL02(01)'.

PERFORM bdc_field USING 'BDC_OKCODE' '=PA'.

PERFORM bdc_field USING 'RF05A-SEL01(01)' pr_vbeln.

PERFORM bdc_field USING 'RF05A-SEL02(01)' pr_vbeln.

  • PERFORM bdc_dynpro USING 'SAPDF05X' '3100'.

  • PERFORM bdc_field USING 'BDC_OKCODE' '=AB'.

*

*

  • PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.

  • PERFORM bdc_field USING 'BDC_OKCODE' '=BS'.

CALL FUNCTION 'ABAP4_CALL_TRANSACTION'

EXPORTING

tcode = 'FB05'

mode_val = 'E'

update_val = 'S'

TABLES

using_tab = it_bdcdata

mess_tab = it_bdcmsg

EXCEPTIONS

call_transaction_denied = 1

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

ENDFORM. " create_document

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

  • Form bdc_dynpro

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

  • text

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

  • -->PROGRAM

  • -->DYNPRO text

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

FORM bdc_dynpro USING program TYPE bdc_prog

dynpro TYPE bdc_dynr.

it_bdcdata-program = program.

it_bdcdata-dynpro = dynpro.

it_bdcdata-dynbegin = 'X'.

APPEND it_bdcdata.

CLEAR it_bdcdata.

ENDFORM. " bdc_dynpro

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

  • Form bdc_field

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

  • -->FNAM Field Name

  • -->FVAL Field Value

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

FORM bdc_field USING fnam TYPE fnam_____4

fval TYPE any.

it_bdcdata-fnam = fnam.

  • it_bdcdata-fval = fval.

WRITE fval TO it_bdcdata-fval LEFT-JUSTIFIED.

APPEND it_bdcdata.

CLEAR it_bdcdata.

ENDFORM. " bdc_field

&----


*& Form create_document_z5

&----


  • Create Accounting document

----


  • -->P_W_BELNR text

----


FORM create_document_z5 USING p_w_belnr TYPE belnr_d.

DATA : l_xblnr LIKE bkpf-xblnr,

l_sgtxt LIKE bseg-sgtxt,

l_xref1 LIKE bseg-xref1,

l_hkont LIKE bseg-hkont,

l_wrbtr LIKE bseg-wrbtr.

CLEAR : it_bdcdata, it_bdcmsg.

REFRESH : it_bdcdata, it_bdcmsg.

CONCATENATE p_w_belnr pr_bukrs pr_gjahr+2(2) INTO l_xblnr.

*-First Screen

PERFORM bdc_dynpro USING 'SAPMF05A' '0122'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'BKPF-BLDAT' pr_bldat.

PERFORM bdc_field USING 'BKPF-BLART' 'Z5'.

PERFORM bdc_field USING 'BKPF-BUKRS' pr_bukrs.

PERFORM bdc_field USING 'BKPF-BUDAT' pr_budat.

IF wa_bsis_xx-waers EQ 'USD'.

PERFORM bdc_field USING 'BKPF-WAERS' 'USD'.

ELSEIF wa_bsis_xx-waers EQ 'INR'.

PERFORM bdc_field USING 'BKPF-WAERS' 'INR'.

PERFORM bdc_field USING 'BKPF-KURSF' pr_kurs2.

ENDIF.

PERFORM bdc_field USING 'BKPF-XBLNR' l_xblnr.

PERFORM bdc_field USING 'RF05A-XPOS1(02)' 'X'.

*-Line items and GL Account

PERFORM bdc_field USING 'RF05A-NEWBS' '40'.

SELECT wekon INTO l_hkont FROM t012k UP TO 1 ROWS

WHERE bukrs = pr_bukrs

AND hbkid = wa_bseg_xx-hbkid

AND waers = wa_bsis_xx-waers.

ENDSELECT.

IF sy-subrc = 0.

PERFORM bdc_field USING 'RF05A-NEWKO' l_hkont.

ENDIF.

*-Amount and Bank reference

PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.

PERFORM bdc_field USING 'BDC_CURSOR' 'BSEG-WRBTR'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ZK'.

CLEAR l_wrbtr.

SELECT wrbtr INTO l_wrbtr FROM bseg UP TO 1 ROWS

WHERE bukrs = pr_bukrs

AND belnr = p_w_belnr

AND gjahr = pr_gjahr

AND bschl = '40'.

ENDSELECT.

*-Amount

l_wrbtr = pr_oamt.

  • IF wa_bsis_xx-waers EQ 'INR' AND pr_waers EQ 'USD'. "CASE 2 USD-INR

    • l_wrbtr = l_wrbtr * pr_kurs2 .

    • l_wrbtr = ABS( l_wrbtr ).

  • l_wrbtr = wa_bsis_xx-wrbtr.

*

*

  • ELSEIF wa_bsis_xx-waers EQ 'INR' AND pr_waers NE 'USD'. "CASE4 EUR - INR

  • l_wrbtr = wa_bsis_xx-wrbtr.

*

  • ELSEIF wa_bsis_xx-waers EQ 'USD' AND pr_waers NE 'USD'. "CASE3 EUR -USD

  • l_wrbtr = wa_bsis_xx-wrbtr.

*

  • ENDIF.

PERFORM bdc_field USING 'BSEG-WRBTR' l_wrbtr.

PERFORM bdc_field USING 'BSEG-ZUONR' pr_zuonr.

CLEAR l_sgtxt.

CONCATENATE text-t01 pr_belnr INTO l_sgtxt

SEPARATED BY space.

PERFORM bdc_field USING 'BSEG-SGTXT' l_sgtxt.

SY-DATLO = pr_valut.

PERFORM bdc_field USING 'BSEG-VALUT' pr_valut.

*-Business Area

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR' 'COBL-GSBER'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

PERFORM bdc_field USING 'COBL-GSBER' wa_bseg_xx-gsber.

*-House bank

PERFORM bdc_dynpro USING 'SAPMF05A' '0330'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.

PERFORM bdc_field USING 'BDC_OKCODE' '=SL'.

CLEAR l_xref1.

CONCATENATE pr_belnr pr_gjahr+2(2) INTO l_xref1.

PERFORM bdc_field USING 'BSEG-XREF1' l_xref1.

PERFORM bdc_field USING 'BSEG-HBKID' wa_bseg_xx-hbkid.

*-clearing document

PERFORM bdc_dynpro USING 'SAPMF05A' '0710'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-XPOS1(03)'.

PERFORM bdc_field USING 'BDC_OKCODE' '=PA'.

PERFORM bdc_field USING 'RF05A-AGBUK' pr_bukrs.

PERFORM bdc_field USING 'RF05A-AGKON' '1215000900'.

PERFORM bdc_field USING 'RF05A-AGKOA' 'S'.

PERFORM bdc_field USING 'RF05A-XNOPS' 'X'.

PERFORM bdc_field USING 'RF05A-XPOS1(03)' 'X'.

PERFORM bdc_dynpro USING 'SAPMF05A' '0731'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-SEL02(01)'.

PERFORM bdc_field USING 'BDC_OKCODE' '=PA'.

PERFORM bdc_field USING 'RF05A-SEL01(01)' p_w_belnr.

PERFORM bdc_field USING 'RF05A-SEL02(01)' p_w_belnr.

PERFORM bdc_dynpro USING 'SAPDF05X' '3100'.

PERFORM bdc_field USING 'BDC_OKCODE' '=AB'.

  • PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.

  • PERFORM bdc_field USING 'BDC_OKCODE' '=BS'.

*

  • PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.

  • PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.

CALL FUNCTION 'ABAP4_CALL_TRANSACTION'

EXPORTING

tcode = 'FB05'

mode_val = 'E'

update_val = 'S'

TABLES

using_tab = it_bdcdata

mess_tab = it_bdcmsg

EXCEPTIONS

call_transaction_denied = 1

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

ENDFORM. " create_document_z5

&----


*& Form convert_currency

&----


  • convert_currency

----


  • -->P_W_BELNR text

----


FORM convert_currency USING p_type TYPE kurst_curr

p_fcurr TYPE fcurr_curr

p_tcurr TYPE tcurr_curr

CHANGING p_ukurs TYPE ukurs_curr.

DATA : l_gdatu LIKE tcurr-gdatu,

l_ukurs LIKE tcurr-ukurs,

l_type TYPE kurst_curr.

CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'

EXPORTING

input = pr_budat

IMPORTING

output = l_gdatu.

MOVE p_type TO l_type.

IF p_tcurr EQ 'EUR' OR p_fcurr EQ 'EUR'.

l_type = 'EURX'.

ENDIF.

CLEAR p_ukurs.

SELECT ukurs INTO p_ukurs UP TO 1 ROWS

FROM tcurr

WHERE kurst = l_type

AND fcurr = p_fcurr

AND tcurr = p_tcurr

AND gdatu LE l_gdatu.

ENDSELECT.

IF sy-subrc <> 0.

CLEAR l_ukurs.

SELECT ukurs INTO l_ukurs UP TO 1 ROWS

FROM tcurr

WHERE kurst = l_type

AND fcurr = p_tcurr

AND tcurr = p_fcurr

AND gdatu LE l_gdatu.

ENDSELECT.

IF sy-subrc = 0.

p_ukurs = 1 / l_ukurs.

ENDIF.

ENDIF.

IF p_ukurs < 0.

CLEAR l_ukurs.

l_ukurs = 1 / p_ukurs.

CLEAR p_ukurs.

MOVE l_ukurs TO p_ukurs.

ENDIF.

p_ukurs = ABS( p_ukurs ).

ENDFORM. "convert_currency

&----


*& Form CLEAR_ALL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM clear_all .

CLEAR: r_hbkid,

r_hbkid[],

r_hkont,

r_hkont[],

r_hbkid_b,

r_hbkid_b[],

w_belnr,

w_kunag,

wa_bsis_xx,

wa_bseg_xx,

it_t012,

it_t012[],

it_bnka,

it_bnka[],

it_bdcdata,

it_bdcdata[],

it_bdcmsg,

it_bdcmsg[],

w_flag.

ENDFORM. " CLEAR_ALL

*Any declarations for classes, methods and interfaces. *

*********************----


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

  • E N D O F A B A P *

*********************----


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

&----


*& Form field_lable

&----


  • text

----


  • -->P_LT_FTAB text

----


FORM field_lable USING p_lt_ftab TYPE table .

DATA : lwa_mapping TYPE dfies.

DATA : lw_tabname TYPE ddobjname .

DATA : lw_fieldname TYPE dfies-lfieldname .

REFRESH p_lt_ftab.

*--BLART

PERFORM get_field_info USING 'BSIS' 'BLART'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0001'.

lwa_mapping-position = 1.

lwa_mapping-offset = 0.

APPEND lwa_mapping TO p_lt_ftab.

*--BELNR

PERFORM get_field_info USING 'BSIS' 'BELNR'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0002'.

lwa_mapping-position = 2.

lwa_mapping-offset = 4.

APPEND lwa_mapping TO p_lt_ftab.

*--BUDAT

PERFORM get_field_info USING 'BSIS' 'BUDAT'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0003'.

lwa_mapping-position = 3.

lwa_mapping-offset = 24.

APPEND lwa_mapping TO p_lt_ftab.

*--ZFBDT

PERFORM get_field_info USING 'BSIS' 'ZFBDT'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0004'.

lwa_mapping-position = 4.

lwa_mapping-offset = 40.

APPEND lwa_mapping TO p_lt_ftab.

*--HKONT

PERFORM get_field_info USING 'BSEG' 'HKONT'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0005'.

lwa_mapping-position = 5.

lwa_mapping-offset = 56.

APPEND lwa_mapping TO p_lt_ftab.

*--HBKID

PERFORM get_field_info USING 'BSEG' 'HBKID'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0006'.

lwa_mapping-position = 6.

lwa_mapping-offset = 76.

APPEND lwa_mapping TO p_lt_ftab.

*--XBLNR

PERFORM get_field_info USING 'BKPF' 'XBLNR'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0007'.

lwa_mapping-position = 7.

lwa_mapping-offset = 86.

lwa_mapping-reptext = text-h07.

lwa_mapping-fieldtext = text-h07.

lwa_mapping-scrtext_s = text-h07.

lwa_mapping-scrtext_m = text-h07.

lwa_mapping-scrtext_l = text-h07.

APPEND lwa_mapping TO p_lt_ftab.

*--WAERK

PERFORM get_field_info USING 'VBRK' 'WAERK'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0008'.

lwa_mapping-position = 8.

lwa_mapping-offset = 118.

lwa_mapping-reptext = text-h08.

lwa_mapping-fieldtext = text-h08.

lwa_mapping-scrtext_s = text-h08.

lwa_mapping-scrtext_m = text-h08.

lwa_mapping-scrtext_l = text-h08.

APPEND lwa_mapping TO p_lt_ftab.

*--KUNAG

PERFORM get_field_info USING 'VBRK' 'KUNAG'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0009'.

lwa_mapping-position = 9.

lwa_mapping-offset = 128.

APPEND lwa_mapping TO p_lt_ftab.

*--NAME1

PERFORM get_field_info USING 'KNA1' 'NAME1'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0010'.

lwa_mapping-position = 10.

lwa_mapping-offset = 148.

lwa_mapping-reptext = text-h10.

lwa_mapping-fieldtext = text-h10.

lwa_mapping-scrtext_s = text-h10.

lwa_mapping-scrtext_m = text-h10.

lwa_mapping-scrtext_l = text-h10.

APPEND lwa_mapping TO p_lt_ftab.

*--WAERS

PERFORM get_field_info USING 'BSIS' 'WAERS'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0011'.

lwa_mapping-position = 11.

lwa_mapping-offset = 218.

APPEND lwa_mapping TO p_lt_ftab.

*--WRBTR

PERFORM get_field_info USING 'BSEG' 'WRBTR'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0012'.

lwa_mapping-position = 12.

lwa_mapping-offset = 228.

lwa_mapping-reptext = text-h12.

lwa_mapping-fieldtext = text-h12.

lwa_mapping-scrtext_s = text-h12.

lwa_mapping-scrtext_m = text-h12.

lwa_mapping-scrtext_l = text-h12.

APPEND lwa_mapping TO p_lt_ftab.

*--WRBTR

PERFORM get_field_info USING 'BSEG' 'WRBTR'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0013'.

lwa_mapping-position = 13.

lwa_mapping-offset = 235.

lwa_mapping-reptext = text-h13.

lwa_mapping-fieldtext = text-h13.

lwa_mapping-scrtext_s = text-h13.

lwa_mapping-scrtext_m = text-h13.

lwa_mapping-scrtext_l = text-h13.

APPEND lwa_mapping TO p_lt_ftab.

PERFORM get_field_info USING 'BSIS' 'ZUONR'

CHANGING lwa_mapping.

lwa_mapping-fieldname = 'F0014'.

lwa_mapping-position = 14.

lwa_mapping-offset = 247.

lwa_mapping-reptext = text-h14.

lwa_mapping-fieldtext = text-h14.

lwa_mapping-scrtext_s = text-h14.

lwa_mapping-scrtext_m = text-h14.

lwa_mapping-scrtext_l = text-h14.

APPEND lwa_mapping TO p_lt_ftab.

ENDFORM. " field_lable

&----


*& Form get_field_info

&----


  • text

----


  • -->P_3773 text

  • -->P_3774 text

  • <--P_LWA_MAPPING text

----


FORM get_field_info USING value(p_tabname)

value(p_fieldname)

CHANGING p_lwa_mapping.

  • Get Field attributes

CLEAR p_lwa_mapping.

CALL FUNCTION 'DDIF_FIELDINFO_GET'

EXPORTING

tabname = p_tabname

lfieldname = p_fieldname

IMPORTING

dfies_wa = p_lwa_mapping

EXCEPTIONS

not_found = 1

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

ENDFORM. " get_field_info

3 REPLIES 3
Read only

Former Member
0 Likes
586

is there any solution???

Read only

0 Likes
586

hi

Witout databse tables made by you its not possible to debug the program.

you need to use debugger that will clear you the problem.

Aditya

Read only

0 Likes
586

thanks 4 giving answer.I solved it.