Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - dluis

Páginas: 1 [2]
16
Programación ABAP / Re: BAPI para modificar unidades de medida de los materiales
« en: 17 de Febrero de 2010, 11:45:34 am »
Hola,

puedes utilizar la siguiente bapi: BAPI_MATERIAL_SAVEDATA


Te copio el código de un programa muy sencillo, lo que hace es cargar desde un fichero una serie de materiales con los campos de las unidades de materiales.


Este es el programa.
Código: [Seleccionar]

REPORT zcarga_conversiones_modif NO STANDARD PAGE HEADING
LINE-SIZE 130.


TABLES: marm.
*********************************************************************
**************** Declaracion de tablas       ************************
*-------> definicion de tablas

*-------> tablas internas
DATA: BEGIN OF ti_mater OCCURS 0,
       matnr(18),           " material
       umrem(6),            " cantidad en U.M. Alternativa
       meinh(3),            " Unidad de medida alternativa
       umrez(6),            " CAntidad en U.M. Base
       ean11(18),           " Codigo EAN
       numtp(2),            " Tipo EAN
       laeng(17),
       breit(17),
       hoehe(17),
       meabm(3),
       volum(17),
       voleh(3),
       brgew(17),
       gewei(3),
       azsub(10),
       mesub(3),
      END OF ti_mater.

************************ declaracion de variables *******************

DATA: bapi_head LIKE bapimathead,
      bapi_return LIKE bapiret2.

DATA: BEGIN OF unitsofmeasure OCCURS 100.
        INCLUDE STRUCTURE bapi_marm.
DATA: END OF unitsofmeasure.

DATA: BEGIN OF unitsofmeasurex OCCURS 100.
        INCLUDE STRUCTURE bapi_marmx.
DATA: END OF unitsofmeasurex.


*********************************************************************
**************** Pantalla de seleccion inicial  *********************
*********************************************************************
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK blk_1 WITH FRAME TITLE text-001.
*
**-----------> fichero
PARAMETERS: p_fich LIKE rlgrap-filename DEFAULT 'C:\UNIDADES.TXT'.
SELECTION-SCREEN END OF BLOCK blk_1.

**************** Programa Principal *********************************
*********************************************************************

START-OF-SELECTION.

* Carga de datos desde el fichero
  PERFORM cargar_datos_de_excel.

* Modificamos las unidades de medida.
  PERFORM bapi_material_savedata.



END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  CARGAR_DATOS_DE_EXCEL
*&---------------------------------------------------------------------*
FORM cargar_datos_de_excel.
* cargamos los datos del fichero de excel guardado en formato de
* texto con tabulaciones
  CLEAR: ti_mater.
  REFRESH: ti_mater.
  CALL FUNCTION 'UPLOAD'
       EXPORTING
*           CODEPAGE                = 'IBM '
            filename                = p_fich
            filetype                = 'DAT'
       TABLES
            data_tab                = ti_mater
       EXCEPTIONS
            conversion_error        = 1
            invalid_table_width     = 2
            invalid_type            = 3
            no_batch                = 4
            unknown_error           = 5
            gui_refuse_filetransfer = 6
            OTHERS                  = 7.

ENDFORM.                    " CARGAR_DATOS_DE_EXCEL

*&---------------------------------------------------------------------*
*&      Form  BAPI_MATERIAL_SAVEDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM bapi_material_savedata .

  LOOP AT ti_mater.
    CLEAR: unitsofmeasure,   unitsofmeasurex,
           unitsofmeasure[], unitsofmeasurex[].

* Cabecera
    bapi_head-material = ti_mater-matnr.

* Unidades de Medida
    unitsofmeasure-alt_unit    = ti_mater-meinh.
    unitsofmeasurex-alt_unit   = ti_mater-meinh.

    unitsofmeasure-alt_unit_iso    = ti_mater-meinh.
    unitsofmeasurex-alt_unit_iso   = ti_mater-meinh.

    unitsofmeasure-numerator   = ti_mater-umrez.
    unitsofmeasurex-numerator  = 'X'.

    unitsofmeasure-denominatr  = ti_mater-umrem.
    unitsofmeasurex-denominatr = 'X'.
    APPEND unitsofmeasure.
    APPEND unitsofmeasurex.


    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
     EXPORTING
       headdata = bapi_head
*      clientdata = bapi_mara1
*      clientdatax = bapi_marax
*      plantdata = bapi_marc1
*      plantdatax = bapi_marcx
*      FORECASTPARAMETERS =
*      FORECASTPARAMETERSX =
*      PLANNINGDATA =
*      PLANNINGDATAX =
*      STORAGELOCATIONDATA =
*      STORAGELOCATIONDATAX =
*      valuationdata = bapi_mbew1
*      valuationdatax = bapi_mbewx
*      WAREHOUSENUMBERDATA =
*      WAREHOUSENUMBERDATAX =
*      SALESDATA = BAPI_MVKE1
*      SALESDATAX = BAPI_MVKEX
*      STORAGETYPEDATA =
*      STORAGETYPEDATAX =
     IMPORTING
       return = bapi_return
     TABLES
*      materialdescription = int_makt
       unitsofmeasure = unitsofmeasure
       unitsofmeasurex = unitsofmeasurex
*      INTERNATIONALARTNOS =
*      MATERIALLONGTEXT =
*      TAXCLASSIFICATIONS =
*      RETURNMESSAGES =
*      PRTDATA =
*      PRTDATAX =
*      EXTENSIONIN =
*      EXTENSIONINX =
                          .

    IF bapi_return-type = 'E'.
      WRITE:/ 'Error Message: ', bapi_return-number, bapi_return-id.
    ENDIF.

  ENDLOOP.

ENDFORM.                    " BAPI_MATERIAL_SAVEDATA


Un saludo y espero que te sirva de algo.


17
ALV / Re: TOP_OF_PAGE en ALV con Objetos
« en: 17 de Febrero de 2010, 09:51:29 am »
Hola,

Voy a intentar explicarte mas o menos como hacerlo.

De todas formas al final te adjunto un ejemplo donde puedes hacer un copia pega en un programa Z y mirarlo mas con calma.

Para empezar... buscas donde defines...

CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.


y añades...
Código: [Seleccionar]
    METHODS handle_top_of_page
    FOR EVENT top_of_page OF cl_gui_alv_grid
        IMPORTING e_dyndoc_id.

En... CLASS lcl_event_receiver IMPLEMENTATION.

pones...
Código: [Seleccionar]
  METHOD handle_top_of_page.
    PERFORM event_top_of_page USING e_dyndoc_id.

  ENDMETHOD.                            "top_of_page


Dentro del PERFORM es donde pintas tu cabecera... entiendo que esa parte la controlas.

Ahora viene lo mas importante... en el pbo_output vamos a partir nuestro contenedor en dos partes donde una la dejamos para la cabecera y la otra para el ALV.

Copio el ejemplo entero.

Código: [Seleccionar]
FORM pbo_output.

  DATA: lo_splitter           TYPE REF TO cl_gui_splitter_container.

  DATA: lo_event_receiver     TYPE REF TO lcl_event_receiver.

  DATA: lt_it_toolbar_excluding TYPE ui_functions.


  SET PF-STATUS 'MAIN100'.
  SET TITLEBAR 'T9001_1'.

  IF go_custom_container IS INITIAL.

    CREATE OBJECT go_custom_container
      EXPORTING
        container_name = g_container_listado.

    CREATE OBJECT go_dyndoc_id
      EXPORTING
        style = 'ALV_GRID'.

    CREATE OBJECT lo_splitter
      EXPORTING
        parent  = go_custom_container
        rows    = 2
        columns = 1.



    CALL METHOD lo_splitter->get_container
      EXPORTING
        row       = 1
        column    = 1
      RECEIVING
        container = go_parent_top.


    CALL METHOD lo_splitter->get_container
      EXPORTING
        row       = 2
        column    = 1
      RECEIVING
        container = go_parent_grid.

    CALL METHOD lo_splitter->set_row_height
      EXPORTING
        id     = 1
        height = 14.

    CREATE OBJECT go_grid_listado
      EXPORTING
        i_parent = go_parent_grid.


************************
    CREATE OBJECT lo_event_receiver.

    SET HANDLER lo_event_receiver->handle_top_of_page
                FOR go_grid_listado.

    SET HANDLER lo_event_receiver->handle_data_changed
                 FOR go_grid_listado.

    SET HANDLER lo_event_receiver->handle_data_changed_finished
                 FOR go_grid_listado.

    SET HANDLER lo_event_receiver->on_hospot FOR go_grid_listado.

    SET HANDLER lo_event_receiver->handle_user_command
                    FOR go_grid_listado.
    SET HANDLER lo_event_receiver->handle_toolbar FOR go_grid_listado.

    CALL METHOD go_grid_listado->register_edit_event
      EXPORTING
        i_event_id = cl_gui_alv_grid=>mc_evt_enter.

    gs_layout-zebra      = 'X'.
    gs_layout-cwidth_opt = 'X'.
    gs_layout-ctab_fname = 'COLOR_CELDAS'.
    gs_layout-no_rowmark = 'X'.
    gs_variant-report  = sy-repid.
    gs_variant-variant = p_vari.


    CLEAR: gt_datos_tmp, gt_datos_tmp[].
    gt_datos_tmp[] = gt_datos[].


    CALL METHOD go_grid_listado->set_table_for_first_display
      EXPORTING                     " i_buffer_active = 'X'
        i_save               = 'A'
        is_variant           = gs_variant
        is_layout            = gs_layout
        it_toolbar_excluding = lt_it_toolbar_excluding
      CHANGING
        it_fieldcatalog      = gt_fieldcat
        it_sort              = gt_sort
        it_outtab            = gt_datos[].

**********************

    CALL METHOD go_dyndoc_id->initialize_document
      EXPORTING
        background_color = cl_dd_area=>col_textarea.

* Processing events
    CALL METHOD go_grid_listado->list_processing_events
      EXPORTING
        i_event_name = 'TOP_OF_PAGE'
        i_dyndoc_id  = go_dyndoc_id.


  ENDIF.

ENDFORM.                    " pbo_output



Y ahora... te dejo un programa para que te sirva de ejemplo, simplemente lo copias y pegas en un programa Z nuevo.

Código: [Seleccionar]

REPORT  z_oo_alv_top_of_page  MESSAGE-ID zz  .
DATA: it_flight TYPE TABLE OF sflight.

DATA: ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm.

DATA:  g_container TYPE scrfname VALUE 'CONTROL',
o_dyndoc_id  TYPE REF TO cl_dd_document,
o_splitter   TYPE REF TO cl_gui_splitter_container,
o_parent_grid TYPE REF TO cl_gui_container,
o_parent_top TYPE REF TO cl_gui_container,
o_html_cntrl TYPE REF TO cl_gui_html_viewer.

*----------------------------------------------------------------------*
*       CLASS LCL_EVENT_HANDLER DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION .
  PUBLIC SECTION .
    METHODS:
*Event Handler for Top of page
    top_of_page FOR EVENT top_of_page
           OF cl_gui_alv_grid
           IMPORTING e_dyndoc_id.
ENDCLASS.             "lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*       CLASS LCL_EVENT_HANDLER IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
  METHOD top_of_page.
* Top-of-page event
    PERFORM event_top_of_page USING o_dyndoc_id.

  ENDMETHOD.                            "top_of_page
ENDCLASS.       "LCL_EVENT_HANDLER IMPLEMENTATION

DATA: g_custom_container TYPE REF TO cl_gui_custom_container,
      g_handler TYPE REF TO lcl_event_handler. "handler

START-OF-SELECTION.
  SELECT *
  FROM sflight
  UP TO 20 ROWS
  INTO TABLE it_flight.

END-OF-SELECTION.
  IF NOT it_flight[] IS INITIAL.

    CALL SCREEN 100.

  ELSE.

    MESSAGE i002 WITH 'NO DATA FOR THE SELECTION'(004).

  ENDIF.


*----------------------------------------------------------------------*
*  MODULE STATUS_0100 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.

  SET PF-STATUS 'STATUS'.

  SET TITLEBAR 'TITLE'.

  IF g_custom_container IS INITIAL.

    PERFORM create_and_init_alv.

  ENDIF.

ENDMODULE.                 " STATUS_0100  OUTPUT


*----------------------------------------------------------------------*
*  MODULE USER_COMMAND_0100 INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.

  CASE sy-ucomm.

    WHEN 'BACK'.

      LEAVE TO SCREEN 0.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT


*&---------------------------------------------------------------------*
*&      Form  CREATE_AND_INIT_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM create_and_init_alv .

  DATA: g_grid TYPE REF TO cl_gui_alv_grid.

  CREATE OBJECT g_custom_container
    EXPORTING
      container_name = g_container.

* Create TOP-Document
  CREATE OBJECT o_dyndoc_id
    EXPORTING
      style = 'ALV_GRID'.

* Create Splitter for custom_container
  CREATE OBJECT o_splitter
    EXPORTING
      parent  = g_custom_container
      rows    = 2
      columns = 1.

  CALL METHOD o_splitter->get_container
    EXPORTING
      row       = 1
      column    = 1
    RECEIVING
      container = o_parent_top.

  CALL METHOD o_splitter->get_container
    EXPORTING
      row       = 2
      column    = 1
    RECEIVING
      container = o_parent_grid.

* Set height for g_parent_html
  CALL METHOD o_splitter->set_row_height
    EXPORTING
      id     = 1
      height = 5.

  CREATE OBJECT g_grid
    EXPORTING
      i_parent = o_parent_grid.

  CREATE OBJECT g_handler.

  SET HANDLER g_handler->top_of_page FOR g_grid.

*Calling the Method for ALV output
  CALL METHOD g_grid->set_table_for_first_display
    EXPORTING
      i_structure_name = 'SFLIGHT'
    CHANGING
      it_outtab        = it_flight[].


  CALL METHOD o_dyndoc_id->initialize_document
    EXPORTING
      background_color = cl_dd_area=>col_textarea.

* Processing events
  CALL METHOD g_grid->list_processing_events
    EXPORTING
      i_event_name = 'TOP_OF_PAGE'
      i_dyndoc_id  = o_dyndoc_id.


ENDFORM.                     "CREATE_AND_INIT_ALV


*&---------------------------------------------------------------------*
*&      Form  EVENT_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->DG_DYNDOC_ID  text
*----------------------------------------------------------------------*
FORM event_top_of_page USING   dg_dyndoc_id TYPE REF TO
cl_dd_document.

  DATA : dl_text(255) TYPE c.  "Text
  CALL METHOD dg_dyndoc_id->add_text
    EXPORTING
      text         = 'Flight Details'
      sap_style    = cl_dd_area=>heading
      sap_fontsize = cl_dd_area=>large
      sap_color    = cl_dd_area=>list_heading_int.

  CALL METHOD dg_dyndoc_id->add_gap
    EXPORTING
      width = 200.

  CALL METHOD o_dyndoc_id->add_picture
    EXPORTING
      picture_id = 'ENJOYSAP_LOGO'.

* Add new-line
  CALL METHOD dg_dyndoc_id->new_line.

  CALL METHOD dg_dyndoc_id->new_line.


  CLEAR : dl_text.

* program ID
  dl_text = 'Program Name :'.

  CALL METHOD dg_dyndoc_id->add_gap.

  CALL METHOD o_dyndoc_id->add_text
    EXPORTING
      text         = dl_text
      sap_emphasis = cl_dd_area=>heading
      sap_color    = cl_dd_area=>list_heading_int.

  CLEAR dl_text.

  dl_text = sy-repid.

  CALL METHOD o_dyndoc_id->add_text
    EXPORTING
      text         = dl_text
      sap_emphasis = cl_dd_area=>heading
      sap_color    = cl_dd_area=>list_negative_inv.

* Add new-line
  CALL METHOD dg_dyndoc_id->new_line.


  CLEAR : dl_text.


  CLEAR : dl_text.

* program ID
  dl_text = 'User Name :'.

  CALL METHOD dg_dyndoc_id->add_gap.

  CALL METHOD o_dyndoc_id->add_text
    EXPORTING
      text         = dl_text
      sap_emphasis = cl_dd_area=>heading
      sap_color    = cl_dd_area=>list_heading_int.

  CLEAR dl_text.

  dl_text = sy-uname.

  CALL METHOD o_dyndoc_id->add_text
    EXPORTING
      text         = dl_text
      sap_emphasis = cl_dd_area=>heading
      sap_color    = cl_dd_area=>list_negative_inv.

* Add new-line
  CALL METHOD dg_dyndoc_id->new_line.


  CLEAR : dl_text.

* Run Date
  dl_text = 'Run Date :'.

  CALL METHOD dg_dyndoc_id->add_gap.

  CALL METHOD o_dyndoc_id->add_text
    EXPORTING
      text         = dl_text
      sap_emphasis = cl_dd_area=>heading
      sap_color    = cl_dd_area=>list_heading_int.

  CLEAR dl_text.

* Move date
  WRITE sy-datum TO dl_text.

  CALL METHOD o_dyndoc_id->add_text
    EXPORTING
      text         = dl_text
      sap_emphasis = cl_dd_area=>heading
      sap_color    = cl_dd_area=>list_negative_inv.

* Add new-line
  CALL METHOD dg_dyndoc_id->new_line.

  CLEAR : dl_text.

*Time
  dl_text = 'Time :'.

  CALL METHOD dg_dyndoc_id->add_gap.

  CALL METHOD o_dyndoc_id->add_text
    EXPORTING
      text         = dl_text
      sap_emphasis = cl_dd_area=>heading
      sap_color    = cl_dd_area=>list_heading_int.

  CLEAR dl_text.

* Move time
  WRITE sy-uzeit TO dl_text.

  CALL METHOD o_dyndoc_id->add_text
    EXPORTING
      text         = dl_text
      sap_emphasis = cl_dd_area=>heading
      sap_color    = cl_dd_area=>list_negative_inv.

* Add new-line
  CALL METHOD dg_dyndoc_id->new_line.


  PERFORM display.

ENDFORM.                    " EVENT_TOP_OF_PAGE

*&---------------------------------------------------------------------*
*&      Form  DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display.

* Creating html control
  IF o_html_cntrl IS INITIAL.
    CREATE OBJECT o_html_cntrl
      EXPORTING
        parent = o_parent_top.
  ENDIF.
  CALL METHOD o_dyndoc_id->merge_document.
  o_dyndoc_id->html_control = o_html_cntrl.
* Display document
  CALL METHOD o_dyndoc_id->display_document
    EXPORTING
      reuse_control      = 'X'
      parent             = o_parent_top
    EXCEPTIONS
      html_display_error = 1.
  IF sy-subrc NE 0.
    MESSAGE i999 WITH 'Error in displaying top-of-page'(036).
  ENDIF.
ENDFORM.                    " display


Un saludo y espero que mas o menos te haya aclarado algo.


18
Programación ABAP / Trabajar de frelance?
« en: 16 de Febrero de 2009, 03:44:31 pm »
Buenas foro,

quisiera que me comenten cuales serían las ventajas de trabajar freelance desde sus experiencias o experiencias cercanas, ya que veo muchas ofertas laborales en internet que piden gente de SAP freelance.

Agradezco todas las respuestas que me puedan quitar esta duda.

Saludos y gracias de antemano!

19
Programación ABAP / Re: LAYOUT en pantalla de selección
« en: 10 de Septiembre de 2008, 12:49:46 pm »
Hola, estoy probando lo que estáis comentando y me da un error:

The field "GS_VARIANT" is unknown, but there is a field with the...

¿Como se declara ese campo?


20
Programación ABAP / Funcion que sume periodos
« en: 05 de Septiembre de 2008, 10:42:29 am »
Hola, ¿hay alguna función que sume periodos?

Me explico. Yo tengo un rango de fechas: 01.01.2007 a 15.04.2008

En este rango han pasado 15 periodos (15 meses). ¿Existe alguna función que me de este dato?

Muchas gracias.


21
Programación ABAP / Agrupar ordenes de trasnporte
« en: 03 de Septiembre de 2008, 12:55:44 pm »
Hola, quisiera saber como se pueden agrupar varias ordenes de transporte en una.

El caso es que tengo unas 15 ordenes de transporte en Calidad y para no pasar una por una a Producción me gustaría meterlas todas en una orden.

Hay alguna forma de hacerlo.

Otra pregunta.
¿Si coges los objetos de todas las ordenes  y las metes en una nueva orden... te coge la última versión de cada orden?


Muchas gracias.


22
Programación ABAP / Re: diversas preguntas sobre abap
« en: 01 de Septiembre de 2008, 09:40:06 am »
Hola, haber si te puedo responder a alguna de tus preguntas.

Sobre los packages de java... como no se nada de Java igual no soy el indicado a esta respuesta, pero por lo que puedo entender puede ser algo parecido a lo que nosotros utilizamos con la Transacción SE37, se son funciones estándar con parámetros de entrada y salida, puedes ver ejemplos en este enlace: http://www.abap.es/SE37.htm

Todos los programas que realizamos es obligatorio que se empiecen por Z o por Y, generalmente verás que solemos empezar por Z.

En la zona de descargas de esta página tienes unos PDF donde puedes ver las relaciones entre tablas por módulos.

En cuanto a la relación entre variables y programas, no entiendo muy bien a tu pregunta.

Imagino que habrá gente que te pueda resolver mejor tus dudas que yo, pero espero que alguna te haya servido.  ;)

Un saludo.

23
Programación ABAP / Busco Funcion Semana abreviada
« en: 27 de Agosto de 2008, 12:40:35 pm »
Hola,

Lo que estoy buscando es una función que me devuelva el día de la semana, pero en lugar de el texto largo el Abreviado.

Ejemplo:

Lunes = L.
Martes = M.
Miercoles = X.
etc...

Gracias.

24
Programación ABAP / Re: Pantalla de Selección
« en: 25 de Agosto de 2008, 10:58:52 am »
Muchas gracias Oscar, efectivamente era lo que tu me has dicho. En el mío estaba en blanco, luego miré el informe que había copiado y el campo estaba relleno, lo puse y funcionó.

 ;D

25
Programación ABAP / Pantalla de Selección
« en: 19 de Agosto de 2008, 10:40:45 am »
Hola, tengo el siguiente problema.

He copiado un informe de HR para hacer unas modificaciones, y resulta que al copiarlo no me sale la misma pantalla de selección al ejecutarlo que el del primer informe.  ???

¿A que puede ser debido?

Muchas gracias.

26
Programación ABAP / Re: Migrar de DOWNLOAD a GUI_DOWNLOAD
« en: 07 de Agosto de 2008, 06:02:33 pm »
Igual no son obligatorios los campos que nos comentas, prueba a no utilizarlos en la nueva función.

https://www.sdn.sap.com/irj/sdn/forums

27
Programación ABAP / Parar Debug en un MESSAGE
« en: 06 de Agosto de 2008, 10:19:50 am »
Hola, quería haceros esta pregunta, soy nuevo en esto y una vez me explicaron como parar haciendo un Debug la Instrucción MESSAGE con un Watchpoint.

Tengo un mensaje de error y no logro ver en que parte del código me saca el mensaje.

Alguien me lo puede decir?


Muchas gracias.

Páginas: 1 [2]