3 Ekim 2024 Perşembe

ABAP Get BLOB URL binary data

 BLOB Url olarak verilen bir link'den SAP sisteminize veri alma işlemine ihtiyacınız olabilir.

Verilen BLOB Url excel,word,csv,txt,img gibi formatlar da olabilir.

Verilen BLOB url link için basit bir uygulama ile link içeriğine erişebilirsiniz.

Örnek:

Blob URL:

https://test.blob.test/test/43f9/20240903Arc-GENAL 20 C4 B0 C3 87 C4 B0N.xlsx

Verilen Blob URL bir excel dosyası generate ederek binary data olarak dönüş yapacak bir http post request gönderelim.

****Create the HTTP client

  TRY.
      CALL METHOD cl_http_client=>create_by_url
        EXPORTING
          url    = blob_url
        IMPORTING
          client client
        EXCEPTIONS
          OTHERS 1.

      client->send).
      client->receive).

      res_doc client->response->get_data).

      client->close).
    CATCH cx_root.
*      WRITE: / 'HTTP Connection error:  
  ENDTRY.


response olarak dönen veri seti binary ve string veri seti şeklinde tek satır olarak dönmekte.Excel formata çevirmek için solix_tab çevirerek internal tab çeviriyoruz.

    data lt_records       TYPE solix_tab.

*  "convert binary data to xstring
  CALL METHOD cl_bcs_convert=>xstring_to_solix(
    EXPORTING
      iv_xstring res_doc
    RECEIVING
      et_solix   lt_records ).


Solix_tab ile internal table çevrilen binary listesi xtring olarak tekrar çevrilerek excel bilgisi için ön hazırlık tamamlanmış olmakta.

data: lv_headerxstring TYPE xstring,
      lv_filelength    TYPE i.

 lv_filelength xstrlenres_doc ).
  CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
    EXPORTING
      input_length lv_filelength
    IMPORTING
      buffer       lv_headerxstring
    TABLES
      binary_tab   lt_records
    EXCEPTIONS
      failed       1
      OTHERS       2.

  IF sy-subrc <> 0.
    "Implement suitable error handling here
  ENDIF.


excel format çevrilerek,excel içeriği alınmakta

DATA lo_excel_ref TYPE REF TO cl_fdt_xl_spreadsheet .
  lv_filename url.
  TRY .
      lo_excel_ref NEW cl_fdt_xl_spreadsheet(
                              document_name lv_filename
                              xdocument     lv_headerxstring .
    CATCH cx_fdt_excel_core.
      "Implement suitable error handling here
      EXIT.
  ENDTRY .

  "Get List of Worksheets
  lo_excel_ref->if_fdt_doc_spreadsheet~get_worksheet_names(
    IMPORTING
      worksheet_names DATA(lt_worksheets).

  IF NOT lt_worksheets IS INITIAL.
    READ TABLE lt_worksheets INTO DATA(lv_woksheetnameINDE1.

    DATA(lo_data_reflo_excel_ref->if_fdt_doc_spreadsheet~get_itab_from_worksheet(
                                             lv_woksheetname ).
    "now you have excel work sheet data in dyanmic internal table
    ASSIGN lo_data_ref->TO <gt_data>.
  ENDIF.

2 Ocak 2024 Salı

BRF+ plus user mode -> simple to expert

 BRF+ plus user mode -> simple to expert

Geçmek için BRF+ plus ekranın da kullanıcı profiline girip user mode kısmını Expert olarak yapmak gerekmektedir.










22 Kasım 2023 Çarşamba

Enhancement xxxx must still be adjusted

 Enhancement xxxx must still be adjusted mesajı alıyorsanız yapmanız gerekenler :

1-SPAU_ENH işlem kodu ile Enhancement Implementation 'da Adjustment etmeniz gerekmektedir.




26 Nisan 2023 Çarşamba

SAP Message EC352 - Copying statuses is restricted in modification mode. See F1 Help

 Z'li raporunuza standart programlardan veya mevcut programlardan kopyalama yaptığınız zaman aşağıdaki hatayı alırsanız yapmanız gerekenler : 
Hata nedeni:Geliştirme yaptığımız development ortamının source(kaynak) sistem olmaması.QA sisteminin DEV sistem olarak kopyalanması gibi bir durum olmuş olabilir.

SAP Message EC352 - Copying statuses is restricted in modification mode. See F1 Help

SM30 işlem kodu ile TADIR tablosundan ilgili program bulunur.Orginal System QA sistemden DEV sisteme çevrilip kaydet yapılır.




3 Nisan 2023 Pazartesi

2 smartform pages in one page

 Birbirinden bağımsız veya farklı format da smartforms'larınızı tek sayfa çıktı da birleştirebilirsiniz.
1.ci smartforms'un driver'lerini set edip smartformu çağırıyoruz.Smartforms'u kapatmıyoruz.
2.ci smartforms'a geçince driverları set etmiyoruz ve çağırmıyoruz.Smartforms'u kapatıyoruz.

1.ci smartform adımı : Smartforms driver objelerini dolduruyoruz.Ve smartform oluşması için açıyoruz.


1.ci smartforms oluşturduktan sonra smartforms'u kapatmıyoruz.Açık bırakıyoruz



2.ci smartforms adımı: 2.ci smartforms adımına geçince 1.adımda oluşturduğumuz driver'ı kullanıyoruz.2.adım da tekrar driver oluşturmuyoruz.



2.ci smartforms tamamlanınca smartforms'muzu kapatıyoruz.



Süreçsel olarak 2 veya daha fazla smartforms'larını aynı çıktı sayfasında bu yöntemle çıkarabilirsiniz.




12 Aralık 2022 Pazartesi

Debug the Background Job

 

Background job’lar için alternatif debug yöntemleri:

Örnek uygulama:BTCLOOP standart programı ile job kurulumu yapılır.

1-SM37’den çalışan job bulunur.Job menusunden Capture:active job seçimi yapılarak debug mode geçilir


2-SM50 ekranından çalışan program bulunur.Administration->Program->Debugging mode geçerek debug’a düşebilirsiniz.



3-Bitmiş bir job’ınızı JDBG ile debug edebilirsiniz.JobName tıklayıp komut satırına JDBG yazarak debug moda düşebilirsiniz.


4-Job kurulumu sırasında RSWAITSEC ve BTCLOOP programlarını önce kurarak debug modda geçerek bir sonraki job’ı debuglayabilirsiniz.

 

 

21 Kasım 2022 Pazartesi

Date manipulation in CDS Views

 

Date manipulation in CDS Views


   //Travel.end_date        as EndDate,

      cast( 

      concat(

        concat(

          concat(substring(Travel.end_date, 7, 2), '.' ),

          concat(substring(Travel.end_date, 5, 2), '.' )

        ),

        substring(Travel.end_date, 1, 4)        

      )

    as abap.char( 10 )) as EndDate,


Fiori output :