Application Development 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: 

how to rectify the errors through call transaction metod in bdc

Former Member
0 Kudos

how to rectify the errors through call transaction metod in bdc

5 REPLIES 5

Former Member
0 Kudos

If you provided a SESSION name in the process.. you should be able to go to SM35 and process them manually.

Former Member
0 Kudos

We will be having a structure BDCMSGCOLL which holds the error messages generated while doing call transaction. So we have to declare an internal table with bdcmsgcoll strucure.

i.e.CALL TRANSACTION 'MM01' USING <ITAB> MODE 'N' MESSAGES INTO IT_BDCMSGCOLL.

We can print those errors.

It will have msgtyp,msgnr,msgid etc.

loop at that it_bdcmsgcoll where msgtyp = 'E'.

select single text from t100 into vtext where sprsl = 'E' and arbgb = it_bdcmsgcoll-msgid and

msgnr = it_bdcmsgcoll-msgnr.

write:.....

endloop.

or we can use

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = pl_bdcmsgcoll-msgid

lang = '-E'

no = pl_bdcmsgcoll-msgnr

v1 = pl_bdcmsgcoll-msgv1

v2 = pl_bdcmsgcoll-msgv2

v3 = pl_bdcmsgcoll-msgv3

v4 = pl_bdcmsgcoll-msgv4

IMPORTING

msg = pl_message

EXCEPTIONS

not_found = 1

OTHERS = 2.

IF sy-subrc <> 0.

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

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

ENDIF.

Reward points if helpful.

RamaKrishna C

Former Member
0 Kudos

Hi ,

View the highlited part of the below code.

REPORT ygfrivat1 NO STANDARD PAGE HEADING

LINE-SIZE 165

MESSAGE-ID yif_groc.

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

  • Program YGFRIVAT1

  • Function Report to Upload the VAT Adjustment File.

  • Author ARENAPU

  • Date 11.05.2007

  • PMTS AM12810157

  • Transport G6DK937834

*----


  • Description:

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

  • Modification log:

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

  • 1. Changed by :

  • Changed on :

  • PMTS :

  • Transport :

  • Tag :

  • Description :

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

*----


  • T A B L E S D E C L A R A T I O N S

*----


TABLES: edidc, "Control record (IDoc)

edids, "Status Record (IDoc)

t001w.

  • Internal Tables Declaration.

  • Internal table to hold data from table EDIDS

DATA: BEGIN OF t_edids OCCURS 0,

docnum LIKE edids-docnum,

logdat LIKE edids-logdat,

logtim LIKE edids-logtim,

countr LIKE edids-countr,

credat LIKE edids-credat,

uname LIKE edids-uname,

END OF t_edids,

  • Internal table to hold data from table EDIDC

BEGIN OF t_edidc OCCURS 0,

docnum LIKE edidc-docnum,

rcvprt LIKE edidc-rcvprt,

rcvprn LIKE edidc-rcvprn,

credat LIKE edidc-credat,

END OF t_edidc,

  • Internal table to hold data from upload file

BEGIN OF t_tab OCCURS 0,

cust(10), "site/customer number

date(10), "transaction date

currency(04), "currency

extnbr(15), "external reference number

pos-cont(05), "POS controler

pos-id(25), "POS id

cashier(10), "cashier name

qualif(04), "qualifier of the article

matnr(25), "article number

qty(10), "quantity

sale(16), "sale value

pos-tr(04), "POS transfert type

paymeth(04), "payment method

final(35), "final price

tarcur(04), "target currency

assign(35), "assignment day

error,

END OF t_tab,

  • Internal table for Report display.

BEGIN OF t_tab1 OCCURS 0,

cust(10), "site/customer number

date(10), "transaction date

currency(04), "currency

extnbr(15), "external reference number

pos-cont(05), "POS controler

pos-id(25), "POS id

cashier(10), "cashier name

qualif(04), "qualifier of the article

matnr(25), "article number

qty(16) TYPE p DECIMALS 2, "quantity

sale(16) TYPE p DECIMALS 2, "sale value

pos-tr(04), "POS transfert type

paymeth(04), "payment method

final(16) TYPE p DECIMALS 2, "final price

tarcur(04), "target currency

assign(35), "assignment day

END OF t_tab1,

t_tab_temp LIKE t_tab OCCURS 0 WITH HEADER LINE,

  • Internal table to Validate Customer no.

BEGIN OF t_check OCCURS 0,

werks LIKE t001w-werks,

vkorg LIKE t001w-vkorg,

value(40),

END OF t_check,

t_check_temp LIKE t_check OCCURS 0 WITH HEADER LINE.

  • Internal table to hold data from table ZCS_PARAM.

DATA: BEGIN OF t_zcs_param OCCURS 0.

INCLUDE STRUCTURE zcs_param.

DATA: vkorg LIKE t001w-vkorg,

END OF t_zcs_param.

*Internal table to hold Messages.

DATA: BEGIN OF t_message OCCURS 0,

msgnum TYPE msgnum,

msgtyp TYPE msgtyp,

msgtxt TYPE msgtext,

END OF t_message.

*Work area for table t_message

DATA : w_message LIKE LINE OF t_message.

  • Internal table to hold BDC data

DATA: t_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,

  • Internal table to collect error messages

messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

*Internal table to hold messages from call transaction

DATA: BEGIN OF t_text OCCURS 0,

desc(150),

msgtxt(100),

END OF t_text.

*----


  • D A T A D E C L A R A T I O N S

*----


DATA: n TYPE i,

gv_status(11) TYPE c, "Shows status, Production or Test

gv_exit TYPE c, "Exit Flag

gv_qty(16) TYPE p DECIMALS 2, "Variable to sum Quantity

gv_sale(16) TYPE p DECIMALS 2, "Variable to sum Amount

gv_final(16) TYPE p DECIMALS 2. "Variable to sum Final Amount

DATA: w_text(100),

gv_mode TYPE c,

error TYPE c. "Flag to Indicate error.

----


  • CONSTANSTS DECLARATION

----


CONSTANTS : gc_fieldname LIKE dynpread-fieldname VALUE 'P_FNAME',

gc_seq_no LIKE zcs_param-seq_no VALUE '00110',

gc_object LIKE zcs_param-object VALUE 'YGFVAT',

gc_paraname LIKE zcs_param-paraname VALUE 'VKORG',

gc_back TYPE c VALUE 'N',

gc_error TYPE c VALUE 'E',

gc_all TYPE c VALUE 'A'.

----


  • S E L E C T I O N S C R E E N

----


SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.

PARAMETERS : p_fname LIKE rlgrap-filename OBLIGATORY.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) text-002 FOR FIELD p_test.

PARAMETERS : p_test AS CHECKBOX.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK a1.

SELECTION-SCREEN BEGIN OF BLOCK a2 WITH FRAME TITLE text-006.

PARAMETERS : rb_back RADIOBUTTON GROUP rb1 DEFAULT 'X',

rb_error RADIOBUTTON GROUP rb1,

rb_all RADIOBUTTON GROUP rb1.

SELECTION-SCREEN END OF BLOCK a2.

----


  • AT SELECTION SCREEN

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.

*Subroutine to provide F4 help for file name

PERFORM fr_get_filename.

----


  • I N I T I A L I Z A T I O N

----


INITIALIZATION.

*Subroutine to check authorization.

  • PERFORM fr_authority_check.

----


  • T O P - O F - P A G E

----


TOP-OF-PAGE.

*Subroutine to diplay header

PERFORM fr_display_header.

----


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

----


START-OF-SELECTION.

*Subroutine to upload data from presentation server.

PERFORM fr_upload_data.

*Subroutine to validate records from uploaded file.

PERFORM fr_validate_data.

*Subroutine to build report internal table.

PERFORM fr_build_rep.

----


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

----


END-OF-SELECTION.

*Subroutine to display report.

PERFORM fr_write_report.

----


  • F O R M S U B R O U T I N E S

----


&----


*& Form fr_get_filename

&----


  • text

----


FORM fr_get_filename.

DATA : lv_repid LIKE sy-repid, " Report id

lv_file LIKE ibipparms-path. " File Path

lv_repid = sy-repid.

  • F4 help for file path.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = lv_repid

dynpro_number = syst-dynnr

field_name = gc_fieldname " p_fname1

IMPORTING

file_name = lv_file.

IF NOT lv_file EQ space.

p_fname = lv_file.

ELSE.

MESSAGE e999 WITH 'Invalid Path'(005).

ENDIF.

ENDFORM. " fr_get_filename

&----


*& Form fr_upload_data

&----


  • text

----


FORM fr_upload_data.

DATA: lv_fname TYPE string.

CLEAR lv_fname.

lv_fname = p_fname.

  • Uploading file from PC or presentation server to internal table.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = lv_fname

filetype = 'ASC'

has_field_separator = 'X'

TABLES

data_tab = t_tab

EXCEPTIONS

file_open_error = 1.

IF sy-subrc <> 0.

DESCRIBE TABLE t_message LINES n.

w_message-msgnum = n + 1.

w_message-msgtyp = 'E'.

MOVE text-m01 TO w_message-msgtxt.

APPEND w_message TO t_message.

  • Subroutine for writing log.

PERFORM fr_write_log.

ENDIF.

ENDFORM. " fr_upload_data

&----


*& Form fr_validate_data

&----


  • text

----


FORM fr_validate_data.

DATA : lv_lines1 TYPE i,

lv_lines2 TYPE i.

*Obtain Status depending on Check box selected.

IF p_test IS INITIAL.

gv_status = 'PRODUCTION'.

ELSE.

gv_status = 'TEST RUN'.

ENDIF.

*Batch Mode

CLEAR gv_mode.

IF rb_back EQ 'X'. "No Display

MOVE gc_back TO gv_mode.

ELSEIF rb_error EQ 'X'. "Error Only

MOVE gc_error TO gv_mode.

ELSEIF rb_all EQ 'X'. "All Screens

MOVE gc_all TO gv_mode.

ENDIF.

IF NOT t_tab[] IS INITIAL.

SORT t_tab BY cust.

REFRESH t_tab_temp.

t_tab_temp[] = t_tab[].

SORT t_tab_temp BY cust.

DELETE ADJACENT DUPLICATES FROM t_tab_temp COMPARING cust.

IF NOT t_tab_temp[] IS INITIAL.

SELECT werks vkorg FROM t001w

INTO TABLE t_check

FOR ALL ENTRIES IN t_tab_temp

WHERE werks = t_tab_temp-cust+0(4).

IF sy-subrc = 0.

SORT t_check BY werks.

ENDIF.

LOOP AT t_check.

IF t_check-vkorg <> ' '.

MOVE t_check-vkorg TO t_check-value.

MODIFY t_check TRANSPORTING value.

ENDIF.

ENDLOOP.

ENDIF.

FREE t_tab_temp.

ENDIF.

IF NOT t_check[] IS INITIAL.

REFRESH t_check_temp.

t_check_temp[] = t_check[].

SORT t_check_temp BY value.

DELETE ADJACENT DUPLICATES FROM t_check_temp COMPARING value.

IF NOT t_check_temp[] IS INITIAL.

SELECT * FROM zcs_param INTO TABLE t_zcs_param

FOR ALL ENTRIES IN t_check_temp

WHERE seq_no EQ gc_seq_no

AND object EQ gc_object

AND paraname EQ gc_paraname

AND value EQ t_check_temp-value.

IF sy-subrc = 0.

SORT t_zcs_param BY value.

ENDIF.

ENDIF.

FREE t_check_temp.

ENDIF.

IF NOT t_tab[] IS INITIAL.

LOOP AT t_tab.

READ TABLE t_check WITH KEY werks = t_tab-cust BINARY SEARCH.

IF sy-subrc <> 0.

MOVE 'X' TO t_tab-error.

MODIFY t_tab TRANSPORTING error.

DESCRIBE TABLE t_message LINES n.

w_message-msgnum = n + 1.

w_message-msgtyp = 'E'.

CONCATENATE t_tab-cust text-030

INTO w_message-msgtxt SEPARATED BY space.

APPEND w_message TO t_message.

  • Subroutine for writing log.

PERFORM fr_write_log.

EXIT.

ELSE.

READ TABLE t_zcs_param WITH KEY value = t_check-vkorg

BINARY SEARCH.

IF sy-subrc <> 0.

MOVE 'X' TO t_tab-error.

MODIFY t_tab TRANSPORTING error.

DESCRIBE TABLE t_message LINES n.

w_message-msgnum = n + 1.

w_message-msgtyp = 'E'.

CONCATENATE text-003 t_tab-cust text-004 t_check-vkorg

INTO w_message-msgtxt SEPARATED BY space.

APPEND w_message TO t_message.

  • Subroutine for writing log.

PERFORM fr_write_log.

EXIT.

ELSE.

PERFORM fr_format_tab.

ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

DESCRIBE TABLE t_tab LINES lv_lines1.

IF lv_lines1 <> 0.

DELETE t_tab WHERE error EQ 'X'.

ENDIF.

DESCRIBE TABLE t_tab LINES lv_lines2.

IF lv_lines2 <> 0.

IF lv_lines2 <> lv_lines1.

EXIT.

ELSE.

IF p_test IS INITIAL.

LOOP AT t_tab.

*Subroutine to build BDC table

PERFORM fr_fill_bdctab.

*Subroutine to Post Data into SAP.

PERFORM fr_data_posting.

ENDLOOP.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " fr_validate_data

&----


*& Form fr_write_log

&----


  • text

----


FORM fr_write_log.

CLEAR error.

error = 'X'.

WRITE:/1 'Msg No'(027), 10 'Type'(028), 20 'Text'(029).

ULINE:/1(120).

FORMAT RESET.

LOOP AT t_message.

IF t_message-msgtyp = 'E'.

FORMAT COLOR 6 INTENSIFIED .

ELSEIF t_message-msgtyp = 'W'.

FORMAT COLOR 3 INTENSIFIED .

ELSEIF t_message-msgtyp = 'I'.

FORMAT COLOR 5 INTENSIFIED .

ENDIF.

WRITE:/1 t_message-msgnum,

10 t_message-msgtyp,

20 t_message-msgtxt.

FORMAT RESET.

ENDLOOP.

ULINE:/1(120).

ENDFORM. " fr_write_log

&----


*& Form fr_write_report

&----


  • text

----


FORM fr_write_report.

CLEAR gv_exit.

LOOP AT t_message.

IF t_message-msgtyp = 'E'.

gv_exit = 'X'.

EXIT.

ENDIF.

ENDLOOP.

IF NOT gv_exit IS INITIAL.

EXIT.

ELSE.

PERFORM fr_display_report.

IF NOT t_text[] IS INITIAL.

  • Subroutine for Display Call Transaction messages.

PERFORM fr_write_msg.

ENDIF.

ENDIF.

ENDFORM. " fr_write_report

&----


*& Form fr_display_report

&----


  • text

----


FORM fr_display_report.

IF NOT t_tab1[] IS INITIAL.

CLEAR: gv_qty, gv_sale, gv_final.

LOOP AT t_tab1.

WRITE:/1(10) t_tab1-cust,

13(10) t_tab1-date,

25(05) t_tab1-currency,

32(14) t_tab1-extnbr,

48(09) t_tab1-pos-cont,

60(18) t_tab1-matnr,

80(16) t_tab1-qty RIGHT-JUSTIFIED ,

98(16) t_tab1-sale RIGHT-JUSTIFIED ,

116(07) t_tab1-paymeth,

125(16) t_tab1-final RIGHT-JUSTIFIED,

143(06) t_tab1-tarcur,

152(12) t_tab1-assign.

gv_qty = t_tab1-qty + gv_qty.

gv_sale = t_tab1-sale + gv_sale.

gv_final = t_tab1-final + gv_final.

ENDLOOP.

FORMAT COLOR 3.

ULINE: /(164).

WRITE:/ 'TOTALS',

80(16) gv_qty RIGHT-JUSTIFIED,

98(16) gv_sale RIGHT-JUSTIFIED,

125(16) gv_final RIGHT-JUSTIFIED,

182 ''.

ULINE: /(164).

FORMAT RESET.

ENDIF.

ENDFORM. " fr_display_report

&----


*& Form FR_DISPLAY_HEADER

&----


  • text

----


FORM fr_display_header.

IF error IS INITIAL.

FORMAT COLOR 1.

WRITE:/ 'Date upload :'(007), 25 sy-datum, 38 ''.

WRITE:/ 'Production or Test Run:'(008), 25 gv_status, 38 ''.

WRITE:/ 'Upload User Logon :'(009), 25 sy-uname, 38 ''.

ULINE: /(164).

WRITE:/1(04) 'Site'(010),

13(10) 'Date'(011),

25(05) 'Curr.'(012),

32(14) 'Receipt'(013),

48(09) 'Cashier'(014),

60(18) 'Article'(015),

92 'Qty'(016),

102 'Item Amount'(017),

116(7) 'M.o.P.'(018),

128 'Tender Amount'(019),

143(6) 'T.Curr'(020),

152(12) 'Assignment'(021).

ULINE:/(164).

FORMAT RESET.

ENDIF.

ENDFORM. " FR_DISPLAY_HEADER

&----


*& Form fr_newdynpro

&----


  • text

----


FORM fr_newdynpro USING program LIKE bdcdata-program

dynpro LIKE bdcdata-dynpro.

t_bdcdata-program = program .

t_bdcdata-dynpro = dynpro.

t_bdcdata-dynbegin = 'X'.

APPEND t_bdcdata.

CLEAR t_bdcdata.

ENDFORM. " fr_newdynpro

&----


*& Form fr_loadfield

&----


  • text

----


FORM fr_loadfield USING field LIKE bdcdata-fnam

value.

t_bdcdata-fnam = field.

t_bdcdata-fval = value.

APPEND t_bdcdata.

CLEAR t_bdcdata.

ENDFORM. " fr_loadfield

&----


*& Form fr_fill_bdctab

&----


  • text

----


FORM fr_fill_bdctab.

REFRESH t_bdcdata.

PERFORM fr_newdynpro USING 'SAPMWPUK' '100'.

PERFORM fr_loadfield USING 'G_FILIALE' t_tab-cust.

PERFORM fr_loadfield USING 'G_DATUM' t_tab-date.

PERFORM fr_loadfield USING 'BDC_OKCODE' 'BON'.

PERFORM fr_newdynpro USING 'SAPMWPUK' '500'.

PERFORM fr_loadfield USING 'WPSCB01-POSKREIS' t_tab-pos-cont.

PERFORM fr_loadfield USING 'WPSCB01-KASSID' t_tab-pos-id.

PERFORM fr_loadfield USING 'WPSCB01-BELEGWAERS' t_tab-currency.

PERFORM fr_loadfield USING 'WPSCB01-CSHNAME' t_tab-cashier.

PERFORM fr_loadfield USING 'WPSCB01-BONNUMMER' t_tab-extnbr.

PERFORM fr_loadfield USING 'E1WPB02-QUALARTNR(01)' t_tab-qualif.

PERFORM fr_loadfield USING 'E1WPB02-ARTNR(01)' t_tab-matnr.

PERFORM fr_loadfield USING 'E1WPB02-MENGE(01)' t_tab-qty.

PERFORM fr_loadfield USING 'WPSCB03-KONDVALUE(01)' t_tab-sale.

PERFORM fr_loadfield USING 'E1WPB02-VORGANGART(01)' t_tab-pos-tr.

PERFORM fr_loadfield USING 'BDC_OKCODE' 'ZAHL'.

PERFORM fr_newdynpro USING 'SAPMWPUK' '530'.

PERFORM fr_loadfield USING 'WPSCB06-ZAHLART' t_tab-paymeth.

PERFORM fr_loadfield USING 'WPSCB06-SUMME' t_tab-final.

PERFORM fr_loadfield USING 'WPSCB06-WAEHRUNG' t_tab-tarcur.

PERFORM fr_loadfield USING 'WPSCB06-ZUONR' t_tab-assign.

PERFORM fr_loadfield USING 'BDC_OKCODE' 'SAVE'.

PERFORM fr_newdynpro USING 'SAPMWPUK' '530'.

PERFORM fr_loadfield USING 'WPSCB06-ZAHLART' t_tab-paymeth.

PERFORM fr_loadfield USING 'WPSCB06-SUMME' t_tab-final.

PERFORM fr_loadfield USING 'WPSCB06-WAEHRUNG' t_tab-tarcur.

PERFORM fr_loadfield USING 'WPSCB06-ZUONR' t_tab-assign.

PERFORM fr_loadfield USING 'BDC_OKCODE' 'BACK'.

PERFORM fr_newdynpro USING 'SAPLSPO1' '0200'.

PERFORM fr_loadfield USING 'BDC_OKCODE' 'YES'.

PERFORM fr_newdynpro USING 'SAPMWPUK' '100'.

PERFORM fr_loadfield USING 'G_FILIALE' t_tab-cust.

PERFORM fr_loadfield USING 'G_DATUM' t_tab-date.

PERFORM fr_loadfield USING 'BDC_OKCODE' 'BACK'.

ENDFORM. " fr_fill_bdctab

&----


*& Form fr_data_posting

&----


  • text

----


FORM fr_data_posting.

IF NOT t_bdcdata[] IS INITIAL.

REFRESH messtab.

CALL TRANSACTION 'WPUK' USING t_bdcdata

MODE gv_mode

UPDATE 'S'

MESSAGES INTO messtab.

IF sy-subrc = 0 .

CLEAR w_text.

LOOP AT messtab.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = messtab-msgid

lang = sy-langu

no = messtab-msgnr

v1 = messtab-msgv1

v2 = messtab-msgv2

v3 = messtab-msgv3

v4 = messtab-msgv4

IMPORTING

msg = w_text

EXCEPTIONS

not_found = 1

OTHERS = 2.

MOVE w_text TO t_text-msgtxt.

CONCATENATE 'Site:'(031) t_tab-cust

'Article:'(024) t_tab-matnr

'Posted Sucessfully'(032)

INTO t_text-desc SEPARATED BY space.

APPEND t_text.

CLEAR t_text.

ENDLOOP.

ELSE.

CLEAR w_text.

LOOP AT messtab.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = messtab-msgid

lang = sy-langu

no = messtab-msgnr

v1 = messtab-msgv1

v2 = messtab-msgv2

v3 = messtab-msgv3

v4 = messtab-msgv4

IMPORTING

msg = w_text

EXCEPTIONS

not_found = 1

OTHERS = 2.

MOVE w_text TO t_text-msgtxt.

IF messtab-msgnr EQ '213'.

CONCATENATE 'Site:'(031) t_tab-cust

'Article:'(024) t_tab-matnr

'Posted Sucessfully'(032)

INTO t_text-desc SEPARATED BY space.

APPEND t_text.

CLEAR t_text.

EXIT. ELSE.

CONCATENATE 'Site:'(031) t_tab-cust

'Article:'(024) t_tab-matnr

'Not Posted'(033)

INTO t_text-desc SEPARATED BY space.

APPEND t_text.

CLEAR t_text.

ENDIF.

ENDLOOP.

ENDIF.

ENDIF.

ENDFORM. " fr_data_posting

&----


*& Form fr_authority_check

&----


  • text

----


FORM fr_authority_check.

AUTHORITY-CHECK OBJECT 'Y_VATADJ'

ID 'VKORG' FIELD t001w-vkorg

ID 'TCD' FIELD 'YGFVAT'.

IF sy-subrc NE 0.

MESSAGE e999 WITH text-m02.

ENDIF.

ENDFORM. " fr_authority_check

&----


*& Form fr_write_msg

&----


  • text

----


FORM fr_write_msg.

SKIP.

ULINE:/(164).

WRITE:/

'Messages encountered while Calling Transaction WPUK'(025),

90 'Message Text'(026).

ULINE:/1(164).

LOOP AT t_text.

WRITE:/1 t_text-desc,

90 t_text-msgtxt,

164 ''.

ENDLOOP.

ULINE:/1(164).

ENDFORM. " fr_write_msg

&----


*& Form FR_BUILD_REP

&----


  • text

----


FORM fr_build_rep.

IF error IS INITIAL.

IF NOT t_tab[] IS INITIAL.

LOOP AT t_tab.

MOVE:

t_tab-cust TO t_tab1-cust, "site/customer number

t_tab-date TO t_tab1-date, "transaction date

t_tab-currency TO t_tab1-currency, "currency

t_tab-extnbr TO t_tab1-extnbr, "external reference number

t_tab-pos-cont TO t_tab1-pos-cont, "POS controler

t_tab-pos-id TO t_tab1-pos-id, "POS id

t_tab-cashier TO t_tab1-cashier, "cashier name

t_tab-qualif TO t_tab1-qualif, "qualifier of the article

t_tab-matnr TO t_tab1-matnr, "article number

t_tab-pos-tr TO t_tab1-pos-tr, "POS transfert type

t_tab-paymeth TO t_tab1-paymeth, "payment method

t_tab-tarcur TO t_tab1-tarcur, "target currency

t_tab-assign TO t_tab1-assign.

REPLACE ',' WITH '.' INTO t_tab-qty.

CONDENSE t_tab-qty NO-GAPS.

MOVE t_tab-qty TO t_tab1-qty.

REPLACE ',' WITH '.' INTO t_tab-sale.

CONDENSE t_tab-sale NO-GAPS.

MOVE t_tab-sale TO t_tab1-sale.

REPLACE ',' WITH '.' INTO t_tab-final.

CONDENSE t_tab-final NO-GAPS.

MOVE t_tab-final TO t_tab1-final.

APPEND t_tab1.

CLEAR t_tab1.

ENDLOOP.

ENDIF.

ENDIF.

ENDFORM. " FR_BUILD_REP

&----


*& Form fr_format_tab

&----


  • text

----


FORM fr_format_tab.

DATA : lv_qty TYPE string.

IF NOT t_tab-qty IS INITIAL.

IF t_tab-qty+0(1) EQ '-'.

CLEAR lv_qty.

MOVE t_tab-qty TO lv_qty.

CLEAR t_tab-qty.

SHIFT lv_qty LEFT CIRCULAR.

CONDENSE lv_qty NO-GAPS.

MOVE lv_qty TO t_tab-qty.

MODIFY t_tab TRANSPORTING qty.

ENDIF.

ENDIF.

ENDFORM. " fr_format_tab

Former Member
0 Kudos

Its simple have a look at it u'll get an idea..

FORM bdc_transaction tables return USING tcode p_rule.

*DATA : T_BDCMSGCOLL LIKE STANDARD TABLE OF BDCMSGCOLL WITH HEADER LINE.

CLEAR w_ctu_params.

w_ctu_params-dismode = 'N'.

w_ctu_params-updmode = 'S'.

w_ctu_params-cattmode = ' '.

w_ctu_params-defsize = ' '.

w_ctu_params-racommit = ' '.

w_ctu_params-nobinpt = 'X'.

w_ctu_params-nobiend = ' '.

CALL TRANSACTION tcode USING t_bdcdata OPTIONS FROM w_ctu_params

MESSAGES INTO t_bdcmsgcoll.

IF sy-subrc = 0.

IF p_rule = 'P'.

Add 1 to successful PWS creation

new_pws = new_pws + 1.

Add 1 to successful WSR creation

ELSEIF p_rule = 'W'.

new_wsr = new_wsr + 1.

ENDIF.

On successful WSR creation, create selection table for submit to

RPTSHF00 (to generate WSR)

IF new_wsr > 0.

PERFORM create_sel_tab.

ENDIF.

REFRESH t_bdcdata.

ELSE.

loop at t_bdcmsgcoll.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = t_bdcmsgcoll-msgid

LANG = SY-LANGU

NO = t_bdcmsgcoll-msgnr

V1 = t_bdcmsgcoll-MSGV1

V2 = t_bdcmsgcoll-MSGV2

V3 = t_bdcmsgcoll-MSGV3

V4 = t_bdcmsgcoll-MSGV4

IMPORTING

MSG = err_msg

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

IF sy-subrc 0.

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

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

ENDIF.

move err_msg to w_return-message.

append w_return to return.

endloop.

errors can be displayed like this..

Please reward points if helpful

Former Member
0 Kudos

Hi ,

See below code , You may get idea abt Error handling in CT method.

&----


*& Report ZMOIZBDCERROR *

*& *

&----


*& *

*& *

&----


REPORT ZMOIZBDCERROR .

TYPES : BEGIN OF TY_SOURCE,

F1 TYPE LIFNR,

F2 TYPE EKORG,

F3 TYPE KTOKK,

F4 TYPE ANRED,

F5 TYPE NAME1,

F6 TYPE LAND1,

END OF TY_SOURCE.

DATA : T_SOURCE TYPE STANDARD TABLE OF TY_SOURCE INITIAL SIZE 1,

W_SOURCE TYPE TY_SOURCE,

T_TARGET TYPE STANDARD TABLE OF BDCDATA INITIAL SIZE 1,

W_TARGET TYPE BDCDATA,

T_MESSAGE TYPE STANDARD TABLE OF BDCMSGCOLL INITIAL SIZE 1,

W_MESSAGE TYPE BDCMSGCOLL.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

  • CODEPAGE = ' '

FILENAME = 'C:\MOIZ1.TXT '

FILETYPE = 'DAT'

  • HEADLEN = ' '

  • LINE_EXIT = ' '

  • TRUNCLEN = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • DAT_D_FORMAT = ' '

  • IMPORTING

  • FILELENGTH =

TABLES

data_tab = T_SOURCE

  • EXCEPTIONS

  • CONVERSION_ERROR = 1

  • FILE_OPEN_ERROR = 2

  • FILE_READ_ERROR = 3

  • INVALID_TYPE = 4

  • NO_BATCH = 5

  • UNKNOWN_ERROR = 6

  • INVALID_TABLE_WIDTH = 7

  • GUI_REFUSE_FILETRANSFER = 8

  • CUSTOMER_ERROR = 9

  • NO_AUTHORITY = 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.

ENDIF.

*

*LOOP AT ITAB.

*WRITE 😕 ITAB-F1,

  • ITAB-F2,

  • ITAB-F3,

  • ITAB-F4,

  • ITAB-F5,

  • ITAB-F6.

*ENDLOOP.

LOOP AT T_SOURCE INTO W_SOURCE.

REFRESH T_TARGET.

REFRESH T_MESSAGE.

perform bdc_dynpro using 'SAPMF02K' '0107'.

perform bdc_field using 'BDC_CURSOR' 'T077Y-TXT30'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_field using 'RF02K-LIFNR' W_SOURCE-F1.

perform bdc_field using 'RF02K-EKORG' W_SOURCE-F2.

perform bdc_field using 'RF02K-KTOKK' W_SOURCE-F3.

perform bdc_dynpro using 'SAPMF02K' '0110'.

perform bdc_field using 'BDC_CURSOR' 'T005T-LANDX'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_field using 'LFA1-ANRED' W_SOURCE-F4.

perform bdc_field using 'LFA1-NAME1' W_SOURCE-F5.

perform bdc_field using 'LFA1-LAND1' W_SOURCE-F6.

perform bdc_dynpro using 'SAPMF02K' '0120'.

perform bdc_field using 'BDC_CURSOR' 'LFA1-KUNNR'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMF02K' '0310'.

perform bdc_field using 'BDC_CURSOR' 'LFM1-WAERS'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMF02K' '0320'.

perform bdc_field using 'BDC_CURSOR' 'RF02K-LIFNR'.

perform bdc_field using 'BDC_OKCODE' '=ENTR'.

perform bdc_dynpro using 'SAPLSPO1' '0300'.

perform bdc_field using 'BDC_OKCODE' '=YES'.

CALL TRANSACTION 'MK01'

USING T_TARGET

MODE 'N'

UPDATE 'S'

MESSAGES INTO T_MESSAGE .

IF SY-SUBRC NE 0 .

CLEAR W_MESSAGE .

LOOP AT T_MESSAGE INTO W_MESSAGE WHERE MSGTYP = 'E' .

IF W_SOURCE-F1 IS NOT INITIAL.

FORMAT COLOR 6.

WRITE : / 'VENDOR NUMBER ' , W_SOURCE-F1 , ' IS NOT UPLOADED '.

FORMAT COLOR OFF.

CLEAR W_SOURCE-F1.

EXIT.

ENDIF.

ENDLOOP .

REFRESH T_MESSAGE .

ELSE .

FORMAT COLOR 5.

WRITE : / 'VENDOR NUMBER ', W_SOURCE-F1,' HAS BEEN UPLOADED' .

FORMAT COLOR OFF.

ENDIF .

ENDLOOP.

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR W_TARGET.

W_TARGET-PROGRAM = PROGRAM.

W_TARGET-DYNPRO = DYNPRO.

W_TARGET-DYNBEGIN = 'X'.

APPEND W_TARGET TO T_TARGET.

ENDFORM.

----


  • Insert field *

----


FORM BDC_FIELD USING FNAM FVAL.

IF FVAL <> SPACE.

CLEAR W_TARGET.

W_TARGET-FNAM = FNAM.

W_TARGET-FVAL = FVAL.

APPEND W_TARGET TO T_TARGET.

ENDIF.

ENDFORM.

Regards,

Vishvesh