28 августа 2016

Расширение Документа материала

Расширение структур MSEG, BAPI_TE_XMSEG, IMSEG и пример использования BAPI BAPI_GOODSMVT_CREATE.


Расширение MSEG

Добавляем append-структуру в таблицу MSEG.



Передача пользовательских полей в BAPI_GOODSMVT_CREATE

Добавляем append-структуру с теми же пользовательскими полями, что и в MSEG, в структуру BAPI_TE_XMSEG.

Добавляем append-структуру с теми же пользовательскими полями, что и в MSEG, в структуру IMSEG.

Создаем реализацию BAdI MB_BAPI_GOODSMVT_CREATE, в котором реализуем один метод IF_EX_MB_BAPI_GOODSMVT_CREATE~EXTENSIONIN_TO_MATDOC. В методе описываем передачу данных из таблицы EXTENSION_IN структурой BAPIPAREX в таблицу CT_IMSEG структурой IMSEG.

  DATA: ls_extension_in     LIKE LINE OF extension_in,
        ls_xmseg            TYPE bapi_te_xmseg.
  
  FIELD-SYMBOLS: <lfs_imseg>      LIKE LINE OF ct_imseg.
  
  LOOP AT extension_in INTO ls_extension_in.
    
    CASE extension_in-structure.
      WHEN 'BAPI_TE_XMSEG'.
        
        ls_xmseg = ls_extension_in+30.
        
        READ TABLE ct_imseg ASSIGNING <lfs_imseg>
          WITH KEY line_id = ls_xmseg-matdoc_itm.
        
        IF sy-subrc EQ 0.
          
          <lfs_imseg>-zzfield01 = ls_xmseg-zzfield01.
          <lfs_imseg>-zzfield02 = ls_xmseg-zzfield02.
          
        ENDIF.
        
    ENDCASE.
    
  ENDLOOP.

Передаем в BAPI_GOODSMVT_CREATE таблицу EXTENSIONIN структурой BAPIPAREX.

  DATA: ls_header       TYPE bapi2017_gm_head_01,
        ls_code         TYPE bapi2017_gm_code,
        ls_headret      TYPE bapi2017_gm_head_ret,
        lt_item         TYPE TABLE OF bapi2017_gm_item_create,
        ls_item         LIKE LINE OF lt_item,
        ls_xmseg        TYPE bapi_te_xmseg,
        lt_extensionin  TYPE TABLE OF bapiparex,
        ls_extensionin  LIKE LINE OF lt_extensionin,
        lt_return       TYPE TABLE OF bapiret2,
        ls_return       LIKE LINE OF lt_return.

  ls_header-header_txt = 'Test BAPI'.
  ls_header-pstng_date = sy-datum.
  ls_header-doc_date   = sy-datum.
  ls_header-pr_uname   = sy-uname.
  
  ls_code-gm_code = '03'.

  ls_item-material = '999000000100000001'.
  ls_item-entry_qnt = 1.
  ls_item-move_type = '241'.
  ls_item-plant = '0100'.
  ls_item-stge_loc = '0001'.
  ls_item-gr_rcpt = '20000001'.
  ls_item-batch = '0000000001'.
  ls_item-asset_no = '100000000001'.
  ls_item-sub_number = '0000'.

  INSERT ls_item INTO TABLE lt_item.

  ls_xmseg-matdoc_itm = 1.
  ls_xmseg-zzfield01 = 'A'.
  ls_xmseg-zzfield02 = '0123456789'.

  ls_extensionin-structure = 'BAPI_TE_XMSEG'.
  ls_extensionin+30 = ls_xmseg.

  INSERT ls_extensionin INTO TABLE lt_extensionin.

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      goodsmvt_header         = ls_header
      goodsmvt_code           = ls_code
*     testrun                 = ' '
*     goodsmvt_ref_ewm        =
    IMPORTING
      goodsmvt_headret        = ls_headret
*     materialdocument        =
*     matdocumentyear         =
    TABLES
      goodsmvt_item           = lt_item
*     goodsmvt_serialnumber   =
      return                  = lt_return
*     goodsmvt_serv_part_data =
      extensionin             = lt_extensionin.


Комментариев нет:

Отправить комментарий