Mensajes recientes

Páginas: [1] 2 3 ... 10
1
Programación ABAP / ¿Cómo eliminar una de las barras de desplazamiento en un ALV? Scroll
« Último mensaje por oscar en 28 de Febrero de 2024, 12:44:05 pm »
Configuramos la pantalla al tamaño máximo: 200 x 240 en la pestaña de "Atributos".
El Custom Control añadido a la pantalla, lo arrastramos para que ocupe el máximo espacio en la pantalla.

Ahora, en los atributos del Custom Control, marcamos HORIZONTAL Y VERTICAL con las líneas mínimas 1 y 2 para horizontal y vertical respectivamente.

Esto hará que solo salga una barra de desplazamiento (Scroll).
2
Programación ABAP / Dar salida un Spool y descargar como PDF (ejemplo)
« Último mensaje por oscar en 23 de Enero de 2023, 10:29:31 am »

DATA: it_print_params TYPE pri_params.
 
* Spool Druckparameter und Archivparameter lesen, bestimmen, ändern
CALL FUNCTION 'GET_PRINT_PARAMETERS'
  EXPORTING
    no_dialog              = abap_true
  IMPORTING
    out_parameters         = it_print_params
  EXCEPTIONS
    archive_info_not_found = 1
    invalid_print_params   = 2
    invalid_archive_params = 3
    OTHERS                 = 4.
 
IF sy-subrc = 0.
* Liste -> Spool (ID)
  NEW-PAGE PRINT ON PARAMETERS it_print_params NO DIALOG.
  WRITE: / 'Hello World'.
  NEW-PAGE PRINT OFF.
 
  COMMIT WORK.
 
  DATA: lv_bin_length TYPE i.
  DATA: lv_xstring_pdf TYPE xstring.
 
* Spool (ID) -> PDF
  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
    EXPORTING
      src_spoolid              = CONV tsp01-rqident( sy-spono )
      no_dialog                = abap_true
      pdf_destination          = 'X' " xstring
      get_size_from_format     = abap_true
    IMPORTING
      pdf_bytecount            = lv_bin_length
      bin_file                 = lv_xstring_pdf
    EXCEPTIONS
      err_no_abap_spooljob     = 1
      err_no_spooljob          = 2
      err_no_permission        = 3
      err_conv_not_possible    = 4
      err_bad_destdevice       = 5
      user_cancelled           = 6
      err_spoolerror           = 7
      err_temseerror           = 8
      err_btcjob_open_failed   = 9
      err_btcjob_submit_failed = 10
      err_btcjob_close_failed  = 11
      OTHERS                   = 12.
 
  IF sy-subrc = 0.
    DATA: lv_action TYPE i.
    DATA: lv_filename TYPE string.
    DATA: lv_fullpath TYPE string.
    DATA: lv_path TYPE string.
 
    TRY.
* SaveDialog aufrufen
        cl_gui_frontend_services=>file_save_dialog( EXPORTING
                                                      default_extension   = 'pdf'
                                                      default_file_name   = 'ListOutput'
                                                      file_filter         = |PDF (*.pdf)\|*.pdf\|{ cl_gui_frontend_services=>filetype_all }|
                                                      prompt_on_overwrite = abap_true
                                                    CHANGING
                                                      filename          = lv_filename
                                                      path              = lv_path
                                                      fullpath          = lv_fullpath
                                                      user_action       = lv_action ).
 
        IF lv_action EQ cl_gui_frontend_services=>action_ok.
* xstring -> solix
          DATA(it_raw_data) = cl_bcs_convert=>xstring_to_solix( lv_xstring_pdf ).
* iTab (bytes) -> lokale Datei
          cl_gui_frontend_services=>gui_download( EXPORTING
                                                    filename     = lv_fullpath
                                                    filetype     = 'BIN'
                                                    bin_filesize = lv_bin_length
                                                  CHANGING
                                                    data_tab     = it_raw_data ).
 
* Browserfenster erzeugen
          DATA(o_html) = NEW cl_gui_html_viewer( parent = cl_gui_container=>default_screen ).
 
* PDF im ABAP-Fenster anzeigen
          o_html->show_url( url      = CONV skwf_url( lv_fullpath )
                            in_place = abap_true ).
 
* leere SAP-Toolbar ausblenden
          cl_abap_list_layout=>suppress_toolbar( ).
 
* cl_gui_container=>default_screen erzwingen
          WRITE: / |Datei erfolgreich unter { lv_fullpath } gespeichert.|.
        ENDIF.
 
      CATCH cx_root INTO DATA(e_txt).
        MESSAGE e_txt->get_text( ) TYPE 'S'.
    ENDTRY.
  ENDIF.
ELSE.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
3
Programación ABAP / Programa Seleccion Dinamica - Muestra Cualquier Tabla en un ALV
« Último mensaje por Enrique.Borroni en 13 de Enero de 2023, 09:03:56 am »
REPORT zalv_dinamico.

TABLES : sscrfields.
*
*-------------------------------------------------------------------------------------------------------------------*
* DECLARACION DE TYPE-POOLS
*-------------------------------------------------------------------------------------------------------------------*
*
TYPE-POOLS : abap.                                                                                                  " ABAP Language Type-Pool
TYPE-POOLS : slis.                                                                                                  " Tipos globales creacion de ALV
*-------------------------------------------------------------------------------------------------------------------*
* DECLARACION DE INCLUDES
*-------------------------------------------------------------------------------------------------------------------*
INCLUDE : <icon>.                                                                                                   " Definicion de Iconos - ASCII-Codes
INCLUDE : <cl_alv_control>.                                                                                         " Definicion de Estilos de Celdas ALV

*
*-------------------------------------------------------------------------------------------------------------------*
* DECLARACION DE TYPE-POOLS
*-------------------------------------------------------------------------------------------------------------------*
TYPE-POOLS : vrm.
TYPE-POOLS : sscr.
TYPE-POOLS : rsds.
*-------------------------------------------------------------------------------------------------------------------*
* DECLARACION DE INCLUDES
*-------------------------------------------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------------------------------------------*
* CLASES ABAP
*-------------------------------------------------------------------------------------------------------------------*
CLASS cl_abap_char_utilities DEFINITION LOAD.
*-------------------------------------------------------------------------------------------------------------------*
* CONSTANTES : DEFINICION PARA SEPARADORES DE CAMPOS
*-------------------------------------------------------------------------------------------------------------------*

*
*VALORES DE VERADDERO/FALSO
CONSTANTS : co_falso               TYPE c LENGTH 001                       VALUE 'F'.                              " False
CONSTANTS : co_verdadero           TYPE c LENGTH 001                       VALUE 'T'.                              " Verdadero
*-------------------------------------------------------------------------------------------------------------------*
* DECLARACION DE DATOS GLOBALES
*-------------------------------------------------------------------------------------------------------------------*
*
DATA : gd_continuar               TYPE c LENGTH 01                        VALUE co_falso.
*
*VARIABLES PARA DYNPROS
DATA : ok_code                    TYPE sy-ucomm.
*
*-------------------------------------------------------------------------------------------------------------------*
* DECLARACION DE DATOS GLOBALES DINAMICOS :
*-------------------------------------------------------------------------------------------------------------------*
*
DATA : ref_line_type  TYPE REF TO cl_abap_structdescr.
DATA : ref_tabletype  TYPE REF TO cl_abap_tabledescr.
DATA : ref_wa         TYPE REF TO data.
*
DATA : ref_itab       TYPE REF TO data.
DATA : ref_out        TYPE REF TO cl_salv_table.
*
DATA : ref_functions  TYPE REF TO cl_salv_functions_list.
*
DATA : ref_header     TYPE REF TO cl_salv_form_layout_grid.
DATA : ref_label      TYPE REF TO cl_salv_form_label.
DATA : ref_tab        TYPE string.
*
DATA : ld_tabla       TYPE tabname.
*
FIELD-SYMBOLS : <fsym_itab> TYPE ANY TABLE.
FIELD-SYMBOLS : <fsym_field> TYPE ANY.

DATA : ls_functxt                           TYPE smp_dyntxt.
*
* DEFINICION DATOS LOCALES PARA TRATAMIENTO DINAMICO
DATA : lo_dynamic_struct                    TYPE REF TO cl_abap_structdescr.
DATA : lt_comp_tabla                        TYPE cl_abap_structdescr=>component_table.
DATA : lo_dref_comptbi                      TYPE REF TO data.
DATA : lo_dref_locstr                       TYPE REF TO data.
DATA : lo_dref_loctbi                       TYPE REF TO data.
*
*-------------------------------------------------------------------------------------------------------------------*
* DECLARACION DE TIPOS DE TABLAS - TABLAS INTERNAS :
*-------------------------------------------------------------------------------------------------------------------*
*
DATA : ld_selection_id                      TYPE rsdynsel-selid.                            " ID de selección para diferenciar entre varios conjuntos
*
DATA : ld_tabclass                          TYPE tabclass.                                  " Clase tabla
DATA : ld_tablename                         TYPE string.
DATA : ld_num_fields                        TYPE i.                                         " numero de campos
*
DATA : lt_expressions                       TYPE rsds_texpr.                                " Expresiones
DATA : lt_field_ranges                      TYPE rsds_trange.                               " Rangos
DATA : ls_field_ranges                      LIKE LINE OF lt_field_ranges.
*
DATA : lt_tables_ini                        TYPE STANDARD TABLE OF rsdstabs.                " Init: tablas
DATA : sl_tables_ini                        LIKE LINE OF lt_tables_ini.
*
DATA : lt_fields_ini                        TYPE STANDARD TABLE OF rsdsfields.              " Init: campos
DATA : sl_fields_ini                        LIKE LINE OF lt_fields_ini.
*
DATA : lt_where_cond                        TYPE rsds_twhere.                               " Datos para la tabla where
DATA : ls_where_clause                      LIKE LINE OF lt_where_cond.
*
DATA : lt_where_tab                         TYPE STANDARD TABLE OF rsds_where_tab.
DATA : ls_where_tab                         LIKE LINE OF lt_where_tab.
*
DATA : lt_tabfields_not_display             TYPE TABLE OF rsdsfields.
DATA : ls_tabfields_not_display             LIKE LINE OF lt_tabfields_not_display.
*
DATA : gd_titulo_externo                    TYPE c LENGTH 080.
*
*-------------------------------------------------------------------------------------------------------------------*
* DECLARACION DE FIELD-SYMBOLS
*-------------------------------------------------------------------------------------------------------------------*
*
* DEFINICION FIELD-SYMBOLS LOCALES PARA TRATAMIENTO DINAMICO
FIELD-SYMBOLS : <fs_valor_campo>            TYPE ANY.
*
FIELD-SYMBOLS : <fs_valor_struc>            TYPE ANY.
FIELD-SYMBOLS : <fs_comp_tabla>             LIKE LINE OF lt_comp_tabla.
*
FIELD-SYMBOLS : <fs_dynamic_tbi>            TYPE ANY TABLE.
FIELD-SYMBOLS : <fs_dynamic_str>            TYPE ANY.
*-------------------------------------------------------------------------------------------------------------------*
*
*-------------------------------------------------------------------------------------------------------------------*
*
PARAMETERS : pa_tab TYPE dd02l-tabname.

*-----------------------------------------------------------------------------------------------------------------*
* START-OF-SELECTION.
*-----------------------------------------------------------------------------------------------------------------*
START-OF-SELECTION.
*
  ld_tablename      = pa_tab.
*
  CLEAR : ld_tabclass.
  SELECT SINGLE tabclass INTO ld_tabclass
    FROM dd02l
      WHERE  tabname   EQ ld_tablename
      AND    as4local  EQ 'A'
      AND    tabclass  EQ 'TRANSP'.
*
  IF ( sy-subrc EQ 0 ) AND NOT ( ld_tabclass IS INITIAL ).
*
    PERFORM get_data_parametros_dynpro.
*
    PERFORM actualiza_titulo.
*
    CALL FUNCTION 'FREE_SELECTIONS_INIT'
      EXPORTING
        kind                     = 'T'
        expressions              = lt_expressions
      IMPORTING
        selection_id             = ld_selection_id
        field_ranges             = lt_field_ranges
      TABLES
        tables_tab               = lt_tables_ini
        fields_tab               = lt_fields_ini
        tabfields_not_display    = lt_tabfields_not_display
      EXCEPTIONS
        fields_incomplete        = 1
        fields_no_join           = 2
        field_not_found          = 3
        no_tables                = 4
        table_not_found          = 5
        expression_not_supported = 6
        incorrect_expression     = 7
        illegal_kind             = 8
        area_not_found           = 9
        inconsistent_area        = 10
        kind_f_no_fields_left    = 11
        kind_f_no_fields         = 12
        too_many_fields          = 13
        dup_field                = 14
        field_no_type            = 15
        field_ill_type           = 16
        dup_event_field          = 17
        node_not_in_ldb          = 18
        area_no_field            = 19
        OTHERS                   = 20.
    IF ( sy-subrc NE 0 ).

    ELSE.

    ENDIF.

*   MOSTRAR PANTALLA DE SELECCIÓN LIBRE
    CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
      EXPORTING
        selection_id            = ld_selection_id
        title                   = sy-title
        frame_text              = 'Parametros de Seleccion'
        status                  = '1'
        as_window               = abap_false
        no_intervals            = abap_true
      IMPORTING
        where_clauses           = lt_where_cond
        expressions             = lt_expressions
        field_ranges            = lt_field_ranges
        number_of_active_fields = ld_num_fields
      TABLES
        fields_tab              = lt_fields_ini
      EXCEPTIONS
        internal_error          = 1
        no_action               = 2
        selid_not_found         = 3
        illegal_status          = 4
        OTHERS                  = 5.
    IF ( sy-subrc EQ 0 ).
      gd_continuar = co_verdadero.
    ENDIF.
  ELSE.
    gd_continuar = co_falso.
  ENDIF.
*
  IF ( gd_continuar EQ co_verdadero ).
*
    IF ( gd_continuar EQ co_verdadero ).
      PERFORM get_main_data.
*
      IF ( <fs_dynamic_tbi>[] IS INITIAL ).
        MESSAGE i899(v1) WITH 'Sin Datos' DISPLAY LIKE 'I'.
        gd_continuar = co_falso.
      ENDIF.
    ELSE.
      gd_continuar = co_falso.
    ENDIF.
  ENDIF.
*
  IF ( gd_continuar EQ co_falso ).
    LEAVE TO SCREEN 0.
  ENDIF.
*
*-----------------------------------------------------------------------------------------------------------------*
* END-OF-SELECTION
*-----------------------------------------------------------------------------------------------------------------*
END-OF-SELECTION.

  PERFORM show_data_alv USING ld_tablename.



*-----------------------------------------------------------------------------------------------------------------*
* INCLUDES DE RUTINAS FORM
*-----------------------------------------------------------------------------------------------------------------*
*
*-------------------------------------------------------------------------------------------------------------------*
* FORM : GET_MAIN_DATA
*-------------------------------------------------------------------------------------------------------------------*
FORM get_main_data.
*
  DATA : lt_field                 TYPE ddfields.
*
  DATA : ld_existe_ori            TYPE c LENGTH 001 VALUE co_falso.
  DATA : ld_varaux                TYPE string.
  DATA : lt_where_aux             TYPE STANDARD TABLE OF rsdswhere.
  DATA : ls_where_aux             LIKE LINE OF lt_where_aux.

  DATA : ld_cantregi              TYPE sy-tabix.
  DATA : lt_campos                TYPE STANDARD TABLE OF string.
  DATA : ld_campo                 TYPE string.
  DATA : type_descr               TYPE REF TO cl_abap_typedescr.
  DATA : struct_descr             TYPE REF TO cl_abap_structdescr.
  DATA : components               TYPE cl_abap_structdescr=>component_table.
  DATA : component                LIKE LINE OF components.
  DATA : error                    TYPE REF TO cx_root.
*
* DEFINICION DATOS LOCALES PARA TRATAMIENTO DINAMICO
  DATA : lo_dref_locstr           TYPE REF TO data.
  DATA : lo_dref_loctbi           TYPE REF TO data.
  DATA : ld_tabname               TYPE tabname.
*
  ld_tabname  = ld_tablename.
*
  FIELD-SYMBOLS : <fs_dfies>      TYPE dfies.
  FIELD-SYMBOLS : <fs_where>      TYPE rsdswhere.
*
* GENERACION DINAMICA DE LA ESTRUCTURA
  CREATE DATA lo_dref_loctbi TYPE STANDARD TABLE OF (ld_tabname) WITH NON-UNIQUE DEFAULT KEY.
  ASSIGN lo_dref_loctbi->* TO <fs_dynamic_tbi>.
*
  CREATE DATA lo_dref_locstr LIKE LINE OF <fs_dynamic_tbi>.
  ASSIGN lo_dref_locstr->* TO <fs_dynamic_str>.
*
  IF ( sy-subrc EQ 0 ).
    TRY.
*
        CALL METHOD zcl_mm_blueyonder=>get_fields_structure
          EXPORTING
            iv_name   = ld_tabname
          IMPORTING
            et_fields = lt_field[].

        LOOP AT lt_field ASSIGNING <fs_dfies>.
          IF ( <fs_dfies>-datatype EQ 'CLNT' ) OR ( <fs_dfies>-datatype EQ 'STRU' ).

          ELSE.
            CLEAR : ld_campo.
            ld_campo = <fs_dfies>-fieldname.
            APPEND ld_campo TO lt_campos.
          ENDIF.
        ENDLOOP.

        IF NOT ( lt_campos[] IS INITIAL ).
          IF ( LINES( lt_where_cond ) GT 0 ).
            LOOP AT lt_where_cond INTO ls_where_clause WHERE tablename EQ ld_tablename.
              APPEND LINES OF ls_where_clause-where_tab[] TO lt_where_aux[].
            ENDLOOP.

            SELECT *
              INTO CORRESPONDING FIELDS OF TABLE <fs_dynamic_tbi>[]
                FROM  (ld_tablename)
                  WHERE (lt_where_aux) ORDER BY PRIMARY KEY.
          ELSE.
            SELECT *
              INTO CORRESPONDING FIELDS OF TABLE <fs_dynamic_tbi>[]
                FROM (ld_tablename)
                  WHERE (lt_where_aux) ORDER BY PRIMARY KEY.
          ENDIF.
        ENDIF.
      CATCH cx_sy_move_cast_error INTO error.
        MESSAGE error TYPE 'I' DISPLAY LIKE 'E'.
        RETURN.
    ENDTRY.
*
  ENDIF.
*
ENDFORM.                                                                                                            "
*-------------------------------------------------------------------------------------------------------------------*
* FORM : GET_DATA_PARAMETROS_DYNPRO
*-------------------------------------------------------------------------------------------------------------------*
FORM get_data_parametros_dynpro.
*
  DATA : ld_tabname               TYPE tabname.
  DATA : lt_field                 TYPE ddfields.
*
  DATA : ld_ddtext                TYPE ddtext.
*
  FIELD-SYMBOLS : <fs_dfies>      TYPE dfies.
*
  CLEAR : lt_expressions[], lt_field_ranges[], lt_tables_ini[], lt_fields_ini[],
          lt_where_cond[], lt_where_tab[], lt_tabfields_not_display[].
*
  sl_tables_ini-prim_tab  = ld_tablename.
  APPEND sl_tables_ini TO lt_tables_ini.
*
  ld_tabname  = ld_tablename.
  CALL METHOD zcl_mm_blueyonder=>get_fields_structure
    EXPORTING
      iv_name   = ld_tabname
    IMPORTING
      et_fields = lt_field[].
*
  LOOP AT lt_field ASSIGNING <fs_dfies>.
    IF ( <fs_dfies>-keyflag  EQ abap_true ) AND ( <fs_dfies>-datatype NE 'CLNT'    ).
      CLEAR : sl_fields_ini.
      sl_fields_ini-tablename      = ld_tabname.
      sl_fields_ini-fieldname      = <fs_dfies>-fieldname.
      sl_fields_ini-type           = 'S'.
      sl_fields_ini-where_leng     = <fs_dfies>-leng.
      APPEND sl_fields_ini TO lt_fields_ini.
    ENDIF.
  ENDLOOP.
*
  IF ( gd_titulo_externo IS INITIAL ).
    CLEAR : ld_ddtext.
    SELECT SINGLE ddtext INTO ld_ddtext
      FROM  dd02t
        WHERE  tabname     EQ ld_tabname
        AND    ddlanguage  EQ sy-langu
        AND    as4local    EQ 'A'.
    IF ( sy-subrc EQ 0 ) AND ( ld_ddtext IS INITIAL ).
      gd_titulo_externo = ld_ddtext.
    ENDIF.
  ENDIF.
*
ENDFORM.                                                                                                            "
*-------------------------------------------------------------------------------------------------------------------*
* FORM : ACTUALIZA_TITULO
*-------------------------------------------------------------------------------------------------------------------*
FORM actualiza_titulo.
*
  DATA : ld_titu_reporte                    TYPE string.
  DATA : ld_nomb_reporte                    TYPE string.
  DATA : ld_param_01                        TYPE c LENGTH 030 .
  DATA : ld_param_02                        TYPE c LENGTH 030 .
  DATA : ld_param_03                        TYPE c LENGTH 030 .
  DATA : ld_param_04                        TYPE c LENGTH 030 .
*
  DATA : ld_msg_aux_01                      TYPE string.
  DATA : ld_msg_aux_02                      TYPE string.
  DATA : ld_msg_aux_03                      TYPE string.
*
  DATA : ld_tabname               TYPE tabname.
  DATA : ld_ddtext                TYPE ddtext.

  SET TITLEBAR  'T_01'.
*
  ld_titu_reporte = 'T_01'.
  ld_nomb_reporte = 'ZALV_DINAMICO'.
*
  ld_tabname  = ld_tablename.
*
  CLEAR : ld_ddtext.
  SELECT SINGLE ddtext INTO ld_ddtext
    FROM  dd02t
      WHERE  tabname     EQ ld_tabname
      AND    ddlanguage  EQ sy-langu
      AND    as4local    EQ 'A'.
*
  ld_param_01 = 'Tabla :'.
  CONCATENATE ld_tabname '-' '(' INTO ld_param_02  SEPARATED BY space.
  CONCATENATE  ld_ddtext ')' INTO ld_param_03.
  SET TITLEBAR ld_titu_reporte OF PROGRAM ld_nomb_reporte WITH ld_param_01 ld_param_02 ld_param_03 ld_param_04.
*
ENDFORM.                                                                                                           "
*-------------------------------------------------------------------------------------------------------------------*
* FORM : SHOW_DATA_ALV
*-------------------------------------------------------------------------------------------------------------------*
FORM show_data_alv  USING    p_ld_tablename.
*
  CLEAR : ld_tabla.
  ld_tabla = p_ld_tablename.
*
* CREAR TIPO LINEA Y TIPO TABLA CON : RTTC
  ref_line_type ?= cl_abap_typedescr=>describe_by_name( ld_tabla ).
  ref_tabletype = cl_abap_tabledescr=>create( p_line_type = ref_line_type ).
*
* OBJETO CREADO CON : RTTC.
  CREATE DATA ref_itab TYPE HANDLE ref_tabletype.
  CREATE DATA ref_wa TYPE HANDLE ref_line_type.
*
* ASIGNAR TIPO
  ASSIGN ref_itab->* TO <fsym_itab>.
*
* LLAMAR ALV.
  TRY.
      CALL METHOD cl_salv_table=>factory
        IMPORTING
          r_salv_table = ref_out
        CHANGING
          t_table      = <fs_dynamic_tbi>.
    CATCH cx_salv_msg .
  ENDTRY.
*
  ref_functions = ref_out->get_functions( ).
  ref_functions->set_all( if_salv_c_bool_sap=>true ).
*
  CREATE OBJECT ref_header.
  CREATE OBJECT ref_label.
*
  ref_label = ref_header->create_label( row = 1 column = 1 ).
  CONCATENATE 'Contenido :' ld_tabla INTO ref_tab SEPARATED BY space.
  ref_label->set_text( ref_tab ).
  ref_out->set_top_of_list( ref_header ).
  ref_out->set_top_of_list_print( ref_header ).
  ref_out->display( ).
*
* LIMPIAR FIELD SYMBOLS
  UNASSIGN : <fsym_itab>.
  FREE ref_out.
*
ENDFORM.                                                                                                           "
4
Funciones / Funciones para determinar el tamaño de las tablas
« Último mensaje por Enrique.Borroni en 13 de Enero de 2023, 08:54:52 am »
GET_TABLE_SIZE_ADA
GET_TABLE_SIZE_MSS
GET_TABLE_SIZE_ORA
GET_TABLE_SIZE_DB2
GET_TABLE_SIZE_DB4
GET_TABLE_SIZE_DB6
GET_TABLE_SIZE_INF
GET_TABLE_SIZE_ALL
GET_TABLE_SIZE_ALL
5
Módulos funcionales / Funciones para determinar el tamaño de tavb
« Último mensaje por Enrique.Borroni en 13 de Enero de 2023, 08:38:46 am »
GET_TABLE_SIZE_ADA
GET_TABLE_SIZE_MSS
GET_TABLE_SIZE_ORA
GET_TABLE_SIZE_DB2
GET_TABLE_SIZE_DB4
GET_TABLE_SIZE_DB6
GET_TABLE_SIZE_INF
GET_TABLE_SIZE_ALL
GET_TABLE_SIZE_ALL
6
Links / ¿Estás preparando alguna certificación SAP ABAP?
« Último mensaje por oscar en 31 de Mayo de 2022, 11:13:14 am »
En este enlace encontrarás muchas certificaciones.
Ejemplos de preguntas de examen que una vez respondido te dice si has acertado o has fallado.

Test de Certificaciones ABAP

7
HANA / AMDP
« Último mensaje por hserrano en 23 de Octubre de 2020, 03:12:59 pm »
Quiero hacer un AMDP, el sistema es S4 la base de datos es Hana. la pregunta es, existe alguna configuración especial que deba hacer el Basis para que el AMDP o los CDS funcionen?, o el AMDP debe conectarse de alguna manera? (como cuando en .NET primero estableces la conexión y después lanzas el query).
8
Programación ABAP / BAPI_SALESORDER_CHANGE - Ejemplo
« Último mensaje por Carlos en 09 de Enero de 2020, 10:33:20 am »
Esto es un ejemplo de como actualizar el motivo del rechazo (VBAP-ABGRU) y la cantidad de pedido (VBAP-WMENG) para todos los artículos en un pedido de ventas. "BAPI_SALESORDER_CHANGE"



REPORT ztestbapiso2.
*&--------------------------------------------------------------------&*
*& Program Description:                                               &*
*& -----------------------                                            &*
*& This demo program will update the reason for rejection and the     &*
*& order quantity for all items in a selected sales order.            &*
*&                                                                    &*
*& The program demonstrate the use of the 'BAPI_SALESORDER_CHANGE'.   &*
*&                                                                    &*
*& Author:  ABAPCOOKBOOK          <------                             &*
*& Website: www.abapcookbook.com  <------                             &*
************************************************************************

************************************************************************
* DATA DECLARATIONS                                                    *
************************************************************************
*Tables:
TABLES:
  vbap.

*Internal tables:
DATA:
  gt_vbap               TYPE STANDARD TABLE OF vbap,
  gt_vbep               TYPE STANDARD TABLE OF vbep,
  gt_item_in            TYPE STANDARD TABLE OF bapisditm,
  gt_item_inx           TYPE STANDARD TABLE OF bapisditmx,
  gt_schedule_lines     TYPE STANDARD TABLE OF bapischdl,
  gt_schedule_linesx    TYPE STANDARD TABLE OF bapischdlx,
  gt_return             TYPE STANDARD TABLE OF bapiret2.

*Field Symbols:
FIELD-SYMBOLS:
  <fs_vbap>             TYPE vbap,
  <fs_vbep>             TYPE vbep.

*Structures:
DATA:
  gst_item_hedx         TYPE bapisdh1x,
  gst_item_in           TYPE bapisditm,
  gst_item_inx          TYPE bapisditmx,
  gst_schedule_lines    TYPE bapischdl,
  gst_schedule_linesx   TYPE bapischdlx.

*Variables:
DATA:
  gv_msg                TYPE string,
  gv_tabix              TYPE sy-tabix.

*Constants:
CONSTANTS:
  gc_error              TYPE string
        VALUE ': An error occured, no change done to the sales order.',
  gc_success            TYPE string
        VALUE ': Sales order changed successfully.'.

************************************************************************
* SELECTION SCREEN                                                     *
************************************************************************
SELECT-OPTIONS:
*  Sales Order Number.
   s_vbeln FOR vbap-vbeln OBLIGATORY.

PARAMETERS:
* Reason for Rejection.
  p_abgru TYPE vbap-abgru OBLIGATORY,

* Order Quantity.
  p_wmeng TYPE vbep-wmeng OBLIGATORY.


************************************************************************
* CODE LOGIC                                                           *
************************************************************************

*Select sales order data from table VBAP.
SELECT *
  FROM vbap
  INTO TABLE gt_vbap
  WHERE vbeln IN s_vbeln.

IF sy-subrc EQ 0.

* Rules 'For All Entries'.
* Not necessary as 'VBELN' and 'POSNR' is already primary key, this
*                                                              logic
* just to demonstrate 'For All Entries' rule.
  SORT gt_vbap BY vbeln posnr.
  DELETE ADJACENT DUPLICATES FROM gt_vbap COMPARING vbeln posnr.

* Retrieving schedule lines entries.
  SELECT *
    FROM vbep
   INTO TABLE gt_vbep
 FOR ALL ENTRIES IN gt_vbap
   WHERE vbeln EQ gt_vbap-vbeln
     AND posnr EQ gt_vbap-posnr.

  IF sy-subrc EQ 0.

*   Sorting for binary search.
    SORT gt_vbep BY vbeln posnr.

    LOOP AT gt_vbap ASSIGNING <fs_vbap>.

*     ........................
*     BAPI Data for updating the reason for rejection.
*     ........................
*     (Order Header Level)
*     Setting the update flag at order header level to update mode.
      gst_item_hedx-updateflag = 'U'.

*     (Order Item Level)
*     Setting of the material number(MATNR) at order item level.
      gst_item_in-material = <fs_vbap>-matnr.

*     Setting of the item number(POSNR) at order item level.
      gst_item_in-itm_number  = <fs_vbap>-posnr.
      gst_item_inx-itm_number = <fs_vbap>-posnr.

*     Setting of the reason for rejection(ABGRU) at order item level.
      gst_item_in-reason_rej  = p_abgru.
      gst_item_inx-reason_rej = 'X'.

*     Setting the update flag at order item level to update mode.
      gst_item_inx-updateflag = 'U'.

*     BAPI items level tables:
      APPEND:
        gst_item_in  TO gt_item_in,
        gst_item_inx TO gt_item_inx.

*     ........................
*     BAPI Data for updating the order quantity.
*     ........................
*     Adding the schedule lines items.
      READ TABLE gt_vbep TRANSPORTING NO FIELDS
      WITH KEY  vbeln = <fs_vbap>-vbeln
                posnr = <fs_vbap>-posnr
                BINARY SEARCH.

      IF sy-subrc EQ 0.

        gv_tabix = sy-tabix.

*       Index looping for better performance.
        LOOP AT gt_vbep ASSIGNING <fs_vbep> FROM gv_tabix.

          IF  <fs_vbep>-vbeln EQ <fs_vbap>-vbeln
          AND <fs_vbep>-posnr EQ <fs_vbap>-posnr.

*           (Schedule Line Level)
*           Setting of the item number(POSNR) at schedule line level.
            gst_schedule_lines-itm_number  = <fs_vbep>-posnr.
            gst_schedule_linesx-itm_number = <fs_vbep>-posnr.

*           Setting of the schedule line number(ETENR) at schedule
*                                                        line level.
            gst_schedule_lines-sched_line  = <fs_vbep>-etenr.
            gst_schedule_linesx-sched_line = <fs_vbep>-etenr.

*           Setting the update flag at schedule line level to update
*                                                                mode.
            gst_schedule_linesx-updateflag = 'U'.

*           Setting the new order quantity(WMENG).
            gst_schedule_lines-req_qty  = p_wmeng.
            gst_schedule_linesx-req_qty = 'X'.

*           BAPI schedule lines level tables:
            APPEND:
              gst_schedule_lines  TO gt_schedule_lines,
              gst_schedule_linesx TO gt_schedule_linesx.

          ELSE.

*           Clear index
            CLEAR gv_tabix.

*           Move out of the loop.
            EXIT.

          ENDIF.

*         Clearing of work areas.
          CLEAR:
            gst_schedule_lines,
            gst_schedule_linesx.

        ENDLOOP.

      ENDIF.

*     Calling BAPI to update reason for rejection and the
*     schedule line order quantity in the selected sales order.
      CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
        EXPORTING
          salesdocument    = <fs_vbap>-vbeln
          order_header_inx = gst_item_hedx
        TABLES
          return           = gt_return
          order_item_in    = gt_item_in
          order_item_inx   = gt_item_inx
          schedule_lines   = gt_schedule_lines
          schedule_linesx  = gt_schedule_linesx.

*     Preparing the result message.
      CONCATENATE <fs_vbap>-vbeln   " Sales Order Number
                  <fs_vbap>-posnr   " Item Number
             INTO gv_msg            " Message
     SEPARATED BY space.            " Space

*     Check if at least one error was raised by the BAPI. Loop inside
*     loop is not advise, however, the return table will contains small
*     amount of entries. We can use that for our demo.
      LOOP AT gt_return TRANSPORTING NO FIELDS
      WHERE type EQ 'E'
         OR type EQ 'A'.

*       Exit and rollback changes.
        EXIT.

      ENDLOOP.

*     If error found, rollback database changes.
      IF sy-subrc EQ 0.

*       Rollback changes.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

*       Preparing error message.
        CONCATENATE gv_msg        "Sales Order and Item Number
                    gc_error      "Error Message
               INTO gv_msg
       SEPARATED BY space.

*       Output message.
        WRITE / gv_msg.

*     Else, no error found, commit database changes.
      ELSE.

*       Commit changes.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = abap_true.

*       Preparing success message.
        CONCATENATE gv_msg        "Sales Order and Item Number
                    gc_success    "Success Message
               INTO gv_msg
       SEPARATED BY space.

*       Output message.
        WRITE / gv_msg.

      ENDIF.

*     Write a line after each sales order.
      AT END OF vbeln.
        WRITE: sy-uline.
      ENDAT.

*     Clearing of variables and structures:
      CLEAR:
*       Variables:
        gv_msg,
        gv_tabix,
*       Structures:
        gst_item_hedx,
        gst_item_in,
        gst_item_inx.

*     Refreshing internal tables:
      REFRESH:
        gt_item_in,
        gt_item_inx,
        gt_schedule_lines,
        gt_schedule_linesx,
        gt_return.

    ENDLOOP.

  ENDIF.

ENDIF.



9
Módulos funcionales / Al tratar de Crear Objetos OM me da error porque el mandante esta cerrado
« Último mensaje por sanchezray7 en 11 de Octubre de 2019, 08:20:32 pm »
Hola Gurus!!!...

Estoy tratando de crear estructuras OM (Posiciones/Organizaciones) y cuando trato de grabar me da el siguiente error:

" Error durante tratamiento de objeto
Mandante 220 tiene status "no modificable"
Seleccione "Visualizar objeto" o "Cancelar" "

Por favor podrían orientarme, sin abrir el mandante, como solucionar esto...

De antemano muchas gracias...
10
Módulos funcionales / Re:IDOCS EDI - Error en Puerta Receptora
« Último mensaje por dorixina en 02 de Agosto de 2019, 02:53:54 pm »
hOLA pUDISTE RESOLVER ESTE TEMA ?, TENGO EL MISMO PROBLEMA!! :-(



Hola Buenas Tardes.

Estoy realizando pruebas referente a los IDOCS correspondientes a Extractos Bancarios y cuando ejecuto el programa en la WE20 me aparecen con el siguiente error.  EDI: la puerta receptora del reg.control no es válida. En la transacción WE21 tengo configurada la puerta A000000005 Puerto Para Idoc Destino RFC R3P. No se si me falta configurar algo de esa puerta.

Por favor si les a pasado, por favor ayúdenme.  ???
Páginas: [1] 2 3 ... 10