LM05 transactionı ile alakalı bir kaç ekran atlatmam gerekiyordu. Tek ekran olsa

  set parameter id 'BES' field rs_selfield-value.
  CALL TRANSACTION ‘ME23N’ AND SKIP FIRST SCREEN.

gibi bir kodla atlatabiliyorduk. Fakat bu iş için bir Batch Input gerekiyor. Bunun için SHDB transactionını kullanarak bir Batch Input oluşturdum. Oluşturulan çıktı aşağıdaki gibiydi.

Batch

Burada otomatik Perform BDC komutu oluşturuluyor. Aşağıdaki function kullanılarak
=CONCATENATE("PERFORM ADD_BDC USING ","'",TRIM(B2),"' ","'",TRIM(C2),"' ","'",TRIM(D2),"' ","'",TRIM(E2),"'.")

Elde ettiğimiz bu değerleri direk kodun içerisine gömüyoruz. En sonunda transactionı oluşturduğumuz bu BDC ile çağırıyoruz. Burada önemli olan notlardan biri MODE olayı.

  • ‘A’ Ekranı Görüntüle (Display screen )
  • ‘E’ Eğer hata olursa ekranı görüntüle (Display only if an error occurs )
  • ‘N’ Gösterme (Do not display )
  • ‘P’ Gösterme, Debug edilebilinir (Do not display; debugging possible)

Çalışan kod
DATA : BDCTAB LIKE BDCDATA OCCURS 1 WITH HEADER LINE.

Aşağıda transactionı çağırıp hata mesajlarını ise bir tabloya attığımız kod parçası var.

FORM FillBDC USING P_NIKOD.
  DATA: IERROR LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
  REFRESH : BDCTAB.
PERFORM ADD_BDC USING 'SAPLLMOB' '2100' ' ' ' '.
  PERFORM ADD_BDC USING ‘ ‘ ‘ ‘ ‘BDC_CURSOR’ ‘INP_100′.
  PERFORM ADD_BDC USING ‘ ‘ ‘ ‘ ‘BDC_OKCODE’ ‘=NEXT’.
  PERFORM ADD_BDC USING ‘ ‘ ‘ ‘ ‘INP_100′ P_NIKOD.
  PERFORM ADD_BDC USING ‘SAPLLMOB’ ‘2502′ ‘ ‘ ‘ ‘.
  PERFORM ADD_BDC USING ‘ ‘ ‘ ‘ ‘BDC_CURSOR’ ‘LTAP-VLPLA’.
  PERFORM ADD_BDC USING ‘ ‘ ‘ ‘ ‘BDC_OKCODE’ ‘=SAVE’.
  PERFORM ADD_BDC USING ‘SAPLLMOB’ ‘2502′ ‘ ‘ ‘ ‘.
  PERFORM ADD_BDC USING ‘ ‘ ‘ ‘ ‘BDC_CURSOR’ ‘LTAP-VLPLA’.
  PERFORM ADD_BDC USING ‘ ‘ ‘ ‘ ‘BDC_OKCODE’ ‘=CMPL’.
  PERFORM ADD_BDC USING ‘SAPLLMOB’ ‘2302′ ‘ ‘ ‘ ‘.
  PERFORM ADD_BDC USING ‘ ‘ ‘ ‘ ‘BDC_CURSOR’ ‘LTAP-NLPLA’.
  PERFORM ADD_BDC USING ‘ ‘ ‘ ‘ ‘BDC_OKCODE’ ‘=BU’.
call transaction 'LM05' USING BDCTAB MODE 'E' MESSAGES into ierror.
ENDFORM. ” FillBDC

Kullandığımız ADD_BDC nin kodu ise aşağıdaki gibidir.

FORM ADD_BDC USING PROGRAM DYNPRO FNAME FVALUE .
  CLEAR BDCTAB .
  IF FNAME EQ SPACE .
    BDCTAB-PROGRAM = PROGRAM .
    BDCTAB-DYNPRO = DYNPRO .
    BDCTAB-DYNBEGIN = ‘X’ .
  ELSE .
    BDCTAB-FNAM = FNAME .
    BDCTAB-FVAL = FVALUE .
  ENDIF .
  APPEND BDCTAB .
ENDFORM. ” ADD_BDC