Sorun Cevaplayalım

İşinizle ilgili öngörüler edinin, gerçek zamanlı bilgilere göre karar alın.

SAP Eğitim ve Sertifika Dönemleri

Uzmanlığınızı ve deneyiminizi SAP çözümleri kullanarak tasdik edin.

Çözüm Ekibi Başvurusu

Kullanıcılara hızlı ve pratik çözümler üreterek görev almak isteyenler.

Kaynak ikonu

TCMB DÖVİZ KURLARININ SAPA TRANSFERİ

indirmek için izniniz yok
TCMB Döviz kurlarının Sap Sistemine Transferi programı

SAP Sistemine TCMB sitesinden kurları transfer edebileceğiniz aşağıdaki programı önce test sisteminizde deneyip kullanabilirsiniz. Programda ilk ekranında TCMB Kur Kontrol Tarihi olarak istenilen tarih Merkez bankasında yayınlandığı tarihtir. Diğeri ise Sisteme kaydedilen tarihtir. Bunun anlamı şudur. TCMB de bugünün kuru hep bir gün önce yayınlanır. Dolayısıyla 02 şubat kurunu sisteme aktaracaksanız kur kontrol tarihi 01 şubat olmalıdır. Cuma günü açıklanan kur ise C.tesi, Pazar ve P.tesi günlerine ait bir kur olduğu için 3 gün için aynı tarihi kullanmalısınız. Örneğin 08.02.2019 Cuma günü açıklanan kuru, 09 C.tesi, 10 Pazar ve 11 P.tesi günleri için de sisteme aktarmalısınız.

8345

Karşınıza gelen aşağıdaki ekranda " MB Kur Bilgilerinin Sap’a Transferi " butonuna bastığınızda Sisteminize aktarılacaktır.

8346


" Aşağıdaki sap programı kaynak kodlarını sisteminizde oluşturarak kullanabilirsiniz. "


Kod:
&---------------------------------------------------------------------

*& Report Z_TCMB_KUR_TRANSFER

*&

&---------------------------------------------------------------------

*&

*&

&---------------------------------------------------------------------

REPORT Z_TCMB_KUR_TRANSFER .



TABLES: TCURR.



PARAMETERS:



  p_kurdat like SY-DATUM , "TCMB Kur Tarihi"         “01.02.2019”

p_update like SY-DATUM . "Transfer(Kayıt) Tarihi"  “02.02.2019”



DATA:



TABCURR LIKE TCURR OCCURS 10 WITH HEADER LINE,

TABCURR1 LIKE TCURR OCCURS 10 WITH HEADER LINE.



DATA:

TAB_CURR TYPE STANDARD TABLE OF TCURR,

TAB_CURR_WA LIKE LINE OF TAB_CURR.





DATA : XML_TABLE TYPE STRING,

l_filename_string type string , "new

l_t_data(200) OCCURS 0 WITH HEADER LINE , "new

* XSTRING formatındaki XML verisi..

XML_DATA TYPE XSTRING,

* XML dosyasının boyutu..

XML_SIZE TYPE I,

* PARSE edilmiş XML verisi...

XML_RESULT LIKE TABLE OF SMUM_XMLTB WITH HEADER LINE,

* HTTP Client..

HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT,

* RETURN

RETURN LIKE TABLE OF BAPIRET2.



DATA LINE LIKE SY-TABIX.



DATA:

LV_URL TYPE STRING,

LV_XML TYPE STRING.



DATA: BEGIN OF GT_DATA OCCURS 0,

CURRENCYCODE(3) ,

CURRENCYNAME(25) ,

FOREXBUYING(25) ,

END OF GT_DATA .



DATA: BEGIN OF KUR_DATA OCCURS 0,



CURR_KUR_TIPI LIKE TCURR-KURST , "Kur Tipi

CURR_KAYNAK_PB LIKE TCURR-FCURR , "Kaynak PB

CURR_HEDEF_PB LIKE TCURR-TCURR , "Hedef PB

CURR_DATE LIKE TCURR-GDATU , "Kur Geç.Baş.Tarih

CURR_VALUE LIKE TCURR-UKURS , "Kur Değeri

FFACT LIKE TCURR-FFACT , "Kaynak PB faktörü

TFACT LIKE TCURR-FFACT , "Hedef PB faktörü



END OF KUR_DATA .



*Define parametrik web adres değişkeni...



DATA: BEGIN OF WEB_ADRES,

PATH_1(30) VALUE 'http://www.tcmb.gov.tr/kurlar/' ,

PATH_2(06) , "yyyymm

ARA VALUE '/' ,

KURDOSYA_DATE(08) , "ddmmyyyy'

KURDOSYA_FORMAT(04) VALUE '.xml' ,

END OF WEB_ADRES .



DATA W_URL TYPE STRING.



DATA: BEGIN OF W_TAR_1,

GUN(02) ,

AY(02) ,

YIL(04) ,

END OF W_TAR_1 .



DATA: KUR_VALUE LIKE TCURR-UKURS,

KUR_TRDATE LIKE TCURR-GDATU . "Kur Geç.Baş.Tarih





*TCURR tablo update öncesi kullanılacak ara değişkenler...



DATA:

XFCODE LIKE SY-UCOMM OCCURS 10 WITH HEADER LINE,



FIRST_SCREEN,

LISTE,

LINES LIKE SY-TFILL,

ANSWER.





DATA : KAYIT_YAZILAN LIKE SY-TABIX.



*Structure for error message..

TYPES : BEGIN OF ty_s_error,

msg_err(60) TYPE c,

END OF ty_s_error.



DATA:



  wa_error TYPE string,



  it_output type table of ty_s_error,

wa_output like line of it_output.



DATA : BEGIN OF BDCTABLE OCCURS 1 .

INCLUDE STRUCTURE BDCDATA .

DATA : END OF BDCTABLE .



AT USER-COMMAND.



PERFORM PROCESS_USER_COMMAND.



START-OF-SELECTION.



*Parametrik Tarih değişkenlerinin doldurulması...

W_TAR_1-GUN = p_kurdat+6(2).

W_TAR_1-AY = p_kurdat+4(2).

W_TAR_1-YIL = p_kurdat(4).



CONCATENATE W_TAR_1-YIL W_TAR_1-AY INTO WEB_ADRES-PATH_2.



WEB_ADRES-KURDOSYA_DATE = W_TAR_1.



CONCATENATE WEB_ADRES-PATH_1 WEB_ADRES-PATH_2 WEB_ADRES-ARA WEB_ADRES-KURDOSYA_DATE WEB_ADRES-KURDOSYA_FORMAT INTO W_URL.



LV_URL = W_URL .



* Downloading XML from TCMB web site..

CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL

EXPORTING

URL = LV_URL

IMPORTING

CLIENT = HTTP_CLIENT

EXCEPTIONS

ARGUMENT_NOT_FOUND = 1

PLUGIN_NOT_ACTIVE = 2

INTERNAL_ERROR = 3

OTHERS = 4 .



CHECK SY-SUBRC EQ 0.



*Get request..



CALL METHOD HTTP_CLIENT->send

EXCEPTIONS

http_communication_failure = 1

http_invalid_state = 2

http_processing_failed = 3

http_invalid_timeout = 4

OTHERS = 5.

IF sy-subrc <> 0.

*? RAISE connection_error.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.



* Receive response..Prepare Client-Receive..







CALL METHOD HTTP_CLIENT->receive

EXCEPTIONS

http_communication_failure = 1

http_invalid_state = 2

http_processing_failed = 3

OTHERS = 4.



IF sy-subrc NE 0.



DATA subrc TYPE sysubrc.

DATA errortext TYPE string.



CALL METHOD HTTP_CLIENT->get_last_error

IMPORTING

code = subrc

MESSAGE = errortext.

WRITE: / 'communication_error( receive )',

/ 'code: ', subrc, 'message: ', errortext.

EXIT.

ELSE.



*Get HTML:

*Alınan veriyi daha sonra çeşitli amaçlar için kullanabilmemiz için

*tanımladığımız değişkene atıyoruz(Get the response content in Character format).

CLEAR XML_TABLE.

XML_TABLE = HTTP_CLIENT->RESPONSE->GET_CDATA( ).

HTTP_CLIENT->CLOSE( ).

ENDIF.



* STRING verinin XSTRING formatına çevrilmesi..

CALL FUNCTION 'SCMS_STRING_TO_XSTRING'

EXPORTING

TEXT = XML_TABLE

IMPORTING

BUFFER = XML_DATA

EXCEPTIONS

FAILED = 1

OTHERS = 2 .



IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.



* XSTRING verinin tabloya dönüştürülmesi..

CALL FUNCTION 'SMUM_XML_PARSE'

EXPORTING

XML_INPUT = XML_DATA

TABLES

XML_TABLE = XML_RESULT

RETURN = RETURN .





DESCRIBE TABLE XML_RESULT LINES LINE .



DELETE XML_RESULT WHERE CNAME NE 'CurrencyCode' AND

CNAME NE 'CurrencyName' AND

CNAME NE 'ForexBuying' .



DESCRIBE TABLE XML_RESULT LINES LINE .





* XML Veri Tablosundan Kur Bilgileri Tablosunu Oluşturma İşlemleri...



PERFORM PROCESS_XML_DATA.



Kur Bilgilerini Sisteme UPLOAD öncesi verilerin kontrolü ve
Kur değerini nümerik değere dönüştürme işlemleri...
PERFORM WRITE_DATA.



END-OF-SELECTION.



&---------------------------------------------------------------------

*& Form PROCESS_XML_DATA

&---------------------------------------------------------------------

* text

----------------------------------------------------------------------

--> p1 text
<-- p2 text
----------------------------------------------------------------------

FORM PROCESS_XML_DATA .



DATA : READ_TABIX TYPE I,

FIELDNAME(50) .



FIELD-SYMBOLS <FS>.



LOOP AT XML_RESULT WHERE TYPE EQ 'A'.



IF XML_RESULT-CVALUE EQ 'XDR' .

*Kurların sonu. Çapraz kur değerleri başlangıcında işlem sonlanıyor.

EXIT.

ENDIF.

*Okunan PB değeri dinamik olarak tablo yapısına alınıyor...

CONCATENATE 'GT_DATA-' XML_RESULT-CNAME INTO FIELDNAME.

ASSIGN (FIELDNAME) TO <FS> .

IF <FS> IS ASSIGNED AND SY-SUBRC EQ 0.

<FS> = XML_RESULT-CVALUE.

UNASSIGN <FS> .

ENDIF.



DO.



READ_TABIX = SY-TABIX + 1.

READ TABLE XML_RESULT INDEX READ_TABIX.



IF SY-SUBRC EQ 0 AND XML_RESULT-TYPE EQ 'V' .

*Okunan değer dinamik olarak tablo yapısına alınıyor...

CONCATENATE 'GT_DATA-' XML_RESULT-CNAME INTO FIELDNAME.

ASSIGN (FIELDNAME) TO <FS> .

IF <FS> IS ASSIGNED AND SY-SUBRC EQ 0.

<FS> = XML_RESULT-CVALUE.

UNASSIGN <FS> .

ENDIF.

ELSE.

EXIT.

ENDIF.

ENDDO.

*Tabloya ekleme..

APPEND GT_DATA.

CLEAR GT_DATA.

ENDLOOP.



DESCRIBE TABLE GT_DATA LINES LINE.



LISTE = 1.



ENDFORM. " PROCESS_XML_DATA

&---------------------------------------------------------------------

*& Form WRITE_DATA

&---------------------------------------------------------------------

* text

----------------------------------------------------------------------

--> p1 text
<-- p2 text
----------------------------------------------------------------------

FORM WRITE_DATA.



REFRESH XFCODE. CLEAR XFCODE.

APPEND 'RECS' TO XFCODE.



IF LINE = 0.

IF NOT FIRST_SCREEN IS INITIAL.

EXIT.

ELSE.

APPEND 'EXEC' TO XFCODE.



WRITE: SPACE.

ENDIF.

ENDIF.



IF LISTE = 1.

APPEND 'LIS1' TO XFCODE.

ENDIF.



SET PF-STATUS 'ZMRKGUI01' EXCLUDING XFCODE.



FORMAT COLOR COL_HEADING.



WRITE : /(20) 'Kur Bilg.Tarihi :', (65) p_kurdat .

WRITE : /(20) 'Kayıt Tarihi :', (65) p_update.



WRITE : /(03) 'PB ', (25) 'Tanımı', (50) 'Döviz Alış Değeri' .



WRITE:/01(80) SY-ULINE .



FORMAT COLOR COL_NORMAL.



LOOP AT GT_DATA.



WRITE AT : /(03) GT_DATA-CurrencyCode, (25) GT_DATA-CurrencyName, (50) GT_DATA-ForexBuying.



ENDLOOP.



WRITE:/01(80) SY-ULINE .



ENDFORM. " WRITE_DATA

&---------------------------------------------------------------------

*& Form PROCESS_KUR_BEFORE_TRANSFER

&---------------------------------------------------------------------

* text

----------------------------------------------------------------------

--> p1 text
<-- p2 text
----------------------------------------------------------------------

FORM PROCESS_KUR_BEFORE_TRANSFER .



LOOP AT GT_DATA .



IF SY-TABIX EQ 1.



REFRESH KUR_DATA. CLEAR KUR_DATA.

CLEAR KUR_VALUE.

*? CONVERT DATE p_kurdat INTO INVERTED-DATE kur_trdate .

CONVERT DATE p_update INTO INVERTED-DATE kur_trdate .

ENDIF.



MOVE 'M' TO KUR_DATA-CURR_KUR_TIPI.

MOVE GT_DATA-CURRENCYCODE TO KUR_DATA-CURR_KAYNAK_PB.



*GG/AA/YYYY olarak girilen Tarih TCURR tablosunda saklanma formatına dönüştürülüyor..

CONVERT DATE p_update INTO INVERTED-DATE kur_data-curr_date .

*String olarak alınan Kur değerinin numeric kur değerine(xx,yyyyy şeklinde) dönüşümü..

PERFORM KUR_VALUE_PROCESS.



MOVE KUR_VALUE TO KUR_DATA-CURR_VALUE.

MOVE GT_DATA-CURRENCYCODE TO KUR_DATA-CURR_KAYNAK_PB.

MOVE 'TRY' TO KUR_DATA-CURR_HEDEF_PB.



APPEND KUR_DATA.

CLEAR: KUR_DATA.



***

ENDLOOP.



ENDFORM. " PROCESS_KUR_BEFORE_TRANSFER



&---------------------------------------------------------------------

*& Form UPDATE_PROCESS

&---------------------------------------------------------------------

* text

----------------------------------------------------------------------

--> p1 text
<-- p2 text
----------------------------------------------------------------------

FORM UPDATE_PROCESS .



REFRESH TABCURR. CLEAR TABCURR.



LOOP AT KUR_DATA.



IF SY-TABIX EQ 1.

REFRESH TABCURR1. CLEAR TABCURR1.

ENDIF.





TABCURR1-MANDT = SY-MANDT.

TABCURR1-KURST = KUR_DATA-CURR_KUR_TIPI .

TABCURR1-FCURR = KUR_DATA-CURR_KAYNAK_PB .

TABCURR1-TCURR = KUR_DATA-CURR_HEDEF_PB .

TABCURR1-GDATU = KUR_DATA-CURR_DATE .

TABCURR1-UKURS = KUR_DATA-CURR_VALUE .



*--

MOVE-CORRESPONDING TABCURR1 TO TAB_CURR_WA . "NEW

APPEND TAB_CURR_WA TO TAB_CURR. "NEW



ENDLOOP.





MODIFY TCURR FROM TABLE TAB_CURR.



KAYIT_YAZILAN = SY-DBCNT .



IF SY-SUBRC EQ 0 .

MESSAGE S615(ZM) WITH 'SAP Kur Bilgileri' KAYIT_YAZILAN .

ENDIF.



ENDFORM. " UPDATE_PROCESS



&---------------------------------------------------------------------

*& Form KUR_VALUE_PROCESS

&---------------------------------------------------------------------

* text

----------------------------------------------------------------------

--> p1 text
<-- p2 text
----------------------------------------------------------------------

FORM KUR_VALUE_PROCESS .



CALL FUNCTION 'HRCM_STRING_TO_AMOUNT_CONVERT'

EXPORTING

STRING = GT_DATA-FOREXBUYING

DECIMAL_SEPARATOR = ','

IMPORTING

BETRG = KUR_VALUE

EXCEPTIONS

CONVERT_ERROR = 1 .



ENDFORM. " KUR_VALUE_PROCESS

&---------------------------------------------------------------------

*& Form PROCESS_USER_COMMAND

&---------------------------------------------------------------------

* text

----------------------------------------------------------------------

--> p1 text
<-- p2 text
----------------------------------------------------------------------

FORM PROCESS_USER_COMMAND .



IF SY-UCOMM EQ 'EXEC' .



PERFORM CONFIRM_TRANSFER.



CHECK ANSWER = 'J' .

*TCMB Kur bilgilerinin SAP Sistemine Transfer İşlemleri...



PERFORM PROCESS_KUR_BEFORE_TRANSFER.



PERFORM UPDATE_PROCESS.



ENDIF.



ENDFORM. " PROCESS_USER_COMMAND

&---------------------------------------------------------------------

*& Form CONFIRM_TRANSFER

&---------------------------------------------------------------------

* text

----------------------------------------------------------------------

--> p1 text
<-- p2 text
----------------------------------------------------------------------

FORM CONFIRM_TRANSFER .



CLEAR ANSWER.



CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

EXPORTING

DEFAULTOPTION = 'N'

TEXTLINE1 = 'MB Döviz Bilgileri SAP a Transfer Edilsin mi?'

TITEL = 'Hatırlatma'

IMPORTING

ANSWER = ANSWER.



ENDFORM. " CONFIRM_TRANSFER
Yazar
CEMOKA
İndirilme
1
Görüntüleme
504
İlk Yayınlama
Son Güncelleme
Değerlendirme
0.00 Oylama 0 İnceleme

CEMOKA Kullanıcısının Diğer Kaynakları;

Üst