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 |