ABAP
sap abap adobe forms dinamik resim üretme
merhaba, bu yazıda sap adobe forms çıktılarında satır bazında dinamik resim nasıl üretilir onu anlatacağım. örnek olarak site ismi ve site logosu ekrana basan bir çıktı oluşturalım. bunun için öncelikle zzz\s\website adında bir structure ve zzz\tt\website adında bir table type yaratıyoruz. zzz\tt\website satır tipini zzz\s\website olarak belirliyoruz. bu işlemden sonra SFP işlem koduyla zzz\i\website adında bir arayüz yaratıp import parametresini zzz\tt\website tipinde bir tablo veriyoruz. arayüzü oluşturduktan sonra bu arayüzü …
merhaba, bu yazıda sap adobe forms çıktılarında satır bazında dinamik resim nasıl üretilir onu anlatacağım. örnek olarak site ismi ve site logosu ekrana basan bir çıktı oluşturalım. bunun için öncelikle zzz_s_website adında bir structure ve zzz_tt_website adında bir table type yaratıyoruz. zzz_tt_website satır tipini zzz_s_website olarak belirliyoruz.
bu işlemden sonra SFP işlem koduyla zzz_i_website adında bir arayüz yaratıp import parametresini zzz_tt_website tipinde bir tablo veriyoruz.
arayüzü oluşturduktan sonra bu arayüzü kullanan zzz_f_website adında form nesnesini yaratıyoruz. burada t_website değişkenimizi bağlam üzerine sürükleyip bırakıyoruz ve data düğümüne graphiclogo adında bir graphic ekliyoruz. bu grafiğin besleneceği kaynak olarak da t_website-logo alanını gösteriyoruz. logo düğümünün de etkinliğini kaldırabiliriz burada.
bunu yaptıktan sonra düzen tabına geçip data view’den t_website tablosunu sürükleyip dizayn alanına bırakıyoruz. oluşan graphiclogo hücresinin tipini image field olarak değiştiriyoruz.
sıra geldi programı yazmaya. programda test için üç adet veriyi tabloya ekleyip qr kodlarının ekranda basılmasını sağlıyoruz.
REPORT zzz_dynamic_image.
DATA: lt_website TYPE zzz_tt_website,
ls_website TYPE zzz_s_website,
lv_qrurl TYPE string.
ls_website-siteurl = 'https://serkanozcan.com/'.
APPEND ls_website TO lt_website.
ls_website-siteurl = 'http://www.google.com/'.
APPEND ls_website TO lt_website.
ls_website-siteurl = 'http://www.facebook.com/'.
APPEND ls_website TO lt_website.
LOOP AT lt_website INTO ls_website.
CONCATENATE 'http://encode.i-nigma.com/QRCode/img.php?d='
ls_website-siteurl
'&c=&s=10'
INTO lv_qrurl.
PERFORM get_html USING lv_qrurl CHANGING ls_website-logo.
MODIFY lt_website FROM ls_website.
ENDLOOP.
DATA fp_outputparams TYPE sfpoutputparams.
DATA lv_interface_type TYPE fpinterfacetype.
DATA lv_funcname TYPE funcname.
DATA ls_formoutput TYPE fpformoutput.
DATA ls_docparams TYPE sfpdocparams.
fp_outputparams-pdftagged = 'X'.
fp_outputparams-nodialog = 'X'.
fp_outputparams-dest = 'ZPDF'.
fp_outputparams-preview = 'X'.
fp_outputparams-getpdf = ' '.
ls_docparams-langu = 'T'.
ls_docparams-country = 'TR'.
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = fp_outputparams
EXCEPTIONS
cancel = 1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS = 5.
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = 'ZZZ_F_WEBSITE'
IMPORTING
e_funcname = lv_funcname
e_interface_type = lv_interface_type.
CALL FUNCTION lv_funcname
EXPORTING
/1bcdwb/docparams = ls_docparams
t_website = lt_website
IMPORTING
/1bcdwb/formoutput = ls_formoutput
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
CALL FUNCTION 'FP_JOB_CLOSE'
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
*&---------------------------------------------------------------------*
*& Form get_html
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_URL text
* -->P_DATA text
*----------------------------------------------------------------------*
FORM get_html USING p_url
CHANGING p_data.
DATA lv_client TYPE REF TO if_http_client.
* Create client
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = p_url
IMPORTING
client = lv_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
lv_client->request->set_header_field( name = '~request_method'
value = 'GET' ).
* Get request:
CALL METHOD lv_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Prepare client-receive:
CALL METHOD lv_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
* Get HTML:
CLEAR p_data.
p_data = lv_client->response->get_data( ).
ENDFORM. " GET_HTML





