20241004

SO10 - Transportar textos standards

Utilizar uma task do tipo "Reparação" ou "Desenvolvimento/Correção"
Fazer o ajuste no texto pela transação SO10 e salvar normalmente
Executar o programa RSTXTRAN .

Ao executar o programa com as informações passadas...

Escolha o texto desejado e pressione ENTER


Clique em "Aceitar Txts.na correç."


Uma confirmação será solicitada.


Pronto. Objeto de texto anexado em sua task. Basta liberar e transportar a request.






    


20240816

Regras de Validação de Substituição

Regras de Validação de Substituição

 

Consultant SAP: GGB1 GGB0 PROGRAMA RGUGBR00 (consultingsap.blogspot.com)

 

Trasações: GGB0 OB28 GGB4

Regras de validação

 

Transações: GGB1 OBBH GGB4

Re0gras de substituição

 

 

PROGRAMA RGUGBR00

 

 

Tentar utilizar, se possível, ao invés de Field/User Exit para Validação/Substituição, as Regras de Validação (transação GGB0/OB28) ou as Regras de Substituição (transação GGB1/OBBH) — a transação GGB4 remete a ambas regras.

 

http://www.youtube.com/watch?v=ge2Zl5d7ak0

 


Após associar a etapa a nova regra e super importante

RGUGBR00

 

Para modificação de DIV a regra devera ser colocada no Cabeçalho do documento

 

Conforme

 

*---------------------------------------------------------------------*

*       FORM ZXXX - VALIDAÇÃO DE DIVISÃO                              *

*---------------------------------------------------------------------*

* Modificar o campo divisão na conta de diferença de preço quando

* ocorrer o movimento de transferência de material

*---------------------------------------------------------------------*

FORM z013 CHANGING bool_data TYPE gb002_015.[JO1]    "**

 

  FIELD-SYMBOLS: <fs_bwart>, "Tipo de movimento

                 <fs_matnr>, "Material

                 <fs_umwrk>. "Centro receptor

 

  DATA: vc_bwart LIKE mseg-bwart,

        vc_matnr LIKE mara-matnr,

        vc_spart LIKE mara-spart,

        vc_gsber LIKE v134g-gsber,

        vc_umwrk LIKE mseg-umwrk.

 

* Recuperando o TIPO DE MOVIMENTO

  ASSIGN ('(SAPMM07M)RM07M-BWARTWA') TO <fs_bwart>.

  IF <fs_bwart> IS ASSIGNED.

    vc_bwart = <fs_bwart>.

  ENDIF.

 

* Recuperando o CENTRO RECEPTOR

  ASSIGN ('(SAPMM07M)MSEGK-UMWRK') TO <fs_umwrk>.

  IF <fs_umwrk> IS ASSIGNED.

    vc_umwrk = <fs_umwrk>.

  ENDIF.

 

* Para todos os registros contidos na tab. recebida na chamada do FORM, faremos...

  LOOP AT bool_data-bseg INTO bseg.

 

*   Se BSEG-HKONT = '0004118001' e SY-TCODE = 'MB1B' e Tipo movimento (MSEG-BWART - tela da MB1B) = 'ZXX' ou 'ZX1' ou 'ZX2' ou 'ZX3'

    IF ( bseg-hkont = '0004118001' AND

         sy-tcode   = 'MB1B'      AND

        ( vc_bwart = 'ZXX' OR

          vc_bwart = 'ZX1' OR

          vc_bwart = 'ZX2' OR

          vc_bwart = 'ZX3' ) ).

 

      SELECT SINGLE gsber

      INTO vc_gsber

      FROM v134g

      WHERE werks = vc_umwrk

        AND spart eq '10'. "vc_spart.

 

      bseg-gsber = vc_gsber .

 

      MODIFY bool_data-bseg FROM bseg.

 

    ENDIF.

 

  ENDLOOP.

 

 

 

 

 

Após o transporte da Request para os ambientes de QAS e PRD, deve-se rodar o programa RGUGBR00.

 

Usar como modelo as opções abaixo ou entrar em contato com o responsável pelo módulo de FI.

 

Validações


Substituições


Obs.: CUIDADO com a opção "Gerar sets". Isso pode gerar um grande problema com a redefinição de alguns sets. Não sei informar precisamente esse item, mas sei de casos que geraram grandes problemas.

 

 

 

** Obs.2: Ao utilizar "CHANGING bool_data" você passa a ter o processamento a BKPF (Cabeçalho) e BSEG (Itens). Isso deve ser utilizado quando se cria uma regra para o Documento Completo.

 










20240615

Smartforms com hiperlink + HTML com envio de texto para o clipboard

Smartforms com LINKs






Ativar o objeto


Programa ZNI_PDF_WITH_ALIAS

*&---------------------------------------------------------------------*
*& Report ZNI_PDF_WITH_ALIAS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZNI_PDF_WITH_ALIAS.

CLASS lcl_smartform DEFINITION.
  PUBLIC SECTION.
    typesBEGIN OF ty_url"<= definition copied from LHRRCF00_CALLBACKTOP
             name(80),
             url TYPE string,
           END OF ty_url.
    datagw_job_output_info TYPE ssfcrescl,
          gw_output_options TYPE ssfcompop,
          gw_control_parameters TYPE ssfctrlop,
          gv_fm_name TYPE rs38l_fnam,
          gt_urls type standard table of ty_url,
          wa_url  type ty_url.

    METHODS:
      constructor importing
        smartform type TDSFNAME
        language type SFLANGU default sy-langu,
      set_url importing name type any url type any,
      get_funmod_name returning value(function_moduletype rs38l_fnam,
      convert_and_save_as_pdf.

ENDCLASS.

CLASS lcl_smartform IMPLEMENTATION.

  method constructor.
* Prepare device type for the gw_output_options
    cleargw_output_options.
    CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
      EXPORTING
        i_language    language
        i_application 'SAPDEFAULT'
      IMPORTING
        e_devtype     gw_output_options-tdprinter.

* Default settings - directly produce output
    cleargw_control_parameters.
    gw_control_parameters-no_dialog 'X'.
    gw_control_parameters-getotf 'X'.

* Determine the function module name
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
      EXPORTING
        formname smartform
      IMPORTING
        fm_name  gv_fm_name
      EXCEPTIONS
        OTHERS   4.

    cleargt_urls[].
  endmethod.

  method set_url.
    datalw_url type ty_url.
* Prepare an alias url. Whenever the alias text is incorporated on the Smartform
* output, it will be changed into a link.
    lw_url-name name.
    lw_url-url  url.
    APPEND lw_url TO gt_urls.

  endmethod.

  method get_funmod_name.
    datalv_canc     type c.
* First pass the url's to SF_URL:
    if not gt_urls[] is initial.
      CALL FUNCTION 'HR_RCF_SF_URL_REFRESH_GT'.
      CALL FUNCTION 'HR_RCF_SF_URL_PREPARE_CALLBACK'
        TABLES
          pt_url gt_urls.
      gw_output_options-urlcall 'HR_RCF_SF_URL_CALLBACK'.

    endif.

    function_module gv_fm_name.
  endmethod.

  method convert_and_save_as_pdf.
  datalv_bin_filesize TYPE i,
        lt_docs TYPE STANDARD TABLE OF docs,
        lt_lines TYPE STANDARD TABLE OF tline,
        lv_guiobj TYPE REF TO cl_gui_frontend_services,
        lv_name TYPE string,
        lv_path TYPE string,
        lv_fullpath TYPE string,
        lv_uact TYPE i.

    CALL FUNCTION 'CONVERT_OTF_2_PDF'
      IMPORTING
        bin_filesize   lv_bin_filesize
      TABLES
        otf            gw_job_output_info-otfdata
        doctab_archive lt_docs
        lines          lt_lines
      EXCEPTIONS
        OTHERS         4.
    CHECK sy-subrc 0.

* Fetch a filename to store the .pdf file in:
    CONCATENATE 'smrt' '.pdf' INTO lv_name.

    CREATE OBJECT lv_guiobj.
    CALL METHOD lv_guiobj->file_save_dialog
      EXPORTING
       default_extension 'pdf'
       default_file_name lv_name
     CHANGING
       filename          lv_name
       path              lv_path
       fullpath          lv_fullpath
       user_action       lv_uact.
    IF lv_uact lv_guiobj->action_cancel.
      EXIT.
    ENDIF.
* Download as file in the front end (presentation server)

    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        bin_filesize lv_bin_filesize
        filename     lv_fullpath
        filetype     'BIN'
      TABLES
        data_tab     lt_lines
      EXCEPTIONS
        OTHERS       22.

  endmethod.

ENDCLASS.


PARAMETERSp_pix    type ZDEFI_TXTMIN_255 VISIBLE LENGTH 60 MEMORY ID PIX.



START-OF-SELECTION.

  datago_smartform type ref to lcl_smartform,
        gv_funmod type rs38l_fnam,
        lv_url_pix type string,
        lv_txt type LENGTH 100.

  create object go_smartform EXPORTING smartform 'ZNILINK'"<= your Smartform here !
* The name's listed below should be available as hyperlink in the Smartform. Turn a text into a
* hyperlink as follows: <%W>SAP</>

  go_smartform->set_urlexporting name 'SAP' url 'http://www.sap.com/).
  go_smartform->set_urlexporting name 'ABAP71+' url 'https://abap71.blogspot.com/).
  go_smartform->set_urlexporting name 'Youtube' url 'https://www.youtube.com/).
  go_smartform->set_urlexporting name 'Twitter' url 'https://www.twitter.com/).



  lv_url_pix 'file:///C:/_XXXXXX/Temp/xxxxxx_send_texto_to_memory_04.html'.
  lv_txt p_pix.
  perform f_conv_txt_web changing lv_txt.
  lv_url_pix lv_url_pix && '?texto='.
  lv_url_pix lv_url_pix && lv_txt.


  go_smartform->set_urlexporting name 'Copiar' url lv_url_pix ).


  gv_funmod go_smartform->get_funmod_name).

  CALL FUNCTION gv_funmod
    EXPORTING
      control_parameters   go_smartform->gw_control_parameters
      output_options       go_smartform->gw_output_options
      V_PIX                p_pix
    IMPORTING
      job_output_info      go_smartform->gw_job_output_info
    EXCEPTIONS
      OTHERS               4.

  go_smartform->convert_and_save_as_pdf).



*&---------------------------------------------------------------------*
*&      Form  F_SEND_TO_CLIPBOARD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_SEND_TO_CLIPBOARD .



DATAlt_mem         TYPE TABLE OF char256,
      lv_mem         type LENGTH 256,
      lv_return_code TYPE i.


   lv_mem 'Teste 02 de envio de dados para a memória do Windows...'.
   append lv_mem to lt_mem.

   CALL METHOD cl_gui_frontend_services=>clipboard_export
     EXPORTING
       no_auth_check        abap_true " No authorization check
     IMPORTING
       data                 lt_mem
     CHANGING
       rc                   lv_return_code
     EXCEPTIONS
       cntl_error           1
       error_no_gui         2
       not_supported_by_gui 3
       no_authority         4
       OTHERS               5.
   IF sy-subrc <> 0.
     WRITE:'FAILURE. Exception:' && ` ` && lv_return_code.
   ELSE.
     WRITE:'Parameters successfully sent to the clipboard'.
   ENDIF.


ENDFORM.



*&---------------------------------------------------------------------*
*&      Form  F_CONV_TXT_WEB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_LV_TXT  text
*----------------------------------------------------------------------*
FORM F_CONV_TXT_WEB  CHANGING P_TXT.

  datalv_strlen type i,
        lv_count type i,
        lv_des type i,
        lv_pos type i,
        lv_char type LENGTH 1.


  lv_strlen strlenp_txt ).

  do lv_strlen times.
    lv_des sy-index .
    if p_txt+lv_des(1space.
      p_txt+lv_des(1'#'.
      add to lv_count.
    endif.
  enddo.

  do lv_count times.
    REPLACE '#' IN p_txt WITH '%20'.
  enddo.

ENDFORM.





PDF aberto



Detalhes:
Esse programa recebe um determinado texto (que será copiado para a memória do windows), através de um PDF (smartforms) gerado.

Ao clicar no link o PDF será aberta uma página no navegador informando que o texto foi copiado para a memória.

Obs.: Tem classe que envia os dados para a memória de maneira bem simples, mas você precisa estar logado (on-line) no SAP (programa ou aplicação). De maneira independente, através de um PDF, essa foi a maneira que encontrei.