Mensajes recientes

Páginas: [1] 2 3 ... 10
1
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.



2
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...
3
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.  ???
4
HANA / Eliminar marco rojo de cuadro de texto
« Último mensaje por Jose Manuel en 25 de Julio de 2019, 06:44:03 pm »
Buen día:
Agradeceré mucho si alguien me pudiera apoyar resolviendo mi duda, se me está solicitando eliminar el marco rojo del cuadro de texto del campo “Cliente:” en la transacción ME21N, este cuadro rojo apareció en automático al cambiar el Sap logon, adjunto una imagen con el ejemplo.

Cuando el usuario tenia Sap Logon 740 ninguno de los dos cuadros aparecían en color rojo, ahora que se está usando Sap Logon 750 estos cuadros de texto aparecen de esta manera.
Cabe mencionar que los dos campos son Z.
El equipo funcional considera que no es cuestión de configuración ya que son campos Z

De antemano muchas gracias.
5
Módulos funcionales / Re:Acceso Modulos de SAP
« Último mensaje por Akoji en 11 de Julio de 2019, 09:03:16 am »
Felicitaciones por haberlo logrado.
6
Módulos funcionales / Re:Ayuda para mi elección en SAP
« Último mensaje por Akoji en 11 de Julio de 2019, 09:01:22 am »
Gracias por darte cosas buenas.
7
HANA / Conectarse a una base de datos SAP HANA (Power Query)
« Último mensaje por Carlos en 17 de Abril de 2019, 08:56:14 am »
Interesante artículo que comparto...

Para conectarse a una base de datos SAP HANA desde Excel:

1.- Haga clic en datos > nueva consulta > desde base de datos > desde base de datos SAP Hana.




2.- En el cuadro de diálogo base de datos SAP Hana, especifique el servidor al que desea conectarse. El nombre del servidor debe seguir el formato ServerName: Port.




3.- Opcionalmente, si desea importar datos mediante una consulta de base de datos nativa, haga clic en Opciones avanzadas y, en el cuadro instrucción SQL, escriba la consulta.

4.- Haga clic en Aceptar.

5.- Si el servidor SAP Hana requiere credenciales de usuario de base de datos, en el cuadro de diálogo obtener acceso a una base de datos SAP Hana, haga lo siguiente:

  a. Haga clic en la pestaña base de datos y escriba su nombre de usuario y contraseña.

  b. Haga clic en Conectar.


8
Ampliaciones / Implementacion BADI para VL32N
« Último mensaje por yofabianuy en 14 de Abril de 2019, 06:49:11 pm »
Hola a todos,

Estoy con un trabajo que debo entregar y no estoy pudiendo resolver.

En la TR. VL32N, necesito necesito que al inicio se carguen las cantidades que muestra la columna "Delivery quantity", en la columna "PutawayQty".

Intenté usar la BADI LE_SHP_DELIVERY_PROC con el método: if_ex_le_shp_delivery_proc~change_delivery_item
Si bien puedo recorrer la tabla IT_XLIPS, la cual contiene la lista de items con el valor de la cantidad LFIMG, este mismo valor necesito copiarlo al campo de la tabla correspondiente a la columna del "PutawayQty" y la verdad
no se como hacerlo...

Agradezco si alguno tiene alguna idea.
Saludos
9
Programación ABAP / Re:Capturar errores en un módulo de funciones estándar.
« Último mensaje por molaci en 20 de Marzo de 2019, 09:14:45 am »
¿Te refieres a esto?

Remarco en color la excepción "error_message" que la admiten todos los modulos de funciones.
Simplemente es añadirla y listo.

  CALL FUNCTION 'WS_REVERSE_GOODS_ISSUE'
    EXPORTING
      i_vbeln                         = p_vbeln
      i_budat                         = p_budat
      i_tcode                         = lv_tcode
      i_vbtyp                         = lv_vbtyp
    TABLES
      t_mesg                          = lt_mesg
      T_VBAPF                         = lt_vbapf
      T_VBFA                          = lt_vbfavb
   EXCEPTIONS
     error_reverse_goods_issue       = 1

     error_message                   = 2
     OTHERS                          = 3.



10
Programación ABAP / Capturar errores en un módulo de funciones estándar.
« Último mensaje por Carlos en 19 de Marzo de 2019, 04:33:04 pm »
Hola,

Estoy utilizando en un programa un módulo de funciones estándar y este me está devolviendo un error que me impide continuar.

Recuerdo que existe una forma de capturar el error, pero no recuerdo como era.



Gracias.
Páginas: [1] 2 3 ... 10