bapi goodsmvt create

20
BAPI GOODSMVT CREATE Crea movimientos de mercancía Ejemplo * Declación de variables DATA: l_goodsmvt_header LIKE bapi2017_gm_head_01, l_goodsmvt_code LIKE bapi2017_gm_code, l_goodsmvt_headret LIKE bapi2017_gm_head_ret, l_mblnr LIKE mkpf-mblnr, l_mjahr LIKE mkpf-mjahr. DATA: i_goodsmvt_item LIKE bapi2017_gm_item_create OCCURS 10 WITH HEADER LINE, i_return LIKE bapiret2 OCCURS 1 WITH HEADER LINE. * DATOS CABECERA CLEAR l_goodsmvt_header. l_goodsmvt_header-pstng_date = I_listado-budat. "F.Contable l_goodsmvt_header-doc_date = I_listado-bldat. "F.Documento l_goodsmvt_header-pr_uname = sy-uname. l_goodsmvt_header-header_txt = 'Texto cabecera'. * Tipo de movimiento SELECT SINGLE gmcode FROM t158g INTO l_goodsmvt_code WHERE tcode = 'MB01'. "<-Transaccion de entradas * Posiciones REFRESH i_goodsmvt_item. CLEAR i_goodsmvt_item. i_goodsmvt_item-move_type = i_listado-bwart. "Clase mov. i_goodsmvt_item-material = i_listado-matnr. "Material i_goodsmvt_item-plant = i_listado-werks. "Centro i_goodsmvt_item-stge_loc = i_listado-lgort. "Almacen i_goodsmvt_item-entry_qnt = i_listado-menge. "Cantidad i_goodsmvt_item-entry_uom = i_listado-meins. "Unidad i_goodsmvt_item-quantity = i_listado-menge. "Cantidad i_goodsmvt_item-BASE_UOM = i_listado-meins. "Unidad i_goodsmvt_item-mvt_ind = 'B'. "Indicador de movimiento i_goodsmvt_item-po_number = i_listado-ebeln. "Ref.a pedido i_goodsmvt_item-po_item = i_listado-ebelp. APPEND i_goodsmvt_item. REFRESH: i_return. CLEAR i_return. CLEAR l_mblnr. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = l_goodsmvt_header goodsmvt_code = l_goodsmvt_code testrun = ' ' IMPORTING goodsmvt_headret = l_goodsmvt_headret materialdocument = l_mblnr matdocumentyear = l_mjahr

Upload: brayhan-e-contreras-reyes

Post on 29-Nov-2015

213 views

Category:

Documents


25 download

TRANSCRIPT

Page 1: Bapi Goodsmvt Create

BAPI GOODSMVT CREATE Crea movimientos de mercancía

Ejemplo * Declación de variables DATA: l_goodsmvt_header LIKE bapi2017_gm_head_01, l_goodsmvt_code LIKE bapi2017_gm_code, l_goodsmvt_headret LIKE bapi2017_gm_head_ret, l_mblnr LIKE mkpf-mblnr, l_mjahr LIKE mkpf-mjahr. DATA: i_goodsmvt_item LIKE bapi2017_gm_item_create OCCURS 10 WITH HEADER LINE, i_return LIKE bapiret2 OCCURS 1 WITH HEADER LINE. * DATOS CABECERA CLEAR l_goodsmvt_header. l_goodsmvt_header-pstng_date = I_listado-budat. "F.Contable l_goodsmvt_header-doc_date = I_listado-bldat. "F.Documento l_goodsmvt_header-pr_uname = sy-uname. l_goodsmvt_header-header_txt = 'Texto cabecera'. * Tipo de movimiento SELECT SINGLE gmcode FROM t158g INTO l_goodsmvt_code WHERE tcode = 'MB01'. "<-Transaccion de entradas * Posiciones REFRESH i_goodsmvt_item. CLEAR i_goodsmvt_item. i_goodsmvt_item-move_type = i_listado-bwart. "Clase mov. i_goodsmvt_item-material = i_listado-matnr. "Material i_goodsmvt_item-plant = i_listado-werks. "Centro i_goodsmvt_item-stge_loc = i_listado-lgort. "Almacen i_goodsmvt_item-entry_qnt = i_listado-menge. "Cantidad i_goodsmvt_item-entry_uom = i_listado-meins. "Unidad i_goodsmvt_item-quantity = i_listado-menge. "Cantidad i_goodsmvt_item-BASE_UOM = i_listado-meins. "Unidad i_goodsmvt_item-mvt_ind = 'B'. "Indicador de movimiento i_goodsmvt_item-po_number = i_listado-ebeln. "Ref.a pedido i_goodsmvt_item-po_item = i_listado-ebelp. APPEND i_goodsmvt_item. REFRESH: i_return. CLEAR i_return. CLEAR l_mblnr. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = l_goodsmvt_header goodsmvt_code = l_goodsmvt_code testrun = ' ' IMPORTING goodsmvt_headret = l_goodsmvt_headret materialdocument = l_mblnr matdocumentyear = l_mjahr

Page 2: Bapi Goodsmvt Create

TABLES goodsmvt_item = i_goodsmvt_item return = i_return. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. COMMIT WORK AND WAIT.

Ejemplo

*&---------------------------------------------------------------------*

*& Report ZFIB_CARGA_DATA_IMPORTA_PROV

*&

*&---------------------------------------------------------------------*

*& Descrption: Carga de data de campo de importación maestro de material

*& Date : Enero 2006

*&---------------------------------------------------------------------*

REPORT ZMMB_CREAR_ENTRADA_AUTO_SINIMP.

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

* T A B L E S *

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

TABLES: bsis, "Contabilidad: Índice secundario para ctas.mayor

bseg. "Segmento de documento de Contabilidad

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

* I N T E R N A L T A B L E S *

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

DATA: BEGIN OF it_entrada OCCURS 0,

pstng_date LIKE bapi2017_gm_head_01-pstng_date, "Fecha de cantab.

doc_date LIKE bapi2017_gm_head_01-doc_date,

header_txt LIKE bapi2017_gm_head_01-header_txt,

REF_DOC_NO LIKE bapi2017_gm_head_01-REF_DOC_NO,

material LIKE bapi2017_gm_item_create-material,

plant LIKE bapi2017_gm_item_create-plant,

stge_loc LIKE bapi2017_gm_item_create-stge_loc,

VENDOR LIKE bapi2017_gm_item_create-VENDOR,

move_type LIKE bapi2017_gm_item_create-move_type,

MVT_IND LIKE bapi2017_gm_item_create-MVT_IND,

PO_NUMBER LIKE bapi2017_gm_item_create-PO_NUMBER,

po_item LIKE bapi2017_gm_item_create-po_item,

ENTRY_QNT LIKE bapi2017_gm_item_create-ENTRY_QNT,

ENTRY_UOM LIKE bapi2017_gm_item_create-ENTRY_UOM,

Page 3: Bapi Goodsmvt Create

end of it_entrada.

****** Data de importacion

DATA: BEGIN OF BDC_TAB OCCURS 0.

INCLUDE STRUCTURE BDCDATA.

DATA: END OF BDC_TAB.

data: BEGIN OF it_data OCCURS 0,

PRONU like EIPO-PRONU, "Factura: número

PRODA(8) type c, "Factura: FECHA

PO_NUMBER type BSTNR, "Número de pedido

po_item type EBELP, "Número de posición

ENTRY_QNT type ERFMG, "Cantidad

pstng_date(8) type c, "Fecha de cantab.

doc_date(8) type c, "Fecha de documento

header_txt type BKTXT, "Texto de cabecera

*data importacion

VORPA like eipo-vorpa, "Clase comprobante

VORNU like eipo-vornu, "No Comprobante

VORDA like eipo-vorda, "Fecha comprobante

NACAR like EIPO-NACAR, "Clase comprobante

NACNU like EIPO-NACNU, "No Comprobante

NACDA(8) type c, "Fecha comprobante

NAUEL(8) type c, "Validez comprobante

NAHOE like EIPO-NAHOE, "Entidad emisora

NACA2 like EIPO-NACA2, "Clase comprobante

NACN2 like EIPO-NACN2, "No Comprobante

NACD2(8) type c, "Fecha comprobante

NAUE2(8) type c, "Validez comprobante

NAHO2 like EIPO-NAHO2, "Entidad emisora

NACA3 like EIPO-NACA3, "Clase comprobante

NACN3 like EIPO-NACN3, "No Comprobante

NACD3(8) type c, "Fecha comprobante

NAUE3(8) type c, "Validez comprobante

NAHO3 like EIPO-NAHO3, "Entidad emisora

NACA4 like EIPO-NACA4, "Clase comprobante

NACN4 like EIPO-NACN4, "No Comprobante

NACD4(8) type c, "Fecha comprobante

NAUE4(8) type c, "Validez comprobante

NAHO4 like EIPO-NAHO4, "Entidad emisora

Page 4: Bapi Goodsmvt Create

NACA5 like EIPO-NACA5, "Clase comprobante

NACN5 like EIPO-NACN5, "No Comprobante

NACD5(8) type c, "Fecha comprobante

NAUE5(8) type c, "Validez comprobante

NAHO5 like EIPO-NAHO5, "Entidad emisora

end of it_data.

data: BEGIN OF it_data2 OCCURS 0,

PRONU like EIPO-PRONU, "Factura: número

PRODA(8) type c, "Factura: FECHA

PO_NUMBER type BSTNR, "Número de pedido

po_item type EBELP, "Número de posición

ENTRY_QNT type ERFMG, "Cantidad

pstng_date(8) type c, "Fecha de cantab.

doc_date(8) type c, "Fecha de documento

header_txt type BKTXT, "Texto de cabecera

EXPOS like EIPO-EXPOS, "Posicion

end of it_data2.

DATA BEGIN OF messtab OCCURS 10.

INCLUDE STRUCTURE bdcmsgcoll.

DATA END OF messtab.

DATA: BEGIN OF it_messtab OCCURS 0,

TYPE LIKE bapiret2-TYPE,

NUMBER LIKE bapiret2-NUMBER,

MESSAGE LIKE bapiret2-MESSAGE,

MESSAGE_V2 LIKE bapiret2-MESSAGE_V2,

MESSAGE_V3 LIKE bapiret2-MESSAGE_V3,

MESSAGE_V4 LIKE bapiret2-MESSAGE_V4,

PRONU like EIPO-PRONU,

END OF it_messtab.

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

* D A T A *

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

DATA: l_goodsmvt_header LIKE bapi2017_gm_head_01,

l_goodsmvt_code LIKE bapi2017_gm_code,

l_testrun LIKE bapi2017_gm_gen-testrun,

l_goodsmvt_headret LIKE bapi2017_gm_head_ret,

l_materialdocument LIKE bapi2017_gm_head_ret-mat_doc,

Page 5: Bapi Goodsmvt Create

l_matdocumentyear LIKE bapi2017_gm_head_ret-doc_year.

DATA: i_goodsmvt_item LIKE bapi2017_gm_item_create OCCURS 10

WITH HEADER LINE,

i_return LIKE bapiret2 OCCURS 10 WITH HEADER LINE.

DATA: w_data TYPE string.

data: nlinea type i.

TYPE-POOLS: slis.

INCLUDE <icon>.

INCLUDE <symbol>.

CONSTANTS : gc_formname_top_of_page TYPE slis_formname

VALUE 'TOP_OF_PAGE',

gc_formname_end_of_list TYPE slis_formname

VALUE 'END_OF_LIST'.

DATA : gt_fieldcat TYPE slis_t_fieldcat_alv, "fieldattributes

gs_layout TYPE slis_layout_alv , "list layout

gt_sort TYPE slis_t_sortinfo_alv, "sort orders

gt_events TYPE slis_t_event, "list events

gt_sp_group TYPE slis_t_sp_group_alv, "list groups

g_repid LIKE sy-repid, "reportname

gs_keyinfo TYPE slis_keyinfo_alv, "relation

"between header + item table

gt_list_top_of_page TYPE slis_t_listheader, "top-of-page

g_tabname_header TYPE slis_tabname, "name header

g_tabname_item TYPE slis_tabname, "name item

g_save(1) TYPE c,

gx_variant LIKE disvariant,

g_status TYPE slis_formname VALUE 'STANDARD01', "user-status

g_variant LIKE disvariant, "user-variant

g_exit(1) TYPE c.

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

* S E L E C T I O N S *

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

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

Page 6: Bapi Goodsmvt Create

* P A R A M E T E R S *

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

SELECTION-SCREEN BEGIN OF BLOCK pblock WITH FRAME title text-001.

PARAMETERS: p_entry LIKE rlgrap-filename DEFAULT 'C:\DATENT.txt'.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN END OF BLOCK pblock.

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

* A T S E L E C T I O N - S C R E E N *

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

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_entry.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

field_name = ' '

mask = ',Todos los archivos,'

CHANGING

file_name = p_entry

EXCEPTIONS

mask_too_long = 1

OTHERS = 2.

IF sy-subrc NE 0.

ENDIF.

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

* I N I T I A L I Z A T I O N *

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

INITIALIZATION.

* initialization list viewer

g_repid = sy-repid.

* build table with events to be triggered

PERFORM eventtab_build USING gt_events[].

g_save = 'A'.

CLEAR g_variant.

Page 7: Bapi Goodsmvt Create

g_variant-report = g_repid.

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

* S T A R T - O F - S E L E C T I O N *

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

start-of-selection.

perform leer_archivo.

perform procesar_data.

perform imprimir_error.

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

* F O R M S *

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

*&---------------------------------------------------------------------*

*& Form leer_archivo

*&---------------------------------------------------------------------*

FORM leer_archivo .

w_data = p_entry.

refresh: it_data, it_data2,it_messtab.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = w_data

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

* HEADER_LENGTH = 0

* READ_BY_LINE = 'X'

* DAT_MODE = ' '

* CODEPAGE = ' '

* IGNORE_CERR = ABAP_TRUE

* REPLACEMENT = '#'

* CHECK_BOM = ' '

* IMPORTING

* FILELENGTH =

* HEADER =

TABLES

Page 8: Bapi Goodsmvt Create

DATA_TAB = it_data

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16

OTHERS = 17 .

IF SY-SUBRC <> 0.

WRITE:/ 'ERROR AL CARGAR DATOS'.

STOP.

ENDIF.

ENDFORM. " leer_archivo

*&---------------------------------------------------------------------*

*& Form crear_entrada

*&---------------------------------------------------------------------*

* text:Creacion de la entreda

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

FORM crear_entrada .

clear l_materialdocument.

clear l_matdocumentyear.

refresh i_return.

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'

EXPORTING

goodsmvt_header = l_goodsmvt_header

goodsmvt_code = l_goodsmvt_code

testrun = ' '

Page 9: Bapi Goodsmvt Create

IMPORTING

goodsmvt_headret = l_goodsmvt_headret

materialdocument = l_materialdocument

matdocumentyear = l_matdocumentyear

TABLES

goodsmvt_item = i_goodsmvt_item

return = i_return.

IF SY-SUBRC = 0.

describe table i_return lines sy-tfill.

if sy-tfill = 0.

call function 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

* loop at i_goodsmvt_item.

it_messtab-TYPE = 'S'.

it_messtab-NUMBER = .

it_messtab-MESSAGE = 'Entrada Creada'.

CONCATENATE l_materialdocument '/' l_matdocumentyear

INTO it_messtab-MESSAGE_V2.

* it_messtab-MESSAGE_V2 = l_materialdocument.

* it_messtab-MESSAGE_V3 = i_goodsmvt_item-PO_NUMBER.

* it_messtab-MESSAGE_V4 = i_goodsmvt_item-PO_ITEM.

it_messtab-PRONU = it_data-PRONU.

append it_messtab.

* endloop.

else.

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

delete i_return where MESSAGE_V2 = 'Reserva'.

loop at i_return.

move-corresponding i_return to it_messtab.

it_messtab-PRONU = it_data-PRONU.

it_messtab-MESSAGE_V4 = i_return-ROW.

append it_messtab.

endloop.

endif.

ENDIF.

ENDFORM. " crear_entrada

*&---------------------------------------------------------------------*

*& Form procesar_data

Page 10: Bapi Goodsmvt Create

*&---------------------------------------------------------------------*

* text: Proceso para grupar por factura

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

FORM procesar_data .

it_data2[] = it_data[].

sort it_data by PRONU .

sort it_data2 by PRONU .

loop at it_data.

move-corresponding it_data to it_data2.

at new PRONU .

"DATOS CABECERA

nlinea = 0.

perform data_cab.

endat.

"Posiciones

perform data_pos.

at end of pronu.

"crear entreda

perform crear_entrada.

endat.

endloop.

ENDFORM. " procesar_data

*&--------------------------------------------------------------------*

*& Form bdc_newdynpro

*&--------------------------------------------------------------------*

FORM bdc_newdynpro USING program dynpro.

CLEAR bdc_tab.

bdc_tab-program = program.

bdc_tab-dynpro = dynpro.

bdc_tab-dynbegin = 'X'.

APPEND bdc_tab.

ENDFORM. "bdc_newdynpro

*&--------------------------------------------------------------------*

Page 11: Bapi Goodsmvt Create

*& Form bdc_field

*&--------------------------------------------------------------------*

* text

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

FORM bdc_field USING fnam fval.

CLEAR bdc_tab.

bdc_tab-fnam = fnam.

bdc_tab-fval = fval.

APPEND bdc_tab.

ENDFORM. "bdc_field

*&---------------------------------------------------------------------*

*& Form data_cab

*&---------------------------------------------------------------------*

* text: Datos de Cabezera de la entrada

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

FORM data_cab .

data xfec type d.

refresh i_goodsmvt_item.

CLEAR l_goodsmvt_header.

concatenate it_data2-pstng_date+4(4)

it_data2-pstng_date+2(2)

it_data2-pstng_date(2) into xfec.

l_goodsmvt_header-pstng_date = xfec.

concatenate it_data2-doc_date+4(4)

it_data2-doc_date+2(2)

it_data2-doc_date(2) into xfec.

l_goodsmvt_header-pr_uname = sy-uname.

l_goodsmvt_header-header_txt = it_data2-header_txt.

L_GOODSMVT_HEADER-REF_DOC_NO = 'R01'.

* Tipo de movimiento

l_goodsmvt_code = '01'. "Goods receipt for purchase order

ENDFORM. " data_cab

*&---------------------------------------------------------------------*

*& Form data_pos

*&---------------------------------------------------------------------*

Page 12: Bapi Goodsmvt Create

* text: Datos de posicion de la entrada

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

* --> p1 text

* <-- p2 text

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

FORM data_pos .

CLEAR i_goodsmvt_item.

* i_goodsmvt_item-material = '000000000070002332'.

* i_goodsmvt_item-plant = 'TRAN'.

* i_goodsmvt_item-stge_loc = '0100'.

* i_goodsmvt_item-VENDOR = '0000000016'.

i_goodsmvt_item-move_type = '101'.

i_goodsmvt_item-MVT_IND = 'B'. "Indicador de movimiento

i_goodsmvt_item-PO_NUMBER = it_data-PO_NUMBER.

i_goodsmvt_item-po_item = it_data-PO_ITEM.

i_goodsmvt_item-ENTRY_QNT = it_data-ENTRY_QNT.

* I_GOODSMVT_ITEM-ENTRY_UOM = 'T'.

* I_GOODSMVT_ITEM-NO_MORE_GR = '1'.

append i_goodsmvt_item.

ENDFORM. " data_pos

*&---------------------------------------------------------------------*

*& Form imprimir_error

*&---------------------------------------------------------------------*

* text: imprecion de log de errores

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

* --> p1 text

* <-- p2 text

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

FORM imprimir_error .

describe table it_messtab lines sy-tfill.

if sy-tfill ne 0.

PERFORM cosntruye_lista USING gt_fieldcat[].

PERFORM titulo_lista USING gt_list_top_of_page[].

PERFORM ordenamiento USING gt_sort[].

PERFORM layout_build USING gs_layout.

PERFORM muestra_lista.

endif.

Page 13: Bapi Goodsmvt Create

ENDFORM. " imprimir_error

*&---------------------------------------------------------------------*

*& Form eventtab_build

*&---------------------------------------------------------------------*

* text

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

* -->P_GT_EVENTS[] text

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

FORM eventtab_build USING

lt_events TYPE slis_t_event.

DATA: ls_event TYPE slis_alv_event.

*

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = lt_events.

READ TABLE lt_events WITH KEY name = slis_ev_top_of_page

INTO ls_event.

IF sy-subrc = 0.

MOVE gc_formname_top_of_page TO ls_event-form.

APPEND ls_event TO lt_events.

ENDIF.

ENDFORM. " eventtab_build

*&---------------------------------------------------------------------*

*& Form cosntruye_lista

*&---------------------------------------------------------------------*

* text

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

* -->P_GT_FIELDCAT[] text

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

FORM cosntruye_lista USING lt_fieldcat TYPE slis_t_fieldcat_alv.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'PRONU'.

Page 14: Bapi Goodsmvt Create

* ls_fieldcat-key = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-do_sum = 'X'.

* ls_fieldcat-seltext_l = 'Pedido'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-hotspot = 'X'.

ls_fieldcat-ref_tabname = 'EIPO'.

APPEND ls_fieldcat TO lt_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'TYPE'.

* ls_fieldcat-key = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-do_sum = 'X'.

* ls_fieldcat-seltext_l = 'Pedido'.

* ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-hotspot = 'X'.

ls_fieldcat-ref_tabname = 'BAPIRET2'.

APPEND ls_fieldcat TO lt_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'NUMBER'.

* ls_fieldcat-key = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-do_sum = 'X'.

* ls_fieldcat-seltext_l = 'Pedido'.

* ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-hotspot = 'X'.

ls_fieldcat-ref_tabname = 'BAPIRET2'.

APPEND ls_fieldcat TO lt_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MESSAGE'.

* ls_fieldcat-key = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-do_sum = 'X'.

* ls_fieldcat-seltext_l = 'Pedido'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-hotspot = 'X'.

Page 15: Bapi Goodsmvt Create

ls_fieldcat-ref_tabname = 'BAPIRET2'.

APPEND ls_fieldcat TO lt_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MESSAGE_V2'.

* ls_fieldcat-key = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-do_sum = 'X'.

ls_fieldcat-seltext_l = 'N° Entrada / Mensaje'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-hotspot = 'X'.

ls_fieldcat-ref_tabname = 'BAPIRET2'.

APPEND ls_fieldcat TO lt_fieldcat.

* CLEAR ls_fieldcat.

* ls_fieldcat-fieldname = 'MESSAGE_V3'.

** ls_fieldcat-key = 'X'.

* ls_fieldcat-just = 'L'.

* ls_fieldcat-do_sum = 'X'.

* ls_fieldcat-seltext_l = 'N° Doc. Compra'.

* ls_fieldcat-ddictxt = 'L'.

* ls_fieldcat-hotspot = 'X'.

* ls_fieldcat-ref_tabname = 'BAPIRET2'.

* APPEND ls_fieldcat TO lt_fieldcat.

*

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MESSAGE_V4'.

* ls_fieldcat-key = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-do_sum = 'X'.

ls_fieldcat-seltext_l = 'Posición'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-hotspot = 'X'.

ls_fieldcat-ref_tabname = 'BAPIRET2'.

APPEND ls_fieldcat TO lt_fieldcat.

ENDFORM. " cosntruye_lista

Page 16: Bapi Goodsmvt Create

*&---------------------------------------------------------------------*

*& Form titulo_lista

*&---------------------------------------------------------------------*

* text

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

* -->P_GT_LIST_TOP_OF_PAGE[] text

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

FORM titulo_lista USING lt_top_of_page TYPE slis_t_listheader.

DATA: ls_line TYPE slis_listheader.

DATA: lin TYPE i.

DATA: hlpstr(100) TYPE c,

date_str_l(15) TYPE c,

date_str_h(15) TYPE c,

p_titge(50) type c.

CLEAR: date_str_l, date_str_h.

p_titge = 'Lista de entradas automaticas'.

* Headline : type H

CLEAR ls_line.

ls_line-typ = 'H'.

WRITE p_titge TO ls_line-info CENTERED.

APPEND ls_line TO lt_top_of_page.

** Subheadline: type S

CLEAR ls_line.

ls_line-typ = 'S'.

CONCATENATE sy-datum+6(2) '.' sy-datum+4(2) '.' sy-datum(4)

INTO hlpstr.

* CONCATENATE text-009 hlpstr INTO hlpstr separateD by space.

WRITE hlpstr TO ls_line-info LEFT-JUSTIFIED.

APPEND ls_line TO lt_top_of_page.

ENDFORM. " titulo_lista

*&---------------------------------------------------------------------*

*& Form ordenamiento

*&---------------------------------------------------------------------*

Page 17: Bapi Goodsmvt Create

* text

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

* -->P_GT_SORT[] text

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

FORM ordenamiento USING e99_sort TYPE slis_t_sortinfo_alv.

DATA: ls_sort TYPE slis_sortinfo_alv.

CLEAR ls_sort.

* xdefine standard sort order:

ls_sort-fieldname = 'PRONU'.

ls_sort-up = 'X'.

ls_sort-down = ' '.

*--- Subtotals by group change ----------------------------------------*

APPEND ls_sort TO e99_sort.

* xdefine standard sort order:

ls_sort-fieldname = 'TYPE'.

ls_sort-up = 'X'.

ls_sort-down = ' '.

*--- Subtotals by group change ----------------------------------------*

APPEND ls_sort TO e99_sort.

ls_sort-fieldname = 'NUMBER'.

ls_sort-up = 'X'.

ls_sort-down = ' '.

*--- Subtotals by group change ----------------------------------------*

APPEND ls_sort TO e99_sort.

ENDFORM. " ordenamiento

*&---------------------------------------------------------------------*

*& Form layout_build

*&---------------------------------------------------------------------*

* text

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

* -->P_GS_LAYOUT text

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

FORM layout_build USING ls_layout TYPE slis_layout_alv.

ls_layout-f2code = 'DETA'.

Page 18: Bapi Goodsmvt Create

ls_layout-zebra = 'X'.

ls_layout-colwidth_optimize = 'X'.

ls_layout-box_fieldname = space.

ls_layout-no_input = 'X'.

ls_layout-no_vline = ' '.

ls_layout-detail_initial_lines = ' '.

ls_layout-no_colhead = ' '.

ls_layout-lights_condense = 'X'.

ls_layout-group_buttons = space.

ls_layout-info_fieldname = 'ALV_COLOR'.

ENDFORM. " layout_build

*&---------------------------------------------------------------------*

*& Form muestra_lista

*&---------------------------------------------------------------------*

* text

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

* --> p1 text

* <-- p2 text

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

FORM muestra_lista .

* this form diplays the selected withholding tax list above with the

* ABAP List viewer

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = g_repid

i_callback_user_command = 'USER_COMMAND'

i_callback_top_of_page = 'TOP_OF_PAGE'

i_structure_name = 'OUTPUT_LIST'

is_layout = gs_layout

* i_callback_pf_status_set = 'SET_PF_STATUS'

it_fieldcat = gt_fieldcat[]

it_special_groups = gt_sp_group[]

it_sort = gt_sort

i_save = g_save

is_variant = g_variant

it_events = gt_events[]

TABLES

t_outtab = it_messtab

Page 19: Bapi Goodsmvt Create

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE e502(icc_cl).

ENDIF.

ENDFORM. " muestra_lista

*&--------------------------------------------------------------------*

*& Form comment_change

*&--------------------------------------------------------------------*

* text

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

* -->LT_TOP_OF_Ptext

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

FORM comment_change USING lt_top_of_page TYPE slis_t_listheader.

DATA: wa_lt TYPE slis_listheader.

LOOP AT lt_top_of_page INTO wa_lt.

IF wa_lt-typ = 'S' AND wa_lt-key = text-103.

wa_lt-info = wa_lt-info + 1.

MODIFY lt_top_of_page FROM wa_lt.

ENDIF.

ENDLOOP.

ENDFORM. "comment_change

*&--------------------------------------------------------------------*

*& Form top_of_page

*&--------------------------------------------------------------------*

* text

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

FORM top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = gt_list_top_of_page.

ENDFORM. "top_of_page

*&---------------------------------------------------------------------*

Page 20: Bapi Goodsmvt Create

*& Form user_command

*&---------------------------------------------------------------------*

FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

DATA: l_materialdocument LIKE bapi2017_gm_head_ret-mat_doc,

l_matdocumentyear LIKE bapi2017_gm_head_ret-doc_year.

CLEAR: r_ucomm.

READ TABLE IT_MESSTAB index rs_selfield-tabindex.

CASE rs_selfield-sel_tab_field.

WHEN '1-MESSAGE_V2'.

SEARCH IT_MESSTAB-MESSAGE_V2 for '/'.

if sy-subrc eq 0.

SPLIT IT_MESSTAB-MESSAGE_V2 AT '/'

INTO l_materialdocument l_matdocumentyear.

SET PARAMETER ID 'MBN' FIELD l_materialdocument.

SET PARAMETER ID 'MJA' FIELD l_matdocumentyear.

CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.

else.

MESSAGE w022(icc_cl).

endif.

WHEN OTHERS.

MESSAGE w022(icc_cl).

ENDCASE.