BAPI

BAPI

Açılımı Business Application Programming Interface. Süreçlere ve iş verilerine erişim sağlarlar. Fonksiyon Builder içerisinde tanımlanırlar. BOR (Business Object Repository) saklanırlar. BAPI işlem kodu ile BAPI Explorer çalıştırılır. BAPI Explorer sistemde tanımlı BAPI nesne tiplerini görüntüler.

Örnek: BAPI Explorer ile User nesne tipini görüntüleyen ve BAPI_USER_GET_DETAIL kullanımını gösteren örnek.

1. BAPI işlem kodunu çalıştırın. Sol taraftaki menüden Alphabetical sekmesini seçin.

2. USER nesne tipini açın, içerisindeki GetDetail yöntemine çift tıklayın.

3. Function module alanındaki isme çift tıklarsanız Fonksiyon Builder’ a yönlenirsiniz.

4. BAPI Explorer’ dan Business object (USER) ismine çift tıklarsanız USER nesne tipine bağlı nesneleri görüntüleyebilirsiniz.

5. Fonksiyon Builder içerisinden BAPI_USER_GET_DETAIL fonksiyonunu F8 tuşu ile çalıştırın. USERNAME alanına kullanıcı adınızı girin ve çalıştırın.

6. Sonuç olarak girdiğiniz kullanıcıya ait bilgiler dönecektir.

Örnek: Parti stokları tablosundaki bir partiyi bloke stoğa alan ve bloke stoktan çıkaran örnek. Girilen parti bilgileri mchb tablosunda kontrol edilir. Parti mevcut ise bilgileri ekrana getirilir. Ekrana yerleştirilen butonlar ile 344 bloke stoğa alma ve 343 bloke stoktan çıkarma malzeme hareketleri gerçekleştirilir.

1. Aşağıdaki program kodunu ekleyin.

TABLES: mchb, mara.
TYPES: BEGIN OF gy_mchb,
matnr TYPE mchb-matnr,
werks TYPE mchb-werks,
lgort TYPE mchb-lgort,
charg TYPE mchb-charg,
clabs TYPE mchb-clabs,
cspem TYPE mchb-cspem,
meins TYPE mara-meins,
END OF gy_mchb.
DATA: gs_mchb TYPE gy_mchb,
ok_code LIKE sy-ucomm.
PARAMETERS: pa_matnr LIKE mchb-matnr OBLIGATORY,
pa_werks LIKE mchb-werks OBLIGATORY,
pa_lgort LIKE mchb-lgort OBLIGATORY,
pa_charg LIKE mchb-charg OBLIGATORY.

CLASS l_cls_test DEFINITION.
PUBLIC SECTION.
METHODS:
verileri_bul,
tahditsiz_stoga_al,
bloke_stoga_al.
ENDCLASS.
CLASS l_cls_test IMPLEMENTATION.
METHOD verileri_bul.
SELECT SINGLE matnr werks lgort charg clabs cspem
FROM mchb
INTO CORRESPONDING FIELDS OF gs_mchb
WHERE matnr = pa_matnr AND
werks = pa_werks AND
lgort = pa_lgort AND
charg = pa_charg AND
lvorm EQ space.
IF sy-subrc <> 0.
MESSAGE ‘Parti bulunamadı!’ TYPE ‘E’.
ENDIF.
SELECT SINGLE meins FROM mara INTO gs_mchb-meins
WHERE matnr = gs_mchb-matnr.
ENDMETHOD.
METHOD bloke_stoga_al.
DATA : lv_mvtcode   TYPE bapi2017_gm_code,
ls_head_ret  TYPE bapi2017_gm_head_ret,
ls_head      TYPE bapi2017_gm_head_01,
lt_return    TYPE STANDARD TABLE OF bapiret2,
ls_return    TYPE bapiret2,
lt_mvt_items TYPE STANDARD TABLE OF bapi2017_gm_item_create,
ls_mvt_items TYPE bapi2017_gm_item_create.
lv_mvtcode                  = ’04’.
ls_head-pstng_date          = sy-datum.
ls_head-doc_date            = ls_head-pstng_date.
ls_head-pr_uname            = sy-uname.
ls_head-header_txt          = ‘Tahditsizden blokeye’.
ls_mvt_items-material       = gs_mchb-matnr.
ls_mvt_items-batch          = gs_mchb-charg.
ls_mvt_items-plant          = gs_mchb-werks.
ls_mvt_items-stge_loc       = gs_mchb-lgort.
ls_mvt_items-move_type      = ‘344’.
ls_mvt_items-spec_stock     = space.
ls_mvt_items-entry_qnt      = gs_mchb-clabs.
ls_mvt_items-entry_uom      = gs_mchb-meins.
ls_mvt_items-move_mat       = ls_mvt_items-material.
ls_mvt_items-move_batch     = ls_mvt_items-batch.
ls_mvt_items-move_plant     = ls_mvt_items-plant.
ls_mvt_items-move_stloc     = ls_mvt_items-stge_loc.
APPEND ls_mvt_items TO lt_mvt_items.
CALL FUNCTION ‘BAPI_GOODSMVT_CREATE’
EXPORTING
goodsmvt_header  = ls_head
goodsmvt_code    = lv_mvtcode
IMPORTING
goodsmvt_headret = ls_head_ret
TABLES
goodsmvt_item    = lt_mvt_items
return           = lt_return.
LOOP AT lt_return INTO ls_return WHERE type CA ‘AEX’.
EXIT.
ENDLOOP.
IF sy-subrc EQ 0.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number
WITH ls_return-message_v1 ls_return-message_v2
ls_return-message_v3 ls_return-message_v4.
ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
MESSAGE ls_head_ret-mat_doc TYPE ‘I’.
ENDIF.
ENDMETHOD.
METHOD tahditsiz_stoga_al.
DATA : lv_mvtcode   TYPE bapi2017_gm_code,
ls_head_ret  TYPE bapi2017_gm_head_ret,
ls_head      TYPE bapi2017_gm_head_01,
lt_return    TYPE STANDARD TABLE OF bapiret2,
ls_return    TYPE bapiret2,
lt_mvt_items TYPE STANDARD TABLE OF bapi2017_gm_item_create,
ls_mvt_items TYPE bapi2017_gm_item_create.
lv_mvtcode                  = ’04’.
ls_head-pstng_date          = sy-datum.
ls_head-doc_date            = ls_head-pstng_date.
ls_head-pr_uname            = sy-uname.
ls_head-header_txt          = ‘Blokeden tahditsize’.
ls_mvt_items-material       = gs_mchb-matnr.
ls_mvt_items-batch          = gs_mchb-charg.
ls_mvt_items-plant          = gs_mchb-werks.
ls_mvt_items-stge_loc       = gs_mchb-lgort.
ls_mvt_items-move_type      = ‘343’.
ls_mvt_items-spec_stock     = space.
ls_mvt_items-entry_qnt      = gs_mchb-cspem.
ls_mvt_items-entry_uom      = gs_mchb-meins.
ls_mvt_items-move_mat       = ls_mvt_items-material.
ls_mvt_items-move_batch     = ls_mvt_items-batch.
ls_mvt_items-move_plant     = ls_mvt_items-plant.
ls_mvt_items-move_stloc     = ls_mvt_items-stge_loc.
APPEND ls_mvt_items TO lt_mvt_items.
CALL FUNCTION ‘BAPI_GOODSMVT_CREATE’
EXPORTING
goodsmvt_header  = ls_head
goodsmvt_code    = lv_mvtcode
IMPORTING
goodsmvt_headret = ls_head_ret
TABLES
goodsmvt_item    = lt_mvt_items
return           = lt_return.
LOOP AT lt_return INTO ls_return WHERE type CA ‘AEX’.
EXIT.
ENDLOOP.
IF sy-subrc EQ 0.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number
WITH ls_return-message_v1 ls_return-message_v2
ls_return-message_v3 ls_return-message_v4.
ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
MESSAGE ls_head_ret-mat_doc TYPE ‘I’.
ENDIF.
ENDMETHOD.
ENDCLASS.
DATA: g_cls_test TYPE REF TO l_cls_test.
START-OF-SELECTION.
CREATE OBJECT g_cls_test.
CALL METHOD   g_cls_test->verileri_bul( ).
CALL SCREEN   100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
WHEN ‘TDZ’.
CALL METHOD   g_cls_test->tahditsiz_stoga_al( ).
WHEN ‘BLK’.
CALL METHOD   g_cls_test->bloke_stoga_al( ).
ENDCASE.
g_cls_test->verileri_bul( ).
ENDMODULE.

2. Programa numarası 100 olan bir ekran ekleyin.

3. Element list içerisinde OK alanına OK_CODE ismini girin.

4. Flow logic sekmesi içerisindeki yorum satırlarını kaldırın.

5. Layout butonu ile Screen Painter’ ı açın. F6 tuşuna basarak alan seçimi penceresini açın. Get from Program butonuna tıklayarak program içerisindeki tüm alanları görüntüleyin.

6. GS_MCHB structure’ ındaki tüm alanları seçerek ekrana taşıyın. Alanların yanına sol taraftaki menüden Text Field nesnesi ile alanlara etiket ekleyin.

7. Menüden iki adet buton ekleyin. İsimlendirmesi ve FctCode alanlarını aşağıdaki resme göre doldurun.

 

8. Programa GUI Status nesnesi ekleyin.

9. Program kodunu ve diğer nesneleri aktif edin.

10. MCHB tablosundan tahditsiz miktarı miktarı sıfırdan büyük bir malzemenin bilgilerini seçim ekranına girin.

11. Malzemeyi bloke stoğa almak için Blokeye Al butonuna tıklayın.

İşlem başarılı ise gerçekleşen malzeme belgesi numarası mesaj olarak gösterilir. Ekrandaki miktar alanları güncellenir.

Leave a Reply

Your email address will not be published. Required fields are marked *