Está en la página 1de 8

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

*& Report ZPROJ_INTERFACE_RICEF


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT

ZPROJ_INTERFACE_RICEF NO STANDARD PAGE HEADING.

TYPE-POOLS : SLIS.
TABLES : MARC.
TYPES: BEGIN OF TY_MARC,
MATNR TYPE MARC-MATNR,
WERKS TYPE MARC-WERKS,
END OF TY_MARC.
TYPES: BEGIN OF TY_MBEW,
MATNR TYPE MBEW-MATNR,
ZPLP1 TYPE MBEW-ZPLP1, "FUTURE PLANNED PRICE 1
ZPLD1 TYPE MBEWZPLD1, "DATE FROM WHICH FUTURE PLANNED PRICE 1 IS VALID
STPRS TYPE MBEW-STPRS,
END OF TY_MBEW.
TYPES: BEGIN OF TY_FINAL,
MATNR TYPE MARC-MATNR,
WERKS TYPE MARC-WERKS,
ZPLP1 TYPE MBEW-ZPLP1,
ZPLD1 TYPE MBEW-ZPLD1,
STPRS TYPE MBEW-STPRS,
TYPE TYPE CHAR1,
MESSAGE TYPE CHAR30,
END OF TY_FINAL.
DATA :I_MBEW TYPE TABLE OF TY_MBEW,
WA_MBEW TYPE TY_MBEW,
I_MARC TYPE TABLE OF TY_MARC,
WA_MARC TYPE TY_MARC,
I_FINAL TYPE TABLE OF TY_FINAL,
WA_FINAL TYPE TY_FINAL,
I_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF I_FCAT,
I_EVENTS TYPE SLIS_T_EVENT,
WA_EVENTS LIKE LINE OF I_EVENTS.
DATA : V_MATNR TYPE MARC-MATNR.
DATA : V_WERKS TYPE MARC-WERKS.
DATA : LV_MSG TYPE STRING,
BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE,
MESSTAB TYPE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

SELECT-OPTIONS S_MATNR FOR MARC-MATNR.


PARAMETERS P_WERKS TYPE MARC-WERKS.
AT SELECTION-SCREEN ON P_WERKS.
PERFORM ZVALIDATE_WERKS.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM CREATE_FCAT.
PERFORM CREATE_EVENT.
PERFORM DISPLAY_DATA.
*&---------------------------------------------------------------------*
*&
Form GET_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT MATNR WERKS
FROM MARC
INTO TABLE I_MARC
WHERE MATNR IN S_MATNR AND WERKS = P_WERKS .
IF I_MARC IS NOT INITIAL.
SELECT MATNR ZPLP1 ZPLD1 STPRS FROM MBEW INTO TABLE I_MBEW FOR ALL ENTRIE
S IN I_MARC WHERE MATNR = I_MARC-MATNR.
ENDIF.
LOOP AT I_MARC INTO WA_MARC.
LOOP AT I_MBEW INTO WA_MBEW WHERE MATNR = WA_MARC-MATNR.
WA_FINAL-MATNR = WA_MARC-MATNR.
WA_FINAL-WERKS = WA_MARC-WERKS.
WA_FINAL-ZPLP1 = WA_MBEW-ZPLP1.
WA_FINAL-ZPLD1 = WA_MBEW-ZPLD1.
WA_FINAL-STPRS = WA_MBEW-STPRS.
*
WA_FINAL-TYPE = 'S'.
*
WA_FINAL-MESSAGE = 'MESSAGE'.

*
*

APPEND WA_FINAL TO I_FINAL.


CLEAR WA_FINAL.
ENDLOOP.
IF SY-SUBRC <> 0.
WA_FINAL-MATNR = WA_MARC-MATNR.
WA_FINAL-WERKS = WA_MARC-WERKS.
WA_FINAL-TYPE = 'S'.
WA_FINAL-MESSAGE = 'MESSAGE'.
APPEND WA_FINAL TO I_FINAL.

CLEAR WA_FINAL.
ENDIF.
ENDLOOP.
ENDFORM.
" GET_DATA
*&---------------------------------------------------------------------*
*&
Form CREATE_FCAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM CREATE_FCAT .
WA_FCAT-COL_POS = '1' .
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-TABNAME = 'I_FINAL' .
*WA_FCAT-REF_FIELDNAME = 'MATNR' .
*WA_FCAT-REF_TABNAME = 'MARC' .
WA_FCAT-SELTEXT_M = 'MATERIAL.NO' .
* WA_FCAT-KEY = 'X' .
*WA_FCAT-HOTSPOT = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
WA_FCAT-COL_POS =
WA_FCAT-FIELDNAME
WA_FCAT-TABNAME =
WA_FCAT-SELTEXT_M
APPEND WA_FCAT TO
CLEAR WA_FCAT .

'2' .
= 'WERKS' .
'I_FINAL' .
= 'PLANT' .
I_FCAT .

WA_FCAT-COL_POS = '3' .
WA_FCAT-FIELDNAME = 'ZPLP1' .
WA_FCAT-TABNAME = 'I_FINAL' .
WA_FCAT-SELTEXT_M = 'PRICE' .
WA_FCAT-EDIT = 'X'.
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
WA_FCAT-COL_POS = '4' .
WA_FCAT-FIELDNAME = 'ZPLD1' .
WA_FCAT-TABNAME = 'I_FINAL' .
WA_FCAT-SELTEXT_M = 'DATE' .
WA_FCAT-EDIT = 'X'.
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
WA_FCAT-COL_POS = '5' .
WA_FCAT-FIELDNAME = 'STPRS' .

WA_FCAT-TABNAME = 'I_FINAL' .
WA_FCAT-SELTEXT_M = 'STDPRICE' .
* WA_FCAT-EDIT = 'X'.
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
WA_FCAT-COL_POS =
WA_FCAT-FIELDNAME
WA_FCAT-TABNAME =
WA_FCAT-SELTEXT_M
APPEND WA_FCAT TO
CLEAR WA_FCAT .

'6' .
= 'TYPE' .
'I_FINAL' .
= 'TYPE' .
I_FCAT .

WA_FCAT-COL_POS =
WA_FCAT-FIELDNAME
WA_FCAT-TABNAME =
WA_FCAT-SELTEXT_M
APPEND WA_FCAT TO
CLEAR WA_FCAT .

'7' .
= 'MESSAGE' .
'I_FINAL' .
= 'MESSAGE' .
I_FCAT .

ENDFORM.
" CREATE_FCAT
*&---------------------------------------------------------------------*
*&
Form CREATE_EVENT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM CREATE_EVENT .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
*
EXPORTING
*
I_LIST_TYPE
= 0
IMPORTING
ET_EVENTS
= I_EVENTS.
READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'PF_STATUS_SET'.
WA_EVENTS-FORM = 'FORM_PF_STATUS_SET'.
MODIFY I_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'USER_COMMAND'.
WA_EVENTS-FORM = 'FORM_USER_COMMAND'.
MODIFY I_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
ENDFORM.
" CREATE_EVENT
*&---------------------------------------------------------------------*
*&
Form DISPLAY_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text

* <-- p2
text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
* I_STRUCTURE_NAME = 'MARA'
IT_FIELDCAT = I_FCAT
IT_EVENTS = I_EVENTS
TABLES
T_OUTTAB = I_FINAL .
ENDFORM.
" DISPLAY_DATA
*&---------------------------------------------------------------------*
*&
Form FORM_PF_STATUS_SET
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM FORM_PF_STATUS_SET USING F_VAR.
SET PF-STATUS 'MY MENU'.
ENDFORM.
"FORM_PF_STATUS_SET
*&---------------------------------------------------------------------*
*&
Form FORM_USER_COMMAND
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->UCOMM
text
*
-->SELFIELD
text
*----------------------------------------------------------------------*
FORM FORM_USER_COMMAND USING UCOMM TYPE SYUCOMM SELFIELD TYPE SLIS_SELFIELD .
IF UCOMM = 'UPDATE'.
LOOP AT I_FINAL INTO WA_FINAL.
perform bdc_dynpro
using 'SAPLMGMM' '0060'.
perform bdc_field
using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field
using 'BDC_OKCODE'
'/00'.
perform bdc_field
using 'RMMG1-MATNR'
WA_FINAL-MATNR.
perform bdc_dynpro
using 'SAPLMGMM' '0070'.
perform bdc_field
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field
using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro
using 'SAPLMGMM' '0070'.
perform bdc_field
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field
using 'BDC_OKCODE'

perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field

'/00'.
using 'SAPLMGMM' '0070'.
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
using 'BDC_OKCODE'
'/00'.
using 'SAPLMGMM' '0070'.
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
using 'BDC_OKCODE'
'/00'.
using 'SAPLMGMM' '0070'.
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
using 'BDC_OKCODE'
'/00'.
using 'SAPLMGMM' '0070'.
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
using 'BDC_OKCODE'
'/00'.
using 'SAPLMGMM' '0070'.
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
using 'BDC_OKCODE'
'/00'.
using 'SAPLMGMM' '0070'.
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
using 'BDC_OKCODE'
'/00'.
using 'SAPLMGMM' '0070'.
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
using 'BDC_OKCODE'
'=ENTR'.
using 'MSICHTAUSW-KZSEL(01)'
'X'.
using 'SAPLMGMM' '0080'.
using 'BDC_CURSOR'
'RMMG1-WERKS'.
using 'BDC_OKCODE'
'=ENTR'.
using 'RMMG1-WERKS'
P_WERKS.
using 'SAPLMGMM' '4000'.
using 'BDC_OKCODE'
'=BU'.
using 'MAKT-MAKTX'

'Acsis Demo Product'.


using 'BDC_CURSOR'
'MBEW-ZPLD1'.
perform bdc_field
using 'MBEW-ZPLP1'
WA_FINAL-ZPLP1.
perform bdc_field
using 'MBEW-ZPLD1'
WA_FINAL-ZPLD1.
perform bdc_field
using 'MBEW-BKLAS'
'7920'.
perform bdc_field
using 'MBEW-VPRSV'
'S'.
perform bdc_field
using 'MBEW-PEINH'
'100'.
CALL transaction 'MM02'
USING BDCDATA
UPDATE 'A'
MODE 'A'
MESSAGES INTO MESSTAB.
IF SY-SUBRC = 0.
READ TABLE MESSTAB WITH KEY MSGTYP = 'S'.
WRITE : / MESSTAB-MSGV1,'MATERIAL IS SUCCESSFULLY CHANGED' COLOR 5.
WA_FINAL-TYPE = MESSTAB-MSGTYP.
WA_FINAL-MESSAGE = MESSTAB-MSGV1.
ELSE.
LOOP AT MESSTAB WHERE MSGTYP = 'E'.
WA_FINAL-TYPE = MESSTAB-MSGTYP.
WA_FINAL-MESSAGE = MESSTAB-MSGV1.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID
= MESSTAB-MSGID
LANG = '-D'
NO
= MESSTAB-MSGNR
V1
= MESSTAB-MSGV1
V2
= MESSTAB-MSGV2
V3
= MESSTAB-MSGV3
V4
= MESSTAB-MSGV4
IMPORTING
MSG = LV_MSG.
WRITE : / lv_msg COLOR 6.
ENDLOOP.
ENDIF.
CLEAR WA_FINAL .
REFRESH BDCDATA.
CLEAR BDCDATA.
REFRESH MESSTAB .
CLEAR MESSTAB.
perform bdc_field

ENDLOOP.
ENDIF.

ENDFORM.

"FORM_USER_COMMAND

*&---------------------------------------------------------------------*
*&
Form BDC_DYNPRO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->PROGRAM
text
*
-->DYNPRO
text
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO
= DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
"BDC_DYNPRO
*&---------------------------------------------------------------------*
*&
Form BDC_FIELD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->FNAM
text
*
-->FVAL
text
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM.
"BDC_FIELD
*&---------------------------------------------------------------------*
*&
Form ZVALIDATE_WERKS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM ZVALIDATE_WERKS .
SELECT WERKS FROM MARC INTO V_WERKS UP TO 1 ROWS WHERE WERKS = P_WERKS.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE 'PLEASE ENTER THE VALID PLANT NUMBER' TYPE 'E'.
ENDIF.
ENDFORM.
" ZVALIDATE_WERKS

También podría gustarte