Data between steps in a PeopleSoft Application Engine program can be passed using multiple mechanisms: State records (to persist values across executions), temporary records (for intermediate storage within a program run), and Component/Global PeopleCode variables (for sharing data in the same session). All three methods are valid depending on the use case.