sap abap adobe forms dinamik resim üretme

SEO Optimal Image Data:.

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.

zzz_s_website
zzz_tt_website

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.

zzz_i_website

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.

zzz_f_website

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.

zzz_f_website2

sıra geldi programı yazmaya. programda test için üç adet veriyi tabloya ekleyip qr kodlarının ekranda basılmasını sağlıyoruz.

adobe forms dinamik resim

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