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

BAPIS

Former Member
0 Likes
854

I have a problem with the 'BAPI_GOODSMVT_CREATE'

When I try to pass the material the parameter gt_bapigm_headret doesn’ t catch the value.

somebody could tell how to solve the problem?

this is my parameters

gt_bapigm_head-header_txt = ' '.

gt_bapigm_head-pr_uname = sy-uname.

lt_bapigm_item-move_type = '901'.

lt_bapigm_item-material = it_datos-ranl.

lt_bapigm_item-plant = it_datos-gsber.

lt_bapigm_item-stge_loc = it_datos-lgort.

lt_bapigm_item-batch = '0000000001'.

  • lt_bapigm_item-tr_part_ba = g_werksd+1(3).

lt_bapigm_item-entry_qnt = 1.

lt_bapigm_item-amount_lc = it_datos-monava.

lt_bapigm_item-item_text = 'Alta en Cuentas de Inventario Cargo'.

APPEND lt_bapigm_item.

ENDFORM. " creacion_bapi

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'

EXPORTING

goodsmvt_header = gt_bapigm_head

goodsmvt_code = gt_bapigm_code

  • testrun = 'X'

  • goodsmvt_code = gt_bapigm_code-gm_code

IMPORTING

goodsmvt_headret = gt_bapigm_headret

TABLES

goodsmvt_item = lt_bapigm_item

  • GOODSMVT_SERIALNUMBER =

return = gt_bapigm_ret.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
832

take a look at this sample code....

REPORT  ZTEST_MB1A_GM                     .

TYPES: BEGIN OF X_FF,
        MTSNR TYPE RM07M-MTSNR,
        WERKS TYPE RM07M-WERKS,
        LGORT TYPE RM07M-LGORT,
        LIFNR TYPE MSEGK-LIFNR,
        WEMPF TYPE MSEGK-WEMPF,
        MATNR TYPE MSEG-MATNR,
        ERFMG TYPE CHAR10,
        AUFNR TYPE COBL-AUFNR,
       END OF X_FF.
DATA:IT_FF TYPE X_FF OCCURS 0 WITH HEADER LINE.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY
                            DEFAULT 'C:DATA1.TXT'.
DATA:LV_MSG(255),
     V_FILE TYPE STRING.

* Table for goods movement item data
DATA: BEGIN OF it_gds_item OCCURS 0.
        INCLUDE STRUCTURE bapi2017_gm_item_create.
DATA: END OF it_gds_item.

* Table for returns data from BAPI
DATA: BEGIN OF it_return OCCURS 0.
        INCLUDE STRUCTURE bapiret2.
DATA: END OF it_return.
* Structure for holding goods movement header
DATA:    x_gds_hdr LIKE bapi2017_gm_head_01,
* Structure for holding goods movement header returned from BAPI
    x_gds_hdr_ret LIKE  bapi2017_gm_head_ret,
* Work area for bapi return
    wa_return LIKE bapiret2,
    v_code    LIKE bapi2017_gm_code.

V_FILE = P_FILE.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      FILENAME                      = V_FILE
*      FILENAME                      = 'C:DATA1.TXT'
      FILETYPE                      = 'ASC'
       HAS_FIELD_SEPARATOR           = 'X'
*       HEADER_LENGTH                 = 0
*       READ_BY_LINE                  = 'X'
*       DAT_MODE                      = ' '
*       CODEPAGE                      = ' '
*       IGNORE_CERR                   = ABAP_TRUE
*       REPLACEMENT                   = '#'
*       CHECK_BOM                     = ' '
*     IMPORTING
*       FILELENGTH                    =
*       HEADER                        =
    TABLES
      DATA_TAB                      = IT_FF
   EXCEPTIONS
     FILE_OPEN_ERROR               = 1
     FILE_READ_ERROR               = 2
     NO_BATCH                      = 3
     GUI_REFUSE_FILETRANSFER       = 4
     INVALID_TYPE                  = 5
     NO_AUTHORITY                  = 6
     UNKNOWN_ERROR                 = 7
     BAD_DATA_FORMAT               = 8
     HEADER_NOT_ALLOWED            = 9
     SEPARATOR_NOT_ALLOWED         = 10
     HEADER_TOO_LONG               = 11
     UNKNOWN_DP_ERROR              = 12
     ACCESS_DENIED                 = 13
     DP_OUT_OF_MEMORY              = 14
     DISK_FULL                     = 15
     DP_TIMEOUT                    = 16
     OTHERS                        = 17.

  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.

  PERFORM goods_movement_261.

*&---------------------------------------------------------------------*
*&      Form  goods_movement_261
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM goods_movement_261 .
  DATA: lx_return TYPE bapiret2.
loop at it_ff.
  REFRESH it_gds_item.
  CLEAR: x_gds_hdr, it_gds_item.

  v_code = '03'.

  x_gds_hdr-pstng_date   = sy-datum.
  x_gds_hdr-doc_date     = sy-datum.

  x_gds_hdr-ref_doc_no   =  it_ff-mtsnr.
  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input         = it_ff-lifnr
   IMPORTING
     OUTPUT        =  it_ff-lifnr.
            .
  it_gds_item-vendor       = it_ff-lifnr.

  it_gds_item-move_type    = '261'.
  it_gds_item-spec_stock   = 'K'.
  it_gds_item-material     = it_ff-matnr.
  it_gds_item-plant        = it_ff-werks.
  it_gds_item-stge_loc     = it_ff-lgort.


  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input         = it_ff-AUFNR
   IMPORTING
     OUTPUT        =  it_ff-AUFNR.
  it_gds_item-orderid   =    it_ff-aufnr.
  it_gds_item-entry_qnt    = it_ff-erfmg.
  it_gds_item-gr_rcpt     =  it_ff-WEMPF.


*  x_gds_hdr-ref_doc_no   =  '20051103_1'.
*  it_gds_item-vendor       = '0000501007'.
*  it_gds_item-move_type    = '261'.
*  it_gds_item-spec_stock   = 'K'.
*  it_gds_item-material     = 'MRO108635'.
*  it_gds_item-plant        = '6000'.
*  it_gds_item-stge_loc     = '6020'.
*  it_gds_item-orderid   = '000020605359'.
*  it_gds_item-entry_qnt    = 1.
*  it_gds_item-gr_rcpt     = sy-uname.
*
  APPEND it_gds_item.
  CLEAR x_gds_hdr_ret.

call function 'BAPI_GOODSMVT_CREATE'
  exporting
    goodsmvt_header             = X_GDS_HDR
    goodsmvt_code               = V_CODE
*   TESTRUN                     = ' '
 IMPORTING
   GOODSMVT_HEADRET            = x_gds_hdr_ret
*   MATERIALDOCUMENT            =
*   MATDOCUMENTYEAR             =
  tables
    goodsmvt_item               = it_gds_item
*   GOODSMVT_SERIALNUMBER       =
    return                      = IT_RETURN
          .

call function 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT          =
* IMPORTING
*   RETURN        =
          .

  IF NOT x_gds_hdr_ret-mat_doc IS INITIAL.
    WRITE:  /'For Movement type 261:',  x_gds_hdr_ret-mat_doc.
  ELSE.
    READ TABLE it_return INTO  lx_return INDEX 1.
    WRITE:  /'Movement 261 Failed as:', lx_return-message.
  ENDIF.
  REFRESH IT_RETURN.

endloop.
ENDFORM.                    " goods_movement_261

take a look at this sample code....

REPORT  ZTEST_MB1A_GM                     .

TYPES: BEGIN OF X_FF,
        MTSNR TYPE RM07M-MTSNR,
        WERKS TYPE RM07M-WERKS,
        LGORT TYPE RM07M-LGORT,
        LIFNR TYPE MSEGK-LIFNR,
        WEMPF TYPE MSEGK-WEMPF,
        MATNR TYPE MSEG-MATNR,
        ERFMG TYPE CHAR10,
        AUFNR TYPE COBL-AUFNR,
       END OF X_FF.
DATA:IT_FF TYPE X_FF OCCURS 0 WITH HEADER LINE.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY
                            DEFAULT 'C:DATA1.TXT'.
DATA:LV_MSG(255),
     V_FILE TYPE STRING.

* Table for goods movement item data
DATA: BEGIN OF it_gds_item OCCURS 0.
        INCLUDE STRUCTURE bapi2017_gm_item_create.
DATA: END OF it_gds_item.

* Table for returns data from BAPI
DATA: BEGIN OF it_return OCCURS 0.
        INCLUDE STRUCTURE bapiret2.
DATA: END OF it_return.
* Structure for holding goods movement header
DATA:    x_gds_hdr LIKE bapi2017_gm_head_01,
* Structure for holding goods movement header returned from BAPI
    x_gds_hdr_ret LIKE  bapi2017_gm_head_ret,
* Work area for bapi return
    wa_return LIKE bapiret2,
    v_code    LIKE bapi2017_gm_code.

V_FILE = P_FILE.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      FILENAME                      = V_FILE
*      FILENAME                      = 'C:DATA1.TXT'
      FILETYPE                      = 'ASC'
       HAS_FIELD_SEPARATOR           = 'X'
*       HEADER_LENGTH                 = 0
*       READ_BY_LINE                  = 'X'
*       DAT_MODE                      = ' '
*       CODEPAGE                      = ' '
*       IGNORE_CERR                   = ABAP_TRUE
*       REPLACEMENT                   = '#'
*       CHECK_BOM                     = ' '
*     IMPORTING
*       FILELENGTH                    =
*       HEADER                        =
    TABLES
      DATA_TAB                      = IT_FF
   EXCEPTIONS
     FILE_OPEN_ERROR               = 1
     FILE_READ_ERROR               = 2
     NO_BATCH                      = 3
     GUI_REFUSE_FILETRANSFER       = 4
     INVALID_TYPE                  = 5
     NO_AUTHORITY                  = 6
     UNKNOWN_ERROR                 = 7
     BAD_DATA_FORMAT               = 8
     HEADER_NOT_ALLOWED            = 9
     SEPARATOR_NOT_ALLOWED         = 10
     HEADER_TOO_LONG               = 11
     UNKNOWN_DP_ERROR              = 12
     ACCESS_DENIED                 = 13
     DP_OUT_OF_MEMORY              = 14
     DISK_FULL                     = 15
     DP_TIMEOUT                    = 16
     OTHERS                        = 17.

  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.

  PERFORM goods_movement_261.

*&---------------------------------------------------------------------*
*&      Form  goods_movement_261
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM goods_movement_261 .
  DATA: lx_return TYPE bapiret2.
loop at it_ff.
  REFRESH it_gds_item.
  CLEAR: x_gds_hdr, it_gds_item.

  v_code = '03'.

  x_gds_hdr-pstng_date   = sy-datum.
  x_gds_hdr-doc_date     = sy-datum.

  x_gds_hdr-ref_doc_no   =  it_ff-mtsnr.
  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input         = it_ff-lifnr
   IMPORTING
     OUTPUT        =  it_ff-lifnr.
            .
  it_gds_item-vendor       = it_ff-lifnr.

  it_gds_item-move_type    = '261'.
  it_gds_item-spec_stock   = 'K'.
  it_gds_item-material     = it_ff-matnr.
  it_gds_item-plant        = it_ff-werks.
  it_gds_item-stge_loc     = it_ff-lgort.


  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input         = it_ff-AUFNR
   IMPORTING
     OUTPUT        =  it_ff-AUFNR.
  it_gds_item-orderid   =    it_ff-aufnr.
  it_gds_item-entry_qnt    = it_ff-erfmg.
  it_gds_item-gr_rcpt     =  it_ff-WEMPF.


*  x_gds_hdr-ref_doc_no   =  '20051103_1'.
*  it_gds_item-vendor       = '0000501007'.
*  it_gds_item-move_type    = '261'.
*  it_gds_item-spec_stock   = 'K'.
*  it_gds_item-material     = 'MRO108635'.
*  it_gds_item-plant        = '6000'.
*  it_gds_item-stge_loc     = '6020'.
*  it_gds_item-orderid   = '000020605359'.
*  it_gds_item-entry_qnt    = 1.
*  it_gds_item-gr_rcpt     = sy-uname.
*
  APPEND it_gds_item.
  CLEAR x_gds_hdr_ret.

call function 'BAPI_GOODSMVT_CREATE'
  exporting
    goodsmvt_header             = X_GDS_HDR
    goodsmvt_code               = V_CODE
*   TESTRUN                     = ' '
 IMPORTING
   GOODSMVT_HEADRET            = x_gds_hdr_ret
*   MATERIALDOCUMENT            =
*   MATDOCUMENTYEAR             =
  tables
    goodsmvt_item               = it_gds_item
*   GOODSMVT_SERIALNUMBER       =
    return                      = IT_RETURN
          .

call function 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT          =
* IMPORTING
*   RETURN        =
          .

  IF NOT x_gds_hdr_ret-mat_doc IS INITIAL.
    WRITE:  /'For Movement type 261:',  x_gds_hdr_ret-mat_doc.
  ELSE.
    READ TABLE it_return INTO  lx_return INDEX 1.
    WRITE:  /'Movement 261 Failed as:', lx_return-message.
  ENDIF.
  REFRESH IT_RETURN.

endloop.
ENDFORM.                    " goods_movement_261

4 REPLIES 4
Read only

Former Member
0 Likes
832

Dear Marisol,

To me the input seems to be alright. Please run the FM 'BAPI_GOODSMVT_CREATE' in debugging mode from SE37. You might find some clue.

Regards,

Deva.

Read only

Former Member
0 Likes
832

hi marisol alarcon,

You must be knowing the material number and the material document year then try this code.

In the function module 'BAPI_GOODSMVT_CREATE' there are two more exporting parameters which you are not using MATERIALDOCUMENT and MATERIALYEAR if you will pass the value to these parameters your 'gt_bapigm_headret' will get populated automatically bcoz there is a subroutine in this function module which fills the parameter 'GOODSMVT_HEADRET' by taking the materialdocument and materialyear value.

regards nikhil.

Read only

Former Member
0 Likes
832

Are you getting any return value in gt_bapigm_ret?

Try passing value for the fields:

<b>GOODSMVT_HEADER-PSTNG_DATE</b>

<b>GOODSMVT_HEADER-DOC_DATE</b>

Read only

Former Member
0 Likes
833

take a look at this sample code....

REPORT  ZTEST_MB1A_GM                     .

TYPES: BEGIN OF X_FF,
        MTSNR TYPE RM07M-MTSNR,
        WERKS TYPE RM07M-WERKS,
        LGORT TYPE RM07M-LGORT,
        LIFNR TYPE MSEGK-LIFNR,
        WEMPF TYPE MSEGK-WEMPF,
        MATNR TYPE MSEG-MATNR,
        ERFMG TYPE CHAR10,
        AUFNR TYPE COBL-AUFNR,
       END OF X_FF.
DATA:IT_FF TYPE X_FF OCCURS 0 WITH HEADER LINE.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY
                            DEFAULT 'C:DATA1.TXT'.
DATA:LV_MSG(255),
     V_FILE TYPE STRING.

* Table for goods movement item data
DATA: BEGIN OF it_gds_item OCCURS 0.
        INCLUDE STRUCTURE bapi2017_gm_item_create.
DATA: END OF it_gds_item.

* Table for returns data from BAPI
DATA: BEGIN OF it_return OCCURS 0.
        INCLUDE STRUCTURE bapiret2.
DATA: END OF it_return.
* Structure for holding goods movement header
DATA:    x_gds_hdr LIKE bapi2017_gm_head_01,
* Structure for holding goods movement header returned from BAPI
    x_gds_hdr_ret LIKE  bapi2017_gm_head_ret,
* Work area for bapi return
    wa_return LIKE bapiret2,
    v_code    LIKE bapi2017_gm_code.

V_FILE = P_FILE.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      FILENAME                      = V_FILE
*      FILENAME                      = 'C:DATA1.TXT'
      FILETYPE                      = 'ASC'
       HAS_FIELD_SEPARATOR           = 'X'
*       HEADER_LENGTH                 = 0
*       READ_BY_LINE                  = 'X'
*       DAT_MODE                      = ' '
*       CODEPAGE                      = ' '
*       IGNORE_CERR                   = ABAP_TRUE
*       REPLACEMENT                   = '#'
*       CHECK_BOM                     = ' '
*     IMPORTING
*       FILELENGTH                    =
*       HEADER                        =
    TABLES
      DATA_TAB                      = IT_FF
   EXCEPTIONS
     FILE_OPEN_ERROR               = 1
     FILE_READ_ERROR               = 2
     NO_BATCH                      = 3
     GUI_REFUSE_FILETRANSFER       = 4
     INVALID_TYPE                  = 5
     NO_AUTHORITY                  = 6
     UNKNOWN_ERROR                 = 7
     BAD_DATA_FORMAT               = 8
     HEADER_NOT_ALLOWED            = 9
     SEPARATOR_NOT_ALLOWED         = 10
     HEADER_TOO_LONG               = 11
     UNKNOWN_DP_ERROR              = 12
     ACCESS_DENIED                 = 13
     DP_OUT_OF_MEMORY              = 14
     DISK_FULL                     = 15
     DP_TIMEOUT                    = 16
     OTHERS                        = 17.

  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.

  PERFORM goods_movement_261.

*&---------------------------------------------------------------------*
*&      Form  goods_movement_261
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM goods_movement_261 .
  DATA: lx_return TYPE bapiret2.
loop at it_ff.
  REFRESH it_gds_item.
  CLEAR: x_gds_hdr, it_gds_item.

  v_code = '03'.

  x_gds_hdr-pstng_date   = sy-datum.
  x_gds_hdr-doc_date     = sy-datum.

  x_gds_hdr-ref_doc_no   =  it_ff-mtsnr.
  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input         = it_ff-lifnr
   IMPORTING
     OUTPUT        =  it_ff-lifnr.
            .
  it_gds_item-vendor       = it_ff-lifnr.

  it_gds_item-move_type    = '261'.
  it_gds_item-spec_stock   = 'K'.
  it_gds_item-material     = it_ff-matnr.
  it_gds_item-plant        = it_ff-werks.
  it_gds_item-stge_loc     = it_ff-lgort.


  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input         = it_ff-AUFNR
   IMPORTING
     OUTPUT        =  it_ff-AUFNR.
  it_gds_item-orderid   =    it_ff-aufnr.
  it_gds_item-entry_qnt    = it_ff-erfmg.
  it_gds_item-gr_rcpt     =  it_ff-WEMPF.


*  x_gds_hdr-ref_doc_no   =  '20051103_1'.
*  it_gds_item-vendor       = '0000501007'.
*  it_gds_item-move_type    = '261'.
*  it_gds_item-spec_stock   = 'K'.
*  it_gds_item-material     = 'MRO108635'.
*  it_gds_item-plant        = '6000'.
*  it_gds_item-stge_loc     = '6020'.
*  it_gds_item-orderid   = '000020605359'.
*  it_gds_item-entry_qnt    = 1.
*  it_gds_item-gr_rcpt     = sy-uname.
*
  APPEND it_gds_item.
  CLEAR x_gds_hdr_ret.

call function 'BAPI_GOODSMVT_CREATE'
  exporting
    goodsmvt_header             = X_GDS_HDR
    goodsmvt_code               = V_CODE
*   TESTRUN                     = ' '
 IMPORTING
   GOODSMVT_HEADRET            = x_gds_hdr_ret
*   MATERIALDOCUMENT            =
*   MATDOCUMENTYEAR             =
  tables
    goodsmvt_item               = it_gds_item
*   GOODSMVT_SERIALNUMBER       =
    return                      = IT_RETURN
          .

call function 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT          =
* IMPORTING
*   RETURN        =
          .

  IF NOT x_gds_hdr_ret-mat_doc IS INITIAL.
    WRITE:  /'For Movement type 261:',  x_gds_hdr_ret-mat_doc.
  ELSE.
    READ TABLE it_return INTO  lx_return INDEX 1.
    WRITE:  /'Movement 261 Failed as:', lx_return-message.
  ENDIF.
  REFRESH IT_RETURN.

endloop.
ENDFORM.                    " goods_movement_261