Batch Input
Batch
Data Communication (BDC), en eski yöntemlerden biridir. Sadece R/3 sistemine veri girmek için kullanılır. BDC,
bir ABAP progamı kullanrak, transactional ekranını kullanmak için kullanıcı
girişini simüle eder. Normalde, girişler bir dosya formunda gelir. ABAP program
bu dosyayı okur ve giriş ekranı tarafından sunulan Alana (BDCDATA) internal
tablosundaki verilerin girilmesini sağlar. Transaction bu internal tabloyu
kullanarak başlatılır ve arka planda çalışır.
Call
Transaction, transaction zamanlaması yapılan bir processin kendisi tarafından
başlatılır ve böylece ABAP program hata ayıklaması yapmak zorundadır. Bu ayrıca
gerçek-zamanlı arayüz olarak kullanılır , hata ayıklama ve loglama özelliklerini kontrol
eder.
Batch Input Sessions, ABAP program bütün transactional verilerin
hepsi ile bir süreç yaratır, zamanlama ayarı yapılır ve işlenir (SM35 kullanarak).
Bu method hata işleme mekanizması da yaratır.
Batch Input (BI) programları, genellikle klasik BDC yaklaşımını
kullanır fakat BDCDATA formatında yazılmış bir ABAP programına ihtiyaç duymaz.
Kullanızı önceden tanımlanmış bir kayıt yapısını kullanarak verileri
şekillendirir ve bri tabloda bunları saklar. Bir BI program sonra bunları okur
ve dosyanın kayıt başlığında belirtilen transaction ile çağırır.
Önce T-code "SHDB" ile hareketleri kaydedip daha sonra tek tek bdc structer ını doldurmak en kolayı olacaktır.
DATA : gv_msgtxt TYPE string.
DATA: BEGIN OF bdc_tab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdc_tab.
DATA BEGIN OF gt_msg OCCURS 10.
INCLUDE STRUCTURE bdcmsgcoll.
DATA END OF gt_msg.
REFRESH bdc_tab.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=TOGGLE'.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SELOP'.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ADD'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPMS38V 1120SUB1'.
PERFORM bdc_field USING 'BDC_CURSOR' 'I_TVARVC_SELOPS-NAME(01)'.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPMS38V 1120SUB1'.
PERFORM bdc_field USING 'BDC_CURSOR' 'I_TVARVC_SELOPS-HIGH(10)'.
PERFORM bdc_field USING 'I_TVARVC_SELOPS-NAME(10)' 'ZTEST2'.
PERFORM bdc_field USING 'I_TVARVC_SELOPS-HIGH(10)' '1111'.
PERFORM bdc_field USING 'I_TVARVC_SELOPS-LOW(10)' '111111111'.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=RETN'.
CALL TRANSACTION 'STVARV' USING bdc_tab MODE 'N' UPDATE 'S'
MESSAGES INTO gt_msg.
PERFORM format_message.
*&---------------------------------------------------------------------*
*& Form bdc_newdynpro
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM bdc_newdynpro USING program dynpro.
CLEAR bdc_tab.
bdc_tab-program = program.
bdc_tab-dynpro = dynpro.
bdc_tab-dynbegin = 'X'.
APPEND bdc_tab.
ENDFORM. "bdc_newdynpro
*******************************************************************
* Inserts a field in bdc_tab
*******************************************************************
FORM bdc_field USING fnam fval.
CLEAR bdc_tab.
bdc_tab-fnam = fnam.
bdc_tab-fval = fval.
APPEND bdc_tab.
ENDFORM. "bdc_field
*&---------------------------------------------------------------------*
*& Form FORMAT_MESSAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">-->
*----------------------------------------------------------------------*
FORM format_message .
CLEAR gv_msgtxt.
LOOP AT gt_msg .
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = gt_msg-msgid
lang = sy-langu
no = gt_msg-msgnr
v1 = gt_msg-msgv1
v2 = gt_msg-msgv2
v3 = gt_msg-msgv3
v4 = gt_msg-msgv4
IMPORTING
msg = gv_msgtxt
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
TRANSLATE gv_msgtxt TO UPPER CASE.
WRITE : / gv_msgtxt.
ENDIF.
ENDLOOP.
ENDFORM. " FORMAT_MESSAGE
DATA: BEGIN OF bdc_tab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdc_tab.
DATA BEGIN OF gt_msg OCCURS 10.
INCLUDE STRUCTURE bdcmsgcoll.
DATA END OF gt_msg.
REFRESH bdc_tab.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=TOGGLE'.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SELOP'.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ADD'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPMS38V 1120SUB1'.
PERFORM bdc_field USING 'BDC_CURSOR' 'I_TVARVC_SELOPS-NAME(01)'.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPMS38V 1120SUB1'.
PERFORM bdc_field USING 'BDC_CURSOR' 'I_TVARVC_SELOPS-HIGH(10)'.
PERFORM bdc_field USING 'I_TVARVC_SELOPS-NAME(10)' 'ZTEST2'.
PERFORM bdc_field USING 'I_TVARVC_SELOPS-HIGH(10)' '1111'.
PERFORM bdc_field USING 'I_TVARVC_SELOPS-LOW(10)' '111111111'.
PERFORM bdc_newdynpro USING 'SAPMS38V' '1100'.
PERFORM bdc_field USING 'BDC_OKCODE' '=RETN'.
CALL TRANSACTION 'STVARV' USING bdc_tab MODE 'N' UPDATE 'S'
MESSAGES INTO gt_msg.
PERFORM format_message.
*&---------------------------------------------------------------------*
*& Form bdc_newdynpro
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM bdc_newdynpro USING program dynpro.
CLEAR bdc_tab.
bdc_tab-program = program.
bdc_tab-dynpro = dynpro.
bdc_tab-dynbegin = 'X'.
APPEND bdc_tab.
ENDFORM. "bdc_newdynpro
*******************************************************************
* Inserts a field in bdc_tab
*******************************************************************
FORM bdc_field USING fnam fval.
CLEAR bdc_tab.
bdc_tab-fnam = fnam.
bdc_tab-fval = fval.
APPEND bdc_tab.
ENDFORM. "bdc_field
*&---------------------------------------------------------------------*
*& Form FORMAT_MESSAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">-->
*----------------------------------------------------------------------*
FORM format_message .
CLEAR gv_msgtxt.
LOOP AT gt_msg .
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = gt_msg-msgid
lang = sy-langu
no = gt_msg-msgnr
v1 = gt_msg-msgv1
v2 = gt_msg-msgv2
v3 = gt_msg-msgv3
v4 = gt_msg-msgv4
IMPORTING
msg = gv_msgtxt
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
TRANSLATE gv_msgtxt TO UPPER CASE.
WRITE : / gv_msgtxt.
ENDIF.
ENDLOOP.
ENDFORM. " FORMAT_MESSAGE
Hiç yorum yok:
Yorum Gönder