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

Call transaction method.

Former Member
0 Likes
702

Hi all,

It still doesn't work. I have modified the code in this way.It does not print any messages but it shows an errror saying "MAKE AN ENTRY IN ALL FIELDS". I want to print the error message to the list.Here is the code.

Please help me.

REPORT z_bdc_material_creation.

DATA : bdctab LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA : bdcmsg LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

DATA: l_msg(200).

DATA: BEGIN OF itab OCCURS 0,

  • data element: MATNR

matnr LIKE mara-matnr,

  • data element: MBRSH

mbrsh LIKE mara-mbrsh,

  • data element: MTART

mtart LIKE mara-mtart,

  • data element: XFELD

kzsel_01(001),

  • data element: XFELD

kzsel_02(001),

  • data element: MAKTX

maktx LIKE makt-maktx,

  • data element: MEINS

meins LIKE mara-meins,

  • data element: MTPOS_MARA

mtpos_mara(004),

END OF itab.

DATA: BEGIN OF itab1 OCCURS 0,

  • data element: MATNR

matnr LIKE mara-matnr,

  • data element: MBRSH

mbrsh LIKE mara-mbrsh,

  • data element: MTART

mtart LIKE mara-mtart,

  • data element: XFELD

kzsel_01(001),

  • data element: XFELD

kzsel_02(001),

  • data element: MAKTX

maktx LIKE makt-maktx,

  • data element: MEINS

meins LIKE mara-meins,

  • data element: MTPOS_MARA

mtpos_mara(004),

END OF itab1.

itab-matnr = '123-150'.

itab-mbrsh = 'C'.

itab-mtart = 'VKHM'.

itab-kzsel_01 = 'X'.

itab-kzsel_02 = 'X'.

itab-maktx = 'DATA'.

itab-meins = 'G'.

itab-mtpos_mara = 'NORM'.

APPEND itab.

CLEAR itab.

itab-matnr = '123-151'.

itab-mbrsh = 'C'.

itab-mtart = 'VKHM'.

itab-kzsel_01 = 'X'.

itab-kzsel_02 = 'X'.

itab-maktx = ''.

itab-meins = 'G'.

itab-mtpos_mara = 'NORM'.

APPEND itab.

CLEAR itab.

itab-matnr = '123-152'.

itab-mbrsh = 'C'.

itab-mtart = 'VKHM'.

itab-kzsel_01 = 'X'.

itab-kzsel_02 = 'X'.

itab-maktx = 'DATA'.

itab-meins = 'G'.

itab-mtpos_mara = 'NORM'.

APPEND itab.

CLEAR itab.

LOOP AT itab.

PERFORM generate_data .

CALL TRANSACTION 'MM01' USING bdctab MODE 'N' UPDATE 'S' MESSAGES INTO

bdcmsg.

if sy-subrc <> 0.

PERFORM check.

write : / l_msg.

endif.

REFRESH bdctab.

ENDLOOP.

*loop at bdcmsg.

*write:/ bdcmsg-msgid,

*bdcmsg-msgtyp,

*bdcmsg-msgnr,

*bdcmsg-msgv1,

*bdcmsg-msgv2,

*bdcmsg-msgv3,

*bdcmsg-msgv4.

  • lang = sy-langu

*endloop.

&----


*& Form generate_data

&----


  • text

----


FORM generate_data .

bdctab-program = 'SAPLMGMM'.

bdctab-dynpro = 0060.

bdctab-dynbegin = 'X'.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'RMMG1-MATNR'.

bdctab-fval = itab-matnr.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'RMMG1-MBRSH'.

bdctab-fval = itab-mbrsh.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'RMMG1-MTART'.

bdctab-fval = itab-mtart.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'BDC_OKCODE'.

bdctab-fval = '/00'.

APPEND bdctab.

CLEAR bdctab.

bdctab-program = 'SAPLMGMM'.

bdctab-dynpro = 0070.

bdctab-dynbegin = 'X'.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'MSICHTAUSW-KZSEL(01)'.

bdctab-fval = itab-kzsel_01.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'MSICHTAUSW-KZSEL(02)'.

bdctab-fval = itab-kzsel_02.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'BDC_OKCODE'.

bdctab-fval = '=ENTR'.

APPEND bdctab.

CLEAR bdctab.

bdctab-program = 'SAPLMGMM'.

bdctab-dynpro = 4004.

bdctab-dynbegin = 'X'.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'MAKT-MAKTX'.

bdctab-fval = itab-maktx.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'MARA-MEINS'.

bdctab-fval = itab-meins.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'MARA-MTPOS_MARA'.

bdctab-fval = itab-mtpos_mara.

APPEND bdctab.

CLEAR bdctab.

bdctab-fnam = 'BDC_OKCODE'.

bdctab-fval = '=BU'.

APPEND bdctab.

CLEAR bdctab.

ENDFORM. " generate_data

&----


*& Form check

&----


  • text

----


FORM check .

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = bdcmsg-msgid

lang = sy-langu

no = bdcmsg-msgnr

v1 = bdcmsg-msgv1

v2 = bdcmsg-msgv2

v3 = bdcmsg-msgv3

v4 = bdcmsg-msgv4

IMPORTING

msg = l_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.

ENDFORM. " check

Regards,

Vijay.

5 REPLIES 5
Read only

Former Member
0 Likes
672

Hi Vijay,

Please add "read table bdcmsg." or LOOP statement before calling the function

LOOP at BDCMSG.

Call Function 'FORMAT_MESSAGE'.

Endloop.

Lanka

Read only

govind_seenivasan
Participant
0 Likes
672

Hi,

Change the following part in your program ( FORM check ).

IF sy-subrc <> 0.

*<b>MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

*WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.</b> instead of *this change it to .

<b>write : / l_msg.</b>

ENDIF.

ENDFORM. " check

If you want all the messages then call the FM "Format_message" within a loop. As per the current logic you will get the message from the header record only.

Thanks

Govind.

Message was edited by: Govindarajan Seenivasan

Read only

0 Likes
672

Change your code after the call transaction as follows.


CALL TRANSACTION 'MM01' USING bdctab 
                         MODE 'N' 
                       UPDATE 'S' 
                MESSAGES INTO bdcmsg.
*-- check if there are errors
READ TABLE bdcmsg WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
*-- Errors are there
  LOOP AT bdcmsg.
    PERFORM check.
    write : / l_msg.
  ENDLOOP.
ENDIF.

Read only

Former Member
0 Likes
672

hi,

u have to do PERFORM check in a loop

loop at bdcmsg.

PERFORM check

endloop.

Read only

Former Member
0 Likes
672

Hi VIjay,

In the perform check.You have to loop at bdcmsg & then pass the values.

<b>loop at bdcmsg.</b>

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = bdcmsg-msgid

lang = sy-langu

no = bdcmsg-msgnr

v1 = bdcmsg-msgv1

v2 = bdcmsg-msgv2

v3 = bdcmsg-msgv3

v4 = bdcmsg-msgv4

IMPORTING

msg = l_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.

<b>endloop.</b>