You are on page 1of 30

bj6217

2585

*$*$*****************************************************CATALOG_START**
*$*$ PROGRAM ID
: YDGCM_LAB01
*
*$*$ TITLE
: [ADD PROGRAM TITLE HERE]
*
*$*$ CREATION DATE : May 11, 2009
*
*$*$ AUTHOR
: Malasquez Zambrano, Carlos(Tn1840)
*
*$*$ DESIGNER
: [ADD DESIGNER HERE]
*
*$*$ OWNERSHIP
: [ADD OWNERSHIP COMMENTS HERE]
*
*$*$ REFERENCE ID : [ADD DOCUMENT REFERENCE ID HERE]
*
*$*$-------------------------------------------------------------------*
*$*$ DESCRIPTION
: [ADD DESCRIPTION HERE]
*
*$*$ *
*$*$ *
*$*$********************************************************************
*$*$ AUTHORIZATION CHECKS *
*$*$-------------------------------------------------------------------*
*$*$ OBJECT AUTHORITY FIELDS ABAP FIELDS *
*$*$-------------------------------------------------------------------*
*$*$ | | *
*$*$ | | *
*$*$ | | *
*$*$********************************************************************
*$*$ CHANGE HISTORY
*
*$*$-------------------------------------------------------------------*
*$*$ DATE | T-NUM | DESCRIPTION | REFERENCE
*
*$*$-------------------------------------------------------------------*
*$*$ CODE MARKER :
*
*$*$ REFERENCE ID :
*
*$*$ DESCRIPTION :
*
*$*$*******************************************************CATALOG_END**
REPORT ydgcm_lab03 MESSAGE-ID zv.
CLASS ob_report DEFINITION DEFERRED.
CLASS ob_evento DEFINITION DEFERRED.
*$*$********************************************************************
*$*$ TABLES
*
*$*$********************************************************************
*{
*ak defino q tablas uso
*
TABLES: likp,
*
tvko,
*
bsid,
*
bsad,
ydg_loglab02.
*}
*
*$*$********************************************************************
*$*$ INCLUDES
*
*$*$ (FOR INCLUDES WITH DECLARATIVE PURPOSES ONLY
*
*$*$ I.E. BDC, ALV, ETC.)
*
*$*$********************************************************************
*{
*ak defino si uso programa incluidos, revisar formato

*
*}
*
*$*$********************************************************************
*$*$ GLOBAL TYPES
*
*$*$ NAMING CONVENTION: "Y_NAME"
*
*$*$********************************************************************
*{
*
*ak defino los types, solo los types
TYPE-POOLS: slis.
TYPES: BEGIN OF y_likp,
vbeln TYPE vbeln,
vkorg TYPE vkorg,
END OF y_likp.
TYPES: BEGIN OF y_likp2,
btgew TYPE gsgew,
gewei TYPE gewei,
END OF y_likp2.
TYPES: BEGIN OF y_vbfa,
vbelv TYPE vbelv,
vbeln TYPE vbeln,
vbtyp_v TYPE vbtyp_v,
vbtyp_n TYPE vbtyp_n,
END OF y_vbfa.
TYPES: BEGIN OF y_lfa1,
lifnr TYPE lifnr,
name1 TYPE name1,
END OF y_lfa1.
TYPES: BEGIN OF y_rep,
zzsel(1) TYPE c,
tdlnr TYPE tdlnr,
name1 TYPE name1,
tknum TYPE tknum,
updat TYPE updat,
cantidad TYPE i,
btgew TYPE gsgew,
route TYPE routr,
distz TYPE distz,
waers TYPE waers,
mpeso TYPE netwr,
mdist TYPE netwr,
mtotal TYPE netwr,
END OF y_rep.
TYPES: BEGIN OF y_log,
mandt TYPE mandt,
vkorg TYPE vkorg,
vbeln TYPE vbeln,
updat TYPE updat,
uptim TYPE uptim,
uname TYPE uname,
old_date TYPE zfbdt,
zfbdt TYPE zfbdt,
zcomment TYPE char32,

ebeln TYPE ebeln,


END OF y_log.
TYPES: BEGIN OF y_vttk,
tknum TYPE tknum,
shtyp TYPE shtyp,
tdlnr TYPE tdlnr,
route TYPE routr,
distz TYPE distz,
medst TYPE medst,
END OF y_vttk.
TYPES: BEGIN OF y_tvro,
distz TYPE distz,
medst TYPE medst,
END OF y_tvro.
*}
*
*$*$********************************************************************
*$*$ GLOBAL CONSTANTS
*
*$*$ NAMING CONVENTION: "C_NAME"
*
*$*$********************************************************************
*{
*ak se definen las constantesss
CONSTANTS: c_x(1)
TYPE c VALUE 'X',
c_fb02(4)
TYPE c VALUE 'FB02',
c_s(1)
TYPE c VALUE 'S',
c_bln(3)
TYPE c VALUE 'BLN',
c_buk(3)
TYPE c VALUE 'BUK',
c_gjr(3)
TYPE c VALUE 'GJR',
c_fb03(4)
TYPE c VALUE 'FB03',
c_vl(2)
TYPE c VALUE 'VL',
c_vl03n(5)
TYPE c VALUE 'VL03N',
c_vf(2)
TYPE c VALUE 'VF',
c_vf03(4)
TYPE c VALUE 'VF03',
c_cc_container(12) TYPE c VALUE 'CC_CONTAINER',
c_batch_input(11) TYPE c VALUE 'BATCH INPUT',
c_001(3)
TYPE c VALUE '001',
c_ts_rep(6)
TYPE c VALUE 'TS_REP',
c_zzsel(5)
TYPE c VALUE 'ZZSEL',
c_sel(3)
TYPE c VALUE 'Sel',
c_tdlnr(5)
TYPE c VALUE 'TDLNR',
c_trans(13)
TYPE c VALUE 'Transportista',
c_name1(5)
TYPE c VALUE 'NAME1',
c_nombre(6)
TYPE c VALUE 'Nombre',
c_tknum(5)
TYPE c VALUE 'TKNUM',
c_doc_tra(15)
TYPE c VALUE 'Doc. Transporte',
c_updat(5)
TYPE c VALUE 'UPDAT',
c_fpro(16)
TYPE c VALUE 'Fecha de Proceso',
c_cant(8)
TYPE c VALUE 'CANTIDAD',
c_cde(13)
TYPE c VALUE 'CTD. Entregas',
c_btgew(5)
TYPE c VALUE 'BTGEW',
c_ptotal(10)
TYPE c VALUE 'Peso Total',
c_route(5)
TYPE c VALUE 'ROUTE',
c_ruta(4)
TYPE c VALUE 'Ruta',
c_distz(5)
TYPE c VALUE 'DISTZ',
c_waers(5)
TYPE c VALUE 'WAERS',
c_dis(9)
TYPE c VALUE 'Distancia',
c_mon(6)
TYPE c VALUE 'Moneda',
c_back(4)
TYPE c VALUE 'BACK',
c_leave(5)
TYPE c VALUE 'LEAVE',

c_cancel(6)
c_m(1)
c_j(1)
c_0100(4)
c_0301(4)
c_sapmf05l(8)
c_bdc_okcode(10)
c_az(3)
c_ae(3)
c_rf05l_belnr(11)
c_rf05l_bukrs(11)
c_bseg_zfbdt(10)
c_actualizado(11)
c_hecho(10)
c_par(3)
c_test(4)
c_mayor(26)
c_menor(30)
c_uyp(13)
c_fyh(13)
c_oys(20)
c_esl(1)
c_mask(8)
c_1(1)
c_blan(1)
c_fc(21)
c_fnc(29)
c_titulo(255)

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

c_batch(5)
c_9(10)
c_mpeso(5)
c_mxpes(12)
c_mdist(5)
c_mxdis(17)
c_mtota(6)
c_mont(11)
c_8(1)
c_z002(4)
c_NB(2)
c_1432(4)
c_0GK(3)
c_2951(4)
c_00010(5)
c_9_1(1)
c_2(1)
c_Flet(13)
c_DUMMY(5)
c_ACT(3)
c_0000000001(10)
c_20120607(8)
c_0052960007(10)
c_P2951830(8)
c_01(2)
c_0000000000(10)
c_0000000002(10)
c_0000000010(10)
c_1000278(18)
c_100_0(5)
c_xxx(3)

TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c
TYPE c

VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE

'CANCEL',
'M',
'J',
'0100',
'0301',
'SAPMF05L',
'BDC_OKCODE',
'=AZ',
'=AE',
'RF05L-BELNR',
'RF05L-BUKRS',
'BSEG-ZFBDT',
'Actualizado',
'Hecho x ( ',
' )',
'TEST',
'F.Entrega mayor a F.Actual',
'F. Entrega menor a F.Documento',
'Usr. / Prog.:',
'Fecha / hora:',
'Org.Vta / Sociedad :',
'/',
'__:__:__',
'1',
'',
'Factura ya Compensada',
'Factura no esta Contabilizada',
'Registrar Orden de Compra al Prove

edor',
VALUE 'BATCH',
VALUE '9999999999',
VALUE 'MPESO',
VALUE 'Monto x Peso',
VALUE 'MDIST',
VALUE 'Monto x Distancia',
VALUE 'MTOTAL',
VALUE 'Monto Total',
VALUE '8',
VALUE 'Z002',
VALUE 'NB',
VALUE '1432',
VALUE '0GK',
VALUE '2951',
VALUE '00010',
c VALUE '9',
VALUE '2',
VALUE 'Flete YMLAB03',
VALUE 'DUMMY',
VALUE 'ACT',
VALUE '0000000001',
VALUE '20120607',
VALUE '0052960007',
VALUE 'P2951830',
VALUE '01',
VALUE '0000000000',
VALUE '0000000002',
VALUE '0000000010',
VALUE '000000000001000278',
VALUE '100.0',
VALUE 'XXX'.

*}
*
*$*$********************************************************************
*$*$ GLOBAL ELEMENTARY VARIABLES
*
*$*$ NAMING CONVENTION: "W_NAME"
*
*$*$********************************************************************
*{
*ak defino los datos de variables elementales
*
DATA: w_bukrs TYPE vkbuk,
w_butxt TYPE butxt,
w_ok_code TYPE sy-ucomm.
DATA: ob_grid
ob_container
ob_split_main
ob_contenedor_head
ob_contenedor_alv
ob_dyndoc_id
ob_obj
ob_evento

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

REF
REF
REF
REF
REF
REF
REF
REF

TO
TO
TO
TO
TO
TO
TO
TO

cl_gui_alv_grid,
cl_gui_custom_container,
cl_gui_splitter_container,
cl_gui_container,
cl_gui_container,
cl_dd_document,
ob_report,
ob_evento.

CLEAR: ob_grid,
ob_container,
ob_split_main,
ob_contenedor_head,
ob_contenedor_alv,
ob_dyndoc_id,
ob_obj,
ob_evento.
*}
*
*$*$********************************************************************
*$*$ GLOBAL STRUCTURES
*
*$*$ NAMING CONVENTION: "E_NAME"
*
*$*$********************************************************************
*{
*ak defino las variables estructuradas(estructuras)
DATA: e_toolbar TYPE stb_button,
e_fieldcat TYPE lvc_s_fcat,
e_bdcdata TYPE bdcdata,
e_log
TYPE y_log,
e_rep
TYPE y_rep,
e_likp2 TYPE y_likp2,
e_tvro TYPE y_tvro.
DATA: e_ls_layo TYPE lvc_s_layo.

data: l_poheader type BAPIEKKOC occurs 0 with header line,


l_poitem like bapiekpoc occurs 0 with header line,
l_poitem_add like bapiekpoa occurs 0 with header line,
l_po_item_schedules like bapieket occurs 0 with header line,
l_polimits like bapiesuhc occurs 0 with header line,
l_po_acct_assign like bapiekkn occurs 0 with header line,
l_po_limits like bapiesuhc occurs 0 with header line,
l_po_services like bapiesllc occurs 0 with header line,
l_po_srv_accss like bapiesklc occurs 0 with header line,
l_return like bapireturn occurs 0 with header line,
lv_obj_key type balnrext,

lv_ebeln type ebeln,


lv_po_item type ebelp,
lv_output type c.
*}
*
*$*$********************************************************************
*$*$ GLOBAL INTERNAL TABLES (WITH INCLUDE STRUCTURE)
*
*$*$ NAMING CONVENTION: "I_NAME"
*
*$*$********************************************************************
*{
*
*
*
*

IS_
IO_ IH_
is_tab type standard table of bseg
io_tab type sorted table of bseg with unique key belnr.
ih_tab type hashed table of bseg with unique key belnr.
DATA: is_bdcdata TYPE STANDARD TABLE OF bdcdata,
ts_fieldcat TYPE lvc_t_fcat.

CLEAR ts_fieldcat.
*}
*
*$*$********************************************************************
*$*$ GLOBAL INTERNAL TABLES (CUSTOM STRUCTURE)
*
*$*$ NAMING CONVENTION: "T_NAME"
*
*$*$********************************************************************
*{
*
* TS_
TO_ TH_
*
* ts_tab type standard table of bseg
*
* to_tab type sorted table of bseg with unique key belnr. *
* th_tab type hashed table of bseg with unique key belnr. *
DATA:ts_rep TYPE STANDARD TABLE OF y_rep,
ts_vbfa TYPE STANDARD TABLE OF y_vbfa,
ts_vttk TYPE STANDARD TABLE OF y_vttk,
ts_log TYPE STANDARD TABLE OF y_log.
*}
*
*$*$********************************************************************
*$*$ GLOBAL RANGES
*
*$*$ NAMING CONVENTION: "R_NAME"
*
*$*$********************************************************************
*{
*
*}
*
*$*$********************************************************************
*$*$ FIELD-GROUPS
*
*$*$ NAMING CONVENTION: "G_NAME"
*
*$*$********************************************************************
*{
*
*}
*
*$*$********************************************************************
*$*$ MACROS
*
*$*$ NAMING CONVENTION: "M_NAME"
*
*$*$********************************************************************
*{
*
*}
*
*$*$********************************************************************
*$*$ GLOBAL FIELD-SYMBOLS
*
*$*$ NAMING CONVENTION: "<FS_NAME>"
*
*$*$********************************************************************
*{
*
FIELD-SYMBOLS: <fs_rep>
TYPE y_rep,
<fs_likp>
TYPE y_likp,
<fs_vbfa>
TYPE y_vbfa,
<fs_vttk>
TYPE y_vttk,

<fs_log>
TYPE y_log.
*}
*
*$*$********************************************************************
*$*$ PARAMETERS & SELECT-OPTIONS
*
*$*$ NAMING CONVENTION: "P_NAME" & "S_NAME"
*
*$*$********************************************************************
*{
*
SELECTION-SCREEN BEGIN OF BLOCK ss01 WITH FRAME TITLE text-001.
PARAMETER : p_bukrs TYPE vkbuk.
PARAMETER : p_vkorg TYPE vkorg OBLIGATORY.
SELECT-OPTIONS: s_perio FOR sy-datum.
SELECTION-SCREEN END OF BLOCK ss01.
*}
*
*$*$********************************************************************
*$*$ CLASSES
*
*$*$ NAMING CONVENTION: "OB_NAME"
*
*$*$********************************************************************
*{
*}
*&---------------------------------------------------------------------*
*&
Class OB_REPORT
*&---------------------------------------------------------------------*
*
Text
*----------------------------------------------------------------------*
CLASS ob_report DEFINITION FINAL.
PUBLIC SECTION.
METHODS: me_main,
me_get_data,
me_process_data,
me_show_alv,
me_build_alv,
me_build_alv_top.

"#EC CALLED

ENDCLASS. "OB_REPORT
*&---------------------------------------------------------------------*
*&
Class OB_EVENTO
*&---------------------------------------------------------------------*
*
Text
*----------------------------------------------------------------------*
CLASS ob_evento DEFINITION FINAL.
PUBLIC SECTION.

METHODS: me_top_of_page
FOR EVENT top_of_page
OF cl_gui_alv_grid.
IMPORTING e_dyndoc_id.
METHODS: me_double_click FOR EVENT double_click
OF cl_gui_alv_grid IMPORTING e_row e_column.
METHODS: me_handle_toolbar_set
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING

e_object.
e_interactive.

METHODS: me_handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING
e_ucomm.
ENDCLASS.

"OB_EVENTO

*&---------------------------------------------------------------------*
*&
Class (Implementation) ob_report
*&---------------------------------------------------------------------*
*
Text
*----------------------------------------------------------------------*
CLASS ob_report IMPLEMENTATION.
METHOD me_main.
me->me_get_data( ).
me->me_process_data( ).
me->me_show_alv( ).
ENDMETHOD.

"me_main

METHOD me_get_data.
PERFORM f_obtener_datos.
ENDMETHOD.

"me_get_data

METHOD me_process_data.
PERFORM f_process_data.
ENDMETHOD.

"me_process_data

METHOD me_show_alv.
CALL SCREEN 9900.
ENDMETHOD.

"me_show_alv

METHOD me_build_alv.
*

DATA: ls_layo TYPE lvc_s_layo.


CLEAR e_ls_layo.
IF ob_container IS INITIAL.
CREATE OBJECT ob_container
EXPORTING
container_name = c_cc_container.
CREATE OBJECT ob_grid
EXPORTING
i_parent = ob_container.

PERFORM f_build_fieldcat.
ls_layo-zebra
= '1'.
MOVE c_1 TO e_ls_layo-zebra.

CALL METHOD ob_grid->set_table_for_first_display


EXPORTING
i_buffer_active
= space
i_bypassing_buffer = space
i_consistency_check = l_consistency_check
is_layout
= e_ls_layo
CHANGING
it_outtab
= ts_rep
it_fieldcatalog
= ts_fieldcat.
ENDIF.
ENDMETHOD.

"me_build_alv

METHOD me_build_alv_top.
IF ob_container IS INITIAL.
CREATE OBJECT ob_container
EXPORTING
container_name = c_cc_container.
CREATE OBJECT
EXPORTING
parent =
rows
=
columns =

ob_split_main
ob_container
2
1.

* Initializing document
CREATE OBJECT ob_dyndoc_id
EXPORTING
style = 'ALV_GRID'.
CALL METHOD ob_split_main->get_container
EXPORTING
row
= 1
column
= 1
RECEIVING
container = ob_contenedor_head.
CALL METHOD ob_split_main->set_row_height
EXPORTING
id
= 1
height = 15.
CALL METHOD ob_split_main->get_container
EXPORTING
row
= 2
column
= 1
RECEIVING
container = ob_contenedor_alv.
CREATE OBJECT ob_grid
EXPORTING
i_parent = ob_contenedor_alv.

PERFORM f_build_fieldcat.
CREATE OBJECT ob_evento.
* Evento TOP_OF_PAGE
SET HANDLER ob_evento->me_top_of_page FOR ob_grid.
* Doble Click
SET HANDLER ob_evento->me_double_click FOR ob_grid.
* Toolbar
SET HANDLER ob_evento->me_handle_toolbar_set

FOR ob_grid.

* Boton PRUEBA
SET HANDLER ob_evento->me_handle_user_command FOR ob_grid.
*
*
*

DATA: ls_layo TYPE lvc_s_layo.


ls_layo-zebra
= 'X'.
MOVE: c_x TO e_ls_layo-zebra,
ls_layo-no_rowmark = 'X'.
c_x TO e_ls_layo-no_rowmark,
ls_layo-no_toolbar = ''.
c_x TO e_ls_layo-no_toolbar.

CALL METHOD ob_grid->set_table_for_first_display


EXPORTING
i_buffer_active
= space
i_bypassing_buffer = space
i_consistency_check = l_consistency_check
is_layout
= e_ls_layo
CHANGING
it_outtab
= ts_rep
it_fieldcatalog
= ts_fieldcat.

* Evento TOP_OF_PAGE
CALL METHOD ob_grid->list_processing_events
EXPORTING
i_event_name = 'TOP_OF_PAGE'
i_dyndoc_id = ob_dyndoc_id.
ENDIF. "cerrando if
ENDMETHOD.
ENDCLASS.

"me_build_alv_top
"ob_report

*&---------------------------------------------------------------------*
*&
Class (Implementation) OB_EVENTO
*&---------------------------------------------------------------------*
*
Text
*----------------------------------------------------------------------*
CLASS ob_evento IMPLEMENTATION.
METHOD me_top_of_page.
PERFORM f_top_of_page USING ob_dyndoc_id.
ENDMETHOD.

"me_top_of_page

METHOD me_double_click.
PERFORM f_double_click USING e_row e_column.
ENDMETHOD.

"me_DOUBLE_CLICK

METHOD me_handle_toolbar_set.
CONSTANTS: c_process(7)

TYPE c VALUE c_batch.

CLEAR: e_toolbar.
MOVE: c_process TO e_toolbar-function,
0 TO e_toolbar-butn_type,
c_batch_input TO e_toolbar-quickinfo,
c_batch_input TO e_toolbar-text.
APPEND e_toolbar TO e_object->mt_toolbar.
ENDMETHOD.

"handle_toolbar_set

METHOD me_handle_user_command.
PERFORM f_select_option USING e_ucomm.
ENDMETHOD.

"handle_user_command

ENDCLASS.
"OB_EVENTO
*}
*
*$*$********************************************************************
*$*$ INITIALIZATION
*
*$*$********************************************************************
*{
*
INITIALIZATION.
*}
*
*$*$********************************************************************
*$*$ AT SELECTION-SCREEN ON
*
*$*$********************************************************************
*{
*
AT SELECTION-SCREEN.
*Obtener la Sociedad de la Organizacin de venta, tabla TVKO (VKORG)
CLEAR w_bukrs.
SELECT
FROM
INTO
WHERE

SINGLE bukrs
tvko
w_bukrs
vkorg EQ p_vkorg.

IF sy-subrc EQ 0.
MOVE w_bukrs TO p_bukrs.
ENDIF.
*Para mantener la pantalla de salida no editable ne el campo p_bukrs
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.

CASE screen-group4.
*

WHEN c_001.
screen-input = 0.
MOVE 0 TO screen-input.

WHEN OTHERS.
screen-input = 1.
MOVE 1 TO screen-input.
ENDCASE.
MODIFY SCREEN.

ENDLOOP.
*}
*
*$*$********************************************************************
*$*$ AT SELECTION-SCREEN
*
*$*$********************************************************************
*{
*
*}
*
*$*$********************************************************************
*$*$ START-OF-SELECTION
*
*$*$********************************************************************
*{
*
START-OF-SELECTION.
CREATE OBJECT ob_obj.
ob_obj->me_main( ).
*}
*
*$*$********************************************************************
*$*$ END-OF-SELECTION
*
*$*$********************************************************************
*{
*
END-OF-SELECTION.
*}
*
*$*$********************************************************************
*$*$ TOP-OF-PAGE
*
*$*$********************************************************************
*{
*
TOP-OF-PAGE.
*}
*
*$*$********************************************************************
*$*$ TOP-OF-PAGE DURING LINE-SELECTION
*
*$*$********************************************************************
*{
*
TOP-OF-PAGE DURING LINE-SELECTION.
*}
*
*$*$********************************************************************
*$*$ END-OF-PAGE
*
*$*$********************************************************************
*{
*
END-OF-PAGE.
*}
*
*$*$********************************************************************
*$*$ AT LINE-SELECTION
*
*$*$********************************************************************
*{
*

AT LINE-SELECTION.
*}
*
*$*$********************************************************************
*$*$ AT USER-COMMAND
*
*$*$********************************************************************
*{
*
AT USER-COMMAND.
*}
*
*$*$********************************************************************
*$*$ AT PFNN
*
*$*$********************************************************************
*{
*
*}
*
*$*$********************************************************************
*$*$ MODULES
*
*$*$ NAMING CONVENTION: "MO_NAME"
*
*$*$********************************************************************
*{
*
*}
*
*$*$********************************************************************
*$*$ METHODS
*
*$*$ NAMING CONVENTION: "ME_NAME"
*
*$*$********************************************************************
*{
*
*}
*
*$*$********************************************************************
*$*$ FORMS
*
*$*$ NAMING CONVENTION: "F_NAME"
*
*$*$********************************************************************
*{
*
*&---------------------------------------------------------------------*
*&
Form F_PROCESS_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_process_data .
*
DATA: w_name TYPE name1,
w_waers TYPE waers,
w_count TYPE i,
w_peso TYPE gsgew,
w_valor TYPE zvxxvalue2,
w_vpeso TYPE zvxxvalue2,
w_vdist TYPE zvxxvalue2,
w_mpeso TYPE netwr,
w_mdist TYPE netwr,
w_total TYPE netwr.
FREE: ts_rep.
CLEAR: e_rep,
w_waers,
w_name,
w_count,
w_peso,
w_valor,

w_vpeso,
w_vdist,
w_mpeso,
w_mdist,
w_total,
e_likp2,
e_tvro.
UNASSIGN <fs_vbfa>.
LOOP AT ts_vbfa
ASSIGNING <fs_vbfa>.
UNASSIGN <fs_vttk>.
READ TABLE ts_vttk WITH KEY tknum = <fs_vbfa>-vbeln
ASSIGNING <fs_vttk> .
IF sy-subrc EQ 0.
*Select para el nombre del agente de servicio
SELECT SINGLE name1
FROM lfa1
INTO w_name
WHERE lifnr EQ <fs_vttk>-tdlnr.
IF sy-subrc EQ 0.
"#EC NEEDED
ENDIF.
*Select para el peso y UM del peso
SELECT SINGLE btgew gewei
FROM likp
INTO e_likp2
WHERE vbeln EQ <fs_vbfa>-vbelv.
IF sy-subrc EQ 0.
w_peso = w_peso + e_likp2-btgew.
w_count = w_count + 1.
ENDIF.
SELECT
FROM
INTO
WHERE

SINGLE distz medst


tvro
e_tvro
route EQ <fs_vttk>-route.

IF sy-subrc EQ 0.
"#EC NEEDED
ENDIF.
SELECT
FROM
INTO
WHERE

SINGLE waers
t001
w_waers
bukrs EQ p_bukrs.

IF sy-subrc EQ 0.
"#EC NEEDED
ENDIF.

*Select para el peso y UM del peso


SELECT SINGLE value
FROM ydgparam_glob
INTO w_vpeso
WHERE sub2 EQ e_likp2-gewei.
IF sy-subrc EQ 0.
"#EC NEEDED
ENDIF.
w_mpeso = w_vpeso * w_peso.
SELECT
FROM
INTO
WHERE

SINGLE value
ydgparam_glob
w_vdist
sub2 EQ e_tvro-medst.

IF sy-subrc EQ 0.
"#EC NEEDED
ENDIF.
w_mdist = w_vdist * e_tvro-distz.
w_total = w_mpeso + w_mdist.
MOVE: <fs_vttk>-tdlnr TO e_rep-tdlnr,
w_name TO e_rep-name1,
<fs_vbfa>-vbeln TO e_rep-tknum,
sy-datum TO e_rep-updat,
w_count TO e_rep-cantidad,
w_peso TO e_rep-btgew,
<fs_vttk>-route TO e_rep-route,
e_tvro-distz TO e_rep-distz,
w_waers TO e_rep-waers,
w_mpeso TO e_rep-mpeso,
w_mdist TO e_rep-mdist,
w_total TO e_rep-mtotal.
APPEND e_rep TO ts_rep.
ENDIF.
CLEAR: e_rep,
w_waers,
w_name,
w_count,
w_peso.
ENDLOOP.
ENDFORM.
" F_PROCESS_DATA
*&---------------------------------------------------------------------*
*&
Form F_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text

* <-- p2
text
*----------------------------------------------------------------------*
FORM f_build_fieldcat.
DATA: w_pos TYPE i.
CLEAR: w_pos,
e_fieldcat.
w_pos

= w_pos + 1.

MOVE: w_pos

TO e_fieldcat-col_pos,

c_zzsel

TO e_fieldcat-fieldname,

c_ts_rep TO e_fieldcat-tabname,

*
*

c_sel

TO e_fieldcat-reptext,

c_x

TO e_fieldcat-key,

c_x

TO e_fieldcat-col_opt,

c_x

TO e_fieldcat-checkbox,

c_x TO e_fieldcat-edit.
e_fieldcat-fix_column = 'X'.
e_fieldcat-outputlen = 3.
APPEND e_fieldcat TO ts_fieldcat.
CLEAR e_fieldcat.

w_pos

= w_pos + 1.

MOVE: w_pos

TO e_fieldcat-col_pos,

c_tdlnr

TO e_fieldcat-fieldname,

c_ts_rep

TO e_fieldcat-tabname,

c_trans TO e_fieldcat-reptext,
c_blan
c_x

TO e_fieldcat-key,
TO e_fieldcat-col_opt.

APPEND e_fieldcat TO ts_fieldcat.


CLEAR e_fieldcat.
w_pos

= w_pos + 1.

MOVE: w_pos

TO e_fieldcat-col_pos,

c_name1 TO e_fieldcat-fieldname,
c_ts_rep TO e_fieldcat-tabname,
c_nombre TO e_fieldcat-reptext,

c_blan

TO e_fieldcat-key,

c_x

TO e_fieldcat-col_opt.

APPEND e_fieldcat TO ts_fieldcat.


CLEAR e_fieldcat.
w_pos

= w_pos + 1.

MOVE: w_pos

TO e_fieldcat-col_pos,

c_tknum

TO e_fieldcat-fieldname,

c_ts_rep

TO e_fieldcat-tabname,

c_doc_tra TO e_fieldcat-reptext,
c_x

TO e_fieldcat-col_opt.

APPEND e_fieldcat TO ts_fieldcat.


CLEAR e_fieldcat.
w_pos

= w_pos + 1.

MOVE: w_pos
c_updat

TO e_fieldcat-col_pos,
TO e_fieldcat-fieldname,

c_ts_rep TO e_fieldcat-tabname,
c_fpro

TO e_fieldcat-reptext,

c_x

TO e_fieldcat-col_opt.

APPEND e_fieldcat TO ts_fieldcat.


w_pos

= w_pos + 1.

MOVE: w_pos
c_cant
c_ts_rep

TO e_fieldcat-col_pos,
TO e_fieldcat-fieldname,
TO e_fieldcat-tabname,

c_cde TO e_fieldcat-reptext,
c_x

TO e_fieldcat-col_opt.

APPEND e_fieldcat TO ts_fieldcat.


w_pos

= w_pos + 1.

MOVE: w_pos
c_btgew

TO e_fieldcat-col_pos,
TO e_fieldcat-fieldname,

c_ts_rep TO e_fieldcat-tabname,

c_ptotal TO e_fieldcat-reptext,
c_x

TO e_fieldcat-col_opt.

APPEND e_fieldcat TO ts_fieldcat.


w_pos

= w_pos + 1.

MOVE: w_pos

TO e_fieldcat-col_pos,

c_route TO e_fieldcat-fieldname,
c_ts_rep

TO e_fieldcat-tabname,

c_ruta TO e_fieldcat-reptext,
c_blan

TO e_fieldcat-edit,

c_x

TO e_fieldcat-col_opt.

APPEND e_fieldcat TO ts_fieldcat.


CLEAR e_fieldcat.
w_pos

= w_pos + 1.

MOVE: w_pos
c_distz

TO e_fieldcat-col_pos,
TO e_fieldcat-fieldname,

c_ts_rep TO e_fieldcat-tabname,
c_dis TO e_fieldcat-reptext,
c_x

TO e_fieldcat-col_opt.

APPEND e_fieldcat TO ts_fieldcat.


CLEAR e_fieldcat.
w_pos

= w_pos + 1.

MOVE: w_pos
c_waers

TO e_fieldcat-col_pos,
TO e_fieldcat-fieldname,

c_ts_rep TO e_fieldcat-tabname,
c_mon TO e_fieldcat-reptext,
c_x

TO e_fieldcat-col_opt.

APPEND e_fieldcat TO ts_fieldcat.


CLEAR e_fieldcat.
w_pos = w_pos + 1.
MOVE: w_pos TO e_fieldcat-col_pos,

c_mpeso TO e_fieldcat-fieldname,
c_ts_rep TO e_fieldcat-tabname,
c_mxpes TO e_fieldcat-reptext,
c_x TO e_fieldcat-col_opt.
1000 to e_fieldcat-outputlen.
APPEND e_fieldcat TO ts_fieldcat.
CLEAR e_fieldcat.
w_pos = w_pos + 1.
MOVE: w_pos TO e_fieldcat-col_pos,
c_mdist TO e_fieldcat-fieldname,
c_ts_rep TO e_fieldcat-tabname,
c_mxdis TO e_fieldcat-reptext,
c_x TO e_fieldcat-col_opt.
APPEND e_fieldcat TO ts_fieldcat.
CLEAR e_fieldcat.
w_pos = w_pos + 1.
MOVE: w_pos TO e_fieldcat-col_pos,
c_mtota TO e_fieldcat-fieldname,
c_ts_rep TO e_fieldcat-tabname,
c_mont TO e_fieldcat-reptext,
c_x TO e_fieldcat-col_opt.
APPEND e_fieldcat TO ts_fieldcat.
CLEAR e_fieldcat.

ENDFORM.
" F_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*&
Form F_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_OB_DYNDOC_ID text
*----------------------------------------------------------------------*
FORM f_top_of_page USING us_dyndoc_id TYPE REF TO cl_dd_document.
DATA: w_txt(255) TYPE c,
w_datum(10) TYPE c,
w_uzeit(10) TYPE c.
CLEAR: w_txt,
w_datum,
w_uzeit.
* Aadir texto en estilo de Titulo cabecera
CALL METHOD us_dyndoc_id->add_text
EXPORTING
text
= c_titulo
sap_style = cl_dd_area=>heading.
CALL METHOD us_dyndoc_id->new_line.

CONCATENATE c_uyp sy-uname c_esl sy-repid INTO w_txt SEPARATED BY space.


CALL METHOD us_dyndoc_id->add_text
EXPORTING
text = w_txt.
CLEAR w_txt.
CALL METHOD us_dyndoc_id->new_line.
WRITE: sy-datum TO w_datum DD/MM/YYYY,
sy-uzeit TO w_uzeit USING EDIT MASK c_mask.
CONCATENATE c_fyh w_datum c_esl w_uzeit INTO w_txt SEPARATED BY space.
CALL METHOD us_dyndoc_id->add_text
EXPORTING
text = w_txt.
CLEAR w_txt.
CALL METHOD us_dyndoc_id->new_line.
CONDENSE w_butxt.
CONCATENATE c_oys p_vkorg c_esl p_bukrs w_butxt INTO w_txt SEPARATED BY space
.
CALL METHOD us_dyndoc_id->add_text
EXPORTING
text = w_txt.

*Mostrar la cabecera
CALL METHOD us_dyndoc_id->display_document
EXPORTING
parent = ob_contenedor_head.
ENDFORM.
" F_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*&
Form F_SELECT_OPTION
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_E_UCOMM text
*----------------------------------------------------------------------*
FORM f_select_option USING us_e_ucomm TYPE sy-ucomm.
*
*
*
*
*
*
*
*
*
*

DATA: w_baseline TYPE sy-datum.


CLEAR:w_baseline.
FREE: is_bdcdata.
CASE us_e_ucomm.
WHEN 'BATCH'.

*
UNASSIGN <fs_rep>.
*
*
LOOP AT ts_rep
*
ASSIGNING <fs_rep>
*
WHERE zzsel EQ c_x.
*
*
select *
*
from ydg_loglab02
*
into table ts_log
*
where vbeln eq <fs_rep>-vbeln1
*
and ebeln NE c_9.
*
*
perform f_actualiza2_log.
*
*
IF <fs_rep>-n_zfbdt LT <fs_rep>-bldat.
*
*
MOVE c_menor TO <fs_rep>-msje.
*
**
MODIFY ts_rep FROM e_rep.
*
*
ELSEIF <fs_rep>-n_zfbdt GT sy-datum.
*
*
MOVE c_mayor TO <fs_rep>-msje.
*
**
MODIFY ts_rep FROM e_rep.
*
*
ENDIF.
*
*
IF <fs_rep>-n_zfbdt GE <fs_rep>-bldat
*
AND <fs_rep>-n_zfbdt LE sy-datum
*
AND <fs_rep>-vbeln2
IS NOT INITIAL
*
AND <fs_rep>-belnr
IS NOT INITIAL.
*
*
FREE is_bdcdata.
*
*
PERFORM f_bdc_dynpro USING c_sapmf05l c_0100.
*
*
PERFORM f_bdc_field USING c_rf05l_belnr <fs_rep>-belnr.
*
*
PERFORM f_bdc_field USING c_rf05l_bukrs p_bukrs.
*
*
PERFORM f_bdc_field USING c_bdc_okcode c_az.
*
*
PERFORM f_bdc_dynpro USING c_sapmf05l c_0301.
*
*
CONCATENATE <fs_rep>-n_zfbdt+6(2) <fs_rep>-n_zfbdt+4(2) <fs_rep>-n_z
fbdt+0(4)
*
*
INTO w_baseline.
*
*
PERFORM f_bdc_field USING c_bseg_zfbdt w_baseline.
*
*
PERFORM f_bdc_field USING c_bdc_okcode c_ae.
*
*
CALL TRANSACTION c_fb02 USING is_bdcdata
*
UPDATE c_s.
*
*
*
IF sy-subrc EQ 0.
*

*
MOVE c_actualizado TO <fs_rep>-msje.
*
*
CLEAR <fs_rep>-zzsel.
*
**
MODIFY ts_rep FROM e_rep.
*
*
*
PERFORM f_actualiza_log.
*
*
** Implement suitable error handling here
*
ENDIF.
*
*
ENDIF. "cerrando if
*
*
ENDLOOP.
*
*
WHEN OTHERS.
*
* ENDCASE. "cerrando case batch
*
** DATA: ls_layo TYPE lvc_s_layo.
*
* CALL METHOD ob_grid->set_table_for_first_display
*
EXPORTING
*
i_buffer_active
= space
*
i_bypassing_buffer = space
**
i_consistency_check = l_consistency_check
*
is_layout
= e_ls_layo
*
CHANGING
*
it_outtab
= ts_rep
*
it_fieldcatalog
= ts_fieldcat.
ENDFORM.
" F_SELECT_OPTION
*&---------------------------------------------------------------------*
*&
Form F_OBTENER_DATOS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_obtener_datos .
CLEAR w_butxt.
*Select del llenado de ts_log
FREE ts_log.
SELECT
FROM
INTO
WHERE
AND
AND

*
ydg_loglab02
TABLE ts_log
vkorg EQ p_vkorg
ebeln EQ space
updat IN s_perio.

"#EC

IF sy-subrc EQ 0.
"#EC NEEDED
ENDIF.
*select del transporte

FREE: ts_vbfa.
IF ts_log[] IS NOT INITIAL.
SELECT vbelv vbeln vbtyp_v vbtyp_n
FROM vbfa
INTO TABLE ts_vbfa "documento de transporte vbeln
FOR ALL ENTRIES IN ts_log "lee los registros de la tabla
WHERE vbelv EQ ts_log-vbeln
AND vbtyp_n EQ c_8
AND vbtyp_v EQ c_j.
IF sy-subrc EQ 0.
"#EC NEEDED
ENDIF.
DELETE ADJACENT DUPLICATES FROM ts_vbfa. "Borra los duplicados de la tabla
ENDIF.
*select de datos adicionales
FREE ts_vttk.
IF ts_vbfa[] IS NOT INITIAL.
SELECT
FROM
INTO
FOR
WHERE
AND

tknum shtyp tdlnr route distz medst


vttk
TABLE ts_vttk "datos del transporte ruta y distancia
ALL ENTRIES IN ts_vbfa "lee los registros de la tabla
tknum EQ ts_vbfa-vbeln
shtyp EQ c_z002.

IF sy-subrc EQ 0.
"#EC NEEDED
ENDIF.

ENDIF.
******
SELECT
FROM
INTO
WHERE

SINGLE butxt
t001
w_butxt
bukrs EQ w_bukrs.

IF sy-subrc EQ 0.
"#EC NEEDED
ENDIF.
ENDFORM.
" F_OBTENER_DATOS
*&---------------------------------------------------------------------*
*&
Form F_BDC_DYNPRO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_C_SAPMF05L text
*
-->P_C_0100 text
*----------------------------------------------------------------------*
FORM f_bdc_dynpro USING us_program TYPE any

us_dynpro TYPE any.


CLEAR: e_bdcdata.
MOVE: us_program TO e_bdcdata-program ,
us_dynpro TO e_bdcdata-dynpro,
c_x
TO e_bdcdata-dynbegin.
INSERT e_bdcdata INTO TABLE is_bdcdata.
ENDFORM.

" F_BDC_DYNPRO

*&---------------------------------------------------------------------*
*&
Form F_BDC_FIELD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_1366 text
*
-->P_E_REP_BELNR text
*----------------------------------------------------------------------*
FORM f_bdc_field USING
us_fnam TYPE any
us_fval TYPE any.
CLEAR: e_bdcdata.
MOVE: us_fnam TO e_bdcdata-fnam,
us_fval TO e_bdcdata-fval.
INSERT e_bdcdata INTO TABLE is_bdcdata.
ENDFORM.

" F_BDC_FIELD

*&---------------------------------------------------------------------*
*&
Form F_ACTUALIZA_LOG
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_E_REP text
*----------------------------------------------------------------------*
FORM f_actualiza_log.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

DATA: w_txt(32) TYPE c.


CLEAR: w_txt,
e_log.
CONCATENATE c_hecho sy-repid c_par INTO w_txt SEPARATED BY space.
MOVE: sy-mandt
TO e_log-mandt,
<fs_rep>-vbeln1 TO e_log-vbeln,
p_vkorg
TO e_log-vkorg,
sy-uname
TO e_log-uname,
sy-datum
TO e_log-updat,
sy-uzeit
TO e_log-uptim,
<fs_rep>-zfbdt TO e_log-old_date,
<fs_rep>-n_zfbdt TO e_log-zfbdt,
w_txt
TO e_log-zcomment.
APPEND e_log TO ts_log.

*
*
*

INSERT ydg_loglab02 FROM TABLE ts_log.


FREE ts_log.
ENDFORM.

" F_ACTUALIZA_LOG

*&---------------------------------------------------------------------*
*&
Form f_actualiza2_log
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM f_actualiza2_log.
CLEAR e_log.
LOOP AT ts_log INTO e_log.
IF e_log-ebeln IS INITIAL.
UPDATE ydg_loglab02 SET ebeln = c_9
WHERE vkorg EQ e_log-vkorg
AND vbeln EQ e_log-vbeln
AND updat EQ e_log-updat
AND uptim EQ e_log-uptim
AND uname EQ e_log-uname.
ENDIF.
ENDLOOP.
FREE ts_log.
ENDFORM.

"f_actualiza2_log

*}
*
*$*$********************************************************************
*&---------------------------------------------------------------------*
*&
Module M_STATUS_9900 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE m_status_9900 OUTPUT.
SET PF-STATUS c_test.
ENDMODULE.
" M_STATUS_9900 OUTPUT
*&---------------------------------------------------------------------*
*&
Module M_USER_COMMAND_9900 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE m_user_command_9900 INPUT.
CASE w_ok_code.
WHEN c_back OR c_leave OR c_cancel.
SET SCREEN 0.

WHEN c_xxx.
perform f_call_bapi.
WHEN OTHERS.
ENDCASE.
CLEAR w_ok_code.
ENDMODULE.
" M_USER_COMMAND_9900 INPUT
*&---------------------------------------------------------------------*
*&
Module M_SHOW_ALV OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE m_show_alv OUTPUT.
ob_obj->me_build_alv_top( ).
ENDMODULE.
" M_SHOW_ALV OUTPUT
*&---------------------------------------------------------------------*
*&
Form F_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_E_ROW text
*
-->P_E_COLUMN text
*----------------------------------------------------------------------*
FORM f_double_click USING
us_e_row
TYPE lvc_s_row
us_e_column TYPE lvc_s_col.
*
* READ TABLE ts_rep
*
INDEX us_e_row-index
*
INTO e_rep.
*
* IF sy-subrc EQ 0.
*
*
CASE us_e_column.
*
*
WHEN c_vbeln1.
*
*
IF e_rep-vbeln1 IS NOT INITIAL.
*
*
SET PARAMETER ID: c_vl FIELD e_rep-vbeln1.
*
*
CALL TRANSACTION c_vl03n
*
AND SKIP FIRST SCREEN.
*
*
ENDIF.
*
*
WHEN c_vbeln2.
*
*
IF e_rep-vbeln2 IS NOT INITIAL.
*
*
SET PARAMETER ID: c_vf FIELD e_rep-vbeln2.
*
*
CALL TRANSACTION c_vf03
*
AND SKIP FIRST SCREEN.
*

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

ENDIF.
WHEN c_belnr.
IF e_rep-belnr IS NOT INITIAL.
SET PARAMETER ID: c_bln FIELD e_rep-belnr.
SET PARAMETER ID: c_buk FIELD e_rep-bukrs.
SET PARAMETER ID: c_gjr FIELD e_rep-gjahr.
CALL TRANSACTION c_fb03
AND SKIP FIRST SCREEN.
ELSE.
MESSAGE i999 WITH 'prueba3'.
ENDIF.
WHEN OTHERS.
ENDCASE. "finaliza el caso
ENDIF.

"Fila de rseg.

ENDFORM.
" F_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*&
Form F_CALL_BAPI
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form F_CALL_BAPI .
loop at ts_rep
into e_rep.
clear:

l_poheader,
l_poitem,
l_po_item_schedules,
l_po_acct_assign,
l_po_limits,
l_po_srv_accss,
l_return,
l_po_services.

refresh: l_poheader,
l_poitem,
l_po_item_schedules,
l_po_acct_assign,
l_po_limits,
l_po_srv_accss,
l_po_services,
l_return.

move: p_bukrs to l_poheader-co_code, "Company Code

c_NB to l_poheader-doc_type , "MN = Marketing PO


c_1432 to l_poheader-purch_org,
e_rep-tdlnr to l_poheader-vendor,
sy-datum to l_poheader-doc_date,
L_POHEADER-PO_NUMBER = p_po.
c_0GK to l_poheader-pur_group.
append l_poheader.

*
*
*
*

move: c_2951 to l_poitem-plant,


c_00010 to l_poitem-po_item,
c_9_1 to l_poitem-item_cat, "9 translates to 'D'
c_2 to l_poitem-acctasscat,
c_blan to l_poitem-material,
c_Flet to l_poitem-short_text,
L_POITEM-TRACKINGNO = '11111'.
c_DUMMY to l_poitem-mat_grp,
c_ACT to l_poitem-unit,
L_POITEM-NET_PRICE = 2800.
L_POITEM-ORDERPR_UN = 'BRL'.
L_POITEM-PRICE_UNIT = 1.
c_0000000001 to l_poitem-pckg_no. "Unknown field.
append l_poitem.

*Line Item Schedules


* Line 10
move: c_00010 to l_poitem_add-po_item,
c_x to l_poitem_add-del_compl.
append l_poitem_add.
* Line Item Schedules
* Line 10
move: c_00010
to l_po_item_schedules-po_item,
c_20120607 to l_po_item_schedules-deliv_date.
append l_po_item_schedules.
* Account Assignment records
* Line 10
move: c_00010 to l_po_acct_assign-po_item,
c_0052960007 to l_po_acct_assign-g_l_acct,
c_P2951830 to l_po_acct_assign-cost_ctr,
c_1
to l_po_acct_assign-quantity,
*
L_PO_ACCT_ASSIGN-CO_AREA = 'XX00'.
*
L_PO_ACCT_ASSIGN-WBS_ELEM_E = '090945'.
c_01 to l_po_acct_assign-serial_no. "Sequential Number
*
L_PO_ACCT_ASSIGN-DISTR_PERC = '100.0'.
append l_po_acct_assign.
move: c_0000000001 to l_po_services-pckg_no,
c_0000000001 to l_po_services-line_no,
c_0000000000 to l_po_services-ext_line,
c_0000000002 to l_po_services-subpckg_no,
c_x to l_po_services-outl_ind.
*
L_PO_SRV_ACCSS-PERCENTAGE = '25.0'.
*
L_PO_SRV_ACCSS-SERIAL_NO = '01'.

append l_po_services.
clear: l_po_services-gr_price.
move: c_0000000002 to l_po_services-pckg_no,
c_0000000002 to l_po_services-line_no,
c_0000000010 to l_po_services-ext_line,
*
L_PO_SERVICES-SERNO_LINE = '01'.
c_1000278 to l_po_services-service,
c_DUMMY to l_po_services-matl_group,
c_1 to l_po_services-quantity,
c_ACT to l_po_services-base_uom,
e_rep-mtotal to l_po_services-gr_price.
*
L_PO_SRV_ACCSS-PERCENTAGE = '25.0'.
*
L_PO_SRV_ACCSS-SERIAL_NO = '01'.
append l_po_services.
*
move: c_0000000002 to l_po_srv_accss-pckg_no,
c_0000000002 to l_po_srv_accss-line_no,
c_01 to l_po_srv_accss-serno_line,
c_100_0 to l_po_srv_accss-percentage,
c_01 to l_po_srv_accss-serial_no,
c_1 to l_po_srv_accss-quantity.
*
L_PO_SRV_ACCSS-NET_VALUE = 2800.
append l_po_srv_accss.
call function 'BAPI_PO_CREATE'
exporting
po_header
* PO_HEADER_ADD_DATA
* HEADER_ADD_DATA_RELEVANT
* PO_ADDRESS
* SKIP_ITEMS_WITH_ERROR
* ITEM_ADD_DATA_RELEVANT
* HEADER_TECH_FIELDS
* IMPORTING
* PURCHASEORDER
tables
po_items
po_item_add_data
po_item_schedules
po_item_account_assignment
* PO_ITEM_TEXT
return
* PO_LIMITS
* PO_CONTRACT_LIMITS
po_services
po_srv_accass_values
* PO_SERVICES_TEXT
* PO_BUSINESS_PARTNER
* EXTENSIONIN
* POADDRDELIVERY
*
*loop at l_return where type = 'E'
*or type = 'A'.
*
*write: l_return.
*endloop.

= l_poheader
=
=
=
= 'X'
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

l_poitem
l_poitem_add
l_po_item_schedules
l_po_acct_assign
l_return
l_po_services
l_po_srv_accss.

if l_return-type ne 'S'.
message i999 with 'BAPI no concretada'.
else.
*message i999 with l_return.
UNASSIGN <fs_vbfa>.
loop at ts_vbfa
ASSIGNING <fs_vbfa>
where vbeln eq e_rep-tknum.
UNASSIGN <fs_log>.
READ TABLE ts_log WITH KEY vbeln = <fs_vbfa>-vbelv
ASSIGNING <fs_log> .
update
set
where
and
and
and
and
and

ydg_loglab02
ebeln = l_return-MESSAGE_V2
vkorg eq <fs_log>-vkorg
vbeln eq <fs_log>-vbeln
updat eq <fs_log>-updat
uptim eq <fs_log>-uptim
uname eq <fs_log>-uname
ebeln eq space.

endloop.
if sy-subrc eq 0.
CLEAR e_rep-zzsel.
message i999 with 'BAPI concretada'.
endif.
ENDIF.
endloop.
endform.

" F_CALL_BAPI

You might also like