Steps
- Go to transaction code SE38.
- Enter the program name Z or Y<program name>.
- Enter the program Title name and Select attribute type as Executable program.
- Click on Save.
Source Code
TYPES : BEGIN OF TY_SO,
VBELN TYPE VBAK-VBELN,
POSNR TYPE VBAP-POSNR,
VKORG TYPE VBAK-VKORG,
MATNR TYPE VBAP-MATNR,
ARKTX TYPE VBAP-ARKTX,
END OF TY_SO.
DATA : WA_SO TYPE TY_SO,
IT_SO TYPE TABLE OF TY_SO,
IT_CPY TYPE TABLE OF TY_SO,
WA_CPY TYPE TY_SO.
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE slis_fieldcat_alv.
DATA : WA_VBAP TYPE VBAP.
SELECT-OPTIONS : S_VBELN FOR WA_SO-VBELN.
START-OF-SELECTION.
PERFORM FETCH_DATA USING S_VBELN[] CHANGING IT_SO.
IT_CPY = IT_SO. " Copying the content of IT_SO internal table into another internal table before display
VBELN TYPE VBAK-VBELN,
POSNR TYPE VBAP-POSNR,
VKORG TYPE VBAK-VKORG,
MATNR TYPE VBAP-MATNR,
ARKTX TYPE VBAP-ARKTX,
END OF TY_SO.
DATA : WA_SO TYPE TY_SO,
IT_SO TYPE TABLE OF TY_SO,
IT_CPY TYPE TABLE OF TY_SO,
WA_CPY TYPE TY_SO.
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE slis_fieldcat_alv.
DATA : WA_VBAP TYPE VBAP.
SELECT-OPTIONS : S_VBELN FOR WA_SO-VBELN.
START-OF-SELECTION.
PERFORM FETCH_DATA USING S_VBELN[] CHANGING IT_SO.
IT_CPY = IT_SO. " Copying the content of IT_SO internal table into another internal table before display
PERFORM FIELD_CATALOG CHANGING IT_FIELDCAT.
PERFORM DISPLAY USING IT_FIELDCAT IT_SO.
*&---------------------------------------------------------------------*
*& Form FETCH_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_S_VBELN[] text
* <--P_IT_SO text
*----------------------------------------------------------------------*
form FETCH_DATA using p_s_vbeln LIKE S_VBELN[]
changing p_it_so LIKE IT_SO.
SELECT A~VBELN POSNR VKORG MATNR ARKTX INTO TABLE p_it_so FROM VBAK
AS A INNER JOIN VBAP AS B ON B~VBELN = A~VBELN
WHERE A~VBELN IN p_s_vbeln.
endform. " FETCH_DATA
*&---------------------------------------------------------------------*
*& Form FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_IT_FIELDCAT text
*----------------------------------------------------------------------*
form FIELD_CATALOG changing p_it_fieldcat LIKE it_fieldcat .
WA_FIELDCAT-COL_POS = 1.
WA_FIELDCAT-FIELDNAME = 'VBELN'.
WA_FIELDCAT-OUTPUTLEN = 10.
WA_FIELDCAT-SELTEXT_M = 'BILLING DOC'.
WA_FIELDCAT-KEY = 'X'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 2.
WA_FIELDCAT-FIELDNAME = 'POSNR'.
WA_FIELDCAT-OUTPUTLEN = 4.
WA_FIELDCAT-SELTEXT_M = 'ITEM'.
WA_FIELDCAT-KEY = 'X'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 3.
WA_FIELDCAT-FIELDNAME = 'VKORG'.
WA_FIELDCAT-OUTPUTLEN = 4.
WA_FIELDCAT-SELTEXT_M = 'SALES ORG'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 4.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-OUTPUTLEN = 18.
WA_FIELDCAT-SELTEXT_M = 'MATERIAL NUMBER'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 5.
WA_FIELDCAT-FIELDNAME = 'ARKTX'.
WA_FIELDCAT-OUTPUTLEN = 40.
WA_FIELDCAT-SELTEXT_M = 'SALES MATERIAL DES'.
WA_FIELDCAT-EDIT = 'X'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
endform. " FIELD_CATALOG
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_FIELDCAT text
* -->P_IT_SO text
*----------------------------------------------------------------------*
form DISPLAY using p_it_fieldcat LIKE IT_FIELDCAT
p_it_so LIKE IT_SO.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'SAVE'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
IT_FIELDCAT = p_it_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = p_it_so
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
endform. " DISPLAY
FORM SAVE USING RCOMM TYPE SY-UCOMM
SEL TYPE SLIS_SELFIELD.
CASE SY-UCOMM.
WHEN '&DATA_SAVE'.
LOOP AT IT_SO INTO WA_SO.
CLEAR WA_CPY.
READ TABLE IT_CPY INTO WA_CPY INDEX SY-TABIX.
IF WA_SO NE WA_CPY.
WA_VBAP-VBELN = WA_SO-VBELN.
WA_VBAP-POSNR = WA_SO-POSNR.
WA_VBAP-MATNR = WA_SO-MATNR.
WA_VBAP-ARKTX = WA_SO-ARKTX.
MODIFY VBAP FROM WA_VBAP.
IF SY-SUBRC = 0.
MESSAGE 'RECORD HAS BEEN SAVED' TYPE 'S'.
ENDIF.
ENDIF.
CLEAR : WA_VBAP , WA_SO.
ENDLOOP.
ENDCASE.
ENDFORM.
- Save->Check->Activate->Execute.
No comments:
Post a Comment