viernes, 2 de diciembre de 2022

Modificar usuario SENDER que envía correo mediante SO_NEW_DOCUMENT_ATT_SEND_API1

 Muy fácil / Very easy:

Antes de ejecutar la FM SO_NEW_DOCUMENT_ATT_SEND_API1, debemos actualizar SY-UNAME, por supuesto, el usuario que vamos a asignar debe tener asociado su e-mail correspondiente en la SU01, or ejemplo:

Before executing the FM SO_NEW_DOCUMENT_ATT_SEND_API1, we must update SY-UNAME, of course, the user that we are going to assign must have its corresponding e-mail associated in SU01, for example.


           sy
-uname = ls_xekko-ernam.
    


          
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
            
EXPORTING
              document_data              
ls_document_data
              put_in_outbox              
abap_on
              commit_work                
abap_on
            
TABLES
              packing_list               
lt_packing_list[]
              object_header              
t_object_header[]
              contents_txt               
t_contents_txt[] " Body message
              contents_bin               
lt_contents_bin[]
              receivers                  
lt_receivers[]
            
EXCEPTIONS
              too_many_receivers         
1
              document_not_sent          
2
              document_type_not_exist    
3
              operation_no_authorization 
4
              parameter_error            
5
              x_error                    
6
              enqueue_error              
7
              
OTHERS                     8.

 


jueves, 26 de diciembre de 2019

Modificar campo XBLNR (Trx FB02) [ Modify BKPF-XBLNR SAP ]

Esta rutina permite modificar algún campo de cabecera que visualiza la transacción FB02:

REPORT  Z_UPDATE_XBLNR.
DATA:
T_BKPF TYPE STANDARD TABLE OF BKPF,
S_BKPF LIKE LINE OF T_BKPF,
S_RETURN TYPE BAPIRET2.

REFRESHT_BKPF[]CLEARS_BKPFS_RETURN.

S_BKPF-MANDT SY-MANDT.
S_BKPF-BUKRS 'CL12'.
S_BKPF-BELNR '0180001083'.
S_BKPF-GJAHR '2019'.
S_BKPF-XBLNR '11'.
APPEND S_BKPF TO T_BKPF.

CALL FUNCTION 'FI_HEADER_UPDATE'
  TABLES
    T_BKPF T_BKPF.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  EXPORTING
    WAIT   ABAP_ON
  IMPORTING
    RETURN S_RETURN.

lunes, 22 de enero de 2018

Obtener banco de proveedor (Get bank from a creditor)

DATA:
 s_lfbk TYPE lfbk,
 s_bnka TYPE bnka.

 CLEARs_lfbk.
  SELECT SINGLE FROM lfbk INTO s_lfbk
  WHERE lifnr EQ lfa1-lifnr.
  IF sy-subrc EQ 0.

  CLEARs_bnka.
    CALL FUNCTION 'READ_BANK_ADDRESS'
      EXPORTING
        bank_country s_lfbk-banks
        bank_number  s_lfbk-bankl
      IMPORTING
        bnka_wa      s_bnka
      EXCEPTIONS
        not_found    1
        OTHERS       2.
    IF sy-subrc EQ 0.
    ENDIF.

  ENDIF.

martes, 13 de junio de 2017

Programa ejemplo manejo FIELD SYMBOLS (ABAP, FIELD SYMBOLS)

He aquí un ejemplo sencillo que puede tener diversas aplicaciones.

REPORT  ztest_field_symbol.

PARAMETERS:
p_bukrs TYPE bseg-bukrs,
p_gjahr TYPE bseg-gjahr,
p_belnr TYPE bseg-belnr.

DATA:
t_bsak TYPE STANDARD TABLE OF bsak,
t_bsik TYPE STANDARD TABLE OF bsik,
BEGIN OF t_data OCCURS 0,
  belnr  TYPE belnr_d,
  augbl  TYPE augbl,
END OF t_data,
s_data LIKE LINE OF t_data.
FIELD-SYMBOLS:
<bs*k_tab> TYPE ANY TABLE,
<bs*k> TYPE any,
<any> TYPE any.

REFRESHt_bsak[]t_bsik[].
SELECT FROM bsak INTO TABLE t_bsak
WHERE augbl EQ p_belnr
AND bukrs EQ p_bukrs
AND belnr NE p_belnr.
IF sy-subrc NE 0.
  SELECT FROM bsik INTO TABLE t_bsik
  WHERE bukrs EQ p_bukrs
  AND belnr EQ p_belnr
  AND gjahr EQ p_gjahr.
  IF sy-subrc EQ 0.
  ENDIF.
ENDIF.

BREAK-POINT.

IF t_bsak[] IS NOT INITIAL.
  ASSIGN TABLE FIELD t_bsak TO <bs*k_tab>.
ELSE.
  ASSIGN TABLE FIELD t_bsik TO <bs*k_tab>.
ENDIF.

REFRESHt_data[]CLEARs_data.
UNASSIGN <bs*k>.
LOOP AT <bs*k_tab> ASSIGNING <bs*k>.

  UNASSIGN<any>.
  ASSIGN COMPONENT 'BELNR' OF STRUCTURE <bs*k> TO <any>.
  IF sy-subrc EQ 0.
    MOVE <any> TO s_data-belnr.
  ENDIF.

  UNASSIGN<any>.
  ASSIGN COMPONENT 'AUGBL' OF STRUCTURE <bs*k> TO <any>.
  IF sy-subrc EQ 0.
    MOVE <any> TO s_data-augbl.
  ENDIF.
  APPEND s_data TO t_data.
  CLEARs_data.

ENDLOOP.

BREAK-POINT.

Llenar RANGO con valores de SET DE DATOS (ABAP, GS01,GS02)

Otra forma de llenar un RANGO con los valores que agregamos a un SET DE DATOS creados mediante la transacción GS01 y GS02.

REPORT  ztest_set.

DATA:
v_setname TYPE setheader-setname VALUE 'Z_DS_EXTZONE',
s_setheader TYPE setheader,
t_setleaf TYPE STANDARD TABLE OF setleaf.
FIELD-SYMBOLS:
<sl> TYPE setleaf.
RANGESr_zexcd FOR t7cl13-zexcd.

CLEARs_setheaderr_zexcdREFRESHt_setleaf[]r_zexcd[].
SELECT SINGLE FROM setheader INTO s_setheader
WHERE setname EQ v_setname.
IF sy-subrc EQ 0.
  SELECT FROM setleaf INTO TABLE t_setleaf
  WHERE setclass EQ s_setheader-setclass
  AND subclass EQ s_setheader-subclass
  AND setname EQ s_setheader-setname.
  IF sy-subrc EQ 0.
    UNASSIGN<sl>.
    LOOP AT t_setleaf ASSIGNING <sl>.
      r_zexcd-sign <sl>-valsign.
      r_zexcd-option <sl>-valoption.
      r_zexcd-low <sl>-valfrom.
      r_zexcd-high <sl>-valto.
      APPEND r_zexcd.
      CLEAR r_zexcd.
    ENDLOOP.
  ENDIF.
ENDIF.

jueves, 7 de abril de 2016

Form para escribir un archivo respetando n espacios en blanco a la izquierda. (SAP-ABAP- TRANSFER ... TO...)

*&---------------------------------------------------------------------*
*&      Form  F_TRANSFER_FILE
*&---------------------------------------------------------------------*
FORM f_transfer_file 
TABLES  pt_outtab LIKE  t_ot           " Tabla con datos a tranferir
USING    pv_target TYPE eps2path  " Ruta concatenada con nombre de archivo
                                                           " (ej. \\10.170.80.101\BANCO\ARCHIVO_BANCO.txt )
CHANGING pv_subrc.

  FIELD-SYMBOLS:
  <ot> LIKE LINE OF pt_outtab.
  DATA:
  lv_len TYPE VALUE 300" Largo de líne a escribir

  OPEN DATASET pv_target FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

  IF pt_outtab[] IS NOT INITIAL.
    UNASSIGN<ot>.
    LOOP AT pt_outtab ASSIGNING <ot>.
      " Si la línea contiene 200 caracteres, en el archivo generado, lo restante (100) será con       " espacios en blanco
      TRANSFER <ot> TO pv_target LENGTH lv_len.
    ENDLOOP.
  ENDIF.

  CLOSE DATASET pv_target.

  MOVE sy-subrc TO pv_subrc.

ENDFORM.                    " F_TRANSFER_FILE

miércoles, 31 de diciembre de 2014

Función para obtener atributos de un ELEMENTO DE DATOS o campos de una TABLA (SAP-ABAP-Funciones)

Estimados, esta función puede ser útil:

  lv_tabname = 'MARA'. "(o BUKRS por ejemplo)

  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING

      tabname        lv_tabname  " Elemento de datos o tabla
      langu          sy-langu
      all_types      'X'
    IMPORTING
      dfies_wa       ls_dfies_wa " Retorna atributos del obejto
    TABLES
      dfies_tab      lt_dfies_tab[] " Retorna campos de una tabla
    EXCEPTIONS
      not_found      1
      internal_error 2
      OTHERS         3.
  IF sy-subrc NE 0.
*  Implement suitable error handling here
  ENDIF.